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.
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 |
---|---|
|
MiniportResetEx den Miniportadapter erfolgreich auf einen Betriebszustand zurückzusetzen. |
|
Der Treiber führt den Zurücksetzungsvorgang asynchron durch Aufrufen der NdisMResetComplete-Funktion aus, wenn der Vorgang abgeschlossen ist. |
|
MiniportResetEx festgestellt, dass der Miniportadapter zurzeit zurückgesetzt wurde, sodass dieser Aufruf überflüssig ist. |
|
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. |
|
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.
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
NdisMSendNetBufferListsComplete