AV/C 设备标识符
当用户将 AV/C 设备连接到计算机时, Avc.sys 枚举设备上的活动子单元并为其生成设备标识符(ID)字符串。 AV/C 设备中的每个活动子单元都有设备标识符。 如果 AV/C 设备中没有活动子单元,则 Avc.sys 为 AV/C 设备本身生成设备标识符。
对等子单位的设备标识符字段的格式为:
AVC\Vendor&Model&SubunitType&SubunitID
虚拟子单位的设备标识符字段的格式为:
VAVC\Vendor&Model&SubunitType&SubunitID
在使用数字的字段中,数字转换为十六进制,alpha 字符将转换为大写。 没有前导零。 在 INF 文件中为驱动程序指定的设备标识符必须与此格式匹配。 硬件标识符和兼容标识符中的所有数值字段都按如下所示进行标记(但有例外):
供应商: VEN_ (除非供应商文本可用)
模型: MOD_ (除非模型文本可用)
SubunitType: TYP_
SubunitID: ID_
Avc.sys 为外部 AV/C 设备上存在的每个活动子单元创建设备对象。 每当向 I企业版企业版E 1394 总线添加或从 I企业版E 1394 总线添加或删除 AV/C 设备时,都会触发 I企业版E 1394 总线重置。 Avc.sys然后重新枚举所有连接的 AV/C 设备上的活动子单元。 重新枚举允许设备重新配置自身以添加或删除子单元,而无需 Windows 在每次切换 AV/C 设备的操作模式时重新加载 Avc.sys 。 例如,当在相机模式和 VTR 模式之间切换 DV 摄像机时,此功能适用。 因此,仅当添加和删除相应的活动子单元时,子单元驱动程序才会加载和卸载。
Avc.sys无法区分同一 SubunitType 的多个子单位,因此添加和删除这些子单元加载并卸载具有最高 SubunitID 的相应子单元驱动程序。
每个子单元的设备对象都有一个或两个硬件标识符和多个兼容的标识符。 供应商必须提供一个或多个这些硬件或兼容的标识符,如以下 INF 文件中的子单元驱动程序中所述。 Windows 使用这些设备标识符在设备首次连接到计算机时查找适合加载的每个子单元的驱动程序。 可以检查 Microsoft 提供的 61883.inf、Msdv.inf 和 Mstape.inf 文件,了解 AV/C 设备的硬件和兼容设备标识符示例。 有关实现 INF 文件的详细信息,请参阅 INF 文件节 和 INF 文件指令。
设备标识符字符串的各个元素如下所示:
供应商
如果供应商名称文本存在于 I企业版E 1394 Configuration ROM 的单元功能根目录中,则供应商名称文本将在“供应商”字段中使用。 例如:
AVC\Microsoft&Model&SubunitType&SubunitID
否则,供应商的唯一编号(由 I企业版E 1394 贸易协会分配)用于“供应商”字段中。 在以下示例中,“50F2”是 Microsoft 的 1394TA 供应商编号:
AVC\VEN_50F2&Model&SubunitType&SubunitID
如果供应商名称文本不存在,则从 I企业版E 1394 Configuration ROM 根目录中的Module_Vendor_ID条目获取数值。 此即时条目的命令和状态寄存器(CSR)体系结构密钥为 0316(十六进制),其余 24 位是数字Module_Vendor_ID项。
型号
如果模型名称文本存在于 I企业版E 1394 配置 ROM 的单元功能中,则模型名称文本将在“模型”字段中使用。 例如:
AVC\Microsoft&DVCamcorder&SubunitType&SubunitID
否则,模型字段将使用 模型 编号。 例如:
AVC\Microsoft&MOD_0&SubunitType&SubunitID
使用 1394 配置 ROM 单元目录中的模型文本,优先于单元目录条目。 首选项顺序如下所示:
1.单元目录中的数字标识符。
1.根目录中的模型文本。
1.根目录中的模型标识符。
SubunitType
如果可用, 则从子单位地址中提取 SubunitType 字段,并转换为每个字节的十六进制值的字符串。 仅当子单位类型已扩展时,才会有多个字节。 通常,初始字节是从地址字节的五个最重要位中提取的,如 AV/C 数字接口命令集常规规范第 5.3.3 节中所述,Rev 3.0。
例如: AVC\VEN_50F2&MOD_0&TYP_4&SubunitID
有关Avc.sys支持的子单位类型及其相应的数值的列表,请参阅 AvcSubunitType。
SubunitID
如果 SubunitType 字段可用,则 SubunitID 字段也可用。 当Avc.sys查询 AV/C 设备以获取其子单位信息时,设备会根据每种类型的子单位计数进行响应。 此从零开始的计数用于为每个子单元创建设备标识符。 子单位地址规范还允许 扩展 SubunitID 字段,但此方面隐藏在子单位驱动程序(以及 INF 文件的作者)中。 所有情况下都使用从零开始的实例编号。 例如,如果 SubunitID 字段扩展为支持 270 个子单位,则第 270 个子单元的子单位标识符为 10D(269 decimal)。 例如:
AVC\Microsoft&MOD_0&TYP_4&ID_10D
对于不提供 SubunitType 或 SubunitID 的 AV/C 单元,设备标识符字符串仅包含供应商和模型字段,且没有尾随和(>)。