Pages: [1]   Go Down
Author Topic: problema con el modulo free disk.  (Read 353 times)
0 Members and 1 Guest are viewing this topic.
chejov suzdal voshkov
Sr. Member
****

Karma: 8
Offline Offline

Posts: 175



View Profile WWW
« on: December 17, 2009, 01:26:49 PM »

Hola.

He estado mirando el modulo del free disk, en un principio funciona bien y te devuelve el valor en Mb. hasta aqui todo bien.

El problema que he encontrado es cuando el espacio libre son gigas, entonces te retorna un valor "falso", en mi caso tengo en la C: 139 Gigas libres y el agente me dice 3,794 Megas, el resto de unidades las hace bien.

Entonces se me ha ocurrido mirar los includes, y la consulta wmi la hace bien.
pandora_wmi.cc
...
Pandora_Wmi::getDiskFreeSpace
...
 query = "SELECT Size, FreeSpace FROM Win32_LogicalDisk WHERE DeviceID = \"" + disk_id + "\"";
...

el problema biene cuando:
line: 168 space = Pandora_Strutils::strtoulong (space_str);

que llama al conversor.

pandora_strutils.cc
Pandora_Strutils::strtoulong (const string str) {
   unsigned long long result;

   if (! std::sscanf (str.c_str (), "%I64d", &result)) {
      throw Invalid_Conversion ();
   }

   return result;
}

que por lo que yo entiendo es un long int, que a mi entender tiene de rango

signed -> −2,147,483,648 to 2,147,483,647
unsigned -> 0 to 4,294,967,295

con lo cual un valor de 150,003,126,272 se pasa de largo.

Si me equivoco corregidme, gracias

Saludos
Logged


Pages: [1]   Go Up
Print
 
Jump to:  


SourceForge.net Logo  This site is monitored by Pandora FMS   ArticaST