当前位置:首页 > Windows程序 > 正文

Windows 7 驱动开发

2021-03-25 Windows程序

1Win7(amd64)系统

注:已装系统后,管理员身份运行cmd命令,查看bcdedit /set testsigning truebcdedit  /debug on 等命令是否运行成功。若失败,请将bcdedit命令所在文件夹boot对应的盘(一般C盘)设置为活动状态;若依然失败,请修复C盘下的Boot(系统引导文件所在),或重装系统。

2、VS2010

3、WDK7.1.0WinDDK\7600.16385.1

地址:https://msdn.microsoft.com/en-us/windows/hardware/hh852365 该地址还连接 Windbg 调试工具 和Windows Symbols ,可以下载下来备后续调试时用。

4WinDbg

地址:

Symbols

地址:https://msdn.microsoft.com/en-us/windows/hardware/gg463028.aspx

注:Symbol文件是从微软的网站上下载而来,这个网址是不可以用IE直接打开的,WinDbg->File->Symbol File Path界面中输入SRV*C:\WINDOWS\Symbols*; 并选择ReloadWinDbg会自动帮你下载,关键是勾选reload

5InstDrv软件(用于安装、启动、停止、卸载驱动)

注:srvinstw.exe 也可以安装、卸载sys文件,但需要在cmd命令窗口下执行net start 驱动名、net stop 驱动名来启动、停止服务。

664Signer-V1.2Win7 64位 私有测试数字签名软件)

7DbgWiew.exe (查看内核模块的输出信息)

地址:https://technet.microsoft.com/en-us/sysinternals/bb896647.aspx

8、虚拟机(WMware10.0供双机调试)

地址:?id=8002

9、其他软件: 虚拟光驱DAEMON Tools LiteEasyBCD(系统引导文件修复工具)PartitionManager(将C盘设置为活动分区)等

二、配置VS2010 64位开发环境

1、在VSVisualC++下新建 空项目

添加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