Compartilhar via


Função OpenProcess (processthreadsapi.h)

Abre um objeto de processo local existente.

Sintaxe

HANDLE OpenProcess(
  [in] DWORD dwDesiredAccess,
  [in] BOOL  bInheritHandle,
  [in] DWORD dwProcessId
);

Parâmetros

[in] dwDesiredAccess

O acesso ao objeto de processo. Esse direito de acesso é verificado no descritor de segurança do processo. Esse parâmetro pode ser um ou mais dos direitos de acesso do processo.

Se o chamador tiver habilitado o privilégio SeDebugPrivilege, o acesso solicitado será concedido independentemente do conteúdo do descritor de segurança.

[in] bInheritHandle

Se esse valor for TRUE, os processos criados por esse processo herdarão o identificador. Caso contrário, os processos não herdam esse identificador.

[in] dwProcessId

O identificador do processo local a ser aberto.

Se o processo especificado for o Processo Ocioso do Sistema (0x00000000), a função falhará e o último código de erro será ERROR_INVALID_PARAMETER. Se o processo especificado for o processo do Sistema ou um dos processos do CSRSS (Client Server Run-Time Subsystem), essa função falhará e o último código de erro será ERROR_ACCESS_DENIED porque suas restrições de acesso impedem que o código no nível do usuário os abra.

Se você estiver usando GetCurrentProcessId como um argumento para essa função, considere usar GetCurrentProcess em vez de OpenProcess para melhorar o desempenho.

Retornar valor

Se a função for bem-sucedida, o valor retornado será um identificador aberto para o processo especificado.

Se a função falhar, o valor retornado será NULL. Para obter informações de erro estendidas, chame GetLastError.

Comentários

Para abrir um identificador para outro processo local e obter direitos de acesso completos, você deve habilitar o privilégio SeDebugPrivilege. Para obter mais informações, consulte Alterando privilégios em um token.

O identificador retornado pela função OpenProcess pode ser usado em qualquer função que exija um identificador para um processo, como as funções de espera, desde que os direitos de acesso apropriados tenham sido solicitados.

Quando terminar de usar o identificador, feche-o usando a função CloseHandle .

Exemplos

Para obter um exemplo, consulte Tomando um instantâneo e exibindo processos.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho processthreadsapi.h (inclua Windows.h no Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

AssignProcessToJobObject

CloseHandle

CreateProcess

CreateRemoteThread

DuplicateHandle

GetCurrentProcess

GetCurrentProcessId

Getexitcodeprocess

GetModuleFileNameEx

GetPriorityClass

Funções de thread e processo

Processos

ReadProcessMemory

SetPriorityClass

SetProcessWorkingSetSize

TerminateProcess

VirtualProtectEx

WriteProcessMemory