文件中的偏移量是一种常见的要使用64位数据的情况。同时,文件也是如此。32位数据无符号整型只能表示到4GB。在VC中,64位数据的类型为_int64。定义了如下写法:
__int64 file_offset;
但是,实际上这个
__int64在驱动开发中
很少被使用,基本上被使用到的是一个
共用体:
LARGE_INTEGER。宏定义如下:
C++语法:
typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
};
struct {
DWORD LowPart;
LONG HighPart;
} u;
LONGLONG QuadPart;
} LARGE_INTEGER, *PLARGE_INTEGER;
说明:
如果你的编译器已经内置对了64位整数的支持,将会使用QuadPart成员存储64位整数,相反,则使用LowPart 和 HighPart来存储64位整数。
提示:Windows内核中如果一个函数参数用到64位数据,一般是PLARGE_INTEGER类型。
在实际变成中会碰到大量的参数是PLARGE_INTEGER类型的。
-----摘自<[天书夜读-从汇编到Windows内核编程]>
记得提醒自己要练一手好字:
-------------------------------------------------------