Registrieren eines Zwischentreibers als Miniporttreiber
Ein Zwischentreiber ruft NdisMRegisterMiniportDriver auf, um seine MiniportXxx-Funktionen zu exportieren. Das NdisMiniportDriverHandle , das von NdisMRegisterMiniportDriver zurückgegeben wird, muss vom Zwischentreiber und der Eingabe an NDIS beibehalten werden, wenn der Treiber NdisIMInitializeDeviceInstanceEx aufruft.
Der Zwischentreiber muss:
Initialisieren Sie eine NDIS_MINIPORT_DRIVER_CHARACTERISTICS-Struktur mit NdisZeroMemory.
Speichern Sie die Adressen der obligatorischen MiniportXxx-Funktionen sowie aller optionalen MiniportXxx-Funktionen , die der Treiber exportiert.
Ein Zwischentreiber, der NDIS 6.0-Features unterstützt, muss sich als Miniporttreiber der Version 6.0 registrieren. Weitere Informationen zum Angeben von Versionsnummern für Miniporttreiber finden Sie unter NDIS_MINIPORT_DRIVER_CHARACTERISTICS.
Sie müssen die folgenden Einträge in MiniportCharacteristics auf eine gültige MiniportXxx-Funktionsadresse festlegen, es sei denn, die Funktion ist optional und wird nicht exportiert. Wenn der Treiber die Funktion nicht exportiert, legen Sie die Adresse auf NULL fest.
SetOptionsHandler
MiniportSetOptions ist eine optionale Funktion. NDIS ruft MiniportSetOptions auf, damit der Zwischentreiber optionale Handler angeben kann.
InitializeHandlerEx
NDIS ruft MiniportInitializeEx auf, weil der Zwischentreiber NdisIMInitializeDeviceInstanceEx aufruft , um seine Miniportadaptervorgänge für den virtuellen Miniport zu initialisieren, der initialisiert wird.
HaltHandlerEx
MiniportHaltEx ist eine erforderliche Funktion. NDIS ruft MiniportHaltEx auf, wenn das virtuelle Miniportgerät, das der zwischengeschaltete Treiber verfügbar gemacht hat, deaktiviert oder angehalten wird, oder wenn der Zwischentreiber NdisIMDeInitializeDeviceInstance heißt, um seine Entfernung zu initiieren.
UnloadHandler
MiniportDriverUnload ist eine erforderliche Funktion. NDIS ruft MiniportDriverUnload auf, um den Zwischentreiber zu entladen.
PauseHandler
MiniportPause ist eine erforderliche Funktion. NDIS ruft MiniportPause auf, um den Fluss von Netzwerkdaten über einen angegebenen virtuellen Miniport des Zwischentreibers zu beenden.
RestartHandler
MiniportRestart ist eine erforderliche Funktion. NDIS ruft MiniportRestart auf, um den Fluss von Netzwerkdaten über einen angegebenen virtuellen Miniport des Zwischentreibers neu zu starten.
OidRequestHandler
MiniportOidRequest empfängt OID_XXX-Anforderungen , die von einem übergeordneten Treiber stammen, der NdisOidRequest oder von NDIS aufgerufen hat. Der Zwischentreiber kann eine Anforderung verarbeiten oder an den zugrunde liegenden Miniporttreiber übergeben.
SendNetBufferListsHandler
MiniportSendNetBufferLists empfängt ein Array von mindestens einem Zeiger auf NET_BUFFER_LIST Strukturen, die Netzwerkdaten für die Übertragung über das Netzwerk angeben. Jeder Zwischentreiber sollte eine MiniportSendNetBufferLists-Funktion bereitstellen. Weitere Informationen finden Sie unter Übertragen von Netzwerkdaten über einen Zwischentreiber.
ReturnNetBufferListsHandler
MiniportReturnNetBufferLists empfängt durch Aufrufen von NdisMIndicateReceiveNetBufferLists eine zurückgegebeneNET_BUFFER_LIST Struktur, die zuvor für einen Treiber auf höherer Ebene angegeben wurde. Der Aufruf von NdisMIndicateReceiveNetBufferLists übergibt die Steuerung der angegebenen Ressourcen an den Treiber auf höherer Ebene. Nachdem der Treiber auf höherer Ebene jede Anzeige verwendet hat, werden der NET_BUFFER_LIST Struktur zugeordnete Zwischentreiber und die darin beschriebenen Ressourcen an die MiniportReturnNetBufferLists-Funktion zurückgegeben.
CancelSendHandler
MiniportCancelSend ist eine erforderliche Funktion. NDIS ruft MiniportCancelSend auf, um eine Sendeanforderung abzubrechen.
CheckForHangHandler
MiniportCheckForHangEx ist für Zwischentreiber nicht erforderlich, daher sollte dieser Einstiegspunkt auf NULL festgelegt werden.
ResetHandlerEx
MiniportResetEx ist für Zwischentreiber nicht erforderlich, daher sollte dieser Einstiegspunkt auf NULL festgelegt werden.
DevicePnPEventNotifyHandler
Der Einstiegspunkt für die MiniportDevicePnPEventNotify-Funktion .
ShutdownHandlerEx
MiniportShutdownEx ist eine erforderliche Funktion. MiniportShutdownEx stellt den virtuellen Miniport in seinen Anfangszustand zurück (bevor die DriverEntry-Routine des zwischengeschalteten Treibers ausgeführt wird).
CancelOidRequestHandler
MiniportCancelOidRequest ist eine erforderliche Funktion. NDIS ruft MiniportCancelOidRequest auf, um eine OID-Anforderung abzubrechen.
Ein Zwischentreiber erfordert möglicherweise andere Implementierungsspezifische MiniportXxx-Funktionen . Informationen zum Registrieren optionaler Dienste finden Sie unter Konfigurieren optionaler Miniport-Treiberdienste.
Bestimmte Miniporttreiberhandlerfunktionen werden niemals von einem Zwischentreiber bereitgestellt. Gründe hierfür sind: Solche Treiber verwalten keine Unterbrechungsgeräte, oder solche Treiber weisen keine Puffer bei ausgelöstem IRQL zu.
Hinweis Zwischentreiber müssen die Funktionen zum Anhalten und Neustarten enthalten. Schließen Sie bei Bedarf Unterstützung für das Anhalten und Neustarten virtueller Miniports ein, wenn NDIS einen zugrunde liegenden Treiberstapel anhält. Weitere Informationen zum Anhalten und Neustarten finden Sie unter Treiberstapelverwaltung.