Всем доброго времени суток, у меня следующий вопрос, в чё разница между 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 ?
Вобщем, если кому интересно, то проблема решилась, драйвер должен действовать всегда так как будто ему делают просто disable + к этому пишется коинсталлер, который и вызывается в том случае, когда я кликаю по uninstall в device manager'е. Вобщем, вся логика по удалению устройства должна быть в коинсталлере...