| Предыдущий | Следующий |
| STATUS_TRANSACTION_INVALID_MARSHALL_BUFFER | STATUS_LOG_GROWTH_FAILED |
STATUS_CURRENT_TRANSACTION_NOT_VALID
Поток содержит устаревший или неверно восстановленный контекст транзакции
Код, поддерживающий KTM, может связать текущую транзакцию с потоком, чтобы API участвовали в окружающем контексте. Это состояние означает, что сам контекст потока ссылается на непригодный дескриптор, часто после закрытия транзакции, неверного восстановления контекста или переноса работы между потоками без корректного распространения.
Различайте окружающий контекст и явные параметры транзакции. Явный дескриптор может оставаться действительным при устаревшей текущей транзакции потока, и наоборот.
Что следует проверить
- Проследите каждую операцию установки, сохранения, восстановления и очистки контекста транзакции потока.
- Проверьте асинхронные продолжения, повторное использование потоков пула, пути исключений и завершение работы модулей.
- Запрашивайте идентификатор транзакции до установки контекста и очищайте контекст перед закрытием последнего дескриптора.
- Не используйте повторно необработанное значение дескриптора, полученное из другого потока или процесса.
Ссылки
- Открытые спецификации Microsoft: значения NTSTATUS
- Microsoft: обзор Kernel Transaction Manager
- Microsoft: функции Kernel Transaction Manager
- Метаданные Microsoft Windows SDK: ktmw32.h
Нужно найти другой код? Найти другой код состояния или ошибки.