Maybe i've done something wrong but i've done the following:
Read UINT64:
void WMIReader::ReadPropertyUINT64( WCHAR* PropertyName, char* ReturnBuffer )
{
VARIANT pProperty;
ClassObject->Get( PropertyName, 0, &pProperty, 0, 0 );
sprintf( ReturnBuffer, "%ld", pProperty.ulVal );
VariantClear( &pProperty );
}
Query Logical Disk Class
if( Reader->GetFirstDevice( L"Win32_LogicalDisk" ) )
{
Reader->ReadPropertyUINT64( L"Size", pBuffer );
strcpy( FoundDrive->FreeSpace, pBuffer );
}
Print out the Result
Tools.AppendWindowText( pThis->m_StatusWindow, "Hard Disk: [%s\\] - Size: [%s]", CurrentDrive->DriveLetter, CurrentDrive->FreeSpace );
What i get is the following:
Hard Disk: [C:\] - Size: [4157124]
My Drive is:
Used: 138,660,515,840 bytes - 129gb
Free: 861,541,523,456 bytes - 802gb
Total: 1,000,202,039,296 bytes - 931gb