| Предыдущий | Следующий |
| ERROR_CRM_PROTOCOL_NOT_FOUND | ERROR_CURRENT_TRANSACTION_NOT_VALID |
ERROR_TRANSACTION_INVALID_MARSHALL_BUFFER
Эта ошибка относится именно к распространению транзакции. Буфер байтов, переданный в путь распространения KTM, не является допустимой маршалированной полезной нагрузкой транзакции. Поэтому причину следует искать на границе между компонентами или процессами, а не трактовать её как обычный сбой выделения памяти.
Основные проверки целостности
- Считайте буфер, возвращённый API распространения KTM, непрозрачным: не изменяйте и не объединяйте его, не интерпретируйте заново и не сериализуйте в него нативные указатели.
- Передавайте точное число байтов, связанное с буфером, и сохраняйте его действительным до завершения принимающего вызова.
- Убедитесь, что отправитель и получатель используют согласованные API распространения и что при формировании буфера не была проигнорирована ошибка.
- Записывайте только безопасные метаданные: размер, путь вызова, идентификатор транзакции и создавший буфер процесс. Не выводите непрозрачные данные транзакции в обычные журналы.
Недопустимые данные распространения отличаются от отсутствующего объекта транзакции. Если проблема связана с устаревшим или неизвестным дескриптором транзакции, KTM может вместо этого вернуть состояние, указывающее на отсутствие транзакции или нарушение времени жизни объекта.
См. обзор KTM, справочник API KTMи Запись WinError для этого кода.
Нужно найти другой код? Найти другой код состояния или ошибки.