<Return[WXYZ]><Top>

WriteProcessMemory

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

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

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

パラメータ
hProcess
    [入力]変更したいメモリをもつプロセスのハンドルを指定する。このハンドルは、プロセスに対する PROCESS_VM_WRITE と

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

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

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

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

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。要求された書き込み処理の途中で、プロセ

    スのアクセス不能領域が見つかると、関数は失敗する。

解説
    WriteProcessMemory 関数は、現在のプロセスの指定されたバッファから、指定されたプロセスのアドレス範囲へデータをコピーする。書き

    込み先のプロセスに対する PROCESS_VM_WRITE と PROCESS_VM_OPERATION の各アクセス権付きのハンドルを備えている任意の

    プロセスは、この関数を呼び出せる。通常は、デバッグ中のプロセスを書き込み対象にするが、必ずしもこの状況に限定されるわけではな

    い。書き込みたい領域全体がアクセス可能でなければならない。さもないと、関数は前述のように失敗する。