structure PCPROPERTY_ITEM (portcls.h)

La structure PCPROPERTY_ITEM décrit une propriété prise en charge par un filtre, une broche ou un nœud particulier.

Syntaxe

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

Membres

Set

Spécifie le jeu de propriétés. Ce membre est un pointeur vers un GUID qui identifie de manière unique le jeu de propriétés. Consultez la liste des GUID de jeu de propriétés dans Les ensembles de propriétés de pilotes audio.

Id

Spécifie l’ID de propriété. Ce membre identifie un élément de propriété dans le jeu de propriétés. Si le jeu de propriétés contient N éléments, les ID de propriété valides sont des entiers compris entre 0 et N-1.

Flags

Spécifie les types de demandes de propriété que le pilote prend en charge. Définissez ce membre sur le ou au niveau du bit de tout ou partie des bits d’indicateur qui apparaissent dans le tableau suivant.

Bits d’indicateur Type de demande de propriété
PCPROPERTY_ITEM_FLAG_GET Demande d’obtenir le paramètre de données de propriété actuel.
PCPROPERTY_ITEM_FLAG_SET Demande de définir le paramètre de données de la propriété actuelle.
PCPROPERTY_ITEM_FLAG_DEFAULTVALUES Demande des valeurs par défaut du pilote pour les données de propriété.
PCPROPERTY_ITEM_FLAG_BASICSUPPORT Demande de prise en charge de base, qui spécifie les types de requête que le pilote gère pour cette propriété, ainsi que le type de données valide et les plages valides pour les données de propriété.
PCPROPERTY_ITEM_FLAG_SERIALIZESIZE Demande de taille des données de propriété pour cette propriété lorsqu’elle est sérialisée dans le cadre d’une demande de KSPROPERTY_TYPE_SERIALIZESET.
PCPROPERTY_ITEM_FLAG_SERIALIZERAW Demande de sérialisation de cette propriété de manière dépendante du pilote. Cette opération est l’inverse de PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW.
PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW Demande de désérialiser cette propriété de manière dépendante du pilote. Cette opération est l’inverse de PCPROPERTY_ITEM_FLAG_SERIALIZERAW.
PCPROPERTY_ITEM_FLAG_SERIALIZE PCPROPERTY_ITEM_FLAG_SERIALIZERAW | PCPROPERTY_ITEM_FLAG_UNSERIALIZERAW | PCPROPERTY_ITEM_FLAG_SERIALIZESIZE

Handler

Pointeur vers la routine de gestionnaire de propriétés. Ce membre est un pointeur de fonction de type PCPFNPROPERTY_HANDLER, qui est défini comme suit :

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

Consultez la section Remarques suivante.

Remarques

La structure PCPROPERTY_ITEM spécifie un élément de propriété particulier dans une table Automation. La structure PCAUTOMATION_TABLE pointe vers un tableau de structures PCPROPERTY_ITEM .

Lors de l’appel de la routine de gestionnaire , l’appelant passe un seul paramètre d’appel, qui est un pointeur vers une structure PCPROPERTY_REQUEST . Cette structure est allouée par l’appelant et l’appelant la libère dans l’une des conditions suivantes :

  1. Si la routine de gestionnaire retourne un code status autre que STATUS_PENDING, l’appelant libère la structure. Dans ce cas, le pilote miniport ne doit pas tenter d’accéder à la structure après le retour de la routine du gestionnaire .
  2. La routine de gestionnaire peut également retourner STATUS_PENDING, auquel cas le pilote miniport est obligé d’appeler PcCompletePendingPropertyRequest ultérieurement pour terminer la demande de propriété en attente. La fonction PcCompletePendingPropertyRequest libère la structure. Après avoir appelé PcCompletePendingPropertyRequest, le pilote miniport ne doit pas tenter d’accéder à la structure.
Si le pilote miniport tente d’accéder à la structure une fois qu’elle a été libérée, cette action est susceptible de provoquer un bogue case activée ou d’endommager la mémoire d’un autre pilote.

Pour plus d’informations sur la sérialisation et la sérialisation brute d’un jeu de propriétés, consultez Propriétés KS.

Configuration requise

Condition requise Valeur
En-tête portcls.h (include Portcls.h)

Voir aussi

PCPROPERTY_REQUEST

PcCompletePendingPropertyRequest