HINTERNET 핸들

이 섹션에는 WinINet 함수에서 사용하는 핸들 및 작동하는 계층 구조에 대한 정보가 포함되어 있습니다.

HINTERNET 핸들 정보

WinINet 함수에서 만들고 사용하는 핸들은 HINTERNET 형식입니다. WinINet 함수는 다른 핸들 형식과 교환할 수 없는 HINTERNET 핸들을 반환합니다. 따라서 ReadFile 또는 CloseHandle과 같은 함수와 함께 사용할 수 없습니다. 마찬가지로 WinINet 함수에는 다른 핸들 형식을 사용할 수 없습니다. 예를 들어 CreateFile 에서 반환된 핸들은 InternetReadFile에 전달할 수 없습니다.

InternetCloseHandle 함수는 HINTERNET 형식의 핸들을 닫습니다. 핸들 값은 빠르게 재활용됩니다. 따라서 핸들이 닫혀 있고 새 핸들이 즉시 생성되는 경우 새 핸들이 방금 닫힌 핸들과 동일한 값을 가지는 것이 좋습니다.

계층 처리

HINTERNET 핸들은 트리 계층 구조에서 유지 관리됩니다. InternetOpen 함수에서 반환된 핸들은 루트 노드입니다. InternetConnect 함수에서 반환된 핸들은 다음 수준을 차지합니다. FtpOpenFile, FtpFindFirstFileHttpOpenRequest 함수에서 반환되는 핸들은 리프 노드입니다.

Windows XP 및 Windows Server 2003 R2 이하: , GopherOpenFileGopherFindFirstFile 에서 반환되는 핸들도 리프 노드입니다.

다음 다이어그램에서는 HINTERNET 핸들의 계층 구조를 보여 줍니다. 다이어그램의 각 상자는 HINTERNET 핸들을 반환하는 함수를 나타냅니다.

핸들을 만드는 함수

최상위 수준에는 루트 핸들을 만드는 InternetOpen 함수가 있습니다. 다음 수준에는 InternetOpenUrlInternetConnect 함수가 포함됩니다. InternetConnect에서 반환된 핸들을 사용하는 함수는 마지막 수준을 구성합니다.

다음 다이어그램은 InternetOpenUrl에서 만든 핸들에 종속된 함수를 보여 줍니다. 음영 처리된 상자는 HINTERNET 핸들을 반환하는 함수를 나타내고 일반 상자는 연결된 함수에서 만든 HINTERNET 핸들을 사용하는 함수를 나타냅니다.

internetopenurl 핸들을 사용하는 함수

InternetQueryDataAvailable, InternetReadFileInternetSetFilePointer 함수는 InternetOpenUrl에서 만든 HINTERNET 핸들을 사용합니다.

FTP 계층 구조

다음 다이어그램은 InternetConnect에서 반환된 FTP 세션 핸들에 종속된 FTP 함수를 보여 줍니다. 음영 처리된 상자는 HINTERNET 핸들을 반환하는 함수를 나타내고 일반 상자는 의존하는 함수에서 만든 HINTERNET 핸들을 사용하는 함수를 나타냅니다.

ftp 세션 핸들을 사용하는 함수

FtpCreateDirectory, FtpDeleteFile, FtpGetCurrentDirectory, FtpGetFile, FtpPutFile, FtpRemoveDirectory, FtpRenameFileFtpSetCurrentDirectory 함수는 모두 InternetConnect에서 만든 HINTERNET 핸들을 사용합니다.

다음 다이어그램에서는 핸들을 반환하는 두 개의 FTP 함수와 핸들에 종속된 함수를 보여 줍니다. 음영 처리된 상자는 HINTERNET 핸들을 반환하는 함수를 나타내고 일반 상자는 의존하는 함수에서 만든 HINTERNET 핸들을 사용하는 함수를 나타냅니다.

ftpopen 및 ftpfindfirstfile의 핸들을 사용하는 함수

InternetFindNextFile 함수는 FtpFindFirstFile에서 만든 핸들에 따라 달라지지만 InternetReadFileInternetWriteFileFtpOpenFile에서 만든 핸들을 사용합니다.

HTTP 계층 구조

다음 다이어그램은 HTTP 프로토콜에 사용되는 함수의 관계를 보여 줍니다. 음영 처리된 상자는 HINTERNET 핸들을 반환하는 함수를 나타내고 일반 상자는 의존하는 함수에서 만든 HINTERNET 핸들을 사용하는 함수를 나타냅니다.

httpopenrequest의 핸들을 사용하는 함수

HttpAddRequestHeaders, HttpQueryInfo, HttpSendRequest, HttpSendRequestExInternetErrorDlg 함수는 HttpOpenRequest에서 만든 핸들에 따라 달라집니다.

다음 다이어그램에서는 HttpSendRequest에서 보낸 후 HttpOpenRequest에서 만든 HINTERNET 핸들을 사용하는 함수를 보여 줍니다. 음영 처리된 상자는 HINTERNET 핸들을 반환하는 함수를 나타내고 일반 상자는 의존하는 함수에서 만든 HINTERNET 핸들을 사용하는 함수를 나타냅니다.

httpsendrequest 이후 핸들을 사용하는 함수

HttpSendRequestHttpOpenRequest에서 반환한 핸들을 사용한 후에는 InternetQueryDataAvailable, InternetReadFileInternetSetFilePointer에서 사용할 수 있습니다.

httpsendrequestex 이후 핸들을 사용하는 함수

HttpSendRequestEx에서 HttpOpenRequest에서 반환된 핸들을 사용한 후에는 HttpEndRequest, InternetReadFileExInternetWriteFile에서 핸들을 사용할 수 있습니다. HttpEndRequest가 호출된 후 InternetReadFile, InternetSetFilePointerInternetQueryDataAvailable에서 핸들을 사용할 수 있습니다.

참고

WinINet은 서버 구현을 지원하지 않습니다. 또한 서비스에서 사용하지 않아야 합니다. 서버 구현 또는 서비스의 경우 WinHTTP(Microsoft Windows HTTP 서비스)를 사용합니다.