Compartilhar via


estrutura PCPROPERTY_ITEM (portcls.h)

A estrutura PCPROPERTY_ITEM descreve uma propriedade com suporte por 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 definidos por propriedades em conjuntos de propriedades 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 Solicite para obter a configuração de dados de propriedade atual.
PCPROPERTY_ITEM_FLAG_SET Solicitação para definir a configuração de dados da propriedade atual.
PCPROPERTY_ITEM_FLAG_DEFAULTVALUES Solicite os valores padrão do driver para os dados da propriedade.
PCPROPERTY_ITEM_FLAG_BASICSUPPORT Solicite 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 da propriedade para essa propriedade quando ela for serializada como parte de uma solicitação KSPROPERTY_TYPE_SERIALIZESET.
PCPROPERTY_ITEM_FLAG_SERIALIZERAW Solicite serializar essa propriedade de maneira dependente do driver. Esta operação é o inverso de PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW.
PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW Solicite a deserialização dessa propriedade de maneira dependente do driver. Esta 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.

Observações

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 manipulador de, 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 de retornar qualquer código de status diferente de STATUS_PENDING, o chamador liberará a estrutura. Nesse caso, o driver de miniporto não deve tentar acessar a estrutura após o retorno da rotina de do Manipulador de.
  2. A rotina de do Manipulador de 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 miniporto tentar acessar a estrutura depois que ela for liberada, essa ação provavelmente causará uma verificação de bugs 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 KS.

Requisitos

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

Consulte também

PCPROPERTY_REQUEST

PcCompletePendingPropertyRequest