You can use WMI to retrieve that information
System.Management.ManagementObject("Win32_LogicalDisk.DeviceID=" & DriveLetter & ":")
See more at Win32_LogicalDisk class I hope it helps. By the way there is PInvoke too GetVolumeInformation.
If you need 'PHYSICALDRIVE0' you should use Win32_PhysicalMedia class and the class Win32_DiskDrivePhysicalMedia glue both.
An exemple of your need in C#
public string GetDiskNumber(string letter)
{
var ret = "0";
var scope = new ManagementScope("\\\\.\\ROOT\\cimv2");
var query = new ObjectQuery("Associators of {Win32_LogicalDisk.DeviceID='" + letter + ":'} WHERE ResultRole=Antecedent");
var searcher = new ManagementObjectSearcher(scope, query);
var queryCollection = searcher.Get();
foreach (ManagementObject m in queryCollection)
{
ret = m["Name"].ToString().Replace("Disk #", "")[0].ToString();
}
return ret;
}