Chinaunix首页 | 论坛 | 博客
  • 博客访问: 305286
  • 博文数量: 79
  • 博客积分: 773
  • 博客等级: 军士长
  • 技术积分: 789
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-24 23:52
个人简介

victory for prepared

文章分类

全部博文(79)

文章存档

2024年(1)

2023年(1)

2022年(2)

2021年(1)

2018年(8)

2017年(3)

2016年(20)

2015年(12)

2013年(5)

2012年(25)

2011年(1)

我的朋友

分类: LINUX

2012-03-26 16:42:05

其实发现自己为什么不知道自己该去干什么呢?原因在于理论知识不够,大方向就看不清,更别谈细节。今天看了下操作系统原理,和设备驱动程序的一些知识。才知道,我做的程序是驱动程序中的最高层,叫用户程序,就是通过编写用户级的应用程序实现对设备的访问和操作。
在这之中,需要用到三个函数,CreateFile,DeviceIoCtrol,CloseHandle。
貌似很简单的事情,我却得不到我要control的结果,总结了原因,主要是对操作系统如何传递和管理信息的方式不了解,出现了找不到门的境地。其中最重要的是DeviceIoCtrol这个函数,函数的参数很多。我一个一个都找到相应的一套参数(记住喽,参数是配套使用的),却发现返回错误5,意为access denied。何如?再看驱动程序里讲到,系统分user层和kenerl层。而我所写的c程序是属于user层的,所以其中分配的内存,变量,指针什么的都是user层的。但是我要从设备获取信息,或向设备发送信息,缓存必须是kernel层的。这样就需要一个转换的函数,来将我需要发给设备的操作码放入kernel的缓存,再由系统将其转交给设备的驱动程序。但是天啊,难道就这么说说而已么?为什么书中没有给出一个实实在在的例子呢?虽然知道了自己可能出错的地方,也在去努力改正的路上,但是如何用程序来讲这些实现呢?书山有路勤为径,学海无涯苦做舟!
阅读(750) | 评论(0) | 转发(0) |
0

上一篇:今天是个苦苦的一天

下一篇:关于对齐

给主人留下些什么吧!~~