Freigeben über


MINIPORT_RESTART Rückruffunktion (ndis.h)

Die MiniportRestart--Funktion initiiert eine Neustartanforderung für einen angehaltenen Miniportadapter.

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

Syntax

MINIPORT_RESTART MiniportRestart;

NDIS_STATUS MiniportRestart(
  [in] NDIS_HANDLE MiniportAdapterContext,
       PNDIS_MINIPORT_RESTART_PARAMETERS RestartParameters
)
{...}

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.

RestartParameters

Ein Zeiger auf einen NDIS_MINIPORT_RESTART_PARAMETERS Struktur, die die Neustartparameter für den Miniportadapter definiert.

Rückgabewert

MiniportRestart- gibt einen der folgenden Statuswerte zurück:

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS

MiniportRestart den Netzwerkdatenfluss erfolgreich über den Miniportadapter neu gestartet.

NDIS_STATUS_PENDING
MiniportRestart den Neustartvorgang nicht abgeschlossen und der Vorgang wird asynchron abgeschlossen. Der Miniporttreiber muss die NdisMRestartComplete- Funktion aufrufen, wenn der Vorgang abgeschlossen ist.
NDIS_STATUS_RESOURCES

MiniportRestart aufgrund unzureichender Ressourcen fehlgeschlagen.

NDIS_STATUS_FAILURE
Keines der vorherigen Statuswerte gilt. In diesem Fall sollte der Treiber die NdisWriteErrorLogEntry Funktion mit Parametern aufrufen, die den Grund für den Fehler angeben.

Bemerkungen

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

Der Miniportadapter, der durch den Parameter MiniportAdapterContext angegeben wird, gibt den Zustand Restarting ein, wenn NDIS MiniportRestart-aufruft.

Wenn NDIS MiniportRestart-aufruft, ist ein Miniporttreiber:

  • Muss alle Aufgaben ausführen, die zum Fortsetzen von Sende- und Empfangsvorgängen erforderlich sind.
  • Ändert optional die Neustartattribute, die im RestartAttributes Member des NDIS_MINIPORT_RESTART_PARAMETERS Struktur. Wenn der Zeiger in RestartAttributesNULL-ist, sollte der Miniporttreiber die Liste der Neustartattribute nicht ändern oder hinzufügen. Wenn der Zeiger in RestartAttributes nichtNULL-ist, verweist er auf eine NDIS_RESTART_ATTRIBUTES Struktur. Wenn ein Miniporttreiber nicht neu gestartet wird, sollte er keine Attribute ändern.
  • Kann Statusanzeigen mit dem NdisMIndicateStatusEx--Funktion.
  • Sollte Statusanforderungen in der MiniportOidRequest--Funktion behandeln.
Wenn ein Miniporttreiber die Liste der Neustartattribute ändert, wird der Miniporttreiber:
  • Kann der Liste der Neustartattribute neue medienspezifische Attribute hinzufügen. In diesem Fall muss der Miniporttreiber einen neuen Zuordnen NDIS_RESTART_ATTRIBUTES Struktur, z. B. mit der NdisAllocateMemoryWithTagPriority Funktion und bieten Speicherplatz für die neuen Attribute. Nachdem NDIS die Neustartattribute an überlastende Treiber verteilt hat, gibt NDIS den Attributespeicher für die Miniporttreiber frei.
  • Kann die medienspezifischen Attribute in der Liste der Neustartattribute ändern. Wenn der Miniporttreiber mehr Speicherplatz benötigt, kann er eine NDIS_RESTART_ATTRIBUTES Struktur mit der NdisFreeMemory--Funktion freigeben und eine neue Struktur zuweisen, um die geänderten Informationen zu enthalten. Nachdem NDIS die Neustartattribute an überlastende Treiber verteilt hat, gibt NDIS den Attributespeicher für die Miniporttreiber frei.
  • Kann ein beliebiges Feld im NDIS_RESTART_GENERAL_ATTRIBUTES Struktur. Wenn NDIS einen Nicht-NULL- Zeiger im RestartAttributes Member des NDIS_MINIPORT_RESTART_PARAMETERS Struktur enthält die Attributliste einen Eintrag, in dem das Oid-Element in der NDIS_RESTART_ATTRIBUTES-Struktur OID_GEN_MINIPORT_RESTART_ATTRIBUTES und das element Data enthält eine NDIS_RESTART_GENERAL_ATTRIBUTES Struktur.
  • Stellen Sie sicher, dass die NDIS_RESTART_GENERAL_ATTRIBUTES Struktur enthält die richtigen Informationen. Um sicherzustellen, dass die NDIS_RESTART_GENERAL_ATTRIBUTES Struktur die erforderlichen Informationen enthält, sollten Sie zuerst die Version der Struktur bestimmen, indem Sie das Element Revision in der struktur NDIS_OBJECT_HEADER überprüfen, die im Header- Element der NDIS_RESTART_GENERAL_ATTRIBUTES Struktur angegeben ist.
