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) |