Blob Blame History Raw
/*****************************************************************************/
/*  pemagination: a (virtual) tour into portable bits and executable bytes   */
/*  Copyright (C) 2013--2017  Z. Gilboa                                      */
/*  Released under GPLv2 and GPLv3; see COPYING.PEMAGINE.                    */
/*****************************************************************************/

#include <psxtypes/psxtypes.h>
#include <pemagine/pemagine.h>
#include "pe_os.h"

int32_t pe_terminate_current_process(int32_t estatus)
{
	void *				hntdll;
	os_zw_terminate_process *	zw_terminate_process;

	/* init */
	if (!(hntdll = pe_get_ntdll_module_handle()))
		return OS_STATUS_INTERNAL_ERROR;

	if (!(zw_terminate_process = (os_zw_terminate_process *)pe_get_procedure_address(
			hntdll,"ZwTerminateProcess")))
		return OS_STATUS_INTERNAL_ERROR;

	return zw_terminate_process(
		OS_CURRENT_PROCESS_HANDLE,
		estatus);
}