次の方法で共有


KsDeviceRegisterAdapterObject 関数 (ks.h)

KsDeviceRegisterAdapterObject 関数は、指定されたデバイスで DMA の分散/収集を実行するために、DMA アダプター オブジェクトを AVStream に登録します。 Win64 用にコンパイルされたすべてのドライバーでは、代わりに IKsDeviceFunctions::RegisterAdapterObjectEx を使用する必要があります。

構文

void KsDeviceRegisterAdapterObject(
  [in] PKSDEVICE       Device,
  [in] PADAPTER_OBJECT AdapterObject,
  [in] ULONG           MaxMappingsByteCount,
  [in] ULONG           MappingTableStride
);

パラメーター

[in] Device

アダプター オブジェクトを登録する AVStream デバイスを表す KSDEVICE 構造体へのポインター。

[in] AdapterObject

DMA コントローラーを表す IoGetDmaAdapter によって返されるDMA_ADAPTER構造体へのポインター。

[in] MaxMappingsByteCount

このパラメーターは、デバイスが 1 つのマッピングに対して処理できる最大バイト数を指定します。 AVStream を使用すると、連続する物理メモリの大きなチャンクを、DMA 転送の個々のマッピングにサイズ制限を課すデバイスの複数のスキャッタ/ギャザー要素に自動的に分割できます。 改ページがページ境界で発生することは保証されません。

[in] MappingTableStride

このパラメーターは、マッピング テーブル内の各エントリに必要なバイト数を指定します。 これは、少なくとも sizeof (KSMAPPING) である必要があり、必要に応じて大きくすることができます。

ミニドライバーは、コンテキスト情報として追加の領域を使用できます。

戻り値

なし

解説

KsDeviceRegisterAdapterObject を呼び出すミニドライバーは、IoGetDmaAdapter を介してアダプター オブジェクトを以前に取得する役割を担います。

また、ミニドライバーがデバイス上のフィルター上の任意のピンのKSPIN_FLAG_GENERATE_MAPPINGS フラグを指定する場合、ミニドライバーは、データを処理する前に KsDeviceRegisterAdapterObject を 呼び出す必要があることにも注意してください。 このフラグの詳細については、 KSPIN_DESCRIPTOR_EXのリファレンス ページを参照してください。 AVStream DMA サービスに関するページも参照してください。

MaxMappingByteCount を 1 つの物理ページの長さに設定した場合、マッピングが 1 つの物理ページに存在することは保証されません。 さらに、上のメンバーの説明で説明したように、 MaxMappingsByteCount を設定しても、ページ境界で中断が発生することは保証されません。 ページ境界で区切りが必要な場合は、マッピング サイズに制限を指定しないことを検討してください。代わりに、返された散布図/収集マッピングをページアラインチャンクに手動で分割します。

64 ビット AVStream ドライバーでの DMA のサポートに関するページも参照してください。

要件

要件
対象プラットフォーム ユニバーサル
Header ks.h (Ks.h を含む)
Library Ks.lib
IRQL PASSIVE_LEVEL

こちらもご覧ください

IoGetDmaAdapter

KSFILTER_DESCRIPTOR

KSMAPPING

KSPIN_DESCRIPTOR_EX