65.9K
CodeProject is changing. Read more.
Home

Disk free space

starIconstarIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIcon

2.51/5 (36 votes)

Apr 7, 2003

CPOL
viewsIcon

989341

downloadIcon

4100

This code is used to check for free space available on logical disks

Sample Image - Harddisk.jpg

Introduction

This code is used to check for free space available on logical disks.

How to use it

Copy the source files HardDiskManager.cpp and HardDiskManager.h to your project directory and add them to your project.

CHardDiskManager::CHardDiskManager()
{
    // bytes available to caller
    m_uliFreeBytesAvailable.QuadPart = 0L;

    // bytes on disk
    m_uliTotalNumberOfBytes.QuadPart = 0L;

    // free bytes on disk
    m_uliTotalNumberOfFreeBytes.QuadPart = 0L;
}

CHardDiskManager::~CHardDiskManager()
{
}

bool CHardDiskManager::CheckFreeSpace(LPCTSTR lpDirectoryName)
{
    if( !GetDiskFreeSpaceEx(
        lpDirectoryName,                  // directory name
        &m_uliFreeBytesAvailable,         // bytes available to caller
        &m_uliTotalNumberOfBytes,         // bytes on disk
        &m_uliTotalNumberOfFreeBytes) )   // free bytes on disk
        return false;

    return true;
}

DWORD64 CHardDiskManager::GetFreeBytesAvailable(void)
{ 
    return m_uliFreeBytesAvailable.QuadPart;
}

DWORD64 CHardDiskManager::GetTotalNumberOfBytes(void)
{ 
    return m_uliTotalNumberOfBytes.QuadPart;
}

DWORD64 CHardDiskManager::GetTotalNumberOfFreeBytes(void)
{ 
    return m_uliTotalNumberOfFreeBytes.QuadPart;
}

double CHardDiskManager::GetFreeGBytesAvailable(void)
{ 
    return (double)(
        (signed __int64)(m_uliFreeBytesAvailable.QuadPart) /
        1.0e9
    );
}

double CHardDiskManager::GetTotalNumberOfGBytes(void)
{ 
    return (double)(
        (signed __int64)(m_uliTotalNumberOfBytes.QuadPart) /
        1.0e9
    );
}

double CHardDiskManager::GetTotalNumberOfFreeGBytes(void)
{ 
    return (double)(
        (signed __int64)(m_uliTotalNumberOfFreeBytes.QuadPart) /
        1.0e9
    );
}

//
// Application
//
#include "HardDiskManager.h"

using namespace std;


void main( int argc, char** argv ) 
{
    CHardDiskManager manager;

    // Set the directory name with " : " 
    // Ex:. C: , c: , F: , ...
    manager.CheckFreeSpace("c:");

    cout << "Drive C:\\" << endl;

    cout << "FreeBytesAvailable:     " <<
        manager.GetFreeGBytesAvailable() <<
        " GBytes. " << endl;
    
    cout << "TotalNumberOfBytes:     " <<
        manager.GetTotalNumberOfGBytes()
        << " GBytes. " << endl;

    cout << "TotalNumberOfFreeBytes: " <<
        manager.GetTotalNumberOfFreeGBytes() <<
        " GBytes. " << endl;

    manager.CheckFreeSpace("d:");

    cout << "Drive D:\\" << endl;

    cout << "FreeBytesAvailable:     " <<
        manager.GetFreeGBytesAvailable()
        << " GBytes. " << endl;

    cout << "TotalNumberOfBytes:     " <<
        manager.GetTotalNumberOfGBytes()
        << " GBytes. " << endl;

    cout << "TotalNumberOfFreeBytes: " <<
        manager.GetTotalNumberOfFreeGBytes() <<
        " GBytes. " << endl;

    return 0;
}

///////////////////////////////////////////////////////////////