Мне пришлось реализовать инициализацию, разбиение и форматирование диска для одного из продуктов моей компании. Я не могу поделиться этим кодом, но могу указать вам в правильном направлении.
API, который вы хотите, называется VDS - Virtual Disk Service. Это COM API, но я успешно использовал его с C++ (с ATL) и C# (COM-взаимодействие).
К сожалению, документации недостаточно; вам просто нужно погрузиться в объектную модель, написать код, и постепенно вы почувствуете это.
Windows Server 2008 поставляется с незарегистрированной, но вполне пригодной для использования оболочкой C# вокруг VDS. Найдите DLL с именем Microsoft.Storage.Vds.dll. Вы можете использовать Reflector для обнаружения его различных классов и методов. Я узнал об этом, когда прочитал this blog post, в котором автор пытается инициализировать диск из PowerShell, используя вышеупомянутую DLL.
VDS включает в себя API, которые могут быть реализованы поставщиками SAN для предоставления LUN и других функций SAN; предлагайте вам избежать этих проблем и сосредоточиться на базовом поставщике программного обеспечения, который будет создавать базовые (в отличие от динамических) разделы на диске MBR или GPT. Обратите внимание, что обертка Microsoft, о которой я упоминал, немного освещает поддержку GPT; Мне пришлось немного изменить его, чтобы заставить GPT-диски работать.
VDS - сложный и тонкий API, но если вы просто хотите инициализировать диск, создать раздел, отформатировать его и установить на букву диска, большая часть того, что вам нужно, и довольно легко делать. Удачи.
FYI, я в конце концов отказался от этого подхода. Я закончил внедрение системы с использованием файлов файлов CIFS вместо необработанных томов. Это было довольно легко с помощью скрипта netapp SAN. Самая большая проблема с использованием томов с окнами заключается в том, что если бы окна видели дубликат тома, прежде чем он автоматически установил его там, где он был ранее, даже если это не то, что я хотел. –