Пример того, что число виртуальных устройств ввода может превышать число реальных
Кстати, функция GetRawInputDeviceList - один из лучших примеров индийского кода, порождённого в Microsoft. При её использовании приходится помнить о некоторых подводных камнях, описанных тут. Теперь понятно, почему практическое использование RI встречается достаточно редко - надо быть либо очень внимательным и дотошным человеком, либо ... индусом.