GetDiskFreeSpaceExA под дэбагом и релизом выдаёт разные значения.
| Код | typedef BOOL (WINAPI *GetDiskFreeSpaceEx_t)(LPCTSTR,PULARGE_INTEGER, PULARGE_INTEGER,PULARGE_INTEGER); GetDiskFreeSpaceEx_t pGetDiskFreeSpaceEx = (GetDiskFreeSpaceEx_t)::GetProcAddress (::GetModuleHandle("kernel32.dll" ),"GetDiskFreeSpaceExA" ); if ( pGetDiskFreeSpaceEx ) { ULARGE_INTEGER _total, _free; SetErrorMode( SEM_FAILCRITICALERRORS ); if (!pGetDiskFreeSpaceEx(_T(path), &_free, &_total, NULL)) { SetErrorMode( 0 ); if ( free.QuadPart ) free.QuadPart = 0; if ( total.QuadPart ) total.QuadPart = 0; return false; } SetErrorMode(0);
if ( total.QuadPart ) { total.QuadPart = _total.QuadPart; } if ( free.QuadPart ) { free.QuadPart = _free.QuadPart; } }
|
Под релизом free.QuadPart = 0.
VS5. |