Share via


Identificadores de dispositivo AV/C

Quando um usuário conecta um dispositivo AV/C ao computador, Avc.sys enumera as subunidades ativas no dispositivo e gera as cadeias de caracteres de identificador de dispositivo (ID) para elas. Há um identificador de dispositivo para cada subunidade ativa em um dispositivo AV/C. Se não houver subunidades ativas em um dispositivo AV/C, Avc.sys gerará um identificador de dispositivo para o próprio dispositivo AV/C.

O formato dos campos de identificador de dispositivo para subunidades de mesmo nível é:

AVC\Vendor&Model&SubunitType&SubunitID

O formato dos campos de identificador de dispositivo para subunidades virtuais é:

VAVC\Vendor&Model&SubunitType&SubunitID

Nos campos em que os números são usados, os números são convertidos em hexadecimais e os caracteres alfa são convertidos em maiúsculas. Não há zeros à esquerda. O identificador de dispositivo especificado no arquivo INF para o driver deve corresponder a esse formato. Todos os campos numéricos em identificadores de hardware e identificadores compatíveis são marcados da seguinte forma (com exceções, conforme observado):

  • Fornecedor: VEN_ (a menos que o texto do fornecedor esteja disponível)

  • Modelo: MOD_ (a menos que o texto do modelo esteja disponível)

  • SubunitType: TYP_

  • ID da subunidade: ID_

Avc.sys cria um objeto de dispositivo para cada subunidade ativa presente em um dispositivo AV/C externo. Uma redefinição de barramento IEEE 1394 é acionada sempre que um dispositivo AV/C é adicionado ou removido do barramento IEEE 1394. Avc.sys então reenumera as subunidades ativas em todos os dispositivos AV/C conectados. A reenumeração permite que o dispositivo se reconfigure para adicionar ou remover subunidades sem exigir que o Windows recarregue Avc.sys sempre que o modo de operação do dispositivo AV/C for alternado. Por exemplo, essa funcionalidade se aplica quando uma filmadora DV é alternada entre o modo de câmera e o modo VTR. Consequentemente, os drivers de subunidade são carregados e descarregados somente à medida que suas subunidades ativas correspondentes são adicionadas e removidas.

Avc.sys não é possível distinguir entre várias subunidades do mesmo SubunitType, portanto, adicionar e remover essas subunidades carrega e descarrega o driver de subunidade correspondente com o SubunitID mais alto.

O objeto de dispositivo de cada subunidade tem um ou dois identificadores de hardware e vários identificadores compatíveis. Um fornecedor deve fornecer um ou mais desses identificadores de hardware ou compatíveis, descritos abaixo no arquivo INF para seu driver de subunidade. O Windows usa esses identificadores de dispositivo para localizar drivers adequados para carregar para cada subunidade na primeira vez que o dispositivo é conectado ao computador. Você pode examinar os arquivos 61883.inf, Msdv.inf e Mstape.inf fornecidos pela Microsoft para obter exemplos de identificadores de dispositivo compatíveis e de hardware para dispositivos AV/C. Para obter mais informações sobre como implementar arquivos INF, consulte Seções de arquivo INF e Diretivas de arquivo INF.

Os elementos individuais da cadeia de caracteres do identificador de dispositivo são os seguintes:

Fornecedor

Se o texto do nome do fornecedor estiver presente no diretório raiz de Recursos de Unidade da ROM de Configuração do IEEE 1394, o texto do nome do fornecedor será usado no campo Fornecedor . Por exemplo:

AVC\Microsoft&Model&SubunitType&SubunitID

Caso contrário, o número exclusivo do fornecedor (conforme atribuído pela Associação Comercial IEEE 1394) será usado no campo Fornecedor. No exemplo a seguir, "50F2" é o número de fornecedor 1394TA da Microsoft:

AVC\VEN_50F2&Modelo&SubunidadeTipo&SubunidadeID

Se o texto do nome do fornecedor não estiver presente, o valor numérico será obtido da entrada Module_Vendor_ID no diretório raiz da ROM de configuração do IEEE 1394. A chave de arquitetura CSR (Command and Status Register) para essa entrada imediata é 0316 (hexadecimal), e os 24 bits restantes são a entrada Module_Vendor_ID numérica.

Modelo

Se o texto do nome do modelo estiver presente nos Recursos da Unidade da ROM de Configuração do IEEE 1394, o texto do nome do modelo será usado no campo Modelo . Por exemplo:

AVC\Microsoft&DVCamcorder&SubunitType&SubunitID

Caso contrário, o número do modelo será usado no campo Modelo . Por exemplo:

AVC\Microsoft&MOD_0&SubunitType&SubunitID

O texto do modelo do diretório de unidade ROM de configuração 1394 é usado, dando precedência às entradas do diretório de unidade. A ordem de preferência é a seguinte:

1.O identificador numérico do diretório da unidade.

1.O texto do modelo do diretório raiz.

1.O identificador de modelo do diretório raiz.

SubunidadeTipo

Se disponível, o campo SubunitType é extraído do endereço da subunidade e convertido em uma cadeia de caracteres de valores hexadecimais para cada byte. Há vários bytes somente se o tipo de subunidade tiver sido estendido. Normalmente, o byte inicial é extraído dos cinco bits mais significativos do byte de endereço, conforme descrito na seção 5.3.3 da Especificação Geral do Conjunto de Comandos de Interface Digital AV/C, Rev 3.0.

Por exemplo: AVC\VEN_50F2&MOD_0&TYP_4&SubunitID

Para obter uma lista de tipos de subunidade que Avc.sys oferece suporte e seus valores numéricos correspondentes, consulte AvcSubunitType.

ID da subunidade

Se o campo SubunitType estiver disponível, o campo SubunitID também estará disponível. Quando Avc.sys consulta o dispositivo AV/C para obter suas informações de subunidade, o dispositivo responde com a contagem das subunidades para cada tipo. Essa contagem baseada em zero é usada para criar um identificador de dispositivo para cada subunidade. A especificação de endereço de subunidade também permite que o campo SubunitID seja estendido, mas esse aspecto fica oculto do driver de subunidade (e de você, o autor do arquivo INF). O número de instância baseado em zero é usado em todos os casos. Por exemplo, se o campo SubunitID for estendido para oferecer suporte a 270 subunidades, a 270ª subunidade terá um identificador de subunidade de 10D (269 decimais). Por exemplo:

AVC\Microsoft&MOD_0&TYP_4&ID_10D

Para unidades AV/C que não fornecem um SubunitType ou SubunitID, a cadeia de caracteres do identificador de dispositivo consiste apenas nos campos Fornecedor e Modelo, sem o e comercial à direita (&).