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

急急急急!!!!!!

楼主#
更多 发布于:2002-05-23 22:36
我用DS2.5在NT下写了一个虚拟的驱动,设备名是\"HIT\",但为什么我在应运程序用函数DeviceIoControl与之通迅时,在函数CreateFile中用设备名\"HIT\"总是打不开,还只能设备名\"HIT0\"(在设备名加上一个零)才能打开这是为什么???我要怎么做才能不要加上这个讨厌的\"0\"呢??????
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-05-24 08:49
ntStatus = IoCreateDevice (DriverObject,
                           sizeof (DEVICE_EXTENSION),
                           NULL,
                           FILE_DEVICE_UNKNOWN,
                           FILE_AUTOGENERATED_DEVICE_NAME,
                           FALSE,
                           DeviceObject);
注意第五个FILE_AUTOGENERATED_DEVICE_NAME参数,它表示由IO管理器自动产生DeviceName序列,其意义是如果系统中只有一个设备,其设备名是DeviceName0,有两个设备则为DeviceName1,....说道这里应该知道怎么做了吧? :D
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-24 09:23
加序号是为了区分一个驱动程序管理的几块相同的物理卡,
这样就可以分别打开操作不同的deviceobject对象,否则,你怎么区分。

你要不愿意要也可以,在创建symbollink的时候,不要加序号就行了
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
ldljlzw
驱动中牛
驱动中牛
  • 注册日期2002-03-16
  • 最后登录2014-01-02
  • 粉丝1
  • 关注0
  • 积分1021分
  • 威望372点
  • 贡献值0点
  • 好评度187点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-24 13:29
谢谢版主和zydcat的答复。你们的答复使我感到人间的温暖和这里的可信。
用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\"!!!
游客

返回顶部