WriteProcessMemory 関数 (memoryapi.h)
指定したプロセス内のメモリ領域にデータを書き込みます。 書き込む領域全体にアクセスできる必要があります。または操作が失敗します。
構文
BOOL WriteProcessMemory(
[in] HANDLE hProcess,
[in] LPVOID lpBaseAddress,
[in] LPCVOID lpBuffer,
[in] SIZE_T nSize,
[out] SIZE_T *lpNumberOfBytesWritten
);
パラメーター
[in] hProcess
変更するプロセス メモリへのハンドル。 ハンドルには、プロセスへのPROCESS_VM_WRITEとPROCESS_VM_OPERATIONアクセス権が必要です。
[in] lpBaseAddress
データの書き込み先となる指定されたプロセスのベース アドレスへのポインター。 データ転送が行われる前に、システムは、指定されたサイズのベース アドレスとメモリ内のすべてのデータに書き込みアクセスが可能であることを確認し、アクセスできない場合、関数は失敗します。
[in] lpBuffer
指定したプロセスのアドレス空間に書き込まれるデータを含むバッファーへのポインター。
[in] nSize
指定したプロセスに書き込まれるバイト数。
[out] lpNumberOfBytesWritten
指定したプロセスに転送されたバイト数を受け取る変数へのポインター。 このパラメーターは省略可能です。 lpNumberOfBytesWritten が NULL の場合、パラメーターは無視されます。
戻り値
関数が成功すると、戻り値は 0 以外になります。
関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。 要求された書き込み操作が、アクセスできないプロセスの領域に渡ると、関数は失敗します。
解説
WriteProcessMemory は、現在のプロセスの指定されたバッファーから、指定したプロセスのアドレス範囲にデータをコピーします。 PROCESS_VM_WRITEを持つハンドルを持ち、書き込まれるプロセスへのアクセスをPROCESS_VM_OPERATIONプロセスは、 関数を呼び出すことができます。 通常、必ずしもとは限りませんが、書き込まれるアドレス空間を持つプロセスはデバッグ中です。
書き込む領域全体にアクセスできる必要があり、アクセスできない場合、関数は失敗します。
要件
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | memoryapi.h (Windows.h を含む) |
Library | onecore.lib |
[DLL] | Kernel32.dll |