Hi,
a symbolic link is a link to a folder/directory within your file system (NTFS,FAT32,ext2,3, ...).
So in this case the symbolic link to your device could be to i.e. I:\ (the device letter of your USB Mass Storage Device).
To Device ID's and PNP-ID's:
All Plug n' Play (so...PNP) devices must contain a deviceID in order to allow the OS to uniquely recognize the device to load the correct driver for this device, the PNP-ID is a combination of the Vendor-ID and device-ID.
Here is a great libraries,infos and examples you can easily work with:
A USB HID Component for C#[
^]
http://sourceforge.net/projects/libusbdotnet/[
^]
http://www.developerfusion.com/article/84338/making-usb-c-friendly/[
^]
Enumerate and Auto-Detect USB Drives[
^]
A USB Library to Detect USB Devices[
^]
Unfortunately I don't know what you mean with
"that would program a device through DFU."
There are several ways to communicate with RAS/DFU, depends how much code you want to write by yourself.
Using RASAPI32.dll by P/Invoke:
http://www.pinvoke.net/default.aspx/rasapi32.rasdial[
^]
Easy-To-Use Library:
http://dotras.codeplex.com/[
^]
Much Information, more specified questions are always welcome after your research process ;)
Regards
PS: You don't necessarily need to use a C++ API to achieve this.