Compartilhar via


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.