Condividi tramite


struttura PCPROPERTY_ITEM (portcls.h)

La struttura PCPROPERTY_ITEM descrive una proprietà supportata da un determinato filtro, pin o nodo.

Sintassi

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

Members

Set

Specifica il set di proprietà. Questo membro è un puntatore a un GUID che identifica in modo univoco il set di proprietà. Vedere l'elenco dei GUID set di proprietà nei set di proprietà Audio Drivers.

Id

Specifica l'ID proprietà. Questo membro identifica un elemento della proprietà all'interno del set di proprietà. Se il set di proprietà contiene elementi N, gli ID proprietà validi sono interi nell'intervallo da 0 a N-1.

Flags

Specifica i tipi di richieste di proprietà supportate dal driver. Impostare questo membro sull'OR bit per bit di alcuni o tutti i bit di flag visualizzati nella tabella seguente.

Bit di flag Tipo di richiesta di proprietà
PCPROPERTY_ITEM_FLAG_GET Richiedere di ottenere l'impostazione dei dati della proprietà corrente.
PCPROPERTY_ITEM_FLAG_SET Richiedere di impostare l'impostazione dei dati della proprietà corrente.
PCPROPERTY_ITEM_FLAG_DEFAULTVALUES Richiedere i valori predefiniti del driver per i dati delle proprietà.
PCPROPERTY_ITEM_FLAG_BASICSUPPORT Richiedere il supporto di base, che specifica quali tipi di richiesta vengono gestiti dal driver per questa proprietà e specifica anche il tipo di dati valido e gli intervalli validi per i dati delle proprietà.
PCPROPERTY_ITEM_FLAG_SERIALIZESIZE Richiedere le dimensioni dei dati della proprietà per questa proprietà quando viene serializzata come parte di una richiesta di KSPROPERTY_TYPE_SERIALIZESET.
PCPROPERTY_ITEM_FLAG_SERIALIZERAW Richiedere di serializzare questa proprietà in modo dipendente dal driver. Questa operazione è l'inverso di PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW.
PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW Richiedere di annullare la creazione di questa proprietà in modo dipendente dal driver. Questa operazione è l'inverso di PCPROPERTY_ITEM_FLAG_SERIALIZERAW.
PCPROPERTY_ITEM_FLAG_SERIALIZE PCPROPERTY_ITEM_FLAG_SERIALIZERAW | PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW | PCPROPERTY_ITEM_FLAG_SERIALIZESIZE

Handler

Puntatore alla routine del gestore delle proprietà. Questo membro è un puntatore di funzione di tipo PCPFNPROPERTY_HANDLER, definito come segue:

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

Vedere la sezione Osservazioni seguenti.

Commenti

La struttura PCPROPERTY_ITEM specifica un elemento di proprietà specifico in una tabella di automazione. La struttura PCAUTOMATION_TABLE punta a una matrice di strutture PCPROPERTY_ITEM .

Quando si chiama la routine del gestore , il chiamante passa un singolo parametro di chiamata, ovvero un puntatore a una struttura di PCPROPERTY_REQUEST . Questa struttura viene allocata dal chiamante e il chiamante lo libera in una delle condizioni seguenti:

  1. Se la routine del gestore restituisce qualsiasi codice di stato diverso da STATUS_PENDING, il chiamante libera la struttura. In questo caso, il driver miniport non deve tentare di accedere alla struttura dopo che la routine del gestore restituisce.
  2. La routine del gestore può anche restituire STATUS_PENDING, nel qual caso il driver miniport è obbligato a chiamare PcCompletePendingPropertyRequest in un secondo momento per completare la richiesta di proprietà in sospeso. La funzione PcCompletePendingPropertyRequest libera la struttura. Dopo aver chiamato PcCompletePendingPropertyRequest, il driver miniport non deve tentare di accedere alla struttura.
Se il driver miniport tenta di accedere alla struttura dopo che è stato liberato, questa azione potrebbe causare un controllo di bug o danneggiare la memoria di un altro driver.

Per altre informazioni sulla serializzazione e la serializzazione non elaborata di un set di proprietà, vedere Proprietà KS.

Requisiti

Requisito Valore
Intestazione portcls.h (includere Portcls.h)

Vedi anche

PCPROPERTY_REQUEST

PcCompletePendingPropertyRequest