ZwTerminateProcess 함수(ntddk.h)

ZwTerminateProcess 루틴은 프로세스와 모든 스레드를 종료합니다.

구문

NTSYSAPI NTSTATUS ZwTerminateProcess(
  [in, optional] HANDLE   ProcessHandle,
  [in]           NTSTATUS ExitStatus
);

매개 변수

[in, optional] ProcessHandle

종료할 프로세스를 나타내는 프로세스 개체에 대한 핸들입니다.

[in] ExitStatus

운영 체제가 프로세스 및 각 스레드에 대한 최종 상태 사용하는 NTSTATUS 값입니다.

반환 값

작업이 성공하면 ZwTerminateProcess는 STATUS_SUCCESS 반환합니다. 추가 반환 값은 다음과 같습니다.

반환 코드 설명
STATUS_OBJECT_TYPE_MISMATCH 지정된 핸들이 프로세스 핸들이 아닙니다.
STATUS_INVALID_HANDLE 지정한 핸들이 잘못되었습니다.
STATUS_ACCESS_DENIED 드라이버는 지정된 프로세스 개체에 액세스할 수 없습니다.
STATUS_PROCESS_IS_TERMINATING 지정한 프로세스가 이미 종료되고 있습니다.

호출자가 ProcessHandle 매개 변수의 현재 프로세스를 지정하는 경우 ZwTerminateProcess 는 반환되지 않습니다.

설명

드라이버가 ProcessHandle 매개 변수에 대해 지정할 수 있는 프로세스 핸들을 가져오기 위해 드라이버는 ZwOpenProcess를 호출할 수 있습니다. 핸들은 커널 핸들이어야 하며 커널 모드에서만 액세스할 수 있는 핸들이어야 합니다. 핸들은 OBJ_KERNEL_HANDLE 플래그를 사용하여 만든 경우 커널 핸들입니다. 자세한 내용은 InitializeObjectAttributes를 참조하세요.

운영 체제가 호출 스레드에 대한 커널 스택을 해제하지 않으므로 리소스가 커널 스택에서 해제되지 않은 경우 드라이버는 현재 프로세스를 지정하지 않아야 합니다.

이 함수에 대한 호출이 사용자 모드에서 발생하는 경우 "ZwTerminateProcess" 대신 "NtTerminateProcess"라는 이름을 사용해야 합니다.

커널 모드 드라이버에서 호출하는 경우 Windows 네이티브 시스템 서비스 루틴의 NtXxxZwXxx 버전은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. 루틴의 NtXxx 버전과 ZwXxx 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용을 참조하세요.

요구 사항

요구 사항
대상 플랫폼 유니버설
헤더 ntddk.h(Ntddk.h 포함)
라이브러리 NtosKrnl.lib
DLL NtosKrnl.exe
IRQL PASSIVE_LEVEL
DDI 규정 준수 규칙 HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm)

추가 정보

네이티브 시스템 서비스 루틴의 Nt 및 Zw 버전 사용

ZwOpenProcess