Freigeben über


DMA_OPERATIONS Struktur (wdm.h)

Die DMA_OPERATIONS-Struktur stellt eine Tabelle mit Zeigern auf Funktionen bereit, die den Betrieb eines DMA-Controllers steuern.

Syntax

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;

Angehörige

Size

Die Größe dieser DMA_OPERATIONS Struktur in Byte.

PutDmaAdapter

Ein Zeiger auf eine vom System definierte Routine, um eine DMA_ADAPTER Struktur frei zu geben. Weitere Informationen finden Sie unter PutDmaAdapter.

AllocateCommonBuffer

Ein Zeiger auf eine vom System definierte Routine, um einen physisch zusammenhängenden DMA-Puffer zuzuweisen. Weitere Informationen finden Sie unter AllocateCommonBuffer.

FreeCommonBuffer

Ein Zeiger auf eine vom System definierte Routine, um einen physisch zusammenhängenden DMA-Puffer freizuschalten, der zuvor von AllocateCommonBufferzugewiesen wurde. Weitere Informationen finden Sie unter FreeCommonBuffer.

AllocateAdapterChannel

Ein Zeiger auf eine vom System definierte Routine, um einen Kanal für DMA-Vorgänge zuzuweisen. Weitere Informationen finden Sie unter AllocateAdapterChannel.

FlushAdapterBuffers

Ein Zeiger auf eine vom System definierte Routine zum Leeren von Daten aus dem internen Cache des Systems oder des Busmasteradapters nach einem DMA-Vorgang. Weitere Informationen finden Sie unter FlushAdapterBuffers.

FreeAdapterChannel

Ein Zeiger auf eine vom System definierte Routine, um einen Kanal freizusetzen, der zuvor für DMA-Vorgänge durch AllocateAdapterChannelzugewiesen wurde. Weitere Informationen finden Sie unter FreeAdapterChannel.

FreeMapRegisters

Ein Zeiger auf eine systemdefinierte Routine zum Freigeben von Kartenregistern, die für DMA-Vorgänge zugeordnet sind. Weitere Informationen finden Sie unter FreeMapRegisters.

MapTransfer

Ein Zeiger auf eine vom System definierte Routine, um einen DMA-Vorgang zu starten. Weitere Informationen finden Sie unter MapTransfer.

GetDmaAlignment

Ein Zeiger auf eine vom System definierte Routine, um die DMA-Ausrichtungsanforderungen des Controllers abzurufen. Weitere Informationen finden Sie unter GetDmaAlignment.

ReadDmaCounter

Ein Zeiger auf eine systemdefinierte Routine zum Abrufen der aktuellen Übertragungsanzahl für einen DMA-Vorgang. Weitere Informationen finden Sie unter ReadDmaCounter.

GetScatterGatherList

Ein Zeiger auf eine systemdefinierte Routine, die Kartenregister zuordnet und eine Punkt-/Gather-Liste für DMA erstellt. Weitere Informationen finden Sie unter GetScatterGatherList.

PutScatterGatherList

Ein Zeiger auf eine systemdefinierte Routine, die Kartenregister freigibt, und eine Punkt/Gather-Liste nach Abschluss eines DMA-Vorgangs. Weitere Informationen finden Sie unter PutScatterGatherList.

CalculateScatterGatherList

Ein Zeiger auf eine systemdefinierte Routine, die die Puffergröße bestimmt, die erforderlich ist, um die Punkt/Erfassungsliste zu enthalten, die einen E/A-Datenpuffer beschreibt. Dieses Mitglied ist nur in Den Versionen 2 und höher von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter CalculateScatterGatherList.

BuildScatterGatherList

Ein Zeiger auf eine systemdefinierte Routine, die Kartenregister zuordnet und eine Punkt-/Gather-Liste für DMA in einem vom Treiber bereitgestellten Puffer erstellt. Dieses Mitglied ist nur in Den Versionen 2 und höher von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter BuildScatterGatherList.

BuildMdlFromScatterGatherList

Ein Zeiger auf eine systemdefinierte Routine, die eine MDL erstellt, die einer Punkt/Gather-Liste entspricht. Dieses Mitglied ist nur in Den Versionen 2 und höher von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter BuildMdlFromScatterGatherList.

