DMA_OPERATIONS structure (wdm.h)

La structure DMA_OPERATIONS fournit une table de pointeurs vers des fonctions qui contrôlent le fonctionnement d’un contrôleur DMA.

Syntaxe

typedef struct _DMA_OPERATIONS {
  ULONG                                   Size;
  PPUT_DMA_ADAPTER                        PutDmaAdapter;
  PALLOCATE_COMMON_BUFFER                 AllocateCommonBuffer;
  PFREE_COMMON_BUFFER                     FreeCommonBuffer;
  PALLOCATE_ADAPTER_CHANNEL               AllocateAdapterChannel;
  PFLUSH_ADAPTER_BUFFERS                  FlushAdapterBuffers;
  PFREE_ADAPTER_CHANNEL                   FreeAdapterChannel;
  PFREE_MAP_REGISTERS                     FreeMapRegisters;
  PMAP_TRANSFER                           MapTransfer;
  PGET_DMA_ALIGNMENT                      GetDmaAlignment;
  PREAD_DMA_COUNTER                       ReadDmaCounter;
  PGET_SCATTER_GATHER_LIST                GetScatterGatherList;
  PPUT_SCATTER_GATHER_LIST                PutScatterGatherList;
  PCALCULATE_SCATTER_GATHER_LIST_SIZE     CalculateScatterGatherList;
  PBUILD_SCATTER_GATHER_LIST              BuildScatterGatherList;
  PBUILD_MDL_FROM_SCATTER_GATHER_LIST     BuildMdlFromScatterGatherList;
  PGET_DMA_ADAPTER_INFO                   GetDmaAdapterInfo;
  PGET_DMA_TRANSFER_INFO                  GetDmaTransferInfo;
  PINITIALIZE_DMA_TRANSFER_CONTEXT        InitializeDmaTransferContext;
  PALLOCATE_COMMON_BUFFER_EX              AllocateCommonBufferEx;
  PALLOCATE_ADAPTER_CHANNEL_EX            AllocateAdapterChannelEx;
  PCONFIGURE_ADAPTER_CHANNEL              ConfigureAdapterChannel;
  PCANCEL_ADAPTER_CHANNEL                 CancelAdapterChannel;
  PMAP_TRANSFER_EX                        MapTransferEx;
  PGET_SCATTER_GATHER_LIST_EX             GetScatterGatherListEx;
  PBUILD_SCATTER_GATHER_LIST_EX           BuildScatterGatherListEx;
  PFLUSH_ADAPTER_BUFFERS_EX               FlushAdapterBuffersEx;
  PFREE_ADAPTER_OBJECT                    FreeAdapterObject;
  PCANCEL_MAPPED_TRANSFER                 CancelMappedTransfer;
  PALLOCATE_DOMAIN_COMMON_BUFFER          AllocateDomainCommonBuffer;
  PFLUSH_DMA_BUFFER                       FlushDmaBuffer;
  PJOIN_DMA_DOMAIN                        JoinDmaDomain;
  PLEAVE_DMA_DOMAIN                       LeaveDmaDomain;
  PGET_DMA_DOMAIN                         GetDmaDomain;
  PALLOCATE_COMMON_BUFFER_WITH_BOUNDS     AllocateCommonBufferWithBounds;
  PALLOCATE_COMMON_BUFFER_VECTOR          AllocateCommonBufferVector;
  PGET_COMMON_BUFFER_FROM_VECTOR_BY_INDEX GetCommonBufferFromVectorByIndex;
  PFREE_COMMON_BUFFER_FROM_VECTOR         FreeCommonBufferFromVector;
  PFREE_COMMON_BUFFER_VECTOR              FreeCommonBufferVector;
  PCREATE_COMMON_BUFFER_FROM_MDL          CreateCommonBufferFromMdl;
} *PDMA_OPERATIONS, DMA_OPERATIONS;

Membres

Size

Taille, en octets, de cette structure DMA_OPERATIONS .

PutDmaAdapter

Pointeur vers une routine définie par le système pour libérer une structure DMA_ADAPTER . Pour plus d’informations, consultez PutDmaAdapter.

