共用方式為


DMA_CHANNEL_ALLOCATE_HANDLER回呼函式 (netdma.h)

注意 不支援 NetDMA 介面

在 Windows 8 和更新版本中。

 
ProviderAllocateDmaChannel 函式會配置 DMA 通道。

語法

DMA_CHANNEL_ALLOCATE_HANDLER DmaChannelAllocateHandler;

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

參數

[in] ProviderContext

識別 DMA 提供者內容區域的指標。 DMA 提供者驅動程式會在呼叫 中將此句柄傳遞至 NetDMA 介面 NetDmaRegisterProvider 函 式。

[in] ChannelParameters

的指標 NET_DMA_CHANNEL_PARAMETERS 結構,定義 DMA 通道的組態參數。

[in] NetDmaChannelHandle

識別 DMA 通道的句柄。 提供者驅動程式會將此句柄傳遞至 NetDmaXxx 函式,以識別 DMA 通道。

[out] pProviderChannelContext

值的指標,這個值是 DMA 通道之 DMA 提供者內容區域的指標。 DMA 提供者驅動程式會先配置此內容區域,再從 ProviderAllocateDmaChannel 傳回。 NetDMA 會將內容區域指標傳遞至需要提供者通道內容的 ProviderXxx 函式。

傳回值

ProviderAllocateDmaChannel 會傳回下列其中一個狀態值:

傳回碼 Description
STATUS_SUCCESS
作業已成功完成。
STATUS_RESOURCES
作業失敗,因為資源不足。
STATUS_UNSUCCESSFUL
作業因未指定的原因而失敗。

備註

NetDMA 介面會呼叫 DMA 提供者驅動程式的 ProviderAllocateDmaChannel 函式來配置 DMA 通道。 NetDMA 介面會先呼叫 ProviderAllocateDmaChannel ,再使用 DMA 通道。

DMA 提供者驅動程式會嘗試使用中斷 CPU 親和性來配置 DMA 通道,其符合 ProcessorAffinityMask 成員中指定的位。 NET_DMA_CHANNEL_PARAMETERSChannelParameters 參數的結構。 如果不支援 MSI-X 或 MSI-X,但無法使用具有相符中斷 CPU 親和性的 DMA 通道,DMA 提供者驅動程式會配置任何可用的 DMA 通道,並呼叫 KeSetTargetProcessorDpc 例程來設定中斷 DPC 的目標 CPU,以符合其中一個指定的同質遮罩位。

DMA 提供者一律會將它與 DMA 通道中斷 DPC 相關聯的 CPU 號碼傳回至 NET_DMA_CHANNEL_PARAMETERS 結構的 CpuNumber 成員中的 NetDMA 介面。

DMA 提供者驅動程式會在 ProviderAllocateDmaChannelpProviderChannelContext 參數上,提供驅動程式配置內容資訊的區塊指標。 此內容區域會儲存 DMA 通道的相關信息。 NetDMA 介面會將後續呼叫中的內容信息傳遞至需要 DMA 通道內容的 ProviderXxx 函式。

當 NetDMA 介面呼叫 ProviderAllocateDmaChannel 時,它會在 NetDmaChannelHandle 參數提供句柄。 DMA 提供者驅動程式會在與 DMA 通道相關聯的 NetDmaXxx 函式後續呼叫中使用這個句柄。

NetDMA 介面會呼叫 ProviderFreeDmaChannel 函式,以釋放先前配置的 DMA 通道。

NetDMA 會在 IRQL <= DISPATCH_LEVEL呼叫 ProviderAllocateDmaChannel

規格需求

需求
最低支援的用戶端 Windows Vista 中 NetDMA 1.0 驅動程序支援。
目標平台 Windows
標頭 netdma.h (包含 Netdma.h)
IRQL <= DISPATCH_LEVEL

另請參閱

KeSetTargetProcessorDpc

NET_DMA_CHANNEL_PARAMETERS

NetDmaRegisterProvider

ProviderFreeDmaChannel