基于Windows的USB驱动程序开发

合集下载

基于WINDOWS DDK的USB键盘驱动开发

基于WINDOWS DDK的USB键盘驱动开发








…Leabharlann …一美展. 。 I
基  ̄' W I N DOW S DD K的 USB键 盘 驱 动 开 发
江西赣 州农 业学校 卢晓娟 陈根生
【 摘要】U S B 接 口具有方便快速 等优 点, 已经发展成为一种 比较普遍 的计 算机 与外设 的接口。基于微软w i n d o ws 统D DK,本 文介 绍了一种非标准U S B 键盘  ̄w i n d o w s 设 备 驱 动程序的开发过程与方法 。 【 关键 词】设备驱动 ;驱动开发包 ;非标准键 盘
1 . 引言
w i n m a i n 函数 的控制 下执行 ,驱动 程序不 存在
U S B 总线 的成功 关键 是使用 户感 到 了使 用 这样 的 函数 ,而 只是 一个 由I / 0 管理 组件 根据 U S B 设备 的方便 。即插 即用 ( P n P ) 概念的使用 使 需要 调用 的子例 程 的集合 ,i / 0 管理 组件 根据 某 些硬 件的 安装过 程得 到 了简 化 。U S B 规范 中 不 同的情 况调用 驱动程序 中不同的例程 。构成 指 出,适合迁 移 ̄U S B I . 1 上 的硬 件限定于那 些 内核模 式驱动程序 的主要例程 包括 :初 始化和 / o 系 统服务 调度 例程 ,数据 传输 低 速到 中速 的外设 ,包括键盘 ,鼠标等 。即这 清 除例程 ,i 些 设备 的数据 传输速率低 于1 2 M b / s e c ,并且 能 例程和 资源 回调例程 ,下面 是一个基本 的驱动
通 过单一 的P c 接 口被 系统软件识 别。现在标 准 例程架构 : e x t e r n” C” 的u s b 键盘 设备只 需要 遵循一些h i d 设备 的协 议 N T S T A T U S 就 可 以被 w i n d o w s 操 作系 统 自动 识别无 需设备 制造 商开发驱 动程序 ,但 有些键盘 带有特殊 功 D ri v e r E nt r Y( I N P D RI V E R — O B J EC T

WindowsCE下USB摄像头驱动开发以OV511为例附带全部源代码以及讲解

WindowsCE下USB摄像头驱动开发以OV511为例附带全部源代码以及讲解

这部分讲解如何在Windows 下实现 一样的功能。
Windows 的控制传输
查看MSDN,IssueControlTransfer和 IssueVendorTransfer是用来进行控制传输的,但两个函数 有什么区别呢? 看MSDN,IssueControlTransfer的第一个参数是 hPipe,就是说,在使用IssueControlTransfer之前,必须 用OpenPipe打开管道。 OpenPipe函数需要端点描述作为参数。但是,端点0是 没有这个描述可以用的(MSDN: However, endpoint zero (0) never has a USB_ENDPOINT structure)。 我没测试自己指定描述是否可以,但是, IssueVendorTransfer提供了更为方便的途径。这个函数默 认从端点0进行控制传输。 如果是其他端点的控制传输,是要用 IssueControlTransfer的。
Windows 下 流接口USB驱动程序加载的流程
6.接着CAM_Init函数被调用,参数就是ActiveDevice函数的 参数1,然后依据这个参数,在注册表中找到USB驱动程序的上下 文,并返回,这样对该流接口驱动的操作,就可以找到USB驱动 的上下文,并且交换数据。 以上这些工作完成之后,USB设备的信息被保存,并且USB 驱动程序上下文也被流接口驱动所记载。流接口USB驱动的加载 完成。我们就看见那个输入驱动程序名称的对话框消失了。如果前 面6个步骤中任何一步不成功,将不会使用这个驱动程序,会反复 弹出这个对话框,提示输入驱动程序名称,直到这些过程全部正确 完成。
HKEY_LOCAL_MACHINE\Drivers\Active中的项目。 注意:USB驱动程序不通过注册表API来操作注册表,而是通过 USBD提供的函数。

USB驱动程序的编写采用WDM 驱动程序

USB驱动程序的编写采用WDM 驱动程序

USB驱动程序的编写采用WDM 驱动程序。

WDM 驱动程序是一些例程的集合,它们被动地存在,等待主机系统软件(PnP 管理器、I/O 管理器、电源管理器等)来调用或激活它们。

具体驱动程序不同,其所包含的例程也不同。

一个WDM 驱动程序的基本组成包括以下5个例程:(1)驱动程序入口例程:处理驱动程序的初始化。

(2)即插即用例程:处理PnP 设备的添加、删除和停止。

(3)分发例程:处理用户应用程序发出的各种 I/O 请求。

(4)电源管理例程:处理电源管理请求。

(5)卸载例程:处理驱动程序的卸载。

包含文件:ezusbsys.c, ezusbsys.h,ezusbsys.rc, resource.h, version.h, makefile,sources)在ezusbsys.c文件中,包含了上述五个例程:ezusbsys.h中定义了各种数据结构还有各种IOCTL控制码,用于不同数据的读写。

