WinCE下的USB游戏手柄驱动 GamePad Joystick

2024-01-16 14:58

本文主要是介绍WinCE下的USB游戏手柄驱动 GamePad Joystick,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

USB接口的游戏手柄和键盘一样,称之为USB HID设备,在CE 系统已经有了 键盘/鼠标 两种HID 设备的驱动。
在public\common\oak\drivers\usb 下面已经有了两种设备的驱动程序源码。在该文件夹下,分成了CLASS,CLIENTS,COMMON,HCD,INC,USBD 几个文件夹,其中INC 和COMMON 里面有一个lock.c 的程序,这个程序很明显是将要被其他USB 有关的驱动程序所使用的一个锁,代码很简单,只是一个类似临界区的封装体,可以保护多线程对同一内存区域的读写访问,可以先不去管它。CLIENTS 文件夹可能最初微软的开发人员是用来放置设备驱动程序的,但是后来没有放,而发布的时候也没有删除,所以遗留了下来,里面是个空的文件夹,所以没用实际用处。USBD 和HCD 是前述的底层驱动,里面含有很多子文件夹和程序,由于我们只针对USB 设备驱动,因此对这两部分不做分析,有兴趣的朋友可以自己去了解. 重点就在CLASS 文件夹了,展开来看,里面又包含了COMMON、HID、PRINTER、STORAGE 几个文件夹,同样,COMMON 里面存放的源程序是为HID、PRINTER、STORAGE所共有的。HID 是USB 输入设备如键盘/鼠标的样例驱动程序,PRINTER 是USB 打印机的样例驱动程序,STORAGE是USB 存储设备如U 盘的样例程序.
在HID 下有CLIENTS 和HIDCLASS 两个文件夹. HIDCLASS 里有所有HID 设备驱动的共用代码(MDD 和PDD).HID设备驱动的注册表在[HKEY_LOCAL_MACHINE\Drivers\HID\LoadClients\Default\Default]下面,已经存在的设备驱动为鼠标[1_2\Mouse] [1_6\KEYPAD],这里面的数字到底是什么含义,我们来看一下下面几个宏定义就知道了:
//该宏定义在\PUBLIC\COMMON\OAK\INC\hidusage.h文件中
#define HID_USAGE_PAGE_GENERIC ((USAGE)0X01)
#define HID_USAGE_GENERIC_MOUSE ((USAGE)0X02)
#define HID_USAGE_GENERIC_JOYSTICK ((USAGE)0X04)
#define HID_USAGE_GENERIC_GAMEPAD ((USAGE)0X05)
#define HID_USAGE_GENERIC_KEYBOARD ((USAGE)0X06)
接下来就是要实现一个HID设备的驱动,这里至少要实现两个函数:HIDDeviceAttach和HIDDeviceNotifications。当HID设备插入时,系统会调用HIDDeviceAttach来加载相关程序,可以在加载的时候创建一个线程来接受键盘按键,并发送键盘事件,使用keybd_event或者SendInput相关函数。当然也可以将驱动实现为普通的流接口设备驱动,实现XXX_Init,XXX_Open,XXX_Read,XXX_Write等相关函数,并添加注册表,那么在应用层中就可以使用CreateFile来实现USB HID设备的读写功能了。例如我们现在使用的USB KEY等加密设备,大多也是作为一个HID设备来加载的。
相关驱动下载: 
文件:HID_Gamepad_driver.rar
大小:4KB
下载:下载
<script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/buttonLite.js#style=-1&uuid=&pophcol=3&lang=zh"></script> <script type=text/javascript charset=utf-8 src="http://static.bshare.cn/b/bshareC0.js"></script>
阅读(1059) | 评论(2) | 转发(0) |
0

上一篇:WinCE的USB Device功能实现(Serial,RNDIS,Mass_Storage)

下一篇:Samsung的ARM处理器iROM启动模式介绍

相关热门文章
  • linux守护进程的几个关键地方...
  • stagefright与opencore对比
  • 嵌入式Linux之我行——u-boot-...
  • 嵌入式Linux之我行——内核、...
  • android的logcat详细用法
  • 如何编写一个C程序实现将字符...
  • C程序能不能在main函数之前调...
  • 看一个程序调用了哪些动态库用...
  • 回复不了你啊,咋,威望值不够...
  • mysql的medium.cnf在哪里?...
给主人留下些什么吧!~~

chinaunix网友2011-05-30 14:36:21

