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 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 |
---|---|
|
Der Vorgang wurde erfolgreich abgeschlossen. |
|
Der Vorgang ist aufgrund unzureichender Ressourcen fehlgeschlagen. |
|
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 |