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