阅读:1388回复:7
一个初学者的若干问题(一),请大家帮我解答。谢谢
本人初学驱动方面的东东,最近看了好多关于驱动方面的图书和实例,有很多高不清楚的地方。
1。根据我理解,驱动只是运行在内核 且 使用内核模块提供的 接口(姑且这样称呼它)的 符合一定标准的 DLL 模块,那么如何区分一个内核驱动是否和硬件关联呢? 如 REGMON 的驱动不需要和硬件关联。 2。在设备管理器中显示了各种各样的驱动,当我们的在DriverEntry中使用 IoCreateDevice 创建设备的时候 要制定驱动设备的类型,在 DDK 中 IoCreateDevice 第四个参数的 可选值中 都和硬件相关,如果我开发一个例似 REGMON 的驱动 那么 就没有和硬件相关联, 此时 这个参数应该怎么填写呢? 3。IoCreateDevice 参数中要指明 设备的名称 设备名称 是不是 提供给 用户模式的程序 通过 CreateFile ,DeviceIoControl等一些函数调用驱动的 一种手段? \\\\.\\DeviceName 和 \\\\Device\\DeviceName 设备名 有什么不同吗 ? 设备名的 命名规范又是怎么样的呢? 4。如果把设备驱动分为两类: 设备驱动(与硬件相关) 和 内核模块(与设备无关, 只是完成某种在用户模式中无法完成的功能,共用户模式的应用程序调用); 那么在设备管理器中不掩藏显示的是否都是 设备驱动; 而掩藏的部分都是 内核模块? 对于这两类 驱动程序 安装有什么不同吗? 我曾学着做了一个WDM驱动 没有和任何硬件关联, 只是 实现了: DriverObject->MajorFunction[IRP_MJ_CREATE] = HelloWDMCreate; DriverObject->MajorFunction[IRP_MJ_CLOSE] = HelloWDMClose; 两个例程,但是在设备管理器显示的是 一个 象网卡一样的图标,请问这又是为什么? 和安装有关吗?? 是不是这两类的驱动 的 安装方法不同? |
|
沙发#
发布于:2003-11-03 21:26
1、驱动可以访问硬件,但是不一定非要访问。你说的关联指什么?
2、看ddk关于IoCreateDevice的说明。 3、不是。这个devicename对win32不可见。 4、显示与否和是否驱动硬件没有一定的关系。 建议看看本版置顶贴书籍建议。 |
|
板凳#
发布于:2003-11-04 01:34
它不是DLL,一般的驱动都
|
|
地板#
发布于:2003-11-04 08:47
arthurtu:
1.我所说的关联是指 是否是硬件设备的驱动。比如:网卡的驱动程序对应没个网卡,而某些 监控程序 如:注册表监控程序 “REGMON” 的驱动就不是某个硬件设备的驱动。 2.DDK 的 IoCreateDevice 文档说明 设备类型参数 可以候选的值都是与硬件有关的(还是我看错了?)? 3。到底如何理解设备名称呢? 我曾经在网上找了一个NTHANDLE 驱动例程, 它就是通过 设备名 访问驱动模块的,这又是为什么? |
|
地下室#
发布于:2003-11-04 08:53
KMK :
它还是一个PE文件,标记为 SYS 模块 入口点是 DriverEntry ,谢谢! 这一点明白了。 其它的还是不明白,特别是 那个 设备名称 到底如何 理解 ,它有什么作用? 你能帮我解答吗? |
|
5楼#
发布于:2003-11-04 14:36
1、这说起来就话多了。通过registry和配置管理器等等,来确定一个sys是否是某个设备的驱动。sys本身和驱动设备否没有多大关系。
2、FILE_DEVICE_XXX values in the range 0 |
|
6楼#
发布于:2003-11-04 16:41
[quote]1、这说起来就话多了。通过registry和配置管理器等等,来确定一个sys是否是某个设备的驱动。sys本身和驱动设备否没有多大关系。
2、FILE_DEVICE_XXX values in the range 0 |
|
7楼#
发布于:2003-11-04 20:04
还是看《program wdm》吧,能更清楚。我怕害人 :D
|
|