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 |