yuri69
驱动小牛
驱动小牛
  • 注册日期2002-07-12
  • 最后登录2005-12-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1259回复:5

怎样用SympolLink 打开驱动程序的句柄?在(Windows 2000 下)

楼主#
更多 发布于:2003-02-27 15:07
怎样用SympolLink 打开驱动程序的句柄?在(Windows 2000 下)

在驱动程序里应该怎样注册? 我用 IoCreateSymbolicLink 注册,k在驱动程序里打不开。

我用 IoRegisterDevieInterface 也不成。

不知道在应用程序里 是不是应该
     hDevice = CreateFile(\"\\\\\\\\.\\\\DriverName\",
                           0,
                           NULL,
                           OPEN_EXISTING,
                           FILE_ATTRIBUTE_NORMAL,
                           NULL);

望高手指正。先写过了。
我不会停止对你的思念,就像呼吸一样,我不去特意的想,但是,只能屏息,而不可能停止
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-02-27 16:53
CreateFile打开设备时,设备名应该是:\\\\\\\\.\\\\设备的符号连接名
如:\\\\\\\\.\\\\COM1,其中COM1为COM口的一个符号连接名,而不是驱动名
详细信息请自己查看CreateFile的帮助文档
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-02-27 19:33
把你的IoCreateSymbolicLink的代码贴来看看?
那个WinIO的代码你没有看?照抄呗 :D
yuri69
驱动小牛
驱动小牛
  • 注册日期2002-07-12
  • 最后登录2005-12-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-02-27 20:16
就是照抄的, :)

可是我的驱动是 filter ,不知道是不是不能够直接打开呢?

另外,我的程序是driverstudio 生成的,Device类继承自KPnpDevice, ddk里面说 Pnp Device 是不用IoCreateSymbolicLink的。而是用 IoRegisterDevieInterface 。

但是还是不行。

到底是 filter 驱动不能直接打开,还是 filter 驱动不能继承自
KPnpDevice?

望指点。
我不会停止对你的思念,就像呼吸一样,我不去特意的想,但是,只能屏息,而不可能停止
yuri69
驱动小牛
驱动小牛
  • 注册日期2002-07-12
  • 最后登录2005-12-31
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于: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…………
我不会停止对你的思念,就像呼吸一样,我不去特意的想,但是,只能屏息,而不可能停止
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2003-02-28 16:58
问题已经解决。

办法如下:

 我用的是 driverstudio 生成的frame

在 KDriver 类寄生的类中的 AddDevice 函数中,把 new Device 中的 第三个参数设为 : static_cast<PCWSTR>(KUnitizedName(L\"TestDevice\", m_Unit)), 其中,\"TestDevice\"是我的Symbolink名称。


然后在CreateFile 时,第一个参数为 \"\\\\\\\\.\\\\TestDevice0\",注意,必须有 0,当然,也可能是 1,2,3…………

那么你应该是创建了名为TestDevice0的symbolink,那个0由m_Unit来决定。
游客

返回顶部