GetDiskFreeSpaceEx() oddity on Windows XP

  • Thread starter Thread starter Florian
  • Start date Start date
F

Florian

Hi,

I'm using the GetDiskFreeSpaceEx() API call and I'm getting really strange
results on one machine, a Windows XP (fully patched) machine. The code looks
like this:

ULARGE_INTEGER uiNotUsed, uiTotalNumberBytes, uiTotalNumberFreeBytes;

if (GetDiskFreeSpaceEx(cDrive, &uiNotUsed, &uiTotalNumberBytes,
&uiTotalNumberFreeBytes))
{
__int64 iFree64 = uiTotalNumberFreeBytes.QuadPart / (1024 * 1024);
__int64 iTotal64 = uiTotalNumberBytes.QuadPart / (1024 * 1024);

int iFree = iFree64;
int iTotal = iTotal64;
}

So I'm basically trying to store the number of megabytes in an integer
variable. This works on all Win2k (4) and Windows Server 2003 (2) machines
and works on two XP machines. But there is one laptop (that has no other
problems) where I will always get these values for both the total and free
space:

1407374883553280 (which is 0x5000000000000)

Can anybody explain to me what the **** is going on here? The laptop has one
harddisk (60Gb) with two logical drives (35.6Gb/2.33Gb free & 18.6Gb/6.42Gb
free).

I'm at a point where I can't use the app on this computer - and I'm worried
that I'm going to find more like that ... I couldn't find any problems in
technet,kb etc. so far. If I'm doing something wrong then I'd love to know
what I am doing wrong .... Even a printf("%i64d",
uiTotalNumberFreeBytes.QuadPart) shows the odd values ...


Thanks!
 
I was able to track this problem down further. The application that is
calling GetDiskFreeSpaceEx() is a windows nt service written in C++. If I
take the same code and put it into a "normal" app and run it from the
command line, then the values returned are correct. However if I run it from
the service then I get the wrong values.

I read about somebody else having a similar problem with a service written
in VB - only that it was Windows Server 2003 and not XP. Sounds similar
enough to me though - in that case the values returned were way too high
also - unfortunately there was no solution in that case either (none I know
of). I wonder if there is an issue not widely known.

Thanks ....
 
Back
Top