Thanks for the reply. That's very good information. I think I am describing my function (and interface) as vendor-specific. Here's the interface descriptor: ===>Interface Descriptor<===
bInterfaceClass: 0xFF -> Vendor Specific Device
*!*CAUTION: This appears to be an invalid bInterfaceSubClass
*!*CAUTION: 0xFF is a prerelease Class ID
And the device descriptor: ===>Device Descriptor<===
bDeviceClass: 0xFF -> This is a Vendor Specific Device
bMaxPacketSize0: 0x08 = ( Bytes
idVendor: 0x0925 = Vendor ID not listed with USB.org as of 03-19-2008
English (United States) "ProCure TDC"
English (United States) "Procure Engine Control"
as dumped from USBView or whatever program WDK ships. As you can see, the interface and the device are now defined to be vendor-specific (before I read your post, only the interface descriptor had been set to vendor specific class by default by the libraries, and device class in the descriptor had been set to 0).
Let me know if I'm missing something, but I still cannot successfully target anything besides Interface in the bmRequestType (of the setup packet), and targeting Interface still masks the lower byte of bIndex (specifying the index I now understand).
Thanks again for your help!