驱动版本WinDDK 7600.16385.0
IDE:visual studio 2019
新建空白项目
配置类型从exe改为生成文件
配置完后,配置属性中就只剩基础配置了,没有C/C++、链接器等配置,因为驱动程序需要通过ddk编译,所以其他配置也是没用,自己配置编译程序的命令行即可
添加makefile和source文件
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
source文件主要指定c文件和目标名称
# $Id$
TARGETNAME=..\testDriver
TARGETPATH=obj
TARGETTYPE=DRIVER
# Create browse info
#BROWSER_INFO=1
#BROWSERFILE=<some path>
TARGETLIBS=
# Additional defines for the C/C++ preprocessor
C_DEFINES=$(C_DEFINES)
SOURCES=main.c \
TARGETNAME是相对于编译输出目录的,project目录\objfre_win7_amd64\amd64
配置编译命令行
理论上需要4个配置的,不同debug/release+win32/x64,对应4个bat文件,例如x64 release版本
echo build x64 release
call ddkbuild.bat -W7X64 fre . %1
del /f /q *.log *.err *.wrn
echo done...
其中最重要的只有一行,即第二行调用ddkbuild.bat,该文件来自于DDKWizard。
右键生成就会调用【生成命令行】对应的命令
还有另一种编译方式:使用WinDDK 7600.16385.0中自带的编译工具命令行
然后cd到编译目录,执行build
如果写成命令行,x64-release版本的命令行如下:
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是自行设置的一个环境变量 ,指向WinDDK的安装目录,如D:\WinDDK\7600.16385.0
命令行安装驱动:
测试阶段不想写一个安装程序,所以先用命令行安装
C:\Users\Administrator>sc create testDrive binPath= C:\Users\Administrator\Desktop\testDrive.sys type= kernel
[SC] CreateService 成功
C:\Users\Administrator>sc start testDrive
[SC] StartService 失败 577:
Windows 无法验证此文件的数字签名。某软件或硬件最近有所更改,可能安装了签名错误或损毁的文件,或者安装的文件可能是来路不明的恶意软件。
如上一行sc create命令即可创建服务,sc start启动服务,提示签名错误,windows7和windows10禁用驱动签名的方式不一样,可以自行百度
禁用驱动签名后再次启动
C:\Users\Administrator>sc start testDrive
SERVICE_NAME: testDrive
TYPE : 1 KERNEL_DRIVER
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 0
FLAGS :
启动之前打开dbgView的话,可以看到驱动内的输出
关闭服务,也就是停止驱动
C:\Users\Administrator>sc stop testDrive
SERVICE_NAME: testDrive
TYPE : 1 KERNEL_DRIVER
STATE : 1 STOPPED
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)