Condividi tramite


Linee guida per la scrittura di routine di callback delle notifiche PnP

Il gestore PnP chiama le routine di callback di notifica a IRQL = PASSIVE_LEVEL.

Per garantire un corretto funzionamento del sottosistema PnP, una routine di callback di notifica PnP deve seguire queste linee guida:

  1. Una routine di callback di notifica non deve bloccare.

  2. Una routine di callback di notifica non deve chiamare o causare una chiamata a routine sincrone che generano eventi PnP o qualsiasi routine che blocca l'attesa dell'installazione o della rimozione del dispositivo.

    La chiamata di tali routine durante un callback di notifica può causare un deadlock di sistema.

    Ad esempio, un driver non deve chiamare IoReportTargetDeviceChange in una routine di callback di notifica. Chiamare invece IoReportTargetDeviceChangeAsynchronous.

  3. Una routine di callback di notifica deve restituire successo per tutti gli eventi che non fallisce esplicitamente.

    Quando un driver esegue la registrazione per la notifica in una categoria di eventi, il gestore PnP invia una notifica al driver di tutti gli eventi in tale categoria, presenti e futuri. Se un driver restituisce uno stato di errore per eventi che non gestisce, rischia di fallire per errore un nuovo evento di query.

    Un driver restituisce correttamente uno stato di errore quando, ad esempio, fallisce una notifica di query per vietare l'evento proposto.

  4. Una routine di callback di notifica deve essere di tipo paged code.