Ezusbsys.c 中实现了各种驱动例程。

包含了上述五个所说例程外还包含了其他例程,课程从下面的驱动程序入口例程得出一些信息。

驱动程序入口例程:NTSTATUSDriverEntry(IN PDRIVER_OBJECT DriverObject,IN PUNICODE_STRING RegistryPath){NTSTATUS ntStatus = STATUS_SUCCESS;PDEVICE_OBJECT deviceObject = NULL;DriverObject->MajorFunction[IRP_MJ_CREATE] = Ezusb_Create; DriverObject->MajorFunction[IRP_MJ_CLOSE] = Ezusb_Close;//分发例程DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = Ezusb_ProcessIOCTL;//即插即用例程DriverObject->MajorFunction[IRP_MJ_PNP] = Ezusb_DispatchPnp;//电源管理例程DriverObject->MajorFunction[IRP_MJ_POWER] = Ezusb_DispatchPower;//设备添加例程DriverObject->DriverExtension->AddDevice = Ezusb_PnPAddDevice;//卸载例程DriverObject->DriverUnload = Ezusb_Unload;return ntStatus;}在原有框架下,主要实现了的代码段在于ezusbsys.c文件中的如下例程:NTSTATUSEzusb_Read_Write( IN PDEVICE_OBJECT fdo, IN PIRP Irp )在该例程中实现对大数据块的读写控制和实现。

winusb设备的开发方法

winusb设备的开发方法

winusb设备的开发方法
开发WinUSB设备涉及一些复杂的步骤和概念,需要一定的专业
知识和经验。

以下是开发WinUSB设备的一般步骤和方法:
1. 硬件设计,首先需要设计和制造符合WinUSB标准的硬件设备。

这可能涉及选择合适的芯片、接口和电路设计。

2. 驱动程序开发,WinUSB设备需要相应的驱动程序来与Windows操作系统进行通信。

通常使用微软提供的WinUSB驱动框架
来开发驱动程序。

开发驱动程序需要熟悉Windows Driver Kit (WDK) 和 Windows Driver Framework (WDF)。

3. USB描述符配置,在设备固件中配置USB描述符,以确保设
备能够正确地与Windows系统进行通信。

描述符包括设备描述符、
配置描述符、接口描述符等。

4. 测试和调试,在开发过程中需要进行大量的测试和调试工作,确保设备和驱动程序的稳定性和兼容性。

可以使用微软提供的HLK (Windows Hardware Lab Kit) 进行测试。

5. 证书签名,最终的WinUSB驱动程序需要通过微软的数字签名认证,以确保安全性和兼容性。

这需要申请和获取相应的数字证书。

需要注意的是,开发WinUSB设备需要一定的专业知识和经验,包括硬件设计、驱动程序开发、USB协议等方面的知识。

此外,开发过程中可能会遇到各种问题和挑战,需要耐心和细心地解决。

最好的方法是参考微软官方文档和开发者社区的经验,以及与经验丰富的开发者进行交流和讨论。

如何通过 WinUSB 功能访问 USB 设备 (Windows Drivers)

如何通过 WinUSB 功能访问 USB 设备 (Windows Drivers)
如何通过 WinUSB 功能访问 USB 设备
本主题包括如何使用 WinUSB 功能与使用 Winusb.sys 作为函数驱动程序的 USB 设备进行通信的详细演练。 如果使用 Microsoft Visual Studio 2013,则可使用 WinUSB 模板创建你的框架应用。在该情况下,跳过本主题中的 第 1 步到第 3 步,从第 4 步继续操作。该模板打开设备的一个文件句柄,获取后续操作所需的 WinUSB 句柄。该句柄 存储在 device.h 中应用定义的 DEVICE_DATA 结构中。 有关该模板的详细信息,请参阅“编写基于 WinUSB 模板的 Windows 桌面应用”。 注意 WinUSB 功能需要 Windows XP 或更高版本。可在 C/C++ 应用程序中使用这些功能与 USB 设备通信。 Microsoft 未为 WinUSB 提供托管的 API。
以下示例代码获取由 WinUSB 接口句柄指定的设备的速度。
C++
BOOL GetUSBDeviceSpeed(WINUSB_INTERFACE_HANDLE hDeviceHandle, UCHAR* pDeviceSpeed) { if (!pDeviceSpeed || hDeviceHandle==INVALID_HANDLE_VALUE) { return FALSE; } BOOL bResult = TRUE; ULONG length = sizeof(UCHAR); bResult = WinUsb_QueryDeviceInformation(hDeviceHandle, DEVICE_SPEED, &length, pDeviceSpeed); if(!bResult) { printf("Error getting device speed: %d.\n", GetLastError()); goto done; } if(*pDeviceSpeed == LowSpeed) { printf("Device speed: %d (Low speed).\n", *pDeviceSpeed); goto done; } if(*pDeviceSpeed == FullSpeed) { printf("Device speed: %d (Full speed).\n", *pDeviceSpeed); goto done; } if(*pDeviceSpeed == HighSpeed) { printf("Device speed: %d (High speed).\n", *pDeviceSpeed); goto done; } done: return bResult; }

Windows XP环境下USB设备驱动程序的开发

Windows XP环境下USB设备驱动程序的开发

[] 石 . 2阎 电子技 术基 础 ( 字 部分 ) . 京: 华大 数 【 北 清 M]
学 出版社 , 0 . 2 0 0
由于采用 C L P D大规 模可 编程 逻辑 器 件 ,整 机功 耗 小 、 干扰 能 力强 、 抗 系统 稳 定 、 作 可 靠 、 工 升级 方 便 。 另外 , 由于 器件 资 源 尚有 较 大 的扩 展 空 间 , 据 实 根 际需要 , 系统 可 方 便 地 增 加 所 需 功 能 , 通 过 器 件 如
理 。结合 数据 采 集 实例 , 绍 了开发 . 具 D ieSu i 介 Y - r rtdo的功 能 , 借助 该 工具 对 U B驱 动程 序 开发 v 并 S
和 安装过 程进 行 了说 明。


