实现正则匹配,匹配模式
来源:互联网 发布:双头龟一只多少钱淘宝 编辑:程序博客网 时间:2024/06/06 10:59
模式匹配问题
BOOLEAN IsPatternMatch(PUNICODE_STRING Expression, PUNICODE_STRING Name, BOOLEAN IgnoreCase){return FsRtlIsNameInExpression( Expression, Name, IgnoreCase,//如果这里设置为TRUE,那么Expression必须是大写的 NULL ); }//L"C:\\WINDOWS\\SYSTEM32\\*\\*.SYS"//L"c:\\Windows\\system32\\122222\\2.sys"
#include <Ntifs.h>#include <ntddk.h>#include <windef.h>VOID DriverUnload(PDRIVER_OBJECT pDriverObject){DbgPrint("Goodbye!\n");}BOOLEAN IsPatternMatch(PUNICODE_STRING Expression, PUNICODE_STRING Name, BOOLEAN IgnoreCase){return FsRtlIsNameInExpression( Expression, Name, IgnoreCase,//如果这里设置为TRUE,那么Expression必须是大写的 NULL ); }BOOL PatternMatch(WCHAR * pat, WCHAR * str){ register WCHAR * s; register WCHAR * p; BOOL star = FALSE;loopStart: for (s = str, p = pat; *s; ++s, ++p) { switch (*p) { case L'?': if (*s == L'.') goto starCheck; break; case L'*': star = TRUE; str = s, pat = p; if (!*++pat) return TRUE; goto loopStart; default: //if (Lower(*s) != Lower(*p)) goto starCheck; break; } } if (*p == L'*') ++p; return (!*p);starCheck: if (!star) return FALSE; str++; goto loopStart;}BOOL PatternNMatch(WCHAR * pat, WCHAR * str, DWORD count){ register WCHAR * s; register WCHAR * p; BOOL star = FALSE; DWORD dwCount = count;loopStart: for (s = str, p = pat; dwCount>0; --dwCount, ++s, ++p) { switch (*p) { case L'?': if (*s == L'.') goto starCheck; break; case L'*': star = TRUE; str = s, pat = p; if (!*++pat) return TRUE; goto loopStart; default: //if (Lower(*s) != Lower(*p)) goto starCheck; break; } } if (*p == L'*') ++p; return (!*p);starCheck: if (!star) return FALSE; str++; dwCount--; goto loopStart;}NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING pRegPath){UNICODE_STRING uExpression = {0};UNICODE_STRING uName = {0};RtlInitUnicodeString(&uExpression, L"C:\\WINDOWS\\SYSTEM32\\*.SYS");RtlInitUnicodeString(&uName, L"c:\\Windows\\system32\\122222\\2.sys");if (IsPatternMatch(&uExpression, &uName, TRUE)){DbgPrint("Matched\n");}else{DbgPrint("Not Matched\n");}pDriverObject->DriverUnload = DriverUnload;return STATUS_SUCCESS;}
0 0
- 实现正则匹配,匹配模式
- scala 正则匹配(模式匹配)
- .NET正则匹配模式
- 正则匹配模式
- php正则匹配 模式
- .NET正则匹配模式
- 正则表达式-匹配模式
- 正则匹配模式
- 正则匹配模式汇总
- 正则匹配模式汇总
- scala中的正则匹配和模式匹配
- 正则表达式匹配模式VB
- perl 正则模式匹配总结
- 正则表达式的模式匹配
- 正则表达式 模式匹配 PERL
- Perl 正则表达式 模式匹配
- VB 正则表达式匹配模式
- 正则表达式模式匹配符
- 如何获得短名的长名?
- install-plugin-submit
- YouKu iOS笔试题一
- UI测试
- js模块化之require.js
- 实现正则匹配,匹配模式
- YouKu iOS笔试题二
- 欢迎使用CSDN-markdown编辑器
- WebRTC视频流渲染中插入图片帧
- swift控制流
- Devik 进程,linux 进程,线程的区别
- 实时应用监控平台cat——服务器启动流程(一)
- 异步读
- 第一次接到的任务