AllocateCommonBuffer

Pointeur vers une routine définie par le système pour allouer une mémoire tampon DMA contiguë physiquement. Pour plus d’informations, consultez AllocateCommonBuffer.

FreeCommonBuffer

Pointeur vers une routine définie par le système pour libérer une mémoire tampon DMA physiquement contiguë précédemment allouée par AllocateCommonBuffer. Pour plus d’informations, consultez FreeCommonBuffer.

AllocateAdapterChannel

Pointeur vers une routine définie par le système pour allouer un canal aux opérations DMA. Pour plus d’informations, consultez AllocateAdapterChannel.

FlushAdapterBuffers

Pointeur vers une routine définie par le système pour vider les données du cache interne de l’adaptateur système ou master bus après une opération DMA. Pour plus d’informations, consultez FlushAdapterBuffers.

FreeAdapterChannel

Pointeur vers une routine définie par le système pour libérer un canal précédemment alloué pour les opérations DMA par AllocateAdapterChannel. Pour plus d’informations, consultez FreeAdapterChannel.

FreeMapRegisters

Pointeur vers une routine définie par le système pour libérer les registres map alloués aux opérations DMA. Pour plus d’informations, consultez FreeMapRegisters.

MapTransfer

Pointeur vers une routine définie par le système pour commencer une opération DMA. Pour plus d’informations, consultez MapTransfer.

GetDmaAlignment

Pointeur vers une routine définie par le système pour obtenir les exigences d’alignement DMA du contrôleur. Pour plus d’informations, consultez GetDmaAlignment.

ReadDmaCounter

Pointeur vers une routine définie par le système pour obtenir le nombre actuel de transferts pour une opération DMA. Pour plus d’informations, consultez ReadDmaCounter.

GetScatterGatherList

Pointeur vers une routine définie par le système qui alloue des registres cartographiques et crée une liste de points/regroupements pour DMA. Pour plus d’informations, consultez GetScatterGatherList.

PutScatterGatherList

Pointeur vers une routine définie par le système qui libère des registres cartographiques et une liste de points/regroupements une fois l’opération DMA terminée. Pour plus d’informations, consultez PutScatterGatherList.

CalculateScatterGatherList

Pointeur vers une routine définie par le système qui détermine la taille de la mémoire tampon nécessaire pour contenir la liste de points/regroupements qui décrit une mémoire tampon de données d’E/S. Ce membre est disponible uniquement dans les versions 2 et ultérieures de DMA_OPERATIONS. Pour plus d’informations, consultez CalculateScatterGatherList.

BuildScatterGatherList

Pointeur vers une routine définie par le système qui alloue des registres cartographiques et crée une liste de points/regroupements pour DMA dans une mémoire tampon fournie par le pilote. Ce membre est disponible uniquement dans les versions 2 et ultérieures de DMA_OPERATIONS. Pour plus d’informations, consultez BuildScatterGatherList.

BuildMdlFromScatterGatherList

Pointeur vers une routine définie par le système qui génère une MDL correspondant à une liste de points/regroupements. Ce membre est disponible uniquement dans les versions 2 et ultérieures de DMA_OPERATIONS. Pour plus d’informations, consultez BuildMdlFromScatterGatherList.

GetDmaAdapterInfo

Pointeur vers une routine définie par le système qui décrit les fonctionnalités d’un appareil DMA master bus ou d’un contrôleur DMA système. GetDmaAdapterInfo est disponible uniquement dans la version 3 de DMA_OPERATIONS. Pour plus d’informations, consultez GetDmaAdapterInfo.

GetDmaTransferInfo

Pointeur vers une routine définie par le système qui décrit les exigences d’allocation pour une liste de points/regroupements. Cette routine remplace CalculateScatterGatherList. GetDmaTransferInfo est disponible uniquement dans la version 3 de DMA_OPERATIONS. Pour plus d’informations, consultez GetDmaTransferInfo.

InitializeDmaTransferContext

