ExAllocatePoolQuotaUninitialized 函数 (wdm.h)
ExAllocatePoolQuotaUninitialized 例程分配池内存,针对当前进程收取配额。
此例程是 ExAllocatePoolWithQuotaTag的包装和替换选项。 功能没有区别。
语法
PVOID ExAllocatePoolQuotaUninitialized(
__drv_strictTypeMatch(__drv_typeExpr)POOL_TYPE PoolType,
SIZE_T NumberOfBytes,
ULONG Tag
);
参数
PoolType
要分配的池内存的类型。 有关可用池内存类型的说明,请参阅 POOL_TYPE。
同样,可以通过按位 ORing 此值来修改 PoolType 值,并使用 POOL_COLD_ALLOCATION 标志(在 wdm.h
中定义)作为内核的提示,以从可能快速分页的页面分配内存。 若要尽可能减少驻留池内存量,不应经常引用这些分配。
POOL_COLD_ALLOCATION 标志只是公告。
NumberOfBytes
要分配的字节数。
Tag
要用于已分配内存的池标记。 将池标记指定为一到四个字符的非零字符文本,用单引号分隔(例如,Tag1
)。 字符串通常按反向顺序指定(例如,1gaT
)。 标记中的每个 ASCII 字符都必须是区域0x20(空格)中的值才能0x7E(波形符)。 每个分配代码路径都应使用唯一的池标记来帮助调试器和验证程序标识代码路径。
返回值
ExAllocatePoolQuotaUninitialized 返回指向分配池的指针。
如果无法满足请求,ExAllocatePoolQuotaUninitialized 引发异常,除非指定了POOL_QUOTA_FAIL_INSTEAD_OF_RAISE。 出于性能原因,首选使用POOL_QUOTA_FAIL_INSTEAD_OF_RAISE。
言论
此例程由最高级别的驱动程序调用,这些驱动程序分配内存以满足最初发出 I/O 请求的进程上下文中的请求。 较低级别的驱动程序改为调用 ExAllocatePoolUninitialized。
ExAllocatePoolQuotaUninitialized 分配的内存未初始化。 如果内核模式驱动程序要使用户模式软件可见,则内核模式驱动程序必须首先为此内存零(以避免泄露潜在特权内容)
有关其他指南,请参阅 ExAllocatePoolWithQuotaTag 的 备注 部分。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | 需要适用于 Windows 10 版本 2004 的 WDK。 面向 Windows 7 及更高版本的 Windows作系统。 |
目标平台 | 普遍 |
标头 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | IRQL <= DISPATCH_LEVEL (请参阅“备注”部分) |
DDI 符合性规则 | HwStorPortProhibitedDDI、SpNoWait、StorPortStartIo |