FsRtlIsNameInExpression的功能介绍参考MSDN:
FsRtlIsNameInExpression function (ntifs.h) - Windows drivers | Microsoft Learn
一句话概括就是看一个unicode string是否满足指定的结构类型。
比如想写一个功能,看一个Unicode string子串是否是以 abcd1234开头的,那这个代码可以按照下面方式来写:
UNICODE_STRING usPattern = {0}; //规则
UNICODE_STRING usTheCheckedString; //这个就是需要检查是否满足一定规则的那个字串
RtlInitUnicodeString(&usPattern, L"abcd1234*"); //注意:这里后面一定要有*这个通配符,否则会发现匹配不上
if (FsRtlIsNameInExpression(&usPattern, &usTheCheckedString, FALSE, NULL)) //第三个参数给FALSE意思是在匹配时关注大小写,如果是TRUE,则需要把usPattern的值转换成大写。
{
//说明usTheCheckedString是以abcd1234开头的
}
else
{
//说明usTheCheckedString不是以abcd1234开头的
}
上面这个示例的用法比较简单,就是检查一个字符串是不是以特定字串开头,注意pattern后面要添加*这个通配符,否则会发现是否返回FALSE。