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