Freigeben über


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

Die PinCount -Methode fragt den Miniporttreiber nach seiner 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 von Pins an, die die Pinfactory instanziieren soll, bevor der Filter E/A-Vorgänge ausführen kann.

[in, out] FilterCurrent

Gibt die aktuelle Anzahl von Pininstanzen an. Diese Zahl zählt die Pins, die die Pin factory bereits für den Filter instanziiert hat.

[in, out] FilterPossible

Gibt die maximale Anzahl von Pins an, die die Pin factory für den Filter instanziieren kann. Legen Sie auf KSINSTANCE_INDETERMINATE fest, wenn kein Maximum vorhanden ist.

[in, out] GlobalCurrent

Gibt die aktuelle Anzahl von 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. Legen Sie auf KSINSTANCE_INDETERMINATE fest, wenn kein Maximum vorhanden ist.

Rückgabewert

Keine

Bemerkungen

Der PinCount Aufruf 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, GlobalCurrent und 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 geben die Filterwerte für die von PinId angegebene Pin Factory an.

GlobalCurrent und GlobalPossible geben die Gesamtwerte für die Pin Factory für alle Instanzen des Filters an.

Miniporttreiber müssen den FilterNecessary-Parameter in der Regel nicht ändern, aber er ist der Vollständigkeit halber 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 Pin-Deskriptorarray des Miniporttreibers enthält (siehe PCPIN_DESCRIPTOR). Anschließend greift der Porttreiber auf die Pindeskriptoren zu, um auf Abfragen nach Pineigenschaften zu reagieren.

Wenn der Miniporttreiber die IPinCount-Schnittstelle unterstützt, ruft PinCount der Porttreiber 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 pin-count im Pin-Descriptor-Array.

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

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PortCls ruft die PinCount -Methode auch jedes Mal auf, wenn ein neuer Stream erstellt wird.

Miniporttreiber dürfen nicht explizit dazu führen, dass Datenströme innerhalb der PinCount -Methode erstellt oder zerstört werden. Miniport-Treiber sind sonst nicht in den Möglichkeiten, die sie während dieses Anrufs ausführen können, eingeschränkt.

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

Anforderungen

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

Weitere Informationen

IMiniport::GetDescription

IPinCount

IPort::Init

KSPROPERTY_PIN_CINSTANCES

KSPROPERTY_PIN_GLOBALCINSTANCES

KSPROPERTY_PIN_NECESSARYINSTANCES

PCPIN_DESCRIPTOR