MSDN Kernel-Mode Driver Architecture学习笔记(1)——Introduction to Windows Drivers(1)

内核驱动安装测试工具KMDM(Kernal-Mode Driver Manager)和DebugView工具最新版 立即下载

随学随记,暂时未经编程验证 Written by HOOK_TTG(Jamie Jiang)

 

关键词:

NT-based 基于NT技术

User-Mode Drivers 用户模式驱动程序

Kernel-Mode Drivers 内核模式驱动程序

WDM(Windows Driver Mode) Windows驱动模型

1、Windows组件概述

 

下图显示了基于NT技术操作系统主要的内部组件

Windows Components

 

据上图可知,基于NT技术操作系统包含了 User-mode和Kernel-mode组件。内核模式组件中的每一个子组件都提供了定义好的便于识别使用的功能函数接口,而且每个子组件都是相互独立的。

对于Kernel-mode驱动编写者主要需要关注的执行组件有:I/O Manager(输入/输出管理器)、configuration Manager(配置管理器)、Plug and Play Manager(即插即用管理器)、Power Manager(电源管理器)、Memory Manager(内存管理器)、Executive Support(执行支持)、Process Structure(进程结构)、Kernel(内核)以及 Hardware Abstraction Layer(HAL 硬件抽象层)。有些编写者还需要关注的组件有Object Manager(对象管理器)和 Security Reference Monitor(安全基准监视器)。

在上图中,File System(文件系统)、intermediate(中间件)和Lowest-Level Drivers(底层硬件驱动)这三个组件都包含在同一个I/O Manager组件中,这是因为I/O操作的范围太广泛太复杂了,对于处理各类I/O操作的驱动也很多且琐碎。

2、Windows驱动程序的类型

微软的Windows驱动程序有两个基本类型:

l   User-mode Drivers在用户模式下运行,它们提供了一个供Win32应用程序与Kernel-mode Drivers或者其他操作系统组件之间交互的接口。

例如,在Windows Vista系统中,所有的打印机驱动程序都运行在用户模式。如果要深入了解打印机驱动组件,请参看 Introduction to Printing。

l   Kernel-mode Drivers在内核模式下运行,并且是执行组件的一部分。执行组件由内核模式操作系统组件组成,主要用来管理I/O、即插即用内存、进程和线程、安全等等。Kernel-mode Drivers是分层结构。大体上,高一层的驱动程序通常接收来自应用程序、过滤器的数据,然后将数据传递给低一层的提供设备操作的驱动程序。

有些kernel-mode Drivers还是WDM驱动程序。所有的WDM驱动程序都支持即插即用、电源管理。WDM驱动程序是源码兼容的(不是二进制码兼容),可以运行在Windows98/Me、Windows2000和更新的操作系统下。

对于操作系统本身来说,kernel-mode drivers是由分散的、模快化组件来实现的,这些组件具有一套定义良好的功能函数。所有的kernel-mode drivers都提供一套系统定义的标准驱动例行程序。

下图将kernel-mode drivers划分了几类:

Driver Level

 

上图所示,kernel-mode drivers具有三个基本类型:Highest-level、intermediate(中间)、Lowest-level。这三种类型在功能上有很大不同,但是在结构上只有轻微的不同。

1.      Highest-level drivers:包含支持文件系统的文件系统驱动(FSDs),例如:

n   NTFS 基于NT技术的文件系统

n   File allocation table(FAT) 基于文件分类表的文件系统

n   CD-ROM file system(CDFS) 光盘存储器文件系统

Highest-level drivers总是依赖低一层次的驱动支持,就像中间层功能驱动程序和底层硬件总线驱动程序。

2.      Intermediate drivers:中间层驱动程序。例如虚拟磁盘、镜像或者特定设备类型的class driver。中间层驱动程序依赖低一层次驱动程序的支持。中间层驱动程序再进一步可划分为:

n   Function drivers(功能驱动程序)控制特定I/O总线上的外围设备。

n   Filter driver(过滤器驱动程序)插入他们本身的上一层或者下一层的功能驱动中。

n   Software bus drivers(软件总线驱动程序)提交一套子设备,并供高一层的类、功能或者过滤器驱动程序附加到上面。

例如,一个控制多功能适配器的驱动程序就是一个software bus drivers,因为在多功能适配器上集成了多种设备。

n   一些系统支持的class driver提供了系统定义的class/miniclass接口。实际上一个中间层驱动程序就包含有一个或者多个相关联的miniclass drivers(有时称为minidrivers)。每个相关联的class/minidriver对提供的功能相当于一个function driver或者software bus driver。

