次の方法で共有


WdfDmaEnablerWdmGetDmaAdapter 関数 (wdfdmaenabler.h)

[KMDF にのみ適用]

WdfDmaEnablerWdmGetDmaAdapter メソッドは、DMA イネーブラー オブジェクトに関連付けられている WDM DMA_ADAPTER構造体へのポインターを返します。

構文

PDMA_ADAPTER WdfDmaEnablerWdmGetDmaAdapter(
  [in] WDFDMAENABLER     DmaEnabler,
  [in] WDF_DMA_DIRECTION DmaDirection
);

パラメーター

[in] DmaEnabler

ドライバーが WdfDmaEnablerCreate の以前の呼び出しから取得した DMA イネーブラー オブジェクトへのハンドル。

[in] DmaDirection

DMA 転送操作の方向を指定する WDF_DMA_DIRECTION型指定された値。 詳細については、「解説」を参照してください。

戻り値

WdfDmaEnablerWdmGetDmaAdapter、DMA_ADAPTER構造体へのポインターを返します。DmaDirection パラメーターの値が無効な場合は NULL を返します。

ドライバーが無効なオブジェクト ハンドルを提供すると、バグ チェックが発生します。

注釈

ドライバーが WdfDmaEnablerCreate を呼び出すと、ドライバーが双方向プロファイルを指定する場合、フレームワークは方向ごとに個別の アダプター オブジェクト を作成し、ドライバーが二重プロファイルを指定しない場合は 1 つのアダプター オブジェクトを作成します。

ドライバーが WdfDmaEnablerCreate を呼び出したときに二重プロファイルを指定した場合、WdfDmaEnablerWdmGetDmaAdapter メソッドの DmaDirection パラメーターの値は、読み取り操作のDMA_ADAPTER構造を取得するには WdfDmaDirectionReadFromDevice、書き込み操作用のDMA_ADAPTER構造体を取得するには WdfDmaDirectionWriteToDevice である必要があります。 ドライバーで二重プロファイルが指定されていない場合、ドライバーは WdfDmaDirectionReadFromDevice または WdfDmaDirectionWriteToDevice を指定できます。

WdfDmaEnablerWdmGetDmaAdapter が返すポインターは、DMA イネーブラー オブジェクトが削除されるまで有効です。 ドライバーが DMA イネーブラ オブジェクトの EvtCleanupCallback 関数を提供する場合、ポインターはコールバック関数が返されるまで有効です。

次のコード例では、DMA イネーブラー オブジェクトを作成し、フレームワークが読み取りおよび書き込み操作用に作成する WDM DMA_ADAPTER 構造体へのポインターを取得します。

NTSTATUS  status = STATUS_SUCCESS;
WDF_DMA_ENABLER_CONFIG  dmaConfig;
WDFDMAENABLER  dmaEnabler;
PDMA_ADAPTER  readAdapter, writeAdapter;

WDF_DMA_ENABLER_CONFIG_INIT(
                            &dmaConfig,
                            WdfDmaProfileScatterGatherDuplex,
                            maxLength
                            );
status = WdfDmaEnablerCreate(
                             Device,
                             &dmaConfig,
                             WDF_NO_OBJECT_ATTRIBUTES,
                             &dmaEnabler
                             );
if (!NT_SUCCESS (status)) {
    return status;
}

readAdapter = WdfDmaEnablerWdmGetDmaAdapter(
                                            dmaEnabler,
                                            WdfDmaDirectionReadFromDevice
                                            );
writeAdapter = WdfDmaEnablerWdmGetDmaAdapter(
                                             dmaEnabler,
                                             WdfDmaDirectionWriteToDevice
                                             );

要件

要件
対象プラットフォーム ユニバーサル
最小 KMDF バージョン 1.5
Header wdfdmaenabler.h (Wdf.h を含む)
Library Wdf01000.sys (「Framework ライブラリのバージョン管理」を参照)。
IRQL <=DISPATCH_LEVEL
DDI コンプライアンス規則 DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf)

こちらもご覧ください

DMA_ADAPTER

WDF_DMA_DIRECTION

WdfDmaEnablerCreate