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