注æ
è®¿é®æ¤é¡µé¢éè¦ææã å¯ä»¥å°è¯ç»å½ææ´æ¹ç®å½ã
è®¿é®æ¤é¡µé¢éè¦ææã å¯ä»¥å°è¯æ´æ¹ç®å½ã
妿è¦ä¸ºä¸åçæ¬ç Windows ç¼å驱å¨ç¨åºï¼è¯·åé 以ä¸é¨åï¼ä»¥ä¸é¨åæä¾äºä¸äºæå ³å¦ä½ä½¿ç¨ Windows 驱å¨ç¨åºå·¥å ·å (WDK) 8.1 æ WDK 8ãVisual Studio å MSBuild æå»ºè¿äºé©±å¨ç¨åºçæåã
éç¨äºæå»ºç¨æ·æ¨¡å¼åå æ ¸æ¨¡å¼é©±å¨ç¨åºçæå
- ä½¿ç¨ WDK æä¾çç®æ é ç½®å平尿¥æå»ºé©±å¨ç¨åºãå§ç»ä½¿ç¨æ¯æç®æ Windows çæ¬çææ°çæ¬ WDKãä¾å¦ï¼è¦ä¸º Windows XP æå»ºé©±å¨ç¨åºï¼ä½ å¿ é¡»ä½¿ç¨ Windows 7 WDKã ä½å¦æä¸º Windows 8.1ãWindows 8 æ Windows 7 æå»ºé©±å¨ç¨åºï¼åéä½¿ç¨ WDK 8.1 å Visual Studioã
- å¦æä½ ç驱å¨ç¨åºå¿ é¡»å¨åä¸ªçæ¬ç Windows ä¸è¿è¡ï¼è¯·ä¸ºä¸ç®æ Windows çæ¬ç¸å¹é çç®æ é ç½®åå¹³å°æå»ºé©±å¨ç¨åºãä¾å¦ï¼å¦ææå»ºä» å¨ WDK 8.1 ä¸è¿è¡ç驱å¨ç¨åºï¼è¯·å¨é 置管çå¨ä¸æå® Win8.1ã
- 妿叿驱å¨ç¨åºå¨å¤ä¸ªçæ¬ç Windows ä¸è¿è¡ä½ä¸å ·å¤ä» å¨è¾æ°çæ¬ä¸å¯ç¨çåè½ï¼åè¯·ä¸ºå¸æé©±å¨ç¨åºæ¯æçææ§çæ¬æå»ºé©±å¨ç¨åºãä¾å¦ï¼å¦æä½ ç驱å¨ç¨åºåªè½å¨ Windows Vista åæ´é«çæ¬ç Windows ä¸è¿è¡ï¼å¹¶ä¸åªè½ä½¿ç¨ Windows Vista 䏿ä¾çåè½ï¼è¯·ä¸ºé¡¹ç®é ç½®æå® Vistaã
éç¨äºæå»ºå æ ¸æ¨¡å¼é©±å¨ç¨åºçæå
-
妿叿å¨å¤ä¸ªçæ¬ç Windows ä¸è¿è¡å æ ¸æ¨¡å¼é©±å¨ç¨åºå¹¶å¨æç¡®å®è¯¥é©±å¨ç¨åºå¯ç¨çåè½ï¼è¯·ä½¿ç¨ææ°çæ¬æä½ç³»ç»çæå»ºé ç½®æ¥æå»ºé©±å¨ç¨åºãä¾å¦ï¼å¦æå¸æé©±å¨ç¨åºæ¯æ Windows 7 åæææ´é«çæ¬ç Windowsï¼ä½æ³è¦é©±å¨ç¨åºå¨ Windows 8.1 ææ´é«çæ¬çæä½ç³»ç»ä¸è¿è¡æ¶å¯ä½¿ç¨æåå¨ Windows 8.1 ä¸å¯ç¨çæäºåè½ï¼è¯·æå® Windows 8.1 (Win8.1) ä½ä¸ºç®æ é ç½®ã
-
ä½¿ç¨ RtlIsNtDdiVersionAvailable å RtlIsServicePackVersionInstalled 彿°å¯ç¡®å®è¿è¡æ¶é©±å¨ç¨åºå¯ç¨ç Windows çæ¬ãæå ³è¯¦ç»ä¿¡æ¯ï¼è¯·åé 为ä¸åçæ¬ç Windows ç¼å驱å¨ç¨åºã
为æå驱å¨ç¨åºå¿ é¡»ææ¡ä»¶è°ç¨ç彿°çæéå建åå
å¦æä½ æ WDM 驱å¨ç¨åºæé KMDF å æ ¸æ¨¡å¼é©±å¨ç¨åºï¼å¹¶ä¸ç®æ æ¯ç¨å¨ Windows 8.1 æ Windows 8 ä¸ï¼ä½å叿è½å¨æ©æçæ¬ç Windows ä¸è¿è¡è¿äºé©±å¨ç¨åºï¼é£ä¹è¿éè¦æ¿ä»£é¾æ¥å¨ $(KernelBufferOverflowLib) é项ãå¨éæ© Windows 8 æ Windows 8.1 é ç½®æ¶ï¼é©±å¨ç¨åºä¼ä¸æ©æ Windows çæ¬ä¸ä¸å¯ç¨ç BufferOverflowFastFailK.lib 龿¥ã å¯¹äº Windows 7 å Vistaï¼åå¿ é¡»ä¸ BufferOverflowK.lib 龿¥ã
æä¸¤ç§æ¹å¼å¯éå $(KernelBufferOverflowLib) 龿¥å¨é项ï¼ä¸ç§æ¯ä½¿ç¨ MSBuildï¼å¦ä¸ç§æ¯ä½¿ç¨ Visual Studioã
ä½¿ç¨ MSBuildï¼
msbuild /p:KernelBufferOverflowLib="C:\Program Files (x86)\Windows Kits\8.1\Lib\win8\km\x64\BufferOverflowK.lib" /p:platform=x64 /p:Configuration="Win8 Release" myDriver.slnä½¿ç¨ Visual Studioï¼
使ç¨è®°äºæ¬æå ¶ä»ææ¬ç¼è¾å¨æå¼é©±å¨ç¨åºé¡¹ç®æä»¶ (*.vcxproj)ãå¨é¡¹ç®æä»¶ä¸ï¼æ¾å°ä½ ç驱å¨ç¨åºæ¯æçé ç½®ç <PropertyGroup>ï¼å¹¶æ·»å 以ä¸è¡ä»¥è¦çé»è®¤é¾æ¥é项ï¼
<KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib>ä¾å¦ï¼å¦æä½ ç驱å¨ç¨åºæ¯æ Windows 8.1 å Windows 8 è°è¯ååå¸çæ¬ï¼åè¿äºé ç½®é¨ååºå¦ä¸æç¤ºï¼
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Debug|Win32'" Label="Configuration"> <TargetVersion>WindowsV6.3</TargetVersion> <UseDebugLibraries>true</UseDebugLibraries> <KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib> <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> <ConfigurationType>Driver</ConfigurationType> <DriverType>KMDF</DriverType> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8.1 Release|Win32'" Label="Configuration"> <TargetVersion>WindowsV6.3</TargetVersion> <UseDebugLibraries>false</UseDebugLibraries> <KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib> <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> <ConfigurationType>Driver</ConfigurationType> <DriverType>KMDF</DriverType> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Debug|Win32'" Label="Configuration"> <TargetVersion>Windows8</TargetVersion> <UseDebugLibraries>true</UseDebugLibraries> <KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib> <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> <ConfigurationType>Driver</ConfigurationType> <DriverType>KMDF</DriverType> </PropertyGroup> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win8 Release|Win32'" Label="Configuration"> <TargetVersion>Windows8</TargetVersion> <UseDebugLibraries>false</UseDebugLibraries> <KernelBufferOverflowLib>$(DDK_LIB_PATH)\BufferOverflowK.lib</KernelBufferOverflowLib> <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset> <ConfigurationType>Driver</ConfigurationType> <DriverType>KMDF</DriverType> </PropertyGroup><KernelBufferOverflowLib> å ç´ å¿ é¡»æ¾ç¤ºå¨é©±å¨ç¨åºé¡¹ç®æä»¶ä¸å¯¼å ¥ Microsoft.Cpp.props çå ç´ ä¹åï¼è¯¥å ç´ ç¨äºå¯¼å ¥å·¥å ·éã
å¨ä¿®æ¹å¹¶ä¿å驱å¨ç¨åºé¡¹ç®æä»¶ä¹åï¼å³å¯å¨ Visual Studio 䏿å¼é¡¹ç®æä»¶å¹¶æå»ºé©±å¨ç¨åºã