[C++]Sprawdzanie wolnego miejsca na dysku na bieżąco

TDK8GB

Użytkownik
Dołączył
Maj 17, 2013
Posty
105
Cześć!
Napisałem program w winapi który sprawdza ile jest wolnego miejsca na dysku.
Jak zrobić aby program np . po każdym usunięciu jakiegoś pliku pokazywał aktualną ilość wolnego miejsca na dysku?
Wymyśliłem żeby napisać timer który co 30 s sprawdza ilość wolnego miejsca na dysku.
Macie jakieś pomysły?
 

meViu

Użytkownik
Dołączył
Kwiecień 8, 2013
Posty
223
Możesz użyć funkcji:
FindFirstChangeNotification();
FindCloseChangeNotification();

W celu wyłapywania zmian na dysku i jeśli takowa się zdarzy można sprawdzić ilość wolnego miejsca.
 

TDK8GB

Użytkownik
Dołączył
Maj 17, 2013
Posty
105
Mam taki kod w osobnym wątku:
HANDLE dwChangeHandles;
dwChangeHandles = FindFirstChangeNotification(0,FALSE,FILE_NOTIFY_CHANGE_SIZE);
while(TRUE)
{
DWORD dwWaitStatus;
dwWaitStatus = WaitForSingleObject(dwChangeHandles,INFINITE);
switch(dwWaitStatus)
{
case WAIT_OBJECT_0:
ULARGE_INTEGER FreeBytesAvail;
ULARGE_INTEGER TotalBytes;
ULARGE_INTEGER TotalFreeBytes;
GetDiskFreeSpaceEx(0, &FreeBytesAvail, &TotalBytes, &TotalFreeBytes);
double free = (double)(signed __int64)(TotalFreeBytes.QuadPart);
double all = (double)(signed __int64)(TotalBytes.QuadPart);
double used = all - free;
free=free/1024;
free=(free/1024);
char a[100];
sprintf_s(a,"%1.0f",free);
MessageBoxA(0,a,0,0);
}
}
I cała aplikacja się zacina od razu po uruchomieniu.
 
Do góry Bottom