Freigeben über


MINIPORT_HALT Rückruffunktion (ndis.h)

NDIS ruft die MiniportHaltEx- funktion eines Miniporttreibers auf, um Ressourcen freizugeben, wenn ein Miniportadapter entfernt wird, und um die Hardware zu beenden. Mit dieser Funktion wird der Miniport in den Zustand "Angehalten" versetzt, in dem kein anderer Rückruf erfolgen kann (einschließlich MiniportShutdownEx). Weitere Informationen zu Miniport-Treiberzuständen finden Sie unter Miniport-Adapterzustände und -vorgänge.

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

Syntax

MINIPORT_HALT MiniportHalt;

void MiniportHalt(
  [in] NDIS_HANDLE MiniportAdapterContext,
  [in] NDIS_HALT_ACTION HaltAction
)
{...}

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] HaltAction

Der Grund für das Anhalten des Miniportadapters. Dabei kann es sich um einen der folgenden Werte handeln:

NdisHaltDeviceDisabled

NDIS hält den Miniportadapter als Reaktion auf eine Plug and Play-Nachricht (PnP) an.

NdisHaltDeviceInstanceDeInitialized

NDIS hält den Miniportadapter als Reaktion auf einen Zwischentreiber an, der die NdisIMDeInitializeDeviceInstance Funktion.

NdisHaltDevicePoweredDown

NDIS hält den Miniportadapter an, da das System in einen ruhenden Zustand versetzt wird.

NdisHaltDeviceSurpriseRemoved

Der Miniportadapter wurde überraschend entfernt, und die Hardware ist nicht vorhanden.

NdisHaltDeviceFailed

Der Miniportadapter wird aufgrund eines Hardwarefehlers entfernt. Entweder der Miniporttreiber namens NdisMRemoveMiniport Funktion oder ein Bustreiber hat die NIC beim Fortsetzen nicht eingeschaltet.

NdisHaltDeviceInitializationFailed

NDIS konnte den Miniportadapter aus einem unbekannten Grund nicht initialisieren, nachdem die funktion MiniportInitialize Ex erfolgreich abgeschlossen wurde.

NdisHaltDeviceStopped

NDIS hält den Miniportadapter als Reaktion auf eine PnP-Stoppgerätemeldung an.

Rückgabewert

Nichts

Bemerkungen

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

NDIS kann MiniportHaltEx- jederzeit aufrufen, nachdem die MiniportInitialize Ex-Funktion eines Treibers erfolgreich zurückgegeben wurde. Wenn der Treiber eine physische NIC steuert, sollte MiniportHaltEx- die NIC beenden. Wenn ein NDIS-Zwischentreiber den NdisIMDeInitializeDeviceInstance Funktion ruft NDIS die MiniportHaltEx--Funktion für das virtuelle Gerät des Treibers auf.

MiniportHaltEx müssen alle Ressourcen freigeben, die in MiniportInitializeEx- für ein Gerät zugeordnet wurden. MiniportHaltEx gibt auch alle anderen Ressourcen frei, die der Treiber in nachfolgenden Vorgängen für dieses Gerät zugeordnet hat. Der Treiber muss die Kehrkehre der NdisXxx Funktionen aufrufen, denen sie ursprünglich die Ressourcen zugeordnet hat. In der Regel sollte eine MiniportHaltEx-funktion die kehre NdisXxx--Funktionen umgekehrt aufrufen, um die Aufrufe des Treibers von MiniportInitializeEx.

Wenn eine NIC Unterbrechungen generiert, kann die MiniportHaltEx-funktion eines Miniporttreibers durch den MiniportInterrupt--Funktion des Fahrers vorbelastet werden, bis der MiniportHaltEx Aufruf an den NdisMDeregisterInterruptEx Funktion wird zurückgegeben. Die MiniportHaltEx--Funktion eines solchen Treibers sollte Unterbrechungen und Aufrufe deaktivieren. NdisMDeregisterInterruptEx so schnell wie möglich. Beachten Sie, dass ein Treiber Unterbrechungen erhalten kann, bis NdisMDeregisterInterruptEx zurück. NdisMDeregisterInterruptEx- wird erst zurückgegeben, wenn der Treiber alle geplanten DPCs abgeschlossen hat (weitere Informationen finden Sie im MiniportInterruptDPC Funktion).

Wenn der Treiber über eine NetTimerCallback--Funktion verfügt, die einem Timerobjekt zugeordnet ist, das sich in der Systemzeitgeberwarteschlange befinden könnte, sollte MiniportHaltEx- die NdisCancelTimerObject--Funktion aufrufen. Wenn NdisCancelTimerObject fehlschlägt, könnte der Timer bereits ausgelöst worden sein. In diesem Fall sollte der Treiber warten, bis die Timerfunktion abgeschlossen ist, bevor der Treiber von MiniportHaltExzurückgibt.

NDIS ruft MiniportHaltEx- nicht auf, wenn es ausstehende OID-Anforderungen oder Sendeanforderungen gibt. NDIS übermittelt keine weiteren Anforderungen für das betroffene Gerät nach NDIS-Aufrufen MiniportHaltEx.

Wenn der Treiber auf den Abschluss eines Vorgangs warten muss, kann MiniportHaltEx die funktion NdisWaitEvent oder die NdisMSleep-Funktion verwenden.

NDIS ruft MiniportHaltEx bei IRQL = PASSIVE_LEVEL auf.

beispiele für

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

MINIPORT_HALT MyHaltEx;

Implementieren Sie dann Ihre Funktion wie folgt:

_Use_decl_annotations_
VOID
 MyHaltEx(
    NDIS_HANDLE  MiniportAdapterContext,
    NDIS_HALT_ACTION  HaltAction
    )
  {...}

Der MINIPORT_HALT 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_HALT 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
DDI-Complianceregeln WlanAssociation, WlanConnectionRoaming, WlanDisassociation, WlanTimedAssociation, WlanTimedConnectionRoaming, WlanTimedConnectRequest, WlanTimedLinkQuality, WlanTimedScan

Siehe auch

Adapterzustände eines Miniporttreibers

Anhalten eines Miniportadapters

Miniportadapterzustände und -vorgänge

Miniport-Treiber zurücksetzen und anhalten

MiniportInitializeEx-

MiniportInterrupt-

MiniportInterruptDPC-

MiniportReturnNetBufferLists

NdisCancelTimerObject

NdisIMDeInitializeDeviceInstance

NdisMDeregisterInterruptEx

NdisMRegisterMiniportDriver-

NdisMRemoveMiniport

NdisMSleep

NdisWaitEvent

NetTimerCallback-