Будем надеяться, что следующий фрагмент кода даст вам достаточно, чтобы решить эту проблему - после того, как вы инициализируются его, вам просто нужно перебрать коллекцию чтобы найти ваш матч. Вы можете конвертировать все в верхний/нижний регистр, прежде чем вставлять их в коллекцию, чтобы помочь с результатами поиска.
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));
}
}
}
Если вам нужно обрабатывать съемные диски, вы можете использовать GetLogicalDeviceStrings получить существующие устройства динамически. Вам нужно усечь строки устройства так, чтобы конечный «\» не передавался QueryDosDevice. – 2011-03-24 17:55:07