ExCreatePool 创建请求类型的池实例。
语法
NTSTATUS ExCreatePool(
ULONG Flags,
ULONG_PTR Tag,
POOL_CREATE_EXTENDED_PARAMS *Params,
HANDLE *PoolHandle
);
参数
Flags
[in]指定池类型和可选创建选项的位掩码。 必须指定一个池类型标志。 以下值互斥:
| 价值 | DESCRIPTION |
|---|---|
| POOL_CREATE_FLG_SECURE_POOL | 创建安全池实例。 使用此标志时,不得提供池名称。 |
| POOL_CREATE_FLG_PAGED_POOL | 创建专用分页池实例。 必须通过扩展参数提供池名称。 分配可以驻留在可分页内存中。 |
| POOL_CREATE_FLG_NONPAGED_POOL | 创建专用非分页池实例。 必须通过扩展参数提供池名称。 分配仍驻留在非分页内存中。 |
Tag
[in]标记(以小端形式存储的四个字符值)以与池关联。
Params
[in,可选]指向提供给定池类型的扩展创建参数 的POOL_CREATE_EXTENDED_PARAMS 结构的指针。 此参数可以为 NULL。 可以根据以下规则提供名称参数:分页池和非分页池所必需的;安全池不允许;只允许一个名称参数;不支持的参数类型被拒绝。
PoolHandle
[out]成功时接收新创建的池的不透明句柄。
返回值
返回 NTSTATUS 值,例如以下值之一。
| 返回代码 | DESCRIPTION |
|---|---|
| STATUS_SUCCESS | 池已成功创建, PoolHandle 有效。 |
| STATUS_INVALID_PARAMETER_1 | 标志中的池类型规范无效。 |
| STATUS_INVALID_PARAMETER_3 | 扩展参数无效(缺少必需的名称、不允许的名称、重复的名称或不支持的参数类型)。 |
| 其他状态代码 | 创建过程中发生错误。 |
注解
ExCreatePool 创建请求类型的池实例(安全、分页或非分页),并返回可用于池管理例程的不透明句柄。 调用方通过标志指定池类型,并提供可选的扩展参数。
标志中必须存在一个池类型标志。 分页池和非分页池需要池名称,并且必须省略安全池。
当所选池类型不需要名称时,扩展参数是可选的。 不再需要时,应使用适当的池管理例程释放返回的句柄。
池分配是通过调用 ExAllocatePool2 完成的。
要求
| 要求 | 价值 |
|---|---|
| 支持的最低服务器 | Windows Server 2022 |
| 标头 | wdm.h (包括 Wdm.h) |
| IRQL | PASSIVE_LEVEL |
另请参阅
POOL_CREATE_EXTENDED_PARAMS