ddk7600官方下载页面网址
https://www.microsoft.com/en-us/download/details.aspx?id=11800
官方下载地址
安装之后会有一个WINDDK\7600.16385.1,官网上已经没有ddk 7600.16385.0了(以前下载过7600.16385.0的iso的可以继续使用)
驱动代码不需要IDE,直接用命令行就可以编译
打开build environment后cd到项目目录执行build命令即可
项目中一般包含代码文件、Makefile文件、sources文件
代码文件不多赘述,就是项目代码,
Makefile文件是所有项目通用,随便找个项目复制就可以
#
# DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source
# file to this component. This file merely indirects to the real make file
# that is shared by all the components of the Windows NT DDK
#!INCLUDE $(NTMAKEENV)\makefile.def
sources文件是关键,指定项目属性如名称、类型,引用库,代码文件(只需要指定c文件),
# $Id$
TARGETNAME=firstDriver
TARGETPATH=obj
TARGETTYPE=DRIVER
# Create browse info
#BROWSER_INFO=1
#BROWSERFILE=<some path>
TARGETLIBS=$(DDK_LIB_PATH)\ntstrsafe.lib $(DDK_LIB_PATH)\wdmsec.lib
# Additional defines for the C/C++ preprocessor
C_DEFINES=$(C_DEFINES)
SOURCES=firstDriver.c \
commonFun.c
sources如上,指定TARGETNAME就是生成的文件名,类型是DRIVER,所以生成的文件是firstDriver.sys,默认路径是objfre_win7_amd64\amd64,如果TARGETNAME设置为路径如..\..\abc
则路径相对于默认输出目录objfre_win7_amd64\amd64\..\..\abc.sys
如果嫌手动编译太慢,可以将编译步骤写为一个脚本
set curPath=%~dp0
call %W7BASE%\bin\setenv.bat %W7BASE%\ fre x64 WIN7
echo curPath %curPath%
echo setenv done
%curPath:~0,2%
cd %curPath%
build
注意一下名为W7BASE的环境变量,变量的值为D:\WinDDK\7600.16385.1,也就是ddk目录,为了不写那个长路径才用了环境变量,可以不用环境变量,直接写全路径
注意%curPath:~0,2%,这个表示截取字符串的前两个字符,也就是D:,用来进入D盘,然后cd到当前路径,如果不写D:直接cd到D盘的当前路径,build执行的环境就是D:\WinDDK\7600.16385.1。
脚本核心就是调用setenv.bat然后执行build命令,看过build environment的快捷方式对应的命令后就会明白手动打开build environment也是调用setenv.bat而已
ddk7600+vs2008
估计大家都不想用记事本开发,windows上开发还是用vs比较方便,这里使用vs2008作为IDE,只是IDE而已,可以换其他的,但是注意vs2008安装的时候要勾选x64的编译环境,不然编译其他项目的时候编译不了x64的项目就尴尬了
vs中创建一个空白项目,NMAKE中设置build命令,这样就可以右键build了
runr.bat即使上面的脚本
编写代码的时候ddk中的头文件可能不会自动跳转,可以把ddk中的头文件都配置到vs中
Tools->Options
把ddk里面的头文件都引入进去,这个操作对项目本身并没有影响,只是为了方便IDE跳转,找到代码,便于开发
以上基本可以进行编译开发了
但是网上还流传着ddkbuild+ddkwizard
ddkwizard免费下载链接,趁链接还没失效赶紧的
下载安装之后visual studio里面的创建项目可以选择Driver Project了,桌面会有一个pdf的快捷方式,里面介绍了ddkbuild.cmd、ddkbuild.cmd并提供了备用下载地址,
http://www.osronline.com/article.cfm%5earticle=43.htm
其中v6是ddkbuild.bat文件v7是ddkbuild.cmd文件,根据ddkwizard解释To be honest the configuration of DDKBUILD.CMD is almost identical to the one of DDKBUILD.BAT (covered in section 1.1) except for the name of the filehttp://www.osronline.com/article.cfm%5earticle=43.htm
执行脚本
call ddkbuild.bat -W7X64 fre . %1
其实也没有简单多少,注意把ddkbuild.bat所在目录配置到PATH环境变量中去,或者直接把ddkbuild.bat复制到项目目录,以免执行脚本的时候找不到命令
小贴士:
1.ioctl code对应的数值和功能如下
不一定全面,但是调试的时候获取到ioctrl code 的数值后对应哪个设备可以看看