Поделиться через


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

Считывает данные из дескриптора, открытого функцией WinHttpOpenRequest .

Синтаксис

WINHTTPAPI DWORD WinHttpReadDataEx(
  HINTERNET hRequest,
  LPVOID    lpBuffer,
  DWORD     dwNumberOfBytesToRead,
  LPDWORD   lpdwNumberOfBytesRead,
  ULONGLONG ullFlags,
  DWORD     cbProperty,
  PVOID     pvProperty
);

Параметры

hRequest

Тип: IN HINTERNET

Дескриптор HINTERNET, возвращенный из предыдущего вызова WinHttpOpenRequest.

WinHttpReceiveResponse или WinHttpQueryDataAvailable должны быть вызваны для этого дескриптора и должны быть завершены до вызова WinHttpReadDataEx . Хотя вызов WinHttpReadDataEx сразу после завершения WinHttpReceiveResponse позволяет избежать расходов на копию буфера, для этого приложение должно использовать буфер фиксированной длины для чтения.

lpBuffer

Тип: _Out_writes_bytes_to_(dwNumberOfBytesToRead, *lpdwNumberOfBytesRead) __out_data_source(NETWORK) LPVOID

Указатель на буфер, который получает считываемые данные. Убедитесь, что этот буфер остается действительным до завершения работы WinHttpReadDataEx .

dwNumberOfBytesToRead

Тип: IN DWORD

Длинное целое число без знака, содержащее число считываемых байтов.

lpdwNumberOfBytesRead

Тип: OUT LPDWORD

Указатель на долгочисленную переменную без знака, которая получает число прочитанных байтов. WinHttpReadDataEx устанавливает для этого значения нулевое значение перед выполнением какой-либо работы или проверки ошибок. При асинхронном использовании WinHTTP всегда присвойте этому параметру значение NULL и получите сведения в функции обратного вызова. Это может привести к сбою памяти.

ullFlags

Тип: IN ULONGLONG

Если передать WINHTTP_READ_DATA_EX_FLAG_FILL_BUFFER, WinHttp не завершит вызов WinHttpReadDataEx , пока не будет заполнен предоставленный буфер данных или ответ не будет завершен. Передача этого флага делает поведение этого API эквивалентным поведению WinHttpReadData.

cbProperty

Тип: IN DWORD

Зарезервировано. Передайте 0.

pvProperty

Тип: _In_reads_bytes_opt_(cbProperty) PVOID

Зарезервировано. Передайте значение NULL.

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

Код состояния, указывающий результат операции. Среди возвращаемых кодов ошибок:

Код ошибки Описание
ERROR_WINHTTP_CONNECTION_ERROR
Соединение с сервером было сброшено или прервано, или обнаружен несовместимый протокол SSL. Например, WinHTTP 5.1 не поддерживает SSL2, если только клиент не включает его.
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
Не удается выполнить запрошенную операцию, так как предоставленный дескриптор находится в неправильном состоянии.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Для этой операции указан неправильный тип дескриптора.
ERROR_WINHTTP_INTERNAL_ERROR
Произошла внутренняя ошибка.
ERROR_WINHTTP_OPERATION_CANCELLED
Операция была отменена, как правило, из-за того, что дескриптор, с которым выполнялся запрос, был закрыт до завершения операции.
ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW
Возвращается, когда входящий ответ превышает внутренний размер WinHTTP.
ERROR_WINHTTP_TIMEOUT
Истекло время ожидания запроса.
ERROR_NOT_ENOUGH_MEMORY
Недостаточно памяти для выполнения запрошенной операции. (Код ошибки Windows)

Комментарии

По умолчанию WinHttpReadDataEx возвращается после записи любого объема данных в предоставленный буфер (функция не всегда полностью заполняет предоставленный буфер).

Требования

   
Минимальная версия клиента Сборка Windows 10 20348
Минимальная версия сервера Сборка Windows 10 20348
Целевая платформа Windows
Header winhttp.h
Библиотека Winhttp.lib
DLL Winhttp.dll

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