|
Od razu nasuwa się odpowiedź (tak przy okazji, witam) - sprawdzić czy na dysku A znajduje się jakiś plik...hmm...są jednak dyskietki bez żadnych plików. Mimo wszystko trzeba wykonać na niej jakąś operacje, wywołać funckje, która coś zrobi i w przypadku błędu zwróci nam odpowiednią wartość (w przypadku, gdy dyskietka jest w napędzie i kiedy jej nie ma). Z pomocą przychodzi nam funkcja GetVolumeInformation (nie owijając w bawełnę powiem od razu, że służy do pobierania informacji o dyskach). Oto jej krótki opis:
BOOL GetVolumeInformation( LPCTSTR lpRootPathName, // adres dysku, woluminu LPTSTR lpVolumeNameBuffer, // adres zmiennej na nazwę dysku DWORD nVolumeNameSize, // długość powyżeszej zmiennej LPDWORD lpVolumeSerialNumber, // adres zmiennej na numer seryjny woluminu LPDWORD lpMaximumComponentLength, // adres zmiennej na systemową najdłuższą ścieżkę do pliku LPDWORD lpFileSystemFlags, // adres zmiennej na flagi systemowe LPTSTR lpFileSystemNameBuffer, // adres zmiennej na nazwę systemu plików DWORD nFileSystemNameSize // długość powyżeszej zmiennej ) ;
Jak widzisz całkiem sporo można wyciągnąć informacji. Co do flag systemowych - ciekawskich odsyłam do helpa, trochę samodzielności panowie (i panie) ;) Przejdźmy jednak do sedna tematu:
DWORD dw_size ; //---- if(!GetVolumeInformation("A:\", 0, 0, &dw_size, 0, 0, 0, 0)) MessageBox(hwnd, "Urządzenie nie dostępne!!!", "Błąd", MB_OK | MB_ICONWARNING) ; else MessageBox(hwnd, "Urządzenie dostępne!!!", "Błąd", MB_OK | MB_ICONWARNING) ;
Jak widzisz nie pobieramy wszystkich informacji, tylko numer seryjny (chcę się tylko dowiedzieć, czy dyskietka jest w napędzie)...jeśli funkcji uda się odczytać numer (dysk jest w napędzie) zwraca true, w przeciwnym wypadku false. I to by było na tyle. Pozdrawiam
codeguy
|