Hiding/Restricting (Virtual) Controllers


I am currently re-designing an application that will open multiple instances of a game process, in order to "emulate" split screen play on PC, for games that don't natively support it.

For input on the new application, I want to use ViGEm, as users can use all sorts of controllers. However, after the app creates the virtual controllers, I need the ability to "assign" each virtual controller to a process (essentially hiding the others, so the process only thinks there is that 1 single controller input - the assigned VC).

I was able to accomplish this easily with x360ce (pre v4) as it hooked the game process and restricted it based on settings in the ini. I understand this is not how it works with ViGEm and x360ce v4, as these use a driver on the OS, and not a library being injected into a process. But I figured it would be worth a shot to ask the subject matter experts, if there is an easy way to hide virtual controllers from processes? Kind of like what HidGuardian or devreoder does. Hooking the Windows API and filtering WM_INPUT to block any messages that aren't coming from the "assigned" virtual controller isn't really reliable either.

Thank you in advance.