阅读:2225回复:4
请问有关于ZwQueryInformationFile
在ZwQueryInformationFile中有一个FileInformationClass的参数
在设定该参数为FileNameInformation时,照理说会回传一个FILE_NAME_INFORMATION的结构 想请问一下,如果我想把FILE_NAME_INFORMATION中的第二个参数用DbgPrint完整秀出来(应该是该file的路径及名称),应该怎么做..?? 谢谢!! |
|
沙发#
发布于:2004-04-09 08:24
在ZwQueryInformationFile中有一个FileInformationClass的参数 第二个参数是一个WCHAR的字符串,可以使用 %ws 参数打印。 |
|
|
板凳#
发布于: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 请指正!! 谢谢~^^” |
|
地板#
发布于:2004-04-09 16:17
我自已将 sizeof(FILE_NAME_INFORMATION) 用
8* sizeof(FILE_NAME_INFORMATION) 来做 就可以印出来… 只是我不太懂为什么会这样啊?? |
|
地下室#
发布于: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); ... |
|