Condivisione delle risorse del processore durante l'avvio da uno stato di Low-Power
Quando un computer viene avviato da uno stato di standby o di ibernazione (avvio ad accesso frequente), i driver devono evitare di usare le risorse del processore per più tempo rispetto a quanto necessario. Soprattutto, le routine di chiamata di routine posticipata (DPC) e il codice eseguiti in IRQL >= DISPATCH_LEVEL devono mantenere al minimo i tempi di esecuzione. I driver usano routine DPC per facilitare l'inizializzazione dei dispositivi. I driver potrebbero dover eseguire il codice di inizializzazione in DISPATCH_LEVEL come parte di un contratto di interfaccia porta-miniport.
Durante l'esecuzione di una routine DPC, gli altri thread con priorità più bassa non vengono eseguiti nello stesso processore. Inoltre, altre routine DPC accodate e pronte per l'esecuzione potrebbero essere bloccate fino al termine dell'esecuzione corrente del DPC. Per consentire l'esecuzione di altri thread in modo rapido, una routine DPC tipica deve essere eseguita per non più di 100 microsecondi.
Una routine DPC eseguita per troppo tempo durante l'avvio del sistema può ritardare l'inizializzazione di altri dispositivi. Questo ritardo rende più lunga la fase di inizializzazione del dispositivo e ritarda il completamento dell'avvio dal sistema operativo.
Usare le procedure consigliate seguenti per progettare le routine DPC:
Una singola routine DPC non deve essere eseguita per più di 100 microsecondi.
Le routine DPC che chiamano la routine KeStallExecutionProcessor per ritardare l'esecuzione non devono specificare ritardi di oltre 100 microsecondi.
Se un'attività richiede più di 100 microsecondi e viene eseguita in DISPATCH_LEVEL, la routine DPC deve terminare dopo 100 microsecondi e pianificare una o più routine timer DPC per completare l'attività in un secondo momento.
Usare gli strumenti di analisi delle prestazioni documentati in WDK per valutare i tempi di esecuzione delle routine DPC.