почему я не получаю название тома для USB-накопителя - PullRequest
0 голосов
/ 24 июня 2010

Как я могу получить имя тома для буквы диска

пример: как я могу получить имя тома для G: /

Спасибо за любую помощь

Ответы [ 3 ]

2 голосов
/ 24 июня 2010

Используйте следующий фрагмент:

TCHAR volumeName[MAX_PATH + 1] = { 0 };
TCHAR fileSystemName[MAX_PATH + 1] = { 0 };
DWORD serialNumber = 0;
DWORD maxComponentLen = 0;
DWORD fileSystemFlags = 0;

if (GetVolumeInformation(
    _T("C:\\"),
    volumeName,
    ARRAYSIZE(volumeName),
    &serialNumber,
    &maxComponentLen,
    &fileSystemFlags,
    fileSystemName,
    ARRAYSIZE(fileSystemName)))
{
_tprintf(_T("Volume Name: %s\n"), volumeName);
_tprintf(_T("Serial Number: %lu\n"), serialNumber);
_tprintf(_T("File System Name: %s\n"), fileSystemName);
_tprintf(_T("Max Component Length: %lu\n"), maxComponentLen);
}

В моей системе вывод был:

Volume Name: Zion
Serial Number: 112749257
File System Name: NTFS
Max Component Length: 255
2 голосов
/ 24 июня 2010
BOOL WINAPI GetVolumeInformation(
  __in_opt   LPCTSTR lpRootPathName,
  __out      LPTSTR lpVolumeNameBuffer,
  __in       DWORD nVolumeNameSize,
  __out_opt  LPDWORD lpVolumeSerialNumber,
  __out_opt  LPDWORD lpMaximumComponentLength,
  __out_opt  LPDWORD lpFileSystemFlags,
  __out      LPTSTR lpFileSystemNameBuffer,
  __in       DWORD nFileSystemNameSize
);

http://msdn.microsoft.com/en-us/library/aa364993(v=VS.85).aspx

Передайте корневой путь тома (например, "C: \"), получите много информации (включая имя тома, также называемое меткой тома).

Доступно с Windows 2000.

0 голосов
/ 24 июня 2010

Вы можете получить его по этому коду:

BOOL WINAPI GetVolumeNameForVolumeMountPoint(
  __in   LPCTSTR lpszVolumeMountPoint,
  __out  LPTSTR lpszVolumeName,
  __in   DWORD cchBufferLength
);

Для дальнейшей справки Нажмите здесь

...