ReadProcessMemory
The ReadProcessMemory
function reads memory in a specified process. The entire area to be read must
be accessible, or the operation fails.
BOOL ReadProcessMemory(
HANDLE hProcess, |
// handle of the
process whose memory is read |
LPCVOID lpBaseAddress, |
// address to start
reading |
LPVOID lpBuffer, |
// address of
buffer to place read data |
DWORD nSize, |
// number of bytes
to read |
LPDWORD lpNumberOfBytesRead |
// address of
number of bytes read |
); |
|
Parameters
hProcess
Identifies an
open handle of a process whose memory is read. The handle must have
PROCESS_VM_READ access to the process.
lpBaseAddress
Points to the
base address in the specified process to be read. Before any data transfer
occurs, the system verifies that all data in the base address and memory of the
specified size is accessible for read access. If this is the case, the function
proceeds; otherwise, the function fails.
lpBuffer
Points to a
buffer that receives the contents from the address space of the specified
process.
nSize
Specifies the
requested number of bytes to read from the specified process.
lpNumberOfBytesRead
Points to the
actual number of bytes transferred into the specified buffer. If lpNumberOfBytesRead
is NULL, the parameter is ignored.
Return Values
If the
function succeeds, the return value is nonzero.
If the
function fails, the return value is zero. To get extended error information,
call GetLastError
The function
fails if the requested read operation crosses into an area of the process that
is inaccessible.
Remarks
ReadProcessMemory
copies the data in the specified
address range from the address space of the specified process into the specified
buffer of the current process. Any process that has a handle with
PROCESS_VM_READ access can call the function. The process whose address space
is read is typically, but not necessarily, being debugged.
The entire
area to be read must be accessible. If it is not, the function fails as noted
previously.
See Also