Я хотел бы использовать вызов GetVolumeInformation для получения имени съемного устройства. Я могу просто получить имя и сохранить его в переменной массива TCHAR szVolNameBuff. Вот мой код для этого:
// Get Volume Information to check for NTFS or FAT
TCHAR szFileSys[256];
TCHAR szVolNameBuff[256];
DWORD dwSerial = 0;
DWORD dwMFL = 0;
DWORD dwSysFlags = 0;
bool bSuccess;
char fileType[255];
int bSuccessdebug = 0;
//LPCTSTR temp = _T("E:\\"); For debugging only
bSuccess = GetVolumeInformation(drivePath,
szVolNameBuff,
sizeof(szVolNameBuff),
&dwSerial,
&dwMFL,
&dwSysFlags,
szFileSys,
sizeof(szFileSys));
Когда я пытаюсь распечатать содержимое переменной со строкой:
printf("szVolNameBuff holds: %s \n", &szVolNameBuff);
Я получаю вывод «T» вместо названия «Transcend», которое является названием накопителя. Я отладил его в Visual Studio 2008 и обнаружил, что массив TCHAR хранит имя как:
[0] 'T'
[1] 0
[2] 'R'
[3] 0
[4] «А»
[5] 0
[6] 'N'
[7] 0
и так далее и тому подобное. Это почему? Я хочу, чтобы массив сохранял слово как просто:
[0] 'T'
[1] 'R'
[2] «А»
[3] 'N'
[4] 'S'
чтобы позже использовать его для конкатенации строк. Есть ли способ это исправить?