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