Share via


estrutura PCPROPERTY_ITEM (portcls.h)

A estrutura PCPROPERTY_ITEM descreve uma propriedade compatível com um filtro, pino ou nó específico.

Sintaxe

typedef struct {
  const GUID            *Set;
  ULONG                 Id;
  ULONG                 Flags;
  PCPFNPROPERTY_HANDLER Handler;
} PCPROPERTY_ITEM, *PPCPROPERTY_ITEM;

Membros

Set

Especifica o conjunto de propriedades. Esse membro é um ponteiro para um GUID que identifica exclusivamente o conjunto de propriedades. Consulte a lista de GUIDs do conjunto de propriedades em Conjuntos de Propriedades de Drivers de Áudio.

Id

Especifica a ID da propriedade. Esse membro identifica um item de propriedade dentro do conjunto de propriedades. Se o conjunto de propriedades contiver N itens, as IDs de propriedade válidas serão inteiros no intervalo de 0 a N-1.

Flags

Especifica os tipos de solicitações de propriedade compatíveis com o driver. Defina esse membro como OR bit a bit de alguns ou todos os bits de sinalizador que aparecem na tabela a seguir.

Bits de sinalizador Tipo de solicitação de propriedade
PCPROPERTY_ITEM_FLAG_GET Solicitação para obter a configuração de dados de propriedade atual.
PCPROPERTY_ITEM_FLAG_SET Solicitação para definir a configuração de dados de propriedade atual.
PCPROPERTY_ITEM_FLAG_DEFAULTVALUES Solicite os valores padrão do driver para os dados da propriedade.
PCPROPERTY_ITEM_FLAG_BASICSUPPORT Solicitação de suporte básico, que especifica quais tipos de solicitação o driver manipula para essa propriedade e também especifica o tipo de dados válido e os intervalos válidos para os dados da propriedade.
PCPROPERTY_ITEM_FLAG_SERIALIZESIZE Solicite o tamanho dos dados de propriedade para essa propriedade quando ela for serializada como parte de uma solicitação de KSPROPERTY_TYPE_SERIALIZESET.
PCPROPERTY_ITEM_FLAG_SERIALIZERAW Solicitação para serializar essa propriedade de maneira dependente do driver. Essa operação é o inverso de PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW.
PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW Solicite a deserialização dessa propriedade de maneira dependente do driver. Essa operação é o inverso de PCPROPERTY_ITEM_FLAG_SERIALIZERAW.
PCPROPERTY_ITEM_FLAG_SERIALIZE PCPROPERTY_ITEM_FLAG_SERIALIZERAW | PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW | PCPROPERTY_ITEM_FLAG_SERIALIZESIZE

Handler

Ponteiro para a rotina do manipulador de propriedades. Esse membro é um ponteiro de função do tipo PCPFNPROPERTY_HANDLER, que é definido da seguinte maneira:

  typedef NTSTATUS (*PCPFNPROPERTY_HANDLER)
  (
      IN PPCPROPERTY_REQUEST  PropertyRequest
  );

Consulte a seção Comentários a seguir.

Comentários

A estrutura PCPROPERTY_ITEM especifica um item de propriedade específico em uma tabela de automação. A estrutura PCAUTOMATION_TABLE aponta para uma matriz de estruturas PCPROPERTY_ITEM .

Ao chamar a rotina Handler , o chamador passa um único parâmetro de chamada, que é um ponteiro para uma estrutura PCPROPERTY_REQUEST . Essa estrutura é alocada pelo chamador e o chamador a libera em qualquer uma das seguintes condições:

  1. Se a rotina Manipulador retornar qualquer código status diferente de STATUS_PENDING, o chamador liberará a estrutura. Nesse caso, o driver de miniporto não deve tentar acessar a estrutura depois que a rotina Handler retornar.
  2. A rotina Handler também pode retornar STATUS_PENDING, caso em que o driver de miniporto é obrigado a chamar PcCompletePendingPropertyRequest posteriormente para concluir a solicitação de propriedade pendente. A função PcCompletePendingPropertyRequest libera a estrutura. Depois de chamar PcCompletePendingPropertyRequest, o driver de miniport não deve tentar acessar a estrutura.
Se o driver de miniporta tentar acessar a estrutura depois que ela tiver sido liberada, essa ação provavelmente causará um bug marcar ou corromperá a memória de outro driver.

Para obter mais informações sobre serialização e serialização bruta de um conjunto de propriedades, consulte Propriedades do KS.

Requisitos

Requisito Valor
Cabeçalho portcls.h (inclua Portcls.h)

Confira também

PCPROPERTY_REQUEST

PcCompletePendingPropertyRequest