Freigeben über


MINIPORT_PAUSE Rückruffunktion (ndis.h)

NDIS ruft die MiniportPause Funktion eines Miniporttreibers auf, um den Netzwerkdatenfluss über einen angegebenen Miniportadapter zu beenden.

Hinweis Sie müssen die Funktion mithilfe des MINIPORT_PAUSE-Typs deklarieren. Weitere Informationen finden Sie im folgenden Abschnitt "Beispiele".
 

Syntax

MINIPORT_PAUSE MiniportPause;

NDIS_STATUS MiniportPause(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] PNDIS_MINIPORT_PAUSE_PARAMETERS PauseParameters
)
{...}

Parameter

[in] MiniportAdapterContext

Ein Handle zu einem Kontextbereich, den der Miniporttreiber in seiner MiniportInitializeEx--Funktion zugewiesen hat. Der Miniporttreiber verwendet diesen Kontextbereich, um Zustandsinformationen für einen Miniportadapter beizubehalten.

[in] PauseParameters

Ein Zeiger auf einen NDIS_MINIPORT_PAUSE_PARAMETERS Struktur, die die Pausenparameter für den Miniportadapter definiert.

Rückgabewert

MiniportPause gibt einen der folgenden Statuswerte zurück:

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS
MiniportPause den Netzwerkdatenfluss über den Miniportadapter erfolgreich beendet.
NDIS_STATUS_PENDING
MiniportPause den Pausenvorgang nicht abgeschlossen und der Vorgang wird asynchron abgeschlossen. Der Miniporttreiber muss den NdisMPauseComplete--Funktion aufrufen, wenn der Vorgang abgeschlossen ist.

Bemerkungen

Ein Treiber gibt den MiniportPause Einstiegspunkt an, wenn er die NdisMRegisterMiniportDriver Funktion.

NDIS hält einen Miniportadapter an, um den Datenfluss zu beenden, der PnP-Vorgänge beeinträchtigen könnte, z. B. das Hinzufügen oder Entfernen eines Filtertreibers oder das Binden oder Aufheben der Bindung eines Protokolltreibers.

NDIS ruft die MiniportPause-Funktion eines Miniporttreibers auf, um eine Pausenanforderung für den miniportadapter zu initiieren, der an MiniportAdapterContextangegeben ist. Der Miniportadapter verbleibt im Anhalten Zustand, bis der Pausenvorgang abgeschlossen ist.

Für einen Miniportadapter im Anhalten Zustand, der Miniporttreiber:

  • Wartet auf alle Anrufe an die zurückzugebende Funktion NdisMIndicateReceiveNetBufferLists.
  • Wartet, bis NDIS den Besitz aller NET_BUFFER_LIST Strukturen von offenen Empfangsanzeigen an den Miniport-Fahrer zurückgibt. MiniportReturnNetBufferLists Funktion.
  • Schließt alle offenen Sendeanforderungen und Anrufe ab NdisMSendNetBufferListsComplete Funktion für alle ausstehenden Sendeanforderungen.
  • Lehnt alle neuen Sendeanfragen ab, die an ihre MiniportSendNetBufferLists Funktion sofort durch Aufrufen NdisMSendNetBufferListsComplete. Er sollte den vollständigen Status in jedem NET_BUFFER_LIST auf NDIS_STATUS_PAUSED festlegen.
  • Kann Statusanzeigen mit dem NdisMIndicateStatusEx--Funktion.
  • Sollte OID-Anforderungen in der MiniportOidRequest--Funktion behandeln.
  • Sollte der Miniportadapter nicht vollständig beendet werden, wenn der Miniportadapter beendet wird, hindert der Treiber daran, Anforderungen zu verarbeiten oder Statusanzeigen bereitzustellen.
  • Sollte die Ressourcen, die der Treiber während der Initialisierung zugeordnet hat, nicht freigeben.
NDIS initiiert keine anderen PnP-Vorgänge für den Miniportadapter, z. B. Anhalten, Initialisieren, Stromwechsel, Anhalten oder Neustartanforderungen, während sich der Miniportadapter im Zustand "Anhalten" befindet. NDIS kann diese PnP-Vorgänge initiieren, nachdem sich ein Miniportadapter im zustand Angehalten befindet.

