2012-08-11 89 views
0

我有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 
     ); 

但结果是不正确的。

任何想法?

感谢

+1

其实这是正确的函数调用。结果有什么问题? – 2012-08-11 21:54:53

+2

http://support.microsoft.com/kb/231497 – Gir 2012-08-11 21:57:29

+0

你有没有定义和初始化pszDrive? – 2012-08-11 21:58:53

回答

1

能正常工作对我来说:

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

相关问题