| Предыдущий | Следующий |
| STATUS_TRANSACTIONAL_CONFLICT | STATUS_TRANSACTION_NOT_ACTIVE |
STATUS_INVALID_TRANSACTION
Проверьте время жизни дескриптора, права доступа и тип объекта
Операции KTM используют дескрипторы объектов ядра, поэтому одного целочисленного значения недостаточно, чтобы считать транзакцию допустимой. Дескриптор мог быть закрыт, неправильно унаследован, продублирован с недостаточными правами, связан с контекстом другого процесса или указывать на объект другого типа.
Этот статус отличается от ситуации, когда транзакция допустима, но уже не активна. Сначала подтвердите, что дескриптор разрешается в объект транзакции, и только затем исследуйте состояние фиксации, отката, тайм-аута или восстановления.
Что проверить
- Запишите, где дескриптор был создан, продублирован, передан и закрыт.
- Запросите идентификатор и сведения о транзакции сразу после создания, а затем ещё раз перед завершившимся ошибкой вызовом.
- Проверьте требуемые права доступа KTM для конкретной операции.
- Ищите использование после закрытия, устаревшие закешированные дескрипторы и межпроцессную передачу без DuplicateHandle или документированного механизма передачи.
Ссылки
- Открытые спецификации Microsoft: значения NTSTATUS
- Microsoft: объекты KTM и их взаимосвязи
- Microsoft: функции Kernel Transaction Manager
- Метаданные Microsoft Windows SDK: ktmw32.h
Нужно найти другой код? Найти другой код состояния или ошибки.