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