zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1183回复:8

create 派遣函数如何获得文件名

楼主#
更多 发布于:2004-11-16 10:50
在CREATE派遣函数里如何获得被创建或打开的文件名称和路径?
如用NOTEPAD.EXE打开一个c:\a.txt 我怎样才能获得 c:\a.txt
---内核开发合作或提供基础技术服务QQ:22863668 ---
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2004-11-23 16:07
好的,非常感谢
---内核开发合作或提供基础技术服务QQ:22863668 ---
toadwolf
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2013-11-12
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-11-23 02:29
文件名(没有盘符)直接从FileObject->FileName中取. 盘符需要用其他方法得到, 我前面说的方法是用来得到盘符的.

注意
1. FileObject->RelatedFileObject->FileName需要一起考虑.
2. 文件名中可能包含"\??\"需要手动处理.
3. 网络文件名需要处理(FILEMON中的处理有错误!!!)
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2004-11-22 13:04
我试过啊,只能得到\device\harddiskvolume1 不能得到文件名
文件名怎么得到的?
代码如下:
irpSp = IoGetCurrentIrpStackLocation( Irp );
if(irpSp->FileObject&&irpSp->FileObject->DeviceObject)
{
if(STATUS_SUCCESS==ObQueryNameString(irpSp->FileObject->DeviceObject,pObjectInfor,300,&ReturnLength))
{
KdPrint(("name is: %ws",pObjectInfor->Name.Buffer));
KdPrint(("Proces is: %ws",GetProcessPath()));
}
}
ExFreePool(pObjectInfor);
---内核开发合作或提供基础技术服务QQ:22863668 ---
toadwolf
驱动牛犊
驱动牛犊
  • 注册日期2003-11-30
  • 最后登录2013-11-12
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望67点
  • 贡献值0点
  • 好评度26点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-11-20 09:18
"c:"只是个用户模式下用的符号连接, 你把设备名传到用户模式下去比较就可以了.

取物理设备对象: fileobject->device
取物理设备名: ObQueryNameString

把这个名字传到用户模式, 和QueryDosDevice的结果比较就可以得到盘符了.
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2004-11-19 17:19
还是搞不懂,那个函数没做什么呀
---内核开发合作或提供基础技术服务QQ:22863668 ---
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-11-17 09:03
能否给个例子?
谢谢!

filemon里有实现这个IRP请求的函数,filemonQueryFile( ... ),正好满足你的要求。
在交流中学习。。。
zhangshengyu
驱动老牛
驱动老牛
  • 注册日期2003-10-03
  • 最后登录2016-07-26
  • 粉丝0
  • 关注0
  • 积分792分
  • 威望696点
  • 贡献值41点
  • 好评度499点
  • 原创分0分
  • 专家分0分
  • 社区居民
7楼#
发布于:2004-11-16 13:31
能否给个例子?
谢谢!
---内核开发合作或提供基础技术服务QQ:22863668 ---
newkey
驱动小牛
驱动小牛
  • 注册日期2002-10-03
  • 最后登录2013-10-13
  • 粉丝1
  • 关注0
  • 积分45分
  • 威望392点
  • 贡献值1点
  • 好评度90点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-11-16 13:14
文件名

FileObject FileName

路径 ,需要构造个  FileInfo 得 IRP

好像 FileMon中有
www.xDrv.com
游客

返回顶部