Можно ли скомпилировать AVScan Minifilter дано в образце MSDN для Windows 7? поскольку его целевой клиент — Windows 8. Я использую Visual Studio 2013 с WDK 8.1, в примере проекта нет Win7 Debug / Release в диспетчере конфигурации. если это возможно, как это можно сделать? Пожалуйста, ведите меня.
Пришлось сделать что-то подобное (пришлось собирать сменный драйвер минифильтра для 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>
Сохрани и закрой.
Нет необходимости иметь отдельный двоичный файл для Windows 7 или другой версии ОС с несколькими условиями.
Двоичные файлы драйверов — это просто старые исполняемые файлы, такие как DLL или EXE. У них есть PE заголовок IAT и т. Д.
Пока ваш скомпилированный драйвер не пытается вызывать API, которые не поддерживаются в этой ОС, у вас должно быть все в порядке.
Для этих API или функций просто динамически загружайте их, если версия, на которой вы работаете, поддерживает их через MmGetSystemRoutineAddress или же FltGetRoutineAddress.
Итак, просто скомпилируйте свой драйвер с версией самой низкой ОС, которую вы планируете поддерживать, и удачи оттуда.
Ура,
Габриель