Disk via WinAPI partitionieren und formatieren



  • Hat einer schon mal ein Proggi geschrieben, das via WinAPI eine Festplatte einrichten kann?
    Ich steh davor, so etwas aus einem (Windows GUI-)Setup-Programm heraus machen zu müssen.

    Das via CreateProzess() und cmd.exe / diskpart.exe und format.com zu erledigen geht zwar, ist aber im Ergebnis nicht schön. (kaum Kontrolle darüber, was diskpart und format wirklich machen und die DOS-Boxen ... na ja 😞 ... und die Boxen einfach verstecken ist irgendwie auch nicht DIE Lösung. )

    WMI braucht zu viele Supportmodule und ist am Ende auch zu langsam.

    So bin ich dann bei DeviceIOControl() hängen geblieben.
    Nur, das ist reichlich mühsam. Hat das schon mal einer gemacht und kann mir hilfreich den "steinigen Weg" etwas abkürzen?

    Oder hat einer noch eine Idee, wie das gut und schnell erledigt werden kann?

    .net, MFC usw. scheiden aus. Das muss direkt auf die WinAPI aufsetzen.
    Zielsystem ist WinXP.

    Danke schon mal
    Ulli



  • IOCTL_DISK_CREATE_DISK / CREATE_DISK

    IOCTL_DISK_SET_DRIVE_LAYOUT_EX / DRIVE_LAYOUT_INFORMATION_EX / PARTITION_STYLE / DRIVE_LAYOUT_INFORMATION_MBR / PARTITION_INFORMATION_EX



  • ja, danke Jochen, so weit war ich auch schon 🙄

    Ich hab aber mittlerweile selber die Lösung gefunden: VDS

    Gemeint sind damit nicht etwa die Leute von den Alarmanlagen oder
    Verband Deutscher Sprache oder etwa
    Verband Deutscher Sternenfreunde ... 😉

    nein, sondern Virtual Disk Service

    Das ist ein API innerhalb der WinAPI (ähnlich wie SetupAPI). Hatte ich die ganze Zeit schon vor der Nase. Ich war nur dem Namen und meiner Interpretation davon auf den Leim gegangen und hatte gedacht, dass das Zeugs für 'echte' virtuelle Disks da ist.
    Aber: weit gefehlt. Eine von Google ausgegrabene uralt Doku von Sysinternals, die bei SourceForg irgendwo vergessen worden war (kein einziger Link in dem Dokument funktionierte mehr), hat mich schliesslich auf den richtigen Weg gebracht:

    Unter VDS (wer wohl wie auf DEN Namen gekommen ist?) hat MicroSaft Funktionen zum Partitionieren, Formatieren usw. innerhalb der WinAPI als Schicht oberhalb von DeviceIOControl() gebündelt und stellt dort Aufrufe zur Verfügung, die einem weitgehend das Rumrechnen mit Zylindern, Köpfen und Sektoren, Sektorengrößen usw. abnehmen.

    Nebenbei: diskpart.exe ist auch "nur" ein CommandLineInterface zu dieser API und auch die Funktionen der GUI z.B. Explorer/Kontextmenü bei Datenträgern/Formatieren nutzen dem Vernehmen nach diese Funktionen.

    Ich werd jetzt mal gucken, wie weit ich damit komme. Sieht aber ganz hoffnungsvoll aus.

    /Ulli



  • Ja, VDS gibt es aber erst seit Vista / W2k3... und Dein Zielsystem war doch XP, oder?
    http://msdn.microsoft.com/en-us/library/bb986750


Anmelden zum Antworten