UNICODE_STRING死亡WDK蓝屏

时间:2019-01-11 11:21:20

标签: c++ wdk register-transfer-level

到目前为止,我正在使用过滤器驱动程序,它具有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;

extracted_key必须传递到RtlCompareUnicodeStringFsRtlIsNameInExpression,但是一段时间后,它会导致BSOD,仅在Windows 7上。有人可以帮助我吗?

0 个答案:

没有答案