Tipos de APCs
Uma APC (chamada de procedimento assíncrona) é uma função que é executada de forma assíncrona. As APCs são semelhantes a DPCs (chamadas de procedimento adiadas), mas ao contrário dos DPCs, as APCs são executadas no contexto de um thread específico. Drivers (além de sistemas de arquivos e drivers de filtro do sistema de arquivos) não usam APCs diretamente, mas outras partes do sistema operacional usam, portanto, você precisa estar ciente de como as APCs funcionam.
O sistema operacional Windows usa quatro tipos de APCs:
APCs especiais no modo de usuário são executadas estritamente no modo de usuário e sempre são executadas, mesmo que o thread de destino não esteja em um estado de espera alertável. Para obter informações adicionais sobre APCs especiais do modo de usuário, consulte QueueUserAPC2.
As APCs de modo de usuário regular são executadas estritamente no modo de usuário e somente quando o thread de destino está em um estado de espera alertável. O sistema operacional usa APCs de usuário regulares para implementar mecanismos como E/S sobreposta e a rotina QueueUserApc Win32.
APCs de kernel normais são executadas no modo kernel em IRQL = PASSIVE_LEVEL. Um APC de kernel normal preempõe todo o código do modo de usuário, incluindo APCs de usuário. ApCs de kernel normais geralmente são usadas por sistemas de arquivos e drivers de filtro do sistema de arquivos.
APCs de kernel especiais são executadas no modo kernel em IRQL = APC_LEVEL. Um APC de kernel especial preempõe o código do modo de usuário e o código do modo kernel que é executado em IRQL = PASSIVE_LEVEL, incluindo APCs de usuário e APCs de kernel normais. O sistema operacional usa APCs de kernel especiais para lidar com operações como a conclusão da solicitação de E/S.
Para obter uma lista de IRQLs da prioridade mais baixa para a mais alta, consulte Gerenciando prioridades de hardware.