Nachdem ein Miniporttreiber alle ausstehenden Sendeanforderungen abgeschlossen hat und NDIS alle empfangenen Netzwerkdatenstrukturen (von ausstehenden Empfangsanzeigen) zurückgibt, muss der Treiber den Pausenvorgang abschließen. Wenn der Treiber NDIS_STATUS_SUCCESS von MiniportPausezurückgibt, ist der Pausenvorgang abgeschlossen. Wenn der Treiber NDIS_STATUS_PENDING zurückgibt, kann der Miniportadapter im Anhalten Zustand verbleiben und der Pausenvorgang abgeschlossen ist, nachdem der Treiber die NdisMPauseComplete Funktion aufruft. Nach Abschluss des Pausenvorgangs befindet sich der Miniportadapter im Zustand Angehalten.

Für einen Miniportadapter im Angehaltenen Zustand, der Miniporttreiber:

  • Alle an MiniportSendNetBufferLists gesendeten Sendeanforderungen müssen sofort abgelehnt werden, indem NdisMSendNetBufferListsCompleteaufgerufen wird. Er sollte das Statuselement in jedem NET_BUFFER_LIST auf NDIS_STATUS_PAUSED festlegen.
  • Kann Empfangsunterbrechungen verarbeiten (siehe MiniportInterrupt-Funktion) und Interrupt-DPCs (siehe MiniportInterruptDPC-Funktion), sollte jedoch keine empfangenen Netzwerkdaten angeben.
  • Kann Statusanzeigen mit der funktion NdisMIndicateStatusEx bereitstellen.
  • Sollte OID-Anforderungen in der MiniportOidRequest--Funktion behandeln.
  • Sollte Anforderungen zum Ändern des Gerätestromzustands im MiniportDevicePnPEventNotify Funktion.
  • Kann Aufrufe von NetTimerCallback--Funktionen verarbeiten.
  • Kann Anforderungen zum Zurücksetzen der Hardware in der MiniportResetEx--Funktion verarbeiten.
Miniporttreiber können keine Pausenanforderung nicht ausführen. Wenn daher ein Miniporttreiber Ressourcen zum Behandeln einer Pausenanforderung benötigt, sollte er die Ressourcen während der Initialisierung vorab zuweisen.

NDIS ruft die MiniportRestart--Funktion auf, um eine Neustartanforderung für einen angehaltenen Miniportadapter zu initiieren.

NDIS ruft MiniportPause bei IRQL = PASSIVE_LEVEL auf.

beispiele für

Um eine MiniportPause--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration angeben, die den Typ der Funktion identifiziert, die Sie definieren. Windows stellt eine Reihe von Funktionstypen für Treiber bereit. Durch das Deklarieren einer Funktion mithilfe der Funktionstypen können Codeanalyse für Treiber, statische Treiberüberprüfung (SDV) und andere Überprüfungstools Fehler finden, und es ist eine Anforderung zum Schreiben von Treibern für das Windows-Betriebssystem.

Um beispielsweise eine MiniportPause-Funktion zu definieren, die den Namen "MyPause" hat, verwenden Sie den MINIPORT_PAUSE Typ wie in diesem Codebeispiel gezeigt:

MINIPORT_PAUSE MyPause;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
NDIS_STATUS
 MyPause(
    NDIS_HANDLE  MiniportAdapterContext,
    PNDIS_MINIPORT_PAUSE_PARAMETERS  MiniportPauseParameters
    )
  {...}

Der MINIPORT_PAUSE Funktionstyp wird in der Ndis.h-Headerdatei definiert. Um Fehler genauer zu identifizieren, wenn Sie die Codeanalysetools ausführen, müssen Sie der Funktionsdefinition die Use_decl_annotations Anmerkung hinzufügen. Die Use_decl_annotations Anmerkung stellt sicher, dass die Anmerkungen, die auf den Funktionstyp MINIPORT_PAUSE in der Headerdatei angewendet werden, verwendet werden. Weitere Informationen zu den Anforderungen für Funktionsdeklarationen finden Sie unter Deklarieren von Funktionen mithilfe von Funktionsrollentypen für NDIS-Treiber.

Informationen zu Use_decl_annotationsfinden Sie unter Annotating Function Behavior.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Unterstützt in NDIS 6.0 und höher.
Zielplattform- Fenster
Header- ndis.h (include Ndis.h)
IRQL- PASSIVE_LEVEL

Siehe auch

MiniportDevicePnPEventNotify

MiniportInitializeEx-

MiniportInterrupt-

MiniportInterruptDPC-

MiniportResetEx-

MiniportRestart-

MiniportReturnNetBufferLists

MiniportSendNetBufferLists

NDIS_MINIPORT_PAUSE_PARAMETERS

NET_BUFFER_LIST

NdisMIndicateReceiveNetBufferLists

NdisMIndicateStatusEx

NdisMPauseComplete

NdisMRegisterMiniportDriver-

NdisMSendNetBufferListsComplete

NetTimerCallback-