Windows内核函数的命名

Windows内核函数的前缀 Winodws操作系统采用的是“client-server”设计模式,在用户层和内核层提供不同的系统函数,供程序员使用。其结构如下:          如上图,Win32子系统将Win32 API转为Native API,故以Nt前缀开头的都是Native API,它还是属于用户层。通过Native API,建立与内核层的联系。         在C盘的Windows文 阅读详情

Windows的内核函数在命名上有个很好的特色,就是函数名都按其所在的层次或模块加上了特定的前缀。了解了这些前缀,看到一个函数名就可以大致 知道这个函数所属的层次和模块,主要的前缀有:

Ex:管理层,Ex是Executive的开头两个字母。

Ke:核心层,Ke是Kernel的开头两个字母。

Hal:硬件抽象层,Hal是Hardware Abstraction Layer的缩写。

Ob:对象管理,Ob是Object的开头两个字母。

Mm:内存管理,Mm是Memory Manager的缩写。

Ps:进程(线程)管理,Ps表示Process。

Se:安全管理,Se是Security的开头两个字母。

Io:I/O管理。

Fs:文件系统,Fs是File System的缩写。

Cc:文件缓存管理,Cc表示Cache。

Cm:系统配置管理,Cm是Configuration Manager的缩写。

Pp:"即插即用"管理,Pp表示PnP。

Rtl:运行时程序库,Rtl是Runtime Library的缩写。

不过并非所有的函数名都带有这样的前缀,对前缀的使用也并非十分严格。例如,核心层函数名的前缀本应是Ke,但是实际上有不少核心层函数名的前缀是 Ki,这些函数大都是与中断有关的比较底层的函数。

有时候还在函数名的前缀后面加上小写字母f,表示这个函数是快速调用函数。例如:

NTKERNELAPI LONG_PTR FASTCALL ObfDereferenceObject(IN PVOID Object);

这里的类型说明FASTCALL向编译工具表明这是个快速调用函数,函数名前缀后面加上f则使人一看见函数名就知道这是个快速调用函数。一般的函数 调用是通过堆栈传递参数的,而快速调用函数则通过ECX等寄存器传递参数,因为避免了几个堆栈操作而使效率有所提高。当然,这里的说明FASTCALL是 必需的,否则编译工具不知道应该通过寄存器传递参数,而在函数名中加上f则只是为了增加程序的可读性。

上面所说的是C语言程序中的函数名,如果是在汇编语言中,则需要在函数名前面再加上前缀"_",并加上表示参数个数的后缀。例如,函数名 RtlZeroMemory()出现在汇编程序中就是_RtlZero Memory@8 。 为什么是@8呢?这是因为这个函数有两个参数,一共是8个字节。之所以如此,是因为GCC在编译C语言程序而生成汇编代码时就会作这样的转换。

如果是快速调用函数,则又与普通的函数名有所不同。例如KfLowerIrql()是个快速调用函数,这个函数名出现在汇编程序中时则变成 @KfLowerIrql@4。这里的前缀@表示这是快速调用函数,后缀的@4则表示这个函数带有4个字节的参数,即一个参数。当然,这是通过寄存器(因 为只有一个参数,所以是ECX)传递的参数,而不是通过堆栈传递的参数。

按理说,KfLowerIrql()是核心层的函数,又是快速调用,因而其函数名的前缀应该是Kef,但是实际用的却是Kf,所以这些前缀的使用并 不严格。读者也许怀疑,是否ReactOS的人不守规矩?其实不然,因为在别的资料中也看到过这个函数名。

Window API函数名 一些常用的API函数的名字 没有函数的内容 只是进行了分类 立即下载

相关推荐

SAP SM30数据维护实战:条件筛选与动态校验的实现技巧

本文详细介绍了SAP SM30数据维护的实战技巧,重点讲解如何通过条件筛选实现精准数据查取,以及利用表维护生成器事件实现动态数据检查与校验。文章提供了从基础视图创建到高级事件编程的完整流程,包括调用函数VIEW_MAINTENANCE_CALL传递筛选条件,以及在NEW_DATA和CHANGE_SAVE事件中编写业务规则校验逻辑,帮助开发者提升SM30的管控能力与数据质量。

q9w8e7r6t5的博客 521

linux函数命名方式,Linux Kernel中函数命名

