Что означает код NTSTATUS 0xC0190002 (STATUS_INVALID_TRANSACTION)?

 
Предыдущий Следующий
STATUS_TRANSACTIONAL_CONFLICT STATUS_TRANSACTION_NOT_ACTIVE

STATUS_INVALID_TRANSACTION

Проверьте время жизни дескриптора, права доступа и тип объекта

Операции KTM используют дескрипторы объектов ядра, поэтому одного целочисленного значения недостаточно, чтобы считать транзакцию допустимой. Дескриптор мог быть закрыт, неправильно унаследован, продублирован с недостаточными правами, связан с контекстом другого процесса или указывать на объект другого типа.

Этот статус отличается от ситуации, когда транзакция допустима, но уже не активна. Сначала подтвердите, что дескриптор разрешается в объект транзакции, и только затем исследуйте состояние фиксации, отката, тайм-аута или восстановления.

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

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

Ссылки


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