KS 属性
属性表示属于内核流式处理对象(例如筛选器或引脚)的功能或控制状态设置。 内核流式处理微型驱动程序的客户端可以向微型驱动程序实例化的筛选器和引脚发送 get 和 set 属性请求 (KSPROPERTY_TYPE_GET和KSPROPERTY_TYPE_SET) 。 一组相关属性称为 属性集。
若要获取或设置单个属性,用户模式客户端调用 Win32 函数 DeviceIoControl ,并将 dwIoControlCode 参数设置为 IOCTL_KS_PROPERTY。 Microsoft Windows SDK文档中介绍了 DeviceIoControl。 内核模式客户端应调用 KsSynchronousDeviceControl。
输入缓冲区是 KSPROPERTY 结构或包装器,其中包含 KSPROPERTY 结构和与请求相关的其他信息。 为了响应此调用,操作系统将 IRP 调度到类驱动程序。
当类驱动程序收到生成的 IRP 时,它将调用 KsPropertyHandler。 类驱动程序包括 KSPROPERTY 结构的地址作为调用参数,该结构标识属性请求的详细信息。 属性请求在类驱动程序级别自动处理,或者由微型驱动程序提供的处理程序处理。 有关参考信息,请参阅 内核流式处理属性集 ,包括哪些属性集由类驱动程序处理,哪些属性集需要微型驱动程序提供的处理程序。 微型驱动程序可以通过为默认情况下由类驱动程序处理的属性提供回调来替代或扩充类驱动程序处理程序。
如果微型驱动程序已为此属性提供了处理程序,则 KsPropertyHandler 在 中依次将请求移交给相应的微型驱动程序提供的回调。
微型驱动程序在 KSPROPERTY_ITEM 类型的结构中提供指向其属性支持回调的指针。 微型驱动程序在KSPROPERTY_SET结构中对相关 KSPROPERTY_ITEM 结构数组进行分组。 不同的类驱动程序模型对于微型驱动程序使用的方法略有不同,使属性集数据可供类驱动程序使用。 可以按照 内核流式处理中的链接找到特定于类驱动程序的信息。
微型驱动程序还提供指向 KSPROPERTY_ITEM 结构中的KSPROPERTY_VALUES结构的指针。 KSPROPERTY_VALUES结构又包含 KSPROPERTY_MEMBERSLIST 结构的数组。 这是微型驱动程序指定属性的可接受值的大小和类型的位置。 每个KSPROPERTY_MEMBERSLIST结构都包含一个标头成员:请参阅 KSPROPERTY_MEMBERSHEADER 有关如何为微型驱动程序支持的属性指定法定范围或值的信息。 还可以在 Microsoft Windows 驱动程序工具包 (WDK) 的 Testcap 示例中找到此机制的实现。
为了报告属性可接受值的大小和类型,类驱动程序返回 KSPROPERTY_DESCRIPTION 结构,以响应来自客户端的KSPROPERTY_TYPE_BASICSUPPORT请求。
类驱动程序可将KSPROPERTY_MEMBERSHEADER结构列表追加到KSPROPERTY_DESCRIPTION结构。