共用方式為


DMA_START_HANDLER回呼函式 (netdma.h)

注意 不支援 NetDMA 介面

在 Windows 8 和更新版本中。

ProviderStartDma 函式會在指定的 DMA 通道上啟動 DMA 傳輸。

語法

DMA_START_HANDLER DmaStartHandler;

NTSTATUS DmaStartHandler(
  [in] PVOID ProviderChannelContext,
  [in] PNET_DMA_DESCRIPTOR DescriptorVirtualAddress,
  [in] PHYSICAL_ADDRESS DescriptorPhysicalAddress,
  [in] ULONG DescriptorCount
)
{...}

參數

[in] ProviderChannelContext

識別 DMA 通道內容區域的指標。 DMA 提供者在 的 pProviderChannelContext 參數中指定的位置,將此句柄傳回給 NetDMA ProviderAllocateDmaChannel 函式。

[in] DescriptorVirtualAddress

DMA 描述元連結清單中第一 個NET_DMA_DESCRIPTOR 結構的虛擬位址指標。 對應的實體位址是在 DescriptorPhysicalAddress 參數上指定。

[in] DescriptorPhysicalAddress

DMA 描述項連結清單中的第一個 DMA 描述元實體位址指標。 對應的虛擬位址是在 DescriptorVirtualAddress 參數指定。

[in] DescriptorCount

描述元VirtualAddress上的 DMA 描述項數目。

注意 NetDMA 2.0 版之前的 NetDMA 提供者驅動程式可以忽略 DescriptorCount 參數。 對於 NetDMA 2.0 和更新版本,此參數是 DMA 作業中的描述元計數。
 

傳回值

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

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

備註

NetDMA 介面會呼叫 DMA 提供者驅動程式的 ProviderStartDma 函式來啟動 DMA 傳輸。 在配置 DMA 通道之後,NetDMA 介面可以隨時呼叫 ProviderStartDma 。 NetDMA 介面必須在呼叫 ProviderAbortDmaProviderResetChannel 或 之後呼叫 ProviderStartDmaDMA 通道的 ProviderAllocateDmaChannel 函式。

DMA 傳輸的來源是 DMA 描述項的連結清單。 位於 DescriptorVirtualAddress 參數之NET_DMA_DESCRIPTOR結構的 NextDescriptor 成員包含連結清單中下一個NET_DMA_DESCRIPTOR結構的實體位址。

注意 在 NetDMA 2.0 和更新版本中,描述項的連結清單不會以 NULL 終止。 鏈接清單中最後一個描述元中的 NextDescriptor 成員會指定後續呼叫 ProviderAppendDma 函式時所使用的NET_DMA_DESCRIPTOR結構實體位址。 NetDMA 2.0 提供者驅動程式可以在 NextDescriptor 中快取位址,並使用這個位址做為下一個 Append 作業的連結清單開頭。
 
若要執行啟動作業,DMA 提供者必須在完成目前描述元的任何處理之後,忽略現有的 DMA 描述元清單。 DMA 提供者必須忽略目前NET_DMA_DESCRIPTOR結構中的 NextDescriptor 成員,並載入 ProviderStartDma 指定的描述元。

在 ProviderStartDma 啟動初始 DMA 傳輸之後,NetDMA 介面可以呼叫 ProviderAppendDma 函式,以將其他數據附加至傳輸。

NetDMA 會在 IRQL <= DISPATCH_LEVEL呼叫 ProviderStartDma

規格需求

需求
最低支援的用戶端 在 Windows Server 2008 中支援 NetDMA 2.0 驅動程式。 在 Windows Server 2008 中支援 NetDMA 1.1 驅動程式。 在 Windows Server 2008 和 Windows Vista 中支援 NetDMA 1.0 驅動程式。
目標平台 Windows
標頭 netdma.h (包括 Netdma.h)
IRQL <= DISPATCH_LEVEL

另請參閱

NET_DMA_DESCRIPTOR

ProviderAbortDma

ProviderAllocateDmaChannel

ProviderAppendDma

ProviderResetChannel