Compartir a través de


WDF_DMA_ENABLER_CONFIG_FLAGS enumeración (wdfdmaenabler.h)

[Solo se aplica a KMDF]

El tipo de enumeración WDF_DMA_ENABLER_CONFIG_FLAGS define marcas que se usan en la estructura WDF_DMA_ENABLER_CONFIG de un controlador.

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;

Constantes

 
WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION
Valor: 0x00000001
La marca WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION solo se aplica a los siguientes perfiles de DMA:


  • WdfDmaProfileScatterGather

  • WdfDmaProfileScatterGather64

  • WdfDmaProfileScatterGatherDuplex

  • WdfDmaProfileScatterGather64Duplex



De forma predeterminada, cuando no se establece WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION y el WDF_DMA_PROFILE es uno de los de la lista anterior, WDF
crea una lista de búsqueda de listas de dispersión y recopilación que usa esta transacción del adaptador de DMA.
. Las entradas de lista se inicializan para permitir el máximo especificado.
longitud de transferencia. Cuando se ejecuta la transacción, WDF llama a la función de entrada BuildScatterGatherList . Controladores de progreso hacia delante
no debe establecer esta marca y debe usar uno de los cuatro perfiles mostrados anteriormente.

Cuando se establece WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION y el WDF_DMA_PROFILE es uno de los de la lista anterior, WDF no crea una lista de lookaside. Cuando se ejecuta la transacción, WDF llama a GetScatterGatherList.

Establecer WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION puede dar lugar a una reducción del uso de memoria, especialmente cuando la longitud máxima de la transferencia es grande. Sin embargo, establecer esta marca puede provocar un error al realizar operaciones DMA en condiciones de memoria baja. Para garantizar el progreso hacia delante cuando se establece WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION , un controlador puede usar un habilitador DMA independiente o transferir transferencias a través de un búfer común.
WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER
Valor: 0x00000002
La marca WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER está disponible a partir de la versión 1.19 de KMDF. Esta marca también requiere DMA versión 3.
Para seleccionar DMA versión 3, establezca el miembro WdmDmaVersionOverride de WDF_DMA_ENABLER_CONFIG en 3.

Esta marca se aplica a todos los perfiles de DMA. Cuando se establece, WDF no fragmenta ningún WDFDMATRANSACTION creado con este habilitador en varias transferencias DMA. Si esto no es posible, se produce un error en los intentos de inicializar o ejecutar la transacción. Esta opción está pensada para dispositivos que necesitan recibir todos los datos en una sola operación DMA.

Los controladores también tienen la opción de especificar esto en un nivel por transacción con WdfDmaTransactionSetSingleTransferRequirement.

Para obtener más información, consulta Usar DMA de transferencia única.

Comentarios

Puede especificar un OR bit a bit válido de los valores de esta página para el miembro Flags de la estructura WDF_DMA_ENABLER_CONFIG .

Requisitos

Requisito Value
Versión mínima de KMDF 1.11
Encabezado wdfdmaenabler.h (include Wdf.h)

Consulte también

WDF_DMA_ENABLER_CONFIG

WDF_DMA_PROFILE

WdfDmaTransactionSetSingleTransferRequirement