共用方式為


NdisMSetupDmaTransfer 宏 (ndis.h)

NdisMSetupDmaTransfer 函式會設定 DMA 傳輸的主機 DMA 控制器。

語法

void NdisMSetupDmaTransfer(
   _S,
   _H,
   _B,
   _O,
   _L,
   _M_
);

參數

_S

呼叫端提供的變數指標,此變數會傳回要求的狀態,可以是下列其中一項:

NDIS_STATUS_SUCCESS

DMA 控制器已設定為傳輸指定的數據,該數據已排清到裝置或從裝置清除,以維護數據完整性。

NDIS_STATUS_RESOURCES

嘗試設定傳輸的 DMA 控制器失敗,可能是 因為 MiniportDmaHandle 指定的通道目前正在使用傳輸數據,或因為指定的 Length 無效。

_H

NdisMRegisterDmaChannel 函式在初始化期間傳回的 DMA 句柄。

_B

緩衝區描述元的指標,對應要從中傳輸數據或從其中傳輸數據的主機記憶體範圍。

_O

對應緩衝區內應該啟動傳輸的位元組位移。 零表示傳輸應該從 緩衝區 所指定之範圍的初始位元組開始。

_L

要傳輸的數據位元組數。 OffsetLength 所指定的範圍必須是在 Buffer 中指定的適當子範圍。

_M_

從系統透過 NIC 進行輸出傳輸的布爾值,為 TRUE 。 否則為 FALSE

傳回值

備註

從屬 DMA NIC 的驅動程式會呼叫 NdisMSetupDmaTransfer 以回應傳入傳送要求,驅動程式會將 WriteToDevice 設定為 TRUE。 他們會將 WriteToDevice 設定為 FALSE ,當從 NIC 將接收的數據傳送到主機記憶體時。

NdisMSetupDmaTransfer 的呼叫端會提供緩衝區描述元,將主機記憶體範圍對應至傳輸的目標,或包含從主機到 NIC 下載作業的數據。 若要指定符合 NIC DMA 條件約束的傳輸大小,呼叫端可以視需要設定子範圍以 OffsetLength 參數傳送。

呼叫端必須提供緩衝區描述元,指定 當 WriteToDeviceFALSE 時,接收的數據將從 NIC 傳送到其中的主機範圍。 否則, Buffer 上的緩衝區描述項已鏈結至迷你埠驅動程式的封包描述元輸入 MiniportSendNetBufferLists 函 式。

若要改善小型傳輸要求的效能,例如長度小於 256 位元組的傳送要求,迷你埠驅動程式可以將封包數據複製到內部預備緩衝區,並將該緩衝區的驅動程式配置緩衝區描述元對應傳遞至 NdisMSetupDmaTransfer

NdisMSetupDmaTransfer 傳回時,主機 DMA 控制器已針對傳輸進行程序設計。 迷你埠驅動程序接著會針對傳輸作業來設定 NIC。

傳輸完成時,迷你埠驅動程序必須呼叫 NdisMCompleteDmaTransfer 函 式。

規格需求

需求
最低支援的用戶端 (支援 NDIS 6.0 和 NDIS 5.1 驅動程式,請參閱 Windows Vista 中的 NdisMSetupDmaTransfer (NDIS 5.1) ) 。 (支援 NDIS 5.1 驅動程式,請參閱 Windows XP 中的 NdisMSetupDmaTransfer (NDIS 5.1) ) 。
目標平台 Universal
標頭 ndis.h (包含 Ndis.h)
IRQL <= DISPATCH_LEVEL
DDI 合規性規則 Irql_Miniport_Driver_Function (ndis)

另請參閱

MiniportSendNetBufferLists

NdisMCompleteDmaTransfer

NdisMRegisterDmaChannel