Как я могу привести DWORD к PVOID в C ++? - PullRequest
0 голосов
/ 22 декабря 2019

Это определение моей функции, где я пытаюсь привести dwAddress, который является DWORD, к пустому указателю с reinterpret_cast (dwAddress):

template <class T>
    inline bool Read(DWORD dwAddress, T& Value){

        return ReadProcessMemory(m_HProcess, reinterpret_cast<LPVOID>(dwAddress), Value, sizeof(T), NULL) == true;
    }

Здесь я вызываю функцию:

DWORD testValue = 1;
        if(MemoryManager->Read<DWORD>(dwClientBase+dwForceAttack,testValue))

И это моя ошибка:

C:\Users\...\CLionProjects\...\CMemoryManager.h: In instantiation of 'bool CMemoryManager::Read(DWORD, T&) [with T = long unsigned int; DWORD = long unsigned int]':
C:\Users\...\CLionProjects\...\main.cpp:23:75:   required from here
C:\Users\...\CLionProjects\...\CMemoryManager.h:28:33: error: invalid conversion from 'long unsigned int' to 'PVOID' {aka 'void*'} [-fpermissive]
         return ReadProcessMemory(m_HProcess, reinterpret_cast<LPVOID>(dwAddress), Value, sizeof(T), NULL) == true;
                ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\...\CLionProjects\...\CMemoryManager.h:7,
                 from C:\Users\...\CLionProjects\...\main.cpp:2:
c:\mingw\include\winbase.h:2260:59: note:   initializing argument 3 of 'BOOL ReadProcessMemory(HANDLE, PCVOID, PVOID, DWORD, PDWORD)'
 WINBASEAPI BOOL WINAPI ReadProcessMemory (HANDLE, PCVOID, PVOID, DWORD, PDWORD);

Я не понимаю, почему не работает приведение. Я уже пробовал много разных методов приведения, но ничего не получится.

...