PFNKSALLOCATOR 回调函数 (ks.h)

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

语法

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)