I try to read data from HID device using ReadInput in timer (50ms, 300ms, ...) like this:
System::Void read_timer_Tick(System::Object^ sender, System::EventArgs^ e)
if (hidDevice == nullptr) return;
Which endpoints are you interacting with Getinput and Readinput APIs ?. ReadInput will hang indefinitely if the device does not have an Input report ready to be read.
I simply call function of CyHidDevice, but most likely it was implemented assuming that it will be used in some other way, but at this moment it is unclear how it should be used.