词 : 动程 序 ; M; S 驱 WD U B; D vrtdo i r eSu i
中图分 类号:P 1 T 36
Ab t a t h r h tc u e o W DM n W i d w a d s e i c t n o B a e a ay e ,n h sr c : e a c i t r f T e i n o s XP n p cf a i f US r n l z d a d t e i o o e ai n p i cp e o B i l r e . Ac o d n o a x mp e a o td t - olc in t e f n t n o p r t r i l fUS s c a i d o n i f c r i g t n e a l b u a a c l t , u c i f e o h o
Wid w P具 有运 行可 靠 、 定 且速 度快 的特 n o sX 稳

基于WDM的USB设备功能驱动程序的设计与实现

基于WDM的USB设备功能驱动程序的设计与实现蔡旸【摘要】With the popularity of USB technology, more and more manufacturers design and develop their own USB devices. This paper first gives an idea of the driver, the USB communication protocol introduced, then combined with the Windows Driver Model WDM, designed USB device function driver, gives specific examples, driven by the realization of the main functions-use USB bus transfer and data collection. <br> This paper Select introducing WINDDK and VC++in DriverStudio tools to develop USB driver, which will be designed to the USB driver into USB entrance, USB initialization and USB device input/output (I/O) and other functional modules, with a clear structure, easy to transplant etc., has a good application value in the design of the USB driver. So that developers can develop simple in user mode drivers, rapid development is conducive to future external device drivers.%随着USB技术的普及,越来越多的厂商设计开发自己的USB设备。

