什么是WDF驱动开发框架?

如所周知,自Windows 2000开始,开发驱动程序必以WDM为基础的,但其开发难度之大,根本不能奢望像用户模式应用程序开发那样容易。为改善这种局面,微软推出了新的驱动程序开发环境。
WDF是Vista及其以后OS的驱动模型,意为Windows Driver Foundation,此模型比WDM更先进、合理(微软是这样说的),将WDF中关于电源、PnP等一些复杂的细节由微软实现,所以在此模型上开发驱动会 比以前要简单。
要预先指出的是,这不是另起炉灶改弦更张,而是以WDM为基础进行了建模和封装,显著特点是降低了开发难度。因为:
1、将原来普通程序设计中基于对象的技术应用到了驱动开发中。WDM中虽也有对象模型,但与真正的基于对象技术根本就不是一回事。为了实现基于对象的技术,微软精心设计了对象模型并进行了封装。属性、方法、事件等等“一个都不能少”。
2、无论内核模式的驱动程序或者用户模式的驱动程序,都采用同一套对象模型构建,采用同一个基础承载。这个基础就是WDF。WDF虽然已经是经过封装和定义的对象模型,但对内核模式和用户模式对象来说,WDF又是两者的父对象。换言之两者都是继承了WDF才得到的,或者都是从WDF派生而来的。相对于内核模式,派生出的对象称为“KMD框架”即KMDF;相对于用户模式,派生出的模型称为“UMD框架”即UMDF。无论何种模式的框架,其内部封装的方法、执行的行为其实还是用WDM完成的。
3、更重要的,也是微软反复炫耀的是封装了驱动程序中的某些共同行为:例如即插即用和电源管理就属于这种共同行为。因为大多数驱动程序中都需要处理即插即用和电源管理问题,据说这大概要上千行的代码,况且,没有相当水平还不一定能处理好。为了一劳永逸,WDF干脆将即插即用和电源管理封装了进了对象之内,一举成了对象的缺省(默认)行为。
4、改变了操作系统内核与驱动程序之间的关系,WDM驱动程序中,一方面要处理硬件,另一方面要处理驱动程序与操作系统内核的交互。现在WDF则将驱动程序与操作系统内核之间进行了分离,驱动程序与操作系统交互工作交给框架内封装的方法(函数)完成,这样驱动开发者只需专注处理硬件的行为即可。这不仅避免了顾此失彼两面不周的弊端,也由于双方的分离,对操作系统内的某些改动,硬件制造商配套驱动程序的开发都有莫大的好处。
5、两种模式的驱动程序(KMDF、UMDF)都使用同一环境进行构建,这一环境称为WDK。
6、虽然经过封装并引入基于对象的技术,所开发的驱动程序在执行效率上并不比原来逊色。

补充文章:      windows xp 驱动开发(三)DDK与WDK WDM的区别

什么是符号链接?

符号链接又叫软链接,是一类特殊的文件,这个文件包含了另一个文件的路径名(绝对路径或者相对路径)。路径可以是任意文件或目录,可以链接不同文件系统的文件。(链接文件可以链接不存在的文件,这就产生一般称之为”断链”的现象),链接文件甚至可以循环链接自己(类似于编程中的递归)。在对符号文件进行读或写操作的时候,系统会自动把该操作转换为对源文件的操作,但删除链接文件时,系统仅仅删除链接文件,而不删除源文件本身。
符号链接的操作是透明的:对符号链接文件进行读写的程序会表现得直接对目标文件进行操作。某些需要特别处理符号链接的程序(如备份程序)可能会识别并直接对其进行操作。
一个符号链接文件仅包含有一个文本字符串,其被操作系统解释为一条指向另一个文件或者目录的路径。它是一个独立文件,其存在并不依赖于目标文件。如果删除一个符号链接,它指向的目标文件不受影响。如果目标文件被移动、重命名或者删除,任何指向它的符号链接仍然存在,但是它们将会指向一个不复存在的文件。这种情况被有时被称为被遗弃。

编程实现加载这个驱动还没看过  但可以  查看  WDK中  devcon  源码

还有INX种有说明

; RAMDISK.INF
; Windows installation file for installing the Ramdisk driver
; Copyright (c) Microsoft Corporation All rights Reserved
;
; Installation Notes:
;
;     Using Devcon: Type "devcon install ramdisk.inf Ramdisk" to install
;

一般加载方法是    得到     WdfCoInstallerXXXXX.dll;*.INF;*.SYS   这三个文件  然后点在设备管理器中添加 硬件 选择 inf 安装

源码  修改于  WDK ramdisk 源码············································································································

调试方法 :   直接加载驱动  设置好断点 断下······································

转载于:https://www.cnblogs.com/zcc1414/p/3982396.html

