UNICODE_STRING Синий экран смерти WDK - PullRequest
0 голосов
/ 11 января 2019

На данный момент я работаю над драйвером фильтра, и он имеет 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. Может кто-нибудь помочь мне с этим?

...