I think that you probably need to parse the IO registry. This can be done either using the IOKit APIs (for example, by enumerating USB devices and then using IORegistryEntryGetChildIterator()) or by parsing the output of the "ioreg" console command.
You need to look in the 'IOService' registry plane. One approach would be to iterate all instances of class IOUSBDevice (which will give the USB identifiers), and then parse the child objects until you find an IOMedia object that describes the device's mount point. Alternatively, you could locate all IOMedia objects and then iterate upwards to find the object that has the required IOUSBDevice.
The hierarchy is quite deep - on my machine:
IOUSBDevice : IOUSBInterface : IOUSBInterface : IOSCSIDevicePeripheralDeviceNub : IOSCSIPeripheralDeviceType00 : IOBlockStorageServices : IOBlockStorageDriver : IOMedia
(and there are also IOFDiskPartitionScheme objects underneath IOMedia that describe the individual partitions on the disk).
The ioreg command to show all of this is "ioreg -l" or "ioreg -l -a" if you want the output in XML format for easier parsing.