windowsNt内核函数大全

合集下载

《Windows驱动开发技术详解》之Windows内核函数

《Windows驱动开发技术详解》之Windows内核函数

《Windows驱动开发技术详解》之Windows内核函数内核模式下字符串操作ANSI_STRING和UNICODE_STRING分别定义如下:以UnicodeString类型对象进⾏初始化为例,代码如下:输出:进⾏复制字符串操作,代码如下:输出:但是如果这⾥改为:加载驱动运⾏就会蓝屏。

Why?其实,RltFreeUnicodeString是⽤来释放利⽤申请的堆空间初始化的UnicodeString类型对象的,⽽RtlInitUnicodeString对UniStr1进⾏初始化时,只是让Buffer指向了⼀个常量区。

进⾏ANSI_STRING字符串与UNICODE_STRING字符串相互转换操作,代码如下:注意这⾥要利⽤RtlFreeUnicodeString释放通过RtlAnsiStringToUnicodeString得到的UniStr2。

为什么这个需要释放?我们利⽤Windbg跟踪下代码。

⾸先,跟踪时要逐⼀,这⾥的勾如果不去掉,就是在源码下单步跟踪,⽽不是在汇编指令⾥单步跟踪:在RtlUnicodeStringToAnsiString函数中,有这么⼀个系统API此时的参数是正好是传⼊的字节数的⼤⼩。

⽽这个API最终调⽤了:所以,我们要利⽤RtlFreeUnicodeString进⾏释放。

内核模式下的⽂件操作:创建⽂件:代码⼊下:1 VOID FILEOPERATION(){2 OBJECT_ATTRIBUTES ObjAttributes;3 IO_STATUS_BLOCK iostatus;4 HANDLE hfile;5 UNICODE_STRING logFileUnicodeString;67 RtlInitUnicodeString(&logFileUnicodeString, L"\\??\\C:\\1.log");8 InitializeObjectAttributes(&ObjAttributes,9 &logFileUnicodeString,10 OBJ_CASE_INSENSITIVE,11 NULL,12 NULL);13//创建⽂件14 NTSTATUS status = ZwCreateFile(&hfile, GENERIC_WRITE,15 &ObjAttributes,16 &iostatus,17 NULL,18 FILE_ATTRIBUTE_NORMAL,19 FILE_SHARE_READ,20 FILE_OPEN_IF,//这⾥是FILE_OPEN_IF则不论⽂件是否存在都可以Create成功,⽽如果改为FILE_OPEN,则只当⽂件存在时create成功。

windows函数大全-应用

windows函数大全-应用

Windows API函数大全(1)Windows API函数大全(2)Windows API函数应用实例----利用Windows API函数和注册表获取系统信息(Delphi 程序实例)(3)VB中调用Windows API函数检测当前系统环境(VB 程序实例)(4)实用的windows API函数一、Windows API函数大全1)网络函数2)消息函数3)文件处理函数4)打印函数5)文本和字体函数6)菜单函数7)位图、图标和光栅运算函数8)绘图函数9)设备场景函数10)硬件与系统函数11)进程和线程函数12)控件与消息函数1.Windows API----网络函数WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接WNetCancelConnection2 结束一个网络连接WNetCloseEnum 结束一次枚举操作WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接WNetEnumResource 枚举网络资源WNetGetConnection 获取本地或已连接的一个资源的网络名称WNetGetLastError 获取网络错误的扩展错误信息WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC(统一命名规范)名称WNetGetUser 获取一个网络资源用以连接的名字WNetOpenEnum 启动对网络资源进行枚举的过程2. Windows API----消息函数BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置GetMessageTime 取得消息队列中上一条消息处理完毕时的时间PostMessage将一条消息投递到指定窗口的消息队列PostThreadMessage 将一条消息投递给应用程序RegisterWindowMessage 获取分配给一个字串标识符的消息编号ReplyMessage 答复一个消息SendMessage调用一个窗口的窗口函数,将一条消息发给那个窗口SendMessageCallback 将一条消息发给窗口SendMessageTimeout 向窗口发送一条超时消息SendNotifyMessage 向窗口发送一条消息3.Windows API----文件处理函数(windows将网卡、串口等硬件设备当作文件对待)CloseHandle关闭一个内核对象。

WindowsNT40内核模式驱动程序中浮点运算的实现

WindowsNT40内核模式驱动程序中浮点运算的实现

