solo1987
驱动牛犊
驱动牛犊
  • 注册日期2008-01-14
  • 最后登录2011-02-16
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望85点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1584回复:3

FileHandle的奇怪问题

楼主#
更多 发布于:2008-07-27 19:10
我得到了一个文件的FileHandle,想要获取文件的路径名。用了下面的代码:    
 ObReferenceObjectByHandle( FileHandle, 0, NULL, KernelMode, &pFileObj, NULL );
                   if(pFileObj==NULL)
    {
        DbgPrint("get fileobject error\n");
        return;
    }
    RtlUnicodeStringToAnsiString(&ObjectName,pFileObj->ObjectName,TRUE);
但是这个RtlUnicodeStringToAnsiString(&ObjectName,pFileObj->ObjectName,TRUE);的调用会导致一个bsod,不知道为什么,貌似是pFileObj->ObjectName不对,指向的不是路径.

然后我又用下面的代码试了一下,ok:

ObReferenceObjectByHandle( FileHandle, 0, NULL, KernelMode, &pFileObj, NULL );
obQueryNameString(FileObject,pFullFilePath,MAXFILEPATHLEN,&ret);
RtlUnicodeStringToAnsiString(&ObjectName,pFullPath,TRUE);

实在很纳闷为什么第一种方法不行,哪位大侠给解释下,为什么第一种方法不对!
solo1987
驱动牛犊
驱动牛犊
  • 注册日期2008-01-14
  • 最后登录2011-02-16
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望85点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-07-27 22:52
自己up
solo1987
驱动牛犊
驱动牛犊
  • 注册日期2008-01-14
  • 最后登录2011-02-16
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望85点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-07-28 23:47
   
Pegram
论坛版主
论坛版主
  • 注册日期2005-12-03
  • 最后登录2013-08-23
  • 粉丝13
  • 关注5
  • 积分1333分
  • 威望4717点
  • 贡献值1点
  • 好评度78点
  • 原创分0分
  • 专家分2分
地板#
发布于:2009-01-08 10:39
记得是这样的:
FILE_OBJECT的ObjectName域,只有在IRP_MJ_Create请求中才可用,在别的地方使用,都是不对地。
《寒江独钓》与《竹林蹊径》的合作作者。精通USB开发,设计了CY001 USB驱动套件(http://bbs.driverdevelop.com/read.php?tid-119314.html)。
游客

返回顶部