Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: WDM Pnp  (Прочитано 6217 раз)
0 Пользователей и 4 Гостей смотрят эту тему.
AlexCasual
Помогающий

by
Offline Offline

« : 09-03-2012 09:50 » 

Пишу WDM драйвер-фильтр,никак не могу понять какую роль играет inf файл и как его настроить так,чтобы сесть в стэк определённого класса устройств(usb)?
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 10-03-2012 10:10 » new

Device Installation Types
Device Installation Files
Overview of INF Files

Installing a Filter Driver
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
AlexCasual
Помогающий

by
Offline Offline

« Ответ #2 : 11-03-2012 18:32 » 

Ochkarik, всё равно слабо представляю,как именно установить фильтр конкретно,например,на USB устройства?
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 11-03-2012 22:57 » 

ключевая строка в последней ссылке)

на самом деле берем пример
WinDDK\7600.16385.1\src\general\toaster\wdm\inf\i386\toasterf.inf
- это установка верхнего и нижнего фильтра класса (тут у вас может быть другой класс).
либо WinDDK\7600.16385.1\src\general\toaster\wdm\inf\i386\filter.inf
- фильтр конкретного устройства.
девайс toaster - это "тостер"))) совершенно абстрактный пример, совершенно абстрактной железки реально не существующей.
а дальше для понимания сути происходящего - попробуйте расшифровать смысл каждой секции по документации
Summary of INF Sections
и все встанет на свои места) там почти последовательно все идет.

[Version]
... посмотрите что в нем может быть и зачем.

[Manufacturer]
     - тут %StdMfg% это из секции [Strings]  MSFT = "Microsoft"
     то есть объявляем производителя inf - "Microsoft" с секцией возможных установок, равной Standard

далее собственно эта секция:
[Standard]
%ToasterFilter.DeviceDesc%=ToasterFilter, {b85b7c50-6a01-11d2-b841-00c04fad5171}\MsToaster
; тут из  [Strings] объявлено %ToasterFilter.DeviceDesc% = "Microsoft Toaster With Upper Device Filter"
; следовательно этот inf предлагает установку (тут может быть несколько строк оборудования-драйверов):
; "Microsoft Toaster With Upper Device Filter" = установка по разделу "ToasterFilter", ветка девайса в реестре {...ляляля...\MsToaster}
; для нее, необходимо выполнить секцию [ToasterFilter.NT] для установки в x32  или ToasterFilter.ntamd64( для x64)

[ToasterFilter.NT]  
Include=toaster.inf      ; +включает установку toaster.inf, ключевое слово Include (см доку)
Needs=Toaster_Device.NT ; <=нужен раздел (дока по Needs) из  toaster.inf
CopyFiles=ToasterFilter.NT.Copy ;<- какие файлы копировать при установке (дока по CopyFiles)
AddReg=ToasterFilter.NT.AddReg ;<= что добавить в реестр для установки (дока по AddReg)

[ToasterFilter.NT.AddReg]                            
;- пустой, то есть никаких не связанных с "железкой" ключей в реестр не надо.
[ToasterFilter.NT.HW]
AddReg = ToasterFilter.NT.HW.AddReg
;  AddReg ->при добавлении оборудования ( ключ .HW),  добавить в реестр по секции .NT.HW.AddReg
Include = toaster.inf                 ; - должен быть запущен  toaster.inf
Needs = Toaster_Device.NT.HW ;<-- с этим разделом

[ToasterFilter.NT.HW.AddReg]  
HKR,,"UpperFilters",0x00010000,"DevUpper"
; reg-root, [subkey],[value-entry-name],[flags],[value]
; - собственно установка сервиса с именем DevUpper в качестве UpperFilters данного устройства
; (поставленного по toaster.inf). он там появится подключем в реестре в разделе данного устройства из toaster.inf .

[ToasterFilter.NT.Services]
AddService = DevUpper,, filter_Service_Inst
; - тут добавить сервис, то есть собственно драйвер с фильтром.(описан ниже в [filter_Service_Inst])
;   AddService=ServiceName,[flags],service-install-section
и т.д.
наверное я немного запутанно говорю... но полезнее чтобы вы сами доку начали смотреть) честно говоря сам только недавно начал слегка понимать, когда пришлось написать inf для установки сервиса, который запускатся до Login в винде и выполняет кучку exe-шников. до этого шаблоном каким то пользовался готовым.

PS я очень запутанно) три часа ночи как ни как)))
« Последнее редактирование: 11-03-2012 23:04 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines