You have to find the device path, open it, and then enumerate the interfaces to find and open the interface needed.
The code for this is messy because the API behavior and preferred practices of USB drivers changed from XP, to Vista, 7, and now Windows 8.
Looks like you're doing that with SetupDiEnumDeviceInterfaces and SetupDiGetDeviceInterfaceDetail.
If the device's driver is WinUSB, this is easier because the API is documented. If you are talking to a proprietary driver, you'll have to get the details from them. It may involve ReadFile/WriteFile or IoCtrl calls to do what you want.
Here's the API for finding an endpoint in WinUSB:
http://msdn.microsoft.com/en-us/library/windows/hardware/ff540293%28v=vs.85%29.aspx[
^]
There are also a couple of decent WinUSB articles on codeproject.
For a proprietary driver, if you can't get any documentation - there are some utilities to "spy" and the messaging between the driver and application.
http://www.nirsoft.net/utils/device_io_view.html
I am, of course, talking about calls to DeviceIoControl.
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363219%28v=vs.85%29.aspx[
^]
Some of the USB related IOCTL messages are somewhat standardized.
http://msdn.microsoft.com/en-us/library/windows/hardware/ff537421%28v=vs.85%29.aspx[
^]
This is more of a brain dump than a solution but - without more information - is all I can offer.