GetLogicalDriveStrings - , .
UPDATE:
, , GetLogicalDriveStrings .
#include <windows.h>
#include <malloc.h>
#include <stdio.h>
int __cdecl main()
{
DWORD cchBuffer;
WCHAR* driveStrings;
UINT driveType;
PWSTR driveTypeString;
ULARGE_INTEGER freeSpace;
cchBuffer = GetLogicalDriveStrings(0, NULL);
driveStrings = (WCHAR*)malloc((cchBuffer + 1) * sizeof(TCHAR));
if (driveStrings == NULL)
{
return -1;
}
GetLogicalDriveStrings(cchBuffer, driveStrings);
while (*driveStrings)
{
driveType = GetDriveType(driveStrings);
GetDiskFreeSpaceEx(driveStrings, &freeSpace, NULL, NULL);
switch (driveType)
{
case DRIVE_FIXED:
driveTypeString = L"Hard disk";
break;
case DRIVE_CDROM:
driveTypeString = L"CD/DVD";
break;
case DRIVE_REMOVABLE:
driveTypeString = L"Removable";
break;
case DRIVE_REMOTE:
driveTypeString = L"Network";
break;
default:
driveTypeString = L"Unknown";
break;
}
printf("%S - %S - %I64u GB free\n", driveStrings, driveTypeString,
freeSpace.QuadPart / 1024 / 1024 / 1024);
driveStrings += lstrlen(driveStrings) + 1;
}
free(driveStrings);
return 0;
}
:
C:\ - Hard disk - 181 GB free
D:\ - CD/DVD - 0 GB free
E:\ - Hard disk - 806 GB free