KS 属性

属性表示属于内核流对象(如筛选器或引脚)的功能或控制状态设置。 内核流式处理微型驱动程序的客户端可以将获取和设置属性请求(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_TYPE_BASICSUPPORT请求时返回一个KSPROPERTY_DESCRIPTION结构。

类驱动程序可能会将 KSPROPERTY_MEMBERSHEADER 结构的列表添加到 KSPROPERTY_DESCRIPTION 结构中。