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 |