yichigo
驱动牛犊
驱动牛犊
  • 注册日期2008-10-09
  • 最后登录2010-11-15
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2400回复:0

win7 下获得system进程打开的文件句柄所属文件名问题

楼主#
更多 发布于:2010-07-02 22:12
我程序的目的是通过进程打开的文件句柄获取句柄对应的文件名,主要代码如下

  status = PsLookupProcessByProcessId(ProcessId,&Process);  //ProcessId=4,System process
  if(NT_SUCCESS(status) && Process)
   {
       KeStackAttachProcess(Process,&apcstate);
       status = ObReferenceObjectByHandle(handle, FILE_ALL_ACCESS, *IoFileObjectType, KernelMode, &Object, NULL);  //handle--system打开的某文件句柄,
   }
   //之后通过object获得文件名

以上代码在WinXp上运行正常,所有进程都有效。但是在Win7上唯独对System进程无效

我观察了ObReferenceObjectByHandle的返回值是STATUS_INVALID_HANDLE,猜测是因为KeStackAttachProcess操作system进程没有成功,不知道是不是win7不允许attach它。
哪位大侠能告诉我其中的原因,或者有没有解决问题的办法。我看到Process Explorer可以看win7的句柄和文件不知道它是如何实现的。

感激不尽!
游客

返回顶部