Condividi tramite


Panoramica delle notifiche PnP

Il gestore PnP fornisce un meccanismo per i driver e le applicazioni che devono ricevere notifiche 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:

  • CategoriaEventoCambioInterfacciaDispositivo

    Quando un driver esegue la registrazione per questa categoria di eventi in un'interfaccia del dispositivo, il gestore PnP invia una 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 un'interfaccia del dispositivo della classe specificata è stata disabilitata.

    Per altre informazioni sulle interfacce del dispositivo, vedere IoRegisterDeviceInterface e le routine correlate.

  • EventCategoryTargetDeviceChange

    Quando un driver esegue la registrazione per questa categoria di eventi in un dispositivo, il gestore PnP invia una notifica al driver quando si verificano gli eventi seguenti nel dispositivo:

    GUID_RICHIESTA_RIMOZIONE_DISPOSITIVO_DI_DESTINAZIONE
    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 inviato una richiesta di aggiornamento driver per il dispositivo. Questa notifica richiede ai driver del dispositivo di approvare o rifiutare l'operazione di rimozione imminente.

    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 autore 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 a tutti i componenti registrati per le notifiche di modifica relative al dispositivo di destinazione.

    A differenza della registrazione per le modifiche all'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.

  • CategoriaEventoCambioProfiloHardware

    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 soddisfano tipicamente queste richieste di query.

    GUID_HWPROFILE_CHANGE_COMPLETE
    Indica che il profilo hardware del computer è stato modificato. Se un driver gestisce impostazioni specifiche del profilo, tale driver deve aggiornare tali impostazioni dopo una modifica del profilo hardware.

    GUID_CAMBIO_PROFILO_HARDWARE_ANNULLATO
    Indica che una modifica del profilo hardware in sospeso è stata annullata.

La notifica PnP funziona come indicato di seguito per i componenti in modalità kernel:

  1. Un driver si registra per ricevere notifiche su una categoria di eventi chiamando IoRegisterPlugPlayNotification.

    Una routine di callback di notifica PnP rimane registrata fino a quando il driver non rimuove in modo esplicito la registrazione.

  2. Il gestore PnP chiama la routine di callback del driver quando si verifica un evento nella categoria registrata.

  3. Il driver rimuove la registrazione del callback chiamando la funzione 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 delle notifiche PnP

Uso della notifica di modifica dell'interfaccia del dispositivo PnP

Uso della notifica di modifica del dispositivo di destinazione PnP

Uso della notifica di modifica del profilo hardware PnP

Uso della notifica personalizzata PnP