<Return[R]><Top>

ReadProcessMemory

Declare Function Api_ReadProcessMemory& Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess&, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize&, lpNumberOfBytesWritten&)

Declare Function ReadProcessMemory Lib "kernel32" Alias "ReadProcessMemory" (ByVal hProcess As Long, lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

指定されたプロセスのメモリ領域からデータを読み取る。読み取られる領域全体がアクセス可能でなければならない。さもないと、関数は失敗する。

パラメータ
hProcess
    [入力]読み取りたいメモリをもつプロセスのハンドルを指定する。このハンドルは、プロセスに対する PROCESS_VM_READ アクセス権を

    備えていなければならない。
lpBaseAddress
    [入力]指定されたプロセスで、読み取りを開始したいベースアドレスへのポインタを指定する。どのようなデータ転送を開始する前でも、シ

    ステムはベースアドレスと指定のメモリサイズによって決定されるすべてのデータに対して、読み取りアクセスを行えるかどうかを確認する。読

    み取りアクセスを行える場合、関数は続行する。そうでなければ関数は失敗する。
lpBuffer
    [出力]指定したプロセスのアドレス空間から読み取った内容を受け取るバッファへのポインタを指定する。
nSize
    [入力]指定したプロセスから読み取りたいバイト数を指定する。
lpNumberOfBytesRead
    [出力]指定されたバッファへ実際に転送されたバイト数を受け取る変数へのポインタを指定する。このパラメータはオプションである。

    lpNumberOfBytesRead パラメータが NULL のときは、このパラメータは無視される。
 

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。
    要求された読み取り処理の途中で、プロセスのアクセス不能領域が見つかると、関数は失敗する。

解説
    ReadProcessMemory 関数は、指定されたプロセスのアドレス空間から指定された範囲のデータを、現在のプロセスの指定されたバッファへ

    コピーする。PROCESS_VM_READ アクセス権付きのハンドルを備えている任意のプロセスは、この関数を呼び出せる。通常は、デバッグ

    中のプロセスを読み取り対象にするが、必ずしもこの状況に限定されるわけではない。
    読み取りたい領域全体がアクセス可能でなければならない。さもないと、関数は前述のように失敗する。