Windows编程中Zw、Ke、Nt说明

Home / C++ MrLee 2017-2-27 4837

做windows程序开发的朋友可能经常看到Zw,Ke,Nt开头的函数,那么这些都是什么函数,有什么功能呢?今天这里简单说明下。 这些都代表着是Windows native(原生)系统服务(system services)例程(routines)。 Ke - kernel的缩写,代表的是内核模式的API接口。 Nt - Windows NT的缩写,代表的是Windows 系统服务功能API接口。 大部分以Nt开头的函数,都映射到了用户态(User Mode)API接口。比如你编写的用户模式程序,用到了CreateFile这个函数,由于它需要访问系统内部的数据结构,必须要进入内核模式,这时的程序就要转入内核模式,相对应的内核模式功能服务接口,正是ntdll.dll中的NtCreateFile,它最终完成来自用户态程序的函数功能请求。 Zw - 没有具体的缩写含义,只是为了避免和其它前缀的重复。它的功能和与之相对应的Nt函数是一致的(可以说是Nt功能的镜像)。 不同点在于: 相应的Nt函数,是对系统服务的直接;而Zw需要经过一系列系统准备动作,比如:系统服务码入寄存器保存,系统KiSystemService加载,然后才执行具体的服务功能调用。 看着负担加重了,但好处是,在执行时,系统参数的系列校验不必再进行了(拜所谓的previous access mode之赐),所以反而轻快了;而Nt系列函数虽然调用时简洁,但每一次执行都要参数校验,因此反而累赘了。这也正是内核态程序(比如驱动程序)多用Zw系统的原因(因为需要和previous mode打交道)。
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 查询状况的一个事件. 8 
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 创建了一个集多种就业工作的对象.

本文链接:https://www.it72.com/11847.htm

推荐阅读
最新回复 (0)
返回