HINTERNET ハンドル

このセクションには、WinINet 関数で使用されるハンドルと、それらが機能する階層に関する情報が含まれています。

HINTERNET ハンドルについて

WinINet 関数によって作成および使用されるハンドルは HINTERNET 型です。 WinINet 関数は、他のハンドル型と互換性のない HINTERNET ハンドルを返します。 そのため、 ReadFileCloseHandle などの関数では使用できません。 同様に、WinINet 関数では他のハンドル型を使用できません。 たとえば、 CreateFile によって返されるハンドルを InternetReadFile に渡すことはできません。

InternetCloseHandle 関数は、HINTERNET 型のハンドルを閉じます。 ハンドルの値は迅速にリサイクルされることに注意してください。したがって、ハンドルが閉じられ、新しいハンドルがすぐに生成される場合、新しいハンドルが閉じたハンドルと同じ値を持つ可能性が高いです。

階層の処理

HINTERNET ハンドルはツリー階層に保持されます。 InternetOpen 関数によって返されるハンドルはルート ノードです。 InternetConnect 関数によって返されるハンドルは、次のレベルを占めます。 FtpOpenFileFtpFindFirstFileHttpOpenRequest 関数によって返されるハンドルは、リーフ ノードです。

Windows XP および Windows Server 2003 R2 以前:GopherOpenFile、および GopherFindFirstFile によって返されるハンドルもリーフ ノードです。

次の図は 、HINTERNET ハンドルの階層を示しています。 図の各ボックスは 、HINTERNET ハンドルを返す関数を表します。

ハンドルを作成する関数

最上位レベルには、ルート ハンドルを作成する InternetOpen 関数があります。 次のレベルには、 InternetOpenUrl 関数と InternetConnect 関数が含まれます。 InternetConnect によって返されるハンドルを使用する関数は、最後のレベルを構成します。

次の図は、 InternetOpenUrl によって作成されたハンドルに依存する関数を示しています。 網かけのボックスは HINTERNET ハンドルを返す関数を表し、プレーンボックスは関連付けられた関数によって作成された HINTERNET ハンドルを使用する関数を表します。

internetopenurl ハンドルを使用する関数

InternetQueryDataAvailableInternetReadFile、および InternetSetFilePointer 関数は、InternetOpenUrl によって作成された HINTERNET ハンドルを使用します。

FTP 階層

次の図は、 InternetConnect によって返される FTP セッション ハンドルに依存する FTP 関数を示しています。 網かけのボックスは HINTERNET ハンドルを返す関数を表し、プレーン ボックスは依存する関数によって作成された HINTERNET ハンドルを使用する関数を表します。

ftp セッション ハンドルを使用する関数

FtpCreateDirectoryFtpDeleteFileFtpGetCurrentDirectoryFtpGetFileFtpPutFileFtpRemoveDirectoryFtpRenameFileおよび FtpSetCurrentDirectory 関数はすべて、InternetConnect によって作成された HINTERNET ハンドルを使用します。

次の図は、ハンドルを返す 2 つの FTP 関数と、それらに依存する関数を示しています。 網かけのボックスは HINTERNET ハンドルを返す関数を表し、プレーン ボックスは依存する関数によって作成された HINTERNET ハンドルを使用する関数を表します。

ftpopen および ftpfindfirstfile のハンドルを使用する関数

InternetFindNextFile 関数は FtpFindFirstFile によって作成されたハンドルに依存しますが、InternetReadFileInternetWriteFileFtpOpenFile によって作成されたハンドルを使用します。

HTTP 階層

次の図は、HTTP プロトコルに使用される関数の関係を示しています。 網かけのボックスは HINTERNET ハンドルを返す関数を表し、プレーン ボックスは依存する関数によって作成された HINTERNET ハンドルを使用する関数を表します。

httpopenrequest のハンドルを使用する関数

HttpAddRequestHeadersHttpQueryInfoHttpSendRequestHttpSendRequestExおよび InternetErrorDlg 関数は、HttpOpenRequest によって作成されたハンドルに依存します。

次の図は、HttpSendRequest によって送信された後に HttpOpenRequest によって作成された HINTERNET ハンドルを使用する関数を示しています。 網かけのボックスは HINTERNET ハンドルを返す関数を表し、プレーン ボックスは依存する関数によって作成された HINTERNET ハンドルを使用する関数を表します。

httpsendrequest の後にハンドルを使用する関数

HttpSendRequestHttpOpenRequest によって返されるハンドルを使用した後、InternetQueryDataAvailableInternetReadFileおよび InternetSetFilePointer で使用できます。

httpsendrequestex の後にハンドルを使用する関数

HttpSendRequestExHttpOpenRequest によって返されるハンドルを使用した後、HttpEndRequestInternetReadFileExおよび InternetWriteFile でハンドルを使用できます。 HttpEndRequest が呼び出されると、InternetReadFile、InternetSetFilePointerおよび InternetQueryDataAvailable でハンドルを使用できます。

注意

WinINet では、サーバーの実装はサポートされていません。 また、サービスから使用しないでください。 サーバーの実装またはサービスの場合は、 Microsoft Windows HTTP サービス (WinHTTP) を使用します。