HINTERNET 控制碼
本節包含 WinINet 函式所使用的控制碼及其運作階層的相關資訊。
關於 HINTERNET 控制碼
WinINet 函式所建立和使用控制碼的類型為 HINTERNET。 WinINet 函式會傳回無法與其他控制碼類型交換的 HINTERNET 控制碼。 因此,它們不能與 ReadFile 或 CloseHandle等函式搭配使用。 同樣地,其他控制碼類型不能與 WinINet 函式搭配使用。 例如, CreateFile 傳回的控制碼無法傳遞至 InternetReadFile。
InternetCloseHandle函式會關閉HINTERNET類型的控制碼。 請注意,控制碼值會快速回收;因此,如果控制碼已關閉,而且會立即產生新的控制碼,則新控制碼有與剛關閉之控制碼相同的值。
處理階層
HINTERNET控制碼會在樹狀結構階層中維護。 InternetOpen函式所傳回的控制碼是根節點。 InternetConnect函式所傳回的控制碼佔用下一個層級。 FtpOpenFile、FtpFindFirstFile和HttpOpenRequest函式所傳回的控制碼是分葉節點。
Windows XP 和 Windows Server 2003 R2 和更早版本: 、 GopherOpenFile和 GopherFindFirstFile 所傳回的控制碼也是分葉節點。
下圖說明 HINTERNET 控制碼的階層。 圖表中的每個方塊都代表傳回 HINTERNET 控制碼的函式。
最上層是 InternetOpen 函式,它會建立根控制碼。 下一個層級包含 InternetOpenUrl 和 InternetConnect 函式。 使用 InternetConnect 所傳回控制碼的函式會構成最後一個層級。
下圖顯示相依于 InternetOpenUrl所建立控制碼的函式。 陰影方塊代表傳回 HINTERNET 控制碼的函式,而純方塊則代表使用相關聯函式所建立 HINTERNET 控制碼的函式。
InternetQueryDataAvailable、InternetReadFile和InternetSetFilePointer函式會使用InternetOpenUrl所建立的HINTERNET控制碼。
FTP 階層
下圖顯示與 InternetConnect所傳回之 FTP 會話控制碼相依的 FTP 函式。 陰影方塊代表會傳回 HINTERNET 控制碼的函式,而純方塊則代表使用由函式所建立之 HINTERNET 控制碼所建立的函式。
FtpCreateDirectory、FtpDeleteFile、FtpGetCurrentDirectory、FtpGetFile、FtpPutFile、FtpRemoveDirectory、FtpRenameFile和FtpSetCurrentDirectory函式全都使用InternetConnect所建立的HINTERNET控制碼。
下圖顯示兩個 FTP 函式,這些函式會傳回控制碼和相依的函式。 陰影方塊代表會傳回 HINTERNET 控制碼的函式,而純方塊則代表使用由函式所建立之 HINTERNET 控制碼所建立的函式。
InternetFindNextFile函式相依于FtpFindFirstFile所建立的控制碼,而InternetReadFile和InternetWriteFile則使用FtpOpenFile所建立的控制碼。
HTTP 階層
下圖顯示用於 HTTP 通訊協定之函式的關聯性。 陰影方塊代表會傳回 HINTERNET 控制碼的函式,而純方塊則代表使用由函式所建立之 HINTERNET 控制碼所建立的函式。
HttpAddRequestHeaders、HttpQueryInfo、HttpSendRequest、HttpSendRequestEx和InternetErrorDlg函式相依于HttpOpenRequest所建立的控制碼。
下圖顯示由HttpSendRequest傳送之後,使用HttpOpenRequest所建立HINTERNET控制碼的函式。 陰影方塊代表會傳回 HINTERNET 控制碼的函式,而純方塊則代表使用由函式所建立之 HINTERNET 控制碼所建立的函式。
在 HttpSendRequest使用HttpOpenRequest傳回的控制碼之後,InternetQueryDataAvailable、InternetReadFile 和 InternetSetFilePointer可以使用它。
HttpSendRequestEx使用HttpOpenRequest傳回的控制碼之後,HttpEndRequest、InternetReadFileEx和InternetWriteFile可以使用控制碼。 呼叫 HttpEndRequest 之後, InternetReadFile、 InternetSetFilePointer和 InternetQueryDataAvailable可以使用控制碼。
注意
WinINet 不支援伺服器實作。 此外,它不應該從服務使用。 對於伺服器實作或服務,請使用 Microsoft Windows HTTP 服務 (WinHTTP) 。