struttura DMA_OPERATIONS (wdm.h)
La struttura DMA_OPERATIONS fornisce una tabella di puntatori alle funzioni che controllano l'operazione di un controller DMA.
Sintassi
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;
Members
Size
Dimensione, in byte, di questa struttura DMA_OPERATIONS .
PutDmaAdapter
Puntatore a una routine definita dal sistema per liberare una struttura DMA_ADAPTER . Per altre informazioni, vedere PutDmaAdapter.
AllocateCommonBuffer
Puntatore a una routine definita dal sistema per allocare un buffer DMA fisicamente contiguo. Per altre informazioni, vedere AllocateCommonBuffer.
FreeCommonBuffer
Puntatore a una routine definita dal sistema per liberare un buffer DMA fisicamente contiguo precedentemente allocato da AllocateCommonBuffer. Per altre informazioni, vedere FreeCommonBuffer.
AllocateAdapterChannel
Puntatore a una routine definita dal sistema per allocare un canale per le operazioni DMA. Per altre informazioni, vedere AllocateAdapterChannel.
FlushAdapterBuffers
Puntatore a una routine definita dal sistema per scaricare i dati dalla cache interna del sistema o della scheda master bus dopo un'operazione DMA. Per altre informazioni, vedere FlushAdapterBuffers.
FreeAdapterChannel
Puntatore a una routine definita dal sistema per liberare un canale precedentemente allocato per le operazioni DMA da AllocateAdapterChannel. Per altre informazioni, vedere FreeAdapterChannel.
FreeMapRegisters
Puntatore a una routine definita dal sistema per liberare i registri di mapping allocati per le operazioni DMA. Per altre informazioni, vedere FreeMapRegisters.
MapTransfer
Puntatore a una routine definita dal sistema per avviare un'operazione DMA. Per altre informazioni, vedere MapTransfer.
GetDmaAlignment
Puntatore a una routine definita dal sistema per ottenere i requisiti di allineamento DMA del controller. Per altre informazioni, vedere GetDmaAlignment.
ReadDmaCounter
Puntatore a una routine definita dal sistema per ottenere il conteggio del trasferimento corrente per un'operazione DMA. Per altre informazioni, vedere ReadDmaCounter.
GetScatterGatherList
Puntatore a una routine definita dal sistema che alloca i registri delle mappe e crea un elenco di dispersione/raccolta per DMA. Per altre informazioni, vedere GetScatterGatherList.
PutScatterGatherList
Puntatore a una routine definita dal sistema che libera i registri della mappa e un elenco a dispersione/raccolta dopo il completamento di un'operazione DMA. Per altre informazioni, vedere PutScatterGatherList.
CalculateScatterGatherList
Puntatore a una routine definita dal sistema che determina le dimensioni del buffer necessarie per contenere l'elenco a dispersione/raccolta che descrive un buffer di dati di I/O. Questo membro è disponibile solo nelle versioni 2 e successive di DMA_OPERATIONS. Per altre informazioni, vedere CalculateScatterGatherList.
BuildScatterGatherList
Puntatore a una routine definita dal sistema che alloca i registri delle mappe e crea un elenco di dispersione/raccolta per DMA in un buffer fornito dal driver. Questo membro è disponibile solo nelle versioni 2 e successive di DMA_OPERATIONS. Per altre informazioni, vedere BuildScatterGatherList.
BuildMdlFromScatterGatherList
Puntatore a una routine definita dal sistema che compila un MDL corrispondente a un elenco a dispersione/raccolta. Questo membro è disponibile solo nelle versioni 2 e successive di DMA_OPERATIONS. Per altre informazioni, vedere BuildMdlFromScatterGatherList.
GetDmaAdapterInfo
Puntatore a una routine definita dal sistema che descrive le funzionalità di un dispositivo DMA master del bus o di un controller DMA di sistema. GetDmaAdapterInfo è disponibile solo nella versione 3 di DMA_OPERATIONS. Per altre informazioni, vedere GetDmaAdapterInfo.
GetDmaTransferInfo
Puntatore a una routine definita dal sistema che descrive i requisiti di allocazione per un elenco a dispersione/raccolta. Questa routine sostituisce CalculateScatterGatherList. GetDmaTransferInfo è disponibile solo nella versione 3 di DMA_OPERATIONS. Per altre informazioni, vedere GetDmaTransferInfo.
InitializeDmaTransferContext
Puntatore a una routine definita dal sistema che inizializza un contesto di trasferimento DMA opaco. Il sistema operativo archivia lo stato interno di un trasferimento DMA in questo contesto. InitializeDmaTransferContext è disponibile solo nella versione 3 di DMA_OPERATIONS. Per altre informazioni, vedere InitializeDmaTransferContext.
AllocateCommonBufferEx
Puntatore a una routine definita dal sistema che alloca memoria per un buffer comune ed esegue il mapping di questa memoria in modo che possa accedere sia dal processore che da un dispositivo DMA. AllocateCommonBufferEx è disponibile solo nella versione 3 di DMA_OPERATIONS. Per altre informazioni, vedere AllocateCommonBufferEx.
AllocateAdapterChannelEx
Puntatore a una routine definita dal sistema che alloca le risorse necessarie per un trasferimento DMA e quindi chiama la routine AdapterControl fornita dal driver per avviare il trasferimento DMA. AllocateAdapterChannelEx è disponibile solo nella versione 3 di DMA_OPERATIONS. Per altre informazioni, vedere AllocateAdapterChannelEx.
ConfigureAdapterChannel
Un puntatore a una routine definita dal sistema abilita una funzione personalizzata implementata dal controller DMA. ConfigureAdapterChannel è disponibile solo nella versione 3 di DMA_OPERATIONS. Per altre informazioni, vedere ConfigureAdapterChannel.
CancelAdapterChannel
Puntatore a una routine definita dal sistema che tenta di annullare una richiesta in sospeso per allocare un canale DMA. CancelAdapterChannel è disponibile solo nella versione 3 di DMA_OPERATIONS. Per altre informazioni, vedere CancelAdapterChannel.
MapTransferEx
Puntatore a una routine definita dal sistema che configura registri mappa per eseguire il mapping degli indirizzi fisici in un elenco a dispersione/raccolta agli indirizzi logici necessari per eseguire un trasferimento DMA. MapTransferEx è disponibile solo nella versione 3 di DMA_OPERATIONS. Per altre informazioni, vedere MapTransferEx.
GetScatterGatherListEx
Puntatore a una routine definita dal sistema che alloca le risorse necessarie per un trasferimento DMA, compila un elenco a dispersione/raccolta e quindi chiama la routine AdapterListControl fornita dal driver per avviare il trasferimento DMA. GetScatterGatherListEx è disponibile solo nella versione 3 di DMA_OPERATIONS. Per altre informazioni, vedere GetScatterGatherListEx. Questa routine è un wrapper di AllocateAdapterChannelEx e MapTransferEx.
BuildScatterGatherListEx
Puntatore a una routine definita dal sistema che crea un elenco a dispersione/raccolta in un buffer allocato dal chiamante e quindi chiama la routine AdapterListControl fornita dal driver per avviare il trasferimento DMA. BuildScatterGatherListEx è disponibile solo nella versione 3 di DMA_OPERATIONS. Per altre informazioni, vedere BuildScatterGatherListEx.
FlushAdapterBuffersEx
Puntatore a una routine definita dal sistema che scarica tutti i dati che rimangono nella cache interna del controller DMA di sistema o nella cache interna di un adattatore bus alla fine di un trasferimento DMA. Per un dispositivo che usa un controller DMA di sistema, questa routine annulla il trasferimento DMA corrente nel controller se il trasferimento non è completo. FlushAdapterBuffersEx è disponibile solo nella versione 3 di DMA_OPERATIONS. Per altre informazioni, vedere FlushAdapterBuffersEx.
FreeAdapterObject
Puntatore a una routine definita dal sistema che rilascia l'oggetto adattatore specificato dopo che un driver ha completato tutte le operazioni DMA. FreeAdapterObject è disponibile solo nella versione 3 di DMA_OPERATIONS. Per altre informazioni, vedere FreeAdapterObject.
CancelMappedTransfer
Puntatore a una routine definita dal sistema che annulla un trasferimento mappato. CancelMappedTransfer è disponibile solo nella versione 3 di DMA_OPERATIONS. Per altre informazioni, vedere CancelMappedTransfer.
AllocateDomainCommonBuffer
Puntatore a una routine di callback PALLOCATE_DOMAIN_COMMON_BUFFER per allocare un buffer comune del dominio. Questa opzione è disponibile in Windows 10 e versioni successive.
FlushDmaBuffer
Puntatore a una funzione di callback PFLUSH_DMA_BUFFER che scarica tutti i dati rimanenti nella cache. Questa opzione è disponibile in Windows 10 e versioni successive.
JoinDmaDomain
Puntatore a una funzione di callback PJOIN_DMA_DOMAIN che aggiunge il dominio DMA specificato. Questa opzione è disponibile in Windows 10 e versioni successive.
LeaveDmaDomain
Puntatore a una PLEAVE_DMA_DOMAIN funzione di callback che lascia il dominio DMA specificato. Questa opzione è disponibile in Windows 10 e versioni successive.
GetDmaDomain
Puntatore alla funzione di callback PGET_DMA_DOMAIN che ottiene un handle per il dominio DMA. Questa opzione è disponibile in Windows 10 e versioni successive.
AllocateCommonBufferWithBounds
Puntatore a una funzione di callback PALLOCATE_COMMON_BUFFER_WITH_BOUNDS che alloca la memoria per un buffer comune ed esegue il mapping in modo che sia accessibile da un dispositivo master e dalla CPU. Il buffer comune può essere associato da un indirizzo logico minimo e massimo facoltativo. Questa opzione è disponibile a partire da Windows 10 versione 1803.
AllocateCommonBufferVector
GetCommonBufferFromVectorByIndex
FreeCommonBufferFromVector
FreeCommonBufferVector
CreateCommonBufferFromMdl
Puntatore a una funzione di callback PCREATE_COMMON_BUFFER_FROM_MDL che creerà un buffer comune DMA da un MDL ed esegue il mapping della memoria di backup in modo che sia accessibile da un dispositivo di mastering del bus e dalla CPU. Questo callback facoltativo è disponibile a partire da Windows Server 2022.
Commenti
Tutti i membri di questa struttura, ad eccezione di Size, sono puntatori alle funzioni usate dai driver per eseguire operazioni DMA per i dispositivi. I driver ottengono questi puntatori chiamando la routine IoGetDmaAdapter . La versione della struttura DMA_OPERATIONS restituita da questa routine dipende dal membro Versiondella struttura DEVICE_DESCRIPTION passata a IoGetDmaAdapter come parametro di input. Se La versione è DEVICE_DESCRIPTION_VERSION o DEVICE_DESCRIPTION_VERSION1, viene restituita la versione 1 di questa struttura. Se la versione è DEVICE_DESCRIPTION_VERSION2, viene restituita la versione 2 di questa struttura. La versione 2 di DMA_OPERATIONS è disponibile a partire da Windows XP. Se la versione è DEVICE_DESCRIPTION_VERSION3, viene restituita la versione 3 di questa struttura. La versione 3 di DMA_OPERATIONS è disponibile a partire da Windows 8.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Supportato a partire da Windows 2000. |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |