WinHttpCloseHandle 함수(winhttp.h)
WinHttpCloseHandle 함수는 단일 HINTERNET 핸들을 닫습니다(WinHTTP의 HINTERNET 핸들 참조).
구문
WINHTTPAPI BOOL WinHttpCloseHandle(
[in] HINTERNET hInternet
);
매개 변수
[in] hInternet
닫을 유효한 HINTERNET 핸들( WinHTTP의 HINTERNET 핸들 참조)입니다.
반환 값
핸들이 성공적으로 닫혔으면 TRUE이고, 그렇지 않으면 FALSE입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다. 반환된 오류 코드 중에는 다음이 있습니다.
오류 코드 | 설명 |
---|---|
|
WinHTTP 함수 지원이 종료되거나 언로드되고 있습니다. |
|
내부 오류가 발생했습니다. |
|
메모리가 부족하여 요청된 작업을 완료할 수 없습니다. (Windows 오류 코드) |
설명
WinHTTP가 비동기 모드에서 사용되는 경우에도(즉, winHttpOpen에서 WINHTTP_FLAG_ASYNC 설정된 경우) 이 함수는 동기적으로 작동합니다. 반환 값은 성공 또는 실패를 나타냅니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다.
핸들이 닫히는 상태 콜백이 등록되어 있고 NULL 이 아닌 컨텍스트 값으로 핸들을 만든 경우 WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING 콜백이 만들어집니다. 핸들에서 만든 마지막 콜백이며 핸들이 제거되고 있음을 나타냅니다.
애플리케이션은 WinHttpCloseHandle을 사용하여 HINTERNET 요청 핸들을 닫아 진행 중인 비동기 요청을 종료할 수 있습니다. 다음 사항을 염두에 두어야 합니다.
- 애플리케이션이 WinHTTP 핸들에서 WinHttpCloseHandle 을 호출한 후에는 스레드에서 해당 핸들을 사용하여 다른 WinHTTP API 함수를 호출할 수 없습니다.
- WinHttpCloseHandle에 대한 호출이 반환된 후에도 WinHTTP가 핸들을 비동기적으로 분해할 수 있으므로 애플리케이션은 닫힌 핸들에 대한 콜백을 받을 준비가 되어 있어야 합니다. 비동기 요청을 성공적으로 완료할 수 없는 경우 콜백은 WINHTTP_CALLBACK_STATUS_REQUEST_ERROR 알림을 받습니다.
- 애플리케이션이 컨텍스트 데이터 구조 또는 개체를 핸들과 연결하는 경우 콜백 함수가 WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING 알림을 받을 때까지 해당 바인딩을 유지 관리해야 합니다. 메모리에서 핸들 개체를 삭제하기 전에 WinHTTP가 보낸 마지막 콜백 알림입니다. WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING 콜백 알림을 받으려면 애플리케이션이 WinHttpSetStatusCallback 호출에서 WINHTTP_CALLBACK_FLAG_HANDLES 플래그를 사용하도록 설정해야 합니다.
-
WinHttpCloseHandle을 호출하기 전에 애플리케이션은 WinHttpSetStatusCallback을 호출하여 더 이상 콜백을 수행하지 않아야 함을 나타낼 수 있습니다.
WinHttpSetStatusCallback( hRequest, NULL, 0, 0 );
컨텍스트 데이터 구조가 WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING 알림을 기다리지 않고 즉시 해제될 수 있는 것처럼 보일 수 있지만 WinHTTP는 WinHttpSetStatusCallback 을 작업자 스레드에서 시작된 콜백과 동기화하지 않습니다. 따라서 콜백이 이미 다른 스레드에서 진행 중일 수 있으며, NULL 이 콜백 함수 포인터를 해제하고 핸들의 컨텍스트 데이터 구조를 삭제한 후에도 애플리케이션에서 콜백 알림을 받을 수 있습니다. 이러한 잠재적인 경합 상태 때문에 WINHTTP_CALLBACK_STATUS_HANDLE_CLOSING 알림을 받을 때까지 컨텍스트 구조를 해제하는 데 보수적이어야 합니다.
요구 사항
지원되는 최소 클라이언트 | Windows XP, Windows 2000 Professional SP3 [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2003, Windows 2000 Server SP3 [데스크톱 앱만 해당] |
대상 플랫폼 | Windows |
헤더 | winhttp.h |
라이브러리 | Winhttp.lib |
DLL | Winhttp.dll |
재배포 가능 파일 | Windows XP 및 Windows 2000의 WinHTTP 5.0 및 Internet Explorer 5.01 이상. |