WinHttpCloseHandle 함수(winhttp.h)

WinHttpCloseHandle 함수는 단일 HINTERNET 핸들을 닫습니다(WinHTTP의 HINTERNET 핸들 참조).

구문

WINHTTPAPI BOOL WinHttpCloseHandle(
  [in] HINTERNET hInternet
);

매개 변수

[in] hInternet

닫을 유효한 HINTERNET 핸들( WinHTTP의 HINTERNET 핸들 참조)입니다.

반환 값

핸들이 성공적으로 닫혔으면 TRUE이고, 그렇지 않으면 FALSE입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출합니다. 반환된 오류 코드 중에는 다음이 있습니다.

오류 코드 설명
ERROR_WINHTTP_SHUTDOWN
WinHTTP 함수 지원이 종료되거나 언로드되고 있습니다.
ERROR_WINHTTP_INTERNAL_ERROR
내부 오류가 발생했습니다.
ERROR_NOT_ENOUGH_MEMORY
메모리가 부족하여 요청된 작업을 완료할 수 없습니다. (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 알림을 받을 때까지 컨텍스트 구조를 해제하는 데 보수적이어야 합니다.

애플리케이션은 동기 요청에서 WinHttpCloseHandle 을 호출해서는 안 됩니다. 이렇게 하면 경합 상태가 만들어지게 될 수 있습니다. 자세한 내용은 WinHTTP의 HINTERNET 핸들 을 참조하세요.
참고 Windows XP 및 Windows 2000의 경우 WinHttp 시작 페이지의 런타임 요구 사항 섹션을 참조하세요.
 

요구 사항

   
지원되는 최소 클라이언트 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 이상.

추가 정보

Microsoft Windows HTTP 서비스 정보(WinHTTP)

WinHTTP 버전

WinHttpConnect

WinHttpOpen

WinHttpOpenRequest