现在位置: 首页 > 驱动开发
2016-08-26 21:01 工业·编程 ⁄ 共 6577字 暂无评论
大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力。 一、在用户空间,使用ioctl系统调用来控制设备,原型如下: int ioctl(int fd,unsigned long cmd,...); /* fd:文件描述符 cmd:控制命令 ...:可选参数:插入*argp,具体内容依赖于cmd */ 复制代码 用户程序所作的只是通过命令码告诉驱动程序它想做什么,至于怎么解释这些命令和怎么实现这些命令,这都是驱动程序要做的事情。...
阅读全文
2015-10-12 05:52 工业·编程 ⁄ 共 2977字 暂无评论
1.最先开始使用的是VXD(早废弃了) 2.自Windows 2000开始,开发驱动程序必以WDM为基础的,意为Windows Driver Model,是一个标准的驱动模型,意思是说你可以在这个模型上有所改动,WDM是Vista以前平台的驱动模型。(vista支持大部分的WDM驱动) 3.WDF是Vista及其以后OS的驱动模型,意为Windows Driver Foudation,此模型比WDM更先进、合理(微软是这样说的),将WDM中关于电源、PnP等一些复杂的细节由微软实现,所以在此模型...
阅读全文
    驱动程序员因为和底层设备打交道的地方比较多,所以很多人认为开发驱动程序是一门非常高级的活儿。但是很多已经做驱动开发的程序员却不这么认为,在他们眼里,开发驱动程序只是拿着芯片公司给出的demo code,修修改改,本身没什么太大的难度,也没有技术含量可言。事实上真的是这样吗?下面就谈一下个人的一些意见,仅供大家参考。     (01)驱动程序员需要较好的C语言功底和汇编功底,因为...
阅读全文
2014-05-29 05:40 工业·编程 ⁄ 共 3731字 暂无评论
1. 栈结构 设备栈(Device Stack)结构与内存中的栈类似,但是 device stack 中的 entry 由 device object 中的 AttachedDevice 值的连接。 如下图所示: 并且由每个 device 的 DeviceExtension.AttachedTo 值指向下一层的 device。从而形成双向的链结构。 2. 栈顶 由 IoGetAttachedDevice() 函数来得到当前栈顶 device: PDEVICE_OBJECT IoGetAttachedDevice( IN PDEVICE_OBJECT DeviceObject ) { // // 直...
阅读全文