inf файл + инсталяция
От: regiomontanus  
Дата: 19.12.07 19:21
Оценка:
Существует пример дравйера протокола, который лежит:
6000\src\network\ndis\ndisprot\5x
инсталируется он с помощью inf файла, причем с массой телодвижений с участием пользователя,
вопрос состоит в том, что-бы делать тоже самое без участия пользователя.
Приведу текст этого инф-файла:
;-------------------------------------------------------------------------
; NDISPROT.INF -- Sample NDIS Protocol Driver
;
; Copyright (c) 2003, Microsoft Corporation
;-------------------------------------------------------------------------
[version]
Signature = "$Windows NT$"
Class = NetTrans
ClassGUID = {4d36e975-e325-11ce-bfc1-08002be10318}
Provider = %Msft%
DriverVer =10/01/2002,6.0.5019.0

[Manufacturer]
%Msft%=MSFT,NTx86,NTia64,NTamd64

[MSFT.NTx86]
%NDISPROT_Desc%=Install, MS_NDISPROT

[MSFT.NTia64]
%NDISPROT_Desc%=Install, MS_NDISPROT

[MSFT.NTamd64]
%NDISPROT_Desc%=Install, MS_NDISPROT

;-------------------------------------------------------------------------
; Installation Section
;-------------------------------------------------------------------------
[Install]
AddReg=Inst_Ndi
Characteristics=0x0 ;
CopyFiles=CpyFiles_Sys

;-------------------------------------------------------------------------
; Ndi installation support
;-------------------------------------------------------------------------
[Inst_Ndi]
HKR,Ndi,Service,,"Ndisprot"
HKR,Ndi,HelpText,,%NDISPROT_HelpText%
HKR,Ndi\Interfaces, UpperRange,, noupper
HKR,"Ndi\Interfaces","LowerRange",,"ndis5,ndis4,ndis5_prot"

;-------------------------------------------------------------------------
; Service installation support
;-------------------------------------------------------------------------
[Install.Services]
AddService=Ndisprot,,NDISPROT_Service_Inst

[NDISPROT_Service_Inst]
DisplayName = %NDISPROT_Desc%
ServiceType = 1 ;SERVICE_KERNEL_DRIVER
StartType = 3 ;SERVICE_DEMAND_START
ErrorControl = 1 ;SERVICE_ERROR_NORMAL
ServiceBinary = %12%\ndisprot.sys
LoadOrderGroup = NDIS
Description = %NDISPROT_Desc%

[Install.Remove.Services]
DelService=Ndisprot,0x200

;-------------------------------------------------------------------------
; Declare Destination Directories for file copy/deletion
;-------------------------------------------------------------------------
[SourceDisksNames]
1=%DiskDescription%,"",,

[SourceDisksFiles]
ndisprot.sys=1


[DestinationDirs]
CpyFiles_Sys = 12 ; DIRID_DRIVERS


;-------------------------------------------------------------------------
; Files to Copy/Delete — Referenced by Install and Remove sections above
;-------------------------------------------------------------------------
[CpyFiles_Sys]
Ndisprot.sys,,,2

[Strings]
Msft = "Microsoft"
DiskDescription = "Microsoft Ndisprot Sample Protocol Driver Disk"
NDISPROT_Desc = "Sample NDIS Protocol Driver"
NDISPROT_HelpText = "A driver to support user-mode I/O on NDIS devices"

По некоторым секциям ясно — как это делать, но не таки есть части которые не ясны совершенно. Конечно можно взять и отслежить в какие ветки реестра пишуться данные при установке, но по мне так — это не надежно с точки зрения переносимости.
Существуют коммерческие файерволы использующие intermediate драйвера,
и они ставться автоматически без перезагрузки и участия пользователя.

Подскажие в каую сторону копать, как это они делают?
Re: inf файл + инсталяция
От: pva  
Дата: 19.12.07 21:26
Оценка:
Здравствуйте, regiomontanus, Вы писали:

R>Подскажие в каую сторону копать, как это они делают?

Попробуйте почитать в DDK.
Windows DDK -> Device Installation -> Reference -> INF File Sections and Directives
newbie
Re: inf файл + инсталяция
От: TarasCo  
Дата: 20.12.07 08:35
Оценка:
Есть кривой интерфейс — INetCfg, с помощью него можно проделать все действия как и в ручную через свойства сетевого соединения. Описание есть в DDK.
Почему он кривой? Например потому, что там используется глобальный мьютекс, что приводит к тому, что не возможно установить драйвер если пользователь просматривает свойства соединения. Мелочь — а не приятная .
Да пребудет с тобою сила
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.