Функция WriteProcessMemory пишет данные области памяти в заданном процессе. Вся область, чтобы записаться, должна быть доступна, или операция завершается ошибкой.
Синтаксис
BOOL WriteProcessMemory( HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T* lpNumberOfBytesWritten ); |
Параметры
hProcess
[in] Дескриптор процесса, память которого должна модифицироваться. Дескриптор должен иметь доступ к процессу PROCESS_VM_WRITE и PROCESS_VM_OPERATION.lpBaseAddress
[in] Указатель на базовый адрес в заданном процессе, в который должны быть записаны данные. Прежде, чем происходит какая-либо передача данных, система проверяет, что все данные в базовом адресе и в заданном размере памяти доступны для записи. Если дело обстоит так, то функция приступает к работе; в противном случае, функция завершается ошибкой.lpBuffer
[in] Указатель на буфер, который содержит записываемые данные в адресном пространстве заданного процесса.nSize
[in] Число байтов, записываемых в заданном процессе.lpNumberOfBytesWritten
[out] Указатель на переменную, которая получает число байтов, переданное в указанный процесс. Этот параметр дополнительный. Если lpNumberOfBytesWritten - ПУСТО (NULL), этот параметр игнорируется.Возвращаемые значения
Если функция завершается успешно, возвращаемое значение не нуль.
Если функция завершается ошибкой, возвращаемое значение равняется нулю. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError. Функция завершится ошибкой, если затребованная операция записи пересекается с областью процесса, которая является недоступной.
Замечания
WriteProcessMemory копирует данные из указанного буфера в текущем процессе в область адреса заданного процесса. Любой процесс, который имеет дескриптор с доступом к процессу PROCESS_VM_WRITE и PROCESS_VM_OPERATION, чтобы записать в него, может вызвать функцию. Процесс, адресное пространство которого записывается - обычно, но не обязательно, отлаживается.
Вся область, в которую будет производится запись, должна быть доступна. Если это не так, функция завершается ошибкой, как отмечено выше.
Смотри также
Обзор Основы отладки, Функции, используемые при отладке, ReadProcessMemory
Размещение и совместимость WriteProcessMemory |
||
К |
Windows XP |
Да |
л |
Windows 2000 Professional |
Да |
и |
Windows NT Workstation |
Да |
е |
Windows Me |
Да |
н |
Windows 98 |
Да |
т |
Windows 95 |
Да |
С |
Windows Server 2003 |
Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да |
в | ||
е | ||
р | ||
Используемая библиотека |
Kernel32.lib |
|
Используемая DLL | kernel32.dll | |
Заголовочный файл | ||
- объявлено в |
Winbase.h |
|
- включено в |
Windows.h |
|
Unicode |
Нет |
|
Замечания по платформе |
Не имеется |