Freigeben über


IPinCount::P inCount-Methode (portcls.h)

Die PinCount-Methode fragt den Miniporttreiber nach der Pinanzahl ab.

Syntax

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
);

Parameter

[in] PinId

Gibt die Pin-ID an. Wenn ein Filter n Pin-Fabriken enthält, reichen gültige Pin-IDs von 0 bis n-1.

[in, out] FilterNecessary

Gibt die Mindestanzahl der Pins an, die die Pin-Factory instanziieren soll, bevor der Filter E/A-Vorgänge ausführen kann.

[in, out] FilterCurrent

Gibt die aktuelle Anzahl der Pininstanzen an. Diese Zahl zählt die Pins, die die Pin-Factory bereits auf dem Filter instanziiert hat.

[in, out] FilterPossible

Gibt die maximale Anzahl von Pins an, die die Pinfactory für den Filter instanziieren kann. Wird auf KSINSTANCE_INDETERMINATE festgelegt, wenn kein Maximum vorhanden ist.

[in, out] GlobalCurrent

Gibt die aktuelle Anzahl der Pins an, die die Pin-Factory auf dem Treiber instanziiert hat.

[in, out] GlobalPossible

Gibt die maximale Anzahl von Pins an, die die Pin-Factory auf dem Treiber instanziieren kann. Wird auf KSINSTANCE_INDETERMINATE festgelegt, wenn kein Maximum vorhanden ist.

Rückgabewert

Nichts

Bemerkungen

Der PinCount Anruf hat zwei Zwecke:

  • Um den Miniporttreiber über die aktuelle Pinanzahl zu informieren.
  • Um dem Miniporttreiber die Möglichkeit zu geben, die aktuelle Pinanzahl zu ändern.
FilterNecessary, FilterCurrent, FilterPossible, GlobalCurrentund GlobalPossible sind alle IN+OUT-Parameter, die auf Werte in der Filterbeschreibung des Miniporttreibers verweisen. Während des PinCount- Aufrufs kann der Miniporttreiber diese Werte untersuchen und hat die Möglichkeit, die Werte zu bearbeiten, um genauer anzugeben, wie viele zusätzliche Pins aus den verbleibenden Ressourcen erstellt werden können.

FilterCurrent und FilterPossible die werte pro Filter für die Pinfactory angeben, die durch PinId-angegeben wird.

GlobalCurrent und GlobalPossible die Gesamtwerte für die Pinfactory für alle Instanzen des Filters angeben.

Miniport-Treiber müssen in der Regel den FilterNecessary Parameter nicht ändern, es ist jedoch im Interesse der Vollständigkeit enthalten.

Während des IPort::Init Aufrufs ruft der Porttreiber die IMiniport::GetDescription Methode des Miniporttreibers auf, um einen Zeiger auf den Filterdeskriptor abzurufen, der das Pindeskriptorarray des Miniporttreibers enthält (siehe PCPIN_DESCRIPTOR). Danach greift der Porttreiber auf die Pindeskriptoren zu, um auf Abfragen für Pineigenschaften zu reagieren.

Wenn der Miniporttreiber die IPinCount Schnittstelle unterstützt, ruft der Porttreiber PinCount auf, um dem Miniporttreiber die Möglichkeit zu geben, die Pinanzahl zu aktualisieren, bevor er auf eine Pin-Eigenschaftsanforderung antwortet. Wenn der Miniporttreiber IPinCount-nicht unterstützt, verwendet der Porttreiber einfach die statischen Grenzwerte für die Pinanzahl im Pindeskriptorarray.

Der Porttreiber ruft die PinCount-Methode auf, wenn er eine der folgenden KS-Eigenschaftsanforderungen empfängt:

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PortCls ruft auch die PinCount-Methode bei jeder Erstellung eines neuen Datenstroms auf.

Miniporttreiber dürfen nicht explizit dazu führen, dass Datenströme innerhalb der PinCount-Methode erstellt oder zerstört werden. Miniport-Treiber sind nicht anderweitig eingeschränkt, was sie während dieses Anrufs tun können.

Die PinCount-Methode wird bei IRQL-PASSIVE_LEVEL aufgerufen. Der Code für diese Methode muss sich im ausgelagerten Speicher befinden.

Anforderungen

Anforderung Wert
Zielplattform- Universal
Header- portcls.h (include Portcls.h)
IRQL- PASSIVE_LEVEL

Siehe auch

IMiniport::GetDescription

IPinCount-

IPort::Init

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PCPIN_DESCRIPTOR