disable и uninstall PNP драйвера

Тема в разделе "WASM.NT.KERNEL", создана пользователем Sheph, 5 авг 2008.

  1. Sheph

    Sheph New Member

    Публикаций:
    0
    Регистрация:
    24 янв 2008
    Сообщения:
    89
    Всем доброго времени суток, у меня следующий вопрос, в чё разница между disable и uninstall с точки зрения IRP, посылаемых драйверу ? Т.е допустим у меня есть девайс, я иду в Hardware->Device Manager->My Device и делаю disable, получаю следующие IRP:

    IRP_MN_QUERY_DEVICE_RELATIONS для FDO
    IRP_MN_QUERY_DEVICE_RELATIONS для PDO
    IRP_MN_QUERY_REMOVE_DEVICE для FDO
    IRP_MN_QUERY_REMOVE_DEVICE для PDO
    IRP_MN_REMOVE_DEVICE для FDO
    IRP_MN_REMOVE_DEVICE для PDO

    при этом удалять PDO я не должен, иначе устройство исчезнет из списка устройств.
    Если я делаю uninstall, то я получаю тоже самое, но в этом случае я обязательно должен удалить PDO, иначе class installer не сработает и не сделает всего того что должен. Вобщем, как я понял, логика такая: если disable, то не удаляем PDO, т.к устройство физически всё ещё осталось, просто оно временно отключено. Если uninstall, то надо удалять PDO, т.к пользователь хочет избавиться от драйвера и от устройства. Вопрос только в том как определить что происходить: disable или uninstall ?
     
  2. Sheph

    Sheph New Member

    Публикаций:
    0
    Регистрация:
    24 янв 2008
    Сообщения:
    89
    Вобщем, если кому интересно, то проблема решилась, драйвер должен действовать всегда так как будто ему делают просто disable + к этому пишется коинсталлер, который и вызывается в том случае, когда я кликаю по uninstall в device manager'е. Вобщем, вся логика по удалению устройства должна быть в коинсталлере...