VS2005(2008)+WDK7600开发环境

来源:互联网 发布:网络爬虫基础 编辑:程序博客网 时间:2024/06/06 02:58

1、设定环境目录

  选择“工具->选项->项目和解决方案->VC++目录”在右侧平台选择“win32”。

  1)、“包含文件”中添加:

    C:/WINDDK/7600.16385.0/inc/wdf/kmdf/1.9

    C:/WINDDK/7600.16385.0/inc/api(注:此头文件要位于$(VCInstallDir)PlatformSDK/include(vs2008为$(WindowsSdkDir)/include)前面,否则编译会出错)

    C:/WINDDK/7600.16385.0/inc/crt

    C:/WINDDK/7600.16385.0/inc/ddk

  2)、库文件”中添加

    C:/WINDDK/7600.16385.0/lib/wdf/kmdf/i386/1.9

    C:/WINDDK/7600.16385.0/lib/wxp/i386

 

2、创建项目

  选择“新建项目”中的“win32项目”,输入项目名称后点击“确定”,进入“win32应用程序向导”,选择“空项目”点击“完成”。

 

3、添加配置属性

  点击“项目->属性”(或者按ALT+F7)进入项目属性页,点击“配置属性”,点击右上角的“配置管理器”,在“活动解决配置方案”中选择“新建”,弹出的窗口中输入自己解决配置方案名,我填的是“checked”,“从此处复制设置”中选“空白”,下面的钩打上,点击“确定”。

  1)、选择“C/C++”:(注:要出现此项,需要现在工程中添加文件)

  “常规”项:

    “调试信息格式”:“C7 兼容(/Z7)”;

    “警告等级”:“3级(/w3)”;

    “将警告视为错误”:“是(/WX)”。

  “优化”项:

    “优化”:“禁用(/0d)”

  “预处理器”项:

    “预处理器定义”:WIN32=100;_X86_=1;DBG=1

  “高级”项:

    “调用约定”:__stdcall (/Gz)

 

  2)、“连接器”项:

  “常规”项:

    “输出文件”:扩展名改为sys;

    “启用增量连接”:“否(/INCREMENTAL:NO)”;

    “附加库目录”:“C:/WINDDK/7600.16385.0/lib/wxp/i386”。

  “输入”项:

    “附加依赖项”:输入“ntoskrnl.lib $(NOINHERIT)”;

    “忽略所有默认库”选“是(/NODEFAULTLIB)”;

  “清单文件”项:

    “生成清单”:“否”。

  “调试”项:

    “生成调试信息”:“是”。

  “系统”项:

    “子系统”:“本机(/SUBSYSTEM:NATIVE)”;

    “堆栈保留大小”:“40000”;

    “堆栈提交大小”:“1000”;

    “驱动程序”:“驱动程序(/DRIVER)”。

   “高级”项:

    “入口点”:“DriverEntry”;

    “目标计算机”:“MachineX86 (/MACHINE:X86)”

                 “随机基址”:“默认值”(vs2008特有)

                  “数据执行保护”:“默认值”(vs2008特有)

          “命令行”项:

                 “附加选项”:添加开关:/SECTION:INIT,D /IGNORE:4078 /safeseh:no

 

进行程序测试,写一段小的测试程序

//testDriver.h
#ifndef _TESTDRIVER_H
#define _TESTDRIVER_H

#ifdef __cplusplus
extern "C"
{
#endif
#include <ntddk.h>


NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject,
      IN PUNICODE_STRING pRegistryPath);


VOID testDriverUnload(IN PDRIVER_OBJECT pDriverObject);
#ifdef __cplusplus
};
#endif
#ifdef ALLOC_PRAGMA
#pragma alloc_text(INIT, DriverEntry)
#pragma alloc_text(PAGE, testDriverUnload)
#endif

#endif //_TESTDRIVER_H

-----------------------------------------------------------------------------------------------------------

//testDriver.cpp
#include "testDriver.h"


NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject,
      IN PUNICODE_STRING pRegistryPath)
{
KdPrint(("[TAR]: testDriver Entry!/r/n"));
NTSTATUS status;
pDriverObject->DriverUnload = testDriverUnload;
status = STATUS_SUCCESS;
return status;
}

VOID testDriverUnload(IN PDRIVER_OBJECT pDriverObject)
{
KdPrint(("[TAR]: tsetDriver Unloading...../r/n"));
}

---------------------------------------------------------------------------------------------------------------

如果编译成功证明你的环境配置没有问题。

原创粉丝点击