在VC中编译驱动

通常编译驱动都是使用DDK中的Build.exe,由于它是命令行程序,使用很不方便。其实在VC++中也可以编译
驱动,而且设置的方法也有很多,下面是其中一种,我想也是最常用的。

一般使用VC++编译驱动,可以建立一个Win32 (x86) Application工程,然后将所有Windows程序中的编译开关
都删除,最后添加编译驱动的开关就行了。

"$(ddkroot)/inc/ddk"和"$(ddkroot)/inc"为DDK头文件目录。
DBG为编译方式,1为Debug,0为Release。
_X86_表示Intel平台驱动
添加int64.lib ntoskrnl.lib hal.lib三个库文件,并使用/nodefaultlib忽略其他默认库
/libpath:"$(ddkroot)/libchk/i386"设置DDK库文件目录
/base:"0x10000"修改基址,应用程序使用0x40000,驱动使用0x10000
/entry:"DriverEntry"驱动入口函数
-driver表示连接内核驱动
-subsystem:NATIVE,5.00表示子系统为Native

下面是一个名为TestDriver的dsp文件,修改TestDriver可以实现名字的改变,有兴趣的朋友可以写个程序。
如果要用在XP或2003,还需要修改其他一些编译开关,例如:_WIN32_WINNT=0x500

dsp文件内容:
  1.  
  2. # Microsoft Developer Studio Project File - Name="TestDriver" - Package Owner=<4>
  3. # Microsoft Developer Studio Generated Build File, Format Version 6.00
  4. # ** DO NOT EDIT **
  5.  
  6. # TARGTYPE "Win32 (x86) Application" 0x0101
  7.  
  8. CFG=TestDriver - Win32 Debug Build
  9. !MESSAGE This is not a valid makefile. To build this project using NMAKE,
  10. !MESSAGE use the Export Makefile command and run
  11. !MESSAGE 
  12. !MESSAGE NMAKE /f "TestDriver.mak".
  13. !MESSAGE 
  14. !MESSAGE You can specify a configuration when running NMAKE
  15. !MESSAGE by defining the macro CFG on the command line. For example:
  16. !MESSAGE 
  17. !MESSAGE NMAKE /f "TestDriver.mak" CFG="TestDriver - Win32 Debug Build"
  18. !MESSAGE 
  19. !MESSAGE Possible choices for configuration are:
  20. !MESSAGE 
  21. !MESSAGE "TestDriver - Win32 Debug Build" (based on "Win32 (x86) Application")
  22. !MESSAGE "TestDriver - Win32 Release Build" (based on "Win32 (x86) Application")
  23. !MESSAGE 
  24.  
  25. # Begin Project
  26. # PROP AllowPerConfigDependencies 0
  27. # PROP Scc_ProjName ""
  28. # PROP Scc_LocalPath ""
  29. CPP=cl.exe
  30. MTL=midl.exe
  31. RSC=rc.exe
  32.  
  33. !IF  "$(CFG)" == "TestDriver - Win32 Debug Build"
  34.  
  35. # PROP Use_MFC 0
  36. # PROP Output_Dir "Debug"
  37. # PROP Intermediate_Dir "Debug"
  38. # PROP Ignore_Export_Lib 0
  39. # PROP Target_Dir ""
  40. # ADD CPP /nologo /Gz /W3 /Gm /Gi /Zi /Od /I "$(ddkroot)/inc/ddk" /I "$(ddkroot)/inc" /D DBG=1 /D "_X86_" /D _WIN32_WINNT=0x500 /c
  41. # ADD BASE RSC /l 0x804
  42. # ADD RSC /l 0x804
  43. BSC32=bscmake.exe
  44. LINK32=link.exe
  45. # ADD BASE LINK32 /machine:IX86
  46. # ADD LINK32 int64.lib ntoskrnl.lib hal.lib /nologo /base:"0x10000" /entry:"DriverEntry" /machine:I386 /nodefaultlib /out:"Debug/TestDriver.sys" /libpath:"$(ddkroot)/libchk/i386" -driver -subsystem:NATIVE,5.00
  47. # SUBTRACT LINK32 /pdb:none
  48.  
  49. !ELSEIF  "$(CFG)" == "TestDriver - Win32 Release Build"
  50.  
  51. # PROP Use_MFC 0
  52. # PROP Output_Dir "Release"
  53. # PROP Intermediate_Dir "Release"
  54. # PROP Ignore_Export_Lib 0
  55. # PROP Target_Dir ""
  56. # ADD CPP /nologo /Gz /W3 /Gi /I "$(ddkroot)/inc/ddk" /I "$(ddkroot)/inc" /D DBG=0 /D "_X86_" /D _WIN32_WINNT=0x500 /c
  57. # ADD BASE RSC /l 0x804
  58. # ADD RSC /l 0x804
  59. BSC32=bscmake.exe
  60. LINK32=link.exe
  61. # ADD BASE LINK32 /machine:IX86
  62. # ADD LINK32 int64.lib ntoskrnl.lib hal.lib /nologo /base:"0x10000" /entry:"DriverEntry" /machine:I386 /nodefaultlib /out:"Release/TestDriver.sys" /libpath:"$(ddkroot)/libfre/i386" -driver -subsystem:NATIVE,5.00
  63. # SUBTRACT LINK32 /pdb:none
  64.  
  65. !ENDIF 
  66.  
  67. # Begin Target
  68.  
  69. # Name "TestDriver - Win32 Debug Build"
  70. # Name "TestDriver - Win32 Release Build"
  71. # Begin Group "Source Files"
  72.  
  73. # PROP Default_Filter "cpp;c;cxx;rc;bat"
  74. # End Group
  75. # Begin Group "Header Files"
  76.  
  77. # PROP Default_Filter "h;hpp"
  78. # End Group
  79. # End Target
  80. # End Project
  81.  
  82.  


dsw文件内容:
  1. Microsoft Developer Studio Workspace File, Format Version 6.00
  2.  
  3. # WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
  4.  
  5.  
  6.  
  7. ###############################################################################
  8.  
  9.  
  10.  
  11. Project: "TestDriver"=./TestDriver.dsp - Package Owner=<4>
  12.  
  13.  
  14.  
  15. Package=<5>
  16.  
  17. {{{
  18.  
  19. }}}
  20.  
  21.  
  22.  
  23. Package=<4>
  24.  
  25. {{{
  26.  
  27. }}}
  28.  
  29.  
  30.  
  31. ###############################################################################
  32.  
  33.  
  34.  
  35. Global:
  36.  
  37.  
  38.  
  39. Package=<5>
  40.  
  41. {{{
  42.  
  43. }}}
  44.  
  45.  
  46.  
  47. Package=<3>
  48.  
  49. {{{
  50.  
  51. }}}
  52.  
  53.  
  54.  
  55. ###############################################################################
  56.  
  57.  
【字体大小: 】【 复制源文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值