Impostazione dei flag dell'oggetto dispositivo per Power Management
Nella routine AddDevice ogni driver crea un oggetto dispositivo (DO), un oggetto dispositivo funzionale (FDO) o un oggetto dispositivo fisico (PDO) e imposta i flag DO_ XXX nell'oggetto dispositivo per descrivere gli attributi del dispositivo e la configurazione del driver. I flag dell'oggetto dispositivo seguenti riguardano la gestione delle energia.
Flag | Descrizione |
---|---|
DO_POWER_INRUSH | Indica che l'oggetto corrente disegnato dal dispositivo aumenta quando il dispositivo viene attivato per la prima volta. Questo aumento o "inrush" dura per un breve periodo, dopo il quale l'attuale disegnato dal dispositivo scende a un livello operativo inferiore. |
DO_POWER_PAGABLE | Indica che il driver è paginabile. A partire da Windows 2000, i driver che possono essere visualizzati devono impostare il flag di DO_POWER_PAGABLE. Il gestore energia chiama tali driver in IRQL = PASSIVE_LEVEL. Per altre informazioni sui driver paginabili, vedere Creazione di driver paginabili. |
I flag dell'oggetto dispositivo vengono in genere impostati dal driver del bus quando crea l'oggetto PDO per il dispositivo. Tuttavia, alcuni driver di funzione potrebbero dover modificare i valori di questi flag come parte delle routine AddDevice . A partire da Windows Vista, il sistema operativo non richiede che tutti gli oggetti del dispositivo all'interno di uno stack di dispositivi abbiano gli stessi flag correlati all'alimentazione impostati. Tuttavia, in Windows Server 2003, Windows XP e Windows 2000, tutti gli oggetti dispositivo in uno stack di dispositivi devono avere gli stessi flag correlati all'alimentazione impostati.
A partire da Windows 2000, i driver dei dispositivi che si trovano nel percorso di paging non devono impostare il flag di DO_POWER_PAGABLE. Un driver si trova nel "percorso di paging" se partecipa alle operazioni di I/O nel file di paging. I driver che non impostano questo flag devono essere chiamabili in IRQL = DISPATCH_LEVEL. Per altre informazioni, vedere Vincoli sulle routine di invio.
In generale, i driver non devono modificare il valore del driver del bus per il flag di DO_POWER_PAGABLE e un driver non deve mai impostare questo flag se un driver di livello inferiore lo ha cancellato. Quando si gestiscono le transizioni che coinvolgono richieste di paging PnP (in genere in risposta a un IRP_MJ_PNP con IRP_MN_DEVICE_USAGE_NOTIFICATION richiesta), un driver di archiviazione deve sequenziare attentamente l'impostazione e cancellare il flag.
I driver per i dispositivi che richiedono un'alimentazione in avvio devono impostare il flag di DO_POWER_INRUSH nell'oggetto dispositivo prima di cancellare il flag di DO_DEVICE_INITIALIZING. Solo un driver nello stack di dispositivi, in genere il driver del bus (PDO), deve impostare il flag di DO_POWER_INRUSH per il dispositivo. Il flag informa che tali dispositivi devono essere alimentati uno alla volta, in sequenza con altri dispositivi, per evitare l'overload dell'alimentazione. Il risparmio energia garantisce che solo una potenza inrush IRP sia attiva ovunque nel sistema in qualsiasi momento.
A partire da Windows Vista, i driver possono impostare sia il flag DO_POWER_PAGABLE che il flag di DO_POWER_INRUSH. In Windows Server 2003, Windows XP e Windows 2000 i driver non possono impostare sia il flag di DO_POWER_PAGABLE che il flag di DO_POWER_INRUSH.