omr
omr
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2003-05-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2169回复:10

WDM 中如何对一个不存在的设备产生 AddDevice 调用?

楼主#
更多 发布于:2002-10-08 10:27
WDM 中如何对一个不存在的设备产生 AddDevice 调用?

是这样,我最近要做一个针对 SmartCard 的虚拟驱动,就是根据 DDK 的要求
做一个 WDM 程序。该程序以软件形式模拟一个物理 SmartCardReader 的工作,
当然,同时也模拟一部分卡的工作。
根据 DDK 的要求,我应该在 AddDevice 例程中通过如下方法注册该设备
        status = IoRegisterDeviceInterface(
            PhysicalDeviceObject,
            &SmartCardReaderGuid,
            NULL,
            &deviceExtension->PnPDeviceName
            );
这里面,最重要的是 PhysicalDeviceObject.

我的基础是:以前没写过 WDM 的驱动,但是写过 Linux 驱动和 VxD 驱动。
显然,WDM 要复杂不少。
我想问的是,对于一个虚拟设备,如何让系统产生一个 AddDevice 调用?
相关的 inf 文件当中的 Models 节的 Hardware-ID 到底填什么?
另外,如果产生了 AddDevice 调用,这个 AddDevice 当中的
PhysicalDeviceObject 到底是对应什么物理设备?

非常着急,感谢!!!

最新喜欢:

dregsdregs
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-10-08 11:03
虚拟设备好像不能调用adddevice把,不太清楚
你可以在driverentry中做adddevice中的所有事情呀 :D
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
omr
omr
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2003-05-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-10-08 11:22
我也想在 DriverEntry 当中做,
但是这个IoRegisterDeviceInterface
是不能少的,这时候我在它的
PhysicalDeviceObject
参数填什么啊?
caosuricheng
驱动中牛
驱动中牛
  • 注册日期2002-04-16
  • 最后登录2004-09-04
  • 粉丝0
  • 关注0
  • 积分-10分
  • 威望-1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-10-08 11:38
AddDevice操作是系靳
我是草肃日成 有人认识我吗?
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-10-08 12:07
我也想在 DriverEntry 当中做,
但是这个IoRegisterDeviceInterface
是不能少的,这时候我在它的
PhysicalDeviceObject
参数填什么啊?
 


使用Iocreatesymbollink吧,呵呵

或者楼上说的也行 :D
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
omr
omr
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2003-05-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-10-08 14:55
[quote]AddDevice操作是系靳
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-10-08 23:25
由于BUS ENUMERATOR无法知道你的DEVICE的存在, 你需要自己在DRIVERENTRY中REPORT DEVICE的存在. 然后等待PNP MANAGER的CALL.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-10-09 08:37
[quote]AddDevice操作是系靳
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
omr
omr
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2003-05-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-10-09 08:45
由于BUS ENUMERATOR无法知道你的DEVICE的存在, 你需要自己在DRIVERENTRY中REPORT DEVICE的存在. 然后等待PNP MANAGER的CALL.

非常感谢您的回答!
但是我不明白“在DRIVERENTRY中REPORT DEVICE的存在”
什么意思,可否进一步指教?

正在看您的网页,的确都是好东西。
 :)
omr
omr
驱动牛犊
驱动牛犊
  • 注册日期2002-09-28
  • 最后登录2003-05-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-10-09 08:50
[quote][quote]AddDevice操作是系靳
dregs
驱动小牛
驱动小牛
  • 注册日期2004-02-19
  • 最后登录2006-05-10
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望5点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-04-09 14:51
这是wdm1的例子
[WDM.Book]
%Wdm1%=Wdm1.Install, *wdmBook\Wdm1

但是还有这样的一个例子
[OpenSystemsResources]
%DeviceDesc% = OsrNothingDriverInstall, Root\OsrNothing
请教各位高人:第二种是把驱动挂在了root总线下,那么第一种是什么呢?
两种方式有什么本质上的区别??
还是我
游客

返回顶部