The driver stuff has caused me some trouble too. Currently, each driver provides a set of known commands (which are simply Message Types) and as f. ex. character/pointing devices behave completely different compared to block devices (you can wait till getting grey hair ere something arrives whilst reading/waiting for input on a character device like keyboard/mouse) the interaction with the other parts of the system needs to be laid out in a completely different way.
Thus, for character devices, I've chosen to give delayed reply in async. manner. The file service (which is responsible for that stuff too) records an input request on a given console. as soon as input from that console comes along, it passes the input to the waiting thread and sends a reply.
Networking stuff is odd in all ways. You can regard your nic as a source of events like your other hardware, but you need to tend to it especially.
So, I have for my network stuff: driver files, which export symbols, which are taken by the net service and called by means of indirection structures (netif interface data) Each driver becomes an input and an output thread. They have: init, up, down, output,input functions.
Needless to say that getting a proper network stack planned and developped is like developping a kernel - really brain exhausting in the beginning. But once you've tied together all the loose ends, it merges to some beautiful kind of stuff. *gg*
Besides, there's calls like iocntl & fcntl which I've also incorporated in BlueIllusionOS just for the fun of it.
For your consoles you might think about an escape char mechanism for submitting commands. They stick in the same stream of output, the console driver takes the stream and checks whether there's escape stuff to treat. Easy stuff.
The more, I recommend you think early about some kind of database where to record all drivers/device/properties relations so one can easily take a record set and work with it. Having to query a dozen of services to get info about a device is tiring. Yeah, I have missed to plan this in the early stages. I'm a sloppy hog in this regard, I admit it.
stay safe.