【发布时间】:2020-07-16 02:25:21
【问题描述】:
函数 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 的所有字段均已正确填充。我正在尝试找出如何释放 results.Buffer。
作为一种解决方法,我可以在调用函数之前自己分配足够的缓冲区,但我正在寻找干净的解决方案。
谢谢==
【问题讨论】:
-
你试过 ExFreePool() 吗? docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/…
-
或 RtlFreeUnicodeString() docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/…
-
@Baget - 谢谢,ExitFreePool(result.Buffer) 成功了。