Panoramica della notifica PnP
Il gestore PnP fornisce un meccanismo per i driver e le applicazioni da notificare quando si verificano determinati eventi in un dispositivo specifico o nel sistema in generale. Un driver può registrarsi per la notifica delle categorie di eventi seguenti:
EventCategoryDeviceInterfaceChange
Quando un driver registra per questa categoria di eventi in un'interfaccia del dispositivo, la gestione PnP notifica al driver degli eventi seguenti:
GUID_DEVICE_INTERFACE_ARRIVAL
Indica che è stata abilitata un'interfaccia del dispositivo della classe specificata. Ad esempio, un utente ha aggiunto un nuovo disco al computer e la gestione volumi ha abilitato un nuovo volume (un'interfaccia dispositivo della classe "volume").GUID_DEVICE_INTERFACE_REMOVAL
Indica che è stata disabilitata un'interfaccia del dispositivo della classe specificata.Per altre informazioni sulle interfacce del dispositivo, vedere IoRegisterDeviceInterface e routine correlate.
EventCategoryTargetDeviceChange
Quando un driver registra per questa categoria di eventi in un dispositivo, il gestore PnP notifica al driver quando si verificano gli eventi seguenti nel dispositivo:
GUID_TARGET_DEVICE_QUERY_REMOVE
Indica che il gestore PnP sta per rimuovere i driver per il dispositivo. Diverse azioni possono causare questo evento, tra cui: un utente ha richiesto di rimuovere il dispositivo specificato dal computer o un utente ha rilasciato una richiesta di aggiornamento driver per il dispositivo. Questa notifica richiede ai driver del dispositivo di approvare o veto l'operazione di rimozione in sospeso.GUID_TARGET_DEVICE_REMOVE_COMPLETE
Indica che il dispositivo specificato è stato rimosso dal computer o che un utente sta modificando i driver per il dispositivo.GUID_TARGET_DEVICE_REMOVE_CANCELLED
Indica che un'operazione di rimozione in sospeso nel dispositivo specificato è stata annullata.GUID_XXX (eventi personalizzati)
Indica che si è verificato un evento personalizzato nel dispositivo specificato.Un writer di driver può definire un evento personalizzato per un dispositivo. Quando il driver (o un altro componente correlato) notifica al gestore PnP che si è verificato l'evento personalizzato, il gestore PnP notifica eventuali componenti registrati per le notifiche di modifica del dispositivo di destinazione nel dispositivo.
A differenza della registrazione per le modifiche dell'interfaccia del dispositivo, che può essere considerato un interesse "passivo" nell'interfaccia, la registrazione per le modifiche del dispositivo di destinazione indica un interesse "attivo" in un dispositivo.
EventCategoryHardwareProfileChange
Questa categoria include gli eventi seguenti:
GUID_HWPROFILE_QUERY_CHANGE
Indica che un utente ha richiesto di modificare il profilo hardware del computer. Il gestore PnP usa questa notifica per chiedere ai componenti registrati se può modificare il profilo hardware senza interrompere l'operazione di sistema. I componenti registrati hanno in genere esito positivo queste richieste di query.GUID_HWPROFILE_CHANGE_COMPLETE
Indica che il profilo hardware del computer è stato modificato. Se un driver gestisce le impostazioni specifiche del profilo, tale driver deve aggiornare tali impostazioni dopo una modifica del profilo hardware.GUID_HWPROFILE_CHANGE_CANCELLED
Indica che è stata annullata una modifica del profilo hardware in sospeso.
La notifica PnP funziona come indicato di seguito per i componenti in modalità kernel:
Un driver registra per la notifica in una categoria di eventi chiamando IoRegisterPlugPlayNotification.
Una routine di callback di notifica PnP rimane registrata fino a quando il driver rimuove in modo esplicito la registrazione.
Il gestore PnP chiama la routine di callback del driver quando si verifica un evento nella categoria registrata.
Il driver rimuove la registrazione del callback chiamando IoUnregisterPlugPlayNotification.
I driver non devono generare un evento sincrono o attendere che si verifichi un evento asincrono durante l'elaborazione di una chiusura.
Per altre informazioni sulla notifica PnP, vedere le sezioni seguenti:
Linee guida per la scrittura di routine di callback di notifica PnP
Uso della notifica di modifica dell'interfaccia dispositivo PnP
Uso della notifica di modifica del dispositivo di destinazione PnP