Ich musste Disk-Initialisierung, Partitionierung und Formatierung für eines der Produkte meines Unternehmens implementieren. Ich kann den Code nicht teilen, aber ich kann Sie in die richtige Richtung weisen. Die von Ihnen gewünschte API heißt VDS - Virtual Disk Service. Es ist eine COM-API, aber ich habe es erfolgreich aus C++ (mit ATL) und C# (COM-Interop) verwendet.
Leider fehlt die Dokumentation ziemlich; Sie müssen nur in das Objektmodell eintauchen, etwas Code schreiben, und allmählich bekommen Sie ein Gefühl dafür.
Windows Server 2008 wird mit einem nicht dokumentierten, aber durchaus brauchbaren C# -Wrapper für VDS ausgeliefert. Suchen Sie nach einer DLL namens Microsoft.Storage.VDS.dll. Sie können Reflector verwenden, um die verschiedenen Klassen und Methoden zu ermitteln. Ich habe davon erfahren, als ich this blog post gelesen habe, in dem der Autor versucht, eine Diskette von PowerShell unter Verwendung der oben erwähnten DLL zu initialisieren.
VDS enthält APIs, die von SAN-Anbietern implementiert werden können, um eine LUN bereitzustellen und andere SAN-Dinge auszuführen; vorschlagen, dass Sie diese vermeiden und sich auf den grundlegenden Softwareanbieter konzentrieren, der grundlegende (im Gegensatz zu dynamischen) Partitionen auf einer MBR- oder GPT-Festplatte erstellt. Beachten Sie, dass der Microsoft-Wrapper, den ich erwähnt habe, ein wenig Licht auf GPT-Unterstützung ist; Ich musste es ein wenig ändern, um GPT-Festplatten zum Laufen zu bringen.
VDS ist eine komplexe und knifflige API, aber wenn Sie nur einen Datenträger initialisieren, eine Partition erstellen, formatieren und zu einem Laufwerksbuchstaben mounten möchten, ist das meiste von dem, was Sie brauchen, da und ziemlich einfach machen. Viel Glück.
FYI, ich habe schließlich auf diesem Ansatz auf. Ich habe schließlich das System mit CIFS-Dateifreigaben anstelle von Rohdatenträgern implementiert. Dies war ziemlich einfach mit einem NetApp-SAN zu scripten. Das größte Problem bei der Verwendung von Volumes mit Windows besteht darin, dass Windows ein Duplikat des Volumes gesehen hat, bevor es es automatisch dort anbringt, wo es zuvor war, auch wenn das nicht das ist, was ich wollte. –