ユーザーが AV/C デバイスをコンピューターに接続すると、 Avc.sys デバイス上のアクティブなサブユニットが列挙され、デバイス識別子 (ID) 文字列が生成されます。 AV/C デバイス内のアクティブなサブユニットごとにデバイス識別子があります。 AV/C デバイスにアクティブなサブユニットがない場合、 Avc.sys は AV/C デバイス自体のデバイス識別子を生成します。
ピア サブユニットのデバイス識別子フィールドの形式は次のとおりです。
AVC\Vendor>Model>SubunitType>SubunitID
仮想サブユニットのデバイス識別子フィールドの形式は次のとおりです。
VAVC\Vendor>Model>SubunitType>SubunitID
数値が使用されるフィールドでは、数値は 16 進数に変換され、アルファ文字は大文字に変換されます。 先頭のゼロはありません。 ドライバーの INF ファイルで指定されたデバイス識別子は、この形式と一致する必要があります。 ハードウェア識別子と互換性のある識別子のすべての数値フィールドは、次のようにタグ付けされます (例外は示されています)。
ベンダー: VEN_ (ベンダー テキストが使用可能でない場合)
モデル: MOD_ (モデル テキストが使用可能でない場合)
SubunitType: TYP_
SubunitID: ID_
Avc.sys は、外部 AV/C デバイスに存在するアクティブなサブユニットごとにデバイス オブジェクトを作成します。 IEEE 1394 バスのリセットは、AV/C デバイスが IEEE 1394 バスに追加または IEEE 1394 バスから削除されるたびにトリガーされます。 Avc.sys 接続されているすべての AV/C デバイスでアクティブなサブユニットを再列挙します。 再列挙により、デバイスは AV/C デバイスの動作モードが切り替えるたびに 、Avc.sys を再読み込みすることなく、サブユニットを追加または削除するようにデバイス自体を再構成できます。 たとえば、この機能は、DV ビデオカメラがカメラ モードと VTR モードの間で切り替わるときに適用されます。 その結果、サブユニット ドライバーは、対応するアクティブなサブユニットが追加および削除されるときにのみ読み込まれ、アンロードされます。
Avc.sys は、同じ SubunitType の複数のサブユニットを区別できないため、これらのサブユニットを追加および削除すると、対応するサブユニット ドライバーが読み込まれると、最も高い SubunitID を持つサブユニット ドライバーがアンロードされます。
各サブユニットのデバイス オブジェクトには、1 つまたは 2 つのハードウェア識別子と複数の互換性のある識別子があります。 ベンダーは、サブユニット ドライバーの INF ファイルで以下に説明する、これらのハードウェアまたは互換性のある識別子の 1 つ以上を指定する必要があります。 Windows では、これらのデバイス識別子を使用して、デバイスがコンピューターに初めて接続されるときに、各サブユニットに読み込む適切なドライバーを見つけます。 AV/C デバイスのハードウェアと互換性のあるデバイス識別子の例については、Microsoft が提供する 61883.inf、 Msdv.inf 、 Mstape.inf ファイルを調べることができます。 INF ファイルの実装の詳細については、「 INF ファイルセクション と INF ファイル ディレクティブ」を参照してください。
デバイス識別子文字列の個々の要素は次のとおりです。
ベンダー
IEEE 1394 構成 ROM の Unit Capabilities ルート ディレクトリにベンダー名のテキストが存在する場合は、ベンダー名のテキストが [ベンダー ] フィールドで使用されます。 例えば次が挙げられます。
AVC\Microsoft>Model>SubunitType>SubunitID
それ以外の場合は、ベンダーの一意の番号 (IEEE 1394 貿易協会によって割り当てられた番号) が [ベンダー ] フィールドで使用されます。 次の例では、"50F2" は Microsoft の 1394TA ベンダー番号です。
AVC\VEN_50F2>Model>SubunitType>SubunitID
ベンダー名のテキストが存在しない場合、数値は IEEE 1394 構成 ROM のルート ディレクトリのModule_Vendor_ID エントリから取得されます。 この即時エントリのコマンドおよびステータス レジスタ (CSR) アーキテクチャ キーは 0316 (16 進数) で、残りの 24 ビットは数値Module_Vendor_ID エントリです。
モデルの
モデル名テキストが IEEE 1394 構成 ROM のユニット機能に存在する場合は、モデル名のテキストが [モデル ] フィールドで使用されます。 例えば次が挙げられます。
AVC\Microsoft&DVCamcorder&SubunitType&SubunitID
それ以外の場合は、[モデル] フィールドで モデル 番号が使用されます。 例えば次が挙げられます。
AVC\Microsoft&MOD_0&SubunitType&SubunitID
1394 構成 ROM ユニット ディレクトリのモデル テキストが使用され、ユニット ディレクトリ エントリが優先されます。 優先順位は次のとおりです。
1.ユニット ディレクトリからの数値識別子。
1.ルート ディレクトリからのモデル テキスト。
1.ルート ディレクトリからのモデル識別子。
SubunitType
使用可能な場合、 SubunitType フィールドはサブユニット アドレスから抽出され、バイトごとに 16 進値の文字列に変換されます。 サブユニット型が拡張されている場合にのみ、複数のバイトがあります。 通常、最初のバイトは、 AV/C デジタル インターフェイス コマンド セットの一般的な仕様 Rev 3.0 のセクション 5.3.3 で説明されているように、アドレス バイトの最上位 5 ビットから抽出されます。
例: AVC\VEN_50F2&MOD_0&TYP_4>SubunitID
サポート Avc.sysサブユニット型とそれに対応する数値の一覧については、「AvcSubunitType」を参照してください。
SubunitID
SubunitType フィールドが使用可能な場合は、SubunitID フィールドも使用できます。 Avc.sys AV/C デバイスにサブユニット情報のクエリを実行すると、デバイスは各種類のサブユニットの数で応答します。 この 0 から始まるカウントは、各サブユニットのデバイス識別子を作成するために使用されます。 サブユニット アドレスの指定では 、SubunitID フィールドを拡張することもできますが、この側面はサブユニット ドライバー (および INF ファイルの作成者) には表示されません。 0 から始まるインスタンス番号は、すべてのケースで使用されます。 たとえば、 SubunitID フィールドが 270 サブユニットをサポートするように拡張されている場合、270 番目のサブユニットのサブユニット識別子は 10D (10 進数 269) です。 例えば次が挙げられます。
AVC\Microsoft&MOD_0&TYP_4&ID_10D
SubunitType または SubunitID を提供しない AV/C ユニットの場合、デバイス識別子文字列は Vendor フィールドと Model フィールドのみで構成され、末尾のアンパサンド (&) は含まれません。