gxtue
驱动牛犊
驱动牛犊
  • 注册日期2004-03-25
  • 最后登录2004-04-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2225回复:4

请问有关于ZwQueryInformationFile

楼主#
更多 发布于:2004-04-08 20:53
在ZwQueryInformationFile中有一个FileInformationClass的参数
在设定该参数为FileNameInformation时,照理说会回传一个FILE_NAME_INFORMATION的结构
想请问一下,如果我想把FILE_NAME_INFORMATION中的第二个参数用DbgPrint完整秀出来(应该是该file的路径及名称),应该怎么做..??
谢谢!!
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
沙发#
发布于:2004-04-09 08:24
在ZwQueryInformationFile中有一个FileInformationClass的参数
在设定该参数为FileNameInformation时,照理说会回传一个FILE_NAME_INFORMATION的结构
想请问一下,如果我想把FILE_NAME_INFORMATION中的第二个参数用DbgPrint完整秀出来(应该是该file的路径及名称),应该怎么做..??
谢谢!!
 


第二个参数是一个WCHAR的字符串,可以使用 %ws 参数打印。
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
gxtue
驱动牛犊
驱动牛犊
  • 注册日期2004-03-25
  • 最后登录2004-04-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-04-09 15:57
NTSTATUS NewNtCreateSection(
OUT PHANDLE phSection,
IN ACCESS_MASK DesiredAccess,
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN PLARGE_INTEGER MaximumSize OPTIONAL,
IN ULONG SectionPageProtection,
IN ULONG AllocationAttributes,
IN HANDLE hFile OPTIONAL)
{

       int rc;
       FILE_NAME_INFORMATION filenameinfo;
       IO_STATUS_BLOCK   statusblock;  

.
.
.
       rc = ZwQueryInformationFile(hFile,
   &statusblock,
   &filenameinfo,
   sizeof(FILE_NAME_INFORMATION),
   FileNameInformation);
DbgPrint("rc = %x\n", rc);
DbgPrint("%ws\n",filenameinfo.FileName);

我是这样写的
只是不知道为什么那个 rc 的值都是80000005 我查过是STATUS_BUFFER_OVERFLOW
不知道在哪里有错
那个 FileName打印出来的结果都只有第一个位~~>_<~
如果我开  D:\joe.txt
他只会打印出  \j
我是核内编程的新手
sorry
请指正!!
谢谢~^^”
gxtue
驱动牛犊
驱动牛犊
  • 注册日期2004-03-25
  • 最后登录2004-04-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-04-09 16:17
我自已将 sizeof(FILE_NAME_INFORMATION) 用
8* sizeof(FILE_NAME_INFORMATION) 来做
就可以印出来…
只是我不太懂为什么会这样啊??
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2004-04-09 18:56
typedef struct _FILE_NAME_INFORMATION {
  ULONG  FileNameLength;
  WCHAR  FileName[1];
} FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION;


当然是STATUS_BUFFER_OVERFLOW,你指望一个WCHAR就能放下吗?

这样:

PFILE_NAME_INFORMATION pFI = ExAllocatePool( pooltype, sizeof(FILE_NAME_INFORMATION) + 255 * sizeof(WCHAR) );//255应该是够了的

rc = ZwQueryInformationFile(hFile,
&statusblock,
pFI,
sizeof(FILE_NAME_INFORMATION) + 255 * sizeof(WCHAR),
FileNameInformation);

...

游客

返回顶部