KsCreateDefaultAllocatorEx 函数 (ks.h)

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

语法

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 结构的指针。 KsCreateDefaultAllocatorEx 设置 FsContext 指向此宏的返回值。 因此,FsContext 稍后可用于安全描述符查询或更改。

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

要求

要求 价值
目标平台 普遍
标头 ks.h (包括 Ks.h)
Ks.lib