/*
 *
 * memory.cxx
 *
 *  Routines for reading/writing process memory.
 *
 */

#include "actdbg.hxx"

BOOL
ReadMemory(
    IN  PNTSD_EXTENSION_APIS    pExtApis,
    IN  HANDLE                  hProcess,
    IN  DWORD_PTR               Address,
    IN OUT void *               pBuffer,
    IN  DWORD                   BufferSize
    )
{
    SIZE_T   BytesRead;
    BOOL    bStatus;

    if ( ! Address )
        return FALSE;

    bStatus = ReadProcessMemory(
                    hProcess,
                    (const void *)Address,
                    pBuffer,
                    BufferSize,
                    &BytesRead );

    return bStatus && (BytesRead == BufferSize);
}

BOOL
ReadMemory(
    IN  PNTSD_EXTENSION_APIS    pExtApis,
    IN  HANDLE                  hProcess,
    IN  char *                  pszAddress,
    IN OUT void *               pBuffer,
    IN  DWORD                   BufferSize
    )
{
    DWORD_PTR Address;

    Address = (*pExtApis->lpGetExpressionRoutine)( pszAddress );

    return ReadMemory( pExtApis, hProcess, Address, pBuffer, BufferSize );
}