Freigeben über


MINIPORT_RESET Rückruffunktion (ndis.h)

Warnung

Die MiniportResetEx- und MiniportCheckForHangEx- Rückruffunktionen werden für alle NDIS 6.83- und höher-Treiber abgeraten. Weitere Informationen finden Sie unter Check-for-Hang- und Reset-Vorgänge in NDIS 6.83 und höher.

NDIS ruft die MiniportResetEx-Funktion eines NDIS-Miniport-Treibers auf, um eine Zurücksetzung einer Netzwerkschnittstellenkarte (NIC) zu initiieren. Weitere Informationen finden Sie unter Miniport Adapter Check-for-Hang and Reset Operations und Miniport Driver Hardware Reset.

Hinweis Ein NDIS-Miniporttreiber kann diese Funktion mithilfe des MINIPORT_RESET Typs deklarieren.
 

Syntax

MINIPORT_RESET MiniportReset;

NDIS_STATUS MiniportReset(
  [in]  NDIS_HANDLE MiniportAdapterContext,
  [out] PBOOLEAN AddressingReset
)
{...}

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.

[out] AddressingReset

Ein Zeiger auf eine boolesche Variable. Der Miniporttreiber legt diese Variable auf TRUE fest, wenn NDIS die MiniportOidRequest- funktion aufrufen soll, um die Adressierung und andere Konfigurationseinstellungen auf die aktuellen Werte wiederherzustellen. Weitere Informationen finden Sie unter Hardwarezurücksetzung.

Rückgabewert

MiniportResetEx- kann einen der folgenden Statuswerte zurückgeben:

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS

MiniportResetEx den Miniportadapter erfolgreich auf einen Betriebszustand zurückzusetzen.

NDIS_STATUS_PENDING
Der Treiber führt den Zurücksetzungsvorgang asynchron durch Aufrufen der NdisMResetComplete-Funktion aus, wenn der Vorgang abgeschlossen ist.
NDIS_STATUS_RESET_IN_PROGRESS

MiniportResetEx festgestellt, dass der Miniportadapter zurzeit zurückgesetzt wurde, sodass dieser Aufruf überflüssig ist.

NDIS_STATUS_SOFT_ERRORS
MiniportResetEx den Miniportadapter erfolgreich zurückzusetzen, während des Vorgangs ist jedoch ein wiederherstellbarer Fehler aufgetreten. MiniportResetEx- sollte den NdisWriteErrorLogEntry Funktion mit weiteren Informationen zum Fehler aufgerufen haben.
NDIS_STATUS_HARD_ERRORS
MiniportResetEx versucht, den Miniportadapter zurückzusetzen, aber während des Vorgangs ist ein nicht behebbarer Fehler aufgetreten. MiniportResetEx- sollte NdisWriteErrorLogEntry- mit weiteren Informationen zum Fehler aufgerufen haben.

Bemerkungen

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

MiniportResetEx- ist für Zwischentreiber nicht erforderlich.

MiniportResetEx- können die Parameter des Miniportadapters zurücksetzen. Wenn ein Zurücksetzen eine Änderung der Stationnadresse des Miniportadapters verursacht, stellt der Miniporttreiber automatisch den vorherigen Wert der Stationadresse wieder her, nachdem die Zurücksetzung abgeschlossen ist. Alle Multicast- oder funktionalen Adressierungsmasken, die von der Hardware zurückgesetzt werden, müssen in dieser Funktion nicht zurückgesetzt werden.

Wenn ein Zurücksetzungsvorgang andere Informationen ändert, z. B. Multicast- oder funktionale Adressierungsinformationen, muss MiniportResetEx- die Variable bei AddressingReset- auf TRUE- festlegen, bevor sie zurückgegeben wird. Dadurch ruft NDIS die MiniportOidRequest Funktion auf, um die Informationen wiederherzustellen. NDIS stellt auch die Wake on the LAN (WoL)-Musterliste wieder her, indem OID_PNP_ADD_WAKE_UP_PATTERNaufgerufen wird. Der Treiber sollte die WoL-Musterliste aus dem Adapterkontext freigeben, da die Hardwareliste bereits zurückgesetzt wird.

NDIS bricht keine ausstehenden OID-Anforderungen ab oder sendet Anforderungen. Wenn der Treiber ausstehende OID-Anforderungen sicher abschließen oder Anforderungen nach dem Zurücksetzen senden kann, kann der Treiber ausstehende OID halten oder Anforderungen senden, bis der Rücksetzungsvorgang abgeschlossen ist. Andernfalls sollte der Treiber das ausstehende OID ausführen oder Anforderungen senden, indem die NdisMOidRequestComplete- oder NdisMSendNetBufferListsComplete Funktionen bzw. funktionen, bevor MiniportResetEx zurückgibt.

