win7(X64)+wdk7驱动环境搭建

Posted pandamohist

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了win7(X64)+wdk7驱动环境搭建相关的知识,希望对你有一定的参考价值。

-----  蓝 屏 警 告 --- 

  加载驱动的操作请在虚拟机中完成, 可以有效避免物理机蓝屏 或者其他情况出现 带来的损失。

 

1、准备

       wdk7下载地址:    https://www.microsoft.com/en-us/download/details.aspx?id=11800

    vmware12: (我选择vmware12是因为 其对win7的支持,有些版本对操作系统的是有要求的) 

       win7:   https://msdn.itellyou.cn/        打开后,选择左侧的操作系统,找到合适你的需求版本下载(下载推荐选择  迅雷,下载链接是  edk2 哦)

       DriverMonitor:  (Google一下,自行下载)。 主要用来加载和卸载驱动。

       DebugView:      https://docs.microsoft.com/zh-cn/sysinternals/downloads/debugview   (查看内核输出)

       64signer: 驱动签名工具。  Google一下, 自行下载

2、环境搭建

     A、安装 vmware12 , 再 创建 win7 X64的虚拟机。 (不会? 那就 Google一下) 

     B、安装win7 操作系统, 并激活。 

     C、安装 vmware install tool (  不会? 那就 Google 一下)

3、安装 wdk

     下载wdk后,使用 band  或者其他的解压缩工具 解压, 安装即可。(傻瓜式安装 , 下一步,下一步。。。。。) 

技术图片

    安装结束后: 安装目录大概是这样的,

技术图片

 

4、编写一个自己的第一个驱动程序

       特别说明, 我使用的是X64    编译。

        我再C盘根目录创建了一个文件夹,名为demo, 里面准备了下面的3个文件.

        A、文件名: helloworld.c   , 文件内容如下:

#include <ntddk.h>

// unload my driver
VOID DriverUnload(PDRIVER_OBJECT pDriverObject) 
{
    DbgPrint(" the driver unloaded successfully! 
");
}

// the entry of driver
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriverObject, PUNICODE_STRING reg_path) 
{
    DbgPrint("ok, congratulation ,the driver has loaded successfully!
");
    
    if(NULL != pDriverObject)
        pDriverObject->DriverUnload = DriverUnload;
        
    return STATUS_SUCCESS;
}

     B、准备文件: makefile . 内容如下:

# 此文件 一般情况下只有一行 并且不需要修改 不能有前导空格 
!INCLUDE $(NTMAKEENV)makefile.def

    C、准备文件: SOURCES, 内容如下:

#下边这行指定生成驱动名字HelloWorld.sys
TARGETNAME=HelloWorld
#下边这行指定生成文件的类型DRIVER指驱动
TARGETTYPE=DRIVER
#下边这行指定生成驱动所在的路径SYSHelloWorld.sys
TARGETPATH=SYS
#下边这行指定相关头文件所在目录路径
INCLUDES=$(BASEDIR)inc;      $(BASEDIR)incwxp; 

##上边必空一行H:WINDDK3790(DDK目录) 等价$(BASEDIR)
#下边这行指定驱动源代码*.cpp或者*.c
SOURCES=HelloWorld.c

 ---- 上面的文件准备完毕后,大概是这样的--------

技术图片

 

5、 编译

    依次 点击 : 开始  ->  所有程序  ->   windows driver kits -> WDK 7600.16385.1 ->    Build Environments  -> Windows 7 ->   x64 Free Build Environment   

    A、 键入命令,使终端来到 上面 4 的所在文件夹: C:demo

    B、执行 构建命令: 键入  build  , 回车执行构建。 

 技术图片

   构建结束后,demo目录下会大概是这样的:

技术图片

   6、执行文件 签名。

         尽管我开启了 win7测试模式 (管理员控制台执行命令:bcdedit /set testsigning on,  再重启 ),没有签名的驱动是无法运行的。

        A、找到 5 中生成的驱动文件: helloworld.sys。  

 技术图片

      B、使用 debugview工具查看内核输出 (请勾选: 菜单-> capture  ->  capture kernel 选项), 使用 DriverMonitor 加载驱动。

      先来一张没有签名驱动的截图,发现驱动无法加载, 内核自然也没有输出。

技术图片

  同时查看驱动文件的属性,也无法找到关于签名的信息:

技术图片

       C、签名驱动

         使用软件  64Signer   对驱动文件进行签名。    签名后,就会发现 驱动文件的属性页中出现了 关于签名的tab页。

技术图片

 

7、驱动加载与卸载

     驱动签名后,使用 driver monitor 和 debugview工具查看驱动内核输出。得到如下结果:

技术图片

 

 

  ---------- 完结---------

附:

注意文件编码:

技术图片

以上是关于win7(X64)+wdk7驱动环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

Win7 X64 搭建Apache+PHP+Mysql环境

VS2015驱动开发环境配置

Win7 x64 svn 服务器搭建

python环境配置(基于win7 x64)

WIN7 x64下java 8的环境变量配置

IIS+PHP+MYSQL搭建