競價移動網(wǎng)站b站網(wǎng)站推廣mmm
?1、卷->卷標(biāo)
使用FindFirstVolume()和FindNextVolume()函數(shù)體系,枚舉系統(tǒng)所有卷(Volume)的例子,然后獲取卷標(biāo)、卷類型。這個方式可以枚舉出沒有驅(qū)動器號(卷標(biāo))的卷。
int TestMode1()
{HANDLE hVolume = INVALID_HANDLE_VALUE;TCHAR tszVolumeName[MAX_PATH] = {0};TCHAR tszVolumePath[MAX_PATH] = {0};BOOL bRet;DWORD dwError;DWORD dwCount;UINT nDriveType;//1、獲取卷名稱hVolume = FindFirstVolume(tszVolumeName, ARRAYSIZE(tszVolumeName));if (hVolume == INVALID_HANDLE_VALUE){wprintf(_T("FindFirstVolume() failed, error code = %d"), GetLastError());return -1;}while (1){//2、獲取卷路徑dwCount = ARRAYSIZE(tszVolumePath);bRet = GetVolumePathNamesForVolumeName(tszVolumeName, tszVolumePath, dwCount, &dwCount);if (!bRet){dwError = GetLastError();wprintf(_T("GetVolumePathNamesForVolumeName() failed, error code = %d"), dwError);getchar();return -1;}//3、獲取驅(qū)動器類型nDriveType = GetDriveType(tszVolumePath);wprintf(_T("Volume name: %s\r\n"), tszVolumeName);wprintf(_T("Volume path: %s\r\n"), tszVolumePath);wprintf(_T("Drive type: %d\r\n\r\n"), nDriveType);bRet = FindNextVolume(hVolume, tszVolumeName, ARRAYSIZE(tszVolumeName));if (!bRet){dwError = GetLastError();if (dwError != ERROR_NO_MORE_FILES){wprintf(_T("FindNextVolume() failed, error code = %d"), dwError);return -1;}break;}}wprintf(_T("Test 2 end!\r\n\r\n"));//getchar();return 0;
}
輸入
?
2、卷標(biāo)->卷名
通過卷標(biāo)(驅(qū)動器號)獲取卷名,需要使用GetVolumeNameForVolumeMountPoint()函數(shù)。
int TestMode2()
{TCHAR tszLogicDriveStrings[1024] = {0};LPCTSTR szDrive = NULL;TCHAR tszVolumeName[MAX_PATH];GetLogicalDriveStrings(sizeof(tszLogicDriveStrings) / sizeof(TCHAR) - 1, tszLogicDriveStrings);szDrive = (LPCTSTR)tszLogicDriveStrings;do{GetVolumeNameForVolumeMountPoint(szDrive, tszVolumeName, sizeof(tszVolumeName) / sizeof(TCHAR));wprintf(_T("Drive %s, Volume name: %s\r\n"), szDrive, tszVolumeName);szDrive += (lstrlen(szDrive) + 1);} while (*szDrive != _T('\x00'));wprintf(_T("\r\nTest 1 end!\r\n\r\n"));return 0;
}
輸出
?