共用方式為


PFLUSH_ADAPTER_BUFFERS_EX回呼函式 (wdm.h)

FlushAdapterBuffersEx 例程會排清在系統 DMA 控制器或總線主要裝置所執行之 DMA 傳輸作業結束時,保留在數據快取中的任何數據。

語法

PFLUSH_ADAPTER_BUFFERS_EX PflushAdapterBuffersEx;

NTSTATUS PflushAdapterBuffersEx(
  [in] PDMA_ADAPTER DmaAdapter,
  [in] PMDL Mdl,
  [in] PVOID MapRegisterBase,
  [in] ULONGLONG Offset,
  [in] ULONG Length,
  [in] BOOLEAN WriteToDevice
)
{...}

參數

[in] DmaAdapter

DMA_ADAPTER 結構的指標。 這個結構是代表驅動程式系統 DMA 通道或總線主機裝置的配接器物件。 呼叫端從先前呼叫 IoGetDmaAdapter 例程取得此指標。

[in] Mdl

MDL 鏈結的指標,描述要排清的記憶體頁面。 將此參數設定為指向用於 DMA 傳輸的 MDL 鏈結。 如需詳細資訊,請參閱 GetScatterGatherListExBuildScatterGatherListExMapTransferEx 中的 Mdl 參數描述。

[in] MapRegisterBase

先前為配接器物件配置的對應緩存器句柄。

[in] Offset

相對於要用於排清作業之 MDL 鏈結開頭的起始位移。 將此參數設定為做為 DMA 傳輸起始位移的值。 如需詳細資訊,請參閱 GetScatterGatherListExBuildScatterGatherListExMapTransferEx 中的 Offset 參數描述。

[in] Length

要排清的數據位元組數目。 將此參數設定為做為 DMA 傳輸之傳輸長度的值。 如需詳細資訊,請參閱 GetScatterGatherListExBuildScatterGatherListExMapTransferEx 中的 Length 參數描述。

[in] WriteToDevice

DMA 傳輸的方向。 將此參數設定為做為 DMA 傳輸之傳輸方向的值。 如需詳細資訊,請參閱 GetScatterGatherListEx、BuildScatterGatherListExMapTransferEx 中的 WriteToDevice 參數描述。

傳回值

FlushAdapterBuffersEx 如果呼叫成功,則會傳回STATUS_SUCCESS。 可能的錯誤傳回值包括下列狀態代碼。

傳回碼 Description
STATUS_INVALID_PARAMETERS
例程失敗,因為呼叫端所傳遞的參數值無效。

備註

FlushAdapterBuffersEx 不是可直接依名稱呼叫的系統例程。此例程只能由DMA_OPERATIONS結構中傳回之位址的指標呼叫 驅動程式會呼叫IoGetDmaAdapter,並將DeviceDescription參數的Version成員設定為 DEVICE_DESCRIPTION_VERSION3,以取得此例程的位址。 如果 IoGetDmaAdapter 傳回 NULL,您的平台上無法使用例程。

FlushAdapterBuffersEx 可在未實作硬體強制快取共通的硬體平臺中啟用處理器快取共通, (總線探查) 。 此外,針對系統 DMA 傳輸, FlushAdapterBuffersEx 會排清任何保留在系統 DMA 控制器內部快取中的數據。

起始散佈/收集 DMA 傳輸的驅動程式,必須確保傳輸完成之後,所有傳輸的數據都會從快取排清。 在驅動程式完成要求 DMA 傳輸的 IRP 之前,驅動程式應該呼叫 FlushAdapterBuffersEx,並在驅動程式釋放地圖緩存器之前呼叫 FlushAdapterBuffersEx 。 如需詳細資訊,請參閱 在 DMA 作業期間排清快取的數據

FlushAdapterBuffersExFlushAdapterBuffers 例程的擴充版本。 FlushAdapterBuffersEx 可以在一個呼叫中排清整個散佈/收集清單。 相反地,若要使用 FlushAdapterBuffers 排清散佈/收集清單,則需要 MDL 鏈結中每個 MDL 的個別呼叫。

FlushAdapterBuffersEx 可用來取代 FlushAdapterBuffers 來排清一封包 DMA 傳輸的緩衝區。 在此情況下,Mdl 參數指向的 MDL 鏈結只包含一個 MDL。 透過這種方式使用 FlushAdapterBuffersEx 的優點是呼叫端可以指定 MDL 中的位移。

如果在 DMA 傳輸作業完成之前呼叫 FlushAdapterBuffersEx ,此呼叫可能會在完成之前取消傳輸,或可能會導致未定義的行為。

規格需求

需求
最低支援的用戶端 從 Windows 8 開始提供。
目標平台 桌面
標頭 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
IRQL <= DISPATCH_LEVEL

另請參閱

BuildScatterGatherListEx

DMA_ADAPTER

DMA_OPERATIONS

FlushAdapterBuffers

GetScatterGatherListEx

IoGetDmaAdapter

MapTransferEx