PFNKSALLOCATOR 回调函数 (ks.h)

微型驱动程序可以选择在调用 KsEnableEventWithAllocator、KsPropertyHandlerWithAllocatorKsMethodHandlerWithAllocator 时提供 PFNKSALLOCATOR 类型的回调函数作为参数。

语法

PFNKSALLOCATOR Pfnksallocator;

NTSTATUS Pfnksallocator(
  [in] PIRP Irp,
  [in] ULONG BufferSize,
  [in] BOOLEAN InputOperation
)
{...}

参数

[in] Irp

指定要为其发出缓冲区分配请求的 IRP。

[in] BufferSize

指定所需的缓冲区大小。 此大小涵盖请求中的所有参数。

[in] InputOperation

如果这是输入操作,则设置为 TRUE ,这意味着成功返回后,Irp-IoStatus.Information> 字段将包含要复制回原始输入缓冲区的字节数。

返回值

如果处理请求,则返回STATUS_SUCCESS。 否则返回相应的错误代码。

注解

通常,池内存用于缓冲区分配。 这使筛选器能够将事件、属性和方法查询直接传递到硬件,从而允许它们提供标准处理函数将此类数据放入其中的缓冲区,从而避免额外的数据副本。 因此,筛选器可能具有已映射到适配器的内存块,可以从适配器进行缓冲区分配。

由于此内存可能不是典型的池分配内存,因此筛选器必须在完成 Irp 时执行缓冲区清理。 这意味着,对于来自非同步的用户模式的输入操作,分配器必须为目标缓冲区分配 MDL,探测并锁定它,并检索系统地址。 必须执行此操作才能将返回数据复制到原始缓冲区。

要求

要求
目标平台 桌面
标头 ks.h (包括 Ks.h)