3.      Lowest-level drivers:控制一条连接外围设备的I/O总线。Lowest-level drivers不依赖更低一层的驱动程序,因为已经是最底层了。

n   HardWare bus drivers(硬件总线驱动程序)由系统提供,并且通常控制I/O总线的动态分配。

硬件总线驱动程序与即插即用管理器协同工作来配置和重新配置系统硬件资源,为所有连接在I/O总线上的由驱动程序控制的子设备。这些硬件资源包括设备内存映射和中断请求(IRQs)。在比Windows2000系统还早的基于NT技术的操作系统中,硬件总线驱动程序归入HAL的一些组件。

n   Legacy drivers(遗留的驱动程序):直接控制物理设备的驱动程序。

 

 

【冷冻电镜】RELION5.0使用教程总结 对于您自己的数据,您可能希望使用各种倾斜系列对齐方法,然后比较每种方法生成的断层扫描图像的质量(参见下一步)。通过检查 CtfFind job 的 tilt_series 目录中的star文件来检查几个倾斜系列的散焦值。GitHub上也有人反应这个问题,目前我的解决方案是下载了较低版本的CTFFIND的,降级到4.1.10可以成功运行。此外,logfile.pdf 文件包含所有显微照片的有用参数图,例如散焦、像散、估计分辨率等,以及整个数据集中这些值的直方图。的目录,以及指向此目录的符号链接。 阅读详情

相关推荐

保姆级教程:在ESXi 8.0上为NVIDIA ConnectX-5/6网卡开启SR-IOV(从BIOS到虚拟机配置)

本文提供在ESXi 8.0上为NVIDIA ConnectX-5/6网卡开启SR-IOV的详细教程,涵盖BIOS设置、固件配置、驱动优化及虚拟机部署。通过SR-IOV技术,显著提升虚拟化环境中的网络性能,适用于高性能计算、AI训练等场景。

weixin_26934905的博客 455

关于SRVINSTW与Kernel-Mode Driver Manager

在学习内核编程时,第一次加载.sys,本人参考的资料使用的是SRVINSTW.exe,虽然功能看似细化了,便于以后的一些开发,但是作为初学者当然使用更为简单的Kernel-Mode Driver Manager啦,简简单单,而且响应很快很方便,特地记下!(本人刚开始写博客,啥也不会,就是学累了想要放松一些写点东西,本人使用Win10+WDK10+VS2019+Win7虚拟机进行开发,搭配环境时耗费了不少时间走了不少弯路,如果之后的朋友有和我一样的环境搭配,但是有一些问题无法解决,可以在作者的文章下留言,作者

stdimm的博客 1270

CTS实战:如何用set_sense优化时钟树平衡(附ICC2避坑指南)

本文深入探讨了在时钟树综合(CTS)中,如何正确使用`set_sense`命令优化时钟树平衡,并对比了其与`set_disable_timing`的本质区别。通过实战案例详细解析了`-stop_propagation`和`-clock_leaf`参数的应用场景,并提供了ICC2工具中的关键避坑指南,帮助后端工程师精准控制时钟拓扑,避免时序分析漏洞。

weixin_28933797的博客 459

Vxd,Kernel Mode Driver,和WDM的一些基本问题

来来来,一起进入这黑黑的驱动程序世界.:)  这里要讲的是Vxd,Kernel Mode Driver,和WDM的一些基本问题.  什么是VxD?    VxD乃 VIRTUAL X DRIVER.哎,说了也白说.其实就是虚拟设备驱动程序.是系统用于对各种硬件资源识别,管理,维护运作的扩展.VXD和VMM(虚拟机管理器)一起合作,维持着系统的运作.VxD模式从WIN3X时代就开始了.一直到了WIN

pazo_100的专栏 938

HPE磁盘阵列管理04——MSA事件

本文介绍了HPE MSA存储系统的事件处理机制,重点分析了常见磁盘故障事件及其解决方案。文章首先定义了MSA事件的五个严重级别(严重、错误、警告、信息和解决),然后详细列举了多个典型事件案例(如事件1、3、6、8、172等),包括每种事件的触发条件、对系统的影响以及具体修复步骤。针对磁盘故障场景,文章提供了更换磁盘、重建磁盘组、取消隔离等操作建议,并强调应及时配置备用磁盘以降低数据风险。最后指出更详细的事件说明可参考《MSA事件描述参考指南》,并提供了HPE官方手册下载链接。全文为技术人员处理MSA存储故障

istrangeboy&begin zero的博客 1121

