阅读:2169回复:10
WDM 中如何对一个不存在的设备产生 AddDevice 调用?
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 到底是对应什么物理设备? 非常着急,感谢!!! |
|
最新喜欢:dregs |
沙发#
发布于:2002-10-08 11:03
虚拟设备好像不能调用adddevice把,不太清楚
你可以在driverentry中做adddevice中的所有事情呀 :D |
|
|
板凳#
发布于:2002-10-08 11:22
我也想在 DriverEntry 当中做,
但是这个IoRegisterDeviceInterface 是不能少的,这时候我在它的 PhysicalDeviceObject 参数填什么啊? |
|
地板#
发布于:2002-10-08 11:38
AddDevice操作是系靳
|
|
|
地下室#
发布于:2002-10-08 12:07
我也想在 DriverEntry 当中做, 使用Iocreatesymbollink吧,呵呵 或者楼上说的也行 :D |
|
|
5楼#
发布于:2002-10-08 14:55
[quote]AddDevice操作是系靳
|
|
6楼#
发布于:2002-10-08 23:25
由于BUS ENUMERATOR无法知道你的DEVICE的存在, 你需要自己在DRIVERENTRY中REPORT DEVICE的存在. 然后等待PNP MANAGER的CALL.
|
|
|
7楼#
发布于:2002-10-09 08:37
[quote]AddDevice操作是系靳
|
|
|
8楼#
发布于:2002-10-09 08:45
由于BUS ENUMERATOR无法知道你的DEVICE的存在, 你需要自己在DRIVERENTRY中REPORT DEVICE的存在. 然后等待PNP MANAGER的CALL. 非常感谢您的回答! 但是我不明白“在DRIVERENTRY中REPORT DEVICE的存在” 什么意思,可否进一步指教? 正在看您的网页,的确都是好东西。 :) |
|
9楼#
发布于:2002-10-09 08:50
[quote][quote]AddDevice操作是系靳
|
|
10楼#
发布于:2004-04-09 14:51
这是wdm1的例子
[WDM.Book] %Wdm1%=Wdm1.Install, *wdmBook\Wdm1 但是还有这样的一个例子 [OpenSystemsResources] %DeviceDesc% = OsrNothingDriverInstall, Root\OsrNothing 请教各位高人:第二种是把驱动挂在了root总线下,那么第一种是什么呢? 两种方式有什么本质上的区别?? |
|
|