FWIW, in case this needs a bit more context, the idea here is to ultimately have the "unix buses" work in a single thread each, and pass a pre-allocated "bus event" to the unix side with each "bus wait" call.
On return, the event (device creation, removal, or input report) will be processed on the Win32 side, and passed again to the next wait call for unix side cleanup, and to get the next event.
The device vtable will also go through the unixlib interface, to notify unix side of device start / remove, get their report descriptor and handle output and feature reports.