Compartilhar via


IDs de contêiner gerados a partir de uma sobreposição de capacidades de dispositivo removível

A partir do Windows 7, novos dispositivos devem fornecer uma ID única específica do barramento (conforme descrito em ID de contêiner gerada a partir de uma ID única Bus-Specific).

Como alternativa, os drivers de dispositivo e de barramento devem definir corretamente a funcionalidade do dispositivo removível (conforme descrito em IDs de contêiner geradas a partir da funcionalidade do dispositivo removível). Para obter mais informações sobre a funcionalidade do dispositivo removível, consulte Visão geral da funcionalidade do dispositivo removível.

O Windows 7 e versões posteriores do Windows também dão suporte a um mecanismo para substituir a funcionalidade de dispositivo removível relatada. Esse mecanismo é útil para dispositivos herdados que relatam incorretamente a funcionalidade do dispositivo removível.

Embora o mecanismo de substituição não altere o valor da funcionalidade do dispositivo removível, ele força o gerenciador PnP a usar a configuração de substituição e não o valor da funcionalidade do dispositivo removível ao gerar IDs de contêiner para dispositivos.

Por meio desse mecanismo de substituição, uma ID de contêiner pode ser gerada por meio de um método baseado em registro. Assim que a ID de contêiner é gerada para o nó de dispositivo superior (pai) (devnode) de um dispositivo, essa mesma ID é herdada por cada devnode filho do dispositivo usando a heurística descrita em IDs de contêiner geradas a partir da capacidade do dispositivo removível.

O mecanismo de substituição é uma tabela de pesquisa baseada em Registro que consiste em chaves de registro mapeadas para dispositivos específicos. Essa tabela de substituição é mantida sob a chave do Registro DeviceOverrides e consiste nas seguintes chaves e subchaves do Registro.

Nível da tabela Nome da chave/subchave do Registro Descrição

1

DeviceOverrides

Chave principal para todas as substituições de capacidade de dispositivos removíveis.

2

HardwareID

Especifica a ID de hardware de um dispositivo ao qual a substituição da funcionalidade do dispositivo removível se aplica.

O nome dessa subchave é a ID de hardware real, com todos os caracteres de barra invertida ('') substituídos por caracteres de número ('#').

2

CompatibleID

Especifica a ID compatível de um dispositivo ao qual a substituição da funcionalidade do dispositivo removível se aplica.

O nome dessa subchave é a ID de hardware real, com todos os caracteres de barra invertida ('') substituídos por caracteres de número ('#').

3

LocationPaths

Especifica que somente o caminho de localização do nó de dispositivo pai do dispositivo (devnode) terá a substituição da funcionalidade do dispositivo removível aplicada.

3

ChildLocationPaths

Especifica que o caminho de localização dos devnodes filho do dispositivo terá a substituição da funcionalidade do dispositivo removível aplicada.

Nota O devnode pai do dispositivo especificado não é afetado pela substituição da funcionalidade do dispositivo removível, a menos que uma subchave do Registro LocationPaths também seja especificada, ou uma subchave do Registro ChildLocationPaths seja especificada para o devnode pai.

4

LocationPath

Especifica o caminho de localização discreto do devnode ao qual a substituição da funcionalidade do dispositivo removível se aplica.

O nome dessa subchave é o caminho de localização real para uma única instância de devnode de um dispositivo instalado no computador.

4

*

Especifica que o cancelamento da capacidade do dispositivo removível se aplica a todos os devnodes para o dispositivo especificado.

Nas subchaves de registro LocationPath e *, o valor DWORD (Removível) especifica se o devnode aplicável é considerado removível (1) ou não removível (0).

Exemplo 1

O seguinte mostra uma substituição de dispositivo para um devnode que corresponde a uma subchave do Registro hardwareID , além de um caminho de localização especificado por meio da subchave do Registro LocationPaths .

Neste exemplo, a substituição desabilitará a funcionalidade do dispositivo removível e será aplicada a todos os devnodes que têm uma ID de hardware de USB\VID_1234&PID_5678 no caminho de localização PCIROOT(0)#PCI(102)#USBROOT(0)#USB(1).

