Użycie IVdsAdvancedDisk::FormatPartition – co podać w pierwszym i ostatnim argumencie?

0

Witam, mam problem z wykorzystaniem metody IVdsAdvancedDisk::FormatPartition.

Jaką wartość powinienem podstawić pod pierwszy argument ULONGLONG ullOffset? Oraz jaką pod ostatni IVdsAsync **ppAsync? Czy to powinno być 0 i NULL? Chcę stworzyć bootowalnego pendrive'a, aby móc na niego przerzucić plik iso. Próbowałem tej metody użyć w ten sposób:

QString driveLabel="Dysk USB";
IVdsAdvancedDisk::FormatPartition(0,VDS_FST_NTFS,(LPWSTR)driveLabel.toStdString().data(),512,true,true,false,NULL);

Przy takim użyciu wyskakuje mi błąd:

IVdsAdvancedDisk::FormatPartition: illegal call of non-static member function

Jest to abstrakcyjna klasa, więc nie mogę utworzyć jej instacji, to pierwsze co mi przyszło do głowy.

https://docs.microsoft.com/pl-pl/windows/desktop/api/vds/nf-vds-ivdsadvanceddisk-formatpartition

0

ppAsync

The address of an IVdsAsync interface pointer, which VDS initializes on return. Callers must release the interface. Use this pointer to cancel, wait for, or query the status of the operation.

Chyba wszystko jest jasne.
Masz tam podać wskaźnik na wskaźnik do interface IVdsAsync. To pozwoli ci na anulowania zadania, psrawdzenie jego statusu, albo na poczekanie aż się zakończy.

std::unique_ptr<IVdsAdvancedDisk> advanceDiskOp = <jakies wywołanie API Vds>;
QString driveLabel="Dysk USB";
IVdsAsync *asyncMethodsTmp = nullptr;
advanceDiskOp->FormatPartition(0, VDS_FST_NTFS, static_cast<LPWSTR>(driveLabel.toStdWString().data()), 512, true, true, false, &asyncMethodsTmp );
std::unique_ptr<IVdsAsync> asyncMethods(asyncMethodsTmp);

... ... ...

asyncMethods->Cancel();

Na dodatek masz bug-a, zamiast toStdWString używasz toStdString!!!

0

Znalazłem coś takiego, powinno wystarczyć by rozkminić co i jak.

0

Też to znalazłem, ale za wiele mi nie pomogło. Odpuszczę sobie to najwyżej, bo kompletnie tego nie rozumiem. Dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1