在Linux Kernel中某些特定含义的函数命令有自己的规律,比如这里将简单的介绍一下函数名前双下划线__和devm_xxx函数的意思。函数名称前的双下划线__标记需要加锁:在内核中,有很多函数,有的是需要调用者自己加锁保护的,有些是不需要加锁保护的。对于这些场景,linux kernel采取了统一的策略:基本函数名字是一样的,只不过需要调用者自己加锁保护的那个函数需要增加__的前缀,例如内核有...

weixin_39787792的博客 887

BitLocker恢复密钥丢失?从原理到实战的完整解锁与系统重生指南

磁盘加密技术是数据安全的核心防线,它通过对存储设备上的数据进行编码,确保未经授权的用户无法访问。其原理主要基于加密算法(如AES)与密钥管理机制,在操作系统启动前或数据读写时进行实时加解密。这项技术的核心价值在于防止设备丢失或被盗后的数据泄露,尤其对于笔记本电脑和移动设备至关重要。典型的应用场景包括企业办公电脑、存有敏感信息的个人设备以及符合合规性要求的行业。当使用Windows系统自带的BitLocker加密功能时,若因硬件改动、系统更新等触发保护机制,用户可能会面临需要输入恢复密钥才能启动的困境。本文聚

weixin_34006965的博客 489

Window函数

大数据分析中的窗口函数(Window function),在主流的数据库中都已经或多或少支持了。

Ahxing1985的专栏 1633

ASReview:基于主动学习的AI文献筛选工具,提升科研效率

主动学习是机器学习的一个重要分支,其核心原理是让算法能够主动选择最有价值的数据进行标注,从而以更低的成本获得更好的模型性能。这一技术通过人机协作的闭环流程,显著提升了数据标注和模型训练的效率和精度。在工程实践中,主动学习尤其适用于数据标注成本高昂或数据类别不平衡的场景,例如医学影像分析、自然语言处理中的文本分类以及推荐系统的冷启动问题。通过优先标注模型最不确定的样本,它能够有效解决传统机器学习面临的冷启动和数据稀疏性挑战。本文聚焦的ASReview项目,正是将主动学习原理应用于系统文献综述这一具体场景,通过

weixin_28725959的博客 431

【开源】基于TI ADS1299与ESP32的8通道脑电采集设备YuEEG全解析

本文详细解析了基于TI ADS1299芯片与ESP32主控的开源8通道脑电采集设备YuEEG。内容涵盖硬件设计、固件驱动开发及Python上位机软件实现,提供了从电路连接、SPI通信配置到数据读取与实时波形显示的全套教程。该项目为学习脑机接口(BCI)与高精度生物电信号采集提供了完整的开源解决方案,适合创客、学生及嵌入式开发者实践。

weixin_42576410的博客 1239

windows命名规则(简约版)

无规矩不成方圆,网上关于如何命名的规则很多,总是记不住,下面就选取最常见的几条进行规范,规则没有对错,遵循一种风格即可。 【规则1】类名和函数名用大写字母开头的单词组合而成。  例如:   class Node;         // 类名  class LeafNode;       // 类名  void  Draw(void);      // 函数名  void

产品老A,8年互联网大厂AIPM,专注探索新型人机交互 1万+

从3dB定向耦合器到双圆极化天线:在HFSS里玩转相位差90°的馈电艺术

本文详细介绍了在HFSS中设计3dB定向耦合器与双圆极化天线的关键技术,重点解析了90°相位差生成原理及馈电网络设计。通过HFSS仿真工具,实现从定向耦合器到完整天线系统的集成,优化阵列天线性能,适用于卫星通信和雷达系统。

weixin_33717117的博客 556

Windows的内核函数命名

Windows的内核函数在命名上有个很好的特色,就是函数名都按其所在的层次或模块加上了特定的前缀。了解了这些前缀,看到一个函数名就可以大致知道这个函数所属的层次和模块,主要的前缀有: Ex:管理层,Ex是Executive的开头两个字母。 Ke:核心层,Ke是Kernel的开头两个字母。 Hal:硬件抽象层,Hal是Hardware Abstraction Layer的缩写。 Ob:对象管

博客模版 792

YOLO项目从零开始:超详细运行教程(图文保姆级教学)

至此,我们已经完整跑通了YOLO项目的安装与启动流程,无论你是零基础小白还是刚入门的AI新兵,只要按部就班操作,也能轻松实现目标检测项目的落地。

一键难忘的博客 4798

智慧加油站小程序数据库设计文档

【代码】智慧加油站小程序数据库设计文档。

低代码布道师的博客 1402

windows 内核函数命名规律

windows内核都是__stdcall windows内核的前缀有:Nt,zW,Ex,Ke,Hal,Ob ,Mm,Ps,Se,Io,Fs,Cc,Cm ,Pp,Rtl,Ndis,Wdf,KiEtw,Csr,Ldr,Dbg,Pfx 主要的前缀有: Zw:Zw 和同名的 Nt 函数具有相同的功能,中间是从 Zw 到 Nt 函数的简单跳转。本系列内核函数用于文件和注册表方面的操作,比如文件操作、注

dengshaolin的记事本 1485

【超详细】计算机操作系统总结及思维导图(汤子瀛版)

计算机操作系统 一.操作系统引论 1.操作系统的目标和功能 目标 方便性 有效性 提高系统资源利用率 提高系统吞吐量 可扩充性 开放性 作用 OS作为用户与计算机硬件系统之间的接口 命令方式 系统调用方式 图标–窗口方式 OS实现了对计算机资源的抽象 2.操作系统的发展过程 未配置操作系统的计算机系统 人工操作方式 用户独占全机 CPU等待人工操作 严重降低...

圣三一 2万+

Windows内核函数命名

Ex:管理层 Ke:核心层 Hal:硬件抽象层 Ob:对象管理 Mm:内存管理 Ps:进程管理 Se:安全管理 Io:I/O管理 Fs:文件系统 Cc:文件缓存管理 Cm:系统配置管理 Pp:即插即用管理 Rtl:运行时程序库 Ki:中断相关 ...

zyorz的博客 276

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

windows 内核函数前缀解析

《Windows内核情景分析–采用开源代码ReactOS(上、下册)》本书通过分析ReactOS的源代码介绍了Windows内核各个方面的结构、功能、算法与具体实现。本小节为大家介绍Windows内核函数的命名。 1.5 Windows内核函数的命名 Windows的内核函数在命名上有个很好的特色,就是函数名都按其所在的层次或模块加上了特定的前缀。了解了这些前缀,看到一个函数名就可以大致知道这个...

平凡者的专栏 1444

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

windows笔记-跨越进程边界共享内核对象【命名对象】

<br />跨越进程边界共享内核对象有三种方法:对象句柄的继承性命名对象复制对象句柄命名对象<br />共享跨越进程边界的内核对象的第二种方法是给对象命名,注意有些内核对象是不可以命名的,但多数内核对象可以命名。<br />下面的所有函数都可以创建命名的内核对象:HANDLE CreateMutex (<br /> PSLCURITY_ATTRIBUTES psa,<br /> BOOL bInitialOwner,<br /> PCTSTR pszName );<br /><b

liziyun537的专栏 513

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

8.1 Windows驱动开发:内核文件读写系列函数

在应用层下的文件操作只需要调用微软应用层下的`API`函数及`C库`标准函数即可,而如果在内核中读写文件则应用层的API显然是无法被使用的,内核层需要使用内核专有API,某些应用层下的API只需要增加Zw开头即可在内核中使用,例如本章要讲解的文件与目录操作相关函数,多数ARK反内核工具都具有对文件的管理功能,实现对文件或目录的基本操作功能也是非常有必要的。

微软技术分享 1万+

Windows核心编程笔记——内核对象

本节讨论的不是具体某一种类型的内核对象,而是所有内核对象共通的一些特性。

随手写下笔记和感悟 1333

gloomy-内核反汇编技术

导读:   内核反汇编技术   gloomy-内核反汇编技术   ===============================   Усыпляющее шептание алых просторов   Сон зовет меня и мои мечты освобождены   Оставленная мной действительность   не важно, если

yingfox的专栏 3336

Windows-核心编程-03-什么是内核对象

什么是”内核对象”  作为 Windows  软件开发人员,你经常都要创建、打开和处理内核对象。系统会创建和处理 几种类型的内核对象,比如访问令牌对象、事件(event)对象、文件对象、文件映射 对象、I/O 完成端口对象、作业对象、mailslot 对象、mutex 对象、pipe 对象、进程对象、semaphore 对象、线程对象、waitable timer 对象以及thread pool

XueXingYouLeMei的专栏 992
上一篇: PspTerminateProcess 结束冰刃进程
下一篇: 激活VS2008
sysprogram
博客等级 码龄17年 298粉丝 442原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值