【磁盘处理相关方法】2,得到磁盘总空间、可用剩余空间

1,涉及的API


GetDiskFreeSpaceEx,声明如下:

WINBASEAPI
BOOL
WINAPI
GetDiskFreeSpaceExA(
    __in_opt  LPCSTR lpDirectoryName,
    __out_opt PULARGE_INTEGER lpFreeBytesAvailableToCaller,
    __out_opt PULARGE_INTEGER lpTotalNumberOfBytes,
    __out_opt PULARGE_INTEGER lpTotalNumberOfFreeBytes
    );
WINBASEAPI
BOOL
WINAPI
GetDiskFreeSpaceExW(
    __in_opt  LPCWSTR lpDirectoryName,
    __out_opt PULARGE_INTEGER lpFreeBytesAvailableToCaller,
    __out_opt PULARGE_INTEGER lpTotalNumberOfBytes,
    __out_opt PULARGE_INTEGER lpTotalNumberOfFreeBytes
    );
#ifdef UNICODE
#define GetDiskFreeSpaceEx  GetDiskFreeSpaceExW
#else
#define GetDiskFreeSpaceEx  GetDiskFreeSpaceExA
#endif // !UNICODE


参数说明:

lpDirectoryName是驱动器的名称。注意需要传入"C:","D:"形式的名称。

lpFreeBytesAvailableToCaller 接收用户可用的磁盘空间。

lpTotalNumberOfBytes 接收磁盘总共的空间。

lpTotalNumberOfFreeBytes 接收磁盘空闲的空间。

以上都是字节为单位。


2,使用

这里我们获取一个GB为单位的的浮点数磁盘大小。
FLOAT GetDiskFreeSpaceAsGB(WCHAR cDiskName)
{
    FLOAT fFreeSpaceAsGB = 0.0f;

    ULARGE_INTEGER   uiFreeBytesAvailableToCaller;
    ULARGE_INTEGER   uiTotalNumberOfBytes;
    ULARGE_INTEGER   uiTotalNumberOfFreeBytes;

    WCHAR szPath[2] = {0};
    swprintf(szPath,L"%c:",cDiskName);

    if(GetDiskFreeSpaceExW(szPath,
        &uiFreeBytesAvailableToCaller,
        &uiTotalNumberOfBytes,
        &uiTotalNumberOfFreeBytes))
    {
        fFreeSpaceAsGB = (FLOAT)((LONGLONG)(uiFreeBytesAvailableToCaller.QuadPart)/1024.0f/1024.0f/1024.f);
    }
    return fFreeSpaceAsGB;
}



同样的,获取总空间大小,就使用uiTotalNumberOfBytes这个值就可以了。


3,效果




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆枫゛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值