WDM驱动程序入门(3)——安装步骤

    技术2022-05-11  127

    DDK分为98 DDK和2000 DDK两种,它们工作起来是大同小异的,不过有些驱动程序只能在2000 DDK中使用。由于Win98注定是一种即将被淘汰的操作系统了,所以我也不打算介绍如何在98 DDK中进行编译,以下的所有内容都是针对2000 DDK的。 ·准备工作 1、确定你已经安装了Visual C++ 2、安装2000 DDK 3、安装2000 DDK成功后,在“ 开始”->“ 程序”里应该有“ Development Kits”->“ Windows 2000 DDK”的项目。 ( 注意一定要先安装好VC,然后才安装DDK,这个顺序决不能颠倒!!) 4、保证DDKROOT环境变量设置为Windows 2000 DDK的基目录,如果不是的话,请在控制面板“ 系统”属性的“ 高级”标签环境变量编辑器中设置好这个环境变量。 ·编写必需的文件 编译WDM程序的时候,有两个文件是必须要有的,它们是: 1、 makefile (这个是什么啊?你可能会问。)对于比较年轻的程序员来说,有可能没有见过这个文件吧。其实在VC这些IDE出现之前,我们都必须使用makefile来确定项目中哪些文件需要重新编译,现在的IDE都把这个工作自动做好了。(Well……其实这样也好。) 我们要做的工作很简单,就是提供这样一个文件,它的内容是:
    ## DO NOT EDIT THIS FILE!!!  Edit ./sources. If you want to add a new source# file to this component.  This file merely indirects to the real make file# that is shared by all the driver components of the Windows NT DDK#!INCLUDE $(NTMAKEENV)/makefile.def
    正如它所述,不要编辑这个文件。事实上每个WDM程序所需要的makefile的内容都是一样的,也就是说,我们只需要简单地copy一个makefile到新的项目中就可以了。(呵呵,是不是很方便呢?) 2、 Sources
    TARGETNAME=HelloWDMTARGETTYPE=DRIVERDRIVERTYPE=WDMTARGETPATH=OBJINCLUDES=$(BASEDIR)/inc;/         $(BASEDIR)/inc/ddk;/TARGETLIBS=$(BASEDIR)/lib/*/free/usbd.lib/SOURCES=HelloWDM.cpp/
    这个文件指定了驱动程序目标名是HelloWDM.sys,是一个WDM驱动程序,生成的文件存放在OBJ目录中。值得注意的是,“=”前后不能有空格,否则编译的时候会出错。 ·开始编译 娃哈哈,前面罗罗嗦嗦讲了一大堆,现在终于到重点了。WDM程序的编译过程比较特殊,它不是在VC里面按F7来编译的(尽管你可以通过设置来达到这一目的),而是通过一个DDK实用工具build来完成。下面我们来讲讲具体步骤: 1、“Debug”版的生成 首先,我们假设你的源代码放在D:/HelloWDM里面。请跟着以下步骤: “开始”->“程序”->“Development Kits”->“Windows 2000 DDK”->“Checked Build Environment” 屏幕将显示:(有“回车”的那行是需要读者你亲自打进去的)
    New or updated MSVC detected.  Updating DDK environment….Setting environment for using Microsoft Visual C++ tools.Starting dirs creation…Completed.D:/NTDDK>cd/HelloWDM    (回车)D:/HelloWDM>build    (回车)
    如果源代码没有错误的话,生成的HelloWDM.sys将存放在objchk/i386目录中。 2、“Release”版的生成 请跟着以下步骤: “开始”->“程序”->“Development Kits”->“Windows 2000 DDK”->“Free Build Environment” 随后的步骤跟“Debug”版相同,不同的是生成的HelloWDM.sys将存放在objfre/i386目录中。 ·安装 如果前面的编译过程没有错误的话,现在我们应该已经得到了一个HelloWDM.sys文件,假设它是放在D:/HelloWDM/objfre/i386中。 我们还要干什么呢?…………对啦,就是安装它!不然辛辛苦苦编译出来有什么用? 安装WDM驱动程序可以用两种方法,一种是利用注册表,还有一种是利用INF文件。我们一般是采用INF文件(这是微软推荐的)。INF文件可以在 WINNT/INF 目录中找到很多。为了顺利安装,我在这里先给出 HelloWDM 所需要的 HelloWDM.INF 文件:
    ;; The Win2K DDK documentation contains an excellent INF reference.;--------- Version Section ---------------------------------------------------[Version]Signature="$CHICAGO$"Provider=LC_DeviceDriverVer=8/21/2002,3.0.0.3; If device fits one of the standard classes, use the name and GUID here,; otherwise create your own device class and GUID as this example shows.Class=UnknownClassGUID={ff646f80-8def-11d2-9449-00105a075f6b};--------- SourceDiskNames and SourceDiskFiles Section -----------------------; These sections identify source disks and files for installation. They are; shown here as an example, but commented out.[SourceDisksNames]1 = "HelloWDM",Disk1,,[SourceDisksFiles]HelloWDM.sys = 1,objfre/i386,;--------- ClassInstall/ClassInstall32 Section -------------------------------; Not necessary if using a standard class; 9X Style[ClassInstall]Addreg=Class_AddReg; NT Style[ClassInstall32]Addreg=Class_AddReg[Class_AddReg]HKR,,,,
    转载请注明原文地址: https://ibbs.8miu.com/read-7110.html

    最新回复(0)

    网站备案:渝ICP备

    网站建议:179001057@qq.com

    CopyRight © 2010-至今 All Rights Reserved
    Processed: 0.010, SQL: 9