Pointeur vers une routine définie par le système qui initialise un contexte de transfert DMA opaque. Le système d’exploitation stocke les status internes d’un transfert DMA dans ce contexte. InitializeDmaTransferContext est disponible uniquement dans la version 3 de DMA_OPERATIONS. Pour plus d’informations, consultez InitializeDmaTransferContext.

AllocateCommonBufferEx

Pointeur vers une routine définie par le système qui alloue de la mémoire pour une mémoire tampon commune et mappe cette mémoire afin qu’elle puisse être accessible à la fois par le processeur et par un appareil DMA. AllocateCommonBufferEx est disponible uniquement dans la version 3 de DMA_OPERATIONS. Pour plus d’informations, consultez AllocateCommonBufferEx.

AllocateAdapterChannelEx

Pointeur vers une routine définie par le système qui alloue les ressources requises pour un transfert DMA, puis appelle la routine AdapterControl fournie par le pilote pour lancer le transfert DMA. AllocateAdapterChannelEx est disponible uniquement dans la version 3 de DMA_OPERATIONS. Pour plus d’informations, consultez AllocateAdapterChannelEx.

ConfigureAdapterChannel

Un pointeur vers une routine définie par le système active une fonction personnalisée implémentée par le contrôleur DMA. ConfigureAdapterChannel est disponible uniquement dans la version 3 de DMA_OPERATIONS. Pour plus d’informations, consultez ConfigureAdapterChannel.

CancelAdapterChannel

Pointeur vers une routine définie par le système qui tente d’annuler une demande en attente pour allouer un canal DMA. CancelAdapterChannel est disponible uniquement dans la version 3 de DMA_OPERATIONS. Pour plus d’informations, consultez CancelAdapterChannel.

MapTransferEx

Pointeur vers une routine définie par le système qui configure des registres de carte pour mapper les adresses physiques d’une liste de points/regroupements aux adresses logiques requises pour effectuer un transfert DMA. MapTransferEx est disponible uniquement dans la version 3 de DMA_OPERATIONS. Pour plus d’informations, consultez MapTransferEx.

GetScatterGatherListEx

Pointeur vers une routine définie par le système qui alloue les ressources requises pour un transfert DMA, génère une liste de points/regroupements, puis appelle la routine AdapterListControl fournie par le pilote pour lancer le transfert DMA. GetScatterGatherListEx est disponible uniquement dans la version 3 de DMA_OPERATIONS. Pour plus d’informations, consultez GetScatterGatherListEx. Cette routine est un wrapper d’AllocateAdapterChannelEx et mapTransferEx.

BuildScatterGatherListEx

Pointeur vers une routine définie par le système qui génère une liste de points/regroupements dans une mémoire tampon allouée par l’appelant, puis appelle la routine AdapterListControl fournie par le pilote pour lancer le transfert DMA. BuildScatterGatherListEx est disponible uniquement dans la version 3 de DMA_OPERATIONS. Pour plus d’informations, consultez BuildScatterGatherListEx.

FlushAdapterBuffersEx

Pointeur vers une routine définie par le système qui vide toutes les données qui restent dans le cache interne du contrôleur DMA système ou dans le cache interne d’un adaptateur de bus master à la fin d’un transfert DMA. Pour un appareil qui utilise un contrôleur DMA système, cette routine annule le transfert DMA actuel sur le contrôleur si le transfert n’est pas terminé. FlushAdapterBuffersEx est disponible uniquement dans la version 3 de DMA_OPERATIONS. Pour plus d’informations, consultez FlushAdapterBuffersEx.

FreeAdapterObject

Pointeur vers une routine définie par le système qui libère l’objet adaptateur spécifié une fois qu’un pilote a terminé toutes les opérations DMA. FreeAdapterObject est disponible uniquement dans la version 3 de DMA_OPERATIONS. Pour plus d’informations, consultez FreeAdapterObject.

CancelMappedTransfer

Pointeur vers une routine définie par le système qui annule un transfert mappé. CancelMappedTransfer est disponible uniquement dans la version 3 de DMA_OPERATIONS. Pour plus d’informations, consultez CancelMappedTransfer.

