Funzione WriteProcessMemory (memoryapi.h)

Scrive i dati in un'area di memoria in un processo specificato. L'intera area in cui scrivere deve essere accessibile o l'operazione ha esito negativo.

Sintassi

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

Parametri

[in] hProcess

Handle per la memoria del processo da modificare. L'handle deve avere PROCESS_VM_WRITE e PROCESS_VM_OPERATION l'accesso al processo.

[in] lpBaseAddress

Puntatore all'indirizzo di base nel processo specificato in cui vengono scritti i dati. Prima del trasferimento dei dati, il sistema verifica che tutti i dati nell'indirizzo di base e nella memoria delle dimensioni specificate siano accessibili per l'accesso in scrittura e, se non sono accessibili, la funzione ha esito negativo.

[in] lpBuffer

Puntatore al buffer che contiene dati da scrivere nello spazio indirizzi del processo specificato.

[in] nSize

Numero di byte da scrivere nel processo specificato.

[out] lpNumberOfBytesWritten

Puntatore a una variabile che riceve il numero di byte trasferiti nel processo specificato. Questo parametro è facoltativo e, Se lpNumberOfBytesWritten è NULL, il parametro viene ignorato.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è 0 (zero). Per informazioni dettagliate sull'errore, chiamare GetLastError. La funzione ha esito negativo se l'operazione di scrittura richiesta si interseca in un'area del processo inaccessibile.

Commenti

WriteProcessMemory copia i dati dal buffer specificato nel processo corrente all'intervallo di indirizzi del processo specificato. Qualsiasi processo con handle con PROCESS_VM_WRITE e PROCESS_VM_OPERATION l'accesso al processo da scrivere può chiamare la funzione. In genere, ma non sempre, viene eseguito il debug del processo con spazio indirizzi in cui viene scritto.

L'intera area in cui scrivere deve essere accessibile e, se non è accessibile, la funzione ha esito negativo.

Requisiti

   
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione memoryapi.h (include Windows.h)
Libreria onecore.lib
DLL Kernel32.dll

Vedere anche

Funzioni di debug

Funzioni di processo per il debug

ReadProcessMemory

VirtualAllocEx