Condividi tramite


WDF_DMA_ENABLER_CONFIG_FLAGS'enumerazione (wdfdmaenabler.h)

[Si applica solo a KMDF]

Il tipo di enumerazione WDF_DMA_ENABLER_CONFIG_FLAGS definisce i flag usati nella struttura WDF_DMA_ENABLER_CONFIG di un driver.

Sintassi

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;

Costanti

 
WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION
Valore: 0x00000001
Il flag WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION si applica solo ai profili DMA seguenti:


  • WdfDmaProfileScatterGather

  • WdfDmaProfileScatterGather64

  • WdfDmaProfileScatterGatherDuplex

  • WdfDmaProfileScatterGather64Duplex



Per impostazione predefinita, quando WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION non è impostato e il WDF_DMA_PROFILE è uno di quelli nell'elenco precedente, WDF
crea un elenco lookaside di elenchi di dispersione/raccolta usati dalla transazione della scheda DMA
. Le voci di elenco vengono inizializzate per consentire il massimo specificato
lunghezza di trasferimento. Quando la transazione viene eseguita, WDF chiama la funzione di immissione BuildScatterGatherList . Driver di avanzamento avanti
non deve impostare questo flag e deve usare uno dei quattro profili visualizzati in precedenza.

Quando WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION è impostato e il WDF_DMA_PROFILE è uno di quelli nell'elenco precedente, WDF non crea un elenco lookaside. Quando la transazione viene eseguita, WDF chiama GetScatterGatherList.

L'impostazione WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION può comportare una riduzione dell'utilizzo della memoria, in particolare quando la lunghezza massima del trasferimento è grande. Tuttavia, l'impostazione di questo flag può causare l'errore di eseguire operazioni DMA in condizioni di memoria ridotta. Per garantire lo stato di avanzamento quando WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION è impostato, un driver può usare un abilitatore DMA separato o trasferire i dati tramite un buffer comune.
WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER
Valore: 0x00000002
Il flag WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER è disponibile a partire dalla versione 1.19 di KMDF. Questo flag richiede anche DMA versione 3.
Per selezionare DMA versione 3, impostare il membro WdmDmaVersionOverride di WDF_DMA_ENABLER_CONFIG su 3.

Questo flag si applica a tutti i profili DMA. Quando è impostato, WDF non frammenta alcun WDFDMATRANSACTION creato con questo abilitatore in più trasferimenti DMA. Se non è possibile, tenta di inizializzare o eseguire la transazione non riesce. Questa opzione è destinata ai dispositivi che devono ricevere tutti i dati in una singola operazione DMA.

I driver hanno anche la possibilità di specificare questa opzione su un livello di transazione con WdfDmaTransactionSetSingleTransferRequirement.

Per altre informazioni, vedere Uso di DMA trasferimento singolo.

Commenti

È possibile specificare un OR bit per bit valido dei valori in questa pagina per il membro Flag della struttura WDF_DMA_ENABLER_CONFIG .

Requisiti

Requisito Valore
Versione KMDF minima 1.11
Intestazione wdfdmaenabler.h (include Wdf.h)

Vedi anche

WDF_DMA_ENABLER_CONFIG

WDF_DMA_PROFILE

WdfDmaTransactionSetSingleTransferRequirement