Creazione di oggetti dispositivo in un driver del bus
Ogni driver del bus deve creare un oggetto dispositivo framework quando rileva che un dispositivo figlio è connesso a un dispositivo padre. Il dispositivo padre è in genere un bus, ma può anche essere un dispositivo multifunzione per cui ogni funzione richiede un set separato di driver (ad esempio una scheda audio che supporta audio digitale e MIDI). Gli oggetti dispositivo creati dai driver del bus sono denominati oggetti dispositivo fisico (PDO) perché ognuno rappresenta una connessione effettiva di un componente hardware (figlio) a un altro (l'elemento padre).
Il processo di identificazione e segnalazione dei dispositivi connessi a un bus è denominato enumerazione del bus.
Se un driver del bus esegue l'enumerazione dinamica del bus, la relativa funzione di callback EvtChildListCreateDevice riceve un handle per una struttura WDFDEVICE_INIT .
Se un driver del bus esegue l'enumerazione statica del bus, deve chiamare WdfPdoInitAllocate per ottenere un handle a una struttura di WDFDEVICE_INIT.
Per altre informazioni sull'enumerazione del bus, vedere Enumerazione dei dispositivi in un bus.
Un driver del bus può chiamare un set di metodi di inizializzazione dell'oggetto dispositivo framework, che archivia le informazioni nella struttura WDFDEVICE_INIT . Inoltre, i driver del bus possono chiamare i metodi di inizializzazione PDO del framework.
La creazione di un oggetto dispositivo framework per un dispositivo figlio enumerato include in genere i passaggi seguenti:
Registrazione delle funzioni di callback specifiche del driver del bus.
La maggior parte dei driver bus chiama WdfPdoInitSetEventCallbacks, perché deve specificare le risorse hardware di sistema richieste da un dispositivo. Per altre informazioni sulla specifica delle risorse hardware, vedere Risorse hardware per i driver Framework-Based. È possibile registrare funzioni di callback aggiuntive se il dispositivo e il driver supportano l'espulsione.
Segnalazione di stringhe di identificazione del dispositivo.
I driver del bus devono segnalare le stringhe di identificazione del dispositivo chiamando WdfPdoInitAssignDeviceID, WdfPdoInitAssignInstanceID, WdfPdoInitAddCompatibleID e WdfPdoInitAddHardwareID per ogni tipo di stringa supportata dal dispositivo. Inoltre, i driver di bus che usano la versione 1.9 o successiva del framework possono chiamare WdfPdoInitAssignContainerID.
Segnalazione se il driver del bus può supportare il dispositivo in modalità non elaborata.
Se il driver del bus supporta la modalità non elaborata per il dispositivo, deve chiamare WdfPdoInitAssignRawDevice.
Specifica del testo visualizzabile che descrive il dispositivo.
I driver del bus chiamano WdfPdoInitAddDeviceText e WdfPdoInitSetDefaultLocale per fornire testo che descrive il dispositivo agli utenti, in più lingue.
Creazione dell'oggetto dispositivo.
Il passaggio finale della creazione di un oggetto dispositivo consiste nel chiamare WdfDeviceCreate.
Se il driver rileva un errore durante l'inizializzazione della struttura WDFDEVICE_INIT ottenuta da WdfPdoInitAllocate, il driver deve chiamare WdfDeviceInitFree anziché WdfDeviceCreate.
Dopo che il driver del bus ha creato l'oggetto dispositivo, in genere chiama WdfDeviceSetPnpCapabilities e WdfDeviceSetPowerCapabilities per segnalare le funzionalità di alimentazione e Plug and Play del dispositivo.
Ogni driver del bus è anche il driver di funzione per l'adattatore bus. Pertanto, il driver deve anche fornire una funzione di callback EvtDriverDeviceAdd . Questa funzione di callback crea un oggetto dispositivo funzionale (FDO) per ogni scheda bus nel sistema. Per altre informazioni sulla creazione di oggetti fdO, vedere Creazione di oggetti dispositivo in un driver di funzione.