Что означает код NTSTATUS 0xC000012A (STATUS_THREAD_NOT_IN_PROCESS)?

 
Предыдущий Следующий
STATUS_TOO_MANY_THREADS STATUS_TOKEN_ALREADY_IN_USE

STATUS_THREAD_NOT_IN_PROCESS

Идентификаторы потока и процесса указывают на разное владение процессом

Каждый поток Windows принадлежит одному процессу. Этот статус означает, что операция, принимающая контекст процесса и потока, обнаружила: поток не входит в указанный процесс. Это точнее, чем недействительный идентификатор потока: поток может существовать, но пара «процесс—поток» неверна.

Зафиксируйте оба идентификатора и проверьте связь с помощью GetProcessIdOfThread или эквивалентной нативной информации до выполнения операции. Гонки перечисления также могут создавать устаревшие пары, если процесс завершился, а идентификаторы позднее были переиспользованы. Не исправляйте ошибку подстановкой текущего процесса, если операция действительно не предназначена для текущего потока.

Что проверить

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

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.