автоматизация процесса (bat -файл)

Win7-64
Win DDK 7

Итак трассировка работает (см. Trace).

делаем примерно такой bat файл для автоматизации всего процесса изменения и переустановки драйвера VirtualSerial (без перезагрузки ПК). Единственно надо ручками в диспетчере устройств предварительно удалять COM порт (с галочкой удалить полностью драйвера)!


echo off

SET name=virtualserialtcp
SET nameP=VirtualSerialTcp
SET catDEVELOPMENT=VIRTUAL-SERIAL-TCP
SET catBATS=C:\DEVELOPMENT\DRIVERS\
SET trace=%catBATS%%catDEVELOPMENT%\trace\
SET bin=C:\WinDDK\7600.16385.1\src\serial\%nameP%\objchk_win7_amd64\amd64\
SET project=C:\WinDDK\7600.16385.1\src\serial\%nameP%\
SET wdf=C:\WinDDK\7600.16385.1\redist\wdf\amd64\
SET type=UMDF\VirtualSerialTcp
SET traceGUID=8EEECFC0-1E84-483C-92E6-7733E5FF6569
SET PATH=%PATH%;C:\WinDDK\7600.16385.1\tools\devcon\amd64;

call C:\WinDDK\7600.16385.1\bin\setenv.bat C:\WinDDK\7600.16385.1\ chk x64 WIN7

rem call:func tracelog -stop %name%

TIMEOUT /T 1

rem call:func devcon /r remove @root\ports\*
rem TIMEOUT /T 2

cd %bin%

call:func del /Q *.*

cd %project%

call:func build -gce

IF NOT EXIST %bin%WdfCoInstaller01009.dll xcopy %wdf%WdfCoInstaller01009.dll %bin%
IF NOT EXIST %bin%WUDFUpdate_01009.dll xcopy %wdf%WUDFUpdate_01009.dll %bin%


IF EXIST %name%.res del %name%.res
IF EXIST %name%.pdb del %name%.pdb

IF EXIST %name%.res (
	echo DON'T DELETE .res
	pause
	exit
)

IF EXIST %name%.pdb (
	echo DON'T DELETE PDB
	pause
	exit
)


cd %bin%

IF NOT EXIST %name%.pdb (
	echo %name%.pdb NOT EXIST
	pause
	exit
)

call:func del *.tmf

call:func tracepdb.exe -f %bin%%name%.pdb -p %bin% -r %bin% -v -c

cd %trace%
call:func IF EXIST %name%.etl del %name%.etl

cd %trace%
:: parameters number >9
SET command=tracelog.exe -start %name% -guid #{%traceGUID%} -f %trace%%name%.etl -level 5 -flags 0xffff -ft 1
echo -------------------------------------------------------
echo %command%
echo -------------------------------------------------------
%command%
IF NOT %ERRORLEVEL% EQU 0 (
	echo *********************************************************
	echo ERRORLEVEL=%ERRORLEVEL% %command%
	echo *********************************************************
	pause
	exit
)


call:func devcon.exe install %bin%%name%.inf %type%

TIMEOUT /T 5

call:func tracefmt.exe -f %trace%%name%.etl -p %bin% -o %trace%%name%.txt

echo -------------------------------------------------------
echo "C:\Program Files\Notepad++\notepad++.exe" %trace%%name%.txt
echo -------------------------------------------------------
:: C:\Program Files contains space in path
"C:\Program Files\Notepad++\notepad++.exe" %trace%%name%.txt
echo ---------------- open trace txt file  ---------------
IF NOT %ERRORLEVEL% EQU 0 (
	echo *************** notepad++.exe ***************
	pause
	exit
)

:func
echo .
echo -------------------------------------------------------
echo %~1
IF NOT [%~2]==[] echo     %~2
IF NOT [%~3]==[] echo     %~3
IF NOT [%~4]==[] echo     %~4
IF NOT [%~5]==[] echo     %~5
IF NOT [%~6]==[] echo     %~6
IF NOT [%~7]==[] echo     %~7
IF NOT [%~8]==[] echo     %~8
IF NOT [%~9]==[] echo     %~9
echo -------------------------------------------------------
%~1 %~2 %~3 %~4 %~5 %~6 %~7 %~8 %~9
IF NOT %ERRORLEVEL% EQU 0 (
	echo *********************************************************
	echo ERRORLEVEL=%ERRORLEVEL%  %~1 %~2 %~3 %~4 %~5 %~6 %~7 %~8 %~9
	echo *********************************************************
	pause
	exit
)
goto :eof

Скажу честно - у меня все работает как надо. Трассировка идет нормально.

Переходим далее непосредственно к работе с самим COM портом.