Otra forma de implementar lo que buscas, es pedirle al shell que nos diga su nombre, a través de
IShellFolder Interface:
Código:
#define NO_WIN32_LEAN_AND_MEAN
#include <vcl.h>
#pragma hdrstop
#include <shlobj.h>
String GetDriveName(String Drive)
{
LPSHELLFOLDER Desk;
LPITEMIDLIST pidl;
STRRET StrRet;
String Result = "";
if(SUCCEEDED(SHGetDesktopFolder(&Desk))){
Desk->ParseDisplayName(0, NULL, StringToOleStr(Drive), 0, &pidl, 0);
Desk->GetDisplayNameOf(pidl, SHGDN_NORMAL, &StrRet);
switch(StrRet.uType) {
case STRRET_WSTR:
Result = StrRet.pOleStr;
break;
case STRRET_OFFSET:
Result = (char*)pidl + StrRet.uOffset;
break;
case STRRET_CSTR:
Result = StrRet.cStr;
break;
}
Desk->Release();
}
return Result;
}
Lo usaremos así:
Código:
String Name = GetDriveName("C:\\");
Saludos.