Enumerazione statica
L'enumerazione statica è la possibilità di rilevare e segnalare l'esistenza di dispositivi durante l'inizializzazione del sistema, con una capacità limitata di segnalare le modifiche successive alla configurazione del sistema.
I driver del bus possono usare l'enumerazione statica se il numero e il tipo di dispositivi o sottouniti funzionali sono predeterminati e permanenti e non dipendono dalla configurazione del sistema in cui è in esecuzione il driver.
Ad esempio, un driver della scheda audio può fungere da driver del bus e creare oggetti dispositivo fisici separati (PDO) per ognuna delle funzionalità della scheda, ad esempio MIDI, audio e joystick.
Elenchi figlio statici
Il framework consente ai driver di supportare l'enumerazione statica fornendo elenchi figlio statici. Ogni elenco figlio statico rappresenta un elenco di dispositivi figlio connessi a un dispositivo padre. Il driver del bus per il dispositivo padre deve identificare i dispositivi figlio dell'elemento padre, aggiungerli all'elenco figlio statico del dispositivo padre e creare un oggetto PDO per ogni dispositivo figlio figlio.
Creazione di un elenco figlio statico
Ogni volta che un driver crea un oggetto dispositivo framework che rappresenta un oggetto dispositivo funzionale (FDO) per un dispositivo, il framework crea un elenco figlio statico vuoto per il dispositivo.
Quando il framework chiama la funzione di callback EvtDriverDevice di un driver del bus, la funzione di callback deve chiamare WdfDeviceCreate per creare un oggetto FDO per il dispositivo padre. Per altre informazioni sulla creazione di un oggetto FDO, vedere Creazione di oggetti dispositivo in un driver di funzione.
Il driver deve quindi enumerare gli elementi figlio del dispositivo padre, creare pdO per gli elementi figlio e aggiungere gli elementi figlio all'elenco figlio.
Facoltativamente, il driver può chiamare WdfDeviceSetBusInformationForChildren per fornire al framework informazioni sul bus. In questo modo è consigliabile perché semplifica l'identificazione del bus da parte di dispositivi figlio e app.
Per creare un oggetto PDO per un dispositivo figlio rilevato, il driver del bus deve:
Chiamare WdfPdoInitAllocate per ottenere una struttura WDFDEVICE_INIT .
Inizializzare la struttura di WDFDEVICE_INIT.
Chiamare WdfDeviceCrea per creare un oggetto dispositivo framework che rappresenta un oggetto PDO.
Per altre informazioni sulla creazione di un oggetto PDO, vedere Creazione di oggetti dispositivo in un driver del bus.
Dopo aver chiamato WdfDeviceCreate, il driver deve chiamare WdfFdoAddStaticChild per aggiungere il dispositivo figlio all'elenco figlio.
Modifica di un elenco figlio statico
Poiché i driver devono usare solo elenchi figlio statici per le configurazioni dei dispositivi predeterminate e permanenti, è necessario che un driver modifichi un elenco figlio statico dopo la creazione. Se il driver determina che un dispositivo figlio è diventato inaccessibile, il driver può chiamare WdfPdoMarkMissing. Se un dispositivo figlio rimane accessibile ma diventa non risponde e non è utilizzabile, il driver deve impostare il membro Non riuscito della struttura WDF_DEVICE_STATE su WdfTrue e quindi chiamare WdfDeviceSetDeviceState.
Attraversamento di un elenco figlio statico
Se è necessario recuperare il contenuto di un elenco figlio statico, il driver può attraversare l'elenco eseguendo le operazioni seguenti:
Chiamata di WdfFdoLockStaticChildListForIteration.
Chiamata di WdfFdoRetrieveNextStaticChild quante volte necessario.