Condividi tramite


Gestione delle richieste di enumerazione

Il gestore PnP può richiedere a un driver del bus di enumerare i relativi elementi figlio in qualsiasi momento. Se si ha familiarità con le interfacce WDM, le richieste di enumerazione sono IRP_MN_QUERY_DEVICE_RELATIONS richieste con un tipo di relazione busRelations. I driver basati su framework non visualizzano queste richieste. Il framework gestisce invece le richieste usando le informazioni archiviate nell'elenco figlio di un dispositivo. Il driver è responsabile della conservazione aggiornata dell'elenco figlio in modo che il framework possa fornire informazioni corrette quando il gestore PnP richiede un'enumerazione.

I driver del bus basati su framework che supportano l'enumerazione dinamica possono ricevere una richiesta per rinumerare un determinato dispositivo figlio. Tale richiesta potrebbe essere inviata dal driver di funzione del dispositivo figlio dopo che il driver rileva un errore del dispositivo. Il framework supporta questo tipo di richiesta implementando l'interfaccia REENUMERATE_SELF_INTERFACE_STANDARD , ovvero un'interfaccia definita dal driver standard definita in wdm.h.

I driver del bus basati su framework che supportano l'enumerazione dinamica possono fornire una funzione di callback evtChildListDeviceReenumerated, che il framework chiama quando riceve una richiesta di rinumerazione dal driver di un dispositivo figlio. Se questa funzione di callback restituisce TRUE o non esiste, il framework contrassegna il dispositivo figlio come non più presente e informa il gestore PnP che l'elenco figlio del driver del bus è cambiato. Di conseguenza, il gestore PnP richiede una rinumerazione e il framework chiama la funzione di callback EvtChildListCreateDevice , che crea un nuovo PDO per il dispositivo figlio.