阅读:1060回复:3
大家讨论!!!
我用DS2.5在NT下写了一个虚拟的驱动,设备名是\"HIT\",但为什么我在应运程序用函数DeviceIoControl与之通迅时,在函数CreateFile中用设备名\"HIT\"总是打不开,还只能设备名\"HIT0\"(在设备名加上一个零)才能打开这是为什么???我要怎么做才能不要加上这个讨厌的\"0\"呢??????
|
|
沙发#
发布于:2002-05-23 23:09
看看吧!!!
|
|
板凳#
发布于:2002-05-24 10:23
必须加\"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\"!!! |
|