WINCE键盘驱动开发详解

5星 · 超过95%的资源 需积分: 9 4 下载量 155 浏览量 更新于2024-11-03 收藏 40KB DOC 举报
"这篇文章主要探讨了Windows CE (WINCE)平台上的键盘驱动开发,通过具体的例子深入解析了键盘驱动的工作流程。文章指出键盘驱动是由多个层次组成的,包括MDD(Middleware Driver, 中间件驱动)和PDD(Physical Device Driver, 物理设备驱动)。作者提到了参考文献和源代码路径,帮助读者更全面地理解驱动开发过程。键盘驱动的初始化涉及到加载DLL、保存回调函数副本、初始化硬件和中断服务,并将硬件扫描码转化为虚拟键值。布局管理器在其中起到关键作用,它负责将扫描码转换为与当前设备布局匹配的虚拟键值。" 在Windows CE操作系统中,键盘驱动开发是一个复杂的过程,涉及到系统层间的交互和硬件的直接通信。驱动程序通常由两层构成:MDD层和PDD层。MDD层作为中间层,提供了一种通用的接口,抽象了底层硬件的具体细节,使得上层软件可以无需关心硬件的具体实现。PDD层则直接与硬件交互,负责硬件的初始化和中断处理。 在系统启动时,键盘驱动通过注册表中的配置信息被加载,加载的DLL执行初始化函数KeybdDriverInitialize。这个函数会保存输入系统的回调函数,初始化硬件并设置中断服务例程(IST, Interrupt Service Routine)。当键盘产生中断时,IST被调用,它将硬件扫描码转换为虚拟键值。虚拟键值是操作系统理解和处理的键码,与实际物理按键的位置无关,而是与当前设备的布局有关。 布局管理器(LayoutManager)在这一过程中起到了桥梁的角色。它接收PDD传递的硬件扫描码,基于当前设备的布局(例如QWERTY或AZERTY键盘布局)和事件类型(按下、释放等)将其转换为适当的虚拟键值。然后,这些虚拟键值被送回输入系统,输入系统进一步处理并将虚拟键值和对应的字符发送给应用程序。 此外,文章还提到了monolithic driver和layered driver的区别。monolithic driver是单一结构的驱动,不包含MDD和PDD的分层,而layered driver采用了分层结构,通常包括MDD和PDD,以实现更好的硬件抽象和模块化。 开发WINCE键盘驱动需要理解驱动分层原理,熟悉硬件中断处理,以及掌握布局管理器如何工作。通过对源代码的学习和相关资料的研究,开发者可以更好地实现自定义的键盘驱动,以适应不同硬件和应用的需求。