Partilhar via


estrutura KSPROPERTY_ITEM (ks.h)

Os drivers usam a estrutura KSPROPERTY_ITEM para descrever como dão suporte a uma propriedade em um conjunto de propriedades.

Sintaxe

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;

Membros

PropertyId

Especifica a ID da propriedade que está sendo descrita.

GetPropertyHandler

Ponteiro para um KStrGetPropertyHandler fornecido por minidriver. Se NULL, a propriedade não poderá ser lida. Esse membro é usado apenas por drivers que usam as interfaces de classe AVStream ou Stream.

GetSupported

Defina como verdadeiro se essa propriedade der suporte a solicitações de obtenção, FALSE se não o fizer. (O driver de classe atende à solicitação por meio das solicitações SRB_GET_DEVICE_PROPERTY ou SRB_GET_STREAM_PROPERTY.) Esse membro é usado somente por minidrivers em execução na classe stream.

MinProperty

Especifica o comprimento mínimo do buffer para manter o identificador de propriedade. Isso deve ser pelo menos tamanho de(KSPROPERTY).

MinData

Especifica o comprimento mínimo do buffer para manter os dados lidos ou gravados nessa propriedade.

SetPropertyHandler

Ponteiro para um KStrSetPropertyHandler fornecido pelo minidriver. Se NULL, a propriedade não poderá ser definida. Esse membro é usado apenas por drivers que usam as interfaces de classe AVStream ou Stream.

SetSupported

Defina como TRUE se essa propriedade der suporte a solicitações definidas, FALSE se não o fizer. (O driver de classe atende à solicitação por meio das solicitações SRB_SET_DEVICE_PROPERTY ou SRB_SET_STREAM_PROPERTY.)

Values

Ponteiro para uma estrutura do tipo KSPROPERTY_VALUES. Especifica os valores aceitáveis e/ou padrão para a propriedade. Eles são os mesmos que os valores relatados por um driver em resposta a uma solicitação IOCTL_KS_PROPERTY com os sinalizadores KSPROPERTY_TYPE_BASICSUPPORT e KSPROPERTY_TYPE_DEFAULTVALUES definidos.

RelationsCount

Especifica o número de entradas na matriz apontada pelo membro relações.

Relations

Aponta para uma matriz de estruturas deKSPROPERTYque representam propriedades relacionadas a esta. Duas propriedades serão consideradas relacionadas se a alteração de uma propriedade puder afetar o valor da outra propriedade. O Flags membro de cada entrada não é usado.

SupportHandler

Forneça esse membro somente se estiver implementando seu próprio formato para serialização bruta ou inserção bruta. Consultas básicas de suporte, consultas de intervalo e consultas de relações são tratadas automaticamente pelo AVStream, que retorna os valores relevantes de outros membros dessa estrutura KSPROPERTY_ITEM.

SerializedSize

Especifica o tamanho da propriedade quando serializada em uma solicitação de KSPROPERTY_TYPE_SERIALIZESET. Isso deve ser zero se a propriedade não puder ser serializada. Consulte KSPROPERTY para obter mais informações.

Observações

Os minidrivers de classe de fluxo usam KSPROPERTY_ITEM para descrever ao cliente como atender solicitações de propriedade em cada propriedade dentro de um conjunto. A manipulação do conjunto de propriedades como um todo é especificada na estrutura KSPROPERTY_SET, que contém ponteiros para matrizes de estruturas de KSPROPERTY_ITEM.

O driver de classe de fluxo manipula solicitações de propriedade em nome do minidriver. Quando o driver de classe de fluxo requer mais informações do minidriver, ele passa uma solicitação SRB_XXX para uma das rotinas de strMiniReceiveXXXRequest do minidriver. O driver de classe de fluxo manipula os diferentes tipos de solicitação, conforme listado na tabela a seguir.

Valor dos sinalizadores de solicitação de propriedade Resposta
KSPROPERTY_TYPE_GET Se GetSupported for verdadeiro, o driver de classe de fluxo enviará uma solicitação SRB_GET_DEVICE_PROPERTY ou SRB_GET_STREAM_PROPERTY para o minidriver apropriado rotina de StrMiniReceiveXXXRequest.
KSPROPERTY_TYPE_SET Se setSupported for true, o driver de classe de fluxo enviará uma solicitação SRB_SET_DEVICE_PROPERTY ou SRB_SET_STREAM_PROPERTY para o minidriver apropriado rotina de StrMiniReceiveXXXRequest.
KSPROPERTY_TYPE_BASICSUPPORT O driver de classe de fluxo usa KSPROPERTY_ITEM para obter as informações necessárias para atender a essa solicitação. Por exemplo, para especificar o tipo de dados e os intervalos permitidos dos dados de propriedade, cada um deles usa os valores membro dessa estrutura.
KSPROPERTY_TYPE_SETSUPPORT O driver de classe de fluxo conclui a solicitação de propriedade IRP como STATUS_SUCCESS somente se o driver fornecer uma entrada para o conjunto de propriedades dentro de sua estrutura de KSPROPERTY_SET.
KSPROPERTY_TYPE_DEFAULTVALUES O driver de classe de fluxo usa o Values membro dessa estrutura para determinar os valores padrão para os dados da propriedade.
KSPROPERTY_TYPE_RELATIONS O driver de classe de fluxo usa o membro relações para determinar quais propriedades estão relacionadas a essa propriedade.

Se o cliente especificar KSPROPERTY_TYPE_DEFAULTVALUES, o driver usará o buffer de dados para retornar uma descrição de seu tipo de valor, incluindo possivelmente seu intervalo permitido e o valor padrão. Esse sinalizador é semelhante ao resultado de KSPROPERTY_TYPE_BASICSUPPORT, exceto que todos os valores retornados são aqueles que foram marcados com KSPROPERTY_MEMBER_FLAG_DEFAULT no Flags membro da estrutura KSPROPERTY_MEMBERSHEADER.

Para obter mais informações, consulte propriedades KS.

Requisitos

Requisito Valor
cabeçalho ks.h (incluir Ks.h)

Consulte também

KSPROPERTY

KSPROPERTY_SET

KSPROPERTY_VALUES

SRB_GET_DEVICE_PROPERTY

SRB_GET_STREAM_PROPERTY

SRB_SET_DEVICE_PROPERTY

SRB_SET_STREAM_PROPERTY