Leggere in inglese

Condividi tramite


Tipi di APC

Una chiamata di procedura asincrona (APC) è una funzione che viene eseguita in modo asincrono. Gli APC sono simili alle chiamate di procedura posticipata (DPC), ma a differenza dei DPC, gli APC vengono eseguiti nel contesto di un determinato thread. I driver (diversi dai file system e i driver di filtro del file system) non usano direttamente le API, ma altre parti del sistema operativo fanno, quindi è necessario essere consapevoli del funzionamento delle API.

Il sistema operativo Windows usa quattro tipi di APC:

  • Le API speciali in modalità utente vengono eseguite rigorosamente in modalità utente ed eseguite sempre, anche se il thread di destinazione non è in uno stato di attesa avvisabile. Per altre informazioni sulle API speciali in modalità utente, vedere QueueUserAPC2.

  • Gli APC in modalità utente regolari vengono eseguiti rigorosamente in modalità utente e solo quando il thread di destinazione è in uno stato di attesa avvisabile. Il sistema operativo usa le normali API utente per implementare meccanismi come le operazioni di I/O sovrapposte e la routine QueueUserApc Win32.

  • APC normali del kernel sono in esecuzione in modalità kernel a IRQL = PASSIVE_LEVEL. Un normale kernel APC annulla tutto il codice in modalità utente, incluse le API utente. Le normali APC del kernel vengono generalmente utilizzate dai file system e dai driver filtro del file system.

  • Gli APC speciali del kernel vengono eseguiti in modalità kernel con IRQL = APC_LEVEL. Un kernel speciale APC annulla il codice in modalità utente e il codice in modalità kernel che viene eseguito in IRQL = PASSIVE_LEVEL, incluse le API utente e le NORMALI API del kernel. Il sistema operativo usa API kernel speciali per gestire operazioni come il completamento delle richieste di I/O.

Per un elenco di IRQLs dalla priorità più bassa alla più alta, vedere Gestione delle priorità hardware.