GetDmaAdapterInfo

Ein Zeiger auf eine vom System definierte Routine, die die Funktionen eines Busmaster-DMA-Geräts oder eines DMA-Systems beschreibt. GetDmaAdapterInfo- ist nur in Version 3 von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter GetDmaAdapterInfo.

GetDmaTransferInfo

Ein Zeiger auf eine vom System definierte Routine, die die Zuordnungsanforderungen für eine Punkt/Gather-Liste beschreibt. Diese Routine ersetzt CalculateScatterGatherList. GetDmaTransferInfo ist nur in Version 3 von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter GetDmaTransferInfo.

InitializeDmaTransferContext

Ein Zeiger auf eine vom System definierte Routine, die einen undurchsichtigen DMA-Übertragungskontext initialisiert. Das Betriebssystem speichert den internen Status einer DMA-Übertragung in diesem Kontext. InitializeDmaTransferContext ist nur in Version 3 von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter InitializeDmaTransferContext.

AllocateCommonBufferEx

Ein Zeiger auf eine vom System definierte Routine, die Arbeitsspeicher für einen allgemeinen Puffer zuordnet und diesen Speicher zuordnet, sodass sowohl vom Prozessor als auch von einem DMA-Gerät darauf zugegriffen werden kann. AllocateCommonBufferEx ist nur in Version 3 von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter AllocateCommonBufferEx.

AllocateAdapterChannelEx

Ein Zeiger auf eine systemdefinierte Routine, die die für eine DMA-Übertragung erforderlichen Ressourcen zuordnet, und ruft dann die vom Treiber bereitgestellte AdapterControl Routine auf, um die DMA-Übertragung zu initiieren. AllocateAdapterChannelEx- ist nur in Version 3 von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter AllocateAdapterChannelEx.

ConfigureAdapterChannel

Ein Zeiger auf eine vom System definierte Routine ermöglicht eine benutzerdefinierte Funktion, die vom DMA-Controller implementiert wird. ConfigureAdapterChannel- ist nur in Version 3 von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter ConfigureAdapterChannel.

CancelAdapterChannel

Ein Zeiger auf eine vom System definierte Routine, die versucht, eine ausstehende Anforderung abzubrechen, um einen DMA-Kanal zuzuweisen. CancelAdapterChannel- ist nur in Version 3 von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter CancelAdapterChannel.

MapTransferEx

Ein Zeiger auf eine systemdefinierte Routine, die Kartenregister einrichtet, um die physischen Adressen in einer Punkt-/Sammelliste den logischen Adressen zuzuordnen, die zum Ausführen einer DMA-Übertragung erforderlich sind. MapTransferEx- ist nur in Version 3 von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter MapTransferEx.

GetScatterGatherListEx

Ein Zeiger auf eine systemdefinierte Routine, die Ressourcen zuordnet, die für eine DMA-Übertragung erforderlich sind, erstellt eine Punkt-/Gather-Liste und ruft dann die vom Treiber bereitgestellte AdapterListControl Routine auf, um die DMA-Übertragung zu initiieren. GetScatterGatherListEx ist nur in Version 3 von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter GetScatterGatherListEx. Diese Routine ist ein Wrapper von AllocateAdapterChannelEx und MapTransferEx.

BuildScatterGatherListEx

Ein Zeiger auf eine vom System definierte Routine, die eine Punkt/Gather-Liste in einem vom Aufrufer zugewiesenen Puffer erstellt, und ruft dann die vom Treiber bereitgestellte AdapterListControl Routine auf, um die DMA-Übertragung zu initiieren. BuildScatterGatherListEx- ist nur in Version 3 von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter BuildScatterGatherListEx.

FlushAdapterBuffersEx

Ein Zeiger auf eine vom System definierte Routine, die alle Daten löscht, die im internen Cache des DMA-Controllers oder im internen Cache eines Busmasteradapters am Ende einer DMA-Übertragung verbleiben. Bei einem Gerät, das einen System-DMA-Controller verwendet, bricht diese Routine die aktuelle DMA-Übertragung auf dem Controller ab, wenn die Übertragung nicht abgeschlossen ist. FlushAdapterBuffersEx- ist nur in Version 3 von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter FlushAdapterBuffersEx.