WDF框架下 硬盘的虚拟相关推荐

  1. 如何在虚拟计算机添加3块硬盘,win7旗舰版下如何建立虚拟硬盘

    虚拟磁盘已经越来来贴近我们的生活了.最近有很多热心的网友问小编有没有建立虚拟硬盘的方法.下面小编就教给大家如何在win7旗舰版下如何建立虚拟硬盘.来满足大家对虚拟硬盘的需求.下面跟随小编来学习如何建立 ...

  2. 深入剖析 RabbitMQ —— Spring 框架下实现 AMQP 高级消息队列协议

    前言 消息队列在现今数据量超大,并发量超高的系统中是十分常用的.本文将会对现时最常用到的几款消息队列框架 ActiveMQ.RabbitMQ.Kafka 进行分析对比. 详细介绍 RabbitMQ 在 ...

  3. linux14.10硬盘安装,Windows 10下硬盘安装Ubuntu 14.10图文教程

    著名的Linux发行版 Ubuntu 系统已经释出最新的 14.10 版,同时大家也可能不知道其实它已经十岁了.与半年前的14.10相比,这次Ubuntu 14.10系统升级的修改幅度很小,外观界面几 ...

  4. Xp下的程序编译成linux,Windows XP下硬盘安装Linux系统

    作为一个Linux新手,第一次安装Linux系统,经过几个小时摸索,终于搞清楚在Windows XP系统下硬盘安装Linux系统的方法,跟大家共享. 第一步:在Window系统下必须存在两个分区(不妨 ...

  5. Win7环境下硬盘安装XP(无光驱/光盘安装XP)

    Windows 7推出后,以其绚丽的外观,不凡的性能等特性迅速博得广大用户的喜爱.但不管其有多优秀,亦或是易用性有多高,作为一个新事物,总需要给人们一个接受的过程.在拥有了Windows 7的同时,似 ...

  6. Arduino框架下STM32F1/F4系列HID模式程序烧录教程

    Arduino框架下STM32F1/F4系列HID模式程序烧录教程 相关篇<Arduino框架下STM32全系列开发固件安装指南> HID BootLoader烧录模式 "Upl ...

  7. Windows 7下硬盘安装Ubuntu 14.04图文教程

    Ubuntu 官方已经发布了正式版的 Ubuntu 14.04 LTS,并宣称这是为云计算准备的版本.该版本在云平台和伸缩环境的可靠性.性能和交互性都有很好的提升,同时提供 5 年的支持和维护服务. ...

  8. 分布式进阶 一 Windows 7下硬盘安装Ubuntu 14 04图文教程

    Windows 7下硬盘安装Ubuntu 14.04图文教程 本人下载的是ubuntu-14.04.2-desktop-amd64.iso,经本人亲自测试的,折腾了一天的时间. 1)首先还是分区,在计 ...

  9. Wdf框架之WdfObject状态机(3)-前篇

    好久没写关于Wdf框架的博客了,因为有各种琐碎事缠身,得赶在RS4 RTM前把状态机(3)系列完成.WdfObject状态机(2)系列将注意力集中在驱动程序的继承层次上只存在单薄一层WdfDriver ...

最新文章

  1. linux查看tuxedo版本的命令,Tuxedo tmadmin命令
  2. 数据结构之单链表(golang版)
  3. java设计模式1--工厂方法模式(Factory Method)
  4. fastbin attack攻击中关于 malloc__hook
  5. c 语言 文本处理范例
  6. Jquery获取select 控件的change事件时选中的值
  7. 前端学习(518):三列布局实现方式
  8. 电脑中linux系统在哪里设置密码,linux添加一个root级别账户并设置密码linux操作系统 -电脑资料...
  9. 如何用 Python 实现超级玛丽的人物行走和碰撞检测?
  10. 一个极其微小的优化想法
  11. Android 常用的adb命令
  12. 《Clojure程序设计》——导读
  13. NVIDIA Nsight Compute,Nsight Systems, Nsight Graphics,Nsight Deep Learning Designer简介-草稿
  14. oracle instant imp,使用instantclient连接oracle数据库
  15. Stale branches 设置_交通规划软件之TransCAD如何设置立交模型的步骤
  16. 监听SpringBoot 服务启动成功事件并打印信息
  17. 同样的互联网大环境下,你连工作都找不到,年薪该拿60w的程序员他还是能拿到?差距到底在哪里!
  18. 12Cr2Mo1R(H)化学成分
  19. java中空指针异常如何解决_main函数中出现空指针异常,如何解决?
  20. ASCII字符编码表

热门文章

  1. python第四章单元测试_MOOC选修课答案第四章单元测试答案_Sar编程基础期末答案...
  2. java clone 深拷贝_Java clone() 浅拷贝 深拷贝
  3. python字符串 切片_Python切片字符串
  4. jsf标签_JSF Facelet标签示例教程
  5. Java String trim()方法示例
  6. jenkins修改任务工作目录
  7. 用gdb来学习c语言(linux环境下)
  8. 80%的前端程序员都遇到的问题,你中招了吗?
  9. C Primer Plus (Stephen Prata 著)
  10. 嵌入式学习步骤及方法(精典)