Поделиться через


Функция 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
Header memoryapi.h (включая Windows.h)
Библиотека onecore.lib
DLL Kernel32.dll

См. также

Функции отладки

Функции процессов для отладки

ReadProcessMemory

VirtualAllocEx