У вас есть несколько вариантов
1 - используйте p / invoke (вызов платформы). Используя это, вы можете сделать одну из двух вещей. Либо используйте p / invoke для вызова API Win32 из .NET, либо вы можете написать Cll, которая экспортирует упрощенный интерфейс для управления устройством, а затем взаимодействует с этой DLL.
2 - Вы можете использовать управляемый C ++ и создать библиотеку, которую можно вызывать из C #.
3- Вы могли бы обернуть свой C-код как COM-объект и использовать COM-взаимодействие из C #.
Поскольку у вас предположительно имеется некоторый работающий код на C, я думаю, что проще всего было бы создать DLL, которая экспортирует интерфейс, который легко вызывать, и затем использовать P / Invoke для вызова этого из C #