AllocateDomainCommonBuffer

Pointeur vers une routine de rappel PALLOCATE_DOMAIN_COMMON_BUFFER pour allouer une mémoire tampon commune de domaine. Cette option est disponible dans Windows 10 et versions ultérieures.

FlushDmaBuffer

Pointeur vers une fonction de rappel PFLUSH_DMA_BUFFER qui vide toutes les données restantes dans le cache. Cette option est disponible dans Windows 10 et versions ultérieures.

JoinDmaDomain

Pointeur vers une fonction de rappel PJOIN_DMA_DOMAIN qui joint le domaine DMA spécifié. Cette option est disponible dans Windows 10 et versions ultérieures.

LeaveDmaDomain

Pointeur vers une fonction de rappel PLEAVE_DMA_DOMAIN qui quitte le domaine DMA spécifié. Cette option est disponible dans Windows 10 et versions ultérieures.

GetDmaDomain

Pointeur vers la fonction de rappel PGET_DMA_DOMAIN qui obtient un handle pour le domaine DMA. Cette option est disponible dans Windows 10 et versions ultérieures.

AllocateCommonBufferWithBounds

Pointeur vers une fonction de rappel PALLOCATE_COMMON_BUFFER_WITH_BOUNDS qui alloue la mémoire à une mémoire tampon commune et la mappe de sorte qu’elle soit accessible par un appareil master et le processeur. La mémoire tampon commune peut être liée par une adresse logique minimale et maximale facultative. Cette option est disponible à partir de Windows 10, version 1803.

AllocateCommonBufferVector

GetCommonBufferFromVectorByIndex

FreeCommonBufferFromVector

FreeCommonBufferVector

CreateCommonBufferFromMdl

Pointeur vers une fonction de rappel de PCREATE_COMMON_BUFFER_FROM_MDL qui crée une mémoire tampon commune DMA à partir d’une bibliothèque MDL et mappe la mémoire de stockage afin qu’elle soit accessible par un périphérique de mastering de bus et l’UC. Ce rappel facultatif est disponible à partir de Windows Server 2022.

Remarques

Tous les membres de cette structure, à l’exception de Size, sont des pointeurs vers des fonctions que les pilotes utilisent pour effectuer des opérations DMA pour leurs appareils. Les pilotes obtiennent ces pointeurs en appelant la routine IoGetDmaAdapter . La version de la structure DMA_OPERATIONS retournée par cette routine dépend du membre Version de la structure DEVICE_DESCRIPTION qui est passée à IoGetDmaAdapter en tant que paramètre d’entrée. Si Version est DEVICE_DESCRIPTION_VERSION ou DEVICE_DESCRIPTION_VERSION1, la version 1 de cette structure est retournée. Si Version est DEVICE_DESCRIPTION_VERSION2, la version 2 de cette structure est retournée. La version 2 de DMA_OPERATIONS est disponible à partir de Windows XP. Si Version est DEVICE_DESCRIPTION_VERSION3, la version 3 de cette structure est retournée. La version 3 de DMA_OPERATIONS est disponible à partir de Windows 8.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Pris en charge à partir de Windows 2000.
En-tête wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)

Voir aussi

AllocateAdapterChannel

AllocateAdapterChannelEx

AllocateCommonBuffer

AllocateCommonBufferEx

BuildMdlFromScatterGatherList

BuildScatterGatherList

BuildScatterGatherListEx

CalculateScatterGatherList

CancelAdapterChannel

CancelMappedTransfer

ConfigureAdapterChannel

DEVICE_DESCRIPTION

FlushAdapterBuffers

FlushAdapterBuffersEx

FreeAdapterChannel

FreeAdapterObject

FreeCommonBuffer

FreeMapRegisters

GetDmaAdapterInfo

GetDmaAlignment

GetDmaTransferInfo

GetScatterGatherList

GetScatterGatherListEx

InitializeDmaTransferContext

IoGetDmaAdapter

MapTransfer

MapTransferEx

PutDmaAdapter

PutScatterGatherList

ReadDmaCounter