Partager via


WinHttpReadDataEx, fonction (winhttp.h)

Lit les données d’un handle ouvert par la fonction WinHttpOpenRequest .

Syntaxe

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

Paramètres

hRequest

Type : IN HINTERNET

Un handle HINTERNET retourné à partir d’un appel précédent à WinHttpOpenRequest.

WinHttpReceiveResponse ou WinHttpQueryDataAvailable doit avoir été appelé pour ce handle et doit avoir terminé avant l’appel de WinHttpReadDataEx . Bien que l’appel de WinHttpReadDataEx immédiatement après l’exécution de WinHttpReceiveResponse évite le coût d’une copie de mémoire tampon, cela nécessite que votre application utilise une mémoire tampon de longueur fixe pour la lecture.

lpBuffer

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

Pointeur vers une mémoire tampon qui reçoit les données lues. Assurez-vous que cette mémoire tampon reste valide jusqu’à ce que WinHttpReadDataEx soit terminé.

dwNumberOfBytesToRead

Type : IN DWORD

Valeur entière longue non signée qui contient le nombre d’octets à lire.

lpdwNumberOfBytesRead

Type : OUT LPDWORD

Pointeur vers une variable entière longue non signée qui reçoit le nombre d’octets lus. WinHttpReadDataEx définit cette valeur sur zéro avant d’effectuer une vérification de travail ou d’erreur. Lorsque vous utilisez WinHTTP de manière asynchrone, définissez toujours ce paramètre sur NULL et récupérez les informations dans la fonction de rappel ; ne pas le faire peut entraîner une erreur de mémoire.

ullFlags

Type : IN ULONGLONG

Si vous passez WINHTTP_READ_DATA_EX_FLAG_FILL_BUFFER, WinHttp ne termine pas l’appel à WinHttpReadDataEx tant que la mémoire tampon de données fournie n’a pas été remplie ou que la réponse n’est pas terminée. Le passage de cet indicateur rend le comportement de cette API équivalent à celui de WinHttpReadData.

cbProperty

Type : IN DWORD

Réservé. Passez 0.

pvProperty

Type : _In_reads_bytes_opt_(cbProperty) PVOID

Réservé. Passez la valeur NULL.

Valeur retournée

Code status indiquant le résultat de l’opération. Parmi les codes d’erreur retournés figurent les suivants.

Code d'erreur Description
ERROR_WINHTTP_CONNECTION_ERROR
La connexion au serveur a été réinitialisée ou arrêtée, ou un protocole SSL incompatible a été rencontré. Par exemple, WinHTTP 5.1 ne prend pas en charge SSL2, sauf si le client l’active spécifiquement.
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
Impossible d’effectuer l’opération demandée, car le handle fourni n’est pas dans l’état correct.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
Le type de handle fourni est incorrect pour cette opération.
ERROR_WINHTTP_INTERNAL_ERROR
Une erreur interne s'est produite.
ERROR_WINHTTP_OPERATION_CANCELLED
L’opération a été annulée, généralement parce que le handle sur lequel la requête fonctionnait a été fermé avant la fin de l’opération.
ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW
Retourné lorsqu’une réponse entrante dépasse une limite de taille WinHTTP interne.
ERROR_WINHTTP_TIMEOUT
Le délai d'attente de la requête a expiré.
ERROR_NOT_ENOUGH_MEMORY
La mémoire disponible était insuffisante pour terminer l’opération demandée. (Code d’erreur Windows)

Remarques

Par défaut, WinHttpReadDataEx retourne une fois qu’une quantité de données a été écrite dans la mémoire tampon que vous fournissez (la fonction ne remplira pas toujours complètement la mémoire tampon que vous fournissez).

Configuration requise

   
Client minimal pris en charge Windows 10 Build 20348
Serveur minimal pris en charge Windows 10 Build 20348
Plateforme cible Windows
En-tête winhttp.h
Bibliothèque Winhttp.lib
DLL Winhttp.dll

Voir aussi