`
java-mans
  • 浏览: 11711305 次
文章分类
社区版块
存档分类
最新评论

WinCE驱动的动态加载

 
阅读更多

//=====================================================================
//TITLE:
// WinCE驱动的动态加载
//AUTHOR:
// norains
//DATE:
// Monday 22- February-2010
//Environment:
// WINDOWS CE 5.0
//=====================================================================

WinCE驱动的调试,很多人的第一感觉就是:编写好DLL文件,接着在PB中添加相关注册表信息,然后将DLL文件包含进系统,最后生成系统,下载,调试。如果有误,那么依次按步骤重来。

  其实这种繁琐的操作完全可以不必要,因为在WinCE下驱动是可以动态加载和卸载的。
  
  驱动的加载和卸载非常简单,我们只需要如下两个函数:
  

  
  前者是加载,后者是卸载。
  
  我们首先来看一下加载函数。这函数很简单,lpszDevKey指向的是驱动信息在注册表的位置。比如,我之前文章所提到的虚拟串口的驱动的注册表信息如下:
  
  [HKEY_LOCAL_MACHINE/Drivers/Builtin/VirtualSerial]
   "Prefix"="VSP"
   "Dll"="VirtualSerial.dll"
   "Order"=dword:0
   "Index"=dword:1
   "Map_Port"="COM1:"
  
  那么对于这个信息而言,lpszDevkey的取值为TEXT("Drivers//Builtin//VirtualSerial")。对于系统而言,驱动的Root Key为HKEY_LOCAL_MACHINE,故这里并不需要特别指出。换而言之,驱动的信息只能放置于HKEY_LOCAL_MACHINE,因为我们无法另外指定Root Key。
  
  接下来再看看别的参数。lpRegEnts和cRegEnts是和BUS有关的,但我们接下来的例子并没有用上,所以这里直接可以忽略,直接赋值NULL即可。其实,如果不使用这两个形参的话,我们还可以选择ActivateDevice。
  
  lpvParam指向的是传给驱动XXX_Init函数的形参,如果有特别需求,我们可以通过该指针进行传递。
  
  函数功能很简单。我们写一个功能简单的驱动,来测试该函数是否有效。


  驱动代码如下:  
  


  代码意思很简单,就是在加载和卸载的时候,分别打印信息。然后还有两个全局变量,一个是g_strContext,用来保存成功加载时的注册表位置;另一个是g_dwParam,用来保存通过ActivateDeviceEx函数传递的第4个形参。而这两个全局变量的数值,之后我们可以通过ReadFile函数获得。只不过FKE_Read函数健壮性不高,没有判断缓冲区是否为空。但作为测试,还是够了。
  
  驱动方面大致如此,我们再来实例看看如何加载驱动。因为驱动的加载涉及到注册表的写入,所以我这里直接采用了CReg类。关于该类的代码,详情可参见:(http://blog.csdn.net/norains/archive/2007/06/20/1659925.aspx
  
  我们先写注册表信息:  
  
  
  稍微说一下注册表写入数值的意思。Order是加载的顺序,其实手工加载的话可以无视该字段。Index是打开时的序号,与此相关的还有Prefix,为驱动名。Dll则简单了,则是我们编译好的驱动的存放路径。
  
  接下来就简单多了,我们加载驱动,然后传递一个DWORD的数值作为形参:  


  如果运行这段代码,你则会看到ReadFile之后,vtBuf则会存储到相应的数值。在我的平台上,某次运行时的数值如下:
  
  Context:Driver/Active/37 Parameter:89
  
  最后,就是卸载驱动。这个最简单,直接传递ActivateDeviceEx执行成功后返回的数值即可:
  

分享到:
评论

相关推荐

    WinCE驱动的动态加载和卸载.(含源码)

    本文将深入探讨WinCE驱动的动态加载和卸载机制,并结合提供的源码进行分析。 动态加载驱动程序是一种在运行时根据需要加载驱动的方法,这可以减少系统的内存占用,提高系统性能。在WinCE中,动态加载驱动通常涉及...

    WinCE驱动开发 WinCE驱动开发 WinCE驱动开发

    总的来说,WinCE驱动开发涉及了从设备抽象到中断处理的多个层次,要求开发者对硬件工作原理、动态链接库机制以及WinCE内核有深入理解。开发过程中,需要平衡性能、稳定性和兼容性,以确保驱动程序能够有效地支持各种...

    wince_driver_develop.rar_WINCE驱动_wince_wince 驱动_wince驱动程序

    本资料"WINCE驱动_wince_wince 驱动_wince驱动程序"着重介绍了Wince驱动程序的开发和特点。 首先,让我们了解一下Wince驱动程序的特点: 1. **模块化设计**:Wince驱动程序采用模块化设计,允许开发者独立编写和...

    wince 驱动调试 软件

    在Windows CE(简称WinCE)平台上进行驱动程序的开发与调试是一项技术含量较高的工作,而“wince驱动调试软件”正是一款专为此目的设计的工具集合。这款软件为开发者提供了全面的支持,帮助他们更轻松地理解和调试...

    WINCE驱动调试助手

    WINCE驱动调试助手是一款专为Windows CE平台设计的工具,旨在简化驱动程序开发过程中的调试工作,尤其在Basic System Package (BSP) 开发中扮演重要角色。它提供了丰富的功能,帮助开发者更有效地定位和解决问题,...

    WinCE驱动调试助手

    《WinCE驱动调试助手——深度解析与应用指南》 在嵌入式系统开发领域,WinCE(Windows CE)操作系统因其轻量级、高效的特点被广泛应用于各种设备中。然而,对于开发者来说,驱动程序的开发与调试是挑战之一。这时,...

    wince驱动调试工具

    1. **WinCE驱动加载**: - 驱动加载通常在WinCE启动时自动进行,或通过动态加载机制。注册表是控制这一过程的关键,因为它存储了驱动程序的信息,如驱动类、设备ID、服务名等。 - 在注册表的`HKEY_LOCAL_MACHINE\...

    WinCE驱动调试助手V2

    《WinCE驱动调试助手V2:深入解析与应用》 WinCE驱动调试助手V2是一款专为Windows CE操作系统设计的强大工具,它极大地简化了在WinCE环境下进行驱动程序调试的过程。该工具对注册表编辑功能进行了优化升级,不仅...

    动态加载WinCE流驱动

    在Windows CE(简称WinCE)操作系统中,动态加载流驱动是一项关键的技术,它允许程序在运行时根据需要加载和卸载驱动程序,提高了系统的灵活性和效率。本文将深入探讨动态加载WinCE流驱动的原理、步骤及调试助手的...

    WinCE 驱动开发问题精华集锦

    《WinCE驱动开发问题精华集锦》 WinCE操作系统下的驱动开发是一项技术性强且复杂的任务。本文档集合了关于WinCE驱动开发的一些常见问题及解答,旨在帮助开发者更有效地理解和解决遇到的问题。 1. **WinCE驱动分类*...

    WINCE驱动编写小结

    **驱动加载方式** WinCE下的驱动程序可以通过GWES(Graphics, Windowing, and Events Subsystem)加载,主要用于显示和输入相关的设备;通过设备管理器加载,支持本地驱动和流接口驱动;还可以动态加载,即设备接入...

    开发wince驱动步骤

    开发WinCE驱动首先需要准备好以下软件: - **Visual Studio 2005**:作为主要的开发工具,用于编写和编译驱动代码。 - **WinCE 6.0 SDK**:包含必要的工具链和库文件,用于构建WinCE平台下的应用程序或驱动。 - **...

    WINCE驱动调式精灵2.7

    《WinCE驱动调试精灵2.7详解》 在嵌入式系统开发领域,Windows CE(简称WinCE)是一个广泛使用的实时操作系统,尤其在工业设备和移动设备中。然而,WinCE驱动程序的开发与调试是一项技术性强且挑战性大的工作。为了...

    wince 驱动开发 中文教程

    注册中断处理器的流程包括:设备驱动加载后,创建中断服务线程(IST),并将其注册到中断处理程序。当不再需要中断服务时,可以调用`InterruptDisable`或`OEMInterruptDisable`来解除注册和关闭中断。 中断处理过程...

    有关WINCE驱动,软件自动加载的文章

    以下是一些关于WINCE驱动和软件自动加载的关键知识点: 1. **驱动程序自动加载**:在WINCE系统中,驱动程序通常通过注册表来控制其加载顺序和时间。在`HKLM\Drivers\Boot`子键下,可以设置驱动程序的启动类别,如`...

    WINCE驱动程序入门

    Windows CE驱动程序开发涉及创建动态链接库,实现特定的入口点和设备操作函数,设置注册表以告知系统驱动的存在,使用合适的编译工具链,并掌握基本的调试技巧。对于初学者,理解这些基础知识是迈向成功开发的关键。...

    wince_Divece.rar_WINCE wifi_WINCE驱动_wince_wince 培训_wince教学

    本教程将详细讲解Wince驱动开发的各个方面,旨在为读者提供一套全面的Wince驱动学习路径。 一、Wince驱动基础 1. 驱动模型:了解Wince的驱动模型,包括Kernel Mode Drivers (KMD) 和 User Mode Drivers (UMD),...

    wince驱动开发.rar

    PnP则方便设备的动态添加和移除。 三、驱动开发环境搭建 开发WinCE驱动前,需要配置好开发环境,包括安装Visual Studio、Platform Builder、Driver Development Kit(DDK)等工具。Platform Builder用于构建定制的...

    Wince 设备USB驱动模式切换

    总之,Wince设备USB驱动模式的切换是通过调整注册表设置、加载合适的驱动程序、固件更新以及可能的用户交互来实现的。了解并熟练掌握这些技术,可以帮助开发者更好地利用Wince设备的USB功能,满足各种应用场景的需求...

Global site tag (gtag.js) - Google Analytics