windows内核API种类

2023-11-02

在初学windows驱动时,开始除了要学习驱动的加载、调试等准备工作后,就要学习内核的API了,作为初学者在刚刚看到那些很陌生的函数时可能会感到很迷茫,其实这些都是很正常的,就像我们在刚刚接触编程时那样。

 今天我在我第一篇正式的博文中总结一下windows内核API函数大概的分类,以便以后看到这些函数时首先能通过函数的名字判断出这个函数大概是做哪方面的工作。

 大部分内核API都会有前缀,例如Io、Ex、Rtl、Ke、Zw、Nt、Ps、Ndis等等,下面就是各种前缀的函数它们主要功能。

  1.Io-系列函数

   这类函数的操作是和IO管理器相关的,IO管理器就是将用户调用的API函数翻译成IRP或者将等价请求发

   送到内核各个不同的设备的关键组件。这个类别的函数是我们在处理请求时最常调用的。

   例如:IoCreateFile               打开文件,这个函数比ZwCreateFile更加底层。

         IoCreateDevice             生成一个设备对象。

         IoCallDriver               发送请求,IO管理器调用这个函数把不同的IRP发送到不同的设备。

         IoCompleteRequest          完成请求。

         IoCopyCurrentIrpStackLocationToNet 将当前Irp栈空间所想拷贝到下一个栈空间。

         IoSkipCurrentIrpStackLocationToNext 跳过当前IRP的栈空间。

         IoGetCurrentStackLocatio 获得Irp的当前栈空间指针。

  2.Ex-系列函数

   这类函数主要用于内存的分配和获取互斥体。

   例如:ExAllocatePool             内存分配。相当于malloc。

         ExFreePool                 内存释放。相当于free。

         ExAcquireFastMutex         获取一个快速互斥体。

         ExReleaseFastNutex         释放一个快速互斥体。

         ExRaiseStatus              抛出一个异常,带有一个错误的status值,用于从代码很深的地

                                     方直接报错。

  3.Zw-和Nt-系列函数

   这类函数主要用于文件和注册表的操作。Zw和Nt函数具有同样的功能,中间实际上是从Zw函数到Nt函数的

   简单跳转。这些函数都有同名的用户态API函数与之对应,而用户态同名函数可以用于所谓的Native程序,

   所以这个系列的函数不管是用户态还是内核态都被称为Native API。

   例如:ZwCreateFile\NtCreateFile                   打开文件

         ZwWriteFile\NtWriteFile                     写文件

         ZwReadFile\NtReadeFile                      读文件

         ZwQueryDirectoryFile\NtQueryDirectoryFile   目录查询

         ZwDeviceIoControlFile\NtDeviceIoControlFile 发出设备控制请求

         ZwCreateKey\NtCreateKey                     打开一个注册表键

         ZwQueryValueKey\NtQueryValueKey             读取一个注册表中的值

  4.Rtl-系列函数

   这类函数主要用于字符串操作和对内存的操作。

   例如:RtlInitUnicodeString            初始化一个字符串

         RtlCopyUnicodeString            拷贝字符串

         RtlAppendUnicodeToString        将一个字符串追加到另一个字符串后

         RtlStringCbPrintf               将字符串打印到一个字符串中。相当于sprintf

         RtlCopyMemory                   内存数据块拷贝

         RtlMoveMemory                   内存数据块移动

         RtlZeroMemory                   内存数据清零

         RtlCompareMemory                内存比较

         RtlGetVersion                   获得当前windows版本

  5.其他

   Ps系列函数:这类函数大多是与进程、现成信息相关。

   Ndis系列函数:这类函数是用来开发NDIS网络驱动。


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

