С COM портом повер USB проблема в виртуальности: программист
приложения работает через привычный асинхронный последовательный
порт, с которым привык взаимодействовать. Ему безразлично как оно
реализовано. Но асинхронный порт не может исчезнуть - это нарушение
самой идеологии аппаратного порта, поэтому исчезновение аппаратного
USB устройства, через которое реально идут данные никак не влияет
на прикладной уровень - виртуализатор не имеет возможности сказать,
что ему больше нечем передавать, ведь у реальной ИМС асинхронного порта нет признака отключения - она или есть на плате, или нет. Ловить факт исчезновения USB устройства можно, но для этого надо знать что работа идёт через виртуальный COM-порт, т.е. по другому строить прикладную программу. А если её строить по-другому, то можно исходно отказаться от псевдо асинхронной передачи и задействовать HID. (пояснение для короткой фразы Волшебника).