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)

Vedi anche

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