huhu0013
驱动牛犊
驱动牛犊
  • 注册日期2007-08-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望25点
  • 贡献值1点
  • 好评度15点
  • 原创分0分
  • 专家分0分
阅读:2823回复:4

请大家帮忙:IoGetDeviceObjectPointer遇到的问题?

楼主#
更多 发布于:2008-08-17 01:46

最近正在学习文件系统驱动,

我想用IoGetDeviceObjectPointer函数获得设备\Device\HarddiskVolume1的指针,

我函数调用的代码是这样的:

status = IoGetDeviceObjectPointer(
        &ustrDevName,
        FILE_READ_DATA,
        NULL,        
        &VolumeDevice
        );

我把驱动安装为服务,然后启动。

结果这个函数总是返回STATUS_SHARING_VIOLATION,

提示是“另一个程序正在使用文件,进程无法访问”。

怎么这个函数总是这样,不能成功得到设备指针呢?

是我哪里弄错了吗?

huhu0013
驱动牛犊
驱动牛犊
  • 注册日期2007-08-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望25点
  • 贡献值1点
  • 好评度15点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-08-23 05:15
原来和文件系统有关啊

这个我倒没想过

我只是在NTFS上做的测试

至于是不是系统分区我就没管了

反正一直没有成功

呵呵~真巧

我也是在这里遇到困难后改用了别的方法

哈哈~

感谢你给的提醒啊

不知能否加为QQ跟你学习
dreamsity
驱动小牛
驱动小牛
  • 注册日期2006-09-01
  • 最后登录2013-07-04
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望821点
  • 贡献值1点
  • 好评度68点
  • 原创分1分
  • 专家分0分
板凳#
发布于:2008-08-22 09:59
这个好象是NTFS系统分区的文件系统引起的。
我当时也遇到过这个问题。
我记得当时的实验结果是这样的
NTFS
       系统分区,函数执行失败
    非系统分区,函数执行成功
FAT32
      系统分区,函数执行成功
   非系统分区,函数也执行成功
后来,我获取设备对象指针是通过别的方法实现的。
一切都是时间问题!
huhu0013
驱动牛犊
驱动牛犊
  • 注册日期2007-08-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望25点
  • 贡献值1点
  • 好评度15点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-08-22 05:22
谢谢坛主提醒啊

不过我刚刚试了试

结果还是一样
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2008-08-20 15:53
第三个参数OUT PFILE_OBJECT *FileObject,,不要为NULL,再试试
游客

返回顶部