Windows 内核全局变量

内核全局变量。

变量 声明 说明
Mm64BitPhysicalAddress PBOOLEAN Mm64BitPhysicalAddress

在 Wdm.h 中声明

指定硬件和操作系统是否支持 64 位物理地址。 如果硬件和操作系统支持 64 位物理地址,则指向值为 TRUE ,否则为 FALSE

有关如何在驱动程序中使用此变量的详细信息,请参阅 在 64 位 Windows 中执行 DMA

MmBadPointer PVOID MmBadPointer;

在 Wdm.h 中声明

指向保证无效的内存位置的指针。

注意从 Windows 8.1 开始,MmBadPointer 已弃用。 驱动程序应改用 MM_BAD_POINTER 宏。

如果访问由 MmBadPointer 变量指定的内存地址,操作系统将生成一个 bug 检查。

可以使用 MmBadPointer 调试驱动程序代码。 将任何未初始化的指针变量设置为 MmBadPointer ,以查找代码首次尝试取消引用无效指针的时间。

MmBadPointer PAGE_SIZE中的所有地址都保证无效。 例如,如果 Address 是指针,并且 MmBadPointer<= Address<MmBadPointer + PAGE_SIZE,则尝试访问 *Address 会导致操作系统检查生成 bug。 MmBadPointer + PAGE_SIZE不保证无效。

PsInitialSystemProcess PEPROCESS PsInitialSystemProcess;

在 Ntddk.h 中声明

指向系统进程的 EPROCESS 结构。

NLS_MB_CODE_PAGE_TAG extern BOOLEAN NLS_MB_CODE_PAGE_TAG;

指定代码页是单字节代码页还是多字节代码页。

对于多字节代码页,NLS_MB_CODE_PAGE_TAGTRUE,对于单字节代码页为 FALSE

保留NLS_MB_CODE_PAGE_TAG供系统使用。 在用户模式下,请改为调用 GetCPInfoEx

如果可能,应用程序应使用 Unicode 而不是代码页。

EPROCESS
GetCPInfoEx
MM_BAD_POINTER
在 64 位 Windows 中执行 DMA