gosoft
驱动牛犊
驱动牛犊
  • 注册日期2003-03-02
  • 最后登录2007-07-30
  • 粉丝1
  • 关注0
  • 积分230分
  • 威望25点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
阅读:1388回复:7

一个初学者的若干问题(一),请大家帮我解答。谢谢

楼主#
更多 发布于:2003-11-03 14:15
本人初学驱动方面的东东,最近看了好多关于驱动方面的图书和实例,有很多高不清楚的地方。

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;
两个例程,但是在设备管理器显示的是 一个 象网卡一样的图标,请问这又是为什么? 和安装有关吗?? 是不是这两类的驱动 的 安装方法不同?


arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2003-11-03 21:26
1、驱动可以访问硬件,但是不一定非要访问。你说的关联指什么?
2、看ddk关于IoCreateDevice的说明。
3、不是。这个devicename对win32不可见。
4、显示与否和是否驱动硬件没有一定的关系。

建议看看本版置顶贴书籍建议。
KMK
KMK
驱动大牛
驱动大牛
  • 注册日期2001-09-12
  • 最后登录2017-10-06
  • 粉丝2
  • 关注0
  • 积分42分
  • 威望404点
  • 贡献值2点
  • 好评度58点
  • 原创分1分
  • 专家分1分
  • 社区居民
板凳#
发布于:2003-11-04 01:34
它不是DLL,一般的驱动都
gosoft
驱动牛犊
驱动牛犊
  • 注册日期2003-03-02
  • 最后登录2007-07-30
  • 粉丝1
  • 关注0
  • 积分230分
  • 威望25点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-11-04 08:47
arthurtu:

1.我所说的关联是指 是否是硬件设备的驱动。比如:网卡的驱动程序对应没个网卡,而某些 监控程序 如:注册表监控程序 “REGMON” 的驱动就不是某个硬件设备的驱动。

2.DDK 的 IoCreateDevice 文档说明 设备类型参数 可以候选的值都是与硬件有关的(还是我看错了?)?

3。到底如何理解设备名称呢? 我曾经在网上找了一个NTHANDLE 驱动例程, 它就是通过 设备名 访问驱动模块的,这又是为什么?
gosoft
驱动牛犊
驱动牛犊
  • 注册日期2003-03-02
  • 最后登录2007-07-30
  • 粉丝1
  • 关注0
  • 积分230分
  • 威望25点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-11-04 08:53
KMK :

它还是一个PE文件,标记为 SYS 模块 入口点是 DriverEntry ,谢谢! 这一点明白了。

其它的还是不明白,特别是 那个 设备名称 到底如何 理解 ,它有什么作用? 你能帮我解答吗?
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2003-11-04 14:36
1、这说起来就话多了。通过registry和配置管理器等等,来确定一个sys是否是某个设备的驱动。sys本身和驱动设备否没有多大关系。

2、FILE_DEVICE_XXX values in the range 0
gosoft
驱动牛犊
驱动牛犊
  • 注册日期2003-03-02
  • 最后登录2007-07-30
  • 粉丝1
  • 关注0
  • 积分230分
  • 威望25点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-11-04 16:41
[quote]1、这说起来就话多了。通过registry和配置管理器等等,来确定一个sys是否是某个设备的驱动。sys本身和驱动设备否没有多大关系。

2、FILE_DEVICE_XXX values in the range 0
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2003-11-04 20:04
还是看《program wdm》吧,能更清楚。我怕害人 :D
游客

返回顶部