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 は、DMA_OPERATIONSのバージョン 3 でのみ使用できます。 詳細については、「AllocateCommonBufferEx を参照してください。
AllocateAdapterChannelEx
DMA 転送に必要なリソースを割り当て、ドライバーが提供する adapterControl ルーチンを呼び出して DMA 転送を開始するシステム定義ルーチンへのポインター。 AllocateAdapterChannelEx は、DMA_OPERATIONSのバージョン 3 でのみ使用できます。 詳細については、「AllocateAdapterChannelEx をする」を参照してください。
ConfigureAdapterChannel
システム定義ルーチンへのポインターにより、DMA コントローラーによって実装されるカスタム関数が有効になります。 ConfigureAdapterChannel は、DMA_OPERATIONSのバージョン 3 でのみ使用できます。 詳細については、「ConfigureAdapterChannel を参照してください。
CancelAdapterChannel
DMA チャネルを割り当てるための保留中の要求を取り消そうとするシステム定義ルーチンへのポインター。 CancelAdapterChannel は、DMA_OPERATIONSのバージョン 3 でのみ使用できます。 詳細については、「CancelAdapterChannel を参照してください。
MapTransferEx
散布図/収集リスト内の物理アドレスを、DMA 転送を実行するために必要な論理アドレスにマップするようにマップ レジスタを設定するシステム定義ルーチンへのポインター。 MapTransferEx は、DMA_OPERATIONSのバージョン 3 でのみ使用できます。 詳細については、「MapTransferEx を参照してください。
GetScatterGatherListEx
DMA 転送に必要なリソースを割り当て、散布図/収集リストを作成し、ドライバー提供の AdapterListControl ルーチンを呼び出して DMA 転送を開始するシステム定義ルーチンへのポインター。 GetScatterGatherListEx は、DMA_OPERATIONSのバージョン 3 でのみ使用できます。 詳細については、「GetScatterGatherListEx を参照してください。 このルーチンは、AllocateAdapterChannelEx および MapTransferEx のラッパーです。
BuildScatterGatherListEx
呼び出し元によって割り当てられたバッファーに散布図/収集リストを作成し、ドライバーが指定した AdapterListControl ルーチンを呼び出して DMA 転送を開始するシステム定義ルーチンへのポインター。 BuildScatterGatherListEx は、DMA_OPERATIONSのバージョン 3 でのみ使用できます。 詳細については、「BuildScatterGatherListEx を参照してください。
FlushAdapterBuffersEx
DMA 転送の終了時にシステム DMA コントローラーの内部キャッシュまたはバス マスター アダプターの内部キャッシュに残っているデータをフラッシュするシステム定義ルーチンへのポインター。 システム DMA コントローラーを使用するデバイスの場合、転送が完了していない場合、このルーチンはコントローラーの現在の DMA 転送をキャンセルします。 FlushAdapterBuffersEx は、DMA_OPERATIONSのバージョン 3 でのみ使用できます。 詳細については、「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 メンバーによって異なります。 バージョン がDEVICE_DESCRIPTION_VERSIONまたはDEVICE_DESCRIPTION_VERSION1の場合は、この構造体のバージョン 1 が返されます。 バージョン がDEVICE_DESCRIPTION_VERSION2されている場合は、この構造体のバージョン 2 が返されます。 バージョン 2 の DMA_OPERATIONS は、Windows XP 以降で使用できます。 バージョン がDEVICE_DESCRIPTION_VERSION3されている場合は、この構造体のバージョン 3 が返されます。 バージョン 3 の DMA_OPERATIONS は、Windows 8 以降で使用できます。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 以降でサポートされています。 |
ヘッダー | wdm.h (Wdm.h、Ntddk.h、Ntifs.h を含む) |
関連項目
AllocateAdapterChannel の
AllocateAdapterChannelEx の
AllocateCommonBuffer の
AllocateCommonBufferEx の
CalculateScatterGatherList の
CancelAdapterChannel の
CancelMappedTransfer の
ConfigureAdapterChannel の
FlushAdapterBuffersEx の
FreeAdapterChannel の
FreeAdapterObject を する
FreeCommonBuffer を する
GetDmaAdapterInfo の
GetDmaAlignment の
GetDmaTransferInfo の
GetScatterGatherList を する
GetScatterGatherListEx を する
InitializeDmaTransferContext の
IoGetDmaAdapter の
PutDmaAdapter を する
PutScatterGatherList を する