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