다음을 통해 공유


WinHttpReadDataEx 함수(winhttp.h)

WinHttpOpenRequest 함수에서 연 핸들에서 데이터를 읽습니다.

구문

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

매개 변수

hRequest

형식: IN HINTERNET

WinHttpOpenRequest에 대한 이전 호출에서 반환된 HINTERNET 핸들입니다.

WinHttpReceiveResponse 또는 WinHttpQueryDataAvailable 은 이 핸들에 대해 호출되어야 하며 WinHttpReadDataEx 가 호출되기 전에 완료되어야 합니다. WinHttpReceiveResponse가 완료된 직후 WinHttpReadDataEx를 호출하면 버퍼 복사 비용이 발생하지 않지만 이렇게 하려면 애플리케이션에서 읽기에 고정 길이 버퍼를 사용해야 합니다.

lpBuffer

형식: _Out_writes_bytes_to_(dwNumberOfBytesToRead, *lpdwNumberOfBytesRead) __out_data_source(NETWORK) LPVOID

데이터를 읽은 버퍼에 대한 포인터입니다. WinHttpReadDataEx가 완료될 때까지 이 버퍼가 유효한지 확인합니다.

dwNumberOfBytesToRead

형식: IN DWORD

읽을 바이트 수를 포함하는 부호 없는 long 정수 값입니다.

lpdwNumberOfBytesRead

형식: OUT LPDWORD

읽은 바이트 수를 수신하는 부호 없는 long 정수 변수에 대한 포인터입니다. WinHttpReadDataEx 는 작업 또는 오류 검사를 수행하기 전에 이 값을 0으로 설정합니다. 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을 전달합니다.

반환 값

작업의 결과를 나타내는 상태 코드입니다. 반환된 오류 코드 중에는 다음과 같습니다.

오류 코드 Description
ERROR_WINHTTP_CONNECTION_ERROR
서버와의 연결이 다시 설정되거나 종료되었거나 호환되지 않는 SSL 프로토콜이 발견되었습니다. 예를 들어 WinHTTP 5.1은 클라이언트가 특별히 사용하도록 설정하지 않는 한 SSL2를 지원하지 않습니다.
ERROR_WINHTTP_INCORRECT_HANDLE_STATE
제공된 핸들이 올바른 상태가 아니므로 요청된 작업을 수행할 수 없습니다.
ERROR_WINHTTP_INCORRECT_HANDLE_TYPE
이 작업에 대해 제공된 핸들의 형식이 올바르지 않습니다.
ERROR_WINHTTP_INTERNAL_ERROR
내부 오류가 발생했습니다.
ERROR_WINHTTP_OPERATION_CANCELLED
작업이 완료되기 전에 요청이 작동 중인 핸들이 닫혔기 때문에 작업이 취소되었습니다.
ERROR_WINHTTP_RESPONSE_DRAIN_OVERFLOW
들어오는 응답이 내부 WinHTTP 크기 제한을 초과할 때 반환됩니다.
ERROR_WINHTTP_TIMEOUT
요청 시간이 초과되었습니다.
ERROR_NOT_ENOUGH_MEMORY
메모리가 부족하여 요청된 작업을 완료할 수 없습니다. (Windows 오류 코드)

설명

기본적으로 WinHttpReadDataEx 는 사용자가 제공하는 버퍼에 데이터의 양이 기록된 후 를 반환합니다(함수가 제공하는 버퍼를 항상 완전히 채우지는 않음).

요구 사항

   
지원되는 최소 클라이언트 Windows 10 빌드 20348
지원되는 최소 서버 Windows 10 빌드 20348
대상 플랫폼 Windows
헤더 winhttp.h
라이브러리 Winhttp.lib
DLL Winhttp.dll

추가 정보