AVStream の子デバイス
このセクションは、そのプラットフォームに DirectX 9.0 以降がインストールされている場合にのみ、Microsoft Windows Server 2003 以前のオペレーティング システムに適用されます。
AVStream は、デバイスのバス列挙子として機能し、Enum ブランチ内のキーごとに子デバイスを作成できます。 これを行うには、デバイス キーの下のレジストリに Enum ブランチを配置します。
具体的には、ドライバーの INF ファイルの AddReg セクションで、ベンダーはEnumの下のエントリごとに REG_SZ 型の値 pnpid を提供します。 AVStreamは、この文字列値を使用して、個々の子デバイスのプラグ アンド プレイ (PnP) ハードウェア ID を構築します。
DirectX 9.0 より前のリリースでは、AVStream は "AVStream\<pnpid>" という形式の子デバイス ハードウェア ID を作成します (<pnpid> は特定のデバイスの pnpid の値です)。
たとえば、ベンダーは INF ファイルの AddReg セクションで次のように指定します。
[MyTVDevice.AddReg]
HKR,"ENUM\CrossbarDevice",pnpid,,"MyCrossbar"
HKR,"ENUM\TunerDevice",pnpid,,"MyTuner"
したがって、AVStream は、次のデバイス ID を持つ 2 つの子デバイスを作成します。
AVStream\MyCrossbar
AVStream\MyTuner
同じ pnpid 値を指定する 2 つの異なる子デバイスからのあいまいさを解決するために、DirectX 9.0 以降では、子デバイスごとに報告される ID が変更されます。 親デバイスによって報告されるハードウェア ID ごとに、AVStream は次の形式の子デバイスの ID を作成します。
AVStream\<pnpid>#<変更された親ハードウェア ID>
変更された親ハードウェア ID は、各円記号 (\) 文字が数字記号 (#) に置き換えられた親ハードウェア ID です。
結果の文字列が長すぎる場合、AVStream は、NULL ターミネータを含む MAX_DEVICE_ID_LEN 文字で ID 文字列を終了します。 Windows Server 2003 では、この制限は cfgmgr32.h では 200 文字に設定されています。
たとえば、親デバイスは次のハードウェア ID を報告します。
PCI\VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZZZZZ&REV_VV
PCI\VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZZZZZ
MyCrossbar の pnpid キーを持つデバイスの場合、AVStream は次の子デバイス ハードウェア ID を作成します。
AVStream\MyCrossbar#PCI#VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZZZZZ&REV_VV
AVStream\MyCrossbar#PCI#VEN_XXXX&DEV_YYYY&SUBSYS_ZZZZZZZZ
AVStream は、親デバイスによって報告される互換性のある ID に対して同じプロセスを使用します。 AVStream は、次の形式の子デバイスの互換性のある ID を作成します。
AVStream\<pnpid>#<変更された親互換 ID>
互換性のある ID の名前の変更と長さの規則は、ハードウェア ID の場合と同じです。
たとえば、前述した親デバイスが、次の互換性のある ID を報告する場合です。
PCI\VEN_XXXX&DEV_YYYY&REV_VV
PCI\VEN_XXXX&DEV_YYYY
PCI\VEN_XXXX&CC_ZZZZZZ
PCI\VEN_XXXX&CC_ZZZZ
PCI\VEN_XXXX
PCI\CC_ZZZZZZ
PCI\CC_ZZZZ
MyCrossbar 子デバイスは、AVStream を通じて次の互換性のある ID を報告します。
AVStream\MyCrossbar#PCI#VEN_XXXX&DEV_YYYY&REV_VV
AVStream\MyCrossbar#PCI#VEN_XXXX&DEV_YYYY
AVStream\MyCrossbar#PCI#VEN_XXXX&CC_ZZZZZZ
AVStream\MyCrossbar#PCI#VEN_XXXX&CC_ZZZZ
AVStream\MyCrossbar#PCI#VEN_XXXX
AVStream\MyCrossbar#PCI#CC_ZZZZZZ
AVStream\MyCrossbar#PCI#CC_ZZZZ
AVStream\MyCrossbar
注意 DirectX 9.0 以降では、従来のハードウェア ID である AVStream\<pnpid> は、最低ランクの互換 ID として報告されます。 その結果、レガシ ドライバーは引き続きこれらのプラットフォームで変更されることなく動作します。 ただし、DirectX 9.0 リリースの時点で、Microsoft は、AVStream クラス バス列挙子を利用する新しいドライバーまたは修正されたドライバーを作成するベンダーに対して、新しいハードウェア ID 形式を使用することをお勧めしています。 ドライバーは、INF ファイルの互換性のある ID の一覧に古い ID を含めることで、以前のバージョンのAVStreamを実行しているプラットフォームをサポートできます。