Gestione dell'avvio PnP in un driver di classe di archiviazione
Un driver della classe di archiviazione esegue l'inizializzazione specifica del dispositivo quando il gestore PnP chiama la routine DispatchPnP del driver di classe con una richiesta di avvio (IRP_MJ_PNP con IRP_MN_START_DEVICE). La routine DispatchPnP del driver della classe di archiviazione chiama una routine StartDevice interna o implementa la stessa funzionalità inline. Poiché le richieste di avvio inviate a un fdO devono essere gestite prima dal driver più basso nello stack, la routine DispatchPnP del driver della classe di archiviazione inoltra la richiesta al driver inferiore successivo con IoCallDriver prima di chiamare StartDevice. Se la richiesta è stata inviata a un PDO, il driver non deve inoltrare la richiesta prima di gestirla.
La routine StartDevice interna di un driver della classe di archiviazione configura l'estensione del dispositivo del relativo fdO con i dati determinati dal driver per gestire le richieste di I/O per il dispositivo. Per altre informazioni, vedere Configurazione di un'estensione del driver di classe di archiviazione.
Una routine StartDevice deve abilitare qualsiasi interfaccia del dispositivo registrata dal driver nella routine AddDevice . Vedere Classi dell'interfaccia del dispositivo. Potrebbe anche creare un collegamento simbolico per l'oggetto dispositivo.
Al termine dell'avvio del dispositivo inferiore, il driver può presupporre che il dispositivo si trova nello stato di alimentazione D0 (completamente attivo e operativo) per la maggior parte degli scopi. Se il dispositivo non è completamente alimentato, il driver della porta accoderà le richieste fino a quando il dispositivo non è pronto. Tuttavia, se la routine StartDevice del driver deve eseguire qualsiasi operazione che richiede inrush corrente, ad esempio per attivare un'unità disco, il driver deve inviare una richiesta di alimentazione D0 al driver inferiore successivo prima di eseguire l'operazione.
Un driver di un dispositivo di tipo FILE_DEVICE_DISK o FILE_DEVICE_MASS_STORAGE può registrarsi per il rilevamento inattivo e usare i timeout standard dei criteri di risparmio energia per la classe del dispositivo specificando i valori di conservazione e timeout delle prestazioni pari a -1 nella chiamata PoRegisterDeviceforIdleDetection .
Per altre informazioni sulla routine DispatchPnP di un driver della classe di archiviazione, vedere Gestione delle richieste PnP alle periferiche di archiviazione. Per altre informazioni sulla gestione delle richieste di avvio PnP, vedere Avvio di un dispositivo.