Windows Driver Frameworks

维基百科,自由的百科全书
跳转到导航 跳转到搜索
Windows Driver Frameworks(WDF)
其他名称Windows Driver Foundation
开发者微软
当前版本
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    源代码库
    • {{URL|example.com|可选的显示文本}}
    Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
    引擎
      Module:EditAtWikidata第29行Lua错误:attempt to index field 'wikibase' (a nil value)
      操作系统Microsoft Windows
      类型软件开发工具API
      许可协议MIT授权条款[1]

      Windows Driver Frameworks(Windows驱动程序框架,简称WDF,前称Windows Driver Foundation),是微软公司所提供的驱动程序开发技术的集合,包括Kernel-Mode Driver Framework(内核模式驱动程序框架,KMDF)、User-Mode Driver Framework(用户模式驱动程序框架,UMDF)以及PREfast plug-in for Drivers(PFD),目的是要改善目前Windows平台的驱动程序质量,可支持Windows 2000以及更新的操作系统之最新驱动程序框架。WDF框架提供了异步输入输出、分层式驱动程序、即插即用(PNP)、电源管理(Power Management),以及Windows管理规范(Windows Management Instrumentation,WMI)等功能。

      User-Mode Driver Framework[编辑]

      用户模式驱动程序框架(User-Mode Driver Framework)是内核模式驱动程序框架(Kernel-Mode Driver Framework)的子集合,提供即插即用(PNP)、电源管理(Power Manager)、异步输入输出等功能。

      Kernel-Mode Driver Framework[编辑]

      Kernel-Mode Driver Framework(内核模式驱动程序框架,简称KMDF),是美国微软公司推出的视窗驱动程序基础(Windows Driver Foundation)之一,建构Windows XP与Windows Server 2003的内核模式(Kernel-Mode)驱动程序所需的基本功能,包括对即插即用(PNP)、电源管理(Power Manager)、I/O队列、直接存储器访问(DMA)、Windows Management Instrumentation(WMI)和同步处理等的完整支持。KMDF的设计并不能用来取代WDM,它提供“Skeletal WDM”(一个骨架)建置来替代WDM;目前,KMDF并不支持总线筛选驱动程序(Bus Filter Driver)。

      PREfast[编辑]

      PREfast(Prefast.exe)是静态的源代码分析工具(static source code analysis tool),可侦测原始代码中不易用一般编译器找到的特定类型错误,目前已集成至Visual Studio 2005 Team Suite中,使用时只要设定‘Enable Code Analysis For C/C++’为Yes即可。

      PREfast的工作[编辑]

      • 变量未初始化
       void init() {
           int a;
           int b;
           b = a;
       }
      
      • 操作数优先权的问题
       void priority() {
           int a = 1;
           int b = 1;
           int c = 1;
           if(a & b == c)
              return ;
       }
      
      • 存储器溢出问题
       void overrun() {
            char buf[100];
           char buf2[200];
           int  i = 100;
       
           sprintf(buf, "size%d" , i);
           strcpy(buf, buf2);
       }
      

      Kernel-Mode Code Signing[编辑]

      微软提供测试时期的类别签名认证,可以让用户产生所需要的CER档与CAT档。

      首先,使用文本编辑器建立一个 .cdf 文件,包含要加入目录的文件及其属性的清单。

       [CatalogHeader]
       Name=Good.cat
       PublicVersion=0x0000001
       EncodingType=0x00010001
       CATATTR1=0x10010001:OSAttr:2:6.0
       
       [CatalogFiles]
       ...
      
      • 产生一个cer档
       makecert -pe -ss PrivateCertStore -n CN=Contoso.com(Test) ContosoTest.cer
      

      makecert.exe 可制作cer格式的证书,即X.509证书。

      • 产生一个cat档
       MakeCat -v Good.cdf
       Signability.exe /auto /cat /driver:package_directory /os:512
      
      • 产生cat档签证
       SignTool sign /v /ac CrossCertificateFile /s SPCCertificateStore /n SPCSubjectName /t
       http://timestamp.verisign.com/scripts/timestamp.dll Good.cat
      
      • 安装签证过的cat档

      使用CryptCATAdminAddCatalog API

      • 验证
       Signtool verify /kp /c tstamd64.cat toaster.sys
      

      相关条目[编辑]

      参考资料[编辑]

      1. ^ Windows Driver Frameworks. GitHub. Microsoft. [2017-02-15]. 

      外部链接[编辑]