KsPropertyHandler 函数 (ks.h)

驱动程序调用 KsPropertyHandler 函数进行 IRP 处理。

语法

KSDDKAPI NTSTATUS KsPropertyHandler(
  [in] PIRP                 Irp,
  [in] ULONG                PropertySetsCount,
  [in] const KSPROPERTY_SET *PropertySet
);

参数

[in] Irp

指定处理属性请求的 IRP。

[in] PropertySetsCount

指定要传递的属性集数。

[in] PropertySet

指向 KSPROPERTY_SET 结构的数组。 驱动程序应为它希望 KsPropertyHandler 处理的每个属性提供一个结构。

返回值

KsPropertyHandler 函数返回STATUS_SUCCESS(如果成功)或特定于要处理的属性的错误(如果失败)。 该函数设置 IRP->IO_STATUS_BLOCK。信息成员,无论是由于内部错误将其设置为零,还是通过属性处理程序设置它。 该函数不设置 lrp->IoStatus.Status 成员,也不会完成 IRP。

言论

KsPropertyHandler 响应集定义的所有属性标识符,并且只能在PASSIVE_LEVEL调用。

每个 KSPROPERTY_SET 项都包含指向其 PropertyItem 成员中 KSPROPERTY_ITEM 结构的数组的指针。 对于特定于驱动程序的处理,KsPropertyHandler 将每个请求移交给 PropertyItem 中某个驱动程序提供的回调。 KsPropertyHandler 负责处理所需的任何 IRP 处理。

KsPropertyHandler 不使用其 KSPROPERTY_SET 结构的 FastIoTable 成员。 如果驱动程序需要支持请求的快速 I/O 处理,则应将相同的KSPROPERTY_SET结构传递给 KsFastPropertyHandler 例程。

属性集的所有者可以执行属性处理的预筛选或后期筛选。 基本属性结构访问异常由 KsPropertyHandler 函数处理,但属性处理程序必须涵盖特定异常的清理。

KsPropertyHandler 在 IRP 中的 Irp->Tail.Overlay.DriverContext 参数中放置指向相关KSPROPERTY_SET结构的指针。 微型驱动程序可以使用 ks.h中定义的KSPROPERTY_SET_IRP_STORAGE宏来访问此指针。

要求

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

另请参阅

KsFastPropertyHandler

KsPropertyHandlerWithAllocator