能力值:
( LV2,RANK:10 )
|
-
-
2 楼
自己顶自己
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
ObjectAttributes中存储的不一定是文件名,有时候也是流信息:
比如我打印出来的数据是:
{4c8cc155-6c1e-11d1_8e41-00c04fb9386d}:$DATA
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
新人学习下,楼下的来解答吧。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
就是没有人来回答我呢?囧。
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
后来放弃这种方法了。。。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
那你后来用了什么方法,可以教教我吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
自己回答好了。
造福后人。
int rc;
WCHAR ParentDirectory[256];
ParentDirectory[0]='\0';
if(ObjectAttributes->RootDirectory!=0)
{
PVOID Object;
Parent=(PUNICODE_STRING)ParentDirectory;
rc=ObReferenceObjectByHandle(ObjectAttributes->RootDirectory,0,0,KernelMode,&Object,NULL);
if(rc==STATUS_SUCCESS)
rc=ObQueryNameString(Object,ParentDirectory,sizeof(ParentDirectory),&BytesReturned);//获取主目录,并把主目录存储到ParentDirectory这个变量中。PS:我自己用宏KdPrint()打印数据看了,这个函数不仅可以获取目录,还可以获取整个全路径,即包含后面的文件名字。
if(rc!=STATUS_SUCCESS)
RtlInitUnicodeString(Parent,L"Unknown\\");
else
{
RtlInitUnicodeString(Parent,L"Unknown\\");
}
}
//下面是判断ObjectAttributes->ObjectName->Buffer的前7个字符是否为“\??\C:\”
if(!wcsncmp(ObjectAttributes->ObjectName->Buffer,L"\\??\\c:\\",7))
{
....
}
}
}
明白的时候,觉得很简单。不明白的时候,觉得很难。我是一个初学者,走了很多弯路,也学到很多东西。
|
能力值:
( LV4,RANK:50 )
|
-
-
9 楼
我是来领 Kx 的
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
汗!萌不萌给点解答呀?
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
[QUOTE=瀚海云烟;1306642]我是来领 Kx 的
原来你在另一个帖子里回答了。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
虽然还没解决。我问你一个问题。。为啥我在ZwCreateFile里面获取的对同一个文件的文件句柄不是同一个呢??我真心给跪了。。调试了,纠结了好几天呢。。。
|
能力值:
( LV4,RANK:50 )
|
-
-
13 楼
就算同一个进程,参数完全一样,句柄值也是不一样的呀,- -,没啥吧。原因,windows核心编程好像有说,不记得哪里看过了。他们在句柄表中是不一样的,但是指向的对象是一样的,句柄表里面记录的该句柄所持有的权限等属性。进一步说又到设计时候的问题了
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
还没学驱动..无法帮忙..只能帮你顶一下帖子.
|
|
|