Компиляция драйвера минифильтра для Windows 8 для Windows 7

Можно ли скомпилировать AVScan Minifilter дано в образце MSDN для Windows 7? поскольку его целевой клиент — Windows 8. Я использую Visual Studio 2013 с WDK 8.1, в примере проекта нет Win7 Debug / Release в диспетчере конфигурации. если это возможно, как это можно сделать? Пожалуйста, ведите меня.

3

Решение

Пришлось сделать что-то подобное (пришлось собирать сменный драйвер минифильтра для win 7 x64). Я просто скопировал настройки из файла проекта драйвера minispy fs minifilter, который имел рабочую конфигурацию win7. Итак, что вам нужно сделать, это:

  • Добавьте новую конфигурацию в диспетчере конфигурации под названием «Отладка Win7». Сохрани и закрой.
  • Откройте проект AVScan minifilter 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 и построй!
0

Другие решения

Нет необходимости иметь отдельный двоичный файл для Windows 7 или другой версии ОС с несколькими условиями.

Двоичные файлы драйверов — это просто старые исполняемые файлы, такие как DLL или EXE. У них есть PE заголовок IAT и т. Д.

Пока ваш скомпилированный драйвер не пытается вызывать API, которые не поддерживаются в этой ОС, у вас должно быть все в порядке.
Для этих API или функций просто динамически загружайте их, если версия, на которой вы работаете, поддерживает их через MmGetSystemRoutineAddress или же FltGetRoutineAddress.

Итак, просто скомпилируйте свой драйвер с версией самой низкой ОС, которую вы планируете поддерживать, и удачи оттуда.

Ура,
Габриель

0

По вопросам рекламы [email protected]