【问题标题】:String safe way to cut a string (Windows kernel)字符串剪切字符串的安全方法(Windows 内核)
【发布时间】:2015-09-22 09:42:22
【问题描述】:

我正在编写一个小型微过滤器,我需要从 UNICODE_STRING 中取出最后 3 个字符,以测试文件扩展名是否为“txt”。

目前,我的解决方案是手动修改UNICODE_STRING:

UNICODE_STRING fileName = fileNameInfos->Name; // get file name 
USHORT charsToRemove = fileName.Length / 2 - 3;
fileName.Length -= sizeof(WCHAR) * charsToRemove;
fileName.MaximumLength -= sizeof(WCHAR) * charsToRemove;
fileName.Buffer = fileName.Buffer + charsToRemove;

然后创建一个新的包含“txt”的UNICODE_STRING进行比较:

RtlCreateUnicodeString(&compareString,L"txt");
if(RtlEqualUnicodeString(&compareString, &fileName))
{ // do stuff }

但我不认为手动修改缓冲区和UNICODE_STRING的参数是正确的方法。有没有人有一个字符串安全的解决方案来做到这一点?

提前致谢

【问题讨论】:

标签: c++ string kernel


【解决方案1】:

其实对于我的需要 FltParseFileNameInformation 就足够了:https://msdn.microsoft.com/en-us/library/windows/hardware/ff543417%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396

希望对大家有用

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2023-03-19
    • 1970-01-01
    • 2021-11-30
    相关资源
    最近更新 更多