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


Проверка ошибок 0x1: APC_INDEX_MISMATCH

Проверка ошибок APC_INDEX_MISMATCH имеет значение 0x00000001. Проверка ошибок указывает на несоответствие в индексе состояния асинхронных вызовов процедур (APC).

Внимание

Эта статья предназначена для программистов. Если вы являетесь клиентом Майкрософт и компьютером отображает код ошибки синего экрана, см. статью "Устранение ошибок синего экрана".

параметры APC_INDEX_MISMATCH

Параметр Описание
1 Адрес системной функции (системного вызова) или рабочей процедуры.
2 Значение поля ApcStateIndex текущего потока.
3 Значение поля CombinedApcDisable текущего потока. Это поле состоит из двух отдельных 16-разрядных полей: (Thread>SpecialApcDisable<< 16) | Thread>KernelApcDisable.
4 Тип вызова:
0 — системный вызов
1 . Рабочая подпрограмма

Причина

Наиболее распространенная причина этой проверки ошибок заключается в том, что файловая система или драйвер имеют несовпадную последовательность вызовов для отключения и повторного включения API. Ключевой элемент данных — поле Thread>CombinedApcDisable . Поле CombinedApcDisable состоит из двух отдельных 16-разрядных полей: SpecialApcDisable и KernelApcDisable. Отрицательное значение любого поля указывает, что драйвер отключил специальные или обычные API (соответственно) без повторного включения. Положительное значение указывает, что драйвер включил специальные или обычные API-интерфейсы слишком много раз.

Разрешение

Эту проблему можно устранить с помощью WinDbg или с помощью основных методов устранения неполадок.

Отладка с помощью WinDbg

Расширение отладчика !analyze отображает сведения о проверке ошибок и может помочь определить первопричину.

Расширение !apc можно использовать для отображения содержимого одного или нескольких API.

Кроме того, можно задать точку останова в коде, которая предшествует этому коду остановки и попытаться перейти к коду сбоя.

Дополнительные сведения об использовании WinDbg см. в разделе "Анализ аварийного дампа" с помощью отладчиков Windows (WinDbg).

Отладка без использования WinDbg

Если вы не оснащены отладчиком Windows для работы с этой проблемой:

  • В Просмотр событий проверьте системный журнал для получения дополнительных сообщений об ошибках, которые могут помочь определить устройство или драйвер, вызывающий эту ошибку.

  • Если драйвер определен в сообщении проверки ошибок, отключите драйвер или обратитесь к изготовителю обновлений драйверов.

  • Убедитесь, что любое установленное оборудование совместимо с установленной версией Windows. Например, можно получить сведения о требуемом оборудовании в спецификациях Windows 10.

Дополнительные сведения об устранении неполадок см. в разделе "Анализ данных синим экраном" для проверки ошибок.

Замечания

Эта проверка ошибок является результатом внутренней ошибки в ядре. Эта ошибка возникает при выходе из системного вызова. Возможная причина этой проверки ошибок — это файловая система или драйвер, который имеет несовпадную последовательность системных вызовов для ввода или выхода из защищенных или критически важных регионов. Например, каждый вызов KeEnterCriticalRegion должен иметь соответствующий вызов KeLeaveCriticalRegion.

Если вы разрабатываете драйвер, вы можете использовать средство проверки статических драйверов, доступное в комплекте драйверов Windows, чтобы обнаружить проблемы в коде перед отправкой драйвера. Запустите средство проверки статических драйверов с помощью правила CriticalRegions , чтобы убедиться, что исходный код использует эти системные вызовы в правильной последовательности.

См. также

Справочник по коду проверки ошибок