- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
文件解锁定
/questionsget-unicode-filenames-used-by-a-process-using-ntquerysysteminformation-ntqueryin
Seeing a question mark for any non-ASCII character is the hallmark of an attempt to convert from Unicode to ANSI.
thisfunction:
function GetFileNameHandleThr(Data:Pointer):DWORD; stdcall;
var
dwReturn:DWORD;
FileNameInfo:FILE_NAME_INFORMATION;
ObjectNameInfo:TOBJECT_NAME_INFORMATION;
IoStatusBlock:IO_STATUS_BLOCK;
pThreadParam:TGetFileNameThreadParam;
begin
ZeroMemory(@FileNameInfo, SizeOf(FILE_NAME_INFORMATION));
pThreadParam:=PGetFileNameThreadParam(Data)^;
Result:=NtQueryInformationFile(pThreadParam.hFile, @IoStatusBlock, @FileNameInfo, MAX_PATH*2, FileNameInformation);
if Result=STATUS_SUCCESS then begin
Result:=NtQueryObject(pThreadParam.hFile, ObjectNameInformation, @ObjectNameInfo, MAX_PATH*2, @dwReturn);
if Result=STATUS_SUCCESS then begin
pThreadParam.Result:=Result;
WideCharToMultiByte(CP_ACP, 0, @ObjectNameInfo.Name.Buffer[ObjectNameInfo.Name.MaximumLength-ObjectNameInfo.Name.Length], ObjectNameInfo.Name.Length, @pThreadParam.FileName[0], MAX_PATH, nil, nil);
end else begin
pThreadParam.Result:=STATUS_SUCCESS;
Result:=STATUS_SUCCESS;
WideCharToMultiByte(CP_ACP, 0, @FileNameInfo.FileName[0], IoStatusBlock.Information, @pThreadParam.FileName[0], MAX_PATH, nil, nil);
end;
end;
PGetFileNameThreadParam(Data)^:=pThreadParam;
ExitThread(Result);
end;
This converts from Unicode to ANSI in the calls to WideCharToMultiByte.You simply need to remove that part of the code.
Youll need to modify this record
TGetFileNameThreadParam=packed record
hFile:THandle;
Result:NT_STATUS;
FileName:array[0..MAX_PATH-1] of AnsiChar;
end;
so that FileName is an array of WideChar.
TGetFileNameThreadParam=packed record
hFile:THandle;
Result:NT_STATUS;
FileName:array[0..MAX_PATH-1] of WideChar;
end;
and then adapt GetFileNameHandleThr accordingly.Ive not studied it in detail, but I expect you need someth
您可能关注的文档
最近下载
- 22S702:室外排水设施设计与施工——钢筋混凝土化粪池.pdf VIP
- 人教版小学数学六年级上册重点题型专项练习(必刷)word版.docx
- 广东省中山市2022-2023学年九年级上学期第一阶段十校联考英语试卷(含答案).docx VIP
- 423编号七年级数学《代数式》习题(含答案).pdf VIP
- 译林版三年级上册英语Unit 4《This is my friend》全单元教学课件(新教材).pptx
- 中学班会 课堂教学《寝室管理的要求》课件(共18张PPT).pptx VIP
- 物理学与人工智能.ppt
- 手机塑胶件来料检验标准手册.pdf VIP
- 公安基础知识1000题.docx
- 翻修屋顶合同5篇.docx VIP
文档评论(0)