最近在研究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的最高位为符号位。 
   

相关文章:

  • 2022-12-23
  • 2021-11-24
  • 2021-07-26
  • 2021-10-02
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-24
猜你喜欢
  • 2021-05-30
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-05
  • 2022-12-23
  • 2021-08-08
相关资源
相似解决方案