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) |