windows7+VS2010+WDK7.6

环境配置

下载安装WDK7.6.1

VS2010配置如下:

配置属性–>常规–>目标文件扩展名 = .sys

配置属性–>常规–>清除时要删除的扩展名 =;* .sys

配置属性–>VC++ 目录->可执行文件目录 = C:\WinDDK\7600.16385.1\bin\x86;$(ExecutablePath)

配置属性–>VC++ 目录->包含目录 = C:\WinDDK\7600.16385.1\inc\crt;C:\WinDDK\7600.16385.1\inc\ddk;C:\WinDDK\7600.16385.1\inc\api;$(IncludePath)

配置属性–>VC++ 目录->库目录 = C:\WinDDK\7600.16385.1\lib\win7\i386;$(LibraryPath)

配置属性–>C/C++->常规->警告等级 = LEVEL4(/W4)

配置属性–>C/C++->预处理器->预处理器定义 = WIN32=100;X86=1;WINVER=0X501;DBG=1

配置属性–>C/C++->高级->调用约定 = _stdcall(/Gz)

配置属性–>链接器->常规->启用增量连接 = 否(/INCREMENTAL:NO)

配置属性–>链接器->输入->附加依赖项 = ntoskrnl.lib;Hal.lib;wdm.lib;wdmsec.lib;wmilib.lib;ndis.lib;MSVCRT.LIB;LIBCMT.LIB

配置属性–>链接器->输入->忽略所有默认库 = 是(/NODEFAULTLIB)

配置属性–>链接器->清单文件->启用用户账户控制(UAC) = 否(/MANIFESTUAC:NO)

配置属性–>链接器->系统->子系统 = 控制台(/SUBSYSTEM:CONSOLE)

配置属性–>链接器->高级->入口点 = DriverEntry

配置属性–>链接器->高级->基址 = 0x10000

配置属性–>链接器->高级->随机基址 = 删除值

配置属性–>链接器->高级->数据执行保护(DEP) = 删除值

测试驱动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include"ntddk.h"

VOID UnLoadDriver(PDRIVER_OBJECT pDriverObject);

NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)
{
KdPrint(("DriverRun_yeanhoo"));
DriverObject->DriverUnload = UnLoadDriver;
return STATUS_SUCCESS;
}

VOID UnLoadDriver(PDRIVER_OBJECT pDriverObject)
{
KdPrint(("UnloadDriver_yeanhoo!"));
}

Win+R编辑gpedit.msc组策略、关闭驱动数字签名校验

使用InstDrv加载驱动