Windows驱动编程(1)—第一个驱动程序

开发环境:VS2013, WDK8.1
需要使用的工具:vmware player(安装windows xp作为实验环境), DriverMonitor(加载驱动的工具), DbgView(捕获内核的信息输出)

1. 搭建开发环境

先安装VS2013, 然后安装WDK8.1。在vmware player中安装windows XP虚拟机。下载DriverMonitor, DbgView到虚拟机中。

2. 创建驱动工程

打开vs2013, 创建工程:Visual C++ -> Windows Driver -> WDM -> Empty WDM Driver. 工程名字默认MyDriver1.
创建好sln之后删除MyDriver Package这个工程。在MyDriver1中添加一个main.c的文件。这里需要注意的是,后缀是.c。因为使用C++的时候编译后导出后的名字和代码中实际写的名字有些不同。

#include <ntddk.h>

NTSTATUS unload(PDRIVER_OBJECT driver)
{
    DbgPrint("driver: %ws unload", driver->DriverName);
    DbgPrint("Driver unload success..");
    return STATUS_SUCCESS;
}

NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path){
    driver->DriverUnload = unload;
    DbgPrint("%ws", reg_path->Buffer);
    DbgPrint("Driver load success..");
    return STATUS_SUCCESS;
}

生成解决方案,这样就会生成第一个名为MyDriver1.sys的文件,这个文件就是我们的驱动文件了。上述代码中,DriverEntry是驱动的入口函数,这个是微软规定好的,当我们的驱动加载的时候就会去执行这个DriverEntry函数。在DriverEntry函数中,我们给driver设置了一个DriverUnload函数,这个函数是在driver在卸载的时候执行的。完成上述的内容之后我们就可以将我们的driver拷贝到实验平台上进行测试了。

3. 驱动的加载和运行

在虚拟机中先打开DbgView工具,用来捕获driver的输出,然后打开DriverMonitor,选中我们生成的MyDriver1.sys, 然后点击蓝色的执行按钮。我们可以看到在DbgView中就显示了我们在driver中输出的内容了。

点击红色的卸载按钮,我们driver就被成功的卸载掉了,同时在DbgView中也可以看到我们在unload函数中写的输出了。

至此,我们的第一个驱动程序就完成了。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0x0000000A 1、主要是由于安装了有缺陷或不兼容的硬件(BIOS)、驱动程序、软件产生。2、当系统升级WI...
    Muscleape阅读 2,523评论 0 3
  • 大学的时候,帮朋友写的操作系统调研的作业,最近整理过去的文档时候偶然发现,遂作为博客发出来。 从串口驱动到Linu...
    free_will阅读 7,425评论 7 59
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,803评论 0 10
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,865评论 0 27
  • 1.优势越练越明显,劣势越练越隐蔽。所以,不管是强与不强,你必须一直保持努力。 2.众筹头脑风暴,等于无偿占有了别...
    刀叨姐阅读 102评论 0 2