Linee guida per la scrittura di routine di callback di notifica PnP
Il gestore PnP chiama routine di callback di notifica in IRQL = PASSIVE_LEVEL.
Per garantire un corretto funzionamento del sottosistema PnP, una routine di callback di notifica PnP deve seguire queste linee guida:
Una routine di callback di notifica non deve essere bloccata.
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 .
Una routine di callback di notifica deve restituire l'esito positivo per tutti gli eventi che non ha esito negativo in modo esplicito.
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 gli eventi che non gestisce, il driver rischia di generare un nuovo evento di query per errore.
Un driver restituisce correttamente uno stato di errore quando, ad esempio, il driver non riesce una notifica di query per assegnare un veto all'evento proposto.
Una routine di callback di notifica deve essere di tipo paged code.