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」を参照してください。 このルーチンは、 AllocateAdapterChannelExMapTransferEx のラッパーです

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 を含む)

こちらもご覧ください

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