共用方式為


WdfDmaTransactionSetDeviceAddressOffset 函式 (wdfdmatransaction.h)

[僅適用於 KMDF]

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

語法

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

參數

[in] DmaTransaction

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

[in] Offset

緩存器從 DeviceAddress 中指定的 WDF_DMA_SYSTEM_PROFILE_CONFIG緩存器位移,到應該從中執行 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
目標平臺 普遍
最低 KMDF 版本 1.11
標題 wdfdmatransaction.h (包括 Wdf.h)
程式庫 Wdf01000.sys (請參閱架構連結庫版本控制。)
IRQL <=DISPATCH_LEVEL
DDI 合規性規則 DriverCreate(kmdf)

另請參閱

WDF_DMA_SYSTEM_PROFILE_CONFIG