NetDmaRegisterProvider-Funktion (netdma.h)

Hinweis Die NetDMA-Schnittstelle wird nicht unterstützt.

in Windows 8 und höher.

 
Die NetDmaRegisterProvider-Funktion registriert einen DMA-Anbieter.

Syntax

NET_DMA_EXPORT NTSTATUS NetDmaRegisterProvider(
  [in] PVOID                             ProviderContext,
  [in] PVOID                             *pNetDmaProviderHandle,
  [in] PNET_DMA_PROVIDER_CHARACTERISTICS ProviderCharacteristics
);

Parameter

[in] ProviderContext

Ein Zeiger auf einen Block mit vom Treiber zugewiesenen Kontextinformationen, der Informationen zum DMA-Anbieter speichert. NetDMA übergibt die Kontextinformationen in nachfolgenden Aufrufen von Anbieter-Xxx-Funktionen, die einen DMA-Anbieterkontext erforderten.

[in] pNetDmaProviderHandle

Ein Zeiger auf einen Wert, bei dem es sich um ein Handle handelt, das NetDmaRegisterProvider zur Identifizierung des DMA-Anbieters bereitstellt. Der DMA-Anbietertreiber übergibt dieses Handle an NetDmaXxx-Funktionen , die ein Anbieterhandle erfordern.

[in] ProviderCharacteristics

Ein Zeiger auf eine NET_DMA_PROVIDER_CHARACTERISTICS Struktur, die die Merkmale des DMA-Anbieters definiert.

Rückgabewert

NetDmaRegisterProvider kann einen der folgenden Werte zurückgeben:

Rückgabecode Beschreibung
STATUS_SUCCESS
Der Vorgang wurde erfolgreich abgeschlossen.
STATUS_RESOURCES
Der Vorgang ist aufgrund unzureichender Ressourcen fehlgeschlagen.
STATUS_UNSUCCESSFUL
Der Vorgang ist aus nicht angegebenen Gründen fehlgeschlagen.

Hinweise

DMA-Anbietertreiber rufen die NetDmaRegisterProvider-Funktion auf, um einen DMA-Anbieter zu registrieren. DMA-Anbietertreiber rufen NetDmaRegisterProvider in ihrer AddDevice-Routine auf.

In der AddDevice-Routine ruft der DMA-Anbietertreiber die IoCreateDevice-Funktion auf, um ein funktionales Geräteobjekt (Functional Device Object, FDO) zu erstellen, und fügt es am Anfang des Gerätestapels ein. Der DMA-Anbietertreiber ruft dann NetDmaRegisterProvider auf, um den zugeordneten DMA-Anbieter zu registrieren.

Der DMA-Anbietertreiber stellt ein NET_DMA_PROVIDER_CHARACTERISTICS Struktur am ProviderCharacteristics-Parameter von NetDmaRegisterProvider. Die NET_DMA_PROVIDER_CHARACTERISTICS-Struktur gibt die Merkmale für einen NetDMA-Anbieter an, einschließlich der Einstiegspunkte für die ProviderXxx-Funktionen .

Der DMA-Anbietertreiber stellt einen Zeiger auf einen Block von vom Treiber zugeordneten Kontextinformationen im ProviderContext-Parameter von NetDmaRegisterProvider bereit. In diesem Kontextbereich werden Informationen zum DMA-Anbieter gespeichert. Die NetDMA-Schnittstelle übergibt die Kontextinformationen in nachfolgenden Aufrufen von ProviderXxx-Funktionen , die einen DMA-Anbieterkontext erfordern.

Wenn NetDmaRegisterProvider zurückgibt, stellt er ein Handle an dem Speicherort bereit, den der Parameter pNetDmaProviderHandle angibt. Die NetDMA-Schnittstelle weist dieses Handle zu, um den DMA-Anbieter zu identifizieren. Der DMA-Anbietertreiber verwendet dieses Handle bei allen nachfolgenden Aufrufen von NetDmaXxx-Funktionen , die dem DMA-Anbieter zugeordnet sind.

Wenn ein Computer MSI-X unterstützt, ruft die NetDMA-Schnittstelle im Kontext der NetDmaRegisterProvider-Funktion den DMA-Anbietertreiber auf. ProviderSetDmaChannelCpuAffinity-Funktion , um die CPU-Affinität des Interrupts für jeden DMA-Kanal anzugeben.

Wenn ein Computer MSI-X unterstützt, kann der DMA-Anbietertreiber Interruptaffinitäten angeben, während IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP. Nachdem die AddDevice-Routine erfolgreich zurückgegeben wurde, sendet der Plug & Play-Manager (PnP) den IRP_MN_FILTER_RESOURCE_REQUIREMENTS IRP für den DMA-Anbieter. Der DMA-Anbietertreiber muss versuchen, MSI-X-Interruptressourcen entsprechend den Affinitätsparametern zuzuordnen, die die NetDMA-Schnittstelle an ProviderSetDmaChannelCpuAffinity übergeben hat.

Um die Registrierung eines DMA-Anbieters aufzuheben, ruft ein DMA-Anbietertreiber die NetDmaDeregisterProvider-Funktion .

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt für NetDMA 1.0-Treiber in Windows Vista.
Zielplattform Universell
Header netdma.h (netdma.h einschließen)
IRQL PASSIVE_LEVEL

Weitere Informationen

AddDevice

IRP_MN_FILTER_RESOURCE_REQUIREMENTS

IoCreateDevice

NET_DMA_PROVIDER_CHARACTERISTICS

NetDmaDeregisterProvider

ProviderSetDmaChannelCpuAffinity