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)

Consulte también

KSPROPERTY

KSPROPERTY_SET

KSPROPERTY_VALUES

SRB_GET_DEVICE_PROPERTY

SRB_GET_STREAM_PROPERTY

SRB_SET_DEVICE_PROPERTY

SRB_SET_STREAM_PROPERTY