如何从Windows使用C获得可用磁盘空间?
问题描述:
我有1个磁盘分成多个分区。我想获得每个分区上的可用空间,以确定最佳放置文件的位置。如何从Windows使用C获得可用磁盘空间?
如何在C中做到这一点?
我一直在尝试使用此代码:
__int64 lpFreeBytesAvailable, lpTotalNumberOfBytes, lpTotalNumberOfFreeBytes;
DWORD dwSectPerClust, dwBytesPerSect, dwFreeClusters, dwTotalClusters;
test = GetDiskFreeSpaceEx(
pszDrive,
(PULARGE_INTEGER)&lpFreeBytesAvailable,
(PULARGE_INTEGER)&lpTotalNumberOfBytes,
(PULARGE_INTEGER)&lpTotalNumberOfFreeBytes
);
但结果是不正确的。
任何想法?
感谢
答
能正常工作对我来说:
void main (int argc, wchar_t **argv)
{
BOOL fResult;
unsigned __int64 i64FreeBytesToCaller,
i64TotalBytes,
i64FreeBytes;
fResult = GetDiskFreeSpaceEx (L"C:",
(PULARGE_INTEGER)&i64FreeBytesToCaller,
(PULARGE_INTEGER)&i64TotalBytes,
(PULARGE_INTEGER)&i64FreeBytes);
if (fResult)
{
printf ("\n\nGetDiskFreeSpaceEx reports\n\n");
printf ("Available space to caller = %I64u MB\n",
i64FreeBytesToCaller/(1024*1024));
printf ("Total space = %I64u MB\n",
i64TotalBytes/(1024*1024));
printf ("Free space on drive = %I64u MB\n",
i64FreeBytes/(1024*1024));
}
}
+0
回答了你,非常感谢,有一点问题。 – USer22999299 2012-08-13 06:21:42
其实这是正确的函数调用。结果有什么问题? – 2012-08-11 21:54:53
http://support.microsoft.com/kb/231497 – Gir 2012-08-11 21:57:29
你有没有定义和初始化pszDrive? – 2012-08-11 21:58:53