PFNKSALLOCATOR 回调函数 (ks.h)
微型驱动程序可以选择提供 PFNKSALLOCATOR 类型的回调函数 作为调用 KsEnableEventWithAllocator、KsPropertyHandlerWithAllocator和 KsMethodHandlerWithAllocator的参数。
语法
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) |