ExAllocatePool3 函数 (wdm.h)
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
要用于已分配内存的池标记。 将池标记指定为由单引号分隔的 1 到 4 个字符的非零字符文本 (例如 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) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL (请参阅备注部分) |
DDI 符合性规则 | HwStorPortProhibitedDDI、SpNoWait、StorPortStartIo |