WDF_DMA_ENABLER_CONFIG_FLAGS列舉 (wdfdmaenabler.h)

[僅適用於 KMDF]

WDF_DMA_ENABLER_CONFIG_FLAGS列舉類型會定義驅動程式WDF_DMA_ENABLER_CONFIG結構中使用的旗標。

Syntax

typedef enum _WDF_DMA_ENABLER_CONFIG_FLAGS {
  WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION = 0x00000001,
  WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER = 0x00000002
} WDF_DMA_ENABLER_CONFIG_FLAGS;

常數

 
WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION
值: 0x00000001
WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION旗標僅適用於下列 DMA 設定檔:


  • WdfDmaProfileScatterGather

  • WdfDmaProfileScatterGather64

  • WdfDmaProfileScatterGatherDuplex

  • WdfDmaProfileScatterGather64Duplex



根據預設, 未設定WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION且WDF_DMA_PROFILE 是上一個清單中的其中一個時,WDF
建立此 DMA 配接器交易所使用的散佈/收集清單外觀清單
物件。 清單專案會初始化,以允許指定的最大值
傳輸長度。 執行交易時,WDF 會呼叫 BuildScatterGatherList 專案函式。 向前進度驅動程式
不得設定此旗標,而且必須使用先前顯示的四個配置檔之一。

設定WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATIONWDF_DMA_PROFILE是上一個清單中的其中一個時,WDF 不會建立外觀清單。 執行交易時,WDF 會呼叫 GetScatterGatherList

設定 WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION 可能會導致記憶體使用量降低,特別是在傳輸長度上限很大時。 不過,設定此旗標可能會導致在記憶體不足的情況下執行 DMA 作業失敗。 為了在 設定WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION 時保證向前進度,驅動程式可能會使用個別的 DMA 啟用器,或透過一般緩衝區退回傳輸。
WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER
值: 0x00000002
從 KMDF 1.19 版開始,即可使用 WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER 旗標。 此旗標也需要 DMA 第 3 版。
若要選取 DMA 第 3 版,請將 WDF_DMA_ENABLER_CONFIGWdmDmaVersionOverride 成員設定為 3。

此旗標適用於所有 DMA 設定檔。 設定時,WDF 不會將使用此啟用器建立的任何 WDFDMATRANSACTION 片段化成多個 DMA 傳輸。 如果無法這樣做,則嘗試初始化或執行交易失敗。 此選項適用於需要接收單一 DMA 作業中所有資料的裝置。

驅動程式也可以選擇使用 WdfDmaTransactionSetSingleTransferRequirement 在個別交易層級上指定此專案。

如需詳細資訊,請參閱 使用單一傳輸 DMA

備註

您可以針對 WDF_DMA_ENABLER_CONFIG 結構的 Flags 成員,指定此頁面上值的有效位 OR。

規格需求

需求
最小 KMDF 版本 1.11
標頭 wdfdmaenabler.h (包含 Wdf.h)

另請參閱

WDF_DMA_ENABLER_CONFIG

WDF_DMA_PROFILE

WdfDmaTransactionSetSingleTransferRequirement