次の方法で共有


ストリーミングのミニドライバー

注: このセクションでは、古い Stream.sys クラス ドライバーについて詳しく説明します。 Microsoft Windows XP のリリースでは、Microsoft は既存の ドライバーに対してのみStream.sys をサポートしています。 このリリースの時点で、Microsoft は、ベンダーに対して、AVStream クラス ドライバー モデルを使用して、新しいビデオまたはオーディオ/ビデオ マルチメディア ドライバーを開発することを検討するようお勧めしています。 詳細はAVStream の概要を参照してください。 オーディオのみのドライバーを開発する場合は、Microsoft が提供する Portcls.sys クラス ドライバーの下にオーディオ ミニポート ドライバーを記述する必要があります。 詳細については、「オーディオ ミニポート ドライバー」を参照してください。

ベンダーは、Microsoft が提供するStream.sys クラス ドライバーで動作するミニドライバーを提供することで、ビデオのみのデバイスまたはオーディオ/ビデオ デバイスをサポートできます。 このドキュメントでは、Stream.sysのもとにあるベンダーが提供するミニドライバーをストリーミング ミニドライバーと呼びます。

たとえば、ビデオ キャプチャ デバイスと DVD プレーヤーは、ストリーミング ミニドライバーでサポートできます。 テクノロジー固有の情報については、ビデオ キャプチャ デバイス DVD デコーダー ミニドライバーを参照してください。

ストリーミング ミニドライバーは、カーネル ストリーミング セマンティクスをサポートします。 このドキュメントを使用するには、ドライバ開発者は、カーネルストリーミングで説明されているように、基本的なカーネルストリーミングの概念に精通している必要があります。

ストリーム クラス ドライバーは、オペレーティング システムとの対話の多くを処理することで、ストリーミング デバイス用のハードウェア ドライバーの記述を簡単にするように設計されています。

  • ミニドライバーは、ストリーム クラス ドライバーに代わりに同期を処理させることができます。 たとえば、ストリーム クラス ドライバーは必要に応じてミニドライバーの I/O 要求をシリアル化できます。 クラス ドライバーに同期を処理させると、ミニドライバー のマルチプロセッサは安全になりますが、非再入可能になります。 これはローエンドからミディアムエンドのハードウェアに適しています。

  • クラス ドライバーは、ファイル操作を自動的に同期します。 たとえば、ストリームのオープンとデバイスは、ミューテックス、セマフォ、またはイベントを使用してミニドライバーなしで正しくシリアル化されます。

  • クラス ドライバーは、ミニドライバーからカーネル ストリーミング セマンティクスの実装を抽象化します。

  • クラス ドライバーは、PnP マネージャーとのやり取りをすべて処理します。 次に例を示します。

    • クラス ドライバーは、ミニドライバーの代わりに機能デバイス オブジェクトを作成します。
    • クラス ドライバーは、リソース構成 (ポート アドレスの変換、メモリ範囲の変換とマッピング、割り込みの接続など) を管理します。
    • クラス ドライバは、IRP_MN_START_DEVICEIRP_MN_STOP_DEVICEなどの PnP IRP を処理します。
  • 低レベルのバッファー管理はすべて、クラス ドライバーによって処理されます。

    • 必要に応じて DMA アダプター オブジェクトを割り当てます。
    • DMA のバッファーのマッピングと散布図/収集リストを作成します。
    • DMA と PIO の両方に対してバッファーを正しくロックし、フラッシュします。
  • すべての IOCTL パラメーター検証は、クラス ドライバーによって実行されます。

  • すべての要求は、ウォッチドッグ タイマーを使用してクラス ドライバーによってタイミングが設定されます。

  • ミニドライバーはデバイス オブジェクトを作成しませんが、必要に応じてクラス ドライバーのデバイス オブジェクトを共有します。 これにより、システムリソースを節約できます。

  • アダプターごとに作成されるデバイス オブジェクトは 1 つだけです。 アダプターでサポートされている複数のサブデバイス (ストリームと呼ばれます) は、カーネル ストリーミング ピンによって表されます。