|
在WINDOWS95&WINDOWS98下如何关闭网络连接(1)
在WINDOWS95&WINDOWS98下如何关闭网络连接
黄 飞 <98/5/20>
一.问题提出:
每当你通过WINDOWS95或WINDOWS98访问"网上邻居"时,系统自动的建立了两 台机器之间的网络连接关系,但是在访问结束后,并不自动的断开网络连接, 所以有时我们关闭WINDOWS系统时,会弹出一个对话框,询问是否关闭网络连 接,在回答"YES"后,才真正开始关闭计算机. 程序员编制系统关闭程序时,就需要考虑这种情况,虽然SDK提供了关机的API: ExitWindowsEx()和ExitWindows(),但实际应用中我发现,在指定FORCE关机时 在特定情况下会出问题.所以,必须想办法首先断开网络连接.
二.编程接口:
WINDOWS95及WINDOWS98提供的这方面的网络编程接口在SVRAPI.DLL中,利用它 我们可以列举出当前网络连接状态,控制或删除网络连接.WINDOWS附件中的 NETWATCH.EXE工具就是这样实现的. 也许您会问,NetAPI的详细说明在开发工具的SDK文档中很详细了,没有必要在 此演示.但是,在查寻了很多资料后,我不得不说:MSDN中有关NetAPI的部分说 明是错误的,至少是不完整而且含混不清的,可以说,依靠这些文档,你不能实 现全部的功能!下面的代码是本人自己分析得来,使用后,您会发现正确的应用 和文档说明有多么大的差距.
三.API声明:
关闭网络连接的实现方法分两步: 枚举出当前所有的网络连接状况; 依次 断开枚举出的网络连接.
1.枚举出当前所有的网络连接状况: 依照开发帮助文档,这个API是这样的: NET_API_STATUS NetSessionEnum( LPWSTR servername, LPWSTR UncClientName, LPWSTR username, DWord level, LPBYTE *bufptr, DWORD prefmaxlen, LPDWORD entriesread, LPDWORD totalentries, LPDWORD resume_handle );
但是,实际情况是,在WINDOWS95和WINDOWS98平台下, 这样调用根本就无法连接上库文件.真正的API声明应该是: DWORD NetSessionEnum( LPSTR,
|