ldljlzw
驱动中牛
驱动中牛
  • 注册日期2002-03-16
  • 最后登录2014-01-02
  • 粉丝1
  • 关注0
  • 积分1021分
  • 威望372点
  • 贡献值0点
  • 好评度187点
  • 原创分0分
  • 专家分0分
阅读:1061回复:3

大家讨论!!!

楼主#
更多 发布于:2002-05-23 22:38
我用DS2.5在NT下写了一个虚拟的驱动,设备名是\"HIT\",但为什么我在应运程序用函数DeviceIoControl与之通迅时,在函数CreateFile中用设备名\"HIT\"总是打不开,还只能设备名\"HIT0\"(在设备名加上一个零)才能打开这是为什么???我要怎么做才能不要加上这个讨厌的\"0\"呢??????
ldljlzw
驱动中牛
驱动中牛
  • 注册日期2002-03-16
  • 最后登录2014-01-02
  • 粉丝1
  • 关注0
  • 积分1021分
  • 威望372点
  • 贡献值0点
  • 好评度187点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-23 23:09
看看吧!!!
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-24 10:23
必须加\"0\"
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
ldljlzw
驱动中牛
驱动中牛
  • 注册日期2002-03-16
  • 最后登录2014-01-02
  • 粉丝1
  • 关注0
  • 积分1021分
  • 威望372点
  • 贡献值0点
  • 好评度187点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-24 13:35
谢谢答复。你们的答复使我感到人间的温暖和这里的可信。
用DS构造驱动时,IoCreateDevice和IoCreateSymbolicLink都封装在DS的类中的,所以不可能去改它们的。
这个问题我自己已经解决了。
是这样的:
在DriverEntry函数中,原来有这样一段代码:
pHitDevice = new (
  static_cast<PCWSTR>(KUnitizedName(L\"Hit\", Unit)),\\\\设备名
  FILE_DEVICE_UNKNOWN,
  static_cast<PCWSTR>(KUnitizedName(L\"Hit\", Unit)),\\\\连接名
  0,
  DO_EXCLUSIVE | DO_DIRECT_IO
) HitDevice();

关键是 static_cast<PCWSTR>(KUnitizedName(L\"Hit\", Unit)),在做坏,函数KUnitizedName(L\"Hit\", Unit)会把整数 Unit 加到串\"Hit\"的后面在返回,所以设备名和连接名变成了\"Hit0\"!!!
游客

返回顶部