Vs2010 配置驱动开发环境





Vs2010 配置驱动开发环境




1、安装VS2010,安装WDK 7.0(DDK);


2、新建VC++->空项目


3、打开(生成-->配置管理器) 并新建一个名称为"Dirver"的解决方案配置 从此处复制设置:debug


并将"Dirver" 设为活动解决方案配置。


4、打开 视图 -> 属性管理器。


5、在"Dirver" 解决方案配置 上点击右键,选择 添加新项目属性表 取名为"dirverProperty"、在"dirverProperty"上右键“属性” 并对他进行以下设置。 
  5.1 C\C++  常规  调试信息格式 =  程序数据库(/ZI)


  5.2 C\C++ 预处理器 - 预处理器定义 = 

_X86_

_WIN32_WINNT=0x0500



  5.3 C\C++ 代码生成 - 启用 C++ 异常 = 否


  5.4 C\C++ 代码生成 - 基本运行时检查 = 默认值
 
  5.5 C\C++ 代码生成 - 缓冲区安全检查 = 否(/GS-)


  5.6 C\C++ 高级 - 调用约定 = __stdcall(/Gz)


  5.7 C\C++ 高级 - 编译为 = 编译为C代码(/Tz)


  5.8 链接器 - 常规 - 输出文件 = $(OutDir)\$(ProjectName).sys


  5.9 链接器 - 常规 - 启用增量链接 = 默认(置空)


  5.10 链接器 - 输入 - 附加依赖项 =                              *
ntoskrnl.lib
hal.lib
wdm.lib
wdmsec.lib
wmilib.lib
ndis.lib
MSVCRT.LIB
LIBCMT.LIB                   
  5.11 链接器 - 输入 - 忽略所有默认库 = 是(/NODEFAULTLIB)


  5.12 链接器 - 清单文件 - 生成清单 = 否(/MANIFEST:NO)


  5.13 链接器 - 系统 - 子系统 = 本机(/SUBSYSTEM:NATIVE)


  5.14 链接器 - 系统 - 驱动程序 = 驱动程序(/Driver)


  5.15 链接器 - 高级 - 入口点 = DriverEntry


  5.16 链接器 - 高级 - 基址 = 0x10000


  5.17 链接器 - 高级 - 随机基址 = 置空         *


  5.18 链接器 - 高级 - 数据执行保护 = 置空     *


  5.19 通用属性-常规 - 目标文件扩展名 =.sys




6、配置vc++目录


  6.1  视图 - 属性管理器


      展开 Dirver -> 找到 Microsoft.Cpp.Win32.user 右键 -> 属性


      打开 VC++ 目录


         包含目录(自己的WinDDK安装路径) =
         
D:\WinDDK\7600.16385.1\inc
D:\WinDDK\7600.16385.1\inc\ddk
D:\WinDDK\7600.16385.1\inc\api


          库目录 =


D:\WinDDK\7600.16385.1\lib\wnet\i386






============================================

为共工程新建一个cpp源文件编译测试一下吧:

// 包含ntddk.h头文件
#include<ntddk.h>
// 卸载函数
void UnloadDriver(PDRIVER_OBJECT pDriver);


// 入口函数
NTSTATUS DriverEntry(PDRIVER_OBJECT pDriver,PUNICODE_STRING str)
{

   // 卸载函数的调用
   pDriver ->DriverUnload = UnloadDriver;
    // 输出一句话
   DbgPrint("Loading mogui Driver.... \r\n");

   return 1;

}

void UnloadDriver(PDRIVER_OBJECT pDriver)
{
   //卸载输出
   DbgPrint("Unloading mogui Driver......\r\n");

}


=============================================



但是这样配置的在运行helloworld时基本上不会报错,但是一旦往后面写,比如说在某个程序中调用ObDereferenceObject,


就会发现error LNK2019: 无法解析的外部符号 _ObfDereferenceObject@4,该符号在函数 _ccpOpenCom@8 中被引用


 
这时解决方案是 


写道
最后发现我配置的vs2010中c/c++中预处理器定义里面的
就是5.2. C\C++ - Preprocessor - Preprocessor Definitions 
_WIN32_WINNT=0x0400这句有问题,删掉_WIN32_WINNT=0x0400这句,再次编译连接就生成成功了,所以说网上给的那个vs2010配置驱动好像有点问题, 
目前进展就到这里.




===========================