NDIS initiiert keine anderen Plug-and-Play-Vorgänge (PnP) für den Miniportadapter, z. B. Anhalten, Initialisieren, Stromänderung oder eine Pausenanforderung, bis der Neustartvorgang abgeschlossen ist.

Nachdem der Miniporttreiber die Sende- und Empfangsvorgänge erfolgreich neu gestartet hat, muss er den Neustartvorgang abschließen. Wenn der Treiber NDIS_STATUS_SUCCESS von MiniportRestart-zurückgibt, ist der Neustartvorgang abgeschlossen. Wenn der Treiber NDIS_STATUS_PENDING zurückgibt, kann der Neustartvorgang fortgesetzt werden. Der Neustartvorgang ist abgeschlossen, nachdem der Treiber die NdisMRestartComplete--Funktion aufruft. Nach Abschluss des Neustartvorgangs befindet sich der Miniportadapter im Zustand Ausführen.

Der Miniporttreiber kann fortgesetzt werden, um empfangene Pakete für den Miniportadapter unmittelbar nach NDIS-Aufrufen MiniportRestart- und bevor der Treiber NdisMRestartCompleteaufruft. Der Miniporttreiber sollte bereit sein, Sendeanforderungen zu akzeptieren, nachdem der Treiber die Neustartanforderung abgeschlossen hat.

Wenn der Miniporttreiber die Sende- und Empfangsvorgänge nicht neu startet, muss der Treiber einen geeigneten Fehlerstatus von MiniportRestartzurückgeben. In diesem Fall muss der Treiber alle Sende- oder Empfangsvorgänge beenden, die gestartet wurden, und dann zum Zustand Angehalten zurückkehren.

NDIS ruft MiniportRestart- bei IRQL = PASSIVE_LEVEL auf.

beispiele für

Um eine MiniportRestart--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 MiniportRestart--Funktion zu definieren, die den Namen "MyRestart" hat, verwenden Sie den MINIPORT_RESTART Typ, wie in diesem Codebeispiel gezeigt:

MINIPORT_RESTART MyRestart;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
NDIS_STATUS
 MyRestart(
    NDIS_HANDLE  MiniportAdapterContext,
    PNDIS_MINIPORT_RESTART_PARAMETERS  RestartParameters
    )
  {...}

Der MINIPORT_RESTART 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_RESTART 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

MiniportInitializeEx-

MiniportOidRequest-

MiniportPause-

NDIS_MINIPORT_RESTART_PARAMETERS

NDIS_OBJECT_HEADER

NDIS_RESTART_ATTRIBUTES

NDIS_RESTART_GENERAL_ATTRIBUTES NdisAllocateMemoryWithTagPriority

NdisFreeMemory

NdisMIndicateStatusEx

NdisMRegisterMiniportDriver-

NdisMRestartComplete-

NdisWriteErrorLogEntry-

OID_GEN_MINIPORT_RESTART_ATTRIBUTES