DMA_CHANNEL_ALLOCATE_HANDLER Rückruffunktion (netdma.h)
in Windows 8 und höher.
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 an den NetDmaRegisterProvider Funktion.
[in] ChannelParameters
Ein Zeiger auf ein 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 NetDma-Xxx--Funktionen, um den DMA-Kanal zu identifizieren.
[out] pProviderChannelContext
Ein Zeiger auf einen Wert, der einen Zeiger auf den Kontextbereich eines DMA-Anbieters für den DMA-Kanal darstellt. Der DMA-Anbietertreiber weist diesen Kontextbereich zu, bevor er von ProviderAllocateDmaChannelzurückkehrt. NetDMA übergibt den Kontextbereichzeiger an ProviderXxx- Funktionen, die einen Anbieterkanalkontext erfordern.
Rückgabewert
ProviderAllocateDmaChannel gibt einen der folgenden Statuswerte zurück:
Rückgabecode | Beschreibung |
---|---|
|
Der Vorgang wurde erfolgreich abgeschlossen. |
|
Fehler beim Vorgang aufgrund unzureichender Ressourcen. |
|
Der Vorgang ist aus nicht angegebenen Gründen fehlgeschlagen. |
Bemerkungen
Die NetDMA-Schnittstelle ruft die ProviderAllocateDmaChannel-Funktion eines DMA-Anbieters auf, um einen DMA-Kanal zuzuweisen. 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 zuzuweisen, die einem Bit entspricht, das im ProcessorAffinityMask Mitglied des NET_DMA_CHANNEL_PARAMETERS Struktur im ChannelParameters--Parameter. Wenn MSI-X nicht unterstützt wird oder MSI-X unterstützt wird, aber ein DMA-Kanal mit einem übereinstimmenden Interrupt CPU-Affinität nicht verfügbar ist, weist der DMA-Anbietertreiber alle verfügbaren DMA-Kanal zu und ruft die KeSetTargetProcessorDpc Routine auf, um die Ziel-CPU des Interrupt-DPC so festzulegen, dass er einem der angegebenen Affinitätsmaskenbits entspricht.
Der DMA-Anbieter gibt immer 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 treiberzuordnunger Kontextinformationen an der pProviderChannelContext Parameter von ProviderAllocateDmaChannelbereit. In diesem Kontextbereich werden Informationen zum DMA-Kanal gespeichert. Die NetDMA-Schnittstelle übergibt die Kontextinformationen in nachfolgenden Aufrufen an ProviderXxx Funktionen, die einen DMA-Kanalkontext erfordern.
Wenn die NetDMA-Schnittstelle ProviderAllocateDmaChannel-aufruft, stellt sie ein Handle an der NetDmaChannelHandle Parameter bereit. Der DMA-Anbietertreiber verwendet dieses Handle in nachfolgenden Aufrufen von NetDma-Xxx--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 bei IRQL-<= DISPATCH_LEVEL auf.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Unterstützt für NetDMA 1.0-Treiber in Windows Vista. |
Zielplattform- | Fenster |
Header- | netdma.h (enthalten Netdma.h) |
IRQL- | <= DISPATCH_LEVEL |