Compartilhar via


Função WriteProcessMemory (memoryapi.h)

Grava os dados em uma área de memória em um processo especificado. Toda a área a ser gravada deve estar acessível ou a operação falhará.

Sintaxe

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

Parâmetros

[in] hProcess

Um identificador para a memória do processo a ser modificada. O identificador deve ter acesso PROCESS_VM_WRITE e PROCESS_VM_OPERATION ao processo.

[in] lpBaseAddress

Um ponteiro para o endereço base no processo especificado no qual os dados são gravados. Antes que a transferência de dados ocorra, o sistema verifica se todos os dados no endereço base e na memória do tamanho especificado estão acessíveis para acesso de gravação e, se não estiverem acessíveis, a função falhará.

[in] lpBuffer

Um ponteiro para o buffer que contém dados a serem gravados no espaço de endereço do processo especificado.

[in] nSize

O número de bytes a serem gravados no processo especificado.

[out] lpNumberOfBytesWritten

Um ponteiro para uma variável que recebe o número de bytes transferidos para o processo especificado. Esse parâmetro é opcional. Se lpNumberOfBytesWritten for NULL, o parâmetro será ignorado.

Valor retornado

Se a função for bem-sucedida, o valor retornado será diferente de zero.

Se a função falhar, o valor retornado será zero (0). Para obter informações de erro estendidas, chame GetLastError. A função falhará se a operação de gravação solicitada cruzar para uma área do processo que está inacessível.

Comentários

WriteProcessMemory copia os dados do buffer especificado no processo atual para o intervalo de endereços do processo especificado. Qualquer processo que tenha um identificador com PROCESS_VM_WRITE e PROCESS_VM_OPERATION acesso ao processo a ser gravado pode chamar a função. Normalmente, mas nem sempre, o processo com espaço de endereço que está sendo gravado está sendo depurado.

Toda a área a ser gravada deve estar acessível e, se não estiver acessível, a função falhará.

Requisitos

   
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho memoryapi.h (inclua Windows.h)
Biblioteca onecore.lib
DLL Kernel32.dll

Confira também

Funções de depuração

Processar as funções para depuração

ReadProcessMemory

VirtualAllocEx