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"라는 이름을 사용해야 합니다.
커널 모드 드라이버의 호출의 경우 NtXxx 및 ZwXxx 버전의 Windows Native System Services 루틴은 입력 매개 변수를 처리하고 해석하는 방식으로 다르게 동작할 수 있습니다. NtXxxZwXxx 루틴 버전 간의 관계에 대한 자세한 내용은 네이티브 시스템 서비스 루틴 Nt 및 Zw 버전 사용참조하세요.
요구 사항
요구 | 값 |
---|---|
대상 플랫폼 | 보편적 |
헤더 | ntddk.h(Ntddk.h 포함) |
라이브러리 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI 규정 준수 규칙 | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |
참고 항목
네이티브 시스템 서비스 루틴 Nt 및 Zw 버전 사용