Would you consider an MFC approach?
I've had a similar problem, choosing between writing an application in either MFC C++ or C# to make use of a customers own USB protocol with their own APIs. In the end, I went with both - the MFC application used on production lines where there is no time available to install the dot net framework and a C# WinForms applications for hardware developers with more diagnostic functions involved.
I know this post probably isn't too helpful but I found the C++ code much easier to work with due to the native API calls. I also found it a good learning experience using C++ and the whole MFC framework - something which I can now apply better to future projects.
Make no mistake though, I still prefer to use C# wherever I can.
K