逆变器并联--下垂控制引入虚拟阻抗

说明传统下垂控制的缺点、分析虚拟阻抗的原理和实现方法

weixin_58670090的博客 1万+

User Mode Driver Management介绍(一)

<br />User Mode Driver介绍<br />       Windows CE 6.0中引入了User Mode Driver的概念,可是无论是网上,还是各个芯片厂商提供的方案中,都很少提及这方面的内容。<br />       本文以小郭对存储管理和User Mode Driver Host的理解为基础,结合具体的代码实现,从User Mode Driver的加载流程的角度分析了存储管理对User Mode Driver的处理过程。<br />       由于个人知识水平和项目经验有限,

zmq5411的专栏 1903

C#调用企业微信JS-Sdk实现扫描二维码

企业微信JS-SDK是企业微信面向网页开发者提供的基于企业微信内的网页开发工具包。通过使用企业微信JS-SDK,网页开发者可借助企业微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用企业微信分享、扫一扫等企业微信特有的能力,为企业微信用户提供更优质的网页体验提示:生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是H5应用调用企业微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。

清浅 937

MSDN Kernel-Mode Driver Architecture学习笔记(1)——Introduction to Windows Drivers(2)

内核模式驱动程序涵盖了许多操作系统的设计目标,特别是系统的I/O管理器。 下面几点是设计内核模式驱动程序的目的: Portable(可移植性):便于从一个平台移植到另一个平台

HOOK_TTG( Jamie Jiang )的专栏 1269

YOLOv8改进,MobileNetV3轻量化架构改进特征提取网络,助力涨点

MobileNetV3通过结合硬件感知网络架构搜索(NAS)和NetAdapt算法,通过新颖的架构改进进一步提升了性能。本文开始探讨了自动化搜索算法与网络设计如何协同工作,以利用互补方法来提升整体技术水平。通过这一过程,创建了两个新的MobileNet模型:MobileNetV3-Large和MobileNetV3-Small,分别针对高资源和低资源使用场景。这些模型随后被适配并应用于目标检测和语义分割任务。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3835

五步教你用GPT-5画出国自然技术路线图!轻松节省80%画图时间(附AI提示词)

七哥给大家推荐的高校都在用的AI平台——高级学术版专业应用平台,集成了ChatGPT、Claude、Gemini、Grok等Al大模型的PLUS版本平台,包括 ChatGPT-5、4o、o3、4.1、4.5、Gemini 2.5 Pro、Claude 3.7、Claude 4、DeepSeek 满血版、Grok 3 、Grok 4等原生线路,还有国际主流的GPTs学术应用,可以辅助大家高效完成科研和学术写作任务,当然撰写硕博论文,课题、职称论文、国社科、国自然基金本子也是手拿把掐。

智能AI让学术科研更容易 1501

MSDN Kernel-Mode Driver Architecture学习笔记(1)——Introduction to Windows Drivers(3)

基于NT技术的操作系统无论在单处理器还是对称多处理器(SMP)平台上运行的结果都是完全一致的,因此内核模式驱动程序也必须按照这个要求设计。

HOOK_TTG( Jamie Jiang )的专栏 1494

机器人中的数值优化(一)—— 数学优化、凸集合与凸函数

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例。

慕羽★的博客 2521

Kernel-mode Driver打开时需要admin访问权限问题

前一阵儿写的driver需要管理员权限才能打开,否则CreateFile的时候返回Error Code:5, Access Denied。解决方法如下: http://msdn.microsoft.com/en-us/library/windows/hardware/gg487483.aspx 在ClassInstall里面的Addreg里面需要添加类似如下代码: HKR

alvin54188的专栏 822

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

显示器驱动程序 NVIDIA Windows Kernel Mode Driver Version 已停止响应 并且己成功恢复 解决方法...

 原文:http://news.160.com/?p=1890 在玩游戏中 经常 出现显示器驱动程序 NVIDIA Windows Kernel Mode Driver Version 已停止响应 并且己成功恢复  报错下面提供几种方法可以快速排除这类问题原因 (如上图 NVIDIA Windows Kernel Mode Driver ) 显示器驱动程序已停止响应 并且已成功恢复 出现...

weixin_34211761的博客 8085

pscad IEEE标准系统搭建说明

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

【Windows 内核基础篇】- 驱动入门01 - 驱动基础

