Freigeben über


DMA_CHANNEL_ALLOCATE_HANDLER Rückruffunktion (netdma.h)

Hinweis Die NetDMA-Schnittstelle wird nicht unterstützt.

in Windows 8 und höher.

 
Die ProviderAllocateDmaChannel-Funktion weist einen DMA-Kanal zu.

Syntax

DMA_CHANNEL_ALLOCATE_HANDLER DmaChannelAllocateHandler;

NTSTATUS DmaChannelAllocateHandler(
  [in]  PVOID ProviderContext,
  [in]  PNET_DMA_CHANNEL_PARAMETERS ChannelParameters,
  [in]  PVOID NetDmaChannelHandle,
  [out] PVOID *pProviderChannelContext
)
{...}

Parameter

[in] ProviderContext

Ein Zeiger, der den Kontextbereich eines DMA-Anbieters identifiziert. Der DMA-Anbietertreiber übergibt dieses Handle an die NetDMA-Schnittstelle in einem Aufruf des NetDmaRegisterProvider-Funktion .

[in] ChannelParameters

Ein Zeiger auf eine NET_DMA_CHANNEL_PARAMETERS Struktur, die die Konfigurationsparameter für den DMA-Kanal definiert.

[in] NetDmaChannelHandle

Ein Handle, das den DMA-Kanal identifiziert. Anbietertreiber übergeben dieses Handle an NetDmaXxx-Funktionen , um den DMA-Kanal zu identifizieren.

[out] pProviderChannelContext

Ein Zeiger auf einen Wert, der ein Zeiger auf den Kontextbereich eines DMA-Anbieters für den DMA-Kanal ist. Der DMA-Anbietertreiber ordnet diesen Kontextbereich zu, bevor er von ProviderAllocateDmaChannel zurückkehrt. NetDMA übergibt den Kontextbereichszeiger an ProviderXxx-Funktionen , die einen Anbieterkanalkontext erfordern.

Rückgabewert

ProviderAllocateDmaChannel gibt einen der folgenden status Werte zurück:

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

Die NetDMA-Schnittstelle ruft die ProviderAllocateDmaChannel-Funktion eines DMA-Anbietertreibers auf, um einen DMA-Kanal zuzuordnen. Die NetDMA-Schnittstelle ruft ProviderAllocateDmaChannel auf, bevor ein DMA-Kanal verwendet wird.

Der DMA-Anbietertreiber versucht, einen DMA-Kanal mit einer Unterbrechungs-CPU-Affinität zuzuordnen, die einem Bit entspricht, das im ProcessorAffinityMask-Member des NET_DMA_CHANNEL_PARAMETERS Struktur am ChannelParameters-Parameter . Wenn MSI-X nicht unterstützt wird oder MSI-X unterstützt wird, aber kein DMA-Kanal mit einer entsprechenden Interrupt-CPU-Affinität verfügbar ist, ordnet der DMA-Anbietertreiber jeden verfügbaren DMA-Kanal zu und ruft die KeSetTargetProcessorDpc-Routine auf, um die Ziel-CPU des Interrupt-DPC so festzulegen, dass sie mit einem der angegebenen Affinitätsmaskenbits übereinstimmt.

Der DMA-Anbieter gibt die CPU-Nummer zurück, die er dem Interrupt-DPC für den DMA-Kanal an die NetDMA-Schnittstelle im CpuNumber-Member der NET_DMA_CHANNEL_PARAMETERS-Struktur zugeordnet hat.

Der DMA-Anbietertreiber stellt einen Zeiger auf einen Block von vom Treiber zugeordneten Kontextinformationen am pProviderChannelContext-Parameter von ProviderAllocateDmaChannel bereit. In diesem Kontextbereich werden Informationen zum DMA-Kanal gespeichert. Die NetDMA-Schnittstelle übergibt die Kontextinformationen in nachfolgenden Aufrufen von ProviderXxx-Funktionen , die einen DMA-Kanalkontext erfordern.

Wenn die NetDMA-Schnittstelle ProviderAllocateDmaChannel aufruft, stellt sie ein Handle am NetDmaChannelHandle-Parameter bereit. Der DMA-Anbietertreiber verwendet dieses Handle bei nachfolgenden Aufrufen von NetDmaXxx-Funktionen , die dem DMA-Kanal zugeordnet sind.

Die NetDMA-Schnittstelle ruft die ProviderFreeDmaChannel-Funktion auf, um einen zuvor zugeordneten DMA-Kanal freizugeben.

NetDMA ruft ProviderAllocateDmaChannel unter IRQL <= DISPATCH_LEVEL auf.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Unterstützt für NetDMA 1.0-Treiber in Windows Vista.
Zielplattform Windows
Kopfzeile netdma.h (netdma.h einschließen)
IRQL <= DISPATCH_LEVEL

Weitere Informationen

KeSetTargetProcessorDpc

NET_DMA_CHANNEL_PARAMETERS

NetDmaRegisterProvider

ProviderFreeDmaChannel