KSPROPERTY_ITEM estructura (ks.h)
Los controladores usan la estructura KSPROPERTY_ITEM para describir cómo admiten una propiedad en un conjunto de propiedades.
Sintaxis
typedef struct {
ULONG PropertyId;
union {
PFNKSHANDLER GetPropertyHandler;
BOOLEAN GetSupported;
};
ULONG MinProperty;
ULONG MinData;
union {
PFNKSHANDLER SetPropertyHandler;
BOOLEAN SetSupported;
};
const KSPROPERTY_VALUES *Values;
ULONG RelationsCount;
const KSPROPERTY *Relations;
PFNKSHANDLER SupportHandler;
ULONG SerializedSize;
} KSPROPERTY_ITEM, *PKSPROPERTY_ITEM;
Miembros
PropertyId
Especifica el identificador de la propiedad que se describe.
GetPropertyHandler
Puntero a un minidriver proporcionado por KStrGetPropertyHandler. Si es NULL, la propiedad no se puede leer. Este miembro solo lo usan los controladores que usan las interfaces de clase AVStream o Stream.
GetSupported
Se establece en TRUE si esta propiedad admite solicitudes get, FALSE si no lo hace. (El controlador de clase cumple la solicitud a través de las solicitudes de SRB_GET_DEVICE_PROPERTY o SRB_GET_STREAM_PROPERTY). Solo los minidrivers que se ejecutan en la clase de secuencia usan este miembro.
MinProperty
Especifica la longitud mínima del búfer para contener el identificador de propiedad. Debe ser al menos sizeof(KSPROPERTY).
MinData
Especifica la longitud mínima del búfer para contener los datos leídos o escritos en esta propiedad.
SetPropertyHandler
Puntero a un minidriver proporcionado por KStrSetPropertyHandler. Si es NULL, no se puede establecer la propiedad . Este miembro solo lo usan los controladores que usan las interfaces de clase AVStream o Stream.
SetSupported
Se establece en TRUE si esta propiedad admite solicitudes establecidas, FALSE si no lo hace. (El controlador de clase cumple la solicitud a través de las solicitudes de SRB_SET_DEVICE_PROPERTY o SRB_SET_STREAM_PROPERTY).
Values
Puntero a una estructura de tipo KSPROPERTY_VALUES. Especifica los valores aceptables o predeterminados para la propiedad . Son los mismos que los valores notificados por un controlador en respuesta a una solicitud de IOCTL_KS_PROPERTY con las marcas KSPROPERTY_TYPE_BASICSUPPORT y KSPROPERTY_TYPE_DEFAULTVALUES establecidas.
RelationsCount
Especifica el número de entradas de la matriz a las que apunta el miembro Relations .
Relations
Apunta a una matriz de estructuras KSPROPERTY que representan propiedades relacionadas con esta. Se consideran relacionadas dos propiedades si cambiar una propiedad puede afectar al valor de la otra propiedad. El miembro Flags de cada entrada no se usa.
SupportHandler
Proporcione este miembro solo si implementa su propio formato para la serialización sin procesar o la unserialización sin procesar. AVStream controla automáticamente las consultas de soporte técnico básico, las consultas de intervalo y las consultas de relaciones, que devuelven los valores pertinentes de otros miembros de esta estructura de KSPROPERTY_ITEM.
SerializedSize
Especifica el tamaño de la propiedad cuando se serializa en una solicitud de KSPROPERTY_TYPE_SERIALIZESET. Debe ser cero si la propiedad no se puede serializar. Consulte KSPROPERTY para obtener más información.
Comentarios
Stream minidrivers de clase usan KSPROPERTY_ITEM para describir al cliente cómo cumplir las solicitudes de propiedad en cada propiedad de un conjunto. El control de la propiedad establecida como un todo se especifica en la estructura KSPROPERTY_SET , que contiene punteros a matrices de estructuras de KSPROPERTY_ITEM.
El controlador de clase de secuencia controla las solicitudes de propiedad en nombre del minidriver. Cuando el controlador de clase de secuencia requiere más información del minidriver, pasa una solicitud de SRB_XXX a una de las rutinas de StrMiniReceiveXXXRequest del minidriver. El controlador de clase de flujo controla los distintos tipos de solicitud, como se muestra en la tabla siguiente.
Valor de marcas de solicitud de propiedad | Response |
---|---|
KSPROPERTY_TYPE_GET | Si GetSupported es TRUE, el controlador de clase de secuencia envía una solicitud de SRB_GET_DEVICE_PROPERTY o SRB_GET_STREAM_PROPERTY a la rutina de minidriver StrMiniReceiveXXXRequest adecuada. |
KSPROPERTY_TYPE_SET | Si SetSupported es TRUE, el controlador de clase de secuencia envía una solicitud de SRB_SET_DEVICE_PROPERTY o SRB_SET_STREAM_PROPERTY a la rutina de minidriver StrMiniReceiveXXXRequest adecuada. |
KSPROPERTY_TYPE_BASICSUPPORT | El controlador de clase de flujo usa KSPROPERTY_ITEM para obtener la información necesaria para cumplir esta solicitud. Por ejemplo, para especificar el tipo de datos y los intervalos permitidos de los datos de propiedad, cada uno usa el miembro Values de esta estructura. |
KSPROPERTY_TYPE_SETSUPPORT | El controlador de clase de flujo completa el IRP de solicitud de propiedad como STATUS_SUCCESS solo si el controlador proporciona una entrada para la propiedad establecida dentro de su estructura KSPROPERTY_SET . |
KSPROPERTY_TYPE_DEFAULTVALUES | El controlador de clase de secuencia usa el miembro Values de esta estructura para determinar los valores predeterminados de los datos de propiedad. |
KSPROPERTY_TYPE_RELATIONS | El controlador de clase de secuencia usa el miembro Relations para determinar qué propiedades están relacionadas con esta propiedad. |
Si el cliente especifica KSPROPERTY_TYPE_DEFAULTVALUES, el controlador usa el búfer de datos para devolver una descripción de su tipo de valor, incluido posiblemente su intervalo permitido y el valor predeterminado. Esta marca es similar en el resultado de KSPROPERTY_TYPE_BASICSUPPORT, salvo que los valores devueltos son los que se han marcado con KSPROPERTY_MEMBER_FLAG_DEFAULT en el miembro Flags de la estructura KSPROPERTY_MEMBERSHEADER.
Para obtener más información, vea Propiedades de KS.
Requisitos
Requisito | Valor |
---|---|
Header | ks.h (incluye Ks.h) |