WDF驱动中KMDF与UMDF区别

众所周知, 早期的Windows 95/98的设备驱动是VxD(Virtual Device Driver),其中x表示某一类设备。从Windows 2000开始,开发驱动程序必以WDM(Windows Driver Model)为基础的,但是,如果使用DDK来开发WDM,其开发难度之大,根本不能奢望像用户模式应用程序开发那样容易,因此,一般用户都是使用WinDriver、DriverStudio之类的第三方工具。为改善这种局面,从Vista开始,微软推出了新的驱动程序开发环境WDF(Windows Driver Foundation )。WDF和WDM的关系有点类似于MFC和Windows SDK的关系,有编程经验的人一看就知道为何WDF开发比WDM容易了。WDF有KMDF(内核模式的驱动程序)和UMDF(用户模式的驱动程序)两种模式:


1、内核模式驱动程序 KMDF(Kernel-Mode Driver Framework): 
这类驱动程序作为内核模式操作系统组件的一部分执行,它们管理I/O、即插即用、内存、进程和线程、安全等。内核模式驱动程序通常为分层结构。 关于KMDF更多的内容,可参阅 MSDN中“Getting Started with Kernel-Mode Driver Framework ”。


2、用户模式驱动程序 UMDF(User-Mode Driver Framework): 
 这类驱动程序通常提供 Win32 应用程序与内核模式驱动程序或其他操作系统组件之间的接口。用户模式驱动程序支持基于协议或基于串行总线(如摄像机和便携音乐播放器)的设备。关于KMDF更多的内容,可参阅 MSDN中“ Introduction to UMDF“。


3、无论内核模式的驱动程序或者用户模式的驱动程序,都使用同一环境进行构建,这一环境称为WDK;都采用同一套对象模型构建,采用同一个基础承载,这个基础就是WDF。由于WDF驱动模型提供了面向对象和事件驱动的驱动程序开发框架,大大降低了开发难度。从现在开始,掌握Windows设备驱动程序的开发人员,由过去的“专业”人士,将变为“普通”大众。因此,像WinDriver、DriverStudio之类的第三方工具也随之退出历史舞台。


4、KMDF是Windows系统底层驱动,文件名为:*.SYS,Vista为2万多外设提供了KMDF,其中也包括USB2.0,因此对于具有USB2.0协议的FX2,只需编写与FX2相关的UMDF即可;UMDF是用户层驱动,文件名为:*.DLL。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

根据状态转移表实现时序电路

