Partager via


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.
filterNecessary, FilterCurrent, FilterPossible, GlobalCurrentet 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 le nombre de broches supplémentaires pouvant être créées à partir des ressources restantes.

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_CINSTANCES

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

IMiniport ::GetDescription

IPinCount

IPort ::Init

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PCPIN_DESCRIPTOR