NdisMRegisterInterruptEx-Funktion (ndis.h)

NDIS-Miniporttreiber rufen die NdisMRegisterInterruptEx-Funktion auf, um einen Interrupt zu registrieren.

Syntax

NDIS_STATUS NdisMRegisterInterruptEx(
  [in]  NDIS_HANDLE                              MiniportAdapterHandle,
  [in]  NDIS_HANDLE                              MiniportInterruptContext,
  [in]  PNDIS_MINIPORT_INTERRUPT_CHARACTERISTICS MiniportInterruptCharacteristics,
  [out] PNDIS_HANDLE                             NdisInterruptHandle
);

Parameter

[in] MiniportAdapterHandle

Das Miniportadapterhandle, das NDIS an den übergeben hat MiniportInitializeEx-Funktion .

[in] MiniportInterruptContext

Ein Zeiger auf einen Block von Kontextinformationen. Der Miniporttreiber ordnet diesen Speicher zu, um Informationen zum Interrupt zu speichern. NDIS übergibt den Kontextinformationsblock in nachfolgenden Aufrufen an andere Funktionen, die dem Interrupt zugeordnet sind.

[in] MiniportInterruptCharacteristics

Ein Zeiger auf eine NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS Struktur, die vom Miniporttreiber erstellt wurde. Der Treiber initialisiert diese Struktur mit Handlereinstiegspunkten und Konfigurationsparametern, die die Interruptmerkmale definieren.

[out] NdisInterruptHandle

Ein Zeiger auf ein NDIS-Handle. NDIS schreibt das Handle für das neu erstellte Interruptobjekt in die Adresse, die der NdisInterruptHandle-Zeiger angibt.

Rückgabewert

NdisMRegisterInterruptEx kann einen der folgenden Werte zurückgeben:

Rückgabecode Beschreibung
NDIS_STATUS_SUCCESS
NDIS hat das Interruptobjekt initialisiert und ein gültiges Interrupthandle bei NdisInterruptHandle bereitgestellt. NDIS beanspruchte Hardwareressourcen und richtete die Funktionen ein, die aufgerufen werden, wenn ein Interrupt auftritt.
NDIS_STATUS_RESOURCES
Fehler bei NdisMRegisterInterruptEx aufgrund unzureichender Ressourcen.
NDIS_STATUS_XXX oder NT_STATUS_XXX
Der Versuch, das Interruptobjekt zu initialisieren, ist aus anderen Gründen als denen in der vorherigen Liste fehlgeschlagen.

Hinweise

Ein Miniporttreiber muss NdisMRegisterInterruptEx über seine MiniportInitializeEx-Funktion aufrufen, wenn er eine NIC verwaltet, die Interrupts generiert.

MiniportInitializeEx muss aufrufen NdisMSetMiniportAttributes-Funktion vor dem Aufruf von NdisMRegisterInterruptEx.

Der Miniporttreiber muss Einstiegspunkte für die folgenden Interruptdienstfunktionen angeben:

MiniportInterrupt

MiniportInterruptDPC

MiniportDisableInterruptEx

MiniportEnableInterruptEx

Wenn die NIC MSI (Message-Signaled Interrupts) unterstützt, sollte der Miniporttreiber Einstiegspunkte für die folgenden MSI-Dienstfunktionen angeben:

MiniportMessageInterrupt

MiniportMessageInterruptDPC MiniportDisableMessageInterrupt MiniportEnableMessageInterrupt

Wenn ein Treiber Einstiegspunkte für MSI angibt, muss er auch Einstiegspunkte für die Nicht-MSI-Interruptdienstfunktionen angeben. Wenn NdisMRegisterInterruptEx NDIS_STATUS_SUCCESS zurückgibt, muss der Treiber außerdem den Wert des InterruptType-Elements des NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS Struktur, um den Typ der NDIS gewährten Interrupts zu bestimmen. Wenn NDIS keine MSI-Unterstützung gewähren kann, wird unterstützung für leitungsbasierte Interrupts gewährt.

Wenn Interrupts auf der NIC aktiviert sind, kann die MiniportInterrupt(oder MiniportMessageInterrupt)-Funktion eines Treibers jederzeit aufgerufen werden, nachdem der Treiber NdisMRegisterInterruptEx aufgerufen hat, auch bevor NdisMRegisterInterruptEx zurückgegeben wird. Daher sollte ein Treiber NdisMRegisterInterruptEx erst aufrufen, wenn er bereit ist, einen Interrupt zu verarbeiten.

Treiber rufen die NdisMDeregisterInterruptEx-Funktion zum Freigeben von Ressourcen, die zuvor NdisMRegisterInterruptEx zugeordnet wurden.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt in NDIS 6.0 und höher.
Zielplattform Universell
Header ndis.h (include Ndis.h)
Bibliothek Ndis.lib
IRQL PASSIVE_LEVEL
DDI-Complianceregeln Init_DeRegisterInterrupt(ndis), Init_RegisterInterrupt(ndis), Irql_Interrupt_Function(ndis), NdisMDeregisterInterruptEx(ndis)

Weitere Informationen

MiniportDisableInterruptEx

MiniportDisableMessageInterrupt

MiniportEnableInterruptEx

MiniportEnableMessageInterrupt

MiniportInitializeEx

MiniportInterrupt

MiniportInterruptDPC

MiniportMessageInterrupt

MiniportMessageInterruptDPC

NDIS_MINIPORT_INTERRUPT_CHARACTERISTICS

NdisMDeregisterInterruptEx

NdisMSetMiniportAttributes