基于WINDOWS DDK的USB键盘驱动开发

基于WINDOWS DDK的USB键盘驱动开发
卢晓娟;陈根生
【期刊名称】《电子世界》
【年(卷),期】2013(000)010
【摘要】USB接口具有方便快速等优点,已经发展成为一种比较普遍的计算机与外设的接口。

基于微软windows系统DDK,本文介绍了一种非标准USB键盘的windows设备驱动程序的开发过程与方法。

【总页数】2页(P83-84)
【作者】卢晓娟;陈根生
【作者单位】江西赣州农业学校;江西赣州农业学校
【正文语种】中文
【相关文献】
1.基于VxWorks的USB键盘驱动开发研究 [J], 白丽;任恩恩;朱娜敏
2.基于DDK的USB接口WDM驱动开发 [J], 邓玖根;张正荣;胡松;唐小萍
3.Windows CE下USB设备流驱动开发与设计 [J], 慕晓蕾
4.基于DDK的PCI总线数据交互驱动开发 [J], 段晗晗;
5.用DDK开发Windows USB驱动程序 [J], 杨成
因版权原因,仅展示原文概要,查看原文内容请购买。

Windows下的USB驱动程序 简单框架


设备非自然弹出 USB设备对应操作
IRP_MN_SURPRISE_REMOVAL
IRP_MJ_PNP
来自: 即插即用管理器
注册标准的WDM回调(Callback)函数
USB设备读写 USB设备热插拔 USB设备初始化
பைடு நூலகம்
Windows下的USB驱动程序 简单框架
(背景知识)
USB功能驱动(FDO)
IRP(URB为参数)
a 尽快结束IRP并逐个取消掉 b 标记设备扩展当前状态为“停止”
设备关闭前 USB驱动程序对应操作
IRP_MN_STOP_DEVICE
a 强迫结束并取消 所有未完成的读写IRP b 标记设备状态为被拔掉
设备正常弹出前 USB驱动程序对应操作
IRP_MN_EJECT
a 强迫结束并取消 所有未完成的读写IRP b 标记设备状态为被拔掉
等待完成IRP
同步
(不做处理)
异步(STATUS_PENDING)
KeWaitForSingleObject
设备堆栈
USB物理总线驱动(PDO) 解释 转化 请求
USB Host 或 USB Hub驱动
PDO完成了大部分工作, 封装了USB协议细节
并为FDO提供了标准的接口
端点描述符
描述处理事务(Transaction)的端点 接口描述符
各种描述符
描述设备提供的功能接口
配置描述符
自下而上 (除端点描述符 可以为0个之外)
设置 IRP_MJ_READ / IRP_MJ_WRITE 派遣函数 调用 API 进行 ReadFile / WriteFile
驱动程序 应用程序
80%走Bulk管道

打印机的USB接口和驱动设计(基于windows的驱动)

护他索赔的权利,成功地阻止业主拒绝索赔,最终解决索赔问题。

五、确认项目经理的地位和作用,正确界定项目经理的责、权、利企业从国外引进的项目管理的理论和方法很多,但是管理体系仍停留在文件资料阶段,职能部门和项目管理层还处于 磨合期 ,工作效率较低下。

要解决上述问题,最根本的途径是确认项目经理的地位和作用,重点是正确界定项目经理的责权利。

