在windows10 下搭建 visual studio 2017 驱动程序开发

首先 下载并安装 Visual studio 2017 下载地址: https://www.visualstudio.com/zh-hans/downloads/

Install Visual studio 2017

安装后下载wdk 16299.15 其他版本Visual studio 2017无法使用 下载地址:http://download.microsoft.com/download/7/D/D/7DD48DE6-8BDA-47C0-854A-539A800FAA90/16299.15.170928-1534.rs3_release_amd64fre_WDK.iso

ADK:http://download.microsoft.com/download/3/1/E/31EC1AAF-3501-4BB4-B61C-8BD8A07B4E8A/16299.15.170928-1534.rs3_release_amd64fre_ADK.iso

HLK:http://download.microsoft.com/download/8/7/A/87A3A04D-08DD-4DF9-A728-D0B3A116104D/16299.15.170928-1534.rs3_release_amd64fre_HLK.iso

EWDK:http://download.microsoft.com/download/F/B/9/FB908459-275D-4B54-9986-FA98444AC656/EWDK_rs3_release_16299_170928-1534.iso

安装后打开 Visual Studio 2017 在新建项目里面 Visual c++ 下面已经可以看到 Windows Drivers;

吾爱bug Windows Drivers

下面我们就要写一个驱动级的 helloworld了;

创建一个空的驱动项目 Empty WDK Driver;

创建并编写第一个C文件;

吾爱bug new a file

#include <ntddk.h>  

VOID DriverUnload(PDRIVER_OBJECT driver)
{ 
    KdPrint(("Driver uninstall"));
}

// DriverEntry是驱动的入口函数,相当于main;  
NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
{ 
    KdPrint(("Hello,world;"));

    // 设置一个卸载函数便于这个函数能退出。  
    driver->DriverUnload = DriverUnload;
    return STATUS_SUCCESS;
}

上面的DriverEntry是每个内核模块的入口,相当于应用程序编程中的main函数,在加载这个模块时被系统进程System调用一次;

在其中我们写了DriverUnload函数,这个模块可以被动态的卸载(这样方便我们调试程序);

当然,上面是一个非常简单的驱动程序,连符号链接以及设备名称等都没有声明;

在编译之前首先要把将警告视为错误关掉;

工程属性->C/C++->常规->将警告视为错误,把这项修改为“否”!

否则会报错:

C2220    警告被视为错误 - 没有生成“object”文件    MyDriver1

好了之后就可以编译了;

吾爱bug 编译后

编译后可以看到目录下已经有一个.sys文件了,放到虚拟机上安装驱动调试;

虚拟机调试驱动方法可以百度;

吾爱bug WinDbg

安装驱动后;

吾爱bug install Driver

卸载驱动后(在后面少了个n换行符所以没换行);

吾爱bug uninstall Driver

已经可以了;

Last modification:February 14th, 2018 at 11:41 pm
If you think my article is useful to you, please feel free to appreciate

5 comments

  1. Hi just wanted to give you a quick heads up and let you know a few of the images aren't loading properly.
    I'm not sure why but I think its a linking issue. I've tried it in two different internet browsers and both show the same outcome.

    1. w4ctech
      @wells fargo advisors login

      I suggest you uninstall the browser.

      1. ┈━═☆
        @w4ctech

        Good idea!

    2. ┈━═☆
      @wells fargo advisors login

      oh,But I can see it.

      1. Forev

Leave a Comment