AVStream ミニドライバーの初期化

デバイスの初期化を独自に処理しない AVStream ミニドライバーは、ミニドライバーの DriverEntry ルーチンから KsInitializeDriver を呼び出します。 KsInitializeDriver は、IRP ディスパッチ、PnP デバイス メッセージの追加、アンロードに加えて、AVStream ドライバーのドライバー オブジェクトを初期化します。

KsInitializeDriver を呼び出す場合、ミニドライバーはドライバー オブジェクトへのポインターを渡して、レジストリ パスへのポインターと、必要に応じてデバイス記述子オブジェクトを初期化します。 KSDEVICE_DESCRIPTOR オブジェクトを渡す必要はありません。 ミニドライバーがデバイス記述子を渡す場合、AVStream は AddDevice 時に指定された特性を持つデバイスを作成します。

デバイス記述子オブジェクトには、フィルター記述子の配列だけでなく、KSDEVICE_DISPATCH 構造体へのポインターが含まれています。 ミニドライバーが サポートするフィルターの種類ごとに KSFILTER_DESCRIPTOR を指定します。 ミニドライバーが KsInitializeDriver を呼び出すと、AVStream は、ミニドライバーによって公開されるフィルターの種類ごとにフィルター ファクトリ オブジェクトを作成します。 その後、関連付けられている作成アイテムの作成 IRP を受信すると、フィルター ファクトリによって個々のフィルターがインスタンス化されます。 各フィルター記述子には、KSPIN_DESCRIPTOR_EX オブジェクトの配列へのポインターが含まれています。 AVStream は、ミニドライバーがそのフィルターを通じて公開するピンの種類ごとに、関連するフィルターにピン ファクトリを作成します。

フィルターで特定の種類のピンに接続すると、AVStream ピン ファクトリによってピン オブジェクトが作成されます。 各フィルターは、少なくとも 1 つのピンを公開する必要があることに注意してください。 ミニドライバーは、KSPIN_DESCRIPTOR_EX の InstancesNecessary メンバーを使用して、フィルターが正しく機能するために必要なこのピンの種類のインスタンスの数を識別します。 同様に、ミニドライバーは、この構造体の InstancesPossible メンバーを使用して、ピン ファクトリがインスタンス化できるピンの数に最大を設定できます。

AVStream では、フィルター中心の処理ピン中心の処理の 2 種類の処理がサポートされています。 記述子をレイアウトするときに、各フィルターの種類で実行する処理の種類を決定します。

AVStream ミニドライバーの初期化

AVStream ミニドライバーには、ドライバーのインストールにシステムが使用する INF ファイルが必要です。 AVStream INF ファイルは、INF ファイルの作成で説明されている一般的な INF 形式に基づいています。 Windows Driver Kit (WDK) の AVStream サンプル ドライバーに付属の INF ファイルを参照することもできます。 次の AVStream 固有のガイドラインに留意してください。

親デバイスのミニドライバーを作成する場合は、INF ファイルの AddReg セクションに次のものが含まれている必要があります。

[ParentName.AddReg]
HKR,"ENUM\[DeviceName]",pnpid,,"[string]"

子デバイスのミニドライバーを作成する場合は、AddReg セクションに次のものが含まれている必要があります。

[Manufacturer]
...=ChildName
[ChildName]
...=ChildName.Device,AVStream\[string]

"AVStream" はストリーム クラス ドライバーの "Stream" であることに注意してください。

すべての AVStream ミニドライバーの場合、INF ファイル内のフィルター固有の参照文字列は、KSFILTER_DESCRIPTOR 構造体の ReferenceGuid メンバーと一致する必要があります。

記述子の詳細については、「AVStream記述子」を参照してください 。