Condividi tramite


Funzione WinHttpReadDataEx (winhttp.h)

Legge i dati da un handle aperto dalla funzione WinHttpOpenRequest .

Sintassi

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

Parametri

hRequest

Tipo: IN HINTERNET

Handle HINTERNET restituito da una chiamata precedente a WinHttpOpenRequest.

WinHttpReceiveResponse o WinHttpQueryDataAvailable deve essere stato chiamato per questo handle e deve essere stato completato prima di chiamare WinHttpReadDataEx . Anche se la chiamata a WinHttpReadDataEx immediatamente dopo il completamento di WinHttpReceiveResponse evita la spesa di una copia del buffer, in questo modo è necessario che l'applicazione usi un buffer a lunghezza fissa per la lettura.

lpBuffer

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

Puntatore a un buffer che riceve i dati letti. Assicurarsi che questo buffer rimanga valido fino al completamento di WinHttpReadDataEx .

dwNumberOfBytesToRead

Tipo: IN DWORD

Valore intero lungo senza segno che contiene il numero di byte da leggere.

lpdwNumberOfBytesRead

Tipo: OUT LPDWORD

Puntatore a una variabile integer long senza segno che riceve il numero di byte letti. WinHttpReadDataEx imposta questo valore su zero prima di eseguire qualsiasi controllo di lavoro o errore. Quando si usa WinHTTP in modo asincrono, impostare sempre questo parametro su NULL e recuperare le informazioni nella funzione di callback; non in questo modo può causare un errore di memoria.

ullFlags

Tipo: IN ULONGLONG

Se si passa WINHTTP_READ_DATA_EX_FLAG_FILL_BUFFER, WinHttp non completa la chiamata a WinHttpReadDataEx finché il buffer dati specificato non è stato compilato o la risposta è stata completata. Il passaggio di questo flag rende il comportamento di questa API equivalente a quello di WinHttpReadData.

cbProperty

Tipo: IN DWORD

Riservato. Passare 0.

pvProperty

Tipo: _In_reads_bytes_opt_(cbProperty) PVOID

Riservato. Passare NULL.

Valore restituito

Codice di stato che indica il risultato dell'operazione. Tra i codici di errore restituiti sono i seguenti.

Codice di errore Descrizione
ERROR_WINHTTP_CONNECTION_ERROR
La connessione al server è stata reimpostata o terminata o è stato rilevato un protocollo SSL non compatibile. Ad esempio, WinHTTP 5.1 non supporta SSL2 a meno che il client non lo abilita in modo specifico.
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
Impossibile eseguire l'operazione richiesta perché l'handle fornito non è nello stato corretto.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Il tipo di handle fornito non è corretto per questa operazione.
ERROR_WINHTTP_INTERNAL_ERROR
Si è verificato un errore interno.
ERROR_WINHTTP_OPERATION_CANCELLED
L'operazione è stata annullata, in genere perché l'handle in cui è stata eseguita la richiesta è stata chiusa prima del completamento dell'operazione.
ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW
Restituito quando una risposta in ingresso supera un limite di dimensioni WinHTTP interno.
ERROR_WINHTTP_TIMEOUT
Timeout della richiesta.
ERROR_NOT_ENOUGH_MEMORY
Memoria insufficiente per completare l'operazione richiesta. (Codice errore di Windows)

Commenti

Per impostazione predefinita, WinHttpReadDataEx restituisce dopo la scrittura di qualsiasi quantità di dati nel buffer fornito( la funzione non riempirà sempre completamente il buffer fornito).

Requisiti

   
Client minimo supportato Windows 10 Build 20348
Server minimo supportato Windows 10 Build 20348
Piattaforma di destinazione Windows
Intestazione winhttp.h
Libreria Winhttp.lib
DLL Winhttp.dll

Vedi anche