Como as IDs de contêiner são geradas com base na funcionalidade do dispositivo removível
Se um driver de barramento não puder fornecer uma ID de contêiner para um nó de dispositivo (devnode) que ele está enumerando, o gerenciador de Plug and Play (PnP) usará a funcionalidade do dispositivo removível para gerar uma ID de contêiner para todos os devnodes enumerados para o dispositivo. Para obter mais informações sobre a funcionalidade do dispositivo removível, consulte Visão geral da funcionalidade do dispositivo removível.
A heurística a seguir descreve como as IDs de contêiner são geradas com base na funcionalidade do dispositivo removível:
Se o devnode tiver a funcionalidade do dispositivo removível definida como TRUE, gere uma nova ID de contêiner para o devnode.
Se o devnode tiver a funcionalidade do dispositivo removível definida como FALSE, herde a ID do contêiner de seu devnode pai.
Um devnode não pode enumerar devnodes filho até que seja inicializado e sua pilha de driver seja iniciada. Assim que sua ID de contêiner é atribuída durante a inicialização, o devnode está pronto para propagar sua ID de contêiner para qualquer um de seus filhos não removíveis conforme eles são enumerados.
Um devnode com a funcionalidade de dispositivo removível definida como TRUE é considerado o devnode mais alto (pai) para o dispositivo e uma ID de contêiner é gerada para esse devnode.
Todos os filhos desse devnode pai herdam a mesma ID de contêiner, a menos que eles próprios tenham sua funcionalidade de dispositivo removível definida como TRUE. Nesse caso, um devnode filho removível recebe uma ID de contêiner diferente e se torna o devnode pai desse dispositivo removível. Todos os filhos desse devnode herdam a mesma ID de contêiner.
Por exemplo, suponha que um mouse de função única esteja conectado ao computador por meio de USB. Nesse caso, o driver de barramento USB detecta um novo dispositivo e detecta que ele é um HID (dispositivo de interface humana) USB. Em seguida, o driver de barramento USB cria um devnode HID USB para o dispositivo. O devnode HID também detecta que o dispositivo HID é um mouse e cria um devnode filho para um mouse compatível com HID
Aplicar essa heurística a este exemplo resulta nas seguintes ações:
O devnode HID USB é criado. A funcionalidade do dispositivo removível é definida como TRUE neste devnode porque seu devnode do hub USB pai reconheceu que ele estava conectado a uma porta USB voltada para o externo.
Uma ID de contêiner é criada para esse devnode porque é o devnode mais alto de um dispositivo removível. Como resultado, esse devnode é considerado o devnode pai para o dispositivo removível.
O devnode do mouse compatível com HID é criado. A funcionalidade do dispositivo removível é definida como FALSE neste devnode porque seu devnode USB HID pai relata todos os seus filhos como não móveis. Nesse caso, o devnode do mouse compatível com HID herda a ID do contêiner do devnode pai.
Por meio dessa heurística, a mesma ID de contêiner é atribuída a cada devnode que pertence ao mouse. O gerenciador PnP agrupou com êxito os devnodes em um dispositivo lógico, mesmo quando não há identificador exclusivo para o dispositivo.
Observação
O sucesso dessa heurística depende de um driver de barramento específico que relata corretamente a funcionalidade do dispositivo removível para cada devnode que ele enumera. O motorista do barramento deve garantir que o devnode pai do dispositivo deve ser definido como removível, e seus devnodes filho não devem ser definidos como removíveis.