Функция WinHttpWebSocketQueryCloseStatus (winhttp.h)

Функция WinHttpWebSocketQueryCloseStatus извлекает состояние закрытия, отправленное сервером.

Синтаксис

WINHTTPAPI DWORD WinHttpWebSocketQueryCloseStatus(
  [in]  HINTERNET hWebSocket,
  [out] USHORT    *pusStatus,
  [out] PVOID     pvReason,
  [in]  DWORD     dwReasonLength,
  [out] DWORD     *pdwReasonLengthConsumed
);

Параметры

[in] hWebSocket

Тип: HINTERNET

Дескриптор WebSocket

[out] pusStatus

Тип: USHORT*

Указатель на код состояния закрытия, который будет заполнен после возврата. Возможные значения см. в WINHTTP_WEB_SOCKET_CLOSE_STATUS .

[out] pvReason

Тип: PVOID

Указатель на буфер, который получает причину закрытия при возврате.

[in] dwReasonLength

Тип: DWORD

Длина буфера pvReason в байтах.

[out] pdwReasonLengthConsumed

Тип: DWORD*

Количество потребляемых байтов. Если pvReason имеет значение NULL , а dwReasonLength равно 0, pdwReasonLengthConsumed будет содержать размер буфера, который должен быть выделен вызывающим приложением.

Возвращаемое значение

Тип: DWORD

NO_ERROR на успех. В противном случае — код ошибки.

Описание
ERROR_INSUFFICIENT_BUFFER
В pvReason недостаточно места, чтобы написать всю причину закрытия.
ERROR_INVALID_OPERATION
Закрытая рамка пока не получена.
ERROR_INVALID_PARAMETER
Недопустимый параметр.

Комментарии

Вызывайте WinHttpWebSocketQueryCloseStatus только после успешного выполнения WinHttpWebSocketClose или после того, как WinHttpWebSocketReceive возвращает WINHTTP_WEB_SOCKET_CLOSE_BUFFER_TYPE.

PdwReasonLengthConsumed никогда не будет больше 123, поэтому выделение буфера по крайней мере с 123 гарантирует, что ERROR_INSUFFICIENT_BUFFER никогда не будут возвращены.

Требования

Требование Значение
Минимальная версия клиента Windows 8 [только классические приложения]
Минимальная версия сервера Windows Server 2012 [только классические приложения]
Целевая платформа Windows
Header winhttp.h
Библиотека Winhttp.lib
DLL Winhttp.dll

См. также раздел

WINHTTP_WEB_SOCKET_CLOSE_STATUS

WinHttpWebSocketClose

WinHttpWebSocketReceive