IPinCount ::P inCount, méthode (portcls.h)

La PinCount méthode 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éfinissez sur KSINSTANCE_INDETERMINATE s’il n’y a pas de maximum.

[in, out] GlobalCurrent

Spécifie le nombre actuel de broches instanciées par 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éfinissez sur KSINSTANCE_INDETERMINATE s’il n’y a pas de maximum.

Valeur de retour

None

Remarques

L’appel PinCount a deux objectifs :

  • Pour informer le pilote miniport des nombres d’épingles actuels.
  • Pour donner au pilote miniport une possibilité de modifier le nombre actuel de broches.
FilterNecessary, FilterCurrent, FilterPossible, GlobalCurrent et GlobalPossible sont tous des paramètres IN+OUT qui pointent vers des valeurs dans la description du filtre du pilote miniport. Pendant l’appel PinCount , le pilote miniport peut examiner ces valeurs et a la possibilité de modifier les valeurs afin d’indiquer plus précisément combien d’épingles supplémentaires peuvent être créées à partir des ressources restantes.

FilterCurrent et FilterPossible spécifient les valeurs par filtre pour la fabrique de broches spécifiée par PinId.

GlobalCurrent et GlobalPossible spécifient les valeurs totales de la fabrique de broches sur toutes les instances du filtre.

Les pilotes Miniport n’ont généralement pas besoin de modifier le paramètre FilterNecessary , mais il est inclus pour des raisons d’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 descripteur de code pin 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 d’épingle.

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é pin. Si le pilote miniport ne prend pas en charge IPinCount, le pilote de port utilise simplement les limites statiques du nombre de broches dans le tableau de descripteur de broche.

Le pilote de port appelle la PinCount méthode lorsqu’il reçoit l’une des demandes de propriété KS suivantes :

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PortCls appelle également la PinCount méthode chaque fois qu’un flux est créé.

Les pilotes miniport ne doivent pas explicitement provoquer la création ou la destruction de flux à partir de la PinCount méthode . Les pilotes miniport ne sont pas autrement limités dans ce qu’ils peuvent faire pendant cet appel.

La PinCount méthode est appelée au PASSIVE_LEVEL IRQL. Le code de cette méthode doit résider dans la mémoire paginée.

Configuration requise

Condition requise Valeur
Plateforme cible Universal
En-tête portcls.h (include Portcls.h)
IRQL PASSIVE_LEVEL

Voir aussi

IMiniport ::GetDescription

IPinCount

IPort ::Init

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PCPIN_DESCRIPTOR