c++ - UNICODE_STRING 蓝屏死机 WDK
问题描述
到目前为止,我正在开发一个过滤器驱动程序,它有一个 UNICODE_STRING,分配为:
const SIZE_T buffSize = sizeof(UNICODE_STRING) + NTSTRSAFE_UNICODE_STRING_MAX_CCH * sizeof(wchar_t);
PUNICODE_STRING extracted_key = (PUNICODE_STRING)MmAllocateNonCachedMemory(buffSize);
extracted_key->Length = 0;
extracted_key->MaximumLength = NTSTRSAFE_UNICODE_STRING_MAX_CCH * sizeof(wchar_t);
extracted_key->Buffer = (PWCH)((PCCH)extracted_key + sizeof(UNICODE_STRING));
它具有程序正在使用的注册表键的值,例如
\REGISTRY\A\{0585F053-FB9C-4EAE-BF42-F1FFB9A13ACE}\ActivatableClassId\CortanaUI.AppX4bsqm82t4x1h6fxzn912f92v3hcmq9bb.mca
我想删除密钥的前缀,即\REGISTRY\A\
它的长度计算完成,我使用删除它
extracted_key->Length -= (USHORT)length * sizeof(WCHAR);
extracted_key->MaximumLength -= (USHORT)length * sizeof(WCHAR);
extracted_key->Buffer += length;
提取的密钥必须传递给RtlCompareUnicodeString
,FsRtlIsNameInExpression
但一段时间后,它会导致BSOD,仅在 Windows 7 上。有人可以帮我吗?
解决方案
推荐阅读
- java - 编辑 JavaFX 表中的数据
- swift5 - 类型“Notification.Name”(又名“NSNotification.Name”)没有成员“UIResponder”
- java - 如何使用spring boot jwt注销
- reactjs - 使用 webpack 从 index.html 正确导入文件
- mongodb - 无法在我的突变中使用快速会话
- scala - 从 Spark DataFrame 创建案例类对象序列
- c# - 在 Active Directory C# 中哪个是更好的 PrincipalContext 或 DirectoryEntry 用户创建
- c# - 如何更改 ObjectListView 中单个单元格的 BackColor/ForeColor
- python-3.x - 运行 train.py 对象检测脚本时没有名为“tensorflow”的模块
- python - TypeError : 'list' 对象不可调用;这是什么意思,我该如何解决?