Re: Получить список загруженных non-plug and play drivers?
От: Геннадий Майко США  
Дата: 11.12.03 07:03
Оценка:
Здравствуйте, MindCracker, Вы писали:

MC>Собственно, сабж. Этот список можно посмотреть в Windows 2000 и выше если открыть "Device Manager" далее "Show hidden devices". Потом в списке устройств появится "Non-plug and play drivers". Так вот, спискок этих драйверов мне нужно получить программно. Где его взять?


MC>С уважением,

MC>MindCracker
--
Можно эту задачу попытаться решить следующим образом:
1. С помощью вызова функции SetupDiGetClassDevs( NULL , NULL , NULL , DIGCF_ALLCLASSES | DIGCF_PRESENT ) получить список всех устройств, установленных в системе.
2. Вызвав эту функцию еще раз так SetupDiGetClassDevs( NULL , NULL , NULL , DIGCF_ALLCLASSES ), можно получить список всех устройств, когда либо установленных в системе (здесь нужно быть аккуратным при дальнейшей обработке этого списка — windows считает драйверы разными, если их full device ID разные, т.е. может получиться, что если, например, PCI плата была переставлена в другой slot, то драйверы для нее войдут в этот список дважды).
3. С помощью функции SetupDiEnumDeviceInfo, увеличивая на единицу индекс во втором параметре, получать SP_DEVINFO_DATA конкретного драйвера.
4. С помощью функции SetupDiGetDeviceRegistryProperty аккуратно получать различную информацию об этом драйвере (например, FriendlyName или имя сервиса — это как раз то, что отображается в "Device Manager").
5. Исключив из второго списка все устройства, которые входят в первый, и дополнительно исключив повторяющиеся драйвера (см. п.2 выше, вполне возможно, что при выполнении п.4. может понадобится дополнительная информация об этих драйверах — что-то типа SPDRP_INSTALL_STATE), можно получить список всех скрытых устройств.
6. После работы эти списки желательно "закрыть" с помощью функции SetupDiDestroyDeviceInfoList.

C уважением,
Геннадий Майко.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.