Partager via


structure PCPROPERTY_ITEM (portcls.h)

La structure PCPROPERTY_ITEM décrit une propriété prise en charge par un filtre, une épingle 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 jeux de propriétés 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 l’or au niveau du bit d’un ou de tous les bits d’indicateur qui apparaissent dans le tableau suivant.

Bits d’indicateur Type de demande de propriété
PCPROPERTY_ITEM_FLAG_GET Demande d’obtention du paramètre de données de propriété actuelle.
PCPROPERTY_ITEM_FLAG_SET Demande de définir le paramètre de données de propriété actuelle.
PCPROPERTY_ITEM_FLAG_DEFAULTVALUES Demander les 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 quels types de requêtes 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 Demandez à sérialiser 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 Demandez à annuler l’annulation de cette propriété d’une 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 du 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 Handler, l’appelant passe un paramètre d’appel unique, qui est un pointeur vers une structure PCPROPERTY_REQUEST. Cette structure est allouée par l’appelant et l’appelant le libère dans l’une des conditions suivantes :

  1. Si le gestionnaire routine retourne un code d’état 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 une fois que le gestionnaire routine retourne.
  2. La routine gestionnaire de 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 après sa libération, cette action est susceptible d’entraîner une vérification de bogue 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.

Exigences

Exigence Valeur
d’en-tête portcls.h (include Portcls.h)

Voir aussi

PCPROPERTY_REQUEST

PcCompletePendingPropertyRequest