Извините, если это действительно глупый вопрос, но здесь.
Я недавно попал в C ++, и мне нужно изменить драйвер для проекта, над которым я работаю. Проблема в том, что мой драйвер должен взять строку, которую я храню в void*
. Итак, в основном, мой вопрос, как я могу привести это или сделать это очень простым способом?
void get_modulebase(int pid, void* value, void* data) {
PEPROCESS t_process;
UNICODE_STRING mod;
KAPC_STATE apc;
DbgPrint("Data: %s \n", data); //this prints the string as i need it
RtlInitUnicodeString(&mod, (PCWSTR)data); //this fails
PsLookupProcessByProcessId((HANDLE)pid, &t_process);
PVOID base_address = BBGetUserModule(t_process, &mod);
KeUnstackDetachProcess(&apc);
RtlCopyMemory(value, &base_address, 8);
ObfDereferenceObject(t_process);
}
Это работает для меня, но мне нужно сохранить имя модуля в data
:
RtlInitUnicodeString(&mod, L"notepad.exe");