GET_DMA_ADAPTER コールバック関数 (wdm.h)
GetDmaAdapter ルーチンは、ターゲット デバイスのDMA_ADAPTER構造体を返します。
構文
GET_DMA_ADAPTER GetDmaAdapter;
_DMA_ADAPTER * GetDmaAdapter(
[in] PVOID Context,
[in] _DEVICE_DESCRIPTION *DeviceDescriptor,
[out] PULONG NumberOfMapRegisters
)
{...}
パラメーター
[in] Context
インターフェイス固有のコンテキスト情報へのポインター。 呼び出し元は、インターフェイスのBUS_INTERFACE_STANDARD構造体の Context メンバーとして渡される値を渡します。
[in] DeviceDescriptor
物理デバイスの属性を記述する DEVICE_DESCRIPTION 構造体へのポインター。
[out] NumberOfMapRegisters
ドライバーが DMA 転送操作に割り当てることができるマップ レジスタの最大数を出力時に指すポインター。 呼び出し元は、このデータを受信するために LONG 変数を割り当てる必要があります。
戻り値
GetDmaAdapter ルーチンは、成功すると、DMA_ADAPTER構造体へのポインターを返します。 アダプター構造体を割り当てることができない場合、ルーチンは NULL を返します。
注釈
ドライバーが IRQL = PASSIVE_LEVELで実行されている場合は、 IoGetDmaAdapter 関数を呼び出してデバイスの DMA アダプター オブジェクトを取得する必要があります。 IoGetDmaAdapter は、バス ドライバーが BUS_INTERFACE_STANDARD インターフェイスをサポートしているかどうかを検出します。その場合、 IoGetDmaAdapter はこのインターフェイスの GetDmaAdapter メンバーが指すルーチンを呼び出してアダプター オブジェクトを取得します。 それ以外の場合、 IoGetDmaAdapter は 同等のレガシ ルーチンを呼び出します。
ただし、IRQL ≥ DISPATCH_LEVELで実行中にドライバーがアダプター オブジェクトを取得する必要がある場合は、 IoGetDmaAdapter 関数では取得できません。 このような場合、ドライバーは、IRP_MN_QUERY_INTERFACE要求を発行して IRQL = PASSIVE_LEVEL のまま、 BUS_INTERFACE_STANDARD インターフェイスのクエリを実行する必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 以降で使用できます。 |
対象プラットフォーム | デスクトップ |
Header | wdm.h (Ntddk.h、Wdm.h を含む) |
IRQL | PASSIVE_LEVEL |