WdfDmaEnablerWdmGetDmaAdapter, fonction (wdfdmaenabler.h)

[S’applique à KMDF uniquement]

La méthode WdfDmaEnablerWdmGetDmaAdapter retourne un pointeur vers une structure de DMA_ADAPTER WDM associée à un objet d’activation DMA.

Syntaxe

PDMA_ADAPTER WdfDmaEnablerWdmGetDmaAdapter(
  [in] WDFDMAENABLER     DmaEnabler,
  [in] WDF_DMA_DIRECTION DmaDirection
);

Paramètres

[in] DmaEnabler

Handle pour un objet d’enabler DMA que le pilote a obtenu à partir d’un appel précédent à WdfDmaEnablerCreate.

[in] DmaDirection

Valeur de type WDF_DMA_DIRECTION qui spécifie la direction de l’opération de transfert DMA. Pour plus d'informations, consultez la section Notes qui suit.

Valeur retournée

WdfDmaEnablerWdmGetDmaAdapter retourne un pointeur vers une structure DMA_ADAPTER ou NULL si la valeur du paramètre DmaDirection n’est pas valide.

Un bogue case activée se produit si le pilote fournit un handle d’objet non valide.

Remarques

Lorsque votre pilote appelle WdfDmaEnablerCreate, l’infrastructure crée un objet adaptateur distinct pour chaque direction si le pilote spécifie un profil duplex et crée un objet adaptateur unique si le pilote ne spécifie pas de profil duplex.

Si votre pilote a spécifié un profil duplex lorsqu’il a appelé WdfDmaEnablerCreate, la valeur du paramètre DmaDirection de la méthode WdfDmaEnablerWdmGetDmaAdapter doit être WdfDmaDirectionReadFromDevice pour obtenir la structure DMA_ADAPTER pour les opérations de lecture et WdfDmaDirectionWriteToDevice pour obtenir la structure DMA_ADAPTER pour les opérations d’écriture. Si votre pilote n’a pas spécifié de profil duplex, il peut spécifier WdfDmaDirectionReadFromDevice ou WdfDmaDirectionWriteToDevice.

Le pointeur retourné par WdfDmaEnablerWdmGetDmaAdapter est valide jusqu’à ce que l’objet d’activation DMA soit supprimé. Si le pilote fournit une fonction EvtCleanupCallback pour l’objet enabler DMA, le pointeur est valide jusqu’à ce que la fonction de rappel soit retournée.

Exemples

L’exemple de code suivant crée un objet d’activation DMA, puis obtient des pointeurs vers les structures de DMA_ADAPTER WDM que l’infrastructure crée pour les opérations de lecture et d’écriture.

NTSTATUS  status = STATUS_SUCCESS;
WDF_DMA_ENABLER_CONFIG  dmaConfig;
WDFDMAENABLER  dmaEnabler;
PDMA_ADAPTER  readAdapter, writeAdapter;

WDF_DMA_ENABLER_CONFIG_INIT(
                            &dmaConfig,
                            WdfDmaProfileScatterGatherDuplex,
                            maxLength
                            );
status = WdfDmaEnablerCreate(
                             Device,
                             &dmaConfig,
                             WDF_NO_OBJECT_ATTRIBUTES,
                             &dmaEnabler
                             );
if (!NT_SUCCESS (status)) {
    return status;
}

readAdapter = WdfDmaEnablerWdmGetDmaAdapter(
                                            dmaEnabler,
                                            WdfDmaDirectionReadFromDevice
                                            );
writeAdapter = WdfDmaEnablerWdmGetDmaAdapter(
                                             dmaEnabler,
                                             WdfDmaDirectionWriteToDevice
                                             );

Configuration requise

Condition requise Valeur
Plateforme cible Universal
Version KMDF minimale 1.5
En-tête wdfdmaenabler.h (inclure Wdf.h)
Bibliothèque Wdf01000.sys (consultez Gestion des versions de la bibliothèque d’infrastructure).)
IRQL <=DISPATCH_LEVEL
Règles de conformité DDI DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

Voir aussi

DMA_ADAPTER

WDF_DMA_DIRECTION

WdfDmaEnablerCreate