Partilhar via


Como os IDs de contêiner são gerados a partir do recurso de dispositivo removível

Se um driver de barramento não puder fornecer uma ID de contentor para um nó de dispositivos (devnode) que está a enumerar, o gestor Plug and Play (PnP) usará a capacidade de dispositivo removível para gerar uma ID de contentor para todos os nós de dispositivos enumerados para o dispositivo. Para obter mais informações sobre o recurso de dispositivo removível, consulte Visão geral do recurso de dispositivo removível.

A heurística a seguir descreve como os IDs de contêiner são gerados a partir do recurso de dispositivo removível:

  1. Se o devnode tiver a capacidade do dispositivo removível definida como TRUE, gere um novo ID de contêiner para o devnode.

  2. Se o devnode tiver a capacidade do dispositivo removível definida como FALSE, herde o ID do contêiner de seu devnode pai.

Um devnode não pode enumerar devnodes filho até que ele seja inicializado e sua pilha de drivers seja iniciada. Assim que seu ID de contêiner é atribuído durante a inicialização, o devnode está pronto para propagar seu ID de contêiner para qualquer um de seus filhos não removíveis à medida que são enumerados.

Um devnode com a capacidade de dispositivo removível definida como TRUE é considerado o devnode principal (pai) do dispositivo, e um identificador de contentor é gerado para esse devnode.

Todos os filhos desse devnode pai herdam a mesma ID de contêiner, a menos que eles próprios tenham sua capacidade de dispositivo removível definida como TRUE. Nesse caso, um devnode filho removível recebe um ID de contêiner diferente e se torna o devnode pai desse dispositivo removível. Todos os filhos desse devnode herdam o mesmo ID de contêiner.

Por exemplo, suponha que um mouse de função única esteja conectado ao computador através de USB. Nesse caso, o driver de barramento USB deteta um novo dispositivo e verifica que é um dispositivo de interface humana USB (HID). Em seguida, o driver do barramento USB cria um devnode USB HID para o dispositivo. O devnode HID também deteta que o dispositivo HID é um mouse e cria um devnode filho para um mouse compatível com HID

A aplicação desta heurística a este exemplo resulta nas seguintes ações:

  1. O devnode USB HID é criado. A capacidade do dispositivo removível é definida como TRUE neste devnode porque seu devnode hub USB pai reconheceu que ele estava conectado a uma porta USB externa.

  2. Um ID de contêiner é criado para esse devnode porque ele é o devnode mais alto de um dispositivo removível. Como resultado, esse devnode é considerado o devnode pai para o dispositivo removível.

  3. O devnode de mouse compatível com HID é criado. A capacidade do dispositivo removível é definida como FALSE neste devnode porque seu devnode USB HID pai relata todos os seus filhos como não removíveis. Nesse caso, o devnode do mouse compatível com HID herda a ID do contêiner do devnode pai.

Através dessa heurística, o mesmo ID de contêiner é atribuído 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á um identificador exclusivo para o dispositivo.

Observação

O sucesso dessa heurística depende de um driver de barramento específico que relata corretamente a capacidade do dispositivo removível para cada devnode enumerado. O driver de barramento deve garantir que o devnode pai do dispositivo deve ser definido como removível, e seus devnodes filhos não devem ser definidos como removíveis.