编译适用于 Windows 7 的 Windows 8 微筛选器驱动程序
Compiling a Windows 8 minifilter Driver for Windows 7
是否可以编译 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 支持它们,只需动态加载它们。
因此,只需使用您计划支持的最低操作系统版本编译您的驱动程序,并从那里祝您好运。
干杯
加布里埃尔
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux for Windows上编译C++代码时出错
- 在Windows上用C++裁剪HBITMAP
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- Windows/Cygwin - 不能使用 pybind11 - 犯错误
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 在Windows中以.exe的形式运行c++
- 为什么包含windows.h会产生语法错误,从而阻止类的实例化?(C2146,C2065)
- 无法在windows控制台中为C++程序提供必要的输入
- 在Windows中查找扬声器输出的当前音量级别
- Windows.h与GLFW.h的接口
- 微筛选器无法阻止'Windows Photos'打开的图像
- 如何设置 windows 文件打开对话框筛选器以包含"必须完成"选项
- 编译适用于 Windows 7 的 Windows 8 微筛选器驱动程序
- 为什么启用 Windows 基本筛选引擎服务后,我的应用程序无法接收 UDP 数据包?
- 如何为自定义文件格式构建筛选器处理程序,以便可以通过windows搜索来搜索其内容