Windows 7 驱动开发
1、Win7(amd64位)系统
注:已装系统后,管理员身份运行cmd命令,查看bcdedit /set testsigning true、bcdedit /debug on 等命令是否运行成功。若失败,请将bcdedit命令所在文件夹boot对应的盘(一般C盘)设置为活动状态;若依然失败,请修复C盘下的Boot(系统引导文件所在),或重装系统。
2、VS2010
3、WDK7.1.0(WinDDK\7600.16385.1)
地址:https://msdn.microsoft.com/en-us/windows/hardware/hh852365 该地址还连接 Windbg 调试工具 和Windows Symbols ,可以下载下来备后续调试时用。
4、WinDbg
地址:
Symbols:
地址:https://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx
注:Symbol文件是从微软的网站上下载而来,这个网址是不可以用IE直接打开的,WinDbg->File->Symbol File Path界面中输入SRV*C:\WINDOWS\Symbols*; 并选择Reload,WinDbg会自动帮你下载,关键是勾选reload。
5、InstDrv软件(用于安装、启动、停止、卸载驱动)
注:srvinstw.exe 也可以安装、卸载sys文件,但需要在cmd命令窗口下执行net start 驱动名、net stop 驱动名来启动、停止服务。
6、64Signer-V1.2(Win7 64位 私有测试数字签名软件)
7、DbgWiew.exe (查看内核模块的输出信息)
地址:https://technet.microsoft.com/en-us/sysinternals/bb896647.aspx
8、虚拟机(WMware10.0供双机调试)
地址:?id=8002
9、其他软件: 虚拟光驱DAEMON Tools Lite、EasyBCD(系统引导文件修复工具)、PartitionManager(将C盘设置为活动分区)等
二、配置VS2010 64位开发环境
1、在VS中VisualC++下新建 空项目
添加Driver类,将头文件删除,将Driver.cpp文件修改为Driver.c文件,内容如下:
#include "ntddk.h"
// 提供一个Unload函数只是为了
VOID DriverUnload1(PDRIVER_OBJECT driver)
{
// 但是实际上我们什么都不做,只打印一句话:
DbgPrint("MyDriver: Our driver is unloading…\r\n");
}
NTSTATUS
DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)
{
DbgPrint("MyDriver: Hello, my salary!");
DriverObject->DriverUnload = DriverUnload1;
return STATUS_UNSUCCESSFUL;
}
注:添加类后,在属性中显示出C/C++项,供配置属性。
2、点击VS中的解决方案配置的下按钮(即debug所处的下拉框按钮),点击配置管理器,点击活动方案配置,点击新建,,输入DriverDebug64、默认空,解决方案平台:选X64。
建成后的效果
3、点击VS中视图->其他窗口->属性管理器
4、右击属性管理器中的DriverDebug64,选择属性,在弹出的窗体中进行必要的设置。
(此处的设置都是必须的, 对复杂些的驱动开发也许还要额外另加设置)
注:WDK7.1.0默认安装在C:\WinDDK\7600.16385.1文件夹下
1)常规
目标文件扩展名:.sys
2)VC++目录
可执行文件目录(编译器路径):C:\WinDDK\7600.16385.1\bin\amd64
注:Xp系统64位如下:
----------C:\WinDDK\7600.16385.1\bin\x86\amd64
----------C:\WinDDK\7600.16385.1\bin\x86
包含目录:C:\WinDDK\7600.16385.1\inc\api
C:\WinDDK\7600.16385.1\inc\crt
C:\WinDDK\7600.16385.1\inc\ddk
库目录:C:\WinDDK\7600.16385.1\lib\win7\amd64
3)C/C++
预处理器->预处理器定义:
_AMD64_=1,AMD64=1,STD_CALL=1,WIN32=100,_WIN32_WINNT=0x0501,WINVER=0x0501,_DEBUG =1
高级->调用约定:__stdcall (/Gz)
4)连接器
输入->附加依赖项:ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB;%(AdditionalDependencies)
输入->忽略所有连接库:是 (/NODEFAULTLIB)
清单文件->启用用户账户控制(UAC):否 (/MANIFESTUAC:NO)
系统->子系统:控制台 (/SUBSYSTEM:CONSOLE)
系统->驱动程序:驱动程序 (/Driver)
系统->堆栈保留大小:4194304(可修改)
系统->堆栈提交大小:4096 (可修改)
高级->入口点:DriverEntry
高级->基址:0x10000
温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/67096.html