KsCreateDefaultAllocatorEx 函数 (ks.h)

创建使用指定内存池的默认分配器,并使用内部调度表 (KSDISPATCH_TABLE) 将 IoGetCurrentIrpStackLocation (pIrp) -FileObject> 与此分配器相关联。

语法

KSDDKAPI NTSTATUS KsCreateDefaultAllocatorEx(
  [in]           PIRP                     Irp,
  [in, optional] PVOID                    InitializeContext,
  [in, optional] PFNKSDEFAULTALLOCATE     DefaultAllocate,
  [in, optional] PFNKSDEFAULTFREE         DefaultFree,
  [in, optional] PFNKSINITIALIZEALLOCATOR InitializeAllocator,
  [in, optional] PFNKSDELETEALLOCATOR     DeleteAllocator
);

参数

[in] Irp

包含正在处理分配器创建请求的 IRP。

[in, optional] InitializeContext

(可选)包含要与外部分配器一起使用的上下文。 在创建分配器上下文时,它仅用作可选 InitializeAllocator 回调的初始化上下文。 否则不使用 参数。 如果未提供外部分配器,则必须将此参数设置为 NULL

[in, optional] DefaultAllocate

(可选)包含用于代替默认池分配的外部分配函数。 如果这是 NULL,则使用默认分配。

[in, optional] DefaultFree

(可选)包含一个外部可用函数,该函数用于替代默认池分配。 如果未提供外部分配器,则必须将此参数设置为 NULL

[in, optional] InitializeAllocator

(可选)包含将 InitializeContext 参数传递给的外部分配器初始化函数。 此函数应基于分配器帧返回分配器上下文。 如果未提供外部分配器,则必须将此参数设置为 NULL

[in, optional] DeleteAllocator

(可选)包含用于外部分配器的外部分配器删除函数。 如果未提供外部分配器,则必须将此参数设置为 NULL

返回值

返回STATUS_SUCCESS,否则在默认分配器创建失败时出错。 不完成 IRP 或在 IRP 中设置状态。

注解

在调用此例程之前, KSCREATE_ITEM_IRP_STORAGE (Irp) 宏应返回指向 KSOBJECT_CREATE_ITEM 结构的指针,该结构是此分配器的创建项。 KsCreateDefaultAllocatorExFsContext 设置为指向此宏的返回值。 因此, FsContext 稍后可用于安全描述符查询或更改。

可以在 ks.h 中找到 KSCREATE_ITEM_IRP_STORAGE (Irp) 和相关宏。

要求

要求
目标平台 通用
标头 ks.h (包括 Ks.h)
Library Ks.lib