Función TerminateProcess (processthreadsapi.h)

Finaliza el proceso especificado y todos sus subprocesos.

Sintaxis

BOOL TerminateProcess(
  [in] HANDLE hProcess,
  [in] UINT   uExitCode
);

Parámetros

[in] hProcess

Identificador del proceso que se va a finalizar.

El identificador debe tener el derecho de acceso PROCESS_TERMINATE . Para obtener más información, consulte Derechos de acceso y seguridad de procesos.

[in] uExitCode

El código de salida que va a usar el proceso y los subprocesos finalizan como resultado de esta llamada. Use la función GetExitCodeProcess para recuperar el valor de salida de un proceso. Use la función GetExitCodeThread para recuperar el valor de salida de un subproceso.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

La función TerminateProcess se usa para hacer que un proceso se cierre incondicionalmente. El estado de los datos globales mantenidos por bibliotecas de vínculos dinámicos (DLL) se puede poner en peligro si se usa TerminateProcess en lugar de ExitProcess.

Esta función detiene la ejecución de todos los subprocesos dentro del proceso y solicita la cancelación de todas las E/S pendientes. El proceso terminado no puede salir hasta que se hayan completado o cancelado todas las E/S pendientes. Cuando finaliza un proceso, su objeto kernel no se destruye hasta que todos los procesos que tienen identificadores abiertos en el proceso han liberado esos identificadores.

Cuando un proceso finaliza a sí mismo, TerminateProcess detiene la ejecución del subproceso que realiza la llamada y no devuelve. De lo contrario, TerminateProcess es asincrónico; inicia la finalización y devuelve inmediatamente. Si necesita asegurarse de que el proceso ha finalizado, llame a la función WaitForSingleObject con un identificador para el proceso.

Un proceso no puede impedir que se termine.

Una vez finalizado un proceso, se produce un error al llamar a TerminateProcess con identificadores abiertos al proceso con código de error ERROR_ACCESS_DENIED (5).

Requisitos

   
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado processthreadsapi.h (incluye Windows.h en Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

ExitProcess

GetExitCodeProcess

GetExitCodeThread

OpenProcess

Funciones de proceso y subproceso

Procesos

Terminación de un proceso

API de Vertdll disponibles en enclaves de VBS