NdisIMRegisterLayeredMiniport-Funktion (ndis.h)
Hinweis NDIS 5. x ist veraltet und wird durch NDIS 6 ersetzt. x. Informationen zur Entwicklung neuer NDIS-Treiber finden Sie unter Netzwerktreiber ab Windows Vista. Informationen zum Portieren von NDIS 5. x Treiber für NDIS 6. x, siehe Portieren von NDIS 5.x-Treibern zu NDIS 6.0.
NdisIMRegisterLayeredMiniport registriert die MiniportXxx-Einstiegspunkte und den Namen eines Zwischentreibers bei der NDIS-Bibliothek, wenn der Treiber initialisiert.
Syntax
NDIS_STATUS NdisIMRegisterLayeredMiniport(
[in] NDIS_HANDLE NdisWrapperHandle,
[in] PNDIS_MINIPORT_CHARACTERISTICS MiniportCharacteristics,
[in] UINT CharacteristicsLength,
[out] PNDIS_HANDLE DriverHandle
);
Parameter
[in] NdisWrapperHandle
Gibt das von NdisMInitializeWrapper zurückgegebene Handle an.
[in] MiniportCharacteristics
Zeiger auf eine NDIS XX_MINIPORT_CHARACTERISTICS struktur, die vom Aufrufer eingerichtet wurde. Die Struktur bei MiniportCharacteristics ist wie folgt definiert:
typedef struct _NDIS_MINIPORT_CHARACTERISTICS {
UCHAR MajorNdisVersion;
UCHAR MinorNdisVersion;
UINT Reserved;
W_CHECK_FOR_HANG_HANDLER CheckForHangHandler;
W_DISABLE_INTERRUPT_HANDLER DisableInterruptHandler;
W_ENABLE_INTERRUPT_HANDLER EnableInterruptHandler;
W_HALT_HANDLER HaltHandler;
W_HANDLE_INTERRUPT_HANDLER HandleInterruptHandler;
W_INITIALIZE_HANDLER InitializeHandler;
W_ISR_HANDLER ISRHandler;
W_QUERY_INFORMATION_HANDLER QueryInformationHandler;
W_RECONFIGURE_HANDLER ReconfigureHandler;
W_RESET_HANDLER ResetHandler;
W_SEND_HANDLER SendHandler;
W_SET_INFORMATION_HANDLER SetInformationHandler;
W_TRANSFER_DATA_HANDLER TransferDataHandler;
//
// Version used is V4.0 or V5.0
// with following members
//
W_RETURN_PACKET_HANDLER ReturnPacketHandler;
W_SEND_PACKETS_HANDLER SendPacketsHandler;
W_ALLOCATE_COMPLETE_HANDLER AllocateCompleteHandler;
//
// Version used is V5.0 with the following members
//
W_CO_CREATE_VC_HANDLER CoCreateVcHandler;
W_CO_DELETE_VC_HANDLER CoDeleteVcHandler;
W_CO_ACTIVATE_VC_HANDLER CoActivateVcHandler;
W_CO_DEACTIVATE_VC_HANDLER CoDeactivateVcHandler;
W_CO_SEND_PACKETS_HANDLER CoSendPacketsHandler;
W_CO_REQUEST_HANDLER CoRequestHandler;
//
// Version used is V5.1 with the following members
//
W_CANCEL_SEND_PACKETS_HANDLER CancelSendPacketsHandler;
W_MINIPORT_PNPEVENTNOTIFY_HANDLER PnPEventNotifyHandler;
W_MINIPORT_SHUTDOWN_HANDLER AdapterShutdownHandler;
} NDIS_MINIPORT_CHARACTERISTICS, *PNDIS_MINIPORT_CHARACTERISTICS;
Ein NDIS-Zwischentreiber sollte diese Struktur mit Nullen initialisieren, bevor eines der folgenden Member eingerichtet wird:
MajorNdisVersion
Gibt die Hauptversion der NDIS-Bibliothek an, die der Treiber verwendet. Der aktuelle Wert ist 0x05, obwohl die NDIS-Bibliothek weiterhin vorhandene Miniporttreiber unterstützt, die für NDIS 4.0 entwickelt wurden.MinorNdisVersion
Gibt die Nebenversion der NDIS-Bibliothek an, die der Treiber verwendet. Der aktuelle Wert ist 0x00, obwohl NDIS weiterhin vorhandene Treiber unterstützt.Reserved
Dieses Element ist für die Systemverwendung reserviert.CheckForHangHandler
Gibt den Einstiegspunkt der MiniportCheckForHang-Funktion des Aufrufers (falls vorhanden) oder NULL an.DisableInterruptHandler
Gibt NULL an.EnableInterruptHandler
Gibt NULL an.HaltHandler
Gibt den Einstiegspunkt der MiniportHalt-Funktion des Aufrufers an.HandleInterruptHandler
Gibt NULL an.InitializeHandler
Gibt den Einstiegspunkt der MiniportInitialize-Funktion des Aufrufers an.ISRHandler
Gibt NULL an.QueryInformationHandler
Gibt den Einstiegspunkt der MiniportQueryInformation-Funktion des Aufrufers an.ReconfigureHandler
Gibt NULL an.ResetHandler
Gibt den Einstiegspunkt der MiniportReset-Funktion des Aufrufers an.SendHandler
Gibt den Einstiegspunkt der MiniportSend-Funktion des Aufrufers, der MiniportWanSend-Funktion oder null an, wenn der Aufrufer eine MiniportSendPackets-Funktion bereitstellt.Wenn der Treiber Multipacket-Senden oder medienspezifische Informationen unterstützt, legt er stattdessen das SendPacketsHandler-Element fest und legt dieses Element auf NULL fest.
SetInformationHandler Gibt den Einstiegspunkt der MiniportSetInformation-Funktion des Aufrufers an.
TransferDataHandler
Gibt den Einstiegspunkt der MiniportTransferData-Funktion des Aufrufers an, falls vorhanden, oder NULL. Diese Miniporttreiberfunktion ist erforderlich, es sei denn, der Aufrufer ist der Treiber einer WAN-NIC oder der Aufrufer unterstützt Multipacket empfängt und stellt daher den Einstiegspunkt seiner MiniportReturnPacket-Funktion unter ReturnPacketHandler bereit.ReturnPacketHandler
Gibt den Einstiegspunkt der MiniportReturnPacket-Funktion des Aufrufers an, falls vorhanden, oder NULL.SendPacketsHandler
Gibt den Einstiegspunkt der MiniportSendPackets-Funktion des Aufrufers an, falls vorhanden, oder NULL.AllocateCompleteHandler
Gibt NULL an.CoCreateVcHandler
Gibt NULL an.CoDeleteVcHandler
Gibt NULL an.CoActivateVcHandler
Gibt NULL an.CoDeactivateVcHandler
Gibt NULL an.CoSendPacketsHandler
Gibt NULL an.CoRequestHandler
Gibt NULL an.CancelSendPacketsHandler
Gibt den Einstiegspunkt der MiniportCancelSendPackets-Funktion des Aufrufers an, falls vorhanden, oder NULL. Zwischentreiber, die Pakete länger als eine Sekunde in die Warteschlange senden, sollten eine MiniportCancelSendPackets-Funktion registrieren.PnPEventNotifyHandler
Gibt den Einstiegspunkt der MiniportPnPEventNotify-Funktion des Aufrufers an. NDIS 5.1-Miniporttreiber müssen eine MiniportPnPEventNotify-Funktion registrieren. Miniporttreiber "", die über eine WDM-Unterkante verfügen, sollten eine MiniportPnPEventNotify-Funktion registrieren.AdapterShutdownHandler
Gibt den Einstiegspunkt der MiniportShutdown-Funktion des Aufrufers an, falls vorhanden, oder NULL. NDIS 5.1-Zwischentreiber müssen eine MiniportShutdown-Funktion registrieren. NDIS 5.1-Zwischentreiber sollten eine MiniportShutdown-Funktion registrieren, indem sie NdisIMRegisterLayeredMiniport --not by calling NdisMRegisterAdapterShutdownHandler.
[in] CharacteristicsLength
Gibt die Länge des vom Aufrufer bereitgestellten Merkmalspuffers in Bytes an. Abhängig vom Wert von MajorNdisVersion muss dieser Parameter entweder sizeof(NDIS50_MINIPORT_CHARACTERISTICS) sein, wenn der Treiber eine NDIS50_MINIPORT_CHARACTERISTICS-Struktur bereitstellt, oder sizeof(NDIS40_MINIPORT_CHARACTERISTICS), wenn der Treiber eine NDIS40_MINIPORT_CHARACTERISTICS-Struktur bereitstellt.
Wenn der Treiber die Buildanweisung NDIS50_MINIPORT (oder ggf. NDIS40_MINIPORT) in seine Quellen einschließt oder wenn der Treiberschreiber die -NDIS50_MINIPORT (oder .) verwendet. 40..) Compilerschalter, dieser Parameter wird festgelegt, wenn der Treiber erstellt wird.
[out] DriverHandle
Zeiger auf eine Variable, in der NdisIMRegisterLayeredMiniport bei erfolgreichem Aufruf ein Handle zurückgibt, das der Aufrufer speichern soll. Der Aufrufer muss dieses Handle anschließend an NdisIMInitializeDeviceInstance übergeben, normalerweise über seine ProtocolBindAdapter-Funktion .
Rückgabewert
NdisIMRegisterLayeredMiniport gibt NDIS_STATUS_SUCCESS zurück, wenn der Aufrufer als Miniporttreiber registriert wurde oder einer der folgenden status Werte zurückgegeben werden kann:
Rückgabecode | Beschreibung |
---|---|
NDIS_STATUS_BAD_CHARACTERISTICS | Die CharacteristicsLength ist zu klein für die MajorNdisVersion , die im Puffer bei MiniportCharacteristics angegeben ist. |
NDIS_STATUS_BAD_VERSION | Die in der Merkmalsstruktur angegebene MajorNdisVersion oder MajorNdisVersion ist ungültig. |
NDIS_STATUS_RESOURCES | Ein Mangel an Ressourcen, möglicherweise Arbeitsspeicher, verhinderte, dass die NDIS-Bibliothek den Aufrufer als Miniporttreiber registriert. |
NDIS_STATUS_FAILURE | Dies ist ein Standardfehler status, der zurückgegeben wird, wenn keiner der vorherigen Fehler dazu geführt hat, dass die Registrierung fehlschlägt. Wenn die NDIS-Bibliothek beispielsweise das Image des Treibers nicht laden und im Systemspeicher sperren kann, gibt sie diesen Fehler zurück. |
Hinweise
Jeder NDIS-Zwischentreiber, der sowohl MiniportXxx - als auch ProtocolXxx-Funktionen exportiert, richtet eine Merkmalsstruktur ein und ruft NdisIMRegisterLayeredMiniport von seiner DriverEntry-Funktion auf, nachdem DriverEntryNdisMInitializeWrapper aufgerufen hat. Diese Struktur wird in der NdisIMRegisterLayeredMiniport-Anforderung in den internen Speicher der NDIS-Bibliothek kopiert. Daher kann ein solcher Treiber nach der Registrierung seine Handlerfunktionen nicht mehr ändern.
Nachdem ein solcher NDIS-Zwischentreiber NdisIMRegisterLayeredMiniport erfolgreich aufgerufen hat, muss er NdisRegisterProtocol aufrufen, um seine ProtocolXxx-Funktionen bei der NDIS-Bibliothek zu registrieren. Ein solcher Treiber verfügt in der Regel über die Funktionen ProtocolBindAdapter und ProtocolUnbindAdapter . Die ProtocolBindAdapter-Funktion wird als Nächstes aufgerufen, wenn der zugrunde liegende NIC-Treiber erfolgreich initialisiert wurde. ProtocolBindAdapter kann dann mit NdisOpenAdapter eine Bindung an diesen NIC-Treiber einrichten.
Ein NDIS-Zwischentreiber sollte über eine MiniportSendPackets-Funktion verfügen, wenn ein zugrunde liegender NIC-Treiber Multipacketsendungen unterstützt oder medienspezifische Informationen wie Paketprioritäten nutzt, die in einem Paketarray aus einem Protokoll auf höherer Ebene gesendet werden. Ein NDIS-Zwischentreiber sollte über eine MiniportReturnPacket-Funktion verfügen, wenn ein zugrunde liegender NIC-Treiber Multipacket-Empfangsanzeigen unterstützt oder Paketarrays mit medienspezifischen Informationen angibt. Die NDIS-Bibliothek verarbeitet Paketarrays, die zwischen einem zugrunde liegenden NIC-Treiber und einem Protokoll auf höherer Ebene übertragen werden und nur Einzelpaketübertragungen im Namen eines solchen Zwischentreibers unterstützen.
- Zielplattform: Universell
- Version: Nicht unterstützt für NDIS 6.0-Treiber in Windows Vista. Verwenden Sie stattdessen NdisMRegisterMiniportDriver. Unterstützt für NDIS 5.1-Treiber in Windows Vista und Windows XP.
Anforderungen
Anforderung | Wert |
---|---|
Header | ndis.h (einschließlich Ndis.h) |
Bibliothek | Ndis.lib |
IRQL | PASSIVE_LEVEL |
Weitere Informationen
- DriverEntry of NDIS Miniport Drivers
- DriverEntry von NDIS-Protokolltreibern
- MiniportCheckForHang
- MiniportHalt
- MiniportInitialize
- MiniportQueryInformation
- MiniportReset
- MiniportReturnPacket
- MiniportSend
- MiniportSendPackets
- MiniportSetInformation
- MiniportTransferData
- MiniportWanSend
- NdisIMInitializeDeviceInstance
- NdisMRegisterAdapterShutdownHandler
- NdisMRegisterMiniport
- NdisOpenAdapter
- NdisRegisterProtocol
- NdisZeroMemory
- ProtocolBindAdapter
- ProtocolReceivePacket
- ProtocolUnbindAdapter
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für