次の方法で共有


WDF_DMA_ENABLER_CONFIG構造体 (wdfdmaenabler.h)

[KMDF にのみ適用]

WDF_DMA_ENABLER_CONFIG 構造体は、DMA イネーブラー オブジェクトの特性を提供します。

構文

typedef struct _WDF_DMA_ENABLER_CONFIG {
  ULONG                                    Size;
  WDF_DMA_PROFILE                          Profile;
  size_t                                   MaximumLength;
  PFN_WDF_DMA_ENABLER_FILL                 EvtDmaEnablerFill;
  PFN_WDF_DMA_ENABLER_FLUSH                EvtDmaEnablerFlush;
  PFN_WDF_DMA_ENABLER_DISABLE              EvtDmaEnablerDisable;
  PFN_WDF_DMA_ENABLER_ENABLE               EvtDmaEnablerEnable;
  PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_START EvtDmaEnablerSelfManagedIoStart;
  PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP  EvtDmaEnablerSelfManagedIoStop;
  ULONG                                    AddressWidthOverride;
  ULONG                                    WdmDmaVersionOverride;
  ULONG                                    Flags;
} WDF_DMA_ENABLER_CONFIG, *PWDF_DMA_ENABLER_CONFIG;

メンバー

Size

この構造体のサイズ (バイト単位)。

Profile

WDF_DMA_PROFILE型指定された値。DMA イネーブラー オブジェクトに関連付けられるバス マスター DMA 操作の種類を識別します。

MaximumLength

デバイスが単一の DMA 転送で処理できる既定の最大サイズ (バイト単位)。 (ドライバーは、WdfDmaTransactionSetMaximumLengthを呼び出すことによって 個々の DMA トランザクションに対してこの既定値をオーバーライドできます)。最大 16 個の マップ レジスタをサポートするバージョンの Microsoft Windows オペレーティング システムでドライバーを実行する必要がある場合は、MaximumLength 65,536 未満にする必要があります。

EvtDmaEnablerFill

ドライバーの EvtDmaEnablerFill イベント コールバック関数へのポインター、または NULL します。

EvtDmaEnablerFlush

ドライバーの EvtDmaEnablerFlush イベント コールバック関数へのポインター、または NULL します。

EvtDmaEnablerDisable

ドライバーの EvtDmaEnablerDisable イベント コールバック関数へのポインター、または NULL します。

EvtDmaEnablerEnable

ドライバーの EvtDmaEnablerEnable イベント コールバック関数へのポインター、または NULL します。

EvtDmaEnablerSelfManagedIoStart

ドライバーの EvtDmaEnablerSelfManagedIoStart イベント コールバック関数へのポインター、または NULL します。

EvtDmaEnablerSelfManagedIoStop

ドライバーの EvtDmaEnablerSelfManagedIoStop イベント コールバック関数へのポインター、または NULL します。

AddressWidthOverride

プロファイル で指定されたアドレス幅受け入れるには、0 に設定します。 ドライバーは、このメンバーを 24 ~ 63 の値に設定することで、プロファイルの アドレスの幅をオーバーライドできます。 ドライバーがシステム モード DMA プロファイルを指定する場合は、AddressWidthOverride 0 にする必要があります。 ドライバーが 32 ビット DMA プロファイルを指定している場合、AddressWidthOverride は 32 より大きくすることはできません。 AddressWidthOverride メンバーは、バージョン 1.11 以降のバージョンの KMDF で使用できます。 詳細については、解説を参照してください。

WdmDmaVersionOverride

既定の DMA バージョンを受け入れるには、0 に設定します。 DMA バージョン 3 を要求するには、3 に設定します。 WdmDmaVersionOverride メンバーは、バージョン 1.11 以降のバージョンの KMDF で使用できます。 DMA バージョン 3 は、Windows 8 以降で使用できます。

Flags

WDF_DMA_ENABLER_CONFIG_FLAGS 列挙体の 1 つ以上の値のビットごとの OR。 Flags メンバーは、バージョン 1.11 以降のバージョンの KMDF で使用できます。

注釈

WDF_DMA_ENABLER_CONFIG 構造体は、WdfDmaEnablerCreate メソッドへの入力パラメーターとして使用されます。

ドライバーは、WDF_DMA_ENABLER_CONFIG 構造体を初期化する WDF_DMA_ENABLER_CONFIG_INIT を呼び出す必要があります。

Windows 8 以降では、ドライバーが AddressWidthOverrideに 0 以外の値を提供すると、フレームワークは DMA バージョン 3 を要求し、AddressWidthOverride 値を HAL に渡します。

Windows 7 および Windows Vista では、ドライバーが AddressWidthOverride 0 以外の値を提供する場合、フレームワークは 32 ビットまたは 24 ビット DMA を使用します。 たとえば、ドライバーが 64 ビット プロファイルを指定し、AddressWidthOverride 32 を提供する場合、フレームワークは 32 ビット DMA を使用します。 ドライバーが 32 ビット プロファイルを指定し、AddressWidthOverride 24 を提供する場合、フレームワークは 24 ビット DMA を使用します。

必要条件

要件 価値
最小 KMDF バージョン 1.0
ヘッダー wdfdmaenabler.h (Wdf.h を含む)

こちらもご覧ください

EvtDmaEnablerDisable

EvtDmaEnablerEnable

EvtDmaEnablerFill

EvtDmaEnablerFlush

EvtDmaEnablerSelfManagedIoStart

EvtDmaEnablerSelfManagedIoStop

WDF_DMA_ENABLER_CONFIG_INIT

WDF_DMA_PROFILE

WdfDmaEnablerCreate

WdfDmaTransactionSetMaximumLength