阅读:1427回复:2
有事向问,谢谢帮忙!!
各位高手帮帮忙,来解决我的疑惑!
如果给你一个硬件设备,希望通过*.sys文件来驱动它,在编写*.sys文件的时候, 1、你需要知道硬件的一些什么信息(如I/O端口、存储器地址、中断、DMA线等)还是不需要知道? 2、驱动文件(如*.sys)一般编写有一定的格式:AddDevice、Create、Close、Pnp、Power、Read、Write、DeviceControl、SystemControl等。那是不是所有的文件都有以上的几步,如果不是,那哪些是设备驱动必须要的? 3、一个Win32应用程序怎样与*.sys交互才能使得硬件设备能够进行一定的操作?是不是通过CreateFile(打开设备)、CloseHandle(在关闭设备时,取消挂起的I/O请求)、ReadFile(从设备获得数据)、WriteFile(向设备发送数据)、DeviceControl(对用户模式或内核模式客户程序可用的控制操作)等API函数来调用,怎样调用?比如说我想向设备发送一个命令做甲事而不是做乙事,显然是向设备进行WriteFile,那我请问设备怎样区分是甲事还是乙事呢? 4、在编写驱动文件时,我在网上看到很多开发驱动的软件,像WinDriver 、DriverStdio等工具软件,我现在想学WDM编程,能不能不用下载这些软件而只用VC6.0和DDK两种语言工具来编写,如果可以,请告诉我怎样做? 鉴于上面问题很多,可能要花费你很多时间,在此我表示对你衷心感谢,谢谢你给予我支持,以使我能够继续学习,再次表示谢谢!如果来信,请寄E_MAIL:Dawner@yeah.net! |
|
沙发#
发布于:2002-02-27 20:50
1.驱动程序肯定需要它知道操作什么硬件,但具体的物理地址如果是即插即用,不需要知道很清楚,系统会提供。
2.驱动的基本框架中基本的几项是必须的,但根据支持的操作的不同,可能非常简单,也可能非常麻烦。 3.驱动程序设计好了以后会提供一个符号联接名,win32是利用他访问硬件的,writefile做的事很单一,一般复杂控制使用DeviceIOControl 4.利用VC++,DDK就可以编写驱动了,不过有些工作会麻烦些,建议利用提供的例子。 |
|
|
板凳#
发布于:2002-02-27 23:07
1. 你必须清楚你的设备有哪些资源(IO,MEM,INT,DMA)可供使用。可以在你的驱动程序中查询所获得的资源
2。找一本入门的书好好读一下(站上有很多这方面的资料)。你的几个问题就能找到答案了。 3。看一下别人给的例子。 |
|
|