我的环境:win7x64+wdk7.6+vs2012速成版
安装流程:先安装vs2012或其他微软的ide,再安装wdk7.6的所有内容
安装好wdk之后,先简单测试一下安装是否正常。
首先打开wdk的任意一个编译器,例如我打开了windows xp 目录下的x86 free编译器
在wdk安装目录下的src文件夹下有很多源码实例,很有参考价值,选择一个实例,进入到这个实例所在的目录,例如我输入 cd src\general\event\wdm进入得到其中一个目录下。输入编译命令 build -c
运行编译命令,如果编译器安装正常应当显示
并且在选定的目录下,会有驱动被生成
确认wdk安装完好后,写好源码之后,就可以用wdk编译成驱动文件了,编译的方法有3种,
1:手动编译。
手动编译要手工写两个配置文件
分别为文件makefile
# 此文件 一般情况下只有一行 并且不需要修改 不能有前导空格
!INCLUDE $(NTMAKEENV)\makefile.def
文件Sources,更多更具体的格式,参照实例源码的Sources文件
#下边这行指定生成驱动名字DDK_HelloWorld.sys
TARGETNAME=DDK_HelloWorld
#下边这行指定生成文件的类型DRIVER指驱动
TARGETTYPE=DRIVER
#下边这行指定生成驱动所在的路径\SYS\DDK_HelloWorld.sys,如果TARGETPATH没有指定,就取默认值
TARGETPATH=SYS
#下边这行指定相关头文件所在目录路径
INCLUDES=$(BASEDIR)\inc\ddk;\
$(BASEDIR)\inc\crt;\ $(BASEDIR)\inc\api;\
##上边必空一行,wdk的目录 等价$(BASEDIR)
#下边这行指定驱动源代码*.cpp或者*.c
SOURCES=myddk.cpp\
一个不规范的例子:
#include "ntddk.h"
//如果是c++源码,应当以extern "C"修饰函数声明,或者ide编译时指定函数的调用约定为stdcall,
//或者手动编译时sources内指定函数的调用约定为stdcall
extern "C" NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath) {
return STATUS_UNSUCCESSFUL;
}
接下来就可以像测试wdk是否完好安装时一样,在编译器内进入到Sources文件和makefile文件所在的路径,编译
2:手工配置ide,ide自动编译
创建一个空的win32控制台程序