Как освободить память, выделенную RtlQueryRegistryValues ​​в Windows драйвере ядра - PullRequest
0 голосов
/ 03 апреля 2020

Функция RtlQueryRegistryValues ​​может выделять память для возврата результата REG_SZ. Все работает хорошо, но я не могу догадаться, как освободить эту память. Фрагмент кода:

UNICODE_STRING result;
RtlZeroMemory(&result, sizeof(UNICODE_STRING));

RTL_QUERY_REGISTRY_TABLE queryTable[2];
queryTable[0].Flags = RTL_QUERY_REGISTRY_DIRECT | . . .;
queryTable[0].EntryContent = &result;
. . .

RtlQueryRegistryValues(..., queryTable, NULL, NULL);

Все поля result заполнены правильно. Я пытаюсь выяснить, как бороться с результатами. Буфер. В качестве обходного пути, я могу выделить достаточный буфер самостоятельно перед вызовом функции, но я ищу чистое решение. Спасибо ==

1 Ответ

0 голосов
/ 08 апреля 2020

Вы можете ExFreePool () , чтобы освободить память. но так как это строка Unicode, вы должны попробовать также RtlFreeUnicodeString ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...