Ivann, хорошее начало, осталось научить программу оптимальному выбору среди дубликатов ,(например, PS2 тачпад и клавиатура на ноутбуке, по крайней мере, под NT6.x, прописались по двум путям, как корневые, и как ACPI. А складная USB клавиатура оказалась основанной на чипе, который заявляет себя как два устройства - клавиатура и нечто дополнительное)
------------ Дoбавленo в 13.02:
Кстати, функция
GetRawInputDeviceList - один из лучших примеров индийского кода, порождённого в Microsoft. При её использовании приходится помнить о некоторых подводных камнях, описанных
тут. Теперь понятно, почему практическое использование RI встречается достаточно редко - надо быть либо очень внимательным и дотошным человеком, либо ... индусом.