Udostępnij przez


Jak identyfikatory kontenerów są generowane na podstawie możliwości urządzenia wymiennego

Jeśli sterownik magistrali nie może podać identyfikatora kontenera dla węzła urządzenia (devnode), który jest wyliczany, menedżer Plug and Play (PnP) używa możliwości urządzenia wymiennego do wygenerowania identyfikatora kontenera dla wszystkich węzłów devnode wyliczonych dla urządzenia. Aby uzyskać więcej informacji na temat możliwości urządzenia wymiennego, zobacz Omówienie możliwości urządzenia wymiennego.

W poniższej heurystyce wyjaśnia się sposób generowania identyfikatorów kontenerów na podstawie możliwości urządzenia wymiennego.

  1. Jeśli devnode ma obsługę urządzenia wymiennego ustawioną na TRUE, wygeneruj nowy identyfikator kontenera dla tego devnode.

  2. Jeśli węzeł devnode ma możliwość urządzenia wymiennego ustawioną na WARTOŚĆ FALSE, dziedzicz identyfikator kontenera z nadrzędnego węzła deweloperskiego.

Węzeł devnode nie może wyliczać podrzędnych węzłów devnode, dopóki nie zostanie zainicjowany i zostanie uruchomiony jego stos sterowników . Gdy tylko identyfikator kontenera zostanie przypisany podczas inicjowania, węzeł devnode jest gotowy do propagowania identyfikatora kontenera w dół do dowolnych elementów podrzędnych, które nie są wymienne, gdy są wyliczane.

Węzeł urządzenia posiadający ustawioną możliwość urządzenia wymiennego na TRUE jest uważany za najwyższy w hierarchii węzeł dla urządzenia, a dla tego węzła urządzenia generowany jest identyfikator kontenera.

Wszystkie elementy podrzędne tego nadrzędnego węzła urządzenia dziedziczą ten sam identyfikator kontenera, chyba że same mają ustawienia definiujące wymienność urządzenia ustawione na TRUE. W takim przypadku usuwalny węzeł podrzędny devnode otrzymuje inny identyfikator kontenera i staje się węzłem nadrzędnym tego urządzenia wymiennego. Wszystkie dzieci tego devnode dziedziczą ten sam identyfikator kontenera.

Załóżmy na przykład, że mysz jednofunkcyjna jest podłączona do komputera za pośrednictwem portu USB. W takim przypadku sterownik magistrali USB wykrywa nowe urządzenie i wykrywa, że jest to urządzenie interfejsu użytkownika USB (HID). Sterownik magistrali USB następnie tworzy węzeł urządzenia USB HID dla danego urządzenia. Węzeł deweloperski HID wykrywa również, że urządzenie HID jest myszą i tworzy podrzędny węzeł deweloperski dla myszy zgodnej z protokołem HID

Zastosowanie tej heurystyki do tego przykładu powoduje wykonanie następujących akcji:

  1. Węzeł devnode HID USB został utworzony. Możliwość urządzenia wymiennego jest ustawiona na wartość TRUE w tym węźle deweloperskim, ponieważ jego nadrzędny węzeł devnode USB rozpoznał, że został podłączony do zewnętrznego portu USB.

  2. Identyfikator kontenera jest tworzony dla tego węzła urządzenia, ponieważ jest to najwyższy w hierarchii węzeł urządzenia wymiennego. W związku z tym ten węzeł devnode jest uważany za nadrzędny węzeł dla urządzenia wymiennego.

  3. Węzeł urządzenia myszy zgodny ze standardem HID został utworzony. Możliwość urządzenia wymiennego jest ustawiona na fałsz w tym węźle urządzenia, ponieważ jego nadrzędny węzeł USB HID zgłasza wszystkie węzły podrzędne jako niewymienne. W takim przypadku zgodny z HID węzeł urządzenia myszy dziedziczy identyfikator kontenera węzła nadrzędnego.

Za pomocą tego heurystyku ten sam identyfikator kontenera jest przypisywany do każdego węzła urządzenia, który należy do myszy. Menedżer pnP pomyślnie zgrupował węzły devnodes w urządzeniu logicznym, nawet jeśli nie ma unikatowego identyfikatora urządzenia.

Uwaga

Sukces tej heurystyki opiera się na konkretnym sterowniku magistrali, który prawidłowo zgłasza możliwości urządzenia wymiennego dla każdego węzła deweloperskiego, który wylicza. Sterownik magistrali musi upewnić się, że nadrzędny węzeł urządzenia jest ustawiony jako wymienny, a jego podrzędne węzły urządzenia nie są ustawiane jako wymienne.