Windows内核编程之:数据类型

/************************************************************************

* 数据类型定义

*    c语言的定义                DDK中的定义

*    void                      VOID

*    char                      CHAR

*    short                      SHORT

*    long                       LONG

*    wchar_t                    WCHAR

*    char*                      PCHAR

*    wchar_t*                   PWCHAR

*************************************************************************/

//一、DDK添加了一种64位的长整型整数

/*

*64位形整数不是标准C语言定义

*只有微软的编译器才识别这种类型

*64位整数的常量前面是一个数字,后面加上i64结尾

*支持加、减、乘、除

*/

LONGLONG llValue = 100i64;



/*

*DDK提供了另外一种的64位整数的表示方法

*LARGE_INTEGER数据结构

*区别:    

*    LONGLONG是基本数据类型

*    LARGE_INTEGER是数据结构

*/

typedef union _LARGE_INTEGER{

    struct{

        ULONG LowPart;

        LONG HighPart;

    };

    struct{

        ULONG LowPart;

        LONG HighPart;

    } u;

    LONGLONG QuadPart;

};



//LARGE_INTEGER的三个定义:

/******

*(1)LARGE_INTEGER可以认为是由两部分组成。一个低32位的整数LowPart

*一个是高32位的整数HighPart。在little endian的情况下,低32位数字在前

*高32位数字在后

*/

//如果将这个64位数赋值为100,可以这样写:

LARGE_INTEGER LargerValue;

LargerValue.LowPart = 100;

LargerValue.HighPart = 0;



/******

*(2)LARGE_INTEGER可以认为是由两部分组成。一个低32位的整数LowPart

*一个是高32位的整数HighPart。在beg endian的情况下,高32位数字在前

*低32位数字在后

*/

//如果将这个64位数赋值为100,可以这样写:

LARGE_INTEGER LargerValue;

LargerValue.u.LowPart = 100;

LargerValue.u.HighPart = 0;



/******

*(3)LARGE_INTEGER等价于LONGLONG数据

*/

//如果将这个64位数赋值为100,可以这样写:

LARGE_INTEGER LargerValue;

LargerValue.QuadPart = 100i64;

 

你可能感兴趣的:(windows)