ClCompile:
  mogui.cpp
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2143: 语法错误 : 缺少“)”(在“const”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2143: 语法错误 : 缺少“{”(在“const”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2059: 语法错误:“,”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(543): error C2059: 语法错误:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2143: 语法错误 : 缺少“)”(在“const”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2143: 语法错误 : 缺少“{”(在“const”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2059: 语法错误:“,”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\crtdefs.h(550): error C2059: 语法错误:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(56): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(56): error C2085: “_ExceptionRecord”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(57): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(57): error C2085: “_EstablisherFrame”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(58): error C2085: “_Inout_”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(58): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(58): error C2085: “_ContextRecord”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(59): error C2085: “_Inout_”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(59): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(60): error C2059: 语法错误:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(60): error C2085: “_DispatcherContext”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(104): error C2082: 形参“_exception_code”的重定义
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(105): error C2082: 形参“_exception_info”的重定义
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\excpt.h(106): error C2082: 形参“_abnormal_termination”的重定义
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(92): error C2061: 语法错误: 标识符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2054: 在“_Check_return_”之后应输入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_isctype_l”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_C”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_In_”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_Type”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2085: “_In_opt_”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93): error C2059: 语法错误:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(94): error C2061: 语法错误: 标识符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2086: “int _Check_return_”: 重定义
          D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 参见“_Check_return_”的声明
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2054: 在“_Check_return_”之后应输入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2085: “_isalpha_l”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2085: “_C”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2085: “_In_opt_”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(95): error C2059: 语法错误:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(96): error C2061: 语法错误: 标识符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2086: “int _Check_return_”: 重定义
          D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 参见“_Check_return_”的声明
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2054: 在“_Check_return_”之后应输入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2085: “_isupper_l”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2085: “_C”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2085: “_In_opt_”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(97): error C2059: 语法错误:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(98): error C2061: 语法错误: 标识符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2086: “int _Check_return_”: 重定义
          D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 参见“_Check_return_”的声明
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2054: 在“_Check_return_”之后应输入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2085: “_islower_l”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2085: “_C”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2085: “_In_opt_”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(99): error C2059: 语法错误:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(100): error C2061: 语法错误: 标识符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2086: “int _Check_return_”: 重定义
          D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 参见“_Check_return_”的声明
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2054: 在“_Check_return_”之后应输入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2085: “_isdigit_l”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2085: “_C”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2085: “_In_opt_”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(101): error C2059: 语法错误:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(102): error C2061: 语法错误: 标识符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2086: “int _Check_return_”: 重定义
          D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 参见“_Check_return_”的声明
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2054: 在“_Check_return_”之后应输入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2085: “_isxdigit_l”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2085: “_C”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2085: “_In_opt_”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(103): error C2059: 语法错误:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(104): error C2061: 语法错误: 标识符“_Check_return_”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2086: “int _Check_return_”: 重定义
          D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(93) : 参见“_Check_return_”的声明
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2054: 在“_Check_return_”之后应输入“(”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2143: 语法错误 : 缺少“)”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2085: “_isspace_l”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2085: “_C”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2085: “_In_opt_”: 不在形参表中
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2146: 语法错误: 缺少“,”(在标识符“_locale_t”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2146: 语法错误: 缺少“,”(在标识符“_Locale”的前面)
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): error C2059: 语法错误:“)”
D:\Program Files\Microsoft Visual Studio 10.0\VC\include\ctype.h(105): fatal error C1003: 错误计数超过 100;正在停止编译




如果出现类似如下编译错误,解决方法是:拷贝C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\sal.h,然后覆盖掉C:\WinDDK\7600.16385.1\inc\api\sal.h。


===============================================




  mogui.cpp
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(d:\my documents\visual studio 2010\Projects\driverp\driver\driverp.exe) 与 Linker 的 OutputFile 属性值(d:\my documents\visual studio 2010\Projects\driverp\driver\driverp.sys)不匹配。这可能导致项目生成不正确。若要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配。
C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(991,5): warning MSB8012: TargetExt(.exe) 与 Linker 的 OutputFile 属性值(.sys)不匹配。这可能导致项目生成不正确。若要更正此问题,请确保 $(OutDir)、$(TargetName) 和 $(TargetExt) 属性值与 %(Link.OutputFile) 中指定的值匹配。
LINK : warning LNK4039: 用 /SECTION 选项指定的节“INIT”不存在
  driverp.vcxproj -> d:\my documents\visual studio 2010\Projects\driverp\driver\driverp.exe






解决修改通用——>常规——>目标文件扩展名为:.sys




=====================================================

你可能感兴趣的:(Vs2010 配置驱动开发环境)