请输入您要查询的百科知识:

 

词条 NtTerminateProcess
释义

NtTerminateProcess:

这是一个Windows的关闭程序的函数,级别属于内核级,大多数的程序都使用这个函数来实现关闭程序

也许你使用的是TerminateProcess,但是TerminateProcess是通过调用NtTerminateProcess来实现关闭程序的

函数原型:

C/C++:

NtTerminateProcess(

IN HANDLE ProcessHandle OPTIONAL,

IN NTSTATUS ExitStatus);

VB:

Declare Function NtTerminateProcess Lib "ntdll" (ByVal hProc As Long, ByVal ExitCode As Long) As Long

参数意义:

ProcessHandle : 进程的句柄,要用OpenProcess来获得

ExitStatus:退出代码

函数之间的调用:

TerminateProcess ->NtTerminateProcess ->ZwTerminateProcess

有时候,TerminateProcess 不能完全地结束一个进程,但是NtTerminateProcess 可以,ZwTerminateProcess 是基于内核驱动来关闭进程的.

C++的一个简单示例:

#include <windows.h>

#include <stdio.h>

typedef DWORD (__stdcall *NtTerminateProcess)(HANDLE,UINT);

NtTerminateProcess fNtTerminateProcess=NULL;

BOOL ExitProc(HANDLE hProc)

{

HINSTANCE hModule=LoadLibrary("ntdll.dll"); //加载 ntdll.dll

if(hModule!=0)

{

fNtTerminateProcess=(NtTerminateProcess)GetProcAddress(hModule,"NtTerminateProcess"); //加载外部DLL函数

HANDLE hToken=OpenProcess(PROCESS_ALL_ACCESS,FALSE,(DWORD)hProc); //获得进程的最大权限

if(hToken!=0){ if(fNtTerminateProcess(hToken,1)==0) //关闭程序

{

printf("End Proc:%d\",(int)hProc);

return TRUE;

}

else

{

return FALSE;

}

}

return FALSE;

}

VB的一个简单示例:

Private Const PROCESS_ALL_ACCESS = &H1F0FFF '全权打开进程

Private Function GetMaxPrivilegeToProcess(ByVal ProcessID As Long) As Long

GetMaxPrivilegeToProcess = OpenProcess(PROCESS_ALL_ACCESS, False, ProcessID)

End Function

Public Function ExitProc(ByVal PID As Long) As Boolean

If NtTerminateProcess(PID, 1) = 0 Then

ExitProc = True

Else

ExitProc = False

End If

End Function

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/1/11 3:39:51