阅读:2821回复:4
请大家帮忙:IoGetDeviceObjectPointer遇到的问题?最近正在学习文件系统驱动, 我想用IoGetDeviceObjectPointer函数获得设备\Device\HarddiskVolume1的指针, 我函数调用的代码是这样的: status = IoGetDeviceObjectPointer( &ustrDevName, FILE_READ_DATA, NULL, &VolumeDevice ); 我把驱动安装为服务,然后启动。 结果这个函数总是返回STATUS_SHARING_VIOLATION, 提示是“另一个程序正在使用文件,进程无法访问”。 怎么这个函数总是这样,不能成功得到设备指针呢? 是我哪里弄错了吗? |
|
沙发#
发布于:2008-08-20 15:53
第三个参数OUT PFILE_OBJECT *FileObject,,不要为NULL,再试试
|
|
板凳#
发布于:2008-08-22 05:22
谢谢坛主提醒啊
不过我刚刚试了试 结果还是一样 |
|
地板#
发布于:2008-08-22 09:59
这个好象是NTFS系统分区的文件系统引起的。
我当时也遇到过这个问题。 我记得当时的实验结果是这样的 NTFS 系统分区,函数执行失败 非系统分区,函数执行成功 FAT32 系统分区,函数执行成功 非系统分区,函数也执行成功 后来,我获取设备对象指针是通过别的方法实现的。 |
|
|
地下室#
发布于:2008-08-23 05:15
原来和文件系统有关啊
这个我倒没想过 我只是在NTFS上做的测试 至于是不是系统分区我就没管了 反正一直没有成功 呵呵~真巧 我也是在这里遇到困难后改用了别的方法 哈哈~ 感谢你给的提醒啊 不知能否加为QQ跟你学习 |
|