| Предыдущий | Следующий |
| DEVICE_QUEUE_NOT_BUSY |
APC_INDEX_MISMATCH
Параметры APC_INDEX_MISMATCH
| Параметр | Описание |
|---|---|
1 |
Адрес системной функции, системного вызова или worker routine. |
2 |
Значение поля текущего потока ApcStateIndex. |
3 |
Значение поля текущего потока CombinedApcDisable. Поле состоит из двух отдельных 16-битных полей: (Поток >SpecialApcDisable << 16) | Поток >KernelApcDisable. |
4 |
Тип вызова:
|
Причина
Наиболее частая причина — несогласованная последовательность вызовов file system или driver для отключения и повторного включения APC. Ключевое поле — Поток >CombinedApcDisable. Поле CombinedApcDisable состоит из двух отдельных 16-битных полей: SpecialApcDisable и KernelApcDisable. Отрицательное значение одного из них означает, что driver отключил специальные или обычные APC соответственно и не включил их обратно. Положительное значение означает слишком большое число включений.
Отладка с WinDbg
Расширение The !analyze выводит сведения о bug check и помогает установить первопричину.
Можно использовать расширение !apc для просмотра содержимого одного или нескольких asynchronous procedure calls (APC).
Также можно поставить breakpoint в коде перед stop code и пошагово пройти к отказавшей инструкции.
Дополнительные сведения об использовании WinDbg см. в разделе Анализ crash dump с помощью отладчиков Windows (WinDbg).
Примечания
Этот bug check является следствием внутренней ошибки ядра при выходе из системного вызова. Возможная причина — file system или driver с несогласованной последовательностью входа и выхода из guarded или critical regions. Например, каждому вызову KeEnterCriticalRegion должен соответствовать вызов KeLeaveCriticalRegion.
При разработке driver используйте Static Driver Verifier из Windows Driver Kit для обнаружения проблем до выпуска. Запустите его с правилом CriticalRegions, чтобы проверить правильную последовательность этих системных вызовов.
Нужно найти другой код? Найти другой код состояния или ошибки.