Condividi tramite


Modalità di generazione degli ID contenitore da funzionalità dei dispositivi rimovibili

Se un driver del bus non può fornire un ID contenitore per un nodo del dispositivo (devnode) che enumera, il gestore Plug and Play (PnP) usa la funzionalità del dispositivo rimovibile per generare un ID contenitore per tutti i devnodes enumerati per il dispositivo. Per altre informazioni sulla funzionalità del dispositivo rimovibile, vedere Panoramica della funzionalità dispositivo rimovibile.

L'euristica seguente descrive in che modo gli ID contenitore vengono generati dalla funzionalità del dispositivo rimovibile:

  1. Se devnode ha la funzionalità del dispositivo rimovibile impostata su TRUE, generare un nuovo ID contenitore per il devnode.

  2. Se devnode ha la funzionalità del dispositivo rimovibile impostata su FALSE, ereditare l'ID contenitore dal relativo devnode padre.

Un devnode non può enumerare i devnodes figlio finché non viene inizializzato e viene avviato lo stack di driver . Non appena viene assegnato l'ID contenitore durante l'inizializzazione, devnode è pronto per propagare l'ID contenitore in uno dei relativi elementi figlio non rimovibili quando vengono enumerati.

Un devnode con la funzionalità del dispositivo rimovibile impostato su TRUE è considerato il devnode più alto (padre) per il dispositivo e viene generato un ID contenitore per questo devnode.

Tutti gli elementi figlio di questo devnode padre ereditano lo stesso ID contenitore, a meno che non dispongano della funzionalità del dispositivo rimovibile impostata su TRUE. In questo caso, un devnode figlio rimovibile viene assegnato un ID contenitore diverso e diventa il nodo devnode padre di questo dispositivo rimovibile. Tutti gli elementi figlio di tale devnode ereditano lo stesso ID contenitore.

Si supponga, ad esempio, che un mouse a funzione singola sia connesso al computer tramite USB. In questo caso, il driver del bus USB rileva un nuovo dispositivo e rileva che è un dispositivo di interfaccia umana USB (HID). Il driver del bus USB crea quindi un devnode USB HID per il dispositivo. Il devnode HID rileva anche che il dispositivo HID è un mouse e crea un nodo di sviluppo figlio per un mouse conforme a HID

L'applicazione di questa euristica a questo esempio comporta le azioni seguenti:

  1. Viene creato il devnode USB HID. La funzionalità del dispositivo rimovibile è impostata su TRUE in questo devnode perché il devnode dell'hub USB padre ha riconosciuto che è stato collegato a una porta USB esterna.

  2. Un ID contenitore viene creato per questo devnode perché è il nodo di sviluppo più alto di un dispositivo rimovibile. Di conseguenza, questo devnode viene considerato il nodo devnode padre per il dispositivo rimovibile.

  3. Viene creato il devnode del mouse conforme a HID. La funzionalità del dispositivo rimovibile è impostata su FALSE in questo devnode perché il relativo elemento USB HID devnode padre segnala tutti i relativi elementi figlio come non rimovibili. In questo caso, il devnode del mouse conforme a HID eredita l'ID contenitore del nodo devnode padre.

Attraverso questa euristica, lo stesso ID contenitore viene assegnato a ogni nodo devnode che appartiene al mouse. Il gestore PnP raggruppa correttamente i devnodes in un dispositivo logico, anche quando non è presente alcun identificatore univoco per il dispositivo.

Nota

Il successo di questa euristica si basa su un driver del bus specifico che segnala correttamente la funzionalità del dispositivo rimovibile per ogni devnode che enumera. Il driver del bus deve assicurarsi che il nodo di sviluppo padre del dispositivo deve essere impostato come rimovibile e i relativi devnodes figlio non devono essere impostati come rimovibili.