IPinCount ::P inCount, méthode (portcls.h)
La méthode PinCount
interroge le pilote miniport pour son nombre d’épingles.
Syntaxe
void PinCount(
[in] ULONG PinId,
[in, out] PULONG FilterNecessary,
[in, out] PULONG FilterCurrent,
[in, out] PULONG FilterPossible,
[in, out] PULONG GlobalCurrent,
[in, out] PULONG GlobalPossible
);
Paramètres
[in] PinId
Spécifie l’ID d’épingle. Si un filtre contient n fabriques de broches, les ID de broche valides vont de 0 à n-1.
[in, out] FilterNecessary
Spécifie le nombre minimal de broches que la fabrique de broches doit instancier avant que le filtre puisse effectuer des opérations d’E/S.
[in, out] FilterCurrent
Spécifie le nombre actuel d’instances d’épingle. Ce nombre compte les broches que la fabrique de broches a déjà instanciées sur le filtre.
[in, out] FilterPossible
Spécifie le nombre maximal de broches que la fabrique de broches peut instancier sur le filtre. Défini sur KSINSTANCE_INDETERMINATE s’il n’y a pas de maximum.
[in, out] GlobalCurrent
Spécifie le nombre actuel de broches instanciées dans la fabrique de broches sur le pilote.
[in, out] GlobalPossible
Spécifie le nombre maximal de broches que la fabrique de broches peut instancier sur le pilote. Défini sur KSINSTANCE_INDETERMINATE s’il n’y a pas de maximum.
Valeur de retour
Aucun
Remarques
L’appel PinCount
a deux objectifs :
- Pour informer le pilote miniport du nombre actuel de broches.
- Pour donner au pilote miniport une opportunité de modifier le nombre de broches actuels.
filterCurrent et FilterPossible spécifier les valeurs par filtre pour la fabrique de broche spécifiée par PinId.
GlobalCurrent et GlobalPossible spécifier les valeurs totales de la fabrique de broches sur toutes les instances du filtre.
Les pilotes miniports n’ont généralement pas besoin de modifier le paramètre FilterNecessary, mais il est inclus pour l’exhaustivité.
Pendant l’appel IPort ::Init, le pilote de port appelle la méthode IMiniport ::GetDescription du pilote miniport pour obtenir un pointeur vers le descripteur de filtre, qui inclut le tableau de code pin-descripteur du pilote miniport (voir PCPIN_DESCRIPTOR). Par la suite, le pilote de port accède aux descripteurs de broche pour répondre aux requêtes relatives aux propriétés de broche.
Si le pilote miniport prend en charge l’interface IPinCount, le pilote de port appelle PinCount
pour permettre au pilote miniport de mettre à jour le nombre de broches avant de répondre à une demande de propriété de broche. Si le pilote miniport ne prend pas en charge IPinCount, le pilote de port utilise simplement les limites de nombre de broches statiques dans le tableau de descripteurs de broche.
Le pilote de port appelle la méthode PinCount
lorsqu’il reçoit l’une des demandes de propriété KS suivantes :
KSPROPERTY_PIN_GLOBALCINSTANCES
KSPROPERTY_PIN_NECESSARYINSTANCES
PortCls appelle également la méthode PinCount
chaque fois qu’un flux est créé.
Les pilotes miniports ne doivent pas provoquer explicitement la création ou la destruction de flux à partir de la méthode PinCount
. Les pilotes miniports ne sont pas autrement limités dans ce qu’ils peuvent faire pendant cet appel.
La méthode PinCount
est appelée au PASSIVE_LEVEL IRQL. Le code de cette méthode doit résider dans la mémoire paginée.
Exigences
Exigence | Valeur |
---|---|
plateforme cible | Universel |
d’en-tête | portcls.h (include Portcls.h) |
IRQL | PASSIVE_LEVEL |
Voir aussi
KSPROPERTY_PIN_GLOBALCINSTANCES