Есть inf-файл. Драйвер модема для мобильника Nokia 6021.
Мне надо написать тулзу для инсталяции девайсов по inf-файлам (таким как этот). Умные люди мне посоветовали глянуть в DDK сорсы одной тулзы под названием devcon (DDK\src\setup\devcon). Все классно, другие inf-файлы она инсталит, а вот этот -- НЕТ! Полазил по исходникам и обнаружил что она вылетает на ф-ции SetupDiCallClassInstaller (код ошибки 997 IO_PENDING). Данные на вход этой ф-ции подготавливает ф-ция SetupDiSetDeviceRegistryProperty, которая в свою очередь принимает параметр "LPBYTE HardwareId".
Этот inf-файл я инсталил через Contrl Panel->Phone and Modem Options (добавить модем). Все ОК! Я перехватил в-цию SetupDiSetDeviceRegistryProperty и посмотрел что ей приходит на вход при инсталяции этого inf-файла. Оказывается она вызывается ТРИЖДЫ (!!!) со следующими параметрами:
SetupDiSetDeviceRegistryProperty(HardwareId = {4D36E96D-E325-11CE-BFC1-08002BE10318}) -- это ClassGUID из inf-файла
SetupDiSetDeviceRegistryProperty(HardwareId = Nokia 6021 Cable) -- это типа название модема
SetupDiSetDeviceRegistryProperty(HardwareId = ROOTMODEM) -- ну а это ХЗ
Может кто-нидь знает порядок действий, перечень ф-ций для вызова, потому как devcon-а явно недорстаточно уже хотябы потому что он вызывает SetupDiSetDeviceRegistryProperty один раз, а при инстале через Contrl Panel эта ф-ция вызывается трижды!