(一)、确认项目经理的地位和作用:项目管理的组织特征是严格意义的个人负责制,个人负责制的核心人物必然是项目经理,所以项目经理是决定一个项目成败的关键人物。

项目经理作为企业法人委派在项目管理上的代表,按合同履约是他一切行动的最高准则,拒绝承担合同以外的其他各方强加的干预、指令、责任是他的基本权力。

因此在项目实施过程中,确定项目经理的地位是该项目能否成功完成任务并符合技术性能规格,以及项目成果能使本企业组织成员、分包单位主要成员、项目班子中的主要成员、项目业主或委托人人感觉高度满意的关键因素之一。

(二)、项目经理的责、权、利1、项目经理的职责有:确保项目目标实现,保证业主满意;制定项目阶段性目标和项目总体控制计划;组织精干的项目管理班子;及时做出准确的决策;履行合同义务,监督合同执行,处理合同变更。

2、项目经理的权力有:生产指挥权、人事权、财权、技术决策权和设备、物资、材料的采购与控制权。

3、要明确项目经理的利益,改隐性收入为显性收入,提高项目经理的工作积极性。

打印机的USB 接口和驱动设计王国意1,2(1、华中科技大学湖北武汉430074 2、实达电脑设备有限公司福建福州350002)摘 要 打印机打印速度的提高要求一种快速的数据传输接口,USB 接口是理想的选择。

本文是在现有打印机的基础上,采用N ational Semiconductor 公司的USBN9604芯片,实现USB 接口硬件和固件设计,以及主机端的USB 驱动设计。

关键词 USB 打印机接口 USBN9604 驱动程序1 引言随着对打印机打印速度的要求的不断提高,以及位图格式的大数据量打印的应用越来越普遍,传统的本地打印机接口(如I EEE1284(SPP 、ECP)打印机并口和RS-232SC 串口等)的低传输速率已经成为打印机打印速度进一步提高的制约因素,而且在抗干扰能力和纠错能力方面也不尽人意。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
何 丽 华 , 梁杰 中 , 肖楚 海
摘 要 :为 了配 合 US B驱 动 程 序 的 开发 ,首 先 详 细 阐 述 了微 软 所提 倡 的 WDM 驱 动 模 型 。 并 以 L C 3 8为例i 具 包 ,开发 US r rtdo工 v B设 备 驱 动 程 序 的 过程 和 US 驱 动 程 序 的调 用过 程 。利 用 Dr eWok 发 驱 动程 序 B i r rs开 v 快 捷 方便 ,必 将 有 着 广 阔 的应 用 前 景 。 关 键 词 :WDM 驱 动 模 型 ;D DK;Dr eSu i;US 驱 动 i rtdo v B
程 序 负责 的 工 作有 :枚举 总 线 上 的 设 备 ;向操 作 系 统 报 告 总 线上 的动 态事 件 ; 响应 即插 即用 和 电源 管理 的 I /O 请 求 ; 管理 总线上 的设备 。 总线驱动程序创建一个物理设备对象 来 代 表 它 发现 的 设备 。 发 现 总 线 上 的 所 有 设 备 和 检 测 设 备添 即 加 或 者 删 除 ,创 建 物 理 设 备 对 象 P DO; 功能驱动程序 处理 设备 的 I / O请求包 (R ) I P ,负责创 建 功 能设 备对象 F DO; 其 他 层 的 驱 动 程 序 是 一 些 过 滤 程 序 ( ie Dr e) 对 应 的 设 备 对 象 是 过 滤 器 设 备 。 安 装硬 件 Fl r i r, t v
驱 动 程 序 完 成 不 同 的操 作 ,不 同层 之 间 可 以 互 相 调 用 , 在
设备 时操作系 统的即插 即用管理器 按照设备驱 动程序 的要 求构造设备的对象 , 首先是最 底层 的总线驱动程序检测 到实
际 的物 理 设 备 ,创 建 物 理 设 备对 象 P DO,然 后 , 即插 即用 管理器查询注册表 , 按注册表信 息依次 加载过滤驱动程序和

