В общем как я понимаю нужно вызвать IoInvalidateDeviceRelations. Но для этого нужен PDO самой шины. (как пример USB). Как получить этот PDO? P.S. Делать это через SetupAPI и прочее не предлагать.)
h0t SetupApi в kernel ? )) таик улыбнуло ... Что вы вообще хотите зделать ? у вас драйвер который хочет отослать нотификацию другому драйверу? или что?
Да нет, из ring3 конечно). Под "делать" подразумевалось не получение PDO шины, а пересчитывание устройств. Хочу что-бы шина пере опросила устройства) Т.е. некий аналог "обновить конфигурацию оборудования" в диспетчере устройств.
h0t Никогда не вызывал IoInvalidateDeviceRelations, но получить PDO, имея адрес объекта устройства на вершине (или в середине) стека, можно с помощью ф-ии IoGetDeviceAttachmentBaseRef. Но что-то мне подсказывает, что вопрос не совсем в этом...
h0t ну вот хоть вопрос теперь ясен. Вообщем я знаю cfgmgr32 это то что юзает Device Manager. http://msdn.microsoft.com/en-us/library/windows/hardware/ff549794%28v=vs.85%29.aspx CM_Reenumerate_DevNode CM_Reenumerate_DevNode_Ex Должны помочь Обратите внимание на привелегии для вызова.
h0t - это ваша фраза. 1) Не надо делать не какой PDO для шины. 2) Смотрите реализацию ACPI в Reactos.
Обычно чтоб добраться до PDO, посылают устройству запрос IRP_MJ_PNP c доп кодом IRP_MN_QUERY_DEVICE_RELATIONS с параметром (если не забыл) Type = TargetDeviceRelation. Дряйвер PDO должен вернуть адрес PDO .
к сожалению, это будет PDO устройства а не шины, т.е. то что создается НА шине, и если устройство отключено(программно) то PDO уже не валиден.
h0t Ну так это надо посылать от драйвера устройства, подключенного к шине. Тогда получишь PDO шины. Иначе тока установить свой драйвер фильтр шины. Других "нормальных" вариантов не вижу.
смотрите, ситуация такая у меня есть приаттаченный девайс, отсылая ему это сообщение, он вернет мне PDO свое, это будет PDO, которое создается шиной при обнаружении нового устройства, шина лежит еще выше. В итоге если устройство отключено полученное на предидущем этапе PDO уже не валиден так как относится к устройству а не шине.
h0t Вот я вам и говорю - что мешает сделать фильтр драйвер шины. Даже если устройство отключится ваше, фильтр будет работать - и будет возвращать PDO шины.