【发布时间】:2015-01-19 04:31:17
【问题描述】:
是否可以编译 Windows 7 的 MSDN 示例中给出的 AVScan Minifilter?因为它的目标客户端是 Windows 8。我正在使用带有 WDK 8.1 的 Visual Studio 2013,示例项目在配置管理器中没有 Win7 调试/发布。如果有可能怎么办?请指导我。
【问题讨论】:
标签: c++ visual-studio-2013 driver wdk minifilter
是否可以编译 Windows 7 的 MSDN 示例中给出的 AVScan Minifilter?因为它的目标客户端是 Windows 8。我正在使用带有 WDK 8.1 的 Visual Studio 2013,示例项目在配置管理器中没有 Win7 调试/发布。如果有可能怎么办?请指导我。
【问题讨论】:
标签: c++ visual-studio-2013 driver wdk minifilter
我必须做类似的事情(必须为 win 7 x64 构建更改微过滤器驱动程序)。我刚刚从 minispy fs minifilter 驱动程序的项目文件中复制了设置,该驱动程序具有工作的 win7 配置。所以你需要做的是:
覆盖项目文件中的这些部分:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'" Label="Configuration">
<TargetVersion>Win7</TargetVersion>
<UseDebugLibraries>True</UseDebugLibraries>
<DriverType>WDM</DriverType>
<PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
<ConfigurationType>Driver</ConfigurationType>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Win7 Debug|x64'">
<Link>
<AdditionalOptions>%(AdditionalOptions) /map</AdditionalOptions>
<AdditionalDependencies>%(AdditionalDependencies);$(DDK_LIB_PATH)\fltMgr.lib</AdditionalDependencies>
</Link>
<ClCompile>
<TreatWarningAsError>true</TreatWarningAsError>
<WarningLevel>Level4</WarningLevel>
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);..\inc</AdditionalIncludeDirectories>
<PreprocessorDefinitions>%(PreprocessorDefinitions);_WIN2K_COMPAT_SLIST_USAGE</PreprocessorDefinitions>
<ExceptionHandling>
</ExceptionHandling>
</ClCompile>
<ResourceCompile>
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);..\inc</AdditionalIncludeDirectories>
<PreprocessorDefinitions>%(PreprocessorDefinitions);_WIN2K_COMPAT_SLIST_USAGE</PreprocessorDefinitions>
</ResourceCompile>
<Midl>
<AdditionalIncludeDirectories>%(AdditionalIncludeDirectories);..\inc</AdditionalIncludeDirectories>
<PreprocessorDefinitions>%(PreprocessorDefinitions);_WIN2K_COMPAT_SLIST_USAGE</PreprocessorDefinitions>
</Midl>
</ItemDefinitionGroup>
保存并关闭。
【讨论】:
</PropertyGroup> 标签丢失了。我现在已经添加了。
没有必要为 Windows 7 或不同版本的操作系统提供单独的二进制文件,但需要满足一些条件。
驱动程序二进制文件只是普通的旧可执行文件,就像 DLL 或 EXE 一样。他们有一个 PE 标头 IAT 等。
只要您编译的驱动程序不尝试调用该操作系统不支持的 API,您应该没问题。 对于这些 API 或函数,如果您运行的版本通过 MmGetSystemRoutineAddress 或 FltGetRoutineAddress 支持它们,则只需动态加载它们。
因此,只需使用您计划支持的最低操作系统版本编译您的驱动程序,然后祝您好运。
干杯,
加布里埃尔
【讨论】: