Freigeben über


MSI-X Vorabregistrierung

Um das Ändern von Unterbrechungsaffinitäten für MSI-X oder das Entfernen von Nachrichtenunterbrechungsressourcen zu unterstützen, muss ein Miniporttreiber eine Filterfunktion für Ressourcenanforderungen einrichten. Dieser Schritt vor der Registrierung tritt auf, bevor NDIS die MiniportInitializeEx-Funktion aufruft.

Um eine Filterfunktion für Ressourcenanforderungen einzurichten, muss der Miniporttreiber eine MiniportOptions-Funktion bereitstellen. Wenn der Miniporttreiber die NdisMRegisterMiniportDriver-Funktion aus der DriverEntry-Routine aufruft, übergibt der Treiber den Einstiegspunkt für MiniportSetOptions in der NDIS_MINIPORT_DRIVER_CHARACTERISTICS-Struktur . NDIS ruft die MiniportSetOptions-Funktion im Kontext von NdisMRegisterMiniportDriver auf.

Von MiniportSetOptions ruft der Miniporttreiber die NdisSetOptionalHandlers-Funktion auf und gibt eine NDIS_MINIPORT_PNP_CHARACTERISTICS Struktur an. Diese Struktur definiert die Einstiegspunkte für die Funktionen MiniportAddDevice, MiniportRemoveDevice, MiniportStartDevice und MiniportFilterResourceRequirements .

Wenn NDIS eine Add-Device-Anforderung vom Plug and Play (PnP)-Manager empfängt, ruft NDIS die Miniport-Treiberfunktion MiniportAddDevice auf. Das Handle, das NDIS an MiniportAddDevice im MiniportAdapterHandle-Parameter übergibt, ist das Handle, das NDIS später an die MiniportInitializeEx-Funktion übergibt.

In MiniportAddDevice initialisiert der Treiber eine NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES Struktur und übergibt diese Struktur an die NdisMSetMiniportAttributes-Funktion . Die NDIS_MINIPORT_ADD_DEVICE_REGISTRATION_ATTRIBUTES-Struktur enthält das MiniportAddDeviceContext-Element , das ein Handle für einen vom Miniport-Treiber zugewiesenen Kontextbereich für das Gerät ist. NDIS stellt später dieses Kontexthandle für die Funktionen MiniportRemoveDevice, MiniportFilterResourceRequirements, MiniportStartDevice und MiniportInitializeEx bereit. Für MiniportInitializeEx wird das Kontexthandle im MiniportAddDeviceContext-Element der NDIS_MINIPORT_INIT_PARAMETERS Struktur übergeben, auf die der MiniportInitParameters-Parameter verweist.

Nachdem NDIS MiniportAddDevice und MiniportAddDevice NDIS_STATUS_SUCCESS aufgerufen haben, ruft NDIS die Funktion MiniportFilterResourceRequirements jedes Mal auf, wenn es das IRP_MN_FILTER_RESOURCE_REQUIREMENTS E/A-Anforderungspaket (IRP) empfängt. MiniportFilterResourceRequirements können die Unterbrechungsaffinität für jede MSI-X Nachricht ändern, Nachrichtenunterbruchressourcen hinzufügen oder Nachrichtenunterbruchressourcen entfernen, wenn der Treiber für zeilenbasierte Unterbrechungen in der MiniportInitializeEx-Funktion registriert wird. Weitere Informationen zum Einrichten einer Interrupt-Affinitätsrichtlinie finden Sie unter MSI-X Ressourcenfilterung.

Wenn NDIS eine Remove-Device-Anforderung vom PnP-Manager empfängt, ruft NDIS die MiniportRemoveDevice-Funktion des Miniporttreibers auf. Die MiniportRemoveDevice-Funktion sollte die Vorgänge rückgängigmachen, die von der MiniportAddDevice-Funktion ausgeführt wurden.