IDs de contêiner geradas de uma substituição de funcionalidade de dispositivo removível
A partir do Windows 7, novos dispositivos devem fornecer uma ID exclusiva específica do barramento (conforme descrito em IDs de contêiner geradas de uma ID exclusiva Bus-Specific).
Como alternativa, os dispositivos e os drivers de barramento devem definir a funcionalidade do dispositivo removível corretamente (conforme descrito em IDs de contêiner geradas da funcionalidade de 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 a funcionalidade do dispositivo removível incorretamente.
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 do contêiner é gerada para o nó de dispositivo (devnode) mais alto (pai) de um dispositivo, a mesma ID de contêiner é herdada por cada devnode filho do dispositivo por meio da heurística descrita em IDs de contêiner geradas a partir da funcionalidade do dispositivo removível.
O mecanismo de substituição é uma tabela de pesquisa baseada em registro que consiste em chaves do Registro que são 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 |
Chave pai para todas as substituições de funcionalidade do dispositivo removível. |
|
2 |
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 |
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 |
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 |
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 |
Especifica o caminho de local discreto do devnode ao qual a substituição da funcionalidade do dispositivo removível se aplica. O nome dessa subchave é o caminho de local real para uma única instância de devnode de um dispositivo instalado no computador. |
|
4 |
Especifica que a substituição da funcionalidade do dispositivo removível se aplica a todos os devnodes para o dispositivo especificado. |
Nas subchaves LocationPath e * Registry, um valor DWORD (Removível) especifica se os devnodes aplicáveis são considerados removíveis (1) ou não removíveis (0).
Exemplo 1
O exemplo a seguir mostra uma substituição de dispositivo para um devnode que corresponde a uma subchave do registro HardwareID , além de um caminho de local 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 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 interpretação do gerenciador de Plug and Play (PnP) da 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 porque todos os devnodes na árvore têm a mesma 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.
O exemplo anterior mostra uma topologia devnode frequentemente encontrada: computadores portáteis com dispositivos conectados a locais de barramento específicos que se relatam 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 substituição removível permite que um IHV (fornecedor independente de hardware) ou OEM (fabricante de equipamento original) altere a forma como o gerenciador PnP interpreta a funcionalidade do dispositivo removível e, assim, afeta a atribuição de ID do contêiner para o dispositivo.
Exemplo 2
Veja a seguir 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 funcionalidade do dispositivo removível e a substituição é aplicada a devnodes que têm 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 do 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 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 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 de 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.