老大,我的PDA是纯PPC,pocket pc 2003,不是手机WM PPC。我的注册表项HKEY_LOCAL_MACHINE\Drivers里面并没有HID,包含LoadClients\Default\Default项的注册表项是一个名为USB的项,我手工建HID不能加载这个驱动,然后在USB的default里面照你的注册表手工加入还是不行。dll文件已经放到windows里面了,该怎样才能加载了。我安装了一个网上下载的USB键盘、鼠标驱动,却是正常使用的,唯独USB手柄不能用,是个仿PS的简单手柄,XP无驱型。

回复 | 举报

chinaunix网友2011-03-08 20:28:19

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com

回复 | 举报
评论热议

这篇关于WinCE下的USB游戏手柄驱动 GamePad Joystick的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/612957

相关文章

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

Linux_kernel驱动开发11

一、改回nfs方式挂载根文件系统         在产品将要上线之前,需要制作不同类型格式的根文件系统         在产品研发阶段,我们还是需要使用nfs的方式挂载根文件系统         优点:可以直接在上位机中修改文件系统内容,延长EMMC的寿命         【1】重启上位机nfs服务         sudo service nfs-kernel-server resta

国产游戏崛起:技术革新与文化自信的双重推动

近年来,国产游戏行业发展迅猛,技术水平和作品质量均得到了显著提升。特别是以《黑神话:悟空》为代表的一系列优秀作品,成功打破了过去中国游戏市场以手游和网游为主的局限,向全球玩家展示了中国在单机游戏领域的实力与潜力。随着中国开发者在画面渲染、物理引擎、AI 技术和服务器架构等方面取得了显著进展,国产游戏正逐步赢得国际市场的认可。然而,面对全球游戏行业的激烈竞争,国产游戏技术依然面临诸多挑战,未来的

火柴游戏java版

代码 /*** 火柴游戏* <p>* <li>有24根火柴</li>* <li>组成 A + B = C 等式</li>* <li>总共有多少种适合方式?</li>* <br>* <h>分析:</h>* <li>除去"+"、"="四根,最多可用火柴根数20根。</li>* <li>全部用两根组合成"1",最大数值为1111。使用枚举法,A和B范围在0~1111,C为A+B。判断</li>** @

国产游戏行业的崛起与挑战:技术创新引领未来

国产游戏行业的崛起与挑战:技术创新引领未来 近年来,国产游戏行业蓬勃发展,技术水平不断提升,许多优秀作品在国际市场上崭露头角。从画面渲染到物理引擎,从AI技术到服务器架构,国产游戏已实现质的飞跃。然而,面对全球游戏市场的激烈竞争,国产游戏技术仍然面临诸多挑战。本文将探讨这些挑战,并展望未来的机遇,深入分析IT技术的创新将如何推动行业发展。 国产游戏技术现状 国产游戏在画面渲染、物理引擎、AI

第四次北漂----挣个独立游戏的素材钱

第四次北漂,在智联招聘上,有个小公司主动和我联系。面试了下,决定入职了,osg/osgearth的。月薪两万一。 大跌眼镜的是,我入职后,第一天的工作内容就是接手他的工作,三天后他就离职了。 我之所以考虑入职,是因为 1,该公司有恒歌科技的freex平台源码,可以学学,对以前不懂的解解惑。 2,挣点素材钱,看看张亮002的视频,他用了6000多,在虚幻商城买的吸血鬼游戏相关的素材,可以玩两年。我

驱动(RK3588S)第七课时:单节点设备树

目录 需求一、设备树的概念1、设备树的后缀名:2、设备树的语法格式3、设备树的属性(重要)4、设备树格式举例 二、设备树所用函数1、如何在内核层种获取设备树节点:2、从设备树上获取 gpio 口的属性3、获取节点上的属性只针对于字符串属性的4、函数读取 np 结点中的 propname 属性的值,并将读取到的 u32 类型的值保存在 out_value 指向的内存中,函数的返回值表示读取到的

驱动安装注册表指令

HKCR: HKEY_CLASSES_ROOT HKCU: HKEY_CURRENT_USER HKLM: HKEY_LOCAL_MACHINE HKU: HEKY_USER HER: 相对根键

UMDF驱动安装

VS2013 + WDF8.1,UMDF驱动选择User Mode Driver,不要选User Mode Driver 2.0,否则Win7安装有问题,如图 另外,在驱动安装时不要忘记WUDFUpdate_<主版本号><次版本号>.dll文件,具体文件名在INF中查找。此文件可在WDF的安装目录中找到。注意:在WDF的安装目录中会有3个WUDFUpdate_xxx.dll文件,x86,x6

Usb Audio Device Descriptor(10) Hid Device

对于 Standard Interface Descriptor, 当 bInterfaceClass=0x03时,即为HID设备。Standard Interface Descriptor如下 struct usb_standard_interface_descriptor{U8 bLength; /*Size of this descriptor in bytes*/U8 bDescrip