Функция 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.
Возвращаемое значение
Код состояния, указывающий результат операции. Среди возвращаемых кодов ошибок:
Код ошибки | Описание |
---|---|
|
Соединение с сервером было сброшено или прервано, или обнаружен несовместимый протокол SSL. Например, WinHTTP 5.1 не поддерживает SSL2, если только клиент не включает его. |
|
Не удается выполнить запрошенную операцию, так как предоставленный дескриптор находится в неправильном состоянии. |
|
Для этой операции указан неправильный тип дескриптора. |
|
Произошла внутренняя ошибка. |
|
Операция была отменена, как правило, из-за того, что дескриптор, с которым выполнялся запрос, был закрыт до завершения операции. |
|
Возвращается, когда входящий ответ превышает внутренний размер WinHTTP. |
|
Истекло время ожидания запроса. |
|
Недостаточно памяти для выполнения запрошенной операции. (Код ошибки Windows) |
Комментарии
По умолчанию WinHttpReadDataEx возвращается после записи любого объема данных в предоставленный буфер (функция не всегда полностью заполняет предоставленный буфер).
Требования
Минимальная версия клиента | Сборка Windows 10 20348 |
Минимальная версия сервера | Сборка Windows 10 20348 |
Целевая платформа | Windows |
Header | winhttp.h |
Библиотека | Winhttp.lib |
DLL | Winhttp.dll |