遍历卷
1. GetLogicalDriveStrings
获取逻辑驱动器名,比如c:/d:样式。
需注意buf中含有\0,所以需遍历buf
代码如下:
CHAR szLogicalDriveStrings[BUFSIZE];
PCHAR szDrive;
ZeroMemory(szLogicalDriveStrings,BUFSIZE);
GetLogicalDriveStrings(BUFSIZE-1,szLogicalDriveStrings);
//printf("%s\n", szLogicalDriveStrings);
szDrive = (PCHAR)szLogicalDriveStrings;
do
{
printf("%s\n", szDrive);
szDrive += (lstrlen(szDrive)+1);//指针运算,获取下一卷名
}while(*szDrive != '\x00');
2. FindFirstVolume/FindNextVolume
获取设备名,名称内含有唯一标识符.。
代码如下:
TCHAR buf[BUFSIZE];
HANDLE hVol;
BOOL bFlag;
hVol = FindFirstVolume(buf, BUFSIZE);
if(hVol == INVALID_HANDLE_VALUE)
{
printf(TEXT("No volumes found!\n"));
return -1;
}
printf("%s\n", buf);
while(FindNextVolume(hVol,buf,BUFSIZE))
{
printf("%s\n", buf);
}
bFlag = FindVolumeClose(hVol);//卷句柄需关掉