windows内核API种类 的相关文章

  • 周杰伦演唱会总是抢不到票?教你用Python做一个自动抢票脚本

    相信想去周董演唱会的大家都用过大麦网抢票吧 可是 抢不到啊 该说不说 我抢到了 那么 今天带大家用Python来制作一个自动抢票的脚本小程序 知识点 面向对象编程 selenium 操作浏览器 pickle 保存和读取Cookie实现免登陆
  • CSMA/CD算法过程模拟——数组模拟信道(C/C++)

    代码完成于2021 11 12 整体思路 用两个数组分别模拟 A gt B 和B gt A间通讯的信道 A B两主机各自拥有独立线程 线程move用来模拟信道中信号的移动 线程show用于打印信道 其中线程move和show detach
  • Windows系统中Apache Http服务器简单使用

    1 简介 Apache HTTP服务器是一个开源的 跨平台的Web服务器软件 它由Apache软件基金会开发和维护 Apache HTTP服务器可以在多种操作系统上运行 如Windows Linux Unix等 并且支持多种编程语言和技术
  • 【Unreal】TArray与std::vector之间转换

    std vector data 返回一个指向内存数组的直接指针 该内存数组由vector内部用于存储其拥有的元素 TArray GetData 同理 FMemory Memcpy 则将指定位置和大小的数组的内存空间拷贝 覆盖 到另一处指定的
  • scala 的模式匹配与类型系统

    主要内容 1 scala模式匹配 2 scala类型系统 scala模式匹配 scala中的模式匹配与java中的switch case很类似 但是不同的是java中switch case只能匹配值 而scala模式匹配更强大 还可以对类型
  • Python 预测股票价格,竟然这么简单

    作为一种技术手段 预测在金融 证券领域的应用非常广泛 尤其是对股票价格的预测 我们介绍一下获得股票数据的方法 并基于此对数据进行预处理 接着使用数据分析方法 建立基础特征 进一步构建预测模型 且基于新数据验证模型效果 拟使用 VAR 及LS
  • windows内核API种类

    在初学windows驱动时 开始除了要学习驱动的加载 调试等准备工作后 就要学习内核的API了 作为初学者在刚刚看到那些很陌生的函数时可能会感到很迷茫 其实这些都是很正常的 就像我们在刚刚接触编程时那样 今天我在我第一篇正式的博文中总结一下
  • Vim,人类史上最好用的文本编辑器!从此以后你就是一个善良的极客!

    CSDN 的小伙伴们 大家好 我是沉默王二 写完 Shell 那篇后就想写 Vim 了 因为人类史上最好的文本编辑器就是 Vim 不赞同的请自觉持有保留意见 哈哈哈 Better Stronger Faster 用这三个单词来赞美 Vim
  • Java开源的规则引擎 Drools 电商行业实战(含完整代码)

    前言 我所在项目组刚好接到一个领取优惠券需求 具体需求是用户领取的各种类型的优惠券 比如 代金券 折扣券 数量不能超过某个自定义数量 因考虑到领取限制数量是动态的 另外考虑到扩展性 满足将来业务规则的增长 不只是限制领取数需要新加其他条件
  • 一个“程序员的自我修养”是什么?

    在 喜剧之王 中 周星驰扮演的尹天仇 一直梦想成为一名演员 而他不管是在扮演跑龙套 或者在街坊中开设演员训练班 亦或成为主角时 他对待演员的态度 始终是认真 热爱而又投入的 而那一本他随身携带的书 演员的自我修养 尽管不知道里面具体写的是什
  • 适合零基础学习的IT编程技术

    现在很多应届生 不管是否是计算机专业 都想毕业后从事IT行业 不仅是因为IT行业的薪资高 更主要是IT行业就业需求多 发展好 工作稳定 学IT 技术在手 天下我走 当然 IT行业有很多学科方向 学习哪个方向很重要 选择方向这件事 有时候就是
  • 大学最应该学习的 5 门课, 毕业后大厂 Offer 直接拿到手软!

    时间如白驹过隙 我竟然已经是一名拥有 13 年编程经验的老油条了 有些自豪 因为自己从大一就开始学习的 Java 语言依然坚挺 几乎是编程语言中的霸主了 但也有些遗憾 大学的时候没有把这些计算机基础课程学好 有些甚至没有学 导致工作后有很长
  • 火爆!GitHub 标星 144k 的前后端学习路线,2021 年最新整理,看完后不再迷茫不再徘徊

    正在光顾 CSDN 的你 好呀 我是沉默王二 上周在欣赏阮一峰老师的 科技周刊 时 发现了一个牛逼的学习路线 在 GitHub 上已经标星 144k 了 简直火爆 里面不仅涵盖了前端和后端的学习路线 还有运维的学习路线 作为一名程序员 如果
  • 第十届蓝桥杯国赛 G排列数(动态规划精简题解+图解)

    动态规划 集合 f i j f i j f i j 表示填了前
  • 给Listview加上进度条

    procedure TMainForm FormShow Sender TObject var I Integer ProBar TGauge Li TListItem begin for I 0 to DataListView Items
  • tcl加载tcom扩展包的一个实例

    函数名 readconfig 输入参数 无 返回参数 返回一个列表 proc readconfig package require tcom 创建com实例 set excel tcom ref createobj Excel Applic
  • Python基本语法,python入门到精通

    python你不去认识它 可能没什么 一旦你认识了它 你就会爱上它 Python基本语法 1 定义变量 代码正文 x 1 y 2 z x y Python定义变量的方式呢很简单 就是上面这段代码 相信只要稍微懂点数学的人都能看懂这段代码的含
  • VS Code Material Icon Theme插件设置自定义文件夹图标关联

    VS Code Material Icon Theme插件设置自定义文件夹图标关联 方法与分析 自定义文件夹图片命名和位置如下 vscode extensions pkief material icon theme 4 5 0 icons
  • 实体类(VO,DO,DTO)的划分

    经常会接触到VO DO DTO的概念 本文从领域建模中的实体划分和项目中的实际应用情况两个角度 对这几个概念进行简析 得出的主要结论是 在项目应用中 VO对应于页面上需要显示的数据 表单 DO对应于数据库中存储的数据 数据表 DTO对应于除
  • 【git学习笔记 01】打标签学习

    文章目录 一 声明 二 对标签的基本认知 什么是标签 为什么要打标签 如何生成类似github中readme的图标 三 标签相关命令 四 示例操作 一 声明 本帖持续更新中 如有纰漏 望批

