ExAllocatePoolQuotaUninitialized 函数 (wdm.h)

ExAllocatePoolQuotaUninitialized 例程分配池内存,对当前进程收取配额。

此例程是 ExAllocatePoolWithQuotaTag 的包装和替换选项。 功能没有区别。

语法

PVOID ExAllocatePoolQuotaUninitialized(
  __drv_strictTypeMatch(__drv_typeExpr)POOL_TYPE PoolType,
  SIZE_T                                         NumberOfBytes,
  ULONG                                          Tag
);

参数

PoolType

要分配的池内存的类型。 有关可用池内存类型的说明,请参阅 POOL_TYPE

同样,可以通过使用POOL_COLD_ALLOCATION标志对此值进行按位操作来修改 PoolType 值, () 中wdm.h也定义为内核的提示,以便从可能快速分页的页中分配内存。 若要尽可能减少驻留池内存量,不应频繁引用这些分配。 POOL_COLD_ALLOCATION标志只是公告。

NumberOfBytes

要分配的字节数。

Tag

要用于已分配内存的池标记。 将池标记指定为由单引号分隔的 1 到 4 个字符的非零字符文本 (例如 Tag1 ,) 。 通常以相反的顺序指定字符串, (例如 1gaT ,) 。 标记中的每个 ASCII 字符必须是0x20 () 0x7E (波形符) 范围内的值。 每个分配代码路径应使用唯一的池标记来帮助调试器和验证程序识别代码路径。

返回值

ExAllocatePoolQuotaUninitialized 返回指向已分配池的指针。

如果无法满足请求,除非指定了POOL_QUOTA_FAIL_INSTEAD_OF_RAISE, 否则 ExAllocatePoolQuotaUninitialized 将引发异常。 出于性能原因,首选使用 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)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL (请参阅备注部分)
DDI 符合性规则 HwStorPortProhibitedDDI、SpNoWait、StorPortStartIo

另请参阅

ExAllocatePoolQuotaZero

ExAllocatePoolWithQuotaTag