C++ E0144 |驱动开发 | PRTL_PROCESS_MODULE_INFORMATION

问题描述 投票:0回答:0

当我尝试构建我的项目时,出现错误:

a value type "PRTL_PROCESS_MODULE_INFORMATION*" cannot be used to initialize an entity of type "PRTL_PROCESS_MODULE_INFORMATION"
。如果可能的话,我很好奇这是我的代码:

PVOID get_ststem_module_base(const char* module_name)
{
    ULONG bytes = 0;
    NTSTATUS status = ZwQuerySystemInformation(SystemModuleInformation, NULL, bytes, &bytes);

    if (!bytes)
        return NULL;

    PRTL_PROCESS_MODULES modules = (PRTL_PROCESS_MODULES)ExAllocatePoolWithTag(NonPagedPool, bytes, 0x4e554c4c);

    status = ZwQuerySystemInformation(SystemModuleInformation, modules, bytes, &bytes);

    if (!NT_SUCCESS(status))
        return NULL;



    PRTL_PROCESS_MODULE_INFORMATION module = modules->Modules;
    PVOID module_base = 0, module_size = 0;

    for (ULONG i = 0; i < modules->NumberOfModules; i++)
    {
        if (strcmp((char*)module[i].FullPathName, module_name) == 0)
        {
            module_base = module[i].ImageBase;
            module_size = (PVOID)module[i].ImageSize;
            break;
        }
    }
    if (modules)
        ExFreePoolWithTag(modules, NULL);

    if (module_base <= NULL)
        return NULL;

    return module_base;
}

我已经尝试更改模块的名称,看看我是否可以让它变得像任何东西一样,但没有成功,我被这个难住了。

c++ driver
© www.soinside.com 2019 - 2024. All rights reserved.