[Assuming Windows, given the C# remark. Please tag accordingly]
Yes, this is possible. And it is possible to get the details of the file. It will require programming, though. Watch for WM_DEVICECHANGE and re-enumerate drives afterwards. It will get you USB pendrives, but also SD cards. I expect that's a bonus for you.
To get more details once you know a drive has arrived, use System.IO.FileSystemWatcher
Update
I found a better solution - if you register for volume interface notifications, you'll get the volume path for the new drive.
First, create a DEV_BROADCAST_DEVICEINTERFACE
with dbcc_classguid=GUID_DEVINTERFACE_VOLUME
. Then pass this to RegisterDeviceNotification()
. You will again get a WM_DEVICECHANGE but you can now cast the lParam from the message to DEV_BROADCAST_DEVICEINTERFACE*
.
You can pass the dbcc_name
you receive to GetVolumeNameForVolumeMountPoint()
. You can also pass all drive letters from GetLogicalDriveStrings()
to GetVolumeNameForVolumeMountPoint()
. You'll have one matching volume name; this is the new drive.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…