Заставить шину пересчитать устройства

Тема в разделе "WASM.NT.KERNEL", создана пользователем h0t, 24 фев 2012.

  1. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    В общем как я понимаю нужно вызвать IoInvalidateDeviceRelations. Но для этого нужен PDO самой шины. (как пример USB). Как получить этот PDO?

    P.S. Делать это через SetupAPI и прочее не предлагать.)
     
  2. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    h0t
    SetupApi в kernel ? )) таик улыбнуло ...

    Что вы вообще хотите зделать ? у вас драйвер который хочет отослать нотификацию другому драйверу? или что?
     
  3. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    Да нет, из ring3 конечно). Под "делать" подразумевалось не получение PDO шины, а пересчитывание устройств. Хочу что-бы шина пере опросила устройства) Т.е. некий аналог "обновить конфигурацию оборудования" в диспетчере устройств.
     
  4. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    h0t
    Никогда не вызывал IoInvalidateDeviceRelations, но получить PDO, имея адрес объекта устройства на вершине (или в середине) стека, можно с помощью ф-ии IoGetDeviceAttachmentBaseRef. Но что-то мне подсказывает, что вопрос не совсем в этом...
     
  5. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    Нее, это не много не то. Это будет PDO, но не шины.(
     
  6. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    Уолтер Они не знает, так что вопрос еще актуальнее
     
  7. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    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
    Должны помочь

    Обратите внимание на привелегии для вызова.
     
  8. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    говорю же из драйвера...
    про это я знаю
     
  9. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Так у тебя проблема-то в чём?
    Не можешь получить PDO шины или что?
     
  10. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    Ну да, в общем то в этом.
     
  11. shchetinin

    shchetinin Member

    Публикаций:
    0
    Регистрация:
    27 май 2011
    Сообщения:
    715
    h0t
    - это ваша фраза.

    1) Не надо делать не какой PDO для шины.
    2) Смотрите реализацию ACPI в Reactos.
     
  12. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    Вы ее из контекста вцепили, я это писал к вопросу о setupAPI.
    Система делает это через PDO шины
     
  13. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.549
    Адрес:
    Russia
    Обычно чтоб добраться до PDO, посылают устройству запрос IRP_MJ_PNP c доп кодом IRP_MN_QUERY_DEVICE_RELATIONS с параметром (если не забыл) Type = TargetDeviceRelation.
    Дряйвер PDO должен вернуть адрес PDO .
     
  14. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    к сожалению, это будет PDO устройства а не шины, т.е. то что создается НА шине, и если устройство отключено(программно) то PDO уже не валиден.
     
  15. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.549
    Адрес:
    Russia
    h0t
    Ну так это надо посылать от драйвера устройства, подключенного к шине. Тогда получишь PDO шины.
    Иначе тока установить свой драйвер фильтр шины. Других "нормальных" вариантов не вижу.
     
  16. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    смотрите, ситуация такая у меня есть приаттаченный девайс, отсылая ему это сообщение, он вернет мне PDO свое, это будет PDO, которое создается шиной при обнаружении нового устройства, шина лежит еще выше. В итоге если устройство отключено полученное на предидущем этапе PDO уже не валиден так как относится к устройству а не шине.
     
  17. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.549
    Адрес:
    Russia
    h0t
    Вот я вам и говорю - что мешает сделать фильтр драйвер шины. Даже если устройство отключится ваше, фильтр будет работать - и будет возвращать PDO шины.
     
  18. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    TermoSINteZ
    Спасибо, невнимательно прочел Вы натолкнули меня на возможное решение проблемы.