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;

Member

Size

Die Größe dieser DMA_OPERATIONS-Struktur in Bytes.

PutDmaAdapter

Ein Zeiger auf eine systemdefinierte Routine zum Freigeben einer DMA_ADAPTER-Struktur . Weitere Informationen finden Sie unter PutDmaAdapter.

AllocateCommonBuffer

Ein Zeiger auf eine systemdefinierte Routine zum Zuordnen eines physisch zusammenhängenden DMA-Puffers. Weitere Informationen finden Sie unter AllocateCommonBuffer.

FreeCommonBuffer

Ein Zeiger auf eine systemdefinierte Routine zum Freigeben eines physisch zusammenhängenden DMA-Puffers, der zuvor von AllocateCommonBuffer zugeordnet wurde. Weitere Informationen finden Sie unter FreeCommonBuffer.

AllocateAdapterChannel

Ein Zeiger auf eine systemdefinierte Routine zum Zuordnen eines Kanals für DMA-Vorgänge. Weitere Informationen finden Sie unter AllocateAdapterChannel.

FlushAdapterBuffers

Ein Zeiger auf eine systemdefinierte Routine zum Leeren von Daten aus dem internen Cache des System- oder Bus-master Adapters nach einem DMA-Vorgang. Weitere Informationen finden Sie unter FlushAdapterBuffers.

FreeAdapterChannel

Ein Zeiger auf eine systemdefinierte Routine, um einen Kanal frei zu geben, der zuvor von AllocateAdapterChannel für DMA-Vorgänge zugewiesen wurde. Weitere Informationen finden Sie unter FreeAdapterChannel.

FreeMapRegisters

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

MapTransfer

Ein Zeiger auf eine systemdefinierte Routine zum Starten eines DMA-Vorgangs. Weitere Informationen finden Sie unter MapTransfer.

GetDmaAlignment

Ein Zeiger auf eine systemdefinierte Routine zum Abrufen der DMA-Ausrichtungsanforderungen des Controllers. 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-/Sammlungsliste für DMA erstellt. Weitere Informationen finden Sie unter GetScatterGatherList.

PutScatterGatherList

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

CalculateScatterGatherList

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

BuildScatterGatherList

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

BuildMdlFromScatterGatherList

Ein Zeiger auf eine systemdefinierte Routine, die eine MDL erstellt, die einer Punkt-/Sammlungsliste entspricht. Dieser Member ist nur in Den Versionen 2 und höher von DMA_OPERATIONS verfügbar. Weitere Informationen finden Sie unter BuildMdlFromScatterGatherList.

GetDmaAdapterInfo

Ein Zeiger auf eine systemdefinierte Routine, die die Funktionen eines Bus-master DMA-Geräts oder eines DMA-Systems beschreibt. GetDmaAdapterInfo ist nur in Version 3 von DMA_OPERATIONS verfügbar. Weitere Informationen finden Sie unter GetDmaAdapterInfo.

GetDmaTransferInfo

Ein Zeiger auf eine systemdefinierte Routine, die die Zuordnungsanforderungen für eine Punkt-/Sammlungsliste beschreibt. Diese Routine ersetzt CalculateScatterGatherList. GetDmaTransferInfo ist nur in Version 3 von DMA_OPERATIONS verfügbar. Weitere Informationen finden Sie unter GetDmaTransferInfo.

InitializeDmaTransferContext

Ein Zeiger auf eine systemdefinierte Routine, die einen undurchsichtigen DMA-Übertragungskontext initialisiert. Das Betriebssystem speichert in diesem Kontext die internen status einer DMA-Übertragung. InitializeDmaTransferContext ist nur in Version 3 von DMA_OPERATIONS verfügbar. Weitere Informationen finden Sie unter InitializeDmaTransferContext.

AllocateCommonBufferEx