Veja a seguir um exemplo do formato de tabela do Registro para essa substituição.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceOverrides
    USB#VID_1234&PID_5678
        LocationPaths
            PCIROOT(0)#PCI(102)#USBROOT(0)#USB(1)
                Removable=0

Neste exemplo, USB#VID_1234&PID_5678 é o nome da subchave do registro HardwareID e PCIROOT(0)#PCI(102)#USBROOT(0)#USB(1) é o nome da subchave do registro LocationPath .

Essa substituição altera a forma como o gerenciador Plug and Play (PnP) interpreta a topologia do dispositivo. Observe que o devnode com um valor de ID de hardware de USB\VID_1234&PID_5678 foi marcado como não removível no registro. Uma nova ID de contêiner não é gerada para esse devnode, pois o gerenciador PnP interpreta o devnode como não sendo removível de seu pai. Em vez disso, USB\VID_1234&PID_5678 (e todos os seus filhos) herdam a ID do contêiner (ContainerID {A}) de seu pai.

O resultado dessa substituição é um único agrupamento de dispositivos, pois todos os devnodes na árvore compartilham o mesmo ID de contêiner. O dispositivo USB\VID_1234&PID_5678 é interpretado como sendo integrado ao computador.

O diagrama a seguir mostra a topologia do dispositivo resultante e a atribuição de ID de contêiner associada.

diagrama ilustrando a substituição da funcionalidade do dispositivo removível que marca um devnode como não removível.

O exemplo anterior mostra uma topologia de devnode frequentemente encontrada: computadores portáteis com dispositivos conectados a locais de barramento específicos que se identificam incorretamente como removíveis. Dispositivos fisicamente integrados a um computador, como uma Webcam ou um sensor biométrico (impressão digital), não devem ser relatados como removíveis porque um usuário não pode separá-los fisicamente do computador. A sobreposição removível permite que um fornecedor de hardware independente (IHV) ou um fabricante de equipamento original (OEM) altere a forma como o gerenciador PnP interpreta a capacidade do dispositivo removível e, assim, influencie a atribuição do ID do contêiner para o dispositivo.

Exemplo 2

O exemplo a seguir mostra uma substituição de funcionalidade de dispositivo removível para todos os devnodes que correspondem a um valor de ID de hardware específico.

Neste exemplo, a substituição habilitará a capacidade de dispositivo removível, e a substituição é aplicada aos devnodes que possuem um valor de ID de hardware USB\VID_062A&PID_0000.

Veja a seguir uma descrição de alto nível do formato de tabela de registro para essa substituição.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceOverrides
    USB#VID_062A&PID_00001
        LocationPaths
            *
                Removable=1

1 O nome da subchave do Registro hardwareID .

Neste exemplo, o devnode com uma ID de hardware de USB\VID_1234&PID_5678 relata corretamente a funcionalidade removível do dispositivo. O gerenciador PnP gera uma ID de contêiner (ContainerID {B}) para ele e todos os seus devnodes filho.

No entanto, o devnode filho com uma ID de hardware de USB\VID_062A&PID_0000 corresponde à substituição. Como resultado, o gerenciador PnP gera outra ID contida (ContainerID {C}) para esse devnode e todos os seus devnodes filho.

Como antes, essa substituição altera a interpretação do gerenciador PnP da topologia do dispositivo. O dispositivo físico recebe duas IDs de contêiner e é visto pelo Windows como dois dispositivos. Observe que o devnode com a ID de hardware do USB\VID_062A&PID_0000 é interpretado como removível ao agrupar os devnodes em dispositivos. Isso não altera o valor relatado pelo devnode para a funcionalidade removível do dispositivo.

Além disso, a subchave * do Registro foi especificada para indicar que essa substituição deve ser aplicada a todos os devnodes no computador que têm a ID de hardware de USB\VID_062A&PID_0000.

O diagrama a seguir mostra a topologia do dispositivo resultante e a atribuição de ID de contêiner associada.

diagrama ilustrando a substituição da funcionalidade do dispositivo removível que marca um devnode como removível.