驱动简介:
从本质上说,驱动是一个软件程序 。它负责在操作系统和硬件设备之间建立通信。
另一个比喻:驱动是硬件的"灵魂 "。硬件插上电脑后只是"肉体 ",驱动被安装后,操作系统才学会如何唤醒它的能力,比如让显卡显示3D画面,让网卡上网。
*Windows系统------驱动包的组成:
一个完整的驱动程序"包",通常由三个部分组成:
1、驱动程序的可执行文件(*.sys)
这是驱动的核心大脑,里面是你写的所有逻辑代码,比如"检测到温度过高,就关闭风扇"。它被编译为.sys格式后,在安装时会位于C:\Windows\System32\drivers\文件夹下。它运行在CPU的Ring0(内核模式),拥有最高权限,负责直接与硬件打交道。
2、驱动程序安装信息文件(*.inf)
这是一个告诉Windows如何安放你的驱动的说明书,它包含:
① 这个驱动适配哪个硬件(硬件ID)
② 驱动文件(*.sys)应该复制到哪里
③ 需要在注册便中写入什么信息来让系统识别这个驱动
3、驱动程序目录文件(*.cat)
这是一个数字身份证(防伪标签)。
它证明了你的驱动文件是经过微软测试和签名的,没有被篡改过。
System32文件夹 为何以32结尾?是否表明其下文件都是32位的?
以32结尾并不代表其下文件都是32位的,这是一个历史遗留的命名问题。
在早期系统中,System表示16位目录,System32则表示32位目录。
后来出了64位Windows,64位系统文件也放在 C: \ Windows \ System32 下。
而把真正的32位系统文件放在:C: \ Windows \ SysWOW64下。
WOW64 = Windows - on - Windows64,负责运行32位程序的子系统。
普通程序(.exe)如何间接使用?
普通程序运行在 Ring 3(用户模式) ,没有权限直接碰
.sys。它们必须通过 Windows API 作为桥梁:
调用 API :比如调用
CreateFile、DeviceIoControl、ReadFile、WriteFile。系统服务分发 :这些 API 会触发一个"系统调用"(如
syscall指令),CPU 从 Ring 3 切换到 Ring 0。I/O 管理器 :Windows 内核收到调用后,会创建一个 IRP(I/O 请求包)。
传递给驱动 :I/O 管理器根据你打开的设备句柄(如
\\.\MyFan),找到对应的设备栈,把 IRP 分发给最上层驱动。逐层传递 :IRP 沿着设备栈向下传递,最终到达你的
.sys驱动中的回调函数(比如EvtIoDeviceControl)。关键点 :
.sys里的函数不是被.exe直接调用 的,而是被 I/O 管理器 通过 IRP 回调 的。可以用一个类比:
应用程序:顾客
Windows API :餐厅的菜单
syscall 指令 + CPU 模式切换 :服务员把菜单送到后厨窗口
I/O 管理器 :后厨的调度主管
你的驱动 (.sys) :炒菜的厨师
顾客(应用程序)不能直接指挥调度主管(I/O 管理器)。顾客只能按照菜单(API)点菜,然后服务员(syscall)把单子送到后厨。调度主管看到单子后,才会安排厨师做菜。
Windows电脑 驱动 笔记
nnsix2026-06-11 10:43
相关推荐
学计算机的计算基12 分钟前
操作系统内存管理全解:虚拟内存、页表、COW、malloc、OOM一篇搞定AOwhisky18 分钟前
Python 学习笔记(第五期)——组合数据类型:列表、元组、集合与字典精讲——核心知识点自测与详解砚凝霜20 分钟前
软考网络工程师|第 2 章 信道延迟、传输介质、数据编码、数字调制、PCM 完整备考笔记遇乐的果园13 小时前
前端学习笔记-vue加载渲染优化遇乐的果园15 小时前
前端学习笔记-vue状态管理优化摇滚侠16 小时前
Java 全栈开发实战教程 课程笔记 29-33茯苓gao16 小时前
嵌入式开发笔记:EtherCAT协议从硬件到软件完整配置指南——从零搭建一套EtherCAT通信系统whyTeaFo17 小时前
GAMES101: Lecture 9: Shading 3(Texture Mapping cont.) ppt笔记chase。18 小时前
【学习笔记】PointWorld:迈向通用机器人操控的3D世界模型星恒随风20 小时前
C++ STL 栈详解:stack 的使用、经典题目与简单模拟实现