Adding Storage Management abilities to your Windows application using VDS (Virtual Disk Service)
If you’re writing a Windows application that needs to do storage management, you should look into the VDS (Virtual Disk Services) API.
VDS storage management includes abilities like enumerating all HBAs on a system, creating a LUN, setting a disk online, formatting a volume or adding a drive letter to it.
For those not familiar with VDS, start by looking at an overview I posted at http://blogs.technet.com/josebda/archive/2007/10/25/the-basics-of-the-virtual-disk-services-vds.aspx.
To understand the VDS architecture from a developer’s perspective and get an overview of the VDS Interfaces, check this VDS reference from TechNet at http://technet.microsoft.com/en-us/library/cc739923.aspx.
Once you need to start looking at the details on each interface, the best reference is the "Virtual Disk Service Programming Guide" documentation available on MSDN.
This includes a complete reference of all constants, data types, enumerations, interfaces, structures and error codes used by VDS.
The main page is http://msdn2.microsoft.com/en-us/library/aa383063.aspx.
There you will also find some code samples:
- Loading VDS - http://msdn.microsoft.com/en-us/library/aa383037(VS.85).aspx
- Working with Enumeration Objects - http://msdn.microsoft.com/en-us/library/aa383988(VS.85).aspx
- Managing Asynchronous Operations - http://msdn.microsoft.com/en-us/library/aa383048(VS.85).aspx
There are also a few pages with instructions on how to use the VDS model, although they do not really include code samples:
- Reenumerating and Refreshing providers and subsystems - http://msdn.microsoft.com/en-us/library/aa383069(VS.85).aspx
- Adding Foreign Disks to a Pack - http://msdn.microsoft.com/en-us/library/aa381618(VS.85).aspx
- Adding a Drive Letter to a LUN - http://msdn.microsoft.com/en-us/library/aa381614(VS.85).aspx
Note that these are Win32 APIs. If you writing managed code, you will need to create a wrapper using p/Invoke.
There’s a good description on how to do that at http://msdn.microsoft.com/en-us/library/aa719104.aspx.
Keep in mind that you can use the VDS API to query and configure both local disks or RAID subsystems like an external disk array.
However, for VDS to interact with those RAID subsystems, you will need additional software provided by the hardware vendor called a VDS Hardware Provider.
All major storage vendors will typically offer a provider and the latest Windows Logo Kit (WLK) includes a VDS Hardware Provider test.
To get a list of Microsoft Storage Partners currently using VDS technology, follow these steps:
- Visit http://www.microsoftstoragepartners.com/FindaPartner/Default.aspx
- Select “Virtual Disk Services (VDS)” from the “Windows Supported Storage Technologies” drop down
- Click on the “Search Partners” button