Função TerminateProcess (processthreadsapi.h)
Encerra o processo especificado e todos os seus threads.
Sintaxe
BOOL TerminateProcess(
[in] HANDLE hProcess,
[in] UINT uExitCode
);
Parâmetros
[in] hProcess
Um identificador para o processo a ser encerrado.
O identificador deve ter o acesso de PROCESS_TERMINATE correto. Para obter mais informações, consulte Direitos de Acesso e Segurança do Processo.
[in] uExitCode
O código de saída a ser usado pelo processo e os threads encerrados como resultado dessa chamada. Use a função GetExitCodeProcess para recuperar o valor de saída de um processo. Use a função GetExitCodeThread para recuperar o valor de saída de um thread.
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. Para obter informações de erro estendidas, chame GetLastError.
Comentários
A função TerminateProcess é usada para fazer com que um processo seja encerrado incondicionalmente. O estado dos dados globais mantidos por DLLs (bibliotecas de vínculo dinâmico) pode ser comprometido se TerminateProcess for usado em vez de ExitProcess.
Essa função interrompe a execução de todos os threads dentro do processo e solicita o cancelamento de todas as E/S pendentes. O processo encerrado não poderá sair até que toda e/S pendente seja concluída ou cancelada. Quando um processo é encerrado, seu objeto kernel não é destruído até que todos os processos que têm identificadores abertos para o processo liberem esses identificadores.
Quando um processo é encerrado, TerminateProcess interrompe a execução do thread de chamada e não retorna. Caso contrário, TerminateProcess será assíncrono; ele inicia o encerramento e retorna imediatamente. Se você precisar ter certeza de que o processo foi encerrado, chame a função WaitForSingleObject com um identificador para o processo.
Um processo não pode impedir que ele seja encerrado.
Depois que um processo for encerrado, a chamada para TerminateProcess com identificadores abertos para o processo falhará com ERROR_ACCESS_DENIED (5) código de erro.
Requisitos
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 |