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 |