FreeAdapterObject

Ein Zeiger auf eine vom System definierte Routine, die das angegebene Adapterobjekt freigibt, nachdem ein Treiber alle DMA-Vorgänge abgeschlossen hat. FreeAdapterObject- ist nur in Version 3 von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter FreeAdapterObject.

CancelMappedTransfer

Ein Zeiger auf eine vom System definierte Routine, die eine zugeordnete Übertragung abbricht. CancelMappedTransfer ist nur in Version 3 von DMA_OPERATIONSverfügbar. Weitere Informationen finden Sie unter CancelMappedTransfer.

AllocateDomainCommonBuffer

Ein Zeiger auf eine PALLOCATE_DOMAIN_COMMON_BUFFER Rückrufroutine, um einen gemeinsamen Domänenpuffer zuzuweisen. Diese Option ist in Windows 10 und höheren Versionen verfügbar.

FlushDmaBuffer

Ein Zeiger auf eine PFLUSH_DMA_BUFFER Rückruffunktion, mit der alle im Cache verbleibenden Daten geleert werden. Diese Option ist in Windows 10 und höheren Versionen verfügbar.

JoinDmaDomain

Ein Zeiger auf eine PJOIN_DMA_DOMAIN Rückruffunktion, die der angegebenen DMA-Domäne beitritt. Diese Option ist in Windows 10 und höheren Versionen verfügbar.

LeaveDmaDomain

Ein Zeiger auf eine PLEAVE_DMA_DOMAIN Rückruffunktion, die die angegebene DMA-Domäne verlässt. Diese Option ist in Windows 10 und höheren Versionen verfügbar.

GetDmaDomain

Ein Zeiger auf die PGET_DMA_DOMAIN Rückruffunktion, die ein Handle zur DMA-Domäne abruft. Diese Option ist in Windows 10 und höheren Versionen verfügbar.

AllocateCommonBufferWithBounds

Ein Zeiger auf eine PALLOCATE_COMMON_BUFFER_WITH_BOUNDS Rückruffunktion, die den Speicher für einen allgemeinen Puffer zuweist, und ordnet ihn zu, sodass über ein Mastergerät und die CPU darauf zugegriffen werden kann. Der allgemeine Puffer kann an eine optionale minimale und maximale logische Adresse gebunden werden. Diese Option ist ab Windows 10, Version 1803, verfügbar.

AllocateCommonBufferVector

GetCommonBufferFromVectorByIndex

FreeCommonBufferFromVector

FreeCommonBufferVector

CreateCommonBufferFromMdl

Ein Zeiger auf eine PCREATE_COMMON_BUFFER_FROM_MDL Rückruffunktion, die einen allgemeinen DMA-Puffer aus einer MDL erstellt und den Sicherungsspeicher zuordnet, sodass über ein Busmastergerät und die CPU darauf zugegriffen werden kann. Dieser optionale Rückruf ist ab Windows Server 2022 verfügbar.

Bemerkungen

Alle Member dieser Struktur, mit Ausnahme von Size, sind Zeiger auf Funktionen, die Treiber zum Ausführen von DMA-Vorgängen für ihre Geräte verwenden. Treiber erhalten diese Zeiger durch Aufrufen der IoGetDmaAdapter Routine. Die Version der DMA_OPERATIONS Struktur, die diese Routine zurückgibt, hängt vom Version Member der DEVICE_DESCRIPTION Struktur ab, die an IoGetDmaAdapter als Eingabeparameter übergeben wird. Wenn Version DEVICE_DESCRIPTION_VERSION oder DEVICE_DESCRIPTION_VERSION1 ist, wird Version 1 dieser Struktur zurückgegeben. Wenn Version DEVICE_DESCRIPTION_VERSION2 ist, wird Version 2 dieser Struktur zurückgegeben. Version 2 von DMA_OPERATIONS ist ab Windows XP verfügbar. Wenn Version DEVICE_DESCRIPTION_VERSION3 ist, wird Version 3 dieser Struktur zurückgegeben. Version 3 von DMA_OPERATIONS ist ab Windows 8 verfügbar.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Wird ab Windows 2000 unterstützt.
Header- wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)

Siehe auch

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-