Compartilhar via


Função WinHttpReadDataEx (winhttp.h)

Lê dados de um identificador aberto pela função WinHttpOpenRequest .

Sintaxe

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

Parâmetros

hRequest

Tipo: IN HINTERNET

Um identificador HINTERNET retornado de uma chamada anterior para WinHttpOpenRequest.

WinHttpReceiveResponse ou WinHttpQueryDataAvailable deve ter sido chamado para esse identificador e deve ter sido concluído antes que WinHttpReadDataEx seja chamado. Embora chamar WinHttpReadDataEx imediatamente após a conclusão de WinHttpReceiveResponse evite a despesa de uma cópia de buffer, isso exige que seu aplicativo use um buffer de comprimento fixo para leitura.

lpBuffer

Tipo: _Out_writes_bytes_to_(dwNumberOfBytesToRead, *lpdwNumberOfBytesRead) __out_data_source(NETWORK) LPVOID

Ponteiro para um buffer que recebe os dados lidos. Verifique se esse buffer permanece válido até que WinHttpReadDataEx seja concluído.

dwNumberOfBytesToRead

Tipo: IN DWORD

Valor inteiro longo sem sinal que contém o número de bytes a serem lidos.

lpdwNumberOfBytesRead

Tipo: OUT LPDWORD

Ponteiro para uma variável de inteiro longo sem sinal que recebe o número de bytes lidos. WinHttpReadDataEx define esse valor como zero antes de fazer qualquer verificação de erro ou trabalho. Ao usar WinHTTP de forma assíncrona, sempre defina esse parâmetro como NULL e recupere as informações na função de retorno de chamada; não fazer isso pode causar uma falha de memória.

ullFlags

Tipo: IN ULONGLONG

Se você passar WINHTTP_READ_DATA_EX_FLAG_FILL_BUFFER, o WinHttp não concluirá a chamada para WinHttpReadDataEx até que o buffer de dados fornecido seja preenchido ou a resposta seja concluída. Passar esse sinalizador torna o comportamento dessa API equivalente ao de WinHttpReadData.

cbProperty

Tipo: IN DWORD

Reservado. Passe 0.

pvProperty

Tipo: _In_reads_bytes_opt_(cbProperty) PVOID

Reservado. Passe NULL.

Valor retornado

Um código status que indica o resultado da operação. Entre os códigos de erro retornados estão os seguintes.

Código do Erro Descrição
ERROR_WINHTTP_CONNECTION_ERROR
A conexão com o servidor foi redefinida ou encerrada ou um protocolo SSL incompatível foi encontrado. Por exemplo, o WinHTTP 5.1 não dá suporte ao SSL2, a menos que o cliente o habilite especificamente.
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
A operação solicitada não pode ser executada porque o identificador fornecido não está no estado correto.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
O tipo de identificador fornecido está incorreto para esta operação.
ERROR_WINHTTP_INTERNAL_ERROR
Ocorreu um erro interno.
ERROR_WINHTTP_OPERATION_CANCELLED
A operação foi cancelada, geralmente porque o identificador no qual a solicitação estava operando foi fechado antes da conclusão da operação.
ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW
Retornado quando uma resposta de entrada excede um limite interno de tamanho WinHTTP.
ERROR_WINHTTP_TIMEOUT
O tempo limite da solicitação foi atingido.
ERROR_NOT_ENOUGH_MEMORY
Não havia memória suficiente disponível para concluir a operação solicitada. (Código de erro do Windows)

Comentários

Por padrão, WinHttpReadDataEx retorna após qualquer quantidade de dados ter sido gravada no buffer fornecido (a função nem sempre preencherá completamente o buffer fornecido).

Requisitos

   
Cliente mínimo com suporte Windows 10 Build 20348
Servidor mínimo com suporte Windows 10 Build 20348
Plataforma de Destino Windows
Cabeçalho winhttp.h
Biblioteca Winhttp.lib
DLL Winhttp.dll

Confira também