Так...
Существуют виртуальные машины, которые в основном работают под управлением операционной системы в некоторой моделируемой среде (которая может соответствовать или не соответствовать реальному оборудованию, присутствующему в настоящее время). Есть несколько возможностей подключения реальных аппаратных устройств (например, USB-накопителей) к виртуальной машине.
Кроме того, существуют некоторые так называемые «виртуальные USB-устройства» (например, Arduino Leonardo), которые можно запрограммировать так, чтобы они реагировали так же, как реальное USB-устройство, но в основном они представляют собой просто микросхему на другом конце USB-кабеля, на котором выполняется какая-либо программа ( они могут или не могут быть связаны с другими компонентами, для этого вопроса, давайте предположим, что они не).
Конечно, можно подключить виртуальное USB-устройство к виртуальной машине (так как они являются частью реального оборудования).
Можно ли было бы пропустить аппаратную часть и запустить пользовательскую программу в операционной системе хоста, которая подключается к виртуальной машине, как если бы это было реальное аппаратное устройство (скажем, в качестве плагина для программного обеспечения для виртуализации, или с использованием автономной программы с использованием некоторых API)?
Если да, есть ли какие-либо решения для дальнейшего использования?
Если нет, то почему виртуальные машины не предоставляют такую возможность (например, существуют ли какие-либо аппаратные ограничения)?