DMA_OPERATIONS 構造体 (wdm.h)
DMA_OPERATIONS構造体は、DMA コントローラーの操作を制御する関数へのポインターのテーブルを提供します。
構文
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;
メンバー
Size
この DMA_OPERATIONS 構造体のサイズ (バイト単位)。
PutDmaAdapter
DMA_ADAPTER構造体を解放するためのシステム定義ルーチンへのポインター。 詳細については、「 PutDmaAdapter」を参照してください。
AllocateCommonBuffer
物理的に連続した DMA バッファーを割り当てるシステム定義ルーチンへのポインター。 詳細については、「 AllocateCommonBuffer」を参照してください。
FreeCommonBuffer
AllocateCommonBuffer によって以前に割り当てられた物理的に連続した DMA バッファーを解放するためのシステム定義ルーチンへのポインター。 詳細については、「 FreeCommonBuffer」を参照してください。
AllocateAdapterChannel
DMA 操作用のチャネルを割り当てるシステム定義ルーチンへのポインター。 詳細については、「 AllocateAdapterChannel」を参照してください。
FlushAdapterBuffers
DMA 操作後にシステムまたはバス マスター アダプターの内部キャッシュからデータをフラッシュするシステム定義ルーチンへのポインター。 詳細については、「 FlushAdapterBuffers」を参照してください。
FreeAdapterChannel
AllocateAdapterChannel によって DMA 操作用に以前に割り当てられたチャネルを解放するためのシステム定義ルーチンへのポインター。 詳細については、「 FreeAdapterChannel」を参照してください。
FreeMapRegisters
DMA 操作に割り当てられたマップ レジスタを解放するためのシステム定義ルーチンへのポインター。 詳細については、「 FreeMapRegisters」を参照してください。
MapTransfer
DMA 操作を開始するためのシステム定義ルーチンへのポインター。 詳細については、「 MapTransfer」を参照してください。
GetDmaAlignment
コントローラーの DMA アラインメント要件を取得するためのシステム定義ルーチンへのポインター。 詳細については、「 GetDmaAlignment」を参照してください。
ReadDmaCounter
DMA 操作の現在の転送カウントを取得するシステム定義ルーチンへのポインター。 詳細については、「 ReadDmaCounter」を参照してください。
GetScatterGatherList
マップ レジスタを割り当て、DMA の散布/収集リストを作成するシステム定義ルーチンへのポインター。 詳細については、「 GetScatterGatherList」を参照してください。
PutScatterGatherList
DMA 操作の完了後にマップ レジスタと散布図/収集リストを解放するシステム定義ルーチンへのポインター。 詳細については、「 PutScatterGatherList」を参照してください。
CalculateScatterGatherList
I/O データ バッファーを記述する散布/収集リストを保持するために必要なバッファー サイズを決定するシステム定義ルーチンへのポインター。 このメンバーは、バージョン 2 以降の DMA_OPERATIONSでのみ使用できます。 詳細については、「 CalculateScatterGatherList」を参照してください。
BuildScatterGatherList
マップ レジスタを割り当て、ドライバー指定のバッファーに DMA の散布/収集リストを作成するシステム定義ルーチンへのポインター。 このメンバーは、バージョン 2 以降の DMA_OPERATIONSでのみ使用できます。 詳細については、「 BuildScatterGatherList」を参照してください。
BuildMdlFromScatterGatherList
散布図/収集リストに対応する MDL を構築するシステム定義ルーチンへのポインター。 このメンバーは、バージョン 2 以降の DMA_OPERATIONSでのみ使用できます。 詳細については、「 BuildMdlFromScatterGatherList」を参照してください。
GetDmaAdapterInfo
バス マスター DMA デバイスまたはシステム DMA コントローラーの機能を記述するシステム定義ルーチンへのポインター。 GetDmaAdapterInfo は、 DMA_OPERATIONSのバージョン 3 でのみ使用できます。 詳細については、「 GetDmaAdapterInfo」を参照してください。
GetDmaTransferInfo
散布図/収集リストの割り当て要件を記述するシステム定義ルーチンへのポインター。 このルーチンは CalculateScatterGatherList を置き換えます。 GetDmaTransferInfo は、 DMA_OPERATIONSのバージョン 3 でのみ使用できます。 詳細については、「 GetDmaTransferInfo」を参照してください。
InitializeDmaTransferContext
不透明な DMA 転送コンテキストを初期化するシステム定義ルーチンへのポインター。 オペレーティング システムは、このコンテキストで DMA 転送の内部状態を格納します。 InitializeDmaTransferContext は、 DMA_OPERATIONSのバージョン 3 でのみ使用できます。 詳細については、「 InitializeDmaTransferContext」を参照してください。
AllocateCommonBufferEx
共通バッファーにメモリを割り当て、プロセッサと DMA デバイスの両方からアクセスできるようにこのメモリをマップするシステム定義ルーチンへのポインター。 AllocateCommonBufferEx は、バージョン 3 の DMA_OPERATIONSでのみ使用できます。 詳細については、「 AllocateCommonBufferEx」を参照してください。
AllocateAdapterChannelEx
DMA 転送に必要なリソースを割り当て、ドライバー提供の AdapterControl ルーチンを呼び出して DMA 転送を開始するシステム定義ルーチンへのポインター。 AllocateAdapterChannelEx は、バージョン 3 の DMA_OPERATIONSでのみ使用できます。 詳細については、「 AllocateAdapterChannelEx」を参照してください。
ConfigureAdapterChannel
システム定義ルーチンへのポインターにより、DMA コントローラーによって実装されるカスタム関数が有効になります。 ConfigureAdapterChannel は、バージョン 3 の DMA_OPERATIONSでのみ使用できます。 詳細については、「 ConfigureAdapterChannel」を参照してください。
CancelAdapterChannel
DMA チャネルを割り当てる保留中の要求を取り消そうとするシステム定義ルーチンへのポインター。 CancelAdapterChannel は、バージョン 3 の DMA_OPERATIONSでのみ使用できます。 詳細については、「 CancelAdapterChannel」を参照してください。
MapTransferEx
分散/収集リスト内の物理アドレスを DMA 転送に必要な論理アドレスにマップするようにマップ レジスタを設定するシステム定義ルーチンへのポインター。 MapTransferEx は、 DMA_OPERATIONSのバージョン 3 でのみ使用できます。 詳細については、「 MapTransferEx」を参照してください。
GetScatterGatherListEx
DMA 転送に必要なリソースを割り当て、散布図/収集リストを作成し、ドライバー提供 の AdapterListControl ルーチンを呼び出して DMA 転送を開始するシステム定義ルーチンへのポインター。 GetScatterGatherListEx は、バージョン 3 の DMA_OPERATIONSでのみ使用できます。 詳細については、「 GetScatterGatherListEx」を参照してください。 このルーチンは、 AllocateAdapterChannelEx と MapTransferEx のラッパーです。
BuildScatterGatherListEx
呼び出し元によって割り当てられたバッファーに散布/収集リストを作成し、ドライバー提供の AdapterListControl ルーチンを呼び出して DMA 転送を開始するシステム定義ルーチンへのポインター。 BuildScatterGatherListEx は、バージョン 3 の DMA_OPERATIONSでのみ使用できます。 詳細については、「 BuildScatterGatherListEx」を参照してください。
FlushAdapterBuffersEx
システム DMA コントローラーの内部キャッシュまたは DMA 転送の終了時にバス マスター アダプターの内部キャッシュに残っているデータをフラッシュするシステム定義ルーチンへのポインター。 システム DMA コントローラーを使用するデバイスの場合、転送が完了していない場合、このルーチンはコントローラーの現在の DMA 転送を取り消します。 FlushAdapterBuffersEx は、バージョン 3 の DMA_OPERATIONSでのみ使用できます。 詳細については、「 FlushAdapterBuffersEx」を参照してください。
FreeAdapterObject
ドライバーがすべての DMA 操作を完了した後、指定したアダプター オブジェクトを解放するシステム定義ルーチンへのポインター。 FreeAdapterObject は、バージョン 3 の DMA_OPERATIONSでのみ使用できます。 詳細については、「 FreeAdapterObject」を参照してください。
CancelMappedTransfer
マップされた転送を取り消すシステム定義ルーチンへのポインター。 CancelMappedTransfer は、 DMA_OPERATIONSのバージョン 3 でのみ使用できます。 詳細については、「 CancelMappedTransfer」を参照してください。
AllocateDomainCommonBuffer
ドメイン共通バッファーを割り当てる PALLOCATE_DOMAIN_COMMON_BUFFER コールバック ルーチンへのポインター。 このオプションは、Windows 10 以降のバージョンで使用できます。
FlushDmaBuffer
キャッシュに残っているデータをフラッシュする PFLUSH_DMA_BUFFER コールバック関数へのポインター。 このオプションは、Windows 10 以降のバージョンで使用できます。
JoinDmaDomain
指定した DMA ドメインに参加する PJOIN_DMA_DOMAIN コールバック関数へのポインター。 このオプションは、Windows 10 以降のバージョンで使用できます。
LeaveDmaDomain
指定した DMA ドメインから離れる PLEAVE_DMA_DOMAIN コールバック関数へのポインター。 このオプションは、Windows 10 以降のバージョンで使用できます。
GetDmaDomain
DMA ドメインへのハンドルを取得する PGET_DMA_DOMAIN コールバック関数へのポインター。 このオプションは、Windows 10 以降のバージョンで使用できます。
AllocateCommonBufferWithBounds
共通バッファーにメモリを割り当て、マスター デバイスと CPU からアクセスできるようにマップする、 PALLOCATE_COMMON_BUFFER_WITH_BOUNDS コールバック関数へのポインター。 共通バッファーは、省略可能な最小および最大論理アドレスによってバインドできます。 このオプションは、Windows 10 バージョン 1803 以降で使用できます。
AllocateCommonBufferVector
GetCommonBufferFromVectorByIndex
FreeCommonBufferFromVector
FreeCommonBufferVector
CreateCommonBufferFromMdl
MDL から DMA 共通バッファーを作成し、バッキング メモリをマップしてバス マスタリング デバイスと CPU からアクセスできるようにする、 PCREATE_COMMON_BUFFER_FROM_MDL コールバック関数へのポインター。 この省略可能なコールバックは、Windows Server 2022 以降で使用できます。
注釈
Size を除くこの構造体のすべてのメンバー は、ドライバーがデバイスの DMA 操作を実行するために使用する関数へのポインターです。 ドライバーは 、IoGetDmaAdapter ルーチンを呼び出すことによって、これらのポインターを取得します。 このルーチンが返すDMA_OPERATIONS構造体のバージョンは、入力パラメーターとして IoGetDmaAdapter に渡されるDEVICE_DESCRIPTION構造体の Version メンバーによって異なります。 Version がDEVICE_DESCRIPTION_VERSIONまたはDEVICE_DESCRIPTION_VERSION1の場合、この構造体のバージョン 1 が返されます。 Version がDEVICE_DESCRIPTION_VERSION2場合、この構造体のバージョン 2 が返されます。 DMA_OPERATIONSのバージョン 2 は、Windows XP 以降で使用できます。 Version がDEVICE_DESCRIPTION_VERSION3の場合、この構造体のバージョン 3 が返されます。 バージョン 3 のDMA_OPERATIONSは、Windows 8 以降で使用できます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 以降でサポートされています。 |
Header | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |