Изграждане на драйвер

Имам някакъв проблем с драйвер и трябва да го отстраня, преди това трябва да го създам. Нямам опит като шофьор. Имам изходния код и 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 няма интеграция с визуално студио. Трябва да посочите изходния файл в специален файл, наречен източници. Вижте примерни драйвери от 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 по някакъв начин. всякакви предложения относно това съобщение за грешка, - 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 Вашият .bat иска , по подразбиране компилация 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 (вижте таблицата в wiki страницата).

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