Hinweis Ab NDIS 6.30 darf der Miniporttreiber OID nicht halten oder Anforderungen senden, bis der Rücksetzvorgang abgeschlossen ist. Stattdessen muss der Treiber diese ausstehenden Anforderungen ausführen, indem die NdisMOidRequestComplete oder NdisMSendNetBufferListsComplete- Funktionen bzw. funktionen aufgerufen werden, bevor der Zurücksetzungsvorgang abgeschlossen ist. Wenn der Treiber den Zurücksetzungsvorgang asynchron abgeschlossen hat, muss er ausstehende OID ausführen und Anforderungen senden, bevor der Treiber NdisMResetCompleteaufruft.
 
Ein Miniporttreiber sollte den NdisMIndicateStatusEx--Funktion nicht aufrufen, um den Start und das Ende der einzelnen Zurücksetzungsvorgänge zu signalisieren. NDIS benachrichtigt gebundene Protokolltreiber, wenn ein Zurücksetzen beginnt und endet.

Wenn MiniportResetEx- während des Zurücksetzens auf Zustandsänderungen im Miniportadapter warten muss, kann sie die NdisStallExecution-Funktion aufrufen. Ein
MiniportResetEx-Funktion darf nicht NdisStallExecution- mit einem Zeitintervall aufrufen, das größer als 50 Mikrosekunden ist. Wenn der Treiber länger als 50 Mikrosekunden warten muss (oder wenn er abfragen würde), sollte er stattdessen einen Timer festlegen und NDIS_STATUS_PENDING zurückgeben.

Wenn MiniportResetEx NDIS_STATUS_PENDING zurückgibt, muss der Treiber die Zurücksetzung abschließen, indem die funktion NdisMResetComplete aufgerufen wird.

Wenn sich ein Miniportadapter im MediaConnectstateConnected Zustand befindet und sich aufgrund einer Zurücksetzung ändert, einschließlich einer Änderung an der MediaConnectStateUnknown Zustand, muss der Miniporttreiber die Zustandsänderung mit einer NDIS_STATUS_LINK_STATE Statusanzeige melden. Der Miniporttreiber muss auch einen MediaConnectStateConnected Statusanzeige angeben, wenn der Link nach dem Zurücksetzen neu eingerichtet wird.

MiniportResetEx- kann durch einen Interrupt vorgedrängt werden.

NDIS ruft die MiniportCheckForHangEx--Funktion regelmäßig auf, um festzustellen, ob MiniportResetEx-aufgerufen werden soll. Das Standardtimeout für das Aufrufen von MiniportCheckForHangEx- beträgt 2 Sekunden. Wenn dieser Standardwert zu kurz ist, kann ein Miniporttreiber beim Aufrufen des CheckForHangTimeInSeconds-Werts einen größeren CheckForHangTimeInSeconds-Wert festlegen.
NdisMSetMiniportAttributes Funktion während der Initialisierung. Weitere Informationen finden Sie unter MiniportAdapter Check-for-Hang and Reset Operations.

NDIS kann nicht ermitteln, ob eine NIC für Empfangsvorgänge nicht mehr reagiert hat. Um diese Art von Fehler zu behandeln, kann die MiniportCheckForHangEx--Funktion Empfangsvorgänge überwachen und bei Bedarf TRUE- zurückgeben, um eine Zurücksetzung zu erzwingen. Ein Miniport kann auch eine Zurücksetzung anfordern, indem NdisMResetMiniportaufgerufen wird.

NDIS ruft MiniportResetEx- bei IRQL-<= DISPATCH_LEVEL auf.

beispiele für

Um eine MiniportResetEx--Funktion zu definieren, müssen Sie zuerst eine Funktionsdeklaration bereitstellen, 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 MiniportResetEx--Funktion zu definieren, die den Namen "MyResetEx" hat, verwenden Sie den MINIPORT_RESET Typ, wie in diesem Codebeispiel gezeigt:

MINIPORT_RESET MyResetEx;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
NDIS_STATUS
 MyResetEx(
    NDIS_HANDLE  MiniportAdapterContext,
    PBOOLEAN  AddressingReset
    )
  {...}

Der MINIPORT_RESET 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_RESET 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- <= DISPATCH_LEVEL

Siehe auch

Miniport adapter Check-for-Hang and Reset Operations

Hardwarezurücksetzung des Miniporttreibers

MiniportCheckForHangEx

MiniportInitializeEx-

MiniportOidRequest-

NDIS_STATUS_LINK_STATE

NdisMIndicateStatusEx

NdisMOidRequestComplete

NdisMRegisterMiniportDriver-

NdisMResetComplete-

NdisMResetMiniport

NdisMSendNetBufferListsComplete

NdisMSetMiniportAttributes

NdisStallExecution

NdisWriteErrorLogEntry-