laser36
驱动牛犊
驱动牛犊
  • 注册日期2001-09-11
  • 最后登录2005-01-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2741回复:7

如何判断出列出的设备dosdevicename 和devicename是什么设备?

楼主#
更多 发布于:2002-03-25 17:35
列出的设备dosdevicename 和devicename后,如何判断出它们是什么设备?

比如,计算机上有两块网卡,列出它的dosdevicename 和devicename 后并判断出它是网卡。

要求给出程序。

我不知道该问题到底值几分,如不满意可提出加分。


[编辑 -  3/29/02 作者: laser36]
Iamme
驱动小牛
驱动小牛
  • 注册日期2001-03-23
  • 最后登录2005-10-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-03-26 11:30
没做过
哪来的源码
试试获取设备对象
再查询对象的DeviceType
Go,go ahead
laser36
驱动牛犊
驱动牛犊
  • 注册日期2001-09-11
  • 最后登录2005-01-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-03-26 15:54
没做过
哪来的源码
试试获取设备对象
再查询对象的DeviceType


Iamme

我在2000 DDK 中找到设备对象的DeviceType
FILE_DEVICE_BEEP
FILE_DEVICE_CD_ROM
FILE_DEVICE_CONTROLLER
FILE_DEVICE_DISK
FILE_DEVICE_INPORT_PORT
FILE_DEVICE_KEYBOARD
FILE_DEVICE_MIDI_IN
FILE_DEVICE_MIDI_OUT
FILE_DEVICE_MOUSE
FILE_DEVICE_NULL
FILE_DEVICE_PARALLEL_PORT
FILE_DEVICE_PRINTER
FILE_DEVICE_SCANNER
FILE_DEVICE_SERIAL_MOUSE_PORT
FILE_DEVICE_SERIAL_PORT
FILE_DEVICE_SCREEN
FILE_DEVICE_SOUND
FILE_DEVICE_TAPE
FILE_DEVICE_UNKNOWN
FILE_DEVICE_VIDEO
FILE_DEVICE_VIRTUAL_DISK
FILE_DEVICE_WAVE_IN
FILE_DEVICE_WAVE_OUT
FILE_DEVICE_8042_PORT
FILE_DEVICE_MASS_STORAGE
FILE_DEVICE_KS
FILE_DEVICE_CHANGER
FILE_DEVICE_DVD
FILE_DEVICE_BATTERY
可是却不能找到它们的详细说明,无法判断是什么设备,当然多数可从字面猜出,可是那个代表网卡我依然不知道,能否注释一下?

[编辑 -  3/26/02 作者: laser36]
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2002-03-26 16:40
用户被禁言,该主题自动屏蔽!
laser36
驱动牛犊
驱动牛犊
  • 注册日期2001-09-11
  • 最后登录2005-01-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-03-26 17:44
Tom.Cat,你好:

你的回答给了我些启发,我打算写个过滤驱动程序,想加在WIN2000中的每个网卡设备上,当然前提是不知网卡的名字、数量,按你的提示,是在程序中搜寻注册表,可找出全部网卡,是吗?

另外,DriverEntry( IN PDRIVER_OBJECT pDriverObject,
                   IN PUNICODE_STRING pRegistryPath)
      AddDevice( IN PDRIVER_OBJECT pDriverObject,
                 IN PDRIVER_OBJECT pdo)
的参数也是注册表填入的,是吗?并请指点是那个项目指明的,好吗?

鄙人刚学驱动,问题可能够菜的,请多指教。

Tom.Cat,我很乐意给分,不过我发现每个贴子只能给一次分,所以我想在最后给分,Iamme 的回帖,我也打算给他分。
                    





[编辑 -  3/26/02 作者: laser36]
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-03-26 20:36
    DriverEntry例程中的参数并不是注册表填入的,注册表只是一个数据库,负责调用这个例程并传以正确参数者是Win2000中一个非常重要的组件I/O Manager,它将驱动程序在注册表中的注册路径传入 IN pRegistryPath。
    
    如果你需要写网卡的过滤驱,你可能需要NDIS驱动的知识,注册表中确实记载了系统中的网卡信息。并且一般的写一个Filter驱动的步骤如下:
1.定义一个    OBJECT_ATTRIBUTES objatr;
2.初始化设备属性结构:    InitializeObjectAttributes()
3.ZwCreate(...)根据设备属性中填写的信息,打开到目标网卡驱动程序的句柄连接
4.ObReferenceObjectByHandle(...)得到设备句柄的相应指针
5.IoGetRelatedObject()得到可能已经挂接到目标网卡上的上层过滤驱动
6.IoCreateDevice()建立自己的设备对象准备挂接到目标网卡驱上。
7.IoAttacktoDeviceStack()将自己建立的设备对象挂接到目标设备栈的顶端。
8.ObDereferenceObject、ZwClose减少对特定对象的引象计数。

    这些例程的具体用法可以参阅DDK 文档,也可以参阅本站提供的有关Filter Driver源码。另外我前几天提交的Filter File System Driver源码中有这些例程的详细用法。

Best regards !
Tom_lyd
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-03-26 21:18
用户被禁言,该主题自动屏蔽!
Tom.Cat
禁止发言
禁止发言
  • 注册日期2001-10-10
  • 最后登录2019-07-29
  • 粉丝1
  • 关注0
  • 积分-53792分
  • 威望197411点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2002-03-27 20:38
用户被禁言,该主题自动屏蔽!
游客

返回顶部