Программирование API службы виртуальных дисков в C# с помощью COM Interop

Я хотел бы написать небольшую утилиту / библиотеку классов на C#, которая может перечислять первичные разделы на диске, связанном с томом C в Windows 7. Я хотел бы изменить флаг active для любого первичного раздела на этом диске. Я хотел бы "потреблять" эту библиотеку из управляемого кода (C#). Насколько я понимаю, мне нужно будет использовать службу виртуальных дисков, описанную в http://msdn.microsoft.com/en-us/library/bb986750(v=VS.85).aspx.

Кажется, что-то вроде "основной сборки взаимодействия" для этого API для Windows 2008: Windows.Storage.Vds.dll (см. http://blogs.msdn.com/taylorb/archive/2008/09/19/using-the-virtual-disk-service-vds-from-powershell-to-mount-and-use-vhd-s.aspx). Я не могу найти это для Windows 7. Он существует? Если так, как я могу получить это? Я не могу найти его, так что, я думаю, он не доступен для всех.

Следующим шагом будет создание этого кода с использованием tlbimp, но VDS не экспортирует библиотеку типов. Это правда? Я не могу найти это.

Это оставляет выполнение COM-вещей "вручную" либо непосредственно в C++, в соответствии с примерами выше. Эти примеры работают, но практически непостижимы. Аналогично, я мог бы создать клиентскую сборку вручную из мидл, используя методы, описанные в http://msdn.microsoft.com/en-us/library/aa645736(VS.71).aspx. Но мне не хватает COM/COM Interop/VDS, чтобы сделать это разумным способом.

Меня поражает, что API-интерфейс VDS dcom-клиента практически непригоден для использования, и поэтому все заканчивают сценарием diskpart.exe. Конечно, я ошибаюсь по этому поводу.

1 ответ

Посмотрите эту запись SO для получения дополнительной информации.

Другие вопросы по тегам