wince驱动学习笔记(vs2005实现流驱动动态加载与卸载 2)
2011-10-07 21:08
183 查看
二、用vs2005建立用于动态加载&卸载驱动的程序
这部分困扰了我挺长时间,最后发现是我对函数理解有误,网上现有的程序也有很大缺陷。我最终采取的方法如下:
1、驱动注册
这部分核心是 ActivateDeviceEx()函数。但是,使用此函数的前提是首先将String.reg添加在注册表中(我就是在这里悲剧了好久)。函数具体用法网上有很多,我就不罗嗦了。
2、驱动卸载
这部分核心是DeactivateDevice()函数。但是,网上广泛采用的代码有一个很大的缺点:它们都是通过一个全局变量在两个按键响应函数间传递注册设备的句柄,这样,一旦只按了“注册”键就不小心退出程序,接下来就会有问题。我找到的方法是先用FindFirstDevice()查询到设备句柄,再用DeactivateDevice()卸载。代码如下:
BOOL flag;
HANDLE hFind=INVALID_HANDLE_VALUE;
DEVMGR_DEVICE_INFORMATION devInfo={0};
devInfo.dwSize=sizeof(devInfo);
hFind=FindFirstDevice(DeviceSearchByDeviceName,_T("STR1"),&devInfo);
if(hFind == INVALID_HANDLE_VALUE)
{
MessageBoxW(_T("FindFirstDevice出错"),NULL,MB_OK);
}
flag=DeactivateDevice(devInfo.hDevice);
if(flag == NULL)
MessageBoxW(_T("unload driver fail!"),NULL,MB_OK);
else
MessageBoxW(_T("unload driver sucess"),NULL,MB_OK);
至此,第二步完成。
这部分困扰了我挺长时间,最后发现是我对函数理解有误,网上现有的程序也有很大缺陷。我最终采取的方法如下:
1、驱动注册
这部分核心是 ActivateDeviceEx()函数。但是,使用此函数的前提是首先将String.reg添加在注册表中(我就是在这里悲剧了好久)。函数具体用法网上有很多,我就不罗嗦了。
2、驱动卸载
这部分核心是DeactivateDevice()函数。但是,网上广泛采用的代码有一个很大的缺点:它们都是通过一个全局变量在两个按键响应函数间传递注册设备的句柄,这样,一旦只按了“注册”键就不小心退出程序,接下来就会有问题。我找到的方法是先用FindFirstDevice()查询到设备句柄,再用DeactivateDevice()卸载。代码如下:
BOOL flag;
HANDLE hFind=INVALID_HANDLE_VALUE;
DEVMGR_DEVICE_INFORMATION devInfo={0};
devInfo.dwSize=sizeof(devInfo);
hFind=FindFirstDevice(DeviceSearchByDeviceName,_T("STR1"),&devInfo);
if(hFind == INVALID_HANDLE_VALUE)
{
MessageBoxW(_T("FindFirstDevice出错"),NULL,MB_OK);
}
flag=DeactivateDevice(devInfo.hDevice);
if(flag == NULL)
MessageBoxW(_T("unload driver fail!"),NULL,MB_OK);
else
MessageBoxW(_T("unload driver sucess"),NULL,MB_OK);
至此,第二步完成。
相关文章推荐
- wince驱动学习笔记(vs2005实现流驱动动态加载与卸载 1)
- wince驱动学习笔记(vs2005实现流驱动动态加载与卸载 1)
- wince驱动学习笔记(vs2005实现流驱动动态加载与卸载 2)
- Effective C# 学习笔记(四十一)使利用DynamicObject或IDynamicMetaObjectProvider接口实现数据驱动的动态类型
- [学习笔记]利用Jquery实现一些动态效果
- perl学习笔记(4)——动态加载
- MongoDB学习笔记(二) 通过samus驱动实现基本数据操作
- 一步步学习操作系统(2)——在STM32上实现一个可动态加载kernel的"my-boot"
- [Android学习系列15]下拉刷新列表实现动态加载
- Android异步加载学习笔记之二:实现ListView中的图片数据从网络加载
- 转 WINCE流驱动的动态加载调试与用EVC快速开发WINCE的流驱动
- 反射 学习笔记之动态加载类
- 【JavaEE】JavaEE学习笔记之基础加强(类加载器,注解,动态代理)
- 驱动学习笔记2-用程序加载NT驱动程序
- kernel 启动流程之 【设备驱动加载】 学习笔记_好
- 关于动态加载/卸载驱动
- as3学习笔记3:Loader动态加载图片
- WinCE驱动的动态卸载
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】Linux内核模块LKM的动态加载技术分析
- Android 实现图片缓存异步加载框架学习笔记