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句柄的一个函数。

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

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

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

FTP层次结构

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

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

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

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

Gopher层次结构

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

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

HTTP层次结构

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

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

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

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

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

 本文用菊子曰发布

HINTERNET句柄相关推荐

  1. WinHTTP中的HINTERNET句柄

    WinHTTP中的HINTERNET句柄 Microsoft Windows HTTP Services (WinHTTP) uses handles to keep track of setting ...

  2. HINTERNET 句柄

    这篇文章的内容能够简单总结例如以下: WinINet函数创建和使用类型为HINTERNET的句柄 HINTERNET句柄不能与其它类型的句柄互换使用 用InternetCloseHandle关闭HIN ...

  3. WinInet编程详解

    一般而言,开发Internet服务客户端程序的目的是通过Internet协议(HTTP,FTP)获取网络数据源的信息,微软提供了专门的Win32 Internet扩展接口,也就是WinInet. 1使 ...

  4. InternetOpen InternetOpenUrl InternetReadFile 和 InternetCloseHandle

    文章目录 InternetOpen 函数功能 函数声明 第一个参数 第二个参数 第三个参数 第四个参数 第五个参数 返回值 补充: InternetOpenUrl 函数功能 函数声明 第一个参数 第二 ...

  5. vc:如何从Internet上有效而稳定地下载文件

    http://www.vckbase.com/index.php/wv/172 如何从Internet上有效而稳定地下载文件 ,这是很多网络应用程序要考虑的重要问题,本文提供的代码段针对这个问题进行了 ...

  6. Windows Internet

    网址:http://baike.baidu.com/view/560670.htm WinInet 求助编辑百科名片 WinInet("Windows Internet")API帮 ...

  7. WINHTTP的API接口说明。

    BOOL WINAPI WinHttpAddRequestHeaders(   _In_  HINTERNET hRequest,   _In_  LPCWSTR pwszHeaders,   _In ...

  8. CS -exe木马分析

    CS -exe木马分析 Cobalt Strike是渗透测试工具,可以通过exe木马实现远程控制. 一:生成exe Windows Executable 生成可执行exe木马:payload分段 Wi ...

  9. WinInet使用详解

    WinInet是windows平台对socket进行一层封装,用来直接处理http/ftp/Gopher协议的一套windows API.我第一次接触这个是在一个客户那里,当时因为客户都需要使用htt ...

最新文章

  1. 嵌入式s5vp210裸机 KXTF9-2050(G-sensor)
  2. 2018-3-7 Hadoop简介1(名字的由来,以及基本的结构)
  3. 高并发场景下创建多少线程才合适?一条公式帮你搞定!!
  4. oracle行转列和列转行,oracle行转列和列转行(pivot 和 unpivot 函数,wm_concat函数 )...
  5. dxf转nc代码软件_eCAM高速激光加工软件
  6. java集合(6):TreeMap源码分析(jdk1.8)
  7. 【技术综述】你真的了解图像分类吗?
  8. 无法使用此数据源,因为没有正确配置performancepoint services
  9. 【Java】在eclipse中使用maven进行项目构建 入门篇
  10. 有关onpropertychange事件
  11. 轨迹跟踪—线性 MPC 控制算法
  12. 《指弹:Like a star》
  13. 测试鼠标传感器的软件,鼠标该怎么选择?给大家说下鼠标传感器的差距
  14. AI 上当,“苹果”变 “iPod”
  15. ubuntu20.04安装mysql8
  16. 亚马逊和Global Optimism欢迎汉高和昕诺飞加入《气候宣言》
  17. win8.1安装office2016
  18. vscode terminal主题配色
  19. 计算Excel某列是第几列
  20. 亚太教育杂志亚太教育杂志社亚太教育编辑部2022年第8期目录

热门文章

  1. NX二次开发-NXOpen::Drawings::DrawingSheet Class Reference
  2. 3个月在家里打造肌肉男的伟大健身计划
  3. Yolov7学习笔记(四)数据加载
  4. 【面试】社招斩获大厂Offer全攻略
  5. 一篇有意思的招聘帖子
  6. KOOCAN小教程,制作万圣节食物,最后一个吓坏我了!!
  7. 解决chrome浏览器对于自动填充的input表单添加的默认的淡黄色背景问题 一般的浏览器input和button的高度不一致问题...
  8. [浙大数据结构] 04-树6 Complete Binary Search Tree (30分)
  9. 化妆步骤!! - 生活至上,美容至尚!
  10. jquery-1.10.2.min.map 404 (Not Found)问题及解决