Создание драйвера

У меня есть проблема с драйвером, и мне нужно устранить неполадки, прежде чем мне нужно его собрать. У меня нет опыта работы водителем. У меня есть исходный код и bat-файл. Это может быть использование WDK 7 (я не уверен). Может ли кто-нибудь помочь мне в создании проекта драйвера с нижеприведенным файлом bat. Конечно, я понимаю, что файл bat устанавливает переменные среды и вызывает build.exe

Мои основные вопросы:
1. Какой WDK мне нужно установить, чтобы я мог указать его путь в bat-файле
2. Как запустить bat-файл, нужно ли запускать в командной строке Visual Studio? или как?

если вы дадите некоторое общее представление о создании драйвера для новичка, это будет очень признательно. Спасибо.

[если вам нужна какая-либо информация, которую я могу предоставить, пожалуйста, не стесняйтесь спрашивать]

летучая мышь тьфу:

rem @echo off
rem --------------------------------------------------------------------                   
rem SafeBoot Windows NT 32 bit driver build script
rem --------------------------------------------------------------------
set MC_ENV=fre

if "%1%"=="debug" goto dbg
if "%2%"=="debug" goto dbg
if "%3%"=="debug" goto dbg
goto nodbg

:dbg
echo **** DEBUG BUILD ****
set MC_ENV=chk

:nodbg
rem --------------------------------------------------------------------
rem We want the absolute path of this directory, so we use a little utility
rem that creates a batch file that sets this into a environment variable.
rem --------------------------------------------------------------------
..\Translations\Bin\setcd -d DRV_DIR > thisdir.bat
call thisdir
del thisdir.bat

if NOT "%DDK64%"=="" goto x1
set DDK64=D:\Tools\WinDDK\6000
rem set DDK64=C:\WinDDK\6001.18001
:x1

set MSTOOLS=%MSSdk%
set BASEDIR=
set DDKBUILDENV=
set NTDBGFILES=
set DDK_INC_PATH=
set DDK_LIB_DEST=
set DDK_LIB_PATH=
set CRT_INC_PATH=
set CRT_LIB_PATH=
set BUILD_ALT_DIR=

call %DDK64%\bin\setenv %DDK64% %MC_ENV% i386

echo %DRV_DIR%

cd %DRV_DIR%

if NOT "%1"=="/a" goto build
del /q objfre_wlh_x86\i386\*.*
del /q objchk_wlh_x86\i386\*.*
rmdir /Q /S driver32
md driver32

:build
rem set MSC_OPTIMIZATION=/Od
echo Building started...
%DDK64%\bin\x86\build.exe -f -z -E
echo Building completed...
if ERRORLEVEL 1 goto error

rem copy objfre_wlh_x86\i386\McPvDrv.sys driver32\McPvDrv.sys

if "%MC_ENV%"=="chk" (
md ..\..\..\build\Win32\Debug
copy objchk_wlh_x86\i386\McPvDrv.sys ..\..\..\build\Win32\Debug\McPvDrv.sys
echo chk

person Raj    schedule 28.10.2015    source источник
comment
Вы хотите, чтобы один драйвер был создан таким образом, чтобы он работал на w7, w8 и w10?   -  person Stubborn    schedule 14.09.2016


Ответы (2)


Если вы хотите создать драйвер для Windows 7 или новее, используйте Visual Studio 2015, который интегрирован с последней версией WDK 10. Таким образом создавать драйверы намного проще.

Если вы хотите собрать драйверы для Windows XP, вам придется использовать WDK 7 и скрипты, подобные вашему. Wdk 7 не имеет интеграции с Visual Studio. Вы должны указать исходный файл в специальном файле с именем sources. См. примеры драйверов из Wdk 7. Вы можете найти хороший cmd для создания таких драйверов https://www.osronline.com/article.cfm?article=43 На этом веб-сайте собраны лучшие советы по разработке драйверов.

Если вам не нужна поддержка XP, я настоятельно рекомендую вам пойти гораздо более простым путем, используя Visual Studio 2015, Windows SDK и Windows 10 WDK.

LE: Вы также можете использовать Visual Studio 2013, который поддерживает интеграцию с WDK 8 и WDK 8.1, но не с WDK 10.

person Radu Ciocas    schedule 28.10.2015
comment
@Rado, спасибо за это. На данный момент я получил Visual Stduio 2013. и мой драйвер предназначен для Windows 7,8 и 10. Итак, что бы вы предложили для моей сборки драйвера, какой DDK лучше использовать. - person Raj; 28.10.2015
comment
Visual Studio 2013 можно интегрировать с WDK 8 или 8.1, но не с Wdk 10. Таким образом, вы получаете те же преимущества, что и Visual Studio 2015. Microsoft упростила разработку драйверов, начиная с WDK 8. - person Radu Ciocas; 28.10.2015
comment
теперь я использую VS2013 с DDK 8.1, получая некоторую ошибку сборки No Target Architecture из ntdef.h. Я думаю, это как-то связано с Windows SDK. любые предложения по этой ошибке msg, - person Raj; 28.10.2015
comment
Ваши определения препроцессора C++ могут быть неверными; у вас должны быть символы X86_=1;i386=1;STD_CALL; определяется в настройках проекта =› c++ =› определения препроцессора или _WIN64;_AMD64;AMD64 для конфигураций x64. Или, если это не так, это может быть неправильная последовательность включений. Вы включаете ntdef.h напрямую? Какие еще заголовки вы включаете? - person Radu Ciocas; 29.10.2015

Из вашего файла .bat он имеет:

if NOT "%DDK64%"=="" goto x1
set DDK64=D:\Tools\WinDDK\6000
rem set DDK64=C:\WinDDK\6001.18001
:x1

Так что, возможно, он ищет эту версию. Если да, вот страница: Что такое Microsoft имя для WinDDK версии 6001.18001?

Также см. https://en.wikipedia.org/wiki/Windows_Driver_Kit. , по умолчанию сборка 6000 (выпущена: 29 ноября 2006 г. для Windows Vista)

Вы также можете попробовать использовать последнюю версию. Вот ссылка на WDK 10 с инструкциями по загрузке. WDK 7 должен быть похож: https://msdn.microsoft.com/en-us/library/windows/hardware/ff557573%28v=vs.85%29.aspx, поэтому найдите нужную страницу. На этой странице также есть ссылки на другие страницы, которые могут помочь ответить на ваши другие вопросы.

В любом случае вам нужно изменить .bat, чтобы он указывал на правильный каталог WinDDK, установив переменную DDK64 так, чтобы она указывала на него.

Вероятно, вы можете установить несколько разных версий в разные каталоги, но я предполагаю, что последняя версия позволит вам создавать обратно совместимые версии. Итак, если вы собираете для Win7 (например), получите последнюю версию DDK для Win7 (см. таблицу на вики-странице).

person Craig Estey    schedule 28.10.2015
comment
спасибо за это, я хочу использовать DDK8, какие файлы я должен ожидать в пути, соответствующем D:\Tools\WinDDK\6000 в версии DDK8. - person Raj; 28.10.2015