I'm reposting this just in case it fell through the cracks the other day.
***
I had a chance to sit down with the developer of the USB device I'm
working with at the moment yesterday evening. Some of the stuff he
told me didn't make a whole lot of sense to me but I took a few
notes and made some changes to my code. At this point last week,
prior to updating to 10.3.9, my program would cause a kernel crash
when I did a getReport. Upgrading to 10.3.9 has caused the system
not to crash, so I can at least get an error code from getReport
when it tries to do the read. The hardware developer told me that
the device stores the data at "...endpoint 2" and not zero. This
concept was somewhat new to me and I didn't see how it fit into the
scheme of things. So I did a bit of experimenting. I changed the 2nd
parameter of the open function from 0 to 2, which caused somewhat
amazing things to happen.