amp连接器:在windows95& windows98下如何关闭网络连接来源: 发布时间:星期二, 2008年12月30日 浏览:2次 评论:0
.问题提出:
每当你通过windows95或windows98访问"网上邻居"时,系统自动建立了两 台机器的间网络连接关系,但是在访问结束后,并不自动断开网络连接, 所以有时我们关闭windows系统时,会弹出个对话框,询问是否关闭网络连 接,在回答"yes"后,才真正开始关闭计算机. 员编制系统关闭时,就需要考虑这种情况,虽然sdk提供了关机api: exitwindowsex和exitwindows,但实际应用中我发现,在指定force关机时 在特定情况下会出问题.所以,必须想办法首先断开网络连接. 2.编程接口: windows95及windows98提供这方面网络编程接口在svrapi.dll中,利用它 我们可以列举出当前网络连接状态,控制或删除网络连接.windows附件中 netwatch.exe工具就是这样实现. 也许您会问,netapi详细介绍说明在开发工具sdk文档中很详细了,没有必要在 此演示.但是,在查寻了很多资料后,我不得不说:msdn中有关netapi部分说 明是,至少是不完整而且含混不清,可以说,依靠这些文档,你不能实 现全部功能!下面代码是本人自己分析得来,使用后,您会发现正确应用 和文档介绍说明有多么大差距. 3.api声明: 关闭网络连接实现思路方法分两步: 枚举出当前所有网络连接状况; 依次 断开枚举出网络连接. 1.枚举出当前所有网络连接状况: 依照开发帮助文档,这个api是这样: net_api_status netsessionenum( lpwstr servername, lpwstr uncclientname, lpwstr username, dword level, lp *bufptr, dword prefmaxlen, lpdword entriesread, lpdword totalentries, lpdword resume_handle ); 但是,实际情况是,在windows95和windows98平台下, 这样根本就无法连接上库文件.真正api声明应该是: dword netsessionenum( lpstr, dword, lp, dword, lpdword, lpdword ) 参数1: null表示枚举本机网络连接 参数2: 不详.在枚举中是常量0x32. 参数3: 存放信息缓冲区指针 参数4: 缓冲区长度 参数5: 指向返回连接个数 参数6: 指向总共连接个数 可见,参数个数完全区别,另外参数意义也发生了变化. 2.依次断开枚举出网络连接: 还算幸运是,断开网络连接api声明是正确: net_api_status netsessiondel( lpwstr servername, lpwstr uncclientname, lpwstr username ); 不过要注意是,第2个和第3个参数内容需要 从枚举得到缓冲区中去取.具体思路方法参见. 4.源代码: 以下是实现断开网络连接子,你可以方便把它们加入到自己项目中 去,而不用和我样浪费时间去研究到底怎样实现网络枚举了. 注:由于本只实际用到了个svrapi.dll中声明,简便期间,我没有 用原有头文件,自己定义下就可以了. /////////////////////////////////////////////////////////////////// // file: netclose.h // version: 1.01 # netbuff_size 0x208 # netsessionenum_profile ( dword (__stdcall *) ( lpstr, dword, lp, dword, lpdword, lpdword ) ) # netsessiondel_profile ( dword (__stdcall *) ( lpstr, lpstr, dword ) ) /////////////////////////////////////////////////////////////////// // file: netclose.cpp // version: 1.01 /////////////////////////////////////////////////////////////////// // : bool netcloseall( void ) // parameters: none // : true or false // // author: mr.huang fei // time: 5/7/1998 // note: can _disibledevent= false; freelibrary( hmod ); } // loadlibrary(...) bret; } 5.整理总结: 以上是开发过程中点经验,希望对大家有所帮助,有不对地方请谅解并 指出.另外,众所周知microsoft开发文档有相当部分是未公开,这些未 公开信息有时会给我们造成很大困难,在此希望有类似体验开发者 把自己经验写出来,让后来者少走些弯路. 0
相关文章
读者评论
发表评论 |