次の方法で共有


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

こちらもご覧ください

BUS_INTERFACE_STANDARD

DEVICE_DESCRIPTION

DMA_ADAPTER

IoGetDmaAdapter