编译适用于 Windows 7 的 Windows 8 微筛选器驱动程序

Compiling a Windows 8 minifilter Driver for Windows 7

本文关键字:Windows 筛选 驱动程序 适用于 编译      更新时间:2023-10-16

是否可以编译 Windows 7 MSDN 示例中给出的 AVScan Minifilter?因为它的目标客户端是 Windows 8。我正在使用带有WDK 8.1的Visual Studio 2013,示例项目在配置管理器中没有Win7调试/发布。如果可能,如何做到这一点?请指导我。

我必须做类似的事情(必须为 win 7 x64 构建更改微过滤器驱动程序)。我刚刚从minispy fs微过滤器驱动程序的项目文件中复制了设置,该文件具有有效的win7配置。所以你需要做的是:

  • 在配置管理器中添加一个名为"Win7 调试"的新配置。保存并关闭。
  • 在记事本中打开 AVScan 微筛选器C++项目
  • 覆盖项目文件中的这些部分:

    <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>
    
  • 保存并关闭。

  • 在VS中打开并构建!

没有必要为 Windows 7 或具有一些条件的不同版本的操作系统提供单独的二进制文件。

驱动程序二进制文件只是普通的旧可执行文件,就像 DLL 或 EXE 一样。他们有一个 PE 标头 IAT 等。

只要编译的驱动程序不尝试调用该操作系统不支持的 API,就应该没问题。对于这些 API 或函数,如果您运行的版本通过 MmGetSystemRoutineAddress 或 FltGetRoutineAddress 支持它们,只需动态加载它们。

因此,只需使用您计划支持的最低操作系统版本编译您的驱动程序,并从那里祝您好运。

干杯
加布里埃尔