Ivan Prodanov
Ivan Prodanov

Reputation: 35502

WriteProcessMemory/ReadProcessMemory fail

I tried using both ReadProcessMemory() and WriteProcessMemory() in my application,but in both cases I get one result - Only part of a ReadProcessMemory or WriteProcessMemory request was completed.

Has anyone met that error code before? I'm using Vista SP2,I tried to run as admistrator,but I till get that erorcode.

Upvotes: 3

Views: 7596

Answers (1)

Gerald
Gerald

Reputation: 23479

Make sure you call VirtualProtectEx to set the correct protection level on the memory you want to read/write.

After thinking about it, it's probably not the problem since most memory has read access enabled, but to set the protection level do something like this (in C++)

(no error checking and just using a random memory address, but you should get the idea)

char buffer[256];
DWORD oldProtect = 0;
DWORD numRead = 0;
VirtualProtectEx( hProc, (LPVOID)0x77810F34, 256, PAGE_EXECUTE_READWRITE, &oldProtect );
ReadProcessMemory( hProc, (LPVOID)0x77810F34, buffer, 256, &numRead );
VirtualProtectEx( hProc, (LPVOID)0x77810F34, 256, oldProtect, NULL ); //restore the original protection when you're done

Upvotes: 5

Related Questions