Windows NT 4.0内核模式驱动程序中浮点运算的实现MicrocomputerApplicationsV o1.18,No.11,2002技术交流微型电脑应用2002年第l8卷第1l期WindowsNT4.0内核模式驱动程序中浮点运算的实现廖小勇冯志彪摘要Windows操作系统是当前测控软件发展的主流操作系统.在WindowsNT操作系统中,内核模式驱动程序作为操作系统的一个信任部分,运行于WindowsNT的内核模式.但是,WindowsNT4.0内核模式不支持浮点运算,本文将就此问题,探讨如何在WindowsNT4.0内核模式驱动程序中实现浮点运算.关键词WindowsNT操作系统用户模式内核模式驱动程序浮点运算一,WindowsNT操作系统的结构目前,Windows环境下测控软件的发展在国外方兴未艾,例如LabView,RealTime等着名软件,它们都因为人机界面的形象直观,操作简单方便等特点,而在软件市场具有着较强的竞争力【1].而WindowsNT4.0操作系统由于其可靠性好,安全性高等优点[2][,已经成为工业控制领域中在PC机上进行应用程序开发的主流操作系统,例如在机器人控制领域也有着成功的应用[4].与所有其他商业操作系统一样,WindowsNT是理想化的目标与推动市场运转的现实相互作用的结果.WindowsNT的设计目标是[5]:兼容性:该操作系统应该支持大量已经存在的软件和遗留的硬件.坚固性和可靠性:该操作系统应该能够经受用户的无意或者有意的攻击,而且各个应用程序应该尽可能地独立.可移植性:该操作系统应该能够增加新的功能和支持新的I/o设备,而不用涉及现有的代码基.性能:该操作系统应该能够在常用的硬件上提供合理的性能,还应该利用如多处理器这样的功能部件. WindowsNT系统是建立在Math以及V ax思想之上的一种客户/服务器模型操作系统,由一个特权执行体以及一系列被称为保护子系统的非特权服务器组成.整个操作系统被分为用户模式及内核模式,如图l所示.所谓特权,是指CPU的操作方式,大多数的处理器都有一种甚至若干种特权方式.在特权方式下,所有机器指令都可执行并且系统内存可存取.在非特权方式下,某些机器指令不能执行并且系统内存不可存取.在WindowsNT下,内核模式就是指处于特权处理器方式下,而用户模式总处于非特权处理器方式下.ProtectedSubsystems④④\,\.一r…'④@图lWindowsNT操作系统的结构内核模式又被称为WindowsNT执行体,包括了系统服务以及硬件抽象层(HAL),它们运行于CPU的特权层Ring0.系统服务包含了一个操作系统的所有应用服务,文件系统,进程控制,内存管理,设备管理等等.WindowsNT中除了微内核外,另外还包含了一些独特的部分,如对象管理器,配置管理器,执行体支持,本地过程调用,安全监视器,所有这些都建立在HAL之上.I/o管理器实现对设备的管理,包含了文件系统,中间介质以及设备驱动.通过HAL,WindowsNT可以防止内核以及WindowsNT执行体的其它部分受硬件平台不同的影响;另外WindowsNT还将网络管理器加入了内核模式..用户模式包括了一些保护子系统,如0S/2子系统,PoSIX子系统,安全子系统,当然还有最常用的Win32子系统,WindowsNT都称之为服务器.它们运行于CPU的用户层Ring3,建立在服务器上的各类应用程序被称为客户.二,WindowsNT操作系统中的驱动程序在WindowsNT系统中包括两种基本类型的驱动程序:用户模式驱动程序以及内核模式驱动程序.前者运行于用户层Ring3,后者运行于特权层Ring0.廖小勇上海市同济大学电子与信息工程学院信息与控制工程系博士研究生上海200092冯志彪上海市同济大学电子与信息工程学院信息与控制工程系教授上海200092 58MicrocomputerApplicationsV o1.18,No.11,2002技术交流微型电脑应用2002年第l8卷第11期用户模式驱动程序包括Win32多媒体驱动程序,支持MS--DOS应用程序的虚拟设备驱动程序(VDD)以及其它保护子系统的驱动程序等;用户模式驱动程序是一种特殊的子系统.内核模式驱动程序有针对逻辑的,虚拟的以及物理的设备,通常被称之为NT式驱动程序,它们是WindowsNT执行体的一部分;所谓新技术NT(NewTechnology)以及基于微内核的操作系统,就是指能支持一个或多个保护子系统.NT式驱动程序是基于以下目标设计的:可移植性,硬件和软件可配置性,总是抢占和可中断的,在多处理平台上的安全性,基于对象,可重用的I/O请求包,支持异步传输.由于NT式驱动程序运行于内核模式,所以NT式驱动程序只能使用系统所提供的内核模式运行库(形如RtlXxx的内核模式例程),文件系统驱动程序还可以使用文件系统的运行库(形如FsRtIXxx的内核模式例程);在WindowsNT内核模式不支持浮点运算.大部分WindowsNT组件都用C语言编写,只有一小部分硬件抽象层(HAL)和内核代码基于效率的原因用汇编语言编写.NT式驱动程序同样也是使用c语言编写,这样可以在不同平台上保证源代码级兼容.NT式驱动程序开发者不能使用系统不支持的C运行库,所以最好使用ANSIC标准运行库.如上所述,由于WindowsNT内核模式不支持浮点运算,所以当我们需要在WinowsNT内核模式驱动程序中进行浮点运算时,我们必须严格遵守相应的规则,以保证系统的稳定性.本文以下将就此问题进行详细的探讨.三,WindowsNT内核模式驱动程序中浮点运算的使用规则I.驱动程序的运行环境WindowsNT操作系统是一个多任务操作系统,在系统中有许多个线程同时运行,它们共享系统CPU以及浮点单元(FPU)等;因此,任何线程在使用系统CPU以及浮点单元时必须确保不影响其他线程的使用状态,也就是说,任何线程在结束使用系统CPU以及浮点单元之后必须将它们恢复到使用之前的原始状态.另外,WindowsNT内核模式驱动程序是基于I/O请求包驱动的,在同一时刻可能有任意个用户模式线程向该驱动程序发出I/O请求,驱动程序必须考虑到这种情况并且进行正确地处理.因此,驱动程序可能运行在任意的用户线程环境中,由此驱动程序代码必须确保具有可重入性.根据以上讨论,当驱动程序进行浮点运算时,它必须访问相应的浮点单元;对于驱动程序来说,在使用浮点单元之前, 它必须将此浮点单元初始化到一个确定的初始状态,以保证浮点运算结果的正确性以及满足相应的精度;同时在使用之前驱动程序还需要保存此浮点单元的原始状态,以便该驱动程序在结束使用该浮点单元之后,再将此浮点单元的状态恢复到使用之前的原始状态,由此确保系统其他线程正确稳定地运行.2.浮点单元的保存以及恢复WindowsNT4.0操作系统提供了两个并未公开发丰的内核模式例程,它们分别为:KeSaveFloatingPointState以及KeRestoreFloatingPointState,这两个例程在MicrosoftDDK forwindowsNT4.0文档中并未公开发布,它们的原型分别如下所示:NTSTA TUSKeSaveFloatingPointState(KFLOATING—SA—V A);NTSTA TUSKeRestoreFloatingPointState(KFLOATING—SA VE*);其中,KFLOA TING—SAVE是一个内核结构,驱动程序在调用以上两个内核模式例程时必须分配一个如KFLOAT—ING—SA VE内核结构大小的缓冲区,分别用于保存以及恢复有关寄存器状态等.当驱动程序需要进行浮点运算时,它必须首先调用Ke—saveFloatingPointstate内核例程,然后再进行相应的浮点运算,最后再调用KeRestoreFloatingPointState内核例程.相关代码结构如下所示://Allocatebufferbythedriver.KFLOA TING—SAVEsaveData;//Definethereturncode;NTSTA TUSStatus://Trytosavethefloating--pointstate. Status—KeSaveFloatingPointState(&saveData);//Makesurethatthereisnoerror.if(NT—SUCCESS(Status)){//Herefloating--pointcomputationcanbedone! KeRestoreFloatingPointState(~y.saveData))其中,KeSaveFloatingPointState内核例程的功能为:保存有关寄存器(如STO—ST7,MMXO—MMX7以及XMM10--XMM17等)状态初始化浮点单元KeRestoreFloatingPointState内核例程的功能为:恢复由KeSaveFloatingPointState内核例程所保存的有关寄存器状态.必须说明的是:以上两个内核例程的调用必须满足IRQL口DISPATCH—LEVEL.IRQL即中断请求级,它是由WindowsNT操作系统所定义的;它定义了系统CPU当前活动的重要性,IRQL越高,则表明系统CPU执行当前任务的重要性也越大.(下转第62页)59?MicrocomputerApplicationsV o1.18,No.11.2002技术交流擞型电脑应用2002年第l8卷第ll期CASE9Is—Message="验证口令"CASE10Is—Message一验证工程"CASE12Is—Message一"验证连接速度"CASE13Is—Message一"重新验证"CASE14is—Message一"通过验证CASE15Is—Message一准备收回"CASE16is—Message一ODEM初始化CASE17Is—Message一"等待收回CASE8192Is—Message=连接成功"ENDCH00SERETURN(Is—Message)(6)函数If—errortext()/*功能:将错误号转换文本,无参数返回:string类型,返回错误文本*/stringIs—Errorls—Error='错误号是:"+String(oi—error—number)+"(请查找出错原因)RETURNIs—Error5.编写脚本(1)在窗口中定义变量:UO—rasiuo—ras写下如下script: iuo—ras—createUO—ras(2)按钮cb—dial的clicked事件脚本:integerli—retli—ret—iuo—ras.Lf—dial(sle—telephone.text,sle—user—name.text,sle—password,handle(parent))ifli—ret<>OthenMessagebox("Dialerror",If—errortext(1i—ret),Stop—Sign!)endif(3)按钮cb—hangup的clicked事件脚本:li_hangup()(4)按钮cb~close的clicked事件脚本:close(parent)(5)窗口的open事件脚本ii-rasmessage=If—getmessage()6.调试运行应用程序运行该远程登录窗口.即可以通过拨号实现远程登录参考文献[1]张长富等,PowerBuilder6.0用户参考手册,北京:北京希望电子出版社[2]PowerBuilderversion6.0onlinebooks,1998(收稿日期:2002年4月28E1)(上接第59页)WindowsNT使用特定类型CPU所提供的机制来实现IRQL 模型.当一个中断到达系统CPU时,系统CPU比较请求中断的IRQL值与系统CPU的当前IRQL值:如果请求中断的IRQL值等于或者小于系统CPU当前的IRQL值,则该中断请求被忽略;否则,系统CPU的当前活动将被中断.另外,驱动程序在每次调用KeSaveF1oatingPointstate内核例程之后,都必须检查该内核例程的返回值,确保在此次内核例程调用过程中没有发生任何错误之后,驱动程序才能进行相应的浮点运算;否则,驱动程序就不能进行任何浮点运算.例如:当系统内存不足时,KeSaveFIoatingPointState内核例程调用将可能发生错误,此时,驱动程序就不能进行浮点运算.四,结论本文主要讨论了在WindowsNT4.0操作系统内核模式驱动程序中浮点运算的实现规则以及有关的注意事项,并给出了相关的代码实现结构.按照以上所讨论的浮点运算实现62?规则,作者在WindowsNT4.0操作系统内核模式驱动程序中成功地实现了相应的浮点运算.参考文献[1]吴奇,范大鹏,彭丽,"WindowsNT下设备驱动程序的开发",计算机系统应用.J999年第6期,第59~61页[2]K.Dallas,"WindowsNT4.0",LANMagazine,V o1.4,Iss.11,pp.23—4,Nov.1996[33T.Y ager."WindowsNTsecurity",UnixReview,V ol,15,Iss9,PP.25—6,28,3O,32,34,Aug.1997[43A.Mertin,P.Sieverding,"RobotcontrolundertheWin—dowsNTcomputeroperatingsystem,Elektronik,v0I_47,Iss.8,PP.118,12O一2,Apr.1998IS]ArtBaker着,科欣翻译组译,"WindowsNT设备驱动程序设计指南",机械工业出版社,1997年12月(收稿日期:2001年12月24日)。

WindowsAPI函数大全(API之进程和线程函数)

WindowsAPI函数大全(API之进程和线程函数)

WindowsAPI函数大全(API之进程和线程函数)API之进程和线程函数CancelWaitableTimer 这个函数用于取消一个可以等待下去的计时器操作CallNamedPipe 这个函数由一个希望通过管道通信的一个客户进程调用ConnectNamedPipe 指示一台服务器等待下去,直至客户机同一个命名管道连接CreateEvent 创建一个事件对象CreateMailslot 创建一个邮路。

返回的句柄由邮路服务器使用(收件人)CreateMutex 创建一个互斥体(MUTEX)CreateNamedPipe 创建一个命名管道。

返回的句柄由管道的服务器端使用CreatePipe 创建一个匿名管道CreateProcess 创建一个新进程(比如执行一个程序)CreateSemaphore 创建一个新的信号机CreateWaitableTimer 创建一个可等待的计时器对象DisconnectNamedPipe 断开一个客户与一个命名管道的连接DuplicateHandle 在指出一个现有系统对象当前句柄的情况下,为那个对象创建一个新句柄ExitProcess 中止一个进程FindCloseChangeNotification 关闭一个改动通知对象FindExecutable 查找与一个指定文件关联在一起的程序的文件名FindFirstChangeNotification 创建一个文件通知对象。

该对象用于监视文件系统发生的变化FindNextChangeNotification 重设一个文件改变通知对象,令其继续监视下一次变化FreeLibrary 释放指定的动态链接库GetCurrentProcess 获取当前进程的一个伪句柄GetCurrentProcessId 获取当前进程一个唯一的标识符GetCurrentThread 获取当前线程的一个伪句柄GetCurrentThreadId 获取当前线程一个唯一的线程标识符GetExitCodeProces 获取一个已中断进程的退出代码GetExitCodeThread 获取一个已中止线程的退出代码GetHandleInformation 获取与一个系统对象句柄有关的信息GetMailslotInfo 获取与一个邮路有关的信息GetModuleFileName 获取一个已装载模板的完整路径名称GetModuleHandle 获取一个应用程序或动态链接库的模块句柄GetPriorityClass 获取特定进程的优先级别GetProcessShutdownParameters 调查系统关闭时一个指定的进程相对于其它进程的关闭早迟情况GetProcessTimes 获取与一个进程的经过时间有关的信息GetProcessWorkingSetSize 了解一个应用程序在运行过程中实际向它交付了多大容量的内存GetSartupInfo 获取一个进程的启动信息GetThreadPriority 获取特定线程的优先级别GetTheardTimes 获取与一个线程的经过时间有关的信息GetWindowThreadProcessId 获取与指定窗口关联在一起的一个进程和线程标识符LoadLibrary 载入指定的动态链接库,并将它映射到当前进程使用的地址空间LoadLibraryEx 装载指定的动态链接库,并为当前进程把它映射到地址空间LoadModule 载入一个Windows应用程序,并在指定的环境中运行MsgWaitForMultipleObjects 等侯单个对象或一系列对象发出信号。

createthread函数用法

createthread函数用法

createthread函数用法CreateThread函数用于在Windows系统中创建一个新线程,并返回新线程的句柄。

它主要是封装了内核函数NtCreateThread(),调用CreateThread时会创建一个新线程,并将新线程中所有上下文相关的操作都存储在一个栈中。

CreateThread函数的原型是:HANDLE CreateThread(LPSECURITY_ATTRIBUTES lpThreadAttributes,SIZE_T dwStackSize,LPTHREAD_START_ROUTINE lpStartAddress,LPVOID lpParameter,DWORD dwCreationFlags,LPDWORD lpThreadId);参数:1、lpThreadAttributes:Security 与线程属性相关的参数,可以设置线程的安全性。

2、dwStackSize:线程栈大小,如果为0,就使用操作系统默认的大小,一般都不设置。

3、lpStartAddress:线程的主函数的地址,即新建线程的入口函数,此函数的原型为DWORD WINAPI ThreadFunc(LPVOID lparam)。

4、lpParameter:指向线程函数的参数的指针,可以是任意类型的参数指针。

5、dwCreationFlags:线程的表现形式,可以设置为CREATE_SUSPEND或者CREATE_BREAKAWAY_FROM_JOB或者建立多个线程时的设置。

6、lpThreadId:用来接收新建线程的id。

通过CreateThread函数可以很方便地创建新线程,但是要注意新建线程的函数原型必须是DWORD WINAPI ThreadFunc(LPVOID lparam) ,其中lparam指向函数的参数类型可以为任意类型,且线程函数必须返回一个DWORD类型的数据,并且在线程结束之后也必须返回此类型数据。

ssdt内置函数

ssdt内置函数

ssdt内置函数
在SSDT(系统服务描述表)中,有数百个内置函数可用于实现系统调用。

以下是一些常见的SSDT内置函数:
1. NtCreateFile:创建或打开一个文件。

2. NtOpenProcess:打开一个已存在的进程。

3. NtCreateProcess:创建一个新进程。

4. NtTerminateProcess:终止一个进程。

5. NtAllocateVirtualMemory:分配虚拟内存。

6. NtFreeVirtualMemory:释放虚拟内存。

7. NtProtectVirtualMemory:修改虚拟内存的访问权限。

8. NtCreateThread:创建一个新线程。

9. NtWriteFile:写入文件数据。

10. NtReadFile:读取文件数据。

11. NtDeviceIoControlFile:向设备发送控制命令。

12. NtQuerySystemInformation:查询系统信息。

13. NtSetInformationThread:设置线程信息。

14. NtQueryInformationProcess:查询进程信息。

15. NtCreateEvent:创建一个系统事件。

16. NtSetEvent:设置一个处于未激发状态的系统事件。

17. NtWaitForSingleObject:等待一个系统事件变为激发状态。

18. NtClose:关闭一个内核对象句柄。

注意:这些函数通常是保护等级最高的函数,只有内核权限的代码才能够调用它们。

Zw函数与Nt函数的分别与联系

Zw函数与Nt函数的分别与联系

Zw函数与Nt函数的分别与联系Ring3中的NATIVE API,和Ring0的系统调⽤,都有同名的Zw和Nt系列函数,⼀度让初学者感到迷糊。

N久前的我,也是相当的迷糊。

现在就以ZwOpenProcess和NtOpenProcess函数为例,详细阐述下他们的分别和联系。

ntdll.dll导出了NtOpenProcess和ZwOpenProcess两个函数,我们记为ntdll!NtOpenProcess和ntdll!ZwOpenProcess。

仔细看⼀下,会发现他们的⼊⼝点实际上都是⼀样的,这就是说,ntdll!ZwOpenProcess仅仅是ntdll!NtOpenProcess函数的别名⽽已,实现如下:ZwOpenProcess.text:7C92D5FE mov eax, 7Ah ; NtOpenProcess.text:7C92D603 mov edx, 7FFE0300h.text:7C92D608 call dword ptr [edx].text:7C92D60A retn 10h 7FFE0300h处是ntdll!KiFastSystemCall的⼊⼝,ntdll!KiFastSystemCall会保存起当前的栈指针,然后通过引发0x2e中断,陷⼊内核。

当触发0x2e中断后,CPU将执⾏环境切换到Ring0状态,然后去调⽤内核模块的0x2e处理例程nt!KiSystemService。

nt!KiSystemService会在参数检查、栈拷贝等操作之后,根据Ring3代码传递过来的调⽤号0x7A,在SSDT中查找相应的函数地址,然后调⽤找到的函数。

对于我们的例⼦来说,这个函数就是内核模块的导出函数nt!NtOpenProcess。

nt!NtOpenProcess才是真正的打开进程实现函数。

但是内核模块也导出了nt!ZwOpenProcess,这个nt!ZwOpenProcess,有什么⽤处呢?会不会像ntdll!ZwOpenProcess⼀样,也仅仅是ntdll!NtOpenProcess的⼀个别名?实际上,nt!ZwOpenProcess并不仅仅是nt!NtOpenProcess⼀个别名,我们可以看⼀下nt!ZwOpenProcess的实现:kd> u nt!ZwOpenProcessnt!ZwOpenProcess:804fede8 mov eax,7Ah804feded lea edx,[esp+4]804fedf1 pushfd804fedf2 push 8804fedf4 call nt!KiSystemService (8053d891)804fedf9 ret 10h 与ntdll.ZwOpenProcess是不是很接近?nt!ZwOpenProcess也只是让nt!KiSystemService调⽤SSDT中的第0x7A号函数,他⾃⼰本⾝没有进⾏任何打开进程的实现。

ntoskrnl内部函数

ntoskrnl内部函数

ntoskrnl内部函数
ntoskrnl.exe是Windows操作系统的核心文件之一,它包含了
许多内部函数用于操作系统的核心功能。

这些内部函数包括但不限
于以下几个方面:
1. 内存管理,ntoskrnl.exe包含了许多内部函数用于管理系
统内存,包括分配、释放和管理物理内存和虚拟内存的功能。

这些
函数对于操作系统的稳定性和性能起着至关重要的作用。

2. 进程和线程管理,ntoskrnl.exe中的内部函数负责管理系
统中的进程和线程,包括创建、销毁、调度和同步进程和线程的功能。

这些函数对于操作系统的多任务处理和并发执行起着重要作用。

3. 设备驱动程序接口,ntoskrnl.exe中的内部函数提供了设
备驱动程序的接口,允许设备驱动程序与操作系统进行交互,包括
设备的初始化、数据传输和中断处理等功能。

4. 安全和权限管理,ntoskrnl.exe中的内部函数包括了安全
和权限管理的功能,用于验证用户的身份、控制对系统资源的访问
权限以及执行安全策略等功能。

总的来说,ntoskrnl.exe中的内部函数涵盖了操作系统的核心功能,包括内存管理、进程和线程管理、设备驱动程序接口以及安全和权限管理等方面。

这些内部函数的设计和实现对于操作系统的稳定性、性能和安全性都具有重要意义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Nt核函数大全NtLoadDriver 服务控制管理器加载设备驱动.NtUnloadDriver 服务控制管理器支持卸载指定的驱动程序. NtRegisterNewDevice 加载新驱动文件.NtQueryIntervalProfile 返回数据.NtSetIntervalProfile 指定采样间隔.NtStartProfile 开始取样.NtStopProfile 停止采样.NtSystemDebugControl 实施了一系列的调试器支持的命令. NtRegisterThreadTerminatePort 一个调试登记通知线程终止. NtCreateDebugObject 创建一个调试对象.NtDebugActiveProcess 使调试器附加到一个积极的过程和调试它. NtDebugContinue 允许一个进程,以线程产生了调试事件. NtQueryDebugFilterState 查询调试过滤国家一级的具体组成部分. NtRemoveProcessDebug 停止调试指定的进程.NtSetDebugFilterState 设置调试输出滤波器一级指定的组成部分. NtSetInformationDebugObject 设置属性的调试对象.NtWaitForDebugEvent 等待调试事件的进程正在调试.NtFlushInstructionCache 清空指定进程的指令缓冲区.NtInitiatePowerAction 启动电源事件.NtPowerInformation 获得该系统的电源状态.NtSetThreadExecutionState 设置一个线程的系统电源状态的要求. NtRequestWakeupLatency 设置一个进程唤醒延迟.NtClose 关闭处理任何对象类型.NtDuplicateObject 复制句柄的对象.NtCreateDirectoryObject 创建一个目录中的对象管理器命名空间. NtCreateSymbolicLinkObject 创建一个符号的对象管理器命名空间. NtOpenDirectoryObject 打开对象管理器名字空间目录.NtQueryDirectoryObject 用列举的对象位于一个目录对象. NtOpenSymbolicLinkObject 打开一个符号对象.NtQuerySymbolicLinkObject 归来的名称,对象,符号点.NtQueryObject 查询对象的属性,如它的名字.NtSetInformationObject 树立了一个对象的属性.NtTranslateFilePath 转换的文件路径的格式.NtCreateKey 创建或打开一个注册表项.NtOpenKey 打开一个现有的注册表项.NtDeleteKey 删除注册表项.NtDeleteValueKey 删除价值.NtEnumerateKey 枚举子项中的一个关键.NtEnumerateValueKey 列举了价值的一个关键.NtFlushKey 刷新变化回到注册表在磁盘上.NtInitializeRegistry 获取注册滚动.单参数对这一规定是否安装启动或正常开机. NtNotifyChangeKey 允许一个程序的通知改变某一关键或其子项.NtQueryKey 查询信息的一个关键.NtQueryMultiplValueKey 检索信息多个指定值.NtQueryValueKey 资讯检索指定的值.NtReplaceKey 变化的支持文件的一个关键和其子项,用于备份/恢复. NtSaveKey 保存的容中的一个关键和子项文件.NtRestoreKey 装载的容主要从一个指定的文件.NtSetInformationKey 集属性中的一个关键.NtSetValueKey 集相关的数据的价值.NtCreatePort 创建一个港口对象.NtAcceptConnectPort 接受一个端口连接.NtCompleteConnectPort 完成了连接.NtConnectPort 连接一个端口到另一个端口,接受连接. NtImpersonateClientOfPort 线程模拟确定的进程的另一端的一个港口. NtListenPort 侦听端口的连接请求.NtQueryInformationPort 获取信息的一个港口.NtReadRequestData 阅读相关资料港口信息.NtReplyPort 发送一个回复.NtReplyWaitReceivePort 发送一个回复,然后等待传入请求消息. NtReplyWaitReplyPort 发送一个回复,然后等待传入的回复.NtRequestPort 发送请求信息.NtRequestWaitReplyPort 发送请求信息,并等待传入的回复. NtWriteRequestData 填写数据的请求消息.NtSecureConnectPort 创建一个安全的连接端口. NtQueryPortInformationProcess 用于确定某个进程有相关的例外或调试端口. NtAccessCheck 检查当前线程是否已进入一个对象根据其安全描述符. NtAccessCheckAndAuditAlarm 生成相关的审计信息存取检查. NtAdjustGroupsToken 加注或删除群体与象征.NtAdjustPrivilegesToken 启用或禁用特权与象征. NtCloseObjectAuditAlarm 生成审计讯息,指出一个对象被关闭了. NtCreateToken 创建令牌对象.NtDeleteObjectAuditAlarm 产生了审计事件表明,一个对象已删除. NtDuplicateToken 重复象征对象.NtImpersonateThread 允许一个线程假冒身份的其他用户. NtOpenObjectAuditAlarm 产生了审计事件表明,一个物体开幕. NtOpenProcessToken 获得句柄令牌在指定的进程.NtOpenThreadToken 打开的句柄令牌在指定线程.NtPrivilegeCheck 检查,以查看是否有人员令牌已指定特权启用. NtPrivilegeObjectAuditAlarm 生成审核事件记录与特权检查. NtPrivilegedServiceAuditAlarm 生成审计信息表明尝试使用指定的特权. NtQueryInformationToken 获取信息的象征.NtQuerySecurityObject 检索信息的对象的安全设置. NtSetInformationToken 树立了一个象征性的属性.NtSetSecurityObject 设置安全信息的一个对象.NtAccessCheckByType 新的物件具体的安全支持. NtAccessCheckByTypeAndAuditAlarm 新的物件具体的安全支持.NtAccessCheckByTypeResultList 新的物件具体的安全支持. NtFilterToken 新的物件具体的安全支持. NtCompareToken 比较了两个令牌. NtOpenProcessTokenEx 打开一个进程令牌. NtOpenThreadTokenEx 打开一个线程令牌. NtAlertResumeThread 恢复线程.NtAlertThread 发出警报,以一个线程.NtTestAlert 检验是否有线程在等待警报. NtCreateProcess 创建一个新的进程.NtCreateThread 创建一个新线程.NtCurrentTeb 返回一个指针,一个线程环境块. NtDelayExecution 睡眠,暂停一个线程在指定的时间. NtGetContextThread 检索硬件方面的线程. NtSetContextThread 集硬件方面的线程.NtOpenProcess 打开的句柄指定的进程.NtOpenThread 打开的句柄指定的线程. NtQueryInformationProcess 获取一个线程的属性. NtQueueApcThread 程序呼叫到一个线程. NtResumeThread 唤醒暂停线程.NtSetInformationProcess 设置一个进程的属性. NtSetInformationThread 设置一个线程的属性. NtSuspendThread 暂停一个线程的执行. NtTerminateProcess 删除进程.NtTerminateThread 删除线程.NtYieldExecution 原因线程放弃CPU. NtCreateProcessEx 创建一个新的进程. NtResumeProcess 恢复被暂停的进程.NtSuspendProcess 暂停一个进程.NtCancelTimer 取消计时器.NtCreateTimer 创建一个计时器.NtOpenTimer 打开一个计时器对象.NtQueryTimer 查询计时器的属性. NtQueryTimerResolution 查询系统的计时器决议. NtSetTimer 设置一个定时器到期活动. NtSetTimerResolution 设定系统计时器决议. NtQueryPerformanceCounter 查询系统的性能计数器. NtQuerySystemTime 取得当前时间.NtSetSystemTime 设置系统时间.NtGetTickCount 获取系统开机以来时间.NtCreateEvent 创建一个事件对象.NtOpenEvent 打开事件对象.NtClearEvent 清除标志着国家的事件.NtPulseEvent 信号的事件,然后重置它.NtQueryEvent 查询状况的一个事件.NtResetEvent 重置事件向非标志着国家.NtSetEvent 树立了一个活动,标志着国家.NtCreateEventPair 创建一个事件一双.NtOpenEventPair 打开一个事件对.NtSetHighEventPair 集高一半的活动,以表明对国家.NtSetHighWaitLowEventPair 集高一半的活动,以表明对国家和等待低一半,成为示意. NtSetLowEventPair 集低一半的事件对.NtSetLowWaitHighEventPair 集低一半的事件,并等待对高一半将成为标志. NtWaitHighEventPair 等待高一半事件对成为暗示.NtWaitLowEventPair 等待低一半事件对成为暗示.NtCreateMutant 创建一个突变的对象,称为互斥在用户模式.NtOpenMutant 打开一个突变对象,称为互斥用户模式.NtCreateSemaphore 创建一个信号灯对象.NtOpenSemaphore 打开一个信号灯对象.NtQuerySemaphore 查询状态的信号.NtReleaseSemaphore 标志着信号灯.NtSignalAndWaitForSingleObject 等待它标志着一次.NtWaitForMultipleObjects 等待多个对象,成为暗示.NtWaitForSingleObject 等待一个单一的对象,成为暗示.NtCreateKeyedEvent 创建一个输入事件对象.NtOpenKeyedEvent 打开一个名为键控事件对象.NtReleaseKeyedEvent 标志着键控事件对象.NtWaitForKeyedEvent 等待事件成为键控信号.NtAllocateVirtualMemory 分配虚拟存.NtFreeVirtualMemory 释放虚拟存.NtQueryVirtualMemory 查询围的虚拟存的属性.NtProtectVirtualMemory 集保护的一系列虚拟存.NtLockVirtualMemory 锁一系列的虚拟存.NtUnlockVirtualMemory 解锁一系列的虚拟存.NtReadVirtualMemory 读取围的虚拟存从进程.NtWriteVirtualMemory 写了一系列的虚拟存从进程.NtFlushVirtualMemory 刷新记忆体映射的记忆体围的文件在磁盘上.NtCreateSection 创建了一系列的存支持文件.NtOpenSection 打开一个名为存映射节对象.NtExtendSection 延长现有的各种虚拟存支持文件.NtMapViewOfSection 地图一个文件中的虚拟存.NtUnmapViewOfSection 一部分虚拟存的支持文件.NtAreMappedFilesTheSame 装载机使用这一有效看看是否一个给定的文件已经被映射到存中. NtCancelIoFile 取消I/O请求.NtCreateFile 创建或打开一个文件,目录或设备对象.NtCreateIoCompletion 告诉I/O管理器,一个线程希望时得到通知的I/O完成. NtOpenIoCompletion 打开一个名为I/O完成对象.NtSetIoCompletion 树立了一个I/O完成对象的属性.NtQueryIoCompletion 具体信息检索的I/O完成对象.NtRemoveIoCompletion 消除了一个I/O完成回调.NtDeleteFile 删除一个文件对象.NtDeviceIoControlFile 发送IOCTL装置的设备驱动,这是一个打开的文件对象.NtFlushBuffersFile 清除存中的文件数据到磁盘.NtFsControlFile 发送一个I/O控制IOCTL为代表的公开设备对象.通常用于文件系统有关的特别命令. NtLockFile 锁了一系列文件的同步访问.NtUnlockFile 解锁了一系列文件的同步访问.NtNotifyChangeDirectoryFile 寄存器一个线程希望得到通知时,一个目录的容发生变化. NtOpenFile 打开一个现有的文件.NtQueryAttributesFile 取得一个文件的属性.NtQueryDirectoryFile 检索目录的容.NtQueryEaFile 检索文件的扩展属性.NtSetEaFile 集的扩展属性文件.NtQueryFullAttributesFile 获得文件的全部属性.NtQueryInformationFile 检索方面的具体资料的档案.NtSetInformationFile 确定具体的资料档案.NtQueryVolumeInformationFile 检索有关特定磁盘卷.NtSetVolumeInformationFile 集资讯量.NtReadFile 读取数据文件.NtWriteFile 写入数据文件.NtQueryQuotaInformationFile 查询NTFS磁盘配额信息.NtSetQuotaInformationFile 设置NTFS磁盘配额信息.NtQuerySystemInformation 性能计数器注册表中的出口的大量信息可通过这一呼吁. NtSetSystemInformation 各种行政程序使用此功能.NtShutdownSystem 关闭与选择重新启动.NtCreateJobObject 创建一个作业对象.NtOpenJobObject 打开一个作业对象.NtQueryInformationJobObject 撷取资讯作业对象.NtAssignProcessToJobObject 指定一个进程作业对象.NtSetInformationJobObject 树立了一个作业对象的属性.NtTerminateJobObject 终止作业对象,终止其所有相关的进程.NtCreateJobSet 创建了一个集多种就业工作的对象.NTSYSAPINTSTATUSNTAPINtAcceptConnectPort(OUT PHANDLE PortHandle,IN PVOID PortIdentifier,IN PPORT_MESSAGE Message,IN BOOLEAN Accept,IN OUT PPORT_VIEW ServerView OPTIONAL,OUT PREMOTE_PORT_VIEW ClientView OPTIONAL);NTSYSAPINTSTATUSNTAPINtAccessCheck(IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN HANDLE TokenHandle,IN ACCESS_MASK DesiredAccess,IN PGENERIC_MAPPING GenericMapping,OUT PPRIVILEGE_SET PrivilegeSet,IN PULONG PrivilegeSetLength,OUT PACCESS_MASK GrantedAccess,OUT PBOOLEAN AccessStatus);NTSYSAPINTSTATUSNTAPINtAccessCheckAndAuditAlarm(IN PUNICODE_STRING SubsystemName,IN PVOID HandleId,IN PUNICODE_STRING ObjectTypeName,IN PUNICODE_STRING ObjectName,IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN ACCESS_MASK DesiredAccess,IN PGENERIC_MAPPING GenericMapping,IN BOOLEAN ObjectCreation,OUT PACCESS_MASK GrantedAccess,OUT PBOOLEAN AccessStatus,OUT PBOOLEAN GenerateOnClose);NTSYSAPINTSTATUSNTAPINtAccessCheckByType(IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN PSID PrincipalSelfSid,IN HANDLE TokenHandle,IN ULONG DesiredAccess,IN POBJECT_TYPE_LIST ObjectTypeList,IN ULONG ObjectTypeListLength,IN PGENERIC_MAPPING GenericMapping,IN PPRIVILEGE_SET PrivilegeSet,IN PULONG PrivilegeSetLength,OUT PACCESS_MASK GrantedAccess,OUT PULONG AccessStatus);NTSYSAPINTSTATUSNTAPINtAccessCheckByTypeAndAuditAlarm(IN PUNICODE_STRING SubsystemName,IN PVOID HandleId,IN PUNICODE_STRING ObjectTypeName,IN PUNICODE_STRING ObjectName,IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN PSID PrincipalSelfSid,IN ACCESS_MASK DesiredAccess,IN AUDIT_EVENT_TYPE AuditType,IN ULONG Flags,IN POBJECT_TYPE_LIST ObjectTypeList,IN ULONG ObjectTypeListLength,IN PGENERIC_MAPPING GenericMapping,IN BOOLEAN ObjectCreation,OUT PACCESS_MASK GrantedAccess,OUT PULONG AccessStatus,OUT PBOOLEAN GenerateOnClose);NTSYSAPINTSTATUSNTAPINtAccessCheckByTypeResultList(IN PSECURITY_DESCRIPTOR SecurityDescriptor, IN PSID PrincipalSelfSid,IN HANDLE TokenHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_TYPE_LIST ObjectTypeList,IN ULONG ObjectTypeListLength,IN PGENERIC_MAPPING GenericMapping,IN PPRIVILEGE_SET PrivilegeSet,IN PULONG PrivilegeSetLength,OUT PACCESS_MASK GrantedAccessList,OUT PULONG AccessStatusList);NTSYSAPINTSTATUSNTAPI NtAccessCheckByTypeResultListAndAuditAlarm( IN PUNICODE_STRING SubsystemName,IN PVOID HandleId,IN PUNICODE_STRING ObjectTypeName,IN PUNICODE_STRING ObjectName,IN PSECURITY_DESCRIPTOR SecurityDescriptor,IN PSID PrincipalSelfSid,IN ACCESS_MASK DesiredAccess,IN AUDIT_EVENT_TYPE AuditType,IN ULONG Flags,IN POBJECT_TYPE_LIST ObjectTypeList,IN ULONG ObjectTypeListLength,IN PGENERIC_MAPPING GenericMapping,IN BOOLEAN ObjectCreation,OUT PACCESS_MASK GrantedAccessList,OUT PULONG AccessStatusList,OUT PULONG GenerateOnClose);NTSYSAPINTSTATUSNTAPI NtAccessCheckByTypeResultListAndAuditAlarmByHandle( IN PUNICODE_STRING SubsystemName,IN PVOID HandleId,IN HANDLE TokenHandle,IN PUNICODE_STRING ObjectTypeName,IN PUNICODE_STRING ObjectName,IN PSECURITY_DESCRIPTOR SecurityDescriptor,IN PSID PrincipalSelfSid,IN ACCESS_MASK DesiredAccess,IN AUDIT_EVENT_TYPE AuditType,IN ULONG Flags,IN POBJECT_TYPE_LIST ObjectTypeList,IN ULONG ObjectTypeListLength,IN PGENERIC_MAPPING GenericMapping,IN BOOLEAN ObjectCreation,OUT PACCESS_MASK GrantedAccessList,OUT PULONG AccessStatusList,OUT PULONG GenerateOnClose);NTSYSAPINTSTATUSNTAPINtAddAtom(IN PWSTR String,IN ULONG StringLength,OUT PUSHORT Atom);NTSYSAPINTSTATUSNTAPINtAddBootEntry(IN PUNICODE_STRING EntryName,IN PUNICODE_STRING EntryValue);NTSYSAPINTSTATUSNTAPINtAddDriverEntry(IN PUNICODE_STRING DriverName,IN PUNICODE_STRING DriverPath);NTSYSAPINTSTATUSNTAPINtAdjustGroupsToken(IN HANDLE TokenHandle,IN BOOLEAN ResetToDefault,IN PTOKEN_GROUPS NewState,IN ULONG BufferLength,OUT PTOKEN_GROUPS PreviousState OPTIONAL, OUT PULONG ReturnLength);NTSYSAPINTSTATUSNTAPINtAdjustPrivilegesToken(IN HANDLE TokenHandle,IN BOOLEAN DisableAllPrivileges,IN PTOKEN_PRIVILEGES NewState,IN ULONG BufferLength,OUT PTOKEN_PRIVILEGES PreviousState OPTIONAL, OUT PULONG ReturnLength OPTIONAL);NTSYSAPINTSTATUSNTAPINtAlertResumeThread(IN HANDLE ThreadHandle,OUT PULONG PreviousSuspendCount OPTIONAL);NTSYSAPINTSTATUSNTAPINtAllocateLocallyUniqueId(OUT PLUID Luid);NTSYSAPINTSTATUSNTAPINtAllocateUserPhysicalPages(IN HANDLE ProcessHandle,IN PULONG NumberOfPages,OUT PULONG PageFrameNumbers);NTSYSAPINTSTATUSNTAPINtAllocateUuids(OUT PLARGE_INTEGER UuidLastTimeAllocated, OUT PULONG UuidDeltaTime,OUT PULONG UuidSequenceNumber,OUT PUCHAR UuidSeed);NTSYSAPINTSTATUSNTAPINtAllocateVirtualMemory(IN HANDLE ProcessHandle,IN OUT PVOID *BaseAddress,IN ULONG ZeroBits,IN OUT PULONG AllocationSize,IN ULONG AllocationType,IN ULONG Protect);NTSYSAPINTSTATUSNTAPINtApphelpCacheControl(IN APPHELPCACHECONTROL ApphelpCacheControl, IN PUNICODE_STRING ApphelpCacheObject);NTSYSAPINTSTATUSNTAPINtAreMappedFilesTheSame(IN PVOID Address1,IN PVOID Address2);NTSYSAPINTSTATUSNTAPINtAssignProcessToJobObject(IN HANDLE JobHandle,IN HANDLE ProcessHandle);NTSYSAPINTSTATUSNTAPINtCallbackReturn(IN PVOID Result OPTIONAL,IN ULONG ResultLength,IN NTSTATUS Status);NTSYSAPINTSTATUSNTAPI NtCancelDeviceWakeupRequest(IN HANDLE DeviceHandle);NTSYSAPINTSTATUSNTAPINtCancelIoFile(IN HANDLE FileHandle,OUT PIO_STATUS_BLOCK IoStatusBlock );NTSYSAPINTSTATUSNTAPINtCancelTimer(IN HANDLE TimerHandle,OUT PBOOLEAN PreviousState OPTIONAL );NTSYSAPINTSTATUSNTAPINtClearEvent(IN HANDLE EventHandleNTSYSAPINTSTATUSNTAPINtClose(IN HANDLE Handle);NTSYSAPINTSTATUSNTAPINtCloseObjectAuditAlarm(IN PUNICODE_STRING SubsystemName, IN PVOID HandleId,IN BOOLEAN GenerateOnClose);NTSYSAPINTSTATUSNTAPINtCompactKeys(IN ULONG Length,IN HANDLE Key);NTSYSAPINTSTATUSNTAPINtCompareTokens(IN HANDLE FirstTokenHandle,IN HANDLE SecondTokenHandle,OUT PBOOLEAN IdenticalTokens);NTSYSAPINTSTATUSNTAPINtCompleteConnectPort(IN HANDLE PortHandle);NTSYSAPINTSTATUSNTAPINtCompressKey(IN HANDLE Key);NTSYSAPINTSTATUSNtConnectPort(OUT PHANDLE PortHandle,IN PUNICODE_STRING PortName,IN PSECURITY_QUALITY_OF_SERVICE SecurityQos,IN OUT PPORT_VIEW ClientView OPTIONAL,OUT PREMOTE_PORT_VIEW ServerView OPTIONAL,OUT PULONG MaxMessageLength OPTIONAL,IN OUT PVOID ConnectInformation OPTIONAL,IN OUT PULONG ConnectInformationLength OPTIONAL );NTSYSAPINTSTATUSNTAPINtContinue(IN PCONTEXT Context,IN BOOLEAN TestAlert);NTSYSAPINTSTATUSNTAPINtCreateDebugObject(OUT PHANDLE DebugObject,IN ULONG AccessRequired,IN POBJECT_ATTRIBUTES ObjectAttributes,IN BOOLEAN KillProcessOnExit);NTSYSAPINTSTATUSNTAPINtCreateDirectoryObject(OUT PHANDLE DirectoryHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes);NTSYSAPINTSTATUSNTAPINtCreateEvent(OUT PHANDLE EventHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes,IN EVENT_TYPE EventType,IN BOOLEAN InitialStateNTSYSAPINTSTATUSNTAPINtCreateEventPair(OUT PHANDLE EventPairHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes );NTSYSAPINTSTATUSNTAPINtCreateFile(OUT PHANDLE FileHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock,IN PLARGE_INTEGER AllocationSize OPTIONAL, IN ULONG FileAttributes,IN ULONG ShareAccess,IN ULONG CreateDisposition,IN ULONG CreateOptions,IN PVOID EaBuffer OPTIONAL,IN ULONG EaLength);NTSYSAPINTSTATUSNTAPINtCreateIoCompletion(OUT PHANDLE IoCompletionHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes,IN ULONG NumberOfConcurrentThreads);NTSYSAPINTSTATUSNTAPINtCreateJobObject(OUT PHANDLE JobHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes );NTSYSAPINTSTATUSNtCreateJobSet(IN ULONG Jobs,IN PJOB_SET_ARRAY JobSet,IN ULONG Reserved);NTSYSAPINTSTATUSNTAPINtCreateKey(OUT PHANDLE KeyHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG TitleIndex,IN PUNICODE_STRING Class OPTIONAL,IN ULONG CreateOptions,OUT PULONG Disposition OPTIONAL);NTSYSAPINTSTATUSNTAPINtCreateKeyedEvent(OUT PHANDLE KeyedEventHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG Reserved);NTSYSAPINTSTATUSNTAPINtCreateMailslotFile(OUT PHANDLE FileHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock,IN ULONG CreateOptions,IN ULONG InBufferSize,IN ULONG MaxMessageSize,IN PLARGE_INTEGER ReadTimeout OPTIONAL );NTSYSAPINTSTATUSNTAPINtCreateMutant(OUT PHANDLE MutantHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, IN BOOLEAN InitialOwner);NTSYSAPINTSTATUSNTAPINtCreateNamedPipeFile(OUT PHANDLE FileHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, OUT PIO_STATUS_BLOCK IoStatusBlock,IN ULONG ShareAccess,IN ULONG CreateDisposition,IN ULONG CreateOptions,IN BOOLEAN TypeMessage,IN BOOLEAN ReadmodeMessage,IN BOOLEAN Nonblocking,IN ULONG MaxInstances,IN ULONG InBufferSize,IN ULONG OutBufferSize,IN PLARGE_INTEGER DefaultTimeout OPTIONAL );NTSYSAPINTSTATUSNTAPINtCreatePagingFile(IN PUNICODE_STRING FileName,IN PULARGE_INTEGER InitialSize,IN PULARGE_INTEGER MaximumSize,IN ULONG Priority OPTIONAL);NTSYSAPINTSTATUSNTAPINtCreatePort(OUT PHANDLE PortHandle,IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG MaxConnectionInfoLength,IN ULONG MaxMessageLength,IN ULONG MaxPoolUsage);NTSYSAPINTSTATUSNTAPINtCreateProcess(OUT PHANDLE ProcessHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE InheritFromProcessHandle,IN BOOLEAN InheritHandles,IN HANDLE SectionHandle OPTIONAL,IN HANDLE DebugPort OPTIONAL,IN HANDLE ExceptionPort OPTIONAL);NTSYSAPINTSTATUSNTAPINtCreateProcessEx(OUT PHANDLE ProcessHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE InheritFromProcessHandle,IN ULONG CreateFlags,IN HANDLE SectionHandle OPTIONAL,IN HANDLE DebugObject OPTIONAL,IN HANDLE ExceptionPort OPTIONAL,IN ULONG JobMemberLevel);NTSYSAPINTSTATUSNTAPINtCreateProfile(OUT PHANDLE ProfileHandle,IN HANDLE ProcessHandle,IN PVOID Base,IN ULONG Size,IN ULONG BucketShift,IN PULONG Buffer,IN ULONG BufferLength,IN KPROFILE_SOURCE Source,IN ULONG ProcessorMask);NTSYSAPINTSTATUSNTAPINtCreateSection(IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, IN PLARGE_INTEGER SectionSize OPTIONAL, IN ULONG Protect,IN ULONG Attributes,IN HANDLE FileHandle);NTSYSAPINTSTATUSNTAPINtCreateSemaphore(OUT PHANDLE SemaphoreHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, IN LONG InitialCount,IN LONG MaximumCount);NTSYSAPINTSTATUSNTAPINtCreateSymbolicLinkObject(OUT PHANDLE SymbolicLinkHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, IN PUNICODE_STRING TargetName);NTSYSAPINTSTATUSNTAPINtCreateThread(OUT PHANDLE ThreadHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, IN HANDLE ProcessHandle,OUT PCLIENT_ID ClientId,IN PCONTEXT ThreadContext,IN PUSER_STACK UserStack,IN BOOLEAN CreateSuspended);NTSYSAPINTSTATUSNTAPINtCreateTimer(IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, IN TIMER_TYPE TimerType);NTSYSAPINTSTATUSNTAPINtCreateToken(OUT PHANDLE TokenHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes, IN TOKEN_TYPE Type,IN PLUID AuthenticationId,IN PLARGE_INTEGER ExpirationTime,IN PTOKEN_USER User,IN PTOKEN_GROUPS Groups,IN PTOKEN_PRIVILEGES Privileges,IN PTOKEN_OWNER Owner,IN PTOKEN_PRIMARY_GROUP PrimaryGroup, IN PTOKEN_DEFAULT_DACL DefaultDacl,IN PTOKEN_SOURCE Source);NTSYSAPINTSTATUSNTAPINtCreateWaitablePort(OUT PHANDLE PortHandle,IN POBJECT_ATTRIBUTES ObjectAttributes, IN ULONG MaxConnectionInfoLength,IN ULONG MaxMessageLength,IN ULONG MaxPoolUsage);NTSYSAPINTSTATUSNTAPINtDebugActiveProcess(IN HANDLE Process,IN HANDLE DebugObject);NTSYSAPINTSTATUSNTAPINtDebugContinue(IN HANDLE DebugObject,IN PCLIENT_ID AppClientId,IN NTSTATUS ContinueStatus);NTSYSAPINTSTATUSNTAPINtDelayExecution(IN BOOLEAN Alertable,IN PLARGE_INTEGER Interval);NTSYSAPINTSTATUSNTAPINtDeleteAtom(IN USHORT Atom);NTSYSAPINTSTATUSNTAPINtDeleteBootEntry(IN PUNICODE_STRING EntryName,IN PUNICODE_STRING EntryValue);NTSYSAPINTSTATUSNTAPINtDeleteDriverEntry(IN PUNICODE_STRING DriverName,IN PUNICODE_STRING DriverPath);NTSYSAPINTSTATUSNTAPINtDeleteFile(IN POBJECT_ATTRIBUTES ObjectAttributes );NTSYSAPINTSTATUSNTAPINtDeleteKey(IN HANDLE KeyHandle);NTSYSAPINTSTATUSNTAPINtDeleteObjectAuditAlarm(IN PUNICODE_STRING SubsystemName,IN PVOID HandleId,IN BOOLEAN GenerateOnClose);NTSYSAPINTSTATUSNTAPINtDeleteValueKey(IN HANDLE KeyHandle,IN PUNICODE_STRING ValueName);NTSYSAPINTSTATUSNTAPINtDeviceIoControlFile(IN HANDLE FileHandle,IN HANDLE Event OPTIONAL,IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL,OUT PIO_STATUS_BLOCK IoStatusBlock,IN ULONG IoControlCode,IN PVOID InputBuffer OPTIONAL,IN ULONG InputBufferLength,OUT PVOID OutputBuffer OPTIONAL,IN ULONG OutputBufferLength);NTSYSAPINTSTATUSNTAPINtDisplayString(IN PUNICODE_STRING String);NTSYSAPINTSTATUSNTAPINtDuplicateObject(IN HANDLE SourceProcessHandle,IN HANDLE SourceHandle,IN HANDLE TargetProcessHandle,OUT PHANDLE TargetHandle OPTIONAL,IN ACCESS_MASK DesiredAccess,IN ULONG Attributes,IN ULONG Options);NTSYSAPINTSTATUSNTAPINtDuplicateToken(IN HANDLE ExistingTokenHandle,IN ACCESS_MASK DesiredAccess,IN POBJECT_ATTRIBUTES ObjectAttributes,IN BOOLEAN EffectiveOnly,IN TOKEN_TYPE TokenType,OUT PHANDLE NewTokenHandle);NTSYSAPINTSTATUSNTAPINtEnumerateBootEntries(IN ULONG Unknown1,IN ULONG Unknown2);NTSYSAPINTSTATUSNTAPINtEnumerateKey(IN HANDLE KeyHandle,IN ULONG Index,IN KEY_INFORMATION_CLASS KeyInformationClass, OUT PVOID KeyInformation,IN ULONG KeyInformationLength,OUT PULONG ResultLength);NTSYSAPINTSTATUSNTAPI NtEnumerateSystemEnvironmentValuesEx(IN ULONG Unknown1,IN ULONG Unknown2,IN ULONG Unknown3);NTSYSAPINTSTATUSNTAPINtEnumerateValueKey(IN HANDLE KeyHandle,IN ULONG Index,IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass, OUT PVOID KeyValueInformation,IN ULONG KeyValueInformationLength,OUT PULONG ResultLength);NTSYSAPINTSTATUSNTAPINtExtendSection(IN HANDLE SectionHandle,IN PLARGE_INTEGER SectionSize);NTSYSAPINTSTATUSNTAPINtFilterToken(IN HANDLE ExistingTokenHandle,IN ULONG Flags,IN PTOKEN_GROUPS SidsToDisable,IN PTOKEN_PRIVILEGES PrivilegesToDelete,IN PTOKEN_GROUPS SidsToRestricted,OUT PHANDLE NewTokenHandle);NTSYSAPINTSTATUSNTAPINtFindAtom(IN PWSTR String,IN ULONG StringLength,OUT PUSHORT Atom);NTSYSAPINTSTATUSNTAPINtFlushBuffersFile(IN HANDLE FileHandle,OUT PIO_STATUS_BLOCK IoStatusBlock);NTSYSAPINTSTATUSNTAPINtFlushInstructionCache(IN HANDLE ProcessHandle,IN PVOID BaseAddress OPTIONAL,IN ULONG FlushSize);NTSYSAPINTSTATUSNTAPINtFlushKey(IN HANDLE KeyHandle);NTSYSAPINTSTATUSNTAPINtFlushVirtualMemory(IN HANDLE ProcessHandle,IN OUT PVOID *BaseAddress,IN OUT PULONG FlushSize,OUT PIO_STATUS_BLOCK IoStatusBlock );NTSYSAPINTSTATUSNTAPINtFlushWriteBuffer(VOID);NTSYSAPINTSTATUSNTAPINtYieldExecution(VOID);NTSYSAPINTSTATUSNTAPINtWriteVirtualMemory(IN HANDLE ProcessHandle,IN PVOID BaseAddress,IN PVOID Buffer,IN ULONG BufferLength,OUT PULONG ReturnLength OPTIONAL );NTSYSAPINTSTATUSNTAPINtWriteRequestData(IN HANDLE PortHandle,IN PPORT_MESSAGE Message,IN ULONG Index,IN PVOID Buffer,IN ULONG BufferLength,OUT PULONG ReturnLength OPTIONAL);NTSYSAPINTSTATUSNTAPINtWriteFileGather(IN HANDLE FileHandle,IN HANDLE Event OPTIONAL,IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL,OUT PIO_STATUS_BLOCK IoStatusBlock,IN PFILE_SEGMENT_ELEMENT Buffer,IN ULONG Length,IN PLARGE_INTEGER ByteOffset OPTIONAL, IN PULONG Key OPTIONAL);NTSYSAPINTSTATUSNTAPINtWriteFile(IN HANDLE FileHandle,IN HANDLE Event OPTIONAL,IN PIO_APC_ROUTINE ApcRoutine OPTIONAL, IN PVOID ApcContext OPTIONAL,OUT PIO_STATUS_BLOCK IoStatusBlock,IN PVOID Buffer,IN ULONG Length,IN PLARGE_INTEGER ByteOffset OPTIONAL, IN PULONG Key OPTIONAL);NTSYSAPINTSTATUSNTAPINtWaitLowEventPair(IN HANDLE EventPairHandle);NTSYSAPINTSTATUSNTAPINtWaitHighEventPair(IN HANDLE EventPairHandle);NTSYSAPINTSTATUSNTAPINtWaitForSingleObject(IN HANDLE Handle,IN BOOLEAN Alertable,IN PLARGE_INTEGER Timeout OPTIONAL );NTSYSAPINTSTATUSNTAPINtWaitForMultipleObjects32(IN ULONG HandleCount,IN PHANDLE Handles,IN WAIT_TYPE WaitType,IN BOOLEAN Alertable,IN PLARGE_INTEGER Timeout OPTIONAL );NTSYSAPINTSTATUSNTAPINtWaitForMultipleObjects(IN ULONG HandleCount,IN PHANDLE Handles,IN WAIT_TYPE WaitType,IN BOOLEAN Alertable,IN PLARGE_INTEGER Timeout OPTIONAL );NTSYSAPINTSTATUSNTAPINtWaitForKeyedEvent(IN HANDLE KeyedEventHandle,IN PVOID Key,IN BOOLEAN Alertable,IN PLARGE_INTEGER Timeout OPTIONAL );NTSYSAPINTSTATUSNTAPINtWaitForDebugEvent(IN HANDLE DebugObject,IN BOOLEAN Alertable,IN PLARGE_INTEGER Timeout OPTIONAL,OUT PDBGUI_WAIT_STATE_CHANGE StateChange );NTSYSAPINTSTATUSNTAPINtVdmControl(IN VDMSERVICECLASS Service,IN OUT PVOID ServiceData);NTSYSAPINTSTATUSNTAPINtUnmapViewOfSection(IN HANDLE ProcessHandle,IN PVOID BaseAddress);NTSYSAPINTSTATUSNTAPINtUnlockVirtualMemory(IN HANDLE ProcessHandle,IN OUT PVOID *BaseAddress,IN OUT PULONG LockSize,IN ULONG LockType);NTSYSAPINTSTATUSNTAPINtUnlockFile(IN HANDLE FileHandle,OUT PIO_STATUS_BLOCK IoStatusBlock,IN PULARGE_INTEGER LockOffset,IN PULARGE_INTEGER LockLength,IN ULONG Key);NTSYSAPINTSTATUSNTAPINtUnloadKeyEx(IN POBJECT_ATTRIBUTES KeyObjectAttributes,IN HANDLE EventHandle OPTIONAL);NTSYSAPINTSTATUSNTAPINtUnloadKey2(IN POBJECT_ATTRIBUTES KeyObjectAttributes, IN BOOLEAN ForceUnload);NTSYSAPINTSTATUSNTAPINtUnloadKey(IN POBJECT_ATTRIBUTES KeyObjectAttributes );NTSYSAPINTSTATUSNTAPINtUnloadDriver(IN PUNICODE_STRING DriverServiceName);NTSYSAPINTSTATUSNTAPINtTranslateFilePath(PFILE_PATH InputFilePath,ULONG OutputType,PFILE_PATH OutputFilePath,ULONG OutputFilePathLength);NTSYSAPINTSTATUSNTAPINtTraceEvent(IN ULONG TraceHandle,IN ULONG Flags,IN ULONG TraceHeaderLength,IN PEVENT_TRACE_HEADER TraceHeader);NTSYSAPINTSTATUSNTAPINtTerminateThread(IN HANDLE ThreadHandle OPTIONAL,。

相关文档
最新文档