Gowers Temat założony przez niniejszego użytkownika |
Klasa Win32_Volume » 2018-07-28 19:31:04 |
|
pekfos |
» 2018-07-28 21:28:51 Minimum supported client
None supported |
|
|
Gowers Temat założony przez niniejszego użytkownika |
» 2018-07-28 22:25:16 Dzięki, nie byłem pewny. Nie wiesz czy powstało coś nowego za tę klasę co umożliwia formatowanie? Wiem, że jest też CreateProcess, ale to na cmd wtedy by działało. |
|
jankowalski25 |
» 2018-07-29 10:34:52 Jest kilka sposobów: można wywołać funkcję FormatPartition, można wyświetlić użytkownikowi okno z ustawieniami przez SHFormatDrive, a jeśli chcesz bezpośrednio zapisywać surowe bajty, to można otworzyć cały dysk jako zwykły plik, chociażby przez WriteFile lub narzędzia z #include <filesystem> (ten nagłówek wymaga C++17). |
|
Gowers Temat założony przez niniejszego użytkownika |
» 2018-07-29 18:18:46 Dzięki za informacje. Wywołanie FormatPartition powinno wyglądać mniej więcej tak? QString driveLabel = "Dysk USB"; IVdsAdvancedDisk::FormatPartition( 0, VDS_FST_NTFS,( LPWSTR ) driveLabel.toStdString().data(), 512, true, true, false, NULL );
Wyskakuje mi błąd: IVdsAdvancedDisk::FormatPartition: illegal call of non-static member function Jak sobie z tym mogę poradzić? Bo nie mogłem utworzyć instancji klasy, więc szczerze mówiąc nie wiem. Jeszcze mam pytanie o argumenty tej metody, pierwszy argument ULONGLONG ullOffset powinienem przyjąć 0 czy jaką wartość? Oraz ostatni argument IVdsAsync ** ppAsync ? |
|
jankowalski25 |
» 2018-07-30 18:43:16 Bo nie mogłem utworzyć instancji klasy, więc szczerze mówiąc nie wiem. |
MSDN twierdzi, że to jest interfejs, czyli pewnie w C++ będzie to jakaś klasa abstrakcyjna lub coś podobnego (a to oznacza, że należy zwrócić uwagę na hierarchię klas, pewnie jest tam użyte jakieś dziedziczenie). Zarządzanie dyskami masz opisane w Disk Object. Ogólnie rzecz biorąc sprowadza się to do tego, że najpierw musisz znaleźć dysk, który chcesz sformatować ( QueryDisks) lub utworzyć nowy ( AddDisk). Jeśli tworzysz nowy, to dobrze byłoby również wiedzieć, czy masz cały dysk w formacie MBR czy GPT (jeśli MBR, to nie utworzysz więcej niż czterech partycji, natomiast w przypadku GPT mogą być problemy ze starszymi urządzeniami). powinienem przyjąć 0 czy jaką wartość? | https://msdn.microsoft.com/en-us/library/cc249358.aspxThe byte offset of the partition, from the beginning of the disk. This offset MUST be the offset of a start of a partition. |
Czyli podajesz adres partycji względem początku dysku. Podawana tutaj wartość raczej będzie większa od zera, bo na początku masz przecież tablicę partycji MBR/GPT (stanowiącą opis wszystkich partycji na dysku). Tam masz podać wskaźnik, za pomocą którego będziesz mógł kontrolować przebieg formatowania (anulować, przerwać, sprawdzić, czy się udało, i tak dalej). Słówko async znajduje się tutaj nie bez powodu. Metoda zakończy się natychmiast, ale formatowanie dysku może chwilę potrwać (więc należy czekać, aż się poprawnie zakończy!). |
|
Gowers Temat założony przez niniejszego użytkownika |
» 2018-07-30 21:45:15 Dzięki wielkie za pomoc, poczytam i spróbuję sobie poradzić. Dużo mi pomogły te informacje :) |
|
« 1 » |