After some reasearch it appears that overlapped I/O doesn't bring any good solution. I managed to make a working hub using synchronous API only, which is actually safer and more simple to use.