新建一个MFC DLL项目,设置项目属性如下:
新建一个配置管理项,my_driver_dev,编辑这个配置管理项!
需要事先说明的是,下图中加粗的地方就是需要修改的部分!!!
配置流程如下:
1、C/C++
(1)“常规”
![clip_image007 clip_image007](http://www.cppblog.com/images/cppblog_com/qeilf/WindowsLiveWriter/VS2005WDK_B793/clip_image007_thumb_1.jpg)
(2)“优化”
![clip_image010 clip_image010](http://www.cppblog.com/images/cppblog_com/qeilf/WindowsLiveWriter/VS2005WDK_B793/clip_image010_thumb_1.jpg)
(3)“预处理”
![clip_image014 clip_image014](http://www.cppblog.com/images/cppblog_com/qeilf/WindowsLiveWriter/VS2005WDK_B793/clip_image014_thumb_1.jpg)
(4)“高级”
![clip_image017 clip_image017](http://www.cppblog.com/images/cppblog_com/qeilf/WindowsLiveWriter/VS2005WDK_B793/clip_image017_thumb_1.jpg)
2、链接器
(1)“常规”
![clip_image023 clip_image023](http://www.cppblog.com/images/cppblog_com/qeilf/WindowsLiveWriter/VS2005WDK_B793/clip_image023_thumb_1.jpg)
(2)“输入”
![clip_image028 clip_image028](http://www.cppblog.com/images/cppblog_com/qeilf/WindowsLiveWriter/VS2005WDK_B793/clip_image028_thumb_1.jpg)
(3)“清单文件”
![clip_image031 clip_image031](http://www.cppblog.com/images/cppblog_com/qeilf/WindowsLiveWriter/VS2005WDK_B793/clip_image031_thumb_1.jpg)
(4)“调试”
![clip_image034 clip_image034](http://www.cppblog.com/images/cppblog_com/qeilf/WindowsLiveWriter/VS2005WDK_B793/clip_image034_thumb_1.jpg)
(5)“系统”
![clip_image038 clip_image038](http://www.cppblog.com/images/cppblog_com/qeilf/WindowsLiveWriter/VS2005WDK_B793/clip_image038_thumb_1.jpg)
(6)“高级”
![clip_image042 clip_image042](http://www.cppblog.com/images/cppblog_com/qeilf/WindowsLiveWriter/VS2005WDK_B793/clip_image042_thumb_1.jpg)
3、示例程序
新建一个cpp文件,然后编译!
#include <ntddk.h>
//提供一个Unload函数只是为了
VOID DriverUnload(PDRIVER_OBJECT driver)
{
// 但是实际上我们什么都不做,只打印一句话:
DbgPrint("first: Our driver is unloading…\r\n");
}
// DriverEntry,入口函数。相当于main。
NTSTATUS DriverEntry(PDRIVER_OBJECT driver, PUNICODE_STRING reg_path)
{
#if DBG
// _asm int 3
#endif
// 这是我们的内核模块的入口,可以在这里写入我们想写的东西。
// 我在这里打印一句话。因为”Hello,world”常常被高手耻笑,所以
// 我们打印一点别的。
DbgPrint("first: Hello, my wdk dirver!");
// 设置一个卸载函数便于这个函数能退出。
driver->DriverUnload = DriverUnload;
return STATUS_SUCCESS;
}