在旧的Windows2000上,我怎样才能得到硬盘的确切大小(字节)?
IOCTL_DISK_GET_LENGTH_INFO对卷很好,但对Windows 2000上的物理磁盘句柄(stuff at///PHYSICALDISKx)不起作用。(适用于XP或更高版本的物理驱动器)
我们仍然要支持这个古老的操作系统。。。
更新:
代码是用C编写的,所以如果可能的话,我将使用普通的Windows API。
最佳答案
您可以在C中获得可用空间(不需要任何API等)
如果您运行“dir c:\
”,最后一行将为您提供可用磁盘空间。
更好的解决方案:“fsutil volume diskfree c:
”
或者试试下面的代码。。。
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));
}
}