内核与驱动
文章平均质量分 96
学习内核的笔记
hskull
为天地立心,为生民立命,为往圣继绝学,为万世开太平。
-----哈哈,说笑了,我哪有那么叼
展开
-
内核与驱动_09_串口过滤原理及代码
文章目录过滤的概念设备绑定的内核API之一绑定示例设备绑定的内核API之二生成过滤设备并绑定从名字获得设备对象绑定所有串口代码完整代码过滤的概念过滤–是一个极其重要的概念。它是在不影响上层和下层接口的情况下,在Windows系统内核中加入新的层,从而不需要修改上层的软件或者下层的真实驱动程序,就加入了新的功能的技术。串口通信(Serial Communications):就是串口按位(bi...原创 2020-02-17 22:33:27 · 305 阅读 · 0 评论 -
内核与驱动_08_键盘驱动原理及代码
文章目录技术原理Windows中从击键到内核流程键盘硬件原理键盘过滤的框架搭建应用设备扩展键盘过滤模块的动态卸载键盘过滤的请求处理通常的处理PNP的处理读的处理读完成的处理从请求中打印出按键信息从缓冲区中获得KEYBOARD_INPUT_DATA从KEYBOARD_INPUT_DATA中得到键从MakeCode得到实际字符完整代码技术原理Windows中从击键到内核打开任务管理器,可以看到...原创 2020-02-17 22:29:01 · 1604 阅读 · 1 评论 -
内核与驱动_07_64-32位差异
文章目录概述64位系统新增机制WOW64子系统文件系统重定向器注册表系统重定向器PathGuard技术64位驱动编程差异汇编嵌入变化数据结构调整数据结构调整概述64位系统现在已经可以说是最主要的使用系统了,开发者在开发内核模块时需要同时考虑在两者之上兼容运行的必要。所以认识64位系统和32位系统的编程差异是很重要的。64位系统新增机制WOW64子系统WOW64子系统(Window...原创 2020-02-17 22:23:17 · 322 阅读 · 0 评论 -
内核与驱动_06_时间与定时器
文章目录获取当前“滴答”数获取当前系统时间使用示例定时器书中封装的定时器获取当前“滴答”数获取系统日期和时间往往是为了写日志,获得启动毫秒数则常用来做随机数种子。有时也使用时间相关的函数来寻找程序的性能瓶颈。在内核中有一个函数KeQueryTickCount,返回系统自启动之后经历的毫秒数。VOID KeQueryTickCount( OUT PLARGE_INTEGE...原创 2020-02-14 17:06:16 · 206 阅读 · 0 评论 -
内核与驱动_05_注册表
文章目录注册表操作常用API基础操作打开:读:写驱动中注册表使用高级操作-遍历注册表注册表操作与应用程序编程的方式类似,注册表是一个巨大的树形结构,操作一般都是打开某个子健,子健下有若干个值可以获得,每一个值有一个名字。子健一般用一个路径来表示,与应用程序编程不同的是这个路径的写法不一样,在应用编程中需要提供一个根子健的句柄,而驱动编程中则需要全部用路径表示。下述是一个根子健句柄与内核注...原创 2020-02-14 17:03:25 · 632 阅读 · 2 评论 -
内核与驱动_04_文件操作
文章目录文件操作概述使用OBJECT_ATTRIBUTES打开和关闭文件打开文件文件读/写操作读写使用示例遍历文件文件操作概述在内核中也是可以操作文件的,在用户层中我们操作文件是会提供一个路径,但是在内核中,我们需要在路径前加上\\??\\。使用OBJECT_ATTRIBUTES在内核中进行文件操作时并不直接接受一个字符串路径,使用者必须首先填写一个OBJECT_ATTRIBUTE...原创 2020-02-14 17:00:25 · 480 阅读 · 0 评论 -
内核与驱动_03_自旋锁
文章目录几个常见的锁读写锁互斥锁自选锁使用队列自旋锁提高性能几个常见的锁多线程中如链表等数据结构的同步问题是进行驱动开发时必须所考虑到的问题,这个时候就必须使用到锁。读写锁特点:读写所有三种状态:读加锁状态、写加锁状态和不加锁状态。其中,只有一个线程可以占有写状态的锁,但是可以有多个线程占用读状态的锁,这也是它可以实现高并发的原因。当其处于写状态锁下,任何想要尝试获得锁的线程...原创 2020-02-14 16:49:51 · 396 阅读 · 0 评论 -
内核与驱动_03_内存、链表与字符串
文章目录内存内存的分配与释放链表字符串操作使用字符串结构字符串的初始化字符串拷贝字符串的连接字符串打印内存内存的分配与释放内存泄漏是一个长久的顽固问题,不论是用户层程序开发还是内核开发,都需要主要这个问题。在驱动中进行内存分配最常用的函数是ExAllocatePoolWithTag,下面是一个使用示例NTSTATUS status=NULL;//定义一个分配内存标记//这里要注意...原创 2020-02-14 16:46:48 · 213 阅读 · 0 评论 -
内核与驱动_02_API收集
驱动开发部分API收集,不定期更新原创 2020-02-14 16:42:37 · 214 阅读 · 0 评论 -
内核与驱动_01_内核通信实战
基于IRP进行的R0~R3的通信实战完成了基础的通信实战和带有额外信息的DeviceIoControl通信原创 2020-02-02 20:44:44 · 246 阅读 · 0 评论 -
内核与驱动_00_内核编程基础知识
内核编程环境概述在Windows下,32为系统中每个进程都有其自身享有的4GB内存空间,每个进程的内存空间都是相互隔离的。其中低2GB是用户空间,高2GB是内核空间。原则上,每个进程的高2GB内核空间内的数据是共享的,即绝大部分都是一样的。而内核空间是受到硬件保护的,比如在x86架构下R0层(Ring0)的代码才可以访问内核空间,普通的应用程序编译出来后都运行在R3层,R3层程序要调用R0...原创 2020-02-02 20:29:45 · 837 阅读 · 0 评论