« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
| 公告 |
终于,答辩完了。该来到这里来写点什么了,毕业设计还真是让我学到了点东西可以让我卖弄下,呵呵,一点一点的贴上来hoho |
Blog信息 |
blog名称:技术青年 日志总数:7 评论数量:17 留言数量:7 访问次数:48952 建立时间:2006年6月10日 |

| |
检测网络连接状态 原创空间, 软件技术
页史 发表于 2006/11/19 10:49:00 |
很久没来更新这里了,今天来了兴致,写点东西吧
最近产测需要用检测指定网卡的连接状态我的方法是在注册表(HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards)通过网卡的description找到那张网卡的servicename,然后用createfile打开servicename(应该是驱动吧。。。),打开成功后用deviceiocontrol下一个oid_gen_media_status(不知道是不是这个。。忘了,反正是个oid code,sdk里有吧)命令,就会返回一个status,xxxconnect/xxxdisconnect(也忘了。。)这样就可以达到检测的目的了。
看似简单,但我实际做的时候还是遇到了bug,解了很久。就是在enum注册表的时候,有一个参数LPDWORD lpcbClass // address for size of class buffer是个in/out参数,也就是说初始化将这个参数设为255,enum成功一次,这个参数就变了,而我没考虑到这点,在enum下一个subkey的时候还是使用了上一个lpcbClass,如果后一个subkey路径比前一个subkey的路径长,问题就出现了,会返回一个234的error code (more data available)的错误,我解了很久不知道问题出在哪,还是老大一语到破,发现是这个问题,所以问题也就迎刃而解,只要在enum之前重新inilization lpcbClass为255就ok了 |
|
|