共用方式為


WdfDmaTransactionSetDeviceAddressOffset 函式 (wdfdmatransaction.h)

[僅適用於 KMDF]

WdfDmaTransactionSetDeviceAddressOffset 方法會指定執行 DMA 作業時,系統 DMA 控制器將存取的緩存器位移。

語法

void WdfDmaTransactionSetDeviceAddressOffset(
  [in] WDFDMATRANSACTION DmaTransaction,
  [in] ULONG             Offset
);

參數

[in] DmaTransaction

DMA 交易物件的句柄,指定要修改的交易。

[in] Offset

緩存器從 WDF_DMA_SYSTEM_PROFILE_CONFIG 中指定的 DeviceAddress,到應該執行 DMA 的移位移。

傳回值

備註

WdfDmaTransactionSetDeviceAddressOffset 必須與指定系統模式 DMA 配置檔的 DMA 啟用程式搭配使用。

架構型驅動程式在初始化 DMA 交易並在執行之前呼叫 WdfDmaTransactionSetDeviceAddressOffset

驅動程式可以使用這個方法來存取裝置註冊檔案內的多個緩存器。

例如,驅動程式可能會使用 DMA 來存取裝置註冊檔案中的個別讀取和寫入緩存器。

若要這樣做,驅動程式會在設定啟用程式時指定裝置註冊檔案的基地址,然後在執行交易之前,視需要設定讀取或寫入緩存器的位移。

如果您的驅動程式在早於 Windows 8 的作業系統上呼叫此方法,架構的驗證程式會回報錯誤。

範例

下列程式代碼範例會初始化 DMA 交易。 然後,它會設定系統 DMA 控制器將存取的緩存器位移、提供傳輸完成回呼例程,以及執行 DMA 交易。

status = WdfDmaTransactionInitialize(
                                     RequestContext->DmaTransaction,
                                     EvtProgramDma,
                                     direction,
                                     mdl,
                                     startingVa,
                                     length
                                     );

if(!NT_SUCCESS(status)) {
    goto Complete;
}

WdfDmaTransactionSetDeviceAddressOffset(
                                        RequestContext->DmaTransaction,
                                        READ_DATA_REGISTER_OFFSET
                                        );

WdfDmaTransactionSetTransferCompleteCallback(
                                             RequestContext->DmaTransaction,
                                             EvtDmaTransactionDmaTransferComplete,
                                             RequestContext
                                             );

status = WdfDmaTransactionExecute(
                                  RequestContext->DmaTransaction, 
                                  RequestContext );

if(!NT_SUCCESS(status)) {
    goto Complete;
}

return status;

Complete:

WdfDmaTransactionRelease(
                         RequestContext->DmaTransaction
                         );

規格需求

需求
最低支援的用戶端 Windows 8
目標平台 Universal
最低 KMDF 版本 1.11
標頭 wdfdmatransaction.h (包含 Wdf.h)
程式庫 Wdf01000.sys (請參閱 Framework Library Versioning.)
IRQL <=DISPATCH_LEVEL
DDI 合規性規則 DriverCreate (kmdf)

另請參閱

WDF_DMA_SYSTEM_PROFILE_CONFIG