http://hi.baidu.com/mingyuejingque/item/d418142a44515f85ae48f54c
常看到论坛上常有人询问怎么重启网卡,在我写这个文章的时候貌似还搜索不到解决方案。
其实根据我的实践,在wince下面重启网卡其实十分简单,直接把驱动程序和网卡分离然后再绑定一次就好了。怎么绑定呢。就是一个函数DeviceIoControl和底层通信下。
方法1 :把第二个参数设为IOCTL_NDIS_REBIND_ADAPTER。直接分离和绑定
方法2 :把第二个参数设为IOCTL_NDIS_UNBIND_ADAPTER分离,然后再IOCTL_NDIS_BIND_ADAPTER绑定也能达到相同的效果。
我测试用的平台是X86的wince5.0。当然用DeviceIoControl的第一个参数需要获取设备的句柄 :
hNdis = CreateFile(DD_NDIS_DEVICE_NAME, GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_ALWAYS,
0, NULL);
其实wince对网卡的控制函数做的已经不错了。用DeviceIoControl后面第二个参数带IOCTL_NDIS_GET_ADAPTER_NAMES的话很容易获取到网卡的名字,可以用来遍历网卡。如果照我所说的方法,编译出现问题,你可能没包含ntddndis.h这个头文件。