Свойства KS

Свойство представляет возможность или параметр состояния управления, который принадлежит объекту потоковой передачи ядра, например фильтру или закреплению. Клиенты мини-driver потоковой передачи ядра могут отправлять запросы на получение и настройку свойств (KSPROPERTY_TYPE_GET и KSPROPERTY_TYPE_SET) фильтрам и контактам, экземплярами которого является мини-driver. Группа связанных свойств называется набором свойств.

Чтобы получить или задать отдельные свойства, клиенты пользовательского режима вызывают функцию Win32 DeviceIoControl с параметром dwIoControlCode , равным IOCTL_KS_PROPERTY. DeviceIoControl описано в документации по Microsoft Windows SDK. Клиенты в режиме ядра должны вызывать KsSynchronousDeviceControl.

Входной буфер представляет собой структуру KSPROPERTY или оболочку, содержащую структуру KSPROPERTY и другие сведения, относящиеся к запросу. В ответ на этот вызов операционная система отправляет IRP драйверу класса.

Когда драйвер класса получает результирующий IRP, он вызывает KsPropertyHandler. Драйвер класса включает в качестве параметра вызова адрес структуры KSPROPERTY, которая определяет особенности запроса свойства. Запрос свойства обрабатывается автоматически на уровне драйвера класса или с помощью обработчика, предоставленного мини-накопителем. В разделе Наборы свойств потоковой передачи ядра приведены справочные сведения, включая наборы свойств, обрабатываемые драйвером класса и требующие обработчиков, предоставляемых мини-накопителем. Мини-диск может переопределить или дополнить обработчик драйвера класса, предоставляя обратные вызовы для свойства, которое по умолчанию обрабатывается драйвером класса.

Если мини-driver предоставил обработчики для этого свойства, KsPropertyHandler отключает запрос к соответствующему обратному вызову, предоставленному мини-driver.

Мини-driver предоставляет указатели на его свойство, поддерживающие обратные вызовы в структуре типа KSPROPERTY_ITEM. Мини-диск группировать массив связанных KSPROPERTY_ITEM структур в KSPROPERTY_SET структуре. Различные модели драйверов классов имеют несколько разные методы для мини-драйвера, чтобы сделать данные набора свойств доступными для драйвера класса. Сведения о драйвере класса можно найти по ссылкам в разделе Потоковая передача ядра.

Мини-диск также предоставляет указатель на структуру KSPROPERTY_VALUES в структуре KSPROPERTY_ITEM. Структура KSPROPERTY_VALUES, в свою очередь, содержит массив KSPROPERTY_MEMBERSLIST структур. Здесь мини-диск задает размер и тип допустимых значений для свойства . Каждая структура KSPROPERTY_MEMBERSLIST содержит элемент заголовка: см. KSPROPERTY_MEMBERSHEADER Сведения о том, как указать допустимые диапазоны или значения для свойства, которое поддерживает мини-диск. Реализацию этого механизма также можно найти в примере Testcap в пакете драйверов Microsoft Windows (WDK).

Чтобы сообщить о размере и типе допустимых значений для свойства, драйвер класса возвращает структуру KSPROPERTY_DESCRIPTION в ответ на запрос KSPROPERTY_TYPE_BASICSUPPORT от клиента.

Драйвер класса может добавить список KSPROPERTY_MEMBERSHEADER структур в структуру KSPROPERTY_DESCRIPTION.