WinHttpQueryHeadersEx 함수(winhttp.h)
HTTP 요청과 연결된 헤더 정보를 검색합니다. 는 구문 분석된 헤더 이름 및 값 문자열을 검색하는 방법을 제공합니다.
구문
WINHTTPAPI DWORD WinHttpQueryHeadersEx(
HINTERNET hRequest,
DWORD dwInfoLevel,
ULONGLONG ullFlags,
UINT uiCodePage,
PDWORD pdwIndex,
PWINHTTP_HEADER_NAME pHeaderName,
PVOID pBuffer,
PDWORD pdwBufferLength,
PWINHTTP_EXTENDED_HEADER *ppHeaders,
PDWORD pdwHeadersCount
);
매개 변수
hRequest
형식: _In_ HINTERNET
WinHttpOpenRequest에서 반환된 요청 핸들입니다. WinHttpQueryHeadersEx를 호출하기 전에 이 핸들에 대한 WinHttpReceiveResponse 호출이 완료되어야 합니다. 예고편을 쿼리하는 경우 이 핸들에 대한 WinHttpReadData 호출은 WinHttpQueryHeadersEx를 호출하기 전에 읽은 0바이트를 반환해야 합니다.
dwInfoLevel
형식: _In_ DWORD
쿼리 정보 플래그 항목에 나열된 특성 및 한정자 플래그의 조합을 지정하는 DWORD 형식의 값입니다. 이러한 특성 및 한정자 플래그는 요청되는 정보와 형식을 지정하는 방법을 나타냅니다.
참고
사용되는 경우 WINHTTP_QUERY_VERSION, WINHTTP_QUERY_STATUS_CODE, WINHTTP_QUERY_STATUS_TEXT, WINHTTP_QUERY_FLAG_NUMBER, WINHTTP_QUERY_FLAG_NUMBER64, WINHTTP_QUERY_FLAG_SYSTEMTIME및WINHTTP_QUERY_RAW_HEADERS_CRLF ERROR_INVALID_PARAMETER 반환합니다.
플래그 WINHTTP_QUERY_EX_ALL_HEADERS 모든 헤더를 반환합니다.
모든 헤더를 쿼리하지 않는 경우 알려진 특정 헤더에 해당하는 플래그를 전달하거나 pHeaderName 매개 변수의 헤더 이름에 대한 문자열과 함께 WINHTTP_QUERY_CUSTOM 전달할 수 있습니다.
WINHTTP_QUERY_FLAG_WIRE_ENCODING 전달하면 헤더가 유선으로 전송되는 형식으로 반환됩니다(WINHTTP_EXTENDED_HEADER 및 WINHTTP_HEADER_NAMEpsz* 멤버에 액세스/설정해야 합니다). 와이어 인코딩 플래그를 설정하지 않으면 기본 동작은 유니코드 형식의 헤더를 반환하는 것입니다(WINHTTP_EXTENDED_HEADER 및 WINHTTP_HEADER_NAMEpwsz* 멤버에 액세스/설정해야 함).
ullFlags
형식: _In_ ULONGLONG
예약되어 있습니다. 0으로 설정합니다.
uiCodePage
형식: _In_ UINT
유니코드 변환에 사용할 코드 페이지입니다. 기본 동작(CP_ACP) 또는 WINHTTP_QUERY_FLAG_WIRE_ENCODING 사용하는 경우 0을 전달해야 합니다. 이 매개 변수에 대한 유효성 검사는 수행되지 않습니다.
pdwIndex
형식: _Inout_opt_ PDWORD
이름이 같은 여러 헤더를 열거하는 데 사용되는 인덱스(0부터 시작)의 주소입니다. 함수를 호출할 때 이 매개 변수는 반환할 지정된 헤더의 인덱스입니다. 함수가 반환되면 이 매개 변수는 다음 헤더의 인덱스입니다. NULL을 전달하여 지정된 헤더의 첫 번째 instance 액세스합니다.
pHeaderName
형식: _Inout_opt_ PWINHTTP_HEADER_NAME
WINHTTP_HEADER_NAME 구조체의 주소입니다.
모든 헤더를 검색할 때 pHeaderName 을 NULL 로 설정합니다. 이 매개 변수가 NULL이 아니고 dwInfoLevel을 사용하여 WINHTTP_QUERY_CUSTOM 전달하는 경우 WinHttpQueryHeadersEx는 이 매개 변수에 지정된 헤더만 검색합니다. dwInfoLevel을 사용하여 WINHTTP_QUERY_FLAG_WIRE_ENCODING 전달하는 경우 pszName 멤버를 사용해야 합니다(플래그가 설정되지 않은 경우 pwszName 멤버 사용).
pBuffer
형식: _Out_writes_bytes_to_opt_(*pdwBufferLength, *pdwBufferLength) LPVOID
구문 분석된 헤더 포인터와 헤더를 저장할 호출자가 제공하는 버퍼입니다. 이 매개 변수가 NULL 이거나 너무 작으면 WinHttpQueryHeadersEx 는 ERROR_INSUFFICIENT_BUFFER 반환하고 pdwBufferLength 매개 변수에는 필요한 버퍼 크기(바이트)가 포함됩니다.
pdwBufferLength
형식: _Inout_ PDWORD
호출자가 제공한 버퍼의 길이입니다. pBuffer가 NULL이거나 너무 작은 경우 WinHttpQueryHeadersEx는 필요한 버퍼 크기를 바이트 단위로 이 매개 변수에 씁니다.
ppHeaders
형식: _Out_writes_opt_(*pdwHeadersCount) PWINHTTP_EXTENDED_HEADER*
구문 분석된 헤더 이름/값에 액세스하기 위한 WINHTTP_EXTENDED_HEADER 배열에 대한 핸들입니다. NULL로 초기화된 WINHTTP_EXTENDED_HEADER 포인터의 주소를 전달해야 합니다. 완료되면 WINHTTP_QUERY_FLAG_WIRE_ENCODING 사용하는 경우 pszName/pszValue 매개 변수에 액세스하고, 그렇지 않으면 pwszName/pwszValue에 액세스해야 합니다.
pdwHeadersCount
형식: _Out_ PDWORD
반환된 헤더 수입니다. 배열의 범위를 벗어났기 때문에 을 초과 ppHeaders[cHeaders - 1]
하여 액세스하려고 하면 안 됩니다.
반환 값
작업의 결과를 나타내는 상태 코드입니다. 반환된 오류 코드 중에는 다음과 같습니다.
오류 코드 | Description |
---|---|
|
요청된 헤더를 찾을 수 없습니다. |
|
제공된 핸들이 올바른 상태가 아니므로 요청된 작업을 수행할 수 없습니다. |
|
이 작업에 대해 제공된 핸들의 형식이 올바르지 않습니다. |
|
내부 오류가 발생했습니다. |
|
메모리가 부족하여 요청된 작업을 완료할 수 없습니다. (Windows 오류 코드) |
설명
WinHttpQueryHeadersEx 는 WinHttpQueryHeaders의 기능을 기반으로 합니다. WinHttpQueryHeaders 를 사용하면 문자열, 숫자(DWORD) 또는 타임스탬프(SYSTEMTIME) 형식으로 요청 또는 응답 헤더(또는 응답 트레일러)를 쿼리할 수 있습니다. 모든 헤더에 대해 쿼리하면 CRLF 또는 NULL 문자가 서로 다른 헤더를 구분하여 직렬화된 단일 문자열을 반환합니다. 예를 들어 "Name1: value1\r\nName2: value2\r\n\r\n"가 있습니다. 또는 "Name1: value1\0Name2: value2\0\0". 이중 구분 기호는 문자열의 끝을 나타내는 데 사용됩니다.
WinHttpQueryHeadersEx 는 구문 분석된 헤더 이름 및 값 문자열을 검색하는 방법을 제공합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 10 빌드 20348 |
지원되는 최소 서버 | Windows 10 빌드 20348 |
대상 플랫폼 | Windows |
헤더 | winhttp.h |
라이브러리 | Winhttp.lib |
DLL | Winhttp.dll |