PFNKSALLOCATOR 回调函数 (ks.h)
微型驱动程序可以选择在调用 KsEnableEventWithAllocator、KsPropertyHandlerWithAllocator 和 KsMethodHandlerWithAllocator 时提供 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) |