Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa sezione descrive gli oggetti dispositivo creati da un possibile set di driver per l'hardware USB per illustrare gli oggetti dispositivo WDM e il modo in cui vengono sovrapposti.
La figura seguente mostra gli oggetti dispositivo creati dai driver di esempio menzionati in WDM Driver Layers: un esempio.
A partire dalla parte inferiore di questa figura, gli oggetti dispositivo negli stack di dispositivi di esempio includono:
Un PDO e un FDO per il bus PCI.
Il driver del bus radice enumera il bus di sistema interno (il bus radice) e crea un PDO per ogni dispositivo trovato. Uno di questi PDO è per il bus PCI. Il PDO e l'FDO per il bus radice non vengono visualizzati nella figura.
Il gestore PnP identifica il driver PCI come driver di funzione per il bus PCI, carica il driver (se non è già caricato) e passa il PDO al driver PCI. Nella routine AddDevice , il driver PCI crea un FDO per il bus PCI (IoCreateDevice) e collega l'fdO allo stack di dispositivi (IoAttachDeviceToDeviceStack) per il bus PCI. Il driver PCI crea e collega questo fdO come parte delle sue responsabilità come driver di funzione per il bus PCI.
In questo esempio non sono presenti driver di filtro per il bus PCI.
Un PDO e un FDO per il controller USB host.
Il gestore PnP istruisce il driver PCI ad avviare il suo dispositivo (IRP_MN_START_DEVICE) e quindi interroga il driver PCI per i suoi elementi figlio (IRP_MN_QUERY_DEVICE_RELATIONS di tipo BusRelations). In risposta, il driver PCI enumera i dispositivi sul bus. In questo esempio, il driver PCI trova un controller host USB e crea un PDO per tale dispositivo. La freccia larga nella figura indica che il controller host USB è un "figlio" del bus PCI. Il driver PCI crea PDOs per i propri dispositivi figli come parte delle sue responsabilità di driver del bus PCI.
Il gestore PnP identifica la coppia di driver miniclass/classe del controller host USB come driver di funzione per il controller host USB e carica la coppia di driver. Il gestore PnP chiama la coppia di driver al momento appropriato per creare e collegare un fdO per il controller host USB.
In questo esempio non sono presenti driver di filtro per il controller host USB.
Un PDO e un FDO per l'hub USB.
Il controller host USB enumera il bus, individua l'hub USB nella sola porta e crea un PDO per l'hub. Il driver dell'hub USB crea e collega un FDO per l'hub.
In questo esempio non sono presenti driver di filtro per l'hub USB.
Un PDO, un FDO e due DO filtro per il dispositivo di joystick.
Il driver dell'hub USB enumera il bus, individua un dispositivo HID (joystick) e crea un PDO per il joystick.
In questo esempio è stato configurato un driver di filtro di livello inferiore nel Registro di sistema per i dispositivi joystick, quindi il gestore PnP carica il driver di filtro. Il driver di filtro determina che è rilevante per il dispositivo e crea e collega un filtro DO allo stack di dispositivi.
Il gestore PnP determina che il driver di funzione per il dispositivo joystick è la coppia di driver di classe HID/miniclass e carica tali driver. La coppia di driver è costituita da un minidriver collegato a una DLL del driver di classe; insieme agiscono come un unico driver funzionale per il dispositivo. La coppia di driver di classe/miniclasse crea un oggetto dispositivo, l'oggetto FDO e lo collega allo stack di dispositivi.
Un driver di filtro di livello superiore crea e collega un filtro DO allo stack di dispositivi, in modo simile al filtro di livello inferiore.
Si noti che il PDO creato dal driver del bus padre è sempre posizionato nella parte inferiore dello stack di dispositivi per un determinato dispositivo. Quando i driver gestiscono PnP o power IRP, devono passare ogni IRP fino in fondo allo stack di dispositivi al PDO e al driver del bus associato.
La figura seguente mostra gli stessi stack di dispositivi della figura precedente, ma sottolinea quali oggetti dispositivo vengono creati e gestiti dai driver.
Un driver del bus si estende su più di uno stack di dispositivi. Un driver del bus crea l'FDO per il suo adattatore/controller del bus e crea un PDO per ciascuno dei suoi dispositivi figlio.