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 (零) 。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。 如果要求的寫入作業跨越無法存取的進程區域,函式就會失敗。
備註
WriteProcessMemory 會將目前進程中指定緩衝區的資料複製到指定進程的位址範圍。 任何具有具有PROCESS_VM_WRITE控制碼且PROCESS_VM_OPERATION存取要寫入之進程的進程,都可以呼叫 函式。 通常但不一定是正在寫入位址空間的進程正在偵錯。
要寫入的整個區域必須可供存取,如果無法存取,則函式會失敗。
需求
最低支援的用戶端 | Windows XP [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2003 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | memoryapi.h (包括 Windows.h) |
程式庫 | onecore.lib |
DLL | Kernel32.dll |