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 |
---|---|
|
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. |
|
Impossible d’effectuer l’opération demandée, car le handle fourni n’est pas dans l’état correct. |
|
Le type de handle fourni est incorrect pour cette opération. |
|
Une erreur interne s'est produite. |
|
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. |
|
Retourné lorsqu’une réponse entrante dépasse une limite de taille WinHTTP interne. |
|
Le délai d'attente de la requête a expiré. |
|
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 |