Ein Zeiger auf eine systemdefinierte Routine, die Arbeitsspeicher für einen gemeinsamen Puffer zuordnet und diesen Speicher ordnet, sodass sowohl der Prozessor als auch ein DMA-Gerät darauf zugreifen kann. AllocateCommonBufferEx ist nur in Version 3 von DMA_OPERATIONS verfü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 dann die vom Treiber bereitgestellte AdapterControl-Routine aufruft, um die DMA-Übertragung zu initiieren. AllocateAdapterChannelEx ist nur in Version 3 von DMA_OPERATIONS verfügbar. Weitere Informationen finden Sie unter AllocateAdapterChannelEx.

ConfigureAdapterChannel

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

CancelAdapterChannel

Ein Zeiger auf eine systemdefinierte Routine, die versucht, eine ausstehende Anforderung zum Zuordnen eines DMA-Kanals abzubrechen. CancelAdapterChannel ist nur in Version 3 von DMA_OPERATIONS verfügbar. Weitere Informationen finden Sie unter CancelAdapterChannel.

MapTransferEx

Ein Zeiger auf eine systemdefinierte Routine, die Kartenregister zum Zuordnen der physischen Adressen in einer Punkt-/Sammlungsliste zu den logischen Adressen einrichtet, die für eine DMA-Übertragung erforderlich sind. MapTransferEx ist nur in Version 3 von DMA_OPERATIONS verfügbar. Weitere Informationen finden Sie unter MapTransferEx.

GetScatterGatherListEx

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

BuildScatterGatherListEx

Ein Zeiger auf eine systemdefinierte Routine, die eine Punkt-/Sammlungsliste in einem vom Aufrufer zugewiesenen Puffer erstellt und dann die vom Treiber bereitgestellte AdapterListControl-Routine aufruft, um die DMA-Übertragung zu initiieren. BuildScatterGatherListEx ist nur in Version 3 von DMA_OPERATIONS verfügbar. Weitere Informationen finden Sie unter BuildScatterGatherListEx.

FlushAdapterBuffersEx

Ein Zeiger auf eine systemdefinierte Routine, die alle Daten leert, die im internen Cache des System-DMA-Controllers oder im internen Cache eines Bus-master-Adapters am Ende einer DMA-Übertragung verbleiben. Bei einem Gerät, das einen DMA-Systemcontroller 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_OPERATIONS verfügbar. Weitere Informationen finden Sie unter FlushAdapterBuffersEx.

FreeAdapterObject

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

CancelMappedTransfer

Ein Zeiger auf eine systemdefinierte Routine, die eine zugeordnete Übertragung abbricht. CancelMappedTransfer ist nur in Version 3 von DMA_OPERATIONS verfügbar. Weitere Informationen finden Sie unter CancelMappedTransfer.

AllocateDomainCommonBuffer

Ein Zeiger auf eine PALLOCATE_DOMAIN_COMMON_BUFFER Rückrufroutine, um einen allgemeinen 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, die alle im Cache verbleibenden Daten leert. Diese Option ist in Windows 10 und höheren Versionen verfügbar.

JoinDmaDomain

Ein Zeiger auf eine PJOIN_DMA_DOMAIN Rückruffunktion, die die angegebene DMA-Domäne verknüpft. 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 für die 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 Arbeitsspeicher einem gemeinsamen Puffer zuordnet und ordnet ihn zu, sodass ein master Gerät und die CPU darauf zugreifen können. Der allgemeine Puffer kann durch 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 ordnet, sodass ein Busmastergerät und die CPU darauf zugreifen können. Dieser optionale Rückruf ist ab Windows Server 2022 verfügbar.

Hinweise

Alle Elemente 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, indem sie die IoGetDmaAdapter-Routine aufrufen. Die Version der DMA_OPERATIONS-Struktur , die diese Routine zurückgibt, hängt vom Versionselement der DEVICE_DESCRIPTION-Struktur ab, das als Eingabeparameter an IoGetDmaAdapter ü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
Unterstützte Mindestversion (Client) Wird ab Windows 2000 unterstützt.
Header wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h)

Weitere Informationen

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