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 :
- 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 .
- 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.
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) |