Propiedades de KS

Una propiedad representa una configuración de funcionalidad o estado de control que pertenece a un objeto de streaming de kernel, como un filtro o un pin. Los clientes de un minidriver de streaming de kernel pueden enviar solicitudes get y set property (KSPROPERTY_TYPE_GET y KSPROPERTY_TYPE_SET) a los filtros y patillas que ha creado la instancia del minidriver. Un grupo de propiedades relacionadas se conoce como un conjunto de propiedades.

Para obtener o establecer propiedades individuales, los clientes en modo de usuario llaman a la función Win32 DeviceIoControl con el parámetro dwIoControlCode establecido en IOCTL_KS_PROPERTY. DeviceIoControl se describe en la documentación de Microsoft Windows SDK. Los clientes en modo kernel deben llamar a KsSynchronousDeviceControl.

El búfer de entrada es una estructura KSPROPERTY o un contenedor que contiene una estructura KSPROPERTY y otra información relevante para la solicitud. En respuesta a esta llamada, el sistema operativo envía un IRP al controlador de clase.

Cuando el controlador de clase recibe el IRP resultante, llama a KsPropertyHandler. El controlador de clase incluye como parámetro de llamada la dirección de la estructura KSPROPERTY que identifica los detalles de la solicitud de propiedad. La solicitud de propiedad se controla automáticamente en el nivel de controlador de clase o mediante un controlador proporcionado por minidriver. Consulte Kernel Streaming Property Sets (Conjuntos de propiedades de streaming de kernel) para obtener información de referencia, incluidos los conjuntos de propiedades que administra el controlador de clase y que requieren controladores proporcionados por minidriver. Un minidriver puede invalidar o aumentar el controlador de controlador de clase proporcionando devoluciones de llamada para una propiedad que está administrada de forma predeterminada por el controlador de clase.

Si el minidriver ha proporcionado controladores para esta propiedad, KsPropertyHandler a su vez entrega la solicitud a la devolución de llamada proporcionada por minidriver adecuada.

Un minidriver proporciona punteros a sus devoluciones de llamada de compatibilidad de propiedades en una estructura de tipo KSPROPERTY_ITEM. Un minidriver agrupa una matriz de estructuras de KSPROPERTY_ITEM relacionadas en una estructura de KSPROPERTY_SET . Los diferentes modelos de controladores de clase tienen métodos ligeramente diferentes para que el minidriver haga que los datos del conjunto de propiedades estén disponibles para el controlador de clase. Puede encontrar información específica del controlador de clase siguiendo los vínculos de Kernel Streaming.

El minidriver también proporciona un puntero a una estructura de KSPROPERTY_VALUES en una estructura de KSPROPERTY_ITEM. La estructura KSPROPERTY_VALUES contiene a su vez una matriz de estructuras de KSPROPERTY_MEMBERSLIST . Aquí es donde el minidriver especifica el tamaño y el tipo de valores aceptables para la propiedad . Cada estructura de KSPROPERTY_MEMBERSLIST contiene un miembro de encabezado: vea KSPROPERTY_MEMBERSHEADER Para obtener información sobre cómo especificar rangos o valores legales para una propiedad compatible con el minidriver. También puede encontrar una implementación de este mecanismo en el ejemplo testcap del Kit de controladores de Microsoft Windows (WDK).

Para notificar el tamaño y el tipo de valores aceptables para una propiedad, el controlador de clase devuelve una estructura KSPROPERTY_DESCRIPTION en respuesta a una solicitud de KSPROPERTY_TYPE_BASICSUPPORT del cliente.

El controlador de clase puede anexar una lista de estructuras de KSPROPERTY_MEMBERSHEADER a la estructura KSPROPERTY_DESCRIPTION.