#ifndef _NTPSAPI_H
//
// Threads
//
#if (PHNT_MODE != PHNT_MODE_KERNEL)
/**
* Terminates the specified thread.
*
* \param ThreadHandle Optional. A handle to the thread to be terminated. If this parameter is NULL, the calling thread is terminated.
* \param ExitStatus The exit status to be used by the thread and the thread's termination status.
* \return NTSTATUS Successful or errant status.
* \remarks Requires THREAD_TERMINATE (0x1) for an ordinary thread handle. NULL and NtCurrentThread() have special
* current-thread behavior and must not be used for harmless negative testing. Termination does not run normal
* application cleanup; wait for the thread object when teardown completion matters, then close the handle.
*/
_Kernel_entry_
NTSYSCALLAPI
NTSTATUS
NTAPI
NtTerminateThread(
_In_opt_ HANDLE ThreadHandle,
_In_ NTSTATUS ExitStatus
);
View code on GitHub#ifndef _NTZWAPI_H
_Kernel_entry_
NTSYSCALLAPI
NTSTATUS
NTAPI
ZwTerminateThread(
_In_opt_ HANDLE ThreadHandle,
_In_ NTSTATUS ExitStatus
);
View code on GitHubForcefully terminates a thread.
ThreadHandle - an optional handle to a thread granting THREAD_TERMINATE access or the NtCurrentThread pseudo-handle. If this value is NULL, the calling thread is terminated.ExitStatus - the value to set as the exit status of the thread.STATUS_CANT_TERMINATE_SELF - indicates that a thread attempted to terminate itself by default (called NtTerminateThread with NULL) and it was the last thread in the current process.To exit the current thread gracefully, use RtlExitUserThread.
The thread object becomes signalled after termination.
Open handle to thread object.
Result of thread, as NTSTATUS.