专栏首页csicoWindows内核开发-额外篇-杂乱知识

Windows内核开发-额外篇-杂乱知识

 这个博客没啥大用,就感觉对Windows内核开发的概念就记在这里了,应该会长期更新。

驱动类型:

驱动可以分为很多类型,常见的有NT,WDM,WDF驱动,其中NT是最简单的。

WDM是NT上引入的一套驱动模型,支持一些额外的东西。WDF是对WDM的封装和升级简化了驱动。驱动大同小异,NT驱动是驱动中的基础,默认是NT驱动。

WDK

Windows Driver Kit Wndows内核驱动开发的工具包,根据操作系统的版本不同而不同,高版本兼容低版本。

内核驱动的存在方式

内核驱动作为Windows的一种系统服务来存在在操作系统中。

当要一个驱动sys文件加载到内核中,首先需要把这个sys注册(创建)成一个Windows的服务,注册成功后,该服务的信息会写入下列注册表中:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services

内核驱动的运行方式:

首先,会先在注册表里面注册为系统服务,然后将sys内核驱动文件映射到内核地址空间中,作为一个内核的驱动模块(MODULE),然后对其驱动模块进行导入表初始化、修复重定位表等操作,最后调用DriverEntry入口函数,如果返回值是STATUS_SUCCESS系统认为驱动初始化成功,如果返回别的值就会认为初始化失败,就会执行清理工作,然后移除驱动模块。

(和一个PE文件变成进程来运行比较类似)

分页内存和非分页内存

分页的意思是可以用来被磁盘(或其他介质)置换。非分页的内存就是在物理内存上直接写死,所以非分页内存比较宝贵一般用于IRQL大于等于2的代码里面。

原文链接:https://www.cnblogs.com/Sna1lGo/p/15411284.html

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 再谈Android的许可证

    1. 两周前,我写了一篇《Android,开源还是封闭?》。 其中有一些内容,我今天要做修正,还想谈一些别的感想。 2. 在谈具体的修正之前,我先来说说,那篇文...

    ruanyf
  • Kubernetes,走进未来软件世界的敲门砖

    不管你是否意识到,在过去的几年时间里,以Docker、Kubernetes为代表的容器技术已经悄然发展成为一项通用技术。放眼国外,Google、Microsof...

    我的小碗汤
  • 软件正在吃掉世界,而容器正在吃掉整个软件世界

    不管你是否意识到,在过去的几年时间里,以Docker、Kubernetes为代表的容器技术已经悄然发展成为一项通用技术。放眼国外,Google、Microsof...

    芋道源码
  • 大数据之脚踏实地学02--远程连接与目录结构

    在上一期的脚踏实地学中,我们介绍了如何在自己的Windows系统中安装虚拟机和CentOS系统,这个操作相当于模拟了一台远程服务器(注意,这是模拟哦。土豪的你可...

    1480
  • 窗口管理器 dwm安装

    上一篇博文中,已经完成了archlinux的安装,但是进去仅仅是一个冰冷冷的交互式命令窗口。没有图像,也无法打开浏览器。离日常使用还差的很远,接下来首先需要做的...

    Masimaro
  • Flask从零到一 1 | 虚拟环境和第一个flask程序

    大约还有二十天假期时间,这二十天我准备跟进一个Flask入门系列,大致会分为10-12篇文章。虽然我以后不想做开发,但是Web开发热度还是挺高的,所以就用了一段...

    奶糖猫
  • 为什么Windows/iOS操作很流畅而Linux/Android却很卡顿呢

    我就知道有人会这么说,然而那样就成了一篇议论文了,而我只是想写一篇随笔。所以,不管事实是不是那样,反正我就是觉得Windows,MacOS,iOS都很流畅,而L...

    Linux阅码场
  • 【一】Windows API 零门槛编程指南——MessageBox 基本使用及基础讲解

    本篇作为Windows API 系列文章的第一篇,将简要的讲解一下什么是Windows API,Windows API能做些什么,并且尽可能讲解一些新出现的专有...

    公众号 碧油鸡
  • Linux kernel Overview 原

    Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

    wuweixiang
  • Linux简介与厂商版本

    1. Linux简介 Linux可以有狭义和广义两种定义。狭义来说,Linux实际上指Linux kernel (内核)。内核负责管理硬件,并为上层应用提供接口...

    Vamei
  • 史上最简单的 IntelliJ IDEA 教程

    IntelliJ IDEA(简称 IDEA),是 Java 语言开发的集成环境,IDEA 在业界被公认为最好的 Java 开发工具之一,尤其在智能代码助手、代码...

    CG国斌
  • 关于图文识别功能相关技术的大致实现

    上帝
  • 关于图文识别功能相关技术的大致实现

    上帝
  • 关于图文识别功能相关技术的大致实现

    转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8908906.html

    上帝
  • 为什么Windows/iOS操作很流畅而Linux/Android却很卡顿呢

    链接:https://blog.csdn.net/dog250/article/details/96362789

    Python进击者
  • 为什么Windows/iOS操作很流畅而Linux/Android却很卡顿呢

    我就知道有人会这么说,然而那样就成了一篇议论文了,而我只是想写一篇随笔。所以,不管事实是不是那样,反正我就是觉得Windows,MacOS,iOS都很流畅,而L...

    用户6543014
  • 实用 Windows 软件系列分享(四)

    之前分享过新买了台笔记本电脑,分享些实用的Windows软件 ,实用 Windows 软件系列分享(二),实用 Windows 软件系列分享(三) ,这里继续分...

    苏生不惑
  • 程序员需要了解的硬核知识之操作系统入门

    本篇文章作为操作系统的入门文章,可能入门都算不上吧,毕竟操作系统太庞大和复杂了。本篇文章主要带你了解一下我们常用的操作系统环境。

    cxuan
  • 【大学生学编程】第十章:如何学习linux?

    从事嵌入式开发已经有十几个年头,混到现在已经是迈向40的人了,从2015年结束北漂到现在几乎每天还是在linux上操作下,现在由于电脑的配置都高了,安装个虚拟机...

    程序员互动联盟

扫码关注云+社区

领取腾讯云代金券