ExAllocatePool3 例程分配指定类型的池内存,并返回指向已分配块的指针。 此例程类似于 ExAllocatePool2,但它添加了扩展参数。
语法
DECLSPEC_RESTRICT PVOID ExAllocatePool3(
POOL_FLAGS Flags,
SIZE_T NumberOfBytes,
ULONG Tag,
PCPOOL_EXTENDED_PARAMETER ExtendedParameters,
ULONG ExtendedParametersCount
);
参数
Flags
指定池内存类型以及必需属性和可选属性的ULONG64类型值。 可以使用按位 OR 组合多个标志值。 有关可能的值,请参阅 POOL_FLAGS。
NumberOfBytes
指定要分配的非零字节数。
Tag
要用于已分配内存的池标记。 将池标记指定为一到四个字符的非零字符文本,用单引号分隔(例如,Tag1
)。 字符串通常按反向顺序指定(例如,1gaT
)。 标记中的每个 ASCII 字符都必须是区域0x20(空格)中的值才能0x7E(波形符)。 每个分配代码路径都应使用唯一的池标记来帮助调试器和验证程序标识代码路径。
ExtendedParameters
指向 POOL_EXTENDED_PARAMETER 结构的数组的指针,该数组指定分配的其他属性。
ExtendedParametersCount
一个 ULONG 值,该值指定 ExtendedParameters中的参数数。
返回值
ExAllocatePool3 返回指向已分配内存的指针。
以下条件会导致函数默认返回 NULL。 如果指定了 POOL_FLAG_RAISE_ON_FAILURE,该函数将引发异常。
- 内存不足
- 标记 设置为 0 或指定无效POOL_FLAGS
- 无效 POOL_EXTENDED_PARAMETER 结构
言论
如果要生成面向 Windows 10 版本 2004 之前的 Windows 版本的驱动程序,请使用 ExAllocatePoolPriorityZero 或 ExAllocatePoolPriorityUninitialized。
有关其他信息,请参阅 ExAllocatePool2 的备注。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 10 版本 2004 |
目标平台 | 普遍 |
标头 | wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (请参阅“备注”部分) |
DDI 符合性规则 | HwStorPortProhibitedDDI、SpNoWait、StorPortStartIo |