GetFreeDiskEx()如何调用呀?

snake1122 2002-01-18 04:32:25
我写如下代码:
BOOL TestDisk;
ULARGE_INTEGER * m_DiskFreeSpaceMy=NULL;
ULARGE_INTEGER * m_DiskFreeSpaceMy1=NULL;
ULARGE_INTEGER * m_DiskFreeSpaceMy2=NULL;
TestDisk=::GetDiskFreeSpaceEx(NULL,m_DiskFreeSpaceMy,m_DiskFreeSpaceMy1,m_DiskFreeSpaceMy2);
if(TestDisk)
{
m_DiskFreeSpace.Format("%f",m_DiskFreeSpaceMy->QuadPart);
m_DiskFreeSpace=_T(m_DiskFreeSpaceMy->QuadPart);
UpdateData(FALSE);
}

我想得到当前硬盘的空间大小,结果什么也没得到(三个变量全部是空),请问哪儿出错了?另外如何将ULARGE_INTEGER *转换成CString呢?
...全文
103 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
morningsing 2002-01-18
  • 打赏
  • 举报
回复
这是我以前写的代码,计算所有硬盘空间之和,换算成兆字节,你看看吧
char disk[5];
::strcpy( disk, "D:\\" );
ULARGE_INTEGER liSpace;
liSpace.QuadPart = 0;
while( 1 )
{
if( ::GetDriveType( ( LPCTSTR ) disk ) != DRIVE_FIXED )
break;
ULARGE_INTEGER li;
::GetDiskFreeSpaceEx( (LPCTSTR) disk, NULL, NULL, &li );
liSpace.QuadPart += li.QuadPart;
disk[0]++;
}
DWORD dw = ( DWORD ) (liSpace.QuadPart / (1024*1024));
CString num;
num.Format( "%d M", dw );
lhj 2002-01-18
  • 打赏
  • 举报
回复
没错,我粗心没注意是无符号的。
snake1122 2002-01-18
  • 打赏
  • 举报
回复
搞定!谢谢!
我将m_DiskFreeSpace.Format("%ld",m_DiskFreeSpaceMy);
改为m_DiskFreeSpace.Format("%lu",m_DiskFreeSpaceMy);
就正确了!

非常感谢你!
masterz 2002-01-18
  • 打赏
  • 举报
回复
ULARGE_INTEGER ui;
//set ui value
char buf[100];
_i64toa(ui,buf,10);
snake1122 2002-01-18
  • 打赏
  • 举报
回复
m_DiskFreeSpaceMy得到的是正确的
转化时好像出错了!
snake1122 2002-01-18
  • 打赏
  • 举报
回复
怎么得到的是个负数呢?
lhj 2002-01-18
  • 打赏
  • 举报
回复
没看你后面的问题,发现还有错
if(TestDisk)
{
// CString m_DiskFreeSpace;
m_DiskFreeSpace.Format("%ld",m_DiskFreeSpaceMy);
UpdateData(FALSE);
}

lhj 2002-01-18
  • 打赏
  • 举报
回复
不应该参数为NULL
BOOL TestDisk;
ULARGE_INTEGER m_DiskFreeSpaceMy;
ULARGE_INTEGER m_DiskFreeSpaceMy1;
ULARGE_INTEGER m_DiskFreeSpaceMy2;
TestDisk=::GetDiskFreeSpaceEx(NULL,&m_DiskFreeSpaceMy,&m_DiskFreeSpaceMy1,&m_DiskFreeSpaceMy2);
if(TestDisk)
{
m_DiskFreeSpace.Format("%f",m_DiskFreeSpaceMy->QuadPart);
m_DiskFreeSpace=_T(m_DiskFreeSpaceMy->QuadPart);
UpdateData(FALSE);
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