【问题标题】:How to release memory, allocated by RtlQueryRegistryValues in Windows kernel driver如何释放由 Windows 内核驱动程序中的 RtlQueryRegistryValues 分配的内存
【发布时间】: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。 作为一种解决方法,我可以在调用函数之前自己分配足够的缓冲区,但我正在寻找干净的解决方案。 谢谢==

【问题讨论】:

标签: windows kernel driver


【解决方案1】:

您可以ExFreePool() 释放内存。但由于它是一个 Unicode 字符串,你也应该尝试RtlFreeUnicodeString()

【讨论】:

    猜你喜欢
    • 2011-07-11
    • 2011-03-24
    • 2021-07-05
    • 2019-01-21
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多