| Предыдущий | Следующий |
| STATUS_RECEIVE_EXPEDITED | STATUS_EVENT_DONE |
STATUS_RECEIVE_PARTIAL_EXPEDITED
Доставлена только часть срочного транспортного сообщения
Этот статус объединяет два независимых условия контракта приёма TDI: данные помечены как срочные, и текущая индикация не содержит всех байтов, доступных для данной единицы данных транспортной службы. Поэтому клиент должен сохранить и специальную семантику приёма, и незавершённую длину.
Если принять первый фрагмент за полное срочное сообщение, протокол может рассинхронизироваться. Если считать его обычными потоковыми данными, можно потерять признак срочности. Правильное действие — использовать указанные количества байтов и флаги приёма, копировать только объём, который обработчик может принять, и продолжить приём в том же контексте соединения.
Что следует проверить
- Запишите указанное число байтов, доступное число, принятое число и все флаги приёма.
- Не передавайте срочное сообщение вверх до завершения определённой протоколом единицы.
- При замене TDI явно проверяйте поведение частичных срочных данных в поддерживаемом транспортном API.
Ссылки
- Microsoft: ClientEventReceive
- Microsoft: TDI_SET_EVENT_HANDLER
- Открытые спецификации Microsoft: значения NTSTATUS
Нужно найти другой код? Найти другой код состояния или ошибки.