阅读:4581回复:3
关于使用FltGetFileNameInformation的疑点
使用minifilter框架进行加解密。
在presetinformation中用FltGetFileNameInformation取文件名,如果在判断重命名(FileRenameInformation)前取,则新建的vc++工程能编译,但不能运行(错误代码:0xc000007b);若在判断重命名后取文件名,则新建的vc++工程能编译运行。 哪位高人知道原因吗? |
|
沙发#
发布于:2008-01-09 16:15
先取文件名代码:
fileInformationClass = iopb->Parameters.SetFileInformation.FileInformationClass; status = FltGetVolumeContext( FltObjects->Filter, FltObjects->Volume, &volCtx ); if (!NT_SUCCESS(status)) { leave; } //Get source file name status = FltGetFileNameInformation( Data, FLT_FILE_NAME_NORMALIZED | FLT_FILE_NAME_QUERY_ALWAYS_ALLOW_CACHE_LOOKUP, &nameInfo ); if(!NT_SUCCESS(status)) { leave; } renameInfo = (PFILE_RENAME_INFORMATION)iopb->Parameters.SetFileInformation.InfoBuffer; if (!iopb->Parameters.SetFileInformation.ParentOfTarget) { leave; } else { if (renameInfo->RootDirectory == NULL) { 。。。 } else { } } |
|
板凳#
发布于:2008-01-09 16:16
后取文件名代码:
fileInformationClass = iopb->Parameters.SetFileInformation.FileInformationClass; status = FltGetVolumeContext( FltObjects->Filter, FltObjects->Volume, &volCtx ); if (!NT_SUCCESS(status)) { leave; } renameInfo = (PFILE_RENAME_INFORMATION)iopb->Parameters.SetFileInformation.InfoBuffer; if (!iopb->Parameters.SetFileInformation.ParentOfTarget) { leave; } else { if (renameInfo->RootDirectory == NULL) { //Get source file name status = FltGetFileNameInformation( Data, FLT_FILE_NAME_NORMALIZED | FLT_FILE_NAME_QUERY_ALWAYS_ALLOW_CACHE_LOOKUP, &nameInfo ); if(!NT_SUCCESS(status)) { leave; } 。。。 } else { } } |
|
地板#
发布于:2008-10-20 10:12
FltGetFileNameInformation取名字有时候有点怪异
|
|
|