HINTERNET句柄
MSDN 2005 -> Win32 和 COM 开发 -> Networking -> Networking Protocols -> Windows Internet -> About WinINet -> HINTERNET Handles
HINTERNET 句柄
这篇文章的内容可以简单总结如下:
- WinINet函数创建和使用类型为HINTERNET的句柄
- HINTERNET句柄不能与其他类型的句柄互换使用
- 用InternetCloseHandle关闭HINTERNET句柄
- 有多种类型的HINTERNET句柄,它们形成一个树结构,如下图所示:
图中带阴影的方框创建的HINTERNET句柄被下一级的函数使用;背景空白的方框不创建HINTERNET句柄,仅使用上一级函数创建的句柄。HttpSendRequest、HttpSendRequestEx和HttpEndRequest有些特殊,它们的下层函数不是使用它们创建的HINTERNET句柄,而是HttpOpenRequest创建的句柄,在调用这三个函数后,就可以调用下一级的函数了。
本节包含用于WinINet函数的句柄,以及它们的层次结构的信息。
关于HINTERNET句柄
WinINet函数创建和使用类型为HINTERNET的句柄。HINTERNET句柄不能与其他类型的句柄互换。因此,HINTERNET句柄不能用于ReadFile或者CloseHandle等函数。同样地,其他类型的句柄也不能用于WinINet函数。比如说,CreateFile返回的句柄不能传递给InternetReadFile。
InternetCloseHandle函数用于关闭HINTERNET句柄。注意,句柄值很快被回收重用。因此,如果关闭一个句柄,然后立即生成一个新句柄,则新句柄的值很可能与刚被关闭句柄的值相同。
句柄层次结构
HINTERNET句柄形成了一个树结构。InternetOpen函数返回的句柄是树的根节点,InternetConnect函数返回的句柄则占有下一级,而FtpOpenFile、FtpFindFirstFile、HttpOpenRequest、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创建的句柄。
Gopher层次结构
下图显示了用于Gopher协议的函数。带阴影的方框表示返回HINTERNET句柄的函数,空白方框表示使用它们所依赖的函数创建的HINTERNET句柄的函数。
GopherGetAttribute函数依赖于InternetConnect创建的句柄。InternetFindNextFile使用GopherFindFirstFile创建的句柄。GopherOpenFile创建的句柄被InternetQueryDataAvailable和InternetReadFile使用。
HTTP层次结构
下图显示了用于HTTP协议的函数。带阴影的方框表示返回HINTERNET句柄的函数,空白方框表示使用它们所依赖的函数创建的HINTERNET句柄的函数。
HttpAddRequestHeaders、HttpQueryInfo、HttpSendRequest、HttpSendRequestEx和InternetErrorDlg函数依赖于HttpOpenRequest创建的句柄。
下图展示了使用由HttpOpenRequest创建、然后被HttpSendRequest发送的句柄的函数。带阴影的方框表示返回HINTERNET句柄的函数,空白方框表示使用它们所依赖的函数创建的HINTERNET句柄的函数。
由HttpOpenRequest返回的句柄被HttpSendRequest使用后,就可以被InternetQueryDataAvailable、InternetReadFile和InternetSetFilePointer使用了。
由HttpOpenRequest返回的句柄,在被HttpSendRequestEx使用后,就可以被HttpEndRequest、InternetReadFileEx和InternetWriteFile使用了。调用HttpEndRequest之后,句柄可以被InternetReadFile、InternetSetFilePointer和InternetQueryDataAvailable使用。
![](http://image.webstory.my/WebStoryLogo24.png)
HINTERNET句柄相关推荐
- WinHTTP中的HINTERNET句柄
WinHTTP中的HINTERNET句柄 Microsoft Windows HTTP Services (WinHTTP) uses handles to keep track of setting ...
- HINTERNET 句柄
这篇文章的内容能够简单总结例如以下: WinINet函数创建和使用类型为HINTERNET的句柄 HINTERNET句柄不能与其它类型的句柄互换使用 用InternetCloseHandle关闭HIN ...
- WinInet编程详解
一般而言,开发Internet服务客户端程序的目的是通过Internet协议(HTTP,FTP)获取网络数据源的信息,微软提供了专门的Win32 Internet扩展接口,也就是WinInet. 1使 ...
- InternetOpen InternetOpenUrl InternetReadFile 和 InternetCloseHandle
文章目录 InternetOpen 函数功能 函数声明 第一个参数 第二个参数 第三个参数 第四个参数 第五个参数 返回值 补充: InternetOpenUrl 函数功能 函数声明 第一个参数 第二 ...
- vc:如何从Internet上有效而稳定地下载文件
http://www.vckbase.com/index.php/wv/172 如何从Internet上有效而稳定地下载文件 ,这是很多网络应用程序要考虑的重要问题,本文提供的代码段针对这个问题进行了 ...
- Windows Internet
网址:http://baike.baidu.com/view/560670.htm WinInet 求助编辑百科名片 WinInet("Windows Internet")API帮 ...
- WINHTTP的API接口说明。
BOOL WINAPI WinHttpAddRequestHeaders( _In_ HINTERNET hRequest, _In_ LPCWSTR pwszHeaders, _In ...
- CS -exe木马分析
CS -exe木马分析 Cobalt Strike是渗透测试工具,可以通过exe木马实现远程控制. 一:生成exe Windows Executable 生成可执行exe木马:payload分段 Wi ...
- WinInet使用详解
WinInet是windows平台对socket进行一层封装,用来直接处理http/ftp/Gopher协议的一套windows API.我第一次接触这个是在一个客户那里,当时因为客户都需要使用htt ...
最新文章
- 嵌入式s5vp210裸机 KXTF9-2050(G-sensor)
- 2018-3-7 Hadoop简介1(名字的由来,以及基本的结构)
- 高并发场景下创建多少线程才合适?一条公式帮你搞定!!
- oracle行转列和列转行,oracle行转列和列转行(pivot 和 unpivot 函数,wm_concat函数 )...
- dxf转nc代码软件_eCAM高速激光加工软件
- java集合(6):TreeMap源码分析(jdk1.8)
- 【技术综述】你真的了解图像分类吗?
- 无法使用此数据源,因为没有正确配置performancepoint services
- 【Java】在eclipse中使用maven进行项目构建 入门篇
- 有关onpropertychange事件
- 轨迹跟踪—线性 MPC 控制算法
- 《指弹:Like a star》
- 测试鼠标传感器的软件,鼠标该怎么选择?给大家说下鼠标传感器的差距
- AI 上当,“苹果”变 “iPod”
- ubuntu20.04安装mysql8
- 亚马逊和Global Optimism欢迎汉高和昕诺飞加入《气候宣言》
- win8.1安装office2016
- vscode terminal主题配色
- 计算Excel某列是第几列
- 亚太教育杂志亚太教育杂志社亚太教育编辑部2022年第8期目录
热门文章
- NX二次开发-NXOpen::Drawings::DrawingSheet Class Reference
- 3个月在家里打造肌肉男的伟大健身计划
- Yolov7学习笔记(四)数据加载
- 【面试】社招斩获大厂Offer全攻略
- 一篇有意思的招聘帖子
- KOOCAN小教程,制作万圣节食物,最后一个吓坏我了!!
- 解决chrome浏览器对于自动填充的input表单添加的默认的淡黄色背景问题 一般的浏览器input和button的高度不一致问题...
- [浙大数据结构] 04-树6 Complete Binary Search Tree (30分)
- 化妆步骤!! - 生活至上,美容至尚!
- jquery-1.10.2.min.map 404 (Not Found)问题及解决