Esperemos que el siguiente fragmento de código le dará lo suficiente para solucionar esto - después de haber inicializado él, sólo tiene que recorrer la colección para encontrar tu pareja Es posible que desee convertir todo en mayúsculas/minúsculas antes de insertar en la colección para ayudar con el rendimiento de búsqueda.
typedef basic_string<TCHAR> tstring;
typedef map<tstring, tstring> HardDiskCollection;
void Initialise(HardDiskCollection &_hardDiskCollection)
{
TCHAR tszLinkName[MAX_PATH] = { 0 };
TCHAR tszDevName[MAX_PATH] = { 0 };
TCHAR tcDrive = 0;
_tcscpy_s(tszLinkName, MAX_PATH, _T("a:"));
for (tcDrive = _T('a'); tcDrive < _T('z'); ++tcDrive)
{
tszLinkName[0] = tcDrive;
if (QueryDosDevice(tszLinkName, tszDevName, MAX_PATH))
{
_hardDiskCollection.insert(pair<tstring, tstring>(tszLinkName, tszDevName));
}
}
}
Si usted necesita para manejar las unidades extraíbles, puede utilizar GetLogicalDeviceStrings para obtener los dispositivos existentes de forma dinámica. Tendrá que truncar las cadenas del dispositivo para que el "\" final no se pase a QueryDosDevice. –