r 鲎 I
r— ——] r — —
, . . . . . . . . . . . .




L O I i 总 I j P} 厂 — 线驱动程序 r —
图 1 WD 驱 动程 序模 型 M
;可 以连接 多个设备 ;通信速率 快;可靠性 高等 。鉴 于
U B 的这 些 特 点 ,它 已经 成 为 P 的 首选 接 口 。 S C
中图分类号:T 3 9 P 9
文献标志码 :B
0 引言
Wid w 已经 成 为 P 的主 流操 作 系 统 , 要 想 实 现 在 no s C Wid w 操 作 系 统 下 对 硬 件 设 备 的 操 作 ,必 须通 过 在 W D no s M 模 型 下 设 计 驱 动程 序 这 个软 接 口 。US 是 Unvra Sr l B, iesl ei a
Mi oo ue p lain o.6 N .,00 c cmp tr pi t s 12 , o 2 1 r A c o V 2
文章编号 :10 -5 X(0 020 5 -3 0 777 2 1)—0 30
开发 应用
微 型 电脑 应 甩
21 第 2 00年 6卷第 2期
基于 Wi o s U B驱动程序开发 n w 的 S d
个 P DO 对 应 一 个 真 实 的 硬 件 , 一 个 硬 件 只 允 许 有 一 个
P 但 是 却 可 以有 多 个 F DO DO。在 驱动 程 序 中直 接 操 作 的 不 是硬 件设 备 ,而 是 相 应 的 P DO 和 F [。 在用 户 态 和 内 核 DO 1 态通 信 方 面 ,系 统 为每 一 个 用 户 请 求 打 包 形 成 一 个 IP 结 R 构 ,将 其 发送 至 驱 动 程 序 ,并 通 过 识 别 I P中 的 P R DO 来 区 分 时发 送 给 哪 一 个 设 备 的 。
Mo ue ,即 W i3 动 模 型 。 d l) n 2驱 WDM 是 Mirsf公 司 coot
力推 的新型驱动模型 ,旨在通过 一种灵活 的方式简化驱动
程序 的开发 , 在实现对新硬件支持的基础上 , 减少并 降低必 须开发的驱动程序的数量和复杂性 。 WDM 有两种运行模式 ,即内核模式和用户模式 。在 内
驱 动 模 型 如 图 l 示 :中 总 线 驱 动 程 序 位 于 最底 层 ,总 所
1 WDM 驱 动程序 模型 简介
US 8驱 动 的 设 计 基 于 WDM ( n o s r e Wid w i r D v
线驱动程 序为实际的 I o 总线服 务,比如 US / B。微软 已经 为 Wid ws操 作 系 统 提 供 了总 线 驱 动 程 序 。一 个 总 线 驱 动 no
一 —

Lo In 二 _- J 1 } F , I ’
J — — 一 — l
i 厂
=iv . I I
—_ L一
Bs u( 串行总线) 通用 的简称, 为个人 电脑 与其外 围设备 之间的
连接提供了一种标准化 、单一化的接 口『。它的主要优 点体 1 I 现在: 作简单,即插即用 ;成本低廉 ,携带方便 ;标准 统 操
WD 中 引 入 了功 能 设 备 对 象 ( DO Fl rD vc bet M F ie e i O jc) t e 和 物 理 设 备对 象 ( DOPoet v eO jc)来 描 述 硬 件 。 P rjc Dei bet c


功能驱动程序 ,可 生成相应 的功 能设备对 象 F O,并建立 D 设备对象和驱动程序的对应关系 , 这样一个完整 的设备驱动 程 序 就 建 立 了I 。
核 模 式 下 ,程 序 的 运行 不 受 操 作 系 统 的任 何 限制 ,对 I 有 / O
完全 的访 问权 ; 在用户模式 下,操作系统提供某种机制 ,可 以限 制 程 序 的 各种 I 操 作 。 / O
WD 驱 动 程 序 采 用 了分 层 驱 动 的 方 式 ,不 同层 之 间 的 M
相关文档
最新文档