Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Klasa Win32_Volume

Ostatnio zmodyfikowano 2018-07-30 21:45
Autor Wiadomość
Gowers
Temat założony przez niniejszego użytkownika
Klasa Win32_Volume
» 2018-07-28 19:31:04
Witam, czy klasa Win32_Volume jest dostępna w windowsie 7, 8, 10? Ona jest dostępna do użycia w c++ czy wykorzystuje się ją w skryptach Powershella? Googlowałem na ten temat i już się gubię w odpowiedziach.

https://msdn.microsoft.com​/en-us/library​/aa394515(v=vs.85).aspx
P-171973
pekfos
» 2018-07-28 21:28:51
Minimum supported client

None supported
P-171975
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.
P-171982
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).
P-171986
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?
C/C++
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
?
P-171990
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.aspx
The 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).

Oraz ostatni argument
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!).
P-171996
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 :)
P-171997
« 1 »
  Strona 1 z 1