| Предыдущий | Следующий |
| STATUS_IMAGE_MACHINE_TYPE_MISMATCH | STATUS_RECEIVE_EXPEDITED |
STATUS_RECEIVE_PARTIAL
Транспортная индикация приёма содержит только часть сообщения
Этот информационный результат поступает из устаревшей модели приёма Transport Driver Interface. Транспорт передал часть байтов транспортного блока данных, а дополнительные байты остаются доступными или поступят позднее. Это не признак конца потока и не означает потерю отсутствующих байтов.
Клиент TDI должен был учитывать количество указанных и доступных байтов, принимать только фактически обработанные байты и при необходимости организовывать следующий приём. Современный код должен применять такую же дисциплину формирования кадров через поддерживаемые API сокетов или WSK: TCP является потоком байтов, поэтому один вызов приёма не обязан соответствовать одному сообщению приложения.
Что следует проверить
- Запишите число указанных, доступных и принятых байтов, а также флаги приёма.
- Сохраняйте состояние соединения до получения оставшейся полезной нагрузки или фактического разрыва.
- Не разбирайте полный кадр приложения, пока не получена вся объявленная длина.
Ссылки
- Microsoft: ClientEventReceive
- Microsoft: TDI_SET_EVENT_HANDLER
- Открытые спецификации Microsoft: значения NTSTATUS
Нужно найти другой код? Найти другой код состояния или ошибки.