Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein NDIS Miniport-Treiber muss eine MiniportHaltEx-Funktion an NdisMRegisterMiniportDriver übergeben.
MiniportHaltEx sollte alles rückgängig machen, was MiniportInitializeEx getan hat. Der NDIS-Miniport-Treiber könnte zum Beispiel:
Kostenlose Ports. (Weitere Informationen finden Sie unter Freigeben eines NDIS-Port.)
Geben Sie alle Hardwareressourcen frei, die MiniportInitializeEx beansprucht haben.
Interrupt-Ressourcen freigeben durch Aufruf von NdisMDeregisterInterruptEx.
Geben Sie den Arbeitsspeicher frei, der von MiniportInitializeEx zugewiesen wurde.
Beenden Sie die NIC, es sei denn, die MiniportShutdownEx--Funktion hat die NIC bereits in den Anfangszustand wiederhergestellt.
Das folgende Diagramm veranschaulicht das Entladen eines Miniporttreibers.
MiniportHaltEx sollte die Operationen abschließen, die zum Entladen des Treibers erforderlich sind, bevor er zurückkehrt. Wenn der Miniport-Treiber noch ausstehende Empfangsmeldungen hat (d.h. empfangene Netzwerkdaten, die er an NDIS gemeldet hat, die aber noch nicht zurückgegeben wurden), darf MiniportHaltEx erst zurückkehren, wenn diese Daten an die Funktion MiniportReturnNetBufferLists des Miniport-Treibers zurückgegeben wurden.
Die obige Abbildung zeigt eine Reihe von Aufrufen, die von einer MiniportHaltEx--Funktion ausgeführt werden können. Diese Anrufe sind nur eine Teilmenge der Anrufe, die getätigt werden können. Das tatsächliche Set von Aufrufen hängt von früheren Aktionen des Miniport-Treibers ab. Der Miniporttreiber kann diese Aufrufe in MiniportInitializeEx ausführen, wenn er den Netzwerkadapter aufgrund von Hardwareproblemen nicht erfolgreich initialisieren kann oder weil er keine ressource abrufen kann, die er benötigt. In einem solchen Fall sollte MiniportInitializeEx den Treiber entladen, indem es seine vorherigen Aktionen rückgängig macht. Andernfalls wird MiniportHaltEx die Aktionen von MiniportInitializeExrückgängig machen.
In der folgenden Liste werden die Aufrufe beschrieben, die zum Umkehren bestimmter Aktionen erforderlich sind, die der Miniporttreiber ausführen kann:
Wenn der Miniporttreiber einen Interrupt registriert hat, sollte er NdisMDeregisterInterruptExaufrufen.
Wenn der Miniporttreiber einen Timer oder mehrere Timer eingerichtet hat, sollte er NdisCancelTimerObject- für jeden von ihm erstellten Timer aufrufen. Wenn ein Aufruf von NdisCancelTimerObject fehlschlägt, wurde der Timer möglicherweise bereits ausgelöst. In diesem Fall sollte der Miniport-Treiber warten, bis der Handler für den Timer abgeschlossen ist, bevor er von MiniportHaltEx zurückkehrt.
Wenn der Miniporttreiber Speicher mit NdisAllocateMemoryWithTagPriority-zugewiesen hat, sollte er NdisFreeMemory- aufrufen, um diesen Speicher freizugeben.
Wenn der Miniporttreiber Speicher mit NdisMAllocateSharedMemoryoder NdisMAllocateSharedMemoryAsyncExzugewiesen hat, sollte er NdisMFreeSharedMemory aufrufen, um diesen Speicher freizugeben.
Wenn der Miniporttreiber Speicher für einen Pool von Paketdeskriptoren mit NdisAllocateNetBufferPoolzugewiesen und initialisiert hat, sollte er NdisFreeNetBufferPool aufrufen, um diesen Speicher freizugeben.
Wenn der Miniporttreiber Hardwareressourcen zugewiesen oder reserviert hat, sollten diese zurückgegeben werden. Wenn der Miniporttreiber z. B. einen E/A-Portbereich einer NIC zugeordnet hat, sollte er durch Aufrufen von NdisMDeregisterIoPortRangedie Ports freigeben.
Verwandte Themen
Adapter-Status eines Miniport-Treibers
Stoppen eines Miniportadapters