共用方式為


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 結構的虛擬位址指標。 對應的實體位址是在參數 描述元PhysicalAddress 指定。

[in] DescriptorPhysicalAddress

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

[in] DescriptorCount

DescriptorVirtualAddress 的 DMA 描述項數目。

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

傳回值

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

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

言論

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

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

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

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

NetDMA 會在 IRQL = DISPATCH_LEVEL 呼叫 <。

要求

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

另請參閱

NET_DMA_DESCRIPTOR

ProviderAbortDma

ProviderAllocateDmaChannel

ProviderAppendDma

ProviderResetChannel