Question

I'm investigating options available for creating a virtual USB device (say, a keyboard or a mass storage device), so to emulate its function as needed and to allow a userspace app to emulate its insertion/removal at will.

What I am not clear about is how to go about the emulation of insertion/removal. It seems that one option is to emulate a (virtual) USB hub and have it fake the device arrival/departure events (and I would also supply the device driver for my virtual USB device and that's where my device logic will reside).

I know my way around Windows kernel (having written NDIS miniport drivers), not afraid of SoftICE, but USB is not my domain, just starting out with it.

Am I on the right track with the virtual hub approach? If so, is developing virtual hub drivers supported by WDK (it doesn't seem to be)?

Any other options?

--

(Edit) Forgot to mention - I am aware of DSF, but it is not supported on W8.

Was it helpful?

Solution

Am I on the right track with the virtual hub approach?

In short - yes, I was right.

That's how USBIP does it and it's a relatively simple way to go. Also, see this comment by Eugen.

OTHER TIPS

I don't know if you are aware, but Microsoft released to Win10 the UDE (USB device emulation).

In the section Write a UDE client driver they describe exactly what you want.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top