WinHttpCloseHandle 함수(winhttp.h)

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

구문

WINHTTPAPI BOOL WinHttpCloseHandle(
  [in] HINTERNET hInternet
);

매개 변수

[in] hInternet

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

반환 값

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

오류 코드 Description
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 및 인터넷 Explorer 5.01 이상.

추가 정보

Microsoft Windows HTTP 서비스 정보(WinHTTP)

WinHTTP 버전

WinHttpConnect

WinHttpOpen

WinHttpOpenRequest