最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ LARGE_INTEGER解析與使用案例詳解

 更新時間:2021年08月28日 11:31:56   作者:零點零一  
這篇文章主要介紹了C++ LARGE_INTEGER解析與使用案例詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

這里解釋前面碰到的LARGE_INTEGER結構。與可能的誤解不同,64位數據并非要在64位操作系統(tǒng)下才能使用。在VC中,64位數據的類型為__int64。定義寫法如下:

    __int64 file_offset

    上面之所以定義的變量名為file_offset,是因為文件中的偏移量是一種常見的要使用64位數據的情況。同時,文件的大小也是如此(回憶上一小節(jié)中定義的文件大小)。32位數據無符號整型只能表示到4GB。而眾所周知,現在超過4GB的文件絕對不罕見了。但是實際上__int64這個類型在驅動開發(fā)中很少被使用?;旧媳皇褂玫降氖且粋€共用體:LARGE_INTEGER。這個共用體定義如下:

    typedef __int64 LONGLONG;  

    typedef union _LARGE_INTEGER {
        struct {
            ULONG LowPart;

            LONG HighPart;

        };

        struct {
            ULONG LowPart;

            LONG HighPart;

        } u;

        LONGLONG QuadPart;

    } LARGE_INTEGER;

    這個共用體的方便之處在于,既可以很方便的得到高32位,低32位,也可以方便的得到整個64位。進行運算和比較的時候,使用QuadPart即可。

    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);

    }

    上面這段代碼演示了這種結構的一般用法。在實際編程中,會碰到大量的參數是LARGE_INTEGER類型的。

驅動開發(fā)中,我們除了可以使用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解析與使用案例詳解的文章就介紹到這了,更多相關C++ LARGE_INTEGER解析與使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C++中實現多態(tài)有幾種方式小結

    C++中實現多態(tài)有幾種方式小結

    在C++中,多態(tài)是一種面向對象編程的特性,允許以統(tǒng)一的方式處理不同類型的對象,并根據實際對象的類型來執(zhí)行相應的操作,本文給大家介紹了C++中實現多態(tài)有幾種方式小結,需要的朋友可以參考下
    2024-12-12
  • C++與Qt的內存管理機制詳解

    C++與Qt的內存管理機制詳解

    這篇文章主要介紹了C++與Qt的內存管理機制使用,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • C語言棧順序結構實現代碼

    C語言棧順序結構實現代碼

    一個能夠自動擴容的順序結構的棧 ArrStack 實例 (GCC編譯),有需要的朋友可以參考一下
    2013-10-10
  • 全面了解#pragma once與 #ifndef的區(qū)別

    全面了解#pragma once與 #ifndef的區(qū)別

    下面小編就為大家?guī)硪黄媪私?pragma once與 #ifndef的區(qū)別。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • C++中l(wèi)ist容器的實現

    C++中l(wèi)ist容器的實現

    本文主要介紹了C++中l(wèi)ist容器的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • C語言對CSV文件從最后往前一行一行讀取的實現方法

    C語言對CSV文件從最后往前一行一行讀取的實現方法

    今天小編就為大家分享一篇關于C語言對CSV文件從最后往前一行一行讀取的實現方法,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C++使用curl庫的完成流程

    C++使用curl庫的完成流程

    curl 是一個利用URL語法在命令行方式下工作的文件傳輸工具,curl不但提供了一個可執(zhí)行的工具庫,還提供了供程序開發(fā)的libcurl庫,該庫使用c語言編寫,支持跨平臺,本文給大家介紹了C++使用curl庫的完成流程,需要的朋友可以參考下
    2024-09-09
  • C++下標運算符詳解

    C++下標運算符詳解

    C語言中的下標運算符用于訪問數組或指針變量中的元素,它使用方括號 [] 來表示,并在方括號內指定元素的索引位置,本文給大家詳細的講解一下C++的下標運算符,需要的朋友可以參考下
    2023-09-09
  • C語言菜鳥基礎教程之條件判斷

    C語言菜鳥基礎教程之條件判斷

    本文給大家簡單介紹了下C語言中的條件判斷語句的語法和用法示例,非常簡潔實用,有需要的小伙伴可以參考下
    2017-10-10
  • 全面解析設計模式中的建造者模式及相關C++實現

    全面解析設計模式中的建造者模式及相關C++實現

    這篇文章主要介紹了設計模式中的建造者模式及相關C++實現,需要的朋友可以參考下
    2016-03-03

最新評論

东至县| 博野县| 来宾市| 乌海市| 天祝| 苍南县| 渭南市| 金寨县| 桂平市| 项城市| 儋州市| 禄丰县| 北海市| 宁远县| 伊宁县| 铜梁县| 增城市| 无棣县| 南宁市| 沈丘县| 龙游县| 滦平县| 克山县| 武威市| 临夏市| 德庆县| 磴口县| 邛崃市| 临泉县| 化州市| 定远县| 屯门区| 公主岭市| 石渠县| 上杭县| 吉林市| 丹阳市| 永善县| 绥棱县| 临清市| 子长县|