还有一种方法可以遍历卷,通过调用FindFirstVolume和FindNextVolume,
函数原型:
HANDLE FindFirstVolume(
LPTSTR lpszVolumeName,
DWORD cchBufferLength
);
BOOL FindNextVolume(
HANDLE hFindVolume,
LPTSTR lpszVolumeName,
DWORD cchBufferLength
);
# include<windows.h>
# include<stdio.h>
# define BUFSIZE 1024
int main()
{
TCHAR buf[BUFSIZE];
HANDLE hVol;
BOOL bFlag;
hVol = FindFirstVolume(buf, BUFSIZE);//查找第一个卷
if (hVol == INVALID_HANDLE_VALUE)
{
printf("No valumes found\n");
return -1;
}
wprintf(L"%s\n",buf);
//结果是输出”\\?\Volume{c3d99cd5-0000-0000-007e-000000000000}\“,
//这是盘的设备名,普通的”c:“等是逻辑驱动器名
while (FindNextVolume(hVol, buf, BUFSIZE))
{
wprintf(L"%s\n", buf);
}
bFlag = FindVolumeClose(hVol);//最后要关闭句柄,如果关闭成功,
//bFlag为false
system("pause");
//return 0;
return bFlag;
}