定义:Windows NT 是 Microsoft 开发的一系列操作系统的基础架构,首次发布于 1993 年。它是 Windows 操作系统的内核,支持多种硬件平台。特点多用户和多任务:Windows NT 支持多用户和多任务处理,允许多个用户同时使用系统。安全性:提供了强大的安全模型,包括用户权限和访问控制。可移植性:设计上支持多种硬件架构,如 x86、x64、ARM 等。模块化:操作系统的设计允许各种组件独立运行和更新。版本。

YuSec 1357

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

vs2019写个驱动测试

按着shift,重启系统 -》选择高级选项 -》选择启动设置,进入启动选项界面,选择“进入驱动程序强制签名”(一般为F7按键)。我这里用的是VS2019,VS2022不再支持win10的WDK(那个扩展装不了),而2022的WDK驱动根本没有x86版本的。(3)如果需要回复驱动签名检测,执行如下脚本,然后在bios里面启用security boot。安装器里把这个勾上,如果你安装了某个套餐,应该会有个SDK对应的版本,那么就不用装了。(2)执行如下命令,禁用驱动签名检测。如果 仅是测试驱动,用如下方法。

babytiger的专栏 805

MSDN Kernel-Mode Driver Architecture学习笔记(4)——Kernel-Mode Driver Components (1)

本节介绍内核模式驱动程序包含的标准例程。这些标准驱动程序例程的一些是必需的,一些是可选。本节也介绍驱动程序对象,其包含了指向每个驱动程序标准例程的指针。

HOOK_TTG( Jamie Jiang )的专栏 1313

无法找到 WindowsKernelModeDriver10.0 的生成工具

无法找到 WindowsKernelModeDriver10.0 的生成工具(平台工具集 =“WindowsKernelModeDriver10.0”)。若要使用 WindowsKernelModeDriver10.0 生成工具进行生成,请安装 WindowsKernelModeDriver10.0 生成工具。或者,可以升级到当前 Visual Studio 工具,方式是通过选择“项目”菜单或右键单击该解决方案,然后选择“重定解决方案目标”。

本博客仅供免费阅读,不提供咨询服务。请勿私信。 1万+

MSDN系列(12)--KMD(Kernel Mode Driver)的编写安装与调试

创建: 2004-07-06 20:17更新: 2004-07-12 14:47链接: http://www.opencjk.org/~scz/windows/200407121605.txt--------------------------------------------------------------------------    ☆ 概述    ☆ 编写loopback.c文件  

3858

Kernel-Mode Driver Fra…

Kernel-Mode Driver Framework (KMDF) is a library that you can use to develop kernel-mode drivers that support the Microsoft Windows Driver Model (WDM). The framework's library is included in the Windo

tony_0620的专栏 921

驱动开发:实现驱动加载卸载工具

驱动程序加载工具有许多,最常用的当属KmdManager工具,如果驱动程序需要对外发布那我们必须自己编写实现一个驱动加载工具,当需要使用驱动时可以拉起自己的驱动,如下将实现一个简单的驱动加载工具,该工具可以实现基本的,安装,加载,关闭,卸载等操作日常使用完全没问题。

微软技术分享 2万+

基于Windows8与Visual Studio11开发第一个内核驱动程序

Windows 驱动程序的发展演变 我们在学习开发驱动程序时有必要弄清楚Windows设备驱动程序的发展演变过程(为了简便起见,以下简称驱动程序),以便明白我们将要开发什么样的驱动程序。这就象你开发一个应用程序时必须弄清楚它是运行在WINDOWS平台下还是在DOS平台下,否则我们能写出什么样的应用程序就可想而知了。 驱动程序开发者的各项任务之中,有许多是为特定的硬件编写驱动程序。由...

weixin_30553777的博客 400

白帽黑客系列教程之Windows驱动开发(64位环境)入门教程(五)

在本文中,主要讲解 KMDF(Kernel-Mode Driver Framework)驱动程序中的队列头文件 queue.h 的相应代码内容。

fearhacker的专栏 724

【Linux】内核结构

一、Linux内核结构介绍一、Linux内核结构介绍Linux 内核是操作系统的核心部分,它负责管理系统的资源、进程调度、设备驱动程序等核心功能。这些组件一起构成了 Linux 内核的核心结构。内核的源代码是 modulized 的,允许添加或删除特定功能的模块,以适应不同的需求。整个内核的结构和实现细节非常庞大,具体的功能和特性取决于具体的内核版本和配置。

咖喱年糕的博客 2372
上一篇: The GNU C Library Reference Manual—Virtual Memory Allocation And Paging笔记(3)
下一篇: MSDN Kernel-Mode Driver Architecture学习笔记(1)——Introduction to Windows Drivers(2)
HOOKTTG
博客等级 码龄20年 25粉丝 29原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值