【问题标题】:How do I get available disk space from Windows using C?如何使用 C 从 Windows 获取可用磁盘空间?
【发布时间】:2012-08-11 21:52:08
【问题描述】:

我有 1 个磁盘被分成多个分区。我想获得每个分区上的可用空间,以确定最好的文件放置位置。

如何在 C 中做到这一点?

我一直在尝试使用此代码:

__int64 lpFreeBytesAvailable, lpTotalNumberOfBytes, lpTotalNumberOfFreeBytes;
DWORD dwSectPerClust, dwBytesPerSect, dwFreeClusters, dwTotalClusters;

test = GetDiskFreeSpaceEx(
        pszDrive,
        (PULARGE_INTEGER)&lpFreeBytesAvailable,
        (PULARGE_INTEGER)&lpTotalNumberOfBytes,
        (PULARGE_INTEGER)&lpTotalNumberOfFreeBytes
        );

但结果不正确。

有什么想法吗?

谢谢

【问题讨论】:

  • 实际上这是正确的调用函数。结果有什么问题?
  • 你定义和初始化pszDrive了吗?
  • 考虑生成一个显示错误行为的小型可编译程序。
  • 我从未使用过 Windows。我在linux中回答了你

标签: c windows


【解决方案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));
         }
   }

【讨论】:

    猜你喜欢
    • 2019-12-12
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2013-12-05
    • 2012-11-15
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多