次の方法で共有


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

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