阅读:1259回复:5
怎样用SympolLink 打开驱动程序的句柄?在(Windows 2000 下)
怎样用SympolLink 打开驱动程序的句柄?在(Windows 2000 下)
在驱动程序里应该怎样注册? 我用 IoCreateSymbolicLink 注册,k在驱动程序里打不开。 我用 IoRegisterDevieInterface 也不成。 不知道在应用程序里 是不是应该 hDevice = CreateFile(\"\\\\\\\\.\\\\DriverName\", 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); 望高手指正。先写过了。 |
|
|
沙发#
发布于:2003-02-27 16:53
CreateFile打开设备时,设备名应该是:\\\\\\\\.\\\\设备的符号连接名
如:\\\\\\\\.\\\\COM1,其中COM1为COM口的一个符号连接名,而不是驱动名 详细信息请自己查看CreateFile的帮助文档 |
|
|
板凳#
发布于:2003-02-27 19:33
把你的IoCreateSymbolicLink的代码贴来看看?
那个WinIO的代码你没有看?照抄呗 :D |
|
地板#
发布于:2003-02-27 20:16
就是照抄的, :)
可是我的驱动是 filter ,不知道是不是不能够直接打开呢? 另外,我的程序是driverstudio 生成的,Device类继承自KPnpDevice, ddk里面说 Pnp Device 是不用IoCreateSymbolicLink的。而是用 IoRegisterDevieInterface 。 但是还是不行。 到底是 filter 驱动不能直接打开,还是 filter 驱动不能继承自 KPnpDevice? 望指点。 |
|
|
地下室#
发布于:2003-02-28 14:19
问题已经解决。
办法如下: 我用的是 driverstudio 生成的frame 在 KDriver 类寄生的类中的 AddDevice 函数中,把 new Device 中的 第三个参数设为 : static_cast<PCWSTR>(KUnitizedName(L\"TestDevice\", m_Unit)), 其中,\"TestDevice\"是我的Symbolink名称。 然后在CreateFile 时,第一个参数为 \"\\\\\\\\.\\\\TestDevice0\",注意,必须有 0,当然,也可能是 1,2,3………… |
|
|
5楼#
发布于:2003-02-28 16:58
问题已经解决。 那么你应该是创建了名为TestDevice0的symbolink,那个0由m_Unit来决定。 |
|