Partager via


énumération WDF_DMA_ENABLER_CONFIG_FLAGS (wdfdmaenabler.h)

[S’applique à KMDF uniquement]

Le type d’énumération WDF_DMA_ENABLER_CONFIG_FLAGS définit les indicateurs utilisés dans la structure de WDF_DMA_ENABLER_CONFIG d’un pilote.

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
Valeur : 0x00000001
L’indicateur WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION s’applique uniquement aux profils DMA suivants :


  • WdfDmaProfileScatterGather

  • WdfDmaProfileScatterGather64

  • WdfDmaProfileScatterGatherDuplex

  • WdfDmaProfileScatterGather64Duplex



Par défaut, lorsque WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION n’est pas défini et que le WDF_DMA_PROFILE est l’un de ceux de la liste précédente, WDF
crée une liste de lookaside de listes de nuages de points/regroupements qui est utilisée par la transaction de cet adaptateur DMA
. Les entrées de liste sont initialisées pour autoriser le maximum spécifié
longueur de transfert. Lorsque la transaction est exécutée, WDF appelle la fonction d’entrée BuildScatterGatherList . Moteurs de progression vers l’avant
ne doit pas définir cet indicateur et doit utiliser l’un des quatre profils indiqués précédemment.

Lorsque WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION est défini et que le WDF_DMA_PROFILE est l’un de ceux de la liste précédente, WDF ne crée pas de liste de lookaside. Lorsque la transaction est exécutée, WDF appelle GetScatterGatherList.

La définition de WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION peut réduire l’utilisation de la mémoire, en particulier lorsque la longueur de transfert maximale est élevée. Toutefois, la définition de cet indicateur peut entraîner l’échec de l’exécution des opérations DMA dans des conditions de mémoire insuffisante. Pour garantir la progression vers l’avant lorsque WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION est défini, un pilote peut utiliser un enabler DMA distinct ou des transferts de rebond via une mémoire tampon commune.
WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER
Valeur : 0x00000002
L’indicateur WDF_DMA_ENABLER_CONFIG_REQUIRE_SINGLE_TRANSFER est disponible à partir de la version 1.19 de KMDF. Cet indicateur nécessite également DMA version 3.
Pour sélectionner DMA version 3, définissez le membre WdmDmaVersionOverride de WDF_DMA_ENABLER_CONFIG sur 3.

Cet indicateur s’applique à tous les profils DMA. Lorsqu’il est défini, WDF ne fragmente pas les WDFDMATRANSACTION créés avec cet enabler en plusieurs transferts DMA. Si cela n’est pas possible, les tentatives d’initialisation ou d’exécution de la transaction échouent. Cette option est destinée aux appareils qui doivent recevoir toutes les données dans une seule opération DMA.

Les pilotes ont également la possibilité de le spécifier au niveau de chaque transaction avec WdfDmaTransactionSetSingleTransferRequirement.

Pour plus d’informations, consultez Using Single Transfer DMA.

Remarques

Vous pouvez spécifier un OR au niveau du bit valide des valeurs de cette page pour le membre Indicateurs de la structure WDF_DMA_ENABLER_CONFIG .

Configuration requise

Condition requise Valeur
Version KMDF minimale 1.11
En-tête wdfdmaenabler.h (inclure Wdf.h)

Voir aussi

WDF_DMA_ENABLER_CONFIG

WDF_DMA_PROFILE

WdfDmaTransactionSetSingleTransferRequirement