#c #c #windows-ce
#c #c #windows-ce
Вопрос:
Я хотел бы выполнить действие с драйверами устройств в системе после их инициализации во время загрузки. Я хотел бы сделать это из моего собственного приложения, которое не было бы частью какого-либо существующего драйвера. Есть ли способ проверить, когда драйвер завершит свою инициализацию из моего приложения, чтобы я мог делать то, что я хотел бы сделать. Пожалуйста, предложите.
Ответ №1:
Ваш вопрос неясен. Управление откуда? Ваш вопрос лучше сформулирован следующим образом?
Я хотел бы выполнить действие над каждым драйвером в системе после их инициализации из моего собственного, отдельного кода драйвера / приложения / etc. Этот код не был бы частью какого-либо существующего драйвера.
Если это то, что вам нужно, то нет, нет встроенного способа сделать это. Если это ваша собственная ОС, вы, вероятно, могли бы клонировать и модифицировать драйвер busenum ( %WINCEROOT%PUBLICCOMMONOAKDRIVERSBUSENUM
), который отвечает за загрузку драйверов, но я далеко не уверен, что это хорошая идея. Какую именно проблему вы пытаетесь здесь решить?
Редактировать
Для получения дополнительной информации о «опции» драйвера BUSENUM, в BusEnum.cpp метод начинается со строки 260 BusEnum::ActivateAllChildDrivers
. Этот метод отвечает за загрузку каждого из драйверов в реестр драйверов. В строке 293 вы увидите это:
pCurDevice->LoadDevice();
Затем вы должны вставить свой код сразу после этого.
Комментарии:
1. Спасибо @ctacke. Я перефразировал вопрос для большей ясности. Если я хотел бы изменить драйвер busenum, интересно, как я узнаю, когда драйвер устройства завершит инициализацию. Потому что, как я упоминал выше, я хотел бы выполнить действие над драйвером, как только он будет инициализирован.
2. Еще раз спасибо @ctacke. Это выглядит как вариант. Я также просматривал
RequestDeviceNotifications
и задавался вопросом, может ли это помочь здесь. В MSDN говорится, что «эта функция запрашивает уведомления о появлении и исчезновении интерфейсов устройств». Мне было интересно, могу ли я зарегистрироваться для получения уведомлений устройства, waitforsingleobject в дескрипторе MessageQueue для выполнения моего действия. Не уверен, что именно означает часть «внешний вид» в определении MSDN. Включает ли это загрузку библиотеки DLL и ее инициализацию. Есть предложения?