LARGE_INTEGER类型

最近在研究Windows驱动程序开发,遇到这样一个语句:

devExt->PortBase  = (PUCHAR)(ULONG_PTR) portBasePA.QuadPart;

在源代码环境中,代表如果不需要地址映射,就把基址直接付给设备的端口基址。

查看了QuadPart的定义,portBasePA是一个LARGE_INTEGER类型。

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是union;用于表示一64位有符号整数值;如果编译器直接支持64位整数可以直接使用QuadPart(64位),否则分别对LowPart(32位)和HighPart(32位)存取,HighPart的最高位为符号位。 
   

原文地址:https://www.cnblogs.com/jacklu/p/4314148.html