Почему Read/WriteProcessMemory не принимает адрес памяти из переменной?

У меня есть адрес, который мне нужно прочитать, но я столкнулся с проблемой, а именно:

    DWORD Adr = 0x284B103C830;
    int buffer;
    ReadProcessMemory(handle, (LPVOID)Adr, &buffer, sizeof(buffer), 0);
    cout << buffer; 

не работает ни при каких обстоятельствах, в то время как

int buffer;
    ReadProcessMemory(handle, (LPVOID)0x284B103C830, &buffer, sizeof(buffer), 0);
    cout << buffer;

работает исправно. Я сделал вывод что RPM и WPM по каким то причинам не могут получить адрес из переменной, как это можно исправить?


Ответы (1 шт):

Автор решения: Harry

У вас явно 64-разрядное приложение. Код

cout << sizeof(DWORD) << " " << sizeof(LPVOID) << endl;

выводит в этом случае

4 8

так что корректно поступить так — сразу записывать в переменную нужного размера:

LPVOID Adr = (LPVOID)0x284B103C830;
→ Ссылка