I have made some great success implementing this in my code. I'm getting errors on my test code. I'm guessing this will make sense to you but if you need to see my class let me know.
in SendOutputReportViaInterruptTransfer at the catch I get
IO operation will not work. Most likely the file will become too long or the handle was not opened to support synchronous IO operations."
I'm sure I just missed something. I did removed the cts from the call signs following the fileStreamDeviceData because I don't have the windows you did nor do I really know how to use cts. I'm assuming since the constructor allows without that's ok.