根据状态转移表实现时序电路 某同步时序电路转换表如下,请使用D触发器和必要的逻辑门实现此同步时序电路 电路的接口如下图所示 A表示输入,Y 表示输出 理解状态转移表,画成状态转移图 timescale 1ns/1nsmodule seq_circuit(input …

Facebook、LinkedIn、Airbnb、Google专家聚首QCon,他们会带来什么?

4月16日~18日,QCon北京2017将在北京国家会议中心举行。现已确认来自海外的Google、Facebook、Airbnb、LinkedIn、Confluent、AppDynamics等公司,国内的百度、阿里巴巴、腾讯、京东、滴滴出行、奇虎360、爱奇艺、微博、bilibili等公司的100余位技术专家担…

Devoxx 2017美国大会首日重要演讲一览

Devoxx美国大会今天开幕。\u0026#xD;\n\u0026#xD;\nDevoxx是北美版的欧洲软件大会(European Software Conference)。广受追捧的欧洲软件大会由Stephan Janssen在2001年创立,组织方是比利时Java用户组(BeJUG,Belgian Ja…

Linux-Android启动之Machine-Init函数

Linux/Android启动之Machine-Init函数 前言: 前面写过两篇Linux/Android的启动过程分析,这篇接着前两篇的知识点进行分析。 Linux/Android的启动过程包括了很多内容,其中有些需要了解,有些则需要在系统移植的时候进行修改。本篇文…

cache 是什么意思 它包括的L1,L2,L3分别是什么东西?

CPU缓存缓存大小也是CPU的重要指标之一,而且缓存的结构和大小对CPU速度的影响非常大,CPU内缓存的运行频率极高,一般是和处理器同频运作,工作效率远远大于系统内存和硬盘。实际工作时,CPU往往需要重复读取同样的数据块&…

边沿检测—以脉冲形式给出信号

边沿检测—以脉冲形式给出信号 题目描述: 有一个缓慢变化的1bit信号a,编写一个程序检测a信号的上升沿给出指示信号rise,当a信号出现下降沿时给出指示信号down。 注:rise,down应为单脉冲信号,在相应边沿出现时的下一个…

贷款秒拒?你可能进了“灰名单”!

灰名单/GRAY LIST今天有客户向我反映,他的征信良好没有半点问题,只有一张信用卡备用,没有一次逾期,但是最近想申请贷款都是被秒拒。他觉得很郁闷,是不是办了假的贷款?他完全不知道被拒的理由,只…

Linux--根文件系统的挂载过程分析

前言: 本篇文章以S3C6410公版的Linux BSP和U-Boot来进行分析,文中所有提及的名词和数据都是以该环境为例,所有的代码流程也是以该环境为例来进行分析。哈哈。如果有不正确或者不完善的地方,欢迎前来拍砖留言或者发邮件到guopeixi…

Troubleshooting OpenStack Bug- 每天5分钟玩转 OpenStack(162)

这是 OpenStack 实施经验分享系列的第 12 篇。 问题描述 客户报告了一个问题:对 instance 执行 migrate 操作,几个小时了一直无法完成,不太正常。 问题分析 遇到这种情况,第一个要检查的就是 instance 所在计算节点的 nova-comput…

ROM简单实现

ROM简单实现 题目描述 实现一个深度为8,位宽为4bit的ROM,数据初始化为0,2,4,6,8,10,12,14。可以通过输入地址addr,输出相应的数据data 接口信号图如下&…

Fedora gedit 打开txt文件乱码的解决

编码格式不同,fedora打开 windows下的文本文件经常出现乱码。解决办法终端输入命令:$ gsettings set org.gnome.gedit.preferences.encodings auto-detected "[UTF-8, GB18030, GB2312, GBK, BIG5, CURRENT, UTF-16]"$ gsettings set org.gn…

Linux--Sys_Read系统调用过程分析

注: 本片文章以Read函数的调用为例来讲述一下系统对块驱动层的一些处理, 哈哈。如果有不正确或者不完善的地方,欢迎前来拍砖留言或者发邮件到guopeixin126.com进行讨论,先行谢过。 一.Read函数经由的层次模型 首先来了解一下Re…

负债的阶梯,你在第几层?

现在的年轻人成为了消费市场上的中流砥柱,他们为我国的GDP贡献了70%的数据。如今年轻人更愿意刷信用卡、网贷平台借钱消费。尽管在外打拼不容易,但是工作稳定,收入稳定,为了犒劳自己及时享乐,他们选择了背负一点债务。…

OOP术语

OOP术语 类(class):包含变量和子程序的基本构建块。Verilog中与之对应的是模块(module)。对象(object):类的一个实例。Verilog中你需要实例化一个模块才能使用它。句柄(handle&…

minincom cannot open /dev/modem

昨天用pacman -S minicom命令在archlinux上下载并安装了minicom,但是调用minicom命令时出现如下错误:minicom: cannot open /dev/modem: No such file or directory今天终于找到解决方案,做一个软链接到/dev/ttyS0就可以解决问题了。命令如下…

Android应用程序开发环境的建立

注: 本片文章简单的描述一下Android应用程序开发环境的建立。如果有不正确或者不完善的地方,欢迎前来拍砖留言或者发邮件到guopeixin126.com进行讨论,先行谢过。 一.准备工作... 2 二.安装步骤... 2 1. 安装JDK5.0.…

你真的会 snapshot 吗? - 每天5分钟玩转 OpenStack(163)

​这是 OpenStack 实施经验分享系列的第 13 篇。 instance snapshot 操作可用于备份或者将 instance 保存为新的 image。如果在生产系统中执行 snapshot 操作,必须确保此操作快速且安全。这里有两个关键点: 快速。 为保证数据的一致性,snaps…

输入序列连续的序列检测

输入序列连续的序列检测 题目描述 请编写一个序列检测模块,检测输入信号a是否满足01110001序列,当信号满足该序列,给出指示信号match。 模块的接口信号图如下: 模块的时序图如下: timescale 1ns/1ns module seque…

fedora 用安装 DVD 建立本地 yum 源

用安装 DVD 建立本地 yum 源发行版安装盘中&#xff0c;已经预置好 repo 信息&#xff0c;并存放在名为 repodata 的目录中。可以说安装盘本身就是一个现成的 yum 源。在 RHEL5 中&#xff0c;预置了多个 repo&#xff0c;分别存放在 <CDROOT>/Server/repodata&#xff0…

哪些信用卡取现0手续费?

经常使用信用卡的朋友都知道&#xff0c;信用卡取现一般是要手续费的&#xff0c;而且取现之后不能享受免息期&#xff0c;这点让人很不爽。有时候我们经常会急用钱&#xff0c;这时候用信用卡取现确实很方便&#xff0c;可以解决燃眉之急&#xff0c;能帮上不少忙&#xff0c;…