您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關C++中LARGE_INTEGER解析與使用的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
這里解釋前面碰到的LARGE_INTEGER結構。與可能的誤解不同,64位數據并非要在64位操作系統下才能使用。在VC中,64位數據的類型為__int64。定義寫法如下:
__int64 file_offset
typedef __int64 LONGLONG; typedef union _LARGE_INTEGER { struct { ULONG LowPart; LONG HighPart; }; struct { ULONG LowPart; LONG HighPart; } u; LONGLONG QuadPart; } LARGE_INTEGER;
LARGE_INTEGER a,b; a.QuadPart = 100; a.QuadPart *= 100; b.QuadPart = a.QuadPart; if(b.QuadPart > 1000) { KdPrint(“b.QuadPart < 1000, LowPart = %x HighPart = %x”, b.LowPart,b.HighPart); }
驅動開發中,我們除了可以使用LONGLONG這個表示64位結構的數據外。還可以使用一個叫做LARGE_INTEGER的數據結構來表示64位數據。它的定義如下
typedef union _LARGE_INTEGER { struct { ULONG LowPart; LONG HighPart; } DUMMYSTRUCTNAME; struct { ULONG LowPart; LONG HighPart; } u; #endif //MIDL_PASS LONGLONG QuadPart; } LARGE_INTEGER;
LARGE_INTEGER是一個聯合體。設計的非常巧妙。聯合體中的3個元素可以被認為是LARGE_INTEGER的3個定義
(1)DUMMYSTRUCTNAME由2部分組成。一個是低位的32位整數LowPart。另一個就是高位的整數咯。在小端的情況下。低32位數字在前。高32位在后。
如果將這個64位整數賦值100.可以這么寫
LARGE_INTEGER value; value.LowPart = 100; value.HighPart = 0;
(2)u由2部分組成。一個是低位的32位整數LowPart。另一個就是高位的整數咯。在大端的情況下。高32位數字在前。低32位在后。
如果將這個64位整數賦值100.可以這么寫
LARGE_INTEGER value; value.u.LowPart = 100; value.u.HighPart = 0;
(3)當LARGE_INTEGER 等價于LONGLONG的時候。如果將這個64位整數賦值100.可以這么寫
LARGE_INTEGER value; value.QuadPart = 100;
關于“C++中LARGE_INTEGER解析與使用的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。