随机推荐

  • 基于应力的拓扑优化的高效3D灵敏度分析代码(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 本文包括基于伴随方法的有限元分析和 p 范
  • ROS直接pub compressed image.

    如果用ros的 image transport Publisher 发布图片的话则 ros会自动添加一个 image compressed的topic 将原始图像编码 编码方式可以设置为png jpeg 有时候我们获取到的图片就是编码之后的
  • javascript作用域

    原文地址 http wenku baidu com view a4290ad9ce2f0066f5332229 html 关于js的作用域链 早有耳闻 也曾看过几篇介绍性的博文 但一直都理解的模棱两可 近日又精心翻看了一下 悟透Javasc
  • 订单系统、报名、预约、表单系统 定制开发功能展示

    安装教程环境说明 正常情况下PHP5 3 5 6 阿帕奇 mysql安装即可 安装说明 1 上传源码压缩包到网站根目录 这个请去问下空间商哪个是根目录 每家服务器商不一样 我们也不能确定 请确定是根目录再安装 2 解压源码到根目录然后打开网
  • Qt TableWidget插入QComboBox下拉框

    话不多说 以下是效果图 直接上代码 初始化QTableWidget Function partTableInit Description 初始化tablewidget 并设置表头列文字 Input QTableWidget tableObj
  • Failed to calculate the value of task ‘:xxx DebugJavaWithJavac‘ property ‘options.generatedSourceOut

    Caused by org gradle api internal provider AbstractProperty PropertyQueryException Failed to calculate the value of task
  • LightGBM的黑科技--plot函数

    本教程教萌新如何使用lightgbm里面可视化函数 作者 JasonChen 文章内容概览 保留训练结果 plot metric 函数的使用 重要 plot importance 函数的使用 重要 plot tree 函数的使用 可选 cr
  • Iterator对象

    Iterator对象 是一个引用型变量 他存在的意义在于 为了遍历容器对象中的元素而不暴露容器对象内部的细节 iterator 方法是容器变量使用 返回一个Iterator对象 该对象也是一个容器 因为他里面存放着即将访问的容器对象的元素
  • python怎么统计单词总数_利用Python的 counter内置函数,统计文本中的单词数量

    counter是 colletions内的一个类 可以理解为一个简单的计数器 可以统计字符出现的个数 例子如下 importcollections str1 a a b d m collections Counter str1 print
  • SSD算法详解 及其 keras实现 (下)

    在上一篇的博客讲述了SSD的原理 这一篇主要是讲解keras的实现 keras代码的github地址为 点击打开链接 model 的框架实现 ssd py 先给出了改变后的VGG16的实现 def SSD300 input shape nu
  • MybatisPlus多表连接查询

    一 序言 一 背景内容 软件应用技术架构中DAO层最常见的选型组件为MyBatis 熟悉MyBatis的朋友都清楚 曾几何时MyBatis是多么的风光 使用XML文件解决了复杂的数据库访问的难题 时至今日 曾经的屠龙者终成恶龙 以XML文件
  • FPGA网络通信 ——RGMII传输

    一 RGMII特点 RGMII采用双沿传输 DDR接口 在CLK的上升沿和下降沿都各传输一次数据 同时 TX ER 和RX ER 信号编码进了TX CTL 和RX CTL 信号中 不再使用独立的信号线 这两个信号传输也是通过上升和下降沿来区
  • vue3 中绑定多个ref对象

    for循环中 如果给每一个元素绑定一个特定的ref值 ref xxx 那么就要定义N多个变量来分别接受它们 显然不现实 1 在setup中定义一个常量xxxrefs用来接受所有for循环设置ref的元素 ref中必须要是空数组 const
  • python3安装matplotlib的两种方法_如何安装matplotlib与Python3.2

    Matplotlib支持python 3 x版本1 2 发布于2013年1月 要安装它 看看installation instructions 一般来说 调用pip install matplotlib或使用您的首选机制 conda hom
  • c语言编程人狼羊菜过河,基于visual Studio2013解决C语言竞赛题之1079狼羊过河

    题目 解决代码及点评 79 猎人过河 猎人要把一只狼 一头羊和一些白菜从河的左岸带到右岸 但他的船太小 一次只能带一样 因为狼要吃羊 羊会吃白菜 所以狼和羊 羊和白菜不能在无人监视的情况下相处 问猎人怎样才能达到目的 请编程序实现猎人过河
  • SpringBoot注解使用redis做缓存总结

    前言 个人工作中对此相关内容的总结 部分资料来源于网上 一 Cacheable CachePut CacheEvict 注释介绍 Cacheable Cacheable 的作用 主要针对方法配置 能够根据方法的请求参数对其结果进行缓存 主要
  • nmtui 和 nmcli 命令 配置网络

    目录 一 nmtui命令 修改静态IP地址 二 nmcli命令 基于命令行配置网卡参数 三 绑定两块网卡 1 创建出一个bond网卡 2 向bond0设备添加从属网卡 3 配置bond0设备的网络信息 4 启动和测试 一 nmtui命令 修
  • 第001天:第一行Android代码

    1 1 了解全貌 Android王国简介 Android从面世以来到现在已经发布了二十几个版本了 在这几年的发展过程中 谷歌为 Android王国建立了一个完整的生态系统 手机厂商 开发者 用户之间相互依存 共同推进着 Android的蓬勃
  • 人体姿态识别(毕业设计+代码)

    模型效果 从下图可以清楚的看到 提出的模型可以对人眼以及嘴巴进行描述 最终的是对每个关节点进行了划分和表示 前言 从视频中进行人体姿势估计在各种应用中都扮演着关键角色 例如量化身体锻炼 手语识别和全身手势控制 例如 它可以成为瑜伽 舞蹈和健
  • windows内核API种类

    在初学windows驱动时 开始除了要学习驱动的加载 调试等准备工作后 就要学习内核的API了 作为初学者在刚刚看到那些很陌生的函数时可能会感到很迷茫 其实这些都是很正常的 就像我们在刚刚接触编程时那样 今天我在我第一篇正式的博文中总结一下