HINTERNET句柄

MSDN 2005 -> Win32 和 COM 开发 -> Networking -> Networking Protocols -> Windows Internet -> About WinINet -> HINTERNET Handles

HINTERNET 句柄

这篇文章的内容可以简单总结如下:

  1. WinINet函数创建和使用类型为HINTERNET的句柄
  2. HINTERNET句柄不能与其他类型的句柄互换使用
  3. InternetCloseHandle关闭HINTERNET句柄
  4. 有多种类型的HINTERNET句柄,它们形成一个树结构,如下图所示:

 

图中带阴影的方框创建的HINTERNET句柄被下一级的函数使用;背景空白的方框不创建HINTERNET句柄,仅使用上一级函数创建的句柄。HttpSendRequestHttpSendRequestExHttpEndRequest有些特殊,它们的下层函数不是使用它们创建的HINTERNET句柄,而是HttpOpenRequest创建的句柄,在调用这三个函数后,就可以调用下一级的函数了。

 

本节包含用于WinINet函数的句柄,以及它们的层次结构的信息。

关于HINTERNET句柄

WinINet函数创建和使用类型为HINTERNET的句柄。HINTERNET句柄不能与其他类型的句柄互换。因此,HINTERNET句柄不能用于ReadFile或者CloseHandle等函数。同样地,其他类型的句柄也不能用于WinINet函数。比如说,CreateFile返回的句柄不能传递给InternetReadFile

InternetCloseHandle函数用于关闭HINTERNET句柄。注意,句柄值很快被回收重用。因此,如果关闭一个句柄,然后立即生成一个新句柄,则新句柄的值很可能与刚被关闭句柄的值相同。

 

句柄层次结构

HINTERNET句柄形成了一个树结构。InternetOpen函数返回的句柄是树的根节点,InternetConnect函数返回的句柄则占有下一级,而FtpOpenFileFtpFindFirstFileHttpOpenRequestGopherOpenFileGopherFindFirstFile函数返回的句柄则是叶子节点。

下图展示了HINTERNET句柄的层次结构。图中每个方框代表返回HINTERNET句柄的一个函数。

Functions that create handles

最顶层的是InternetOpen函数,它创建根节点。下一层包括InternetOpenUrlInternetConnect函数。组成了最后一层的是使用InternetConnect返回的句柄的函数。

下图展示了依赖于由InternetOpenUrl创建的句柄的函数。带阴影的方框代表返回HINTERNET句柄的函数,而空白方框代表使用HINTERNET句柄的函数。

Functions that use the InternetOpenUrl handle

InternetQueryDataAvailableInternetReadFileInternetSetFilePointer函数使用InternetOpenUrl创建的HINTERNET句柄。

 

FTP层次结构

下图展示了依赖于InternetConnect返回的FTP会话句柄的FTP函数。带阴影的方框代表返回HINTERNET句柄的函数,空白方框表示使用它们所依赖的函数创建的HINTERNET句柄的函数。

Functions that use the FTP session handle

FtpCreateDirectoryFtpDeleteFileFtpGetCurrentDirectoryFtpGetFileFtpPutFileFtpRemoveDirectoryFtpRenameFileFtpSetCurrentDirectory函数都使用InternetConnect创建的HINTERNET句柄。

下图展示了返回句柄的两个FTP函数,以及依赖于它们的函数。带阴影的方框代表返回HINTERNET句柄的函数,空白方框表示使用它们所依赖的函数创建的HINTERNET句柄的函数。 

Functions that use the handle from FtpOpen and FtpFindFirstFile

InternetFindNextFile函数依赖于FtpFindFirstFile创建的句柄;而InternetReadFileInternetWriteFile使用FtpOpenFile创建的句柄。

 

Gopher层次结构

下图显示了用于Gopher协议的函数。带阴影的方框表示返回HINTERNET句柄的函数,空白方框表示使用它们所依赖的函数创建的HINTERNET句柄的函数。 

Gopher related functions

GopherGetAttribute函数依赖于InternetConnect创建的句柄。InternetFindNextFile使用GopherFindFirstFile创建的句柄。GopherOpenFile创建的句柄被InternetQueryDataAvailableInternetReadFile使用。

 

HTTP层次结构

下图显示了用于HTTP协议的函数。带阴影的方框表示返回HINTERNET句柄的函数,空白方框表示使用它们所依赖的函数创建的HINTERNET句柄的函数。  

Functions that use the handle from HttpOpenRequest

HttpAddRequestHeadersHttpQueryInfoHttpSendRequestHttpSendRequestExInternetErrorDlg函数依赖于HttpOpenRequest创建的句柄。

下图展示了使用由HttpOpenRequest创建、然后被HttpSendRequest发送的句柄的函数。带阴影的方框表示返回HINTERNET句柄的函数,空白方框表示使用它们所依赖的函数创建的HINTERNET句柄的函数。  

Functions that use the handle after HttpSendRequest

HttpOpenRequest返回的句柄被HttpSendRequest使用后,就可以被InternetQueryDataAvailableInternetReadFileInternetSetFilePointer使用了。 

Functions that use the handle after HttpSendRequestEx

HttpOpenRequest返回的句柄,在被HttpSendRequestEx使用后,就可以被HttpEndRequestInternetReadFileExInternetWriteFile使用了。调用HttpEndRequest之后,句柄可以被InternetReadFileInternetSetFilePointerInternetQueryDataAvailable使用。


菊子曰 本文用 菊子曰发布
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值