FILE_OBJECT的定义:
另外从FILE_OBJECT结构体中的步得到该文件的相对路径,例如: /AAAA/BBBB/CCCC
这样综合起来,我只能得到该文件没有盘符的路径:/AAAA/BBBB/CCCC/abc.exe
//相关变量 HANDLE filehandle=0; PFILE_OBJECT file=0; PFILE_OBJECT relatedfile=0;
POBJECT_HANDLE_INFORMATION info=0; char filefullname_c[1024]; ANSI_STRING filefullname_a;
UNICODE_STRING filefullname_u; int relatedfilelength; POBJECT_NAME_INFORMATION
fileNameInformation;
ULONG retSize; //先得到盘符
RtlVolumeDeviceToDosName(file->DeviceObject,&filefullname_u);
RtlUnicodeStringToAnsiString(&filefullname_a,&filefullname_u,1);
strncpy(filefullname_c,filefullname_a.Buffer,filefullname_a.Length);
filefullname_c[filefullname_a.Length]='/0';
relatedfilelength=filefullname_a.Length; //相对路径
relatedfile=file->RelatedFileObject;
RtlUnicodeStringToAnsiString(&filefullname_a,&relatedfile->FileName,1);
strncat(filefullname_c,filefullname_a.Buffer,filefullname_a.Length);
filefullname_c[relatedfilelength+filefullname_a.Length]='/0';
relatedfilelength+=filefullname_a.Length; //文件名
RtlUnicodeStringToAnsiString(&filefullname_a,&file->FileName,1);
strcat(filefullname_c,"//");
strncat(filefullname_c,filefullname_a.Buffer,filefullname_a.Length);
filefullname_c[relatedfilelength+filefullname_a.Length+1]='/0';
本文介绍如何通过FILE_OBJECT结构体获取文件的完整路径,包括盘符、相对路径及文件名,并提供具体步骤与代码实现。

1万+

被折叠的 条评论
为什么被折叠?



