WriteProcessMemory-Funktion (memoryapi.h)

Schreibt Daten in einen Speicherbereich in einem angegebenen Prozess. Der gesamte Bereich, in den geschrieben werden soll, muss zugänglich sein, andernfalls schlägt der Vorgang fehl.

Syntax

BOOL WriteProcessMemory(
  [in]  HANDLE  hProcess,
  [in]  LPVOID  lpBaseAddress,
  [in]  LPCVOID lpBuffer,
  [in]  SIZE_T  nSize,
  [out] SIZE_T  *lpNumberOfBytesWritten
);

Parameter

[in] hProcess

Ein Handle für den zu ändernden Prozessspeicher. Das Handle muss über PROCESS_VM_WRITE und PROCESS_VM_OPERATION Zugriff auf den Prozess verfügen.

[in] lpBaseAddress

Ein Zeiger auf die Basisadresse im angegebenen Prozess, in den Daten geschrieben werden. Bevor die Datenübertragung erfolgt, überprüft das System, ob auf alle Daten in der Basisadresse und im Arbeitsspeicher der angegebenen Größe für den Schreibzugriff zugegriffen werden kann, und wenn nicht darauf zugegriffen werden kann, schlägt die Funktion fehl.

[in] lpBuffer

Ein Zeiger auf den Puffer, der Daten enthält, die in den Adressraum des angegebenen Prozesses geschrieben werden sollen.

[in] nSize

Die Anzahl der Bytes, die in den angegebenen Prozess geschrieben werden sollen.

[out] lpNumberOfBytesWritten

Ein Zeiger auf eine Variable, die die Anzahl der Bytes empfängt, die in den angegebenen Prozess übertragen werden. Dieser Parameter ist optional. Wenn lpNumberOfBytesWrittennull ist, wird der Parameter ignoriert.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ungleich Null.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert 0 (null). Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf. Die Funktion schlägt fehl, wenn der angeforderte Schreibvorgang in einen Bereich des Prozesses übergeht, auf den nicht zugegriffen werden kann.

Hinweise

WriteProcessMemory kopiert die Daten aus dem angegebenen Puffer im aktuellen Prozess in den Adressbereich des angegebenen Prozesses. Jeder Prozess, der über ein Handle mit PROCESS_VM_WRITE und PROCESS_VM_OPERATION Zugriff auf den Prozess verfügt, in den geschrieben werden soll, kann die Funktion aufrufen. In der Regel, aber nicht immer, wird der Prozess mit dem Adressraum, in den geschrieben wird, debuggt.

Der gesamte Bereich, in den geschrieben werden soll, muss zugänglich sein, und wenn er nicht zugänglich ist, schlägt die Funktion fehl.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile memoryapi.h (windows.h einschließen)
Bibliothek onecore.lib
DLL Kernel32.dll

Siehe auch

Debuggingfunktionen

Prozessfunktionen für das Debuggen

ReadProcessMemory

VirtualAllocEx