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

指定したプロセスに転送されたバイト数を受け取る変数へのポインター。 このパラメーターは省略可能です。 lpNumberOfBytesWrittenNULL の場合、パラメーターは無視されます。

戻り値

関数が成功すると、戻り値は 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

関連項目

デバッグ関数

デバッグ用 Process 関数

ReadProcessMemory

VirtualAllocEx