Поделиться через


Типы бронетранспортёров

Асинхронный вызов процедуры (APC) — это функция, которая выполняется асинхронно. APC аналогичны отложенным вызовам процедур (DPCs), но в отличие от DPC, APC выполняются в контексте конкретного потока. Драйверы (кроме файловых систем и драйверов фильтров файловой системы) не используют APC напрямую, но другие части операционной системы делают это, поэтому необходимо знать, как работают APC.

Операционная система Windows использует четыре типа API:

  • Специальные APC в режиме пользователя выполняются строго в режиме пользователя и всегда выполняются, даже если целевой поток не находится в состоянии ожидания с возможностью оповещения. Дополнительные сведения о специальных APC в пользовательском режиме см. в QueueUserAPC2.

  • Обычные APC в пользовательском режиме выполняются строго в пользовательском режиме и только в том случае, если целевой поток находится в ожидающем состоянии с возможностью получения сигнала. Операционная система использует обычные пользовательские API для реализации таких механизмов, как перекрывающиеся операции ввода-вывода и подпрограмма QueueUserApc Win32.

  • Обычные APC ядра выполняются в режиме ядра в IRQL = PASSIVE_LEVEL. Обычный APC ядра прерывает весь код в пользовательском режиме, включая пользовательские APC. Обычные APC ядра обычно используются файловыми системами и драйверами-фильтрами файловых систем.

  • Специальные APC ядра выполняются в режиме ядра при IRQL = APC_LEVEL. Специальный APC ядра прерывает выполнение кода пользовательского режима и кода режима ядра на уровне IRQL = PASSIVE_LEVEL, включая как пользовательские APC, так и обычные APC ядра. Операционная система использует специальные API ядра для обработки таких операций, как завершение запроса ввода-вывода.

Список irQLs с наименьшим и самым высоким приоритетом см. в разделе "Управление приоритетами оборудования".