The provider object models the program that is responsible for storage management. This object provides access to both software provider and hardware provider functionality. Provider programs execute operations on software devices (volumes and disks) and hardware devices (storage subsystems and arrays of drives behind RAID controllers).
VDS registers a provider object as a COM object in the Windows Registry and uses contained interfaces (not aggregation) to implement the remaining objects, wrapping all the interfaces and methods and conditionally adding functionality. The objects and interfaces that are wrapped by the provider object differ depending on the provider type.
You cannot instantiate a provider object directly from your application. Instead, you must start up VDS, obtain a pointer to a service object, and use the service object to query for the providers known to the host. For instructions on loading VDS, see Startup and Service Objects.
Use the IVdsService::QueryProviders method to enumerate the registered provider programs on a host. The first parameter of the method enables you to specify software providers only, hardware providers only, or both. With a provider object, you can perform operations on the objects managed by that provider. As the following illustration shows, you can use the methods that are exposed by the IVdsSwProvider interface to create and query pack objects that are associated with software providers. Likewise, you can use the methods on the IVdsHwProvider interface to interact with the subsystem objects that are associated with hardware providers.
Object properties include a persistent GUID object identifier that represents a specific provider and a second GUID that represents the provider version. Note that other object identifiers in the VDS object model are non-persistent. The remaining properties for this object include a provider name, additional version information, the provider type software or hardware), various flags, and a rebuild-priority setting that applies only to software providers.
The following table lists related interfaces, enumerations, and structures
|Interfaces that are always exposed by this object||IVdsProvider|
|Interfaces that are always exposed by software providers only||IVdsSwProvider|
|Interfaces that are always exposed by hardware providers only||IVdsHwProvider|
|Interfaces that may be exposed by this object||IVdsProviderSupport|
|Interfaces that may be exposed by hardware providers only||IVdsHwProviderType, IVdsHwProviderStoragePoolsWindows Server 2008, Windows Vista, and Windows Server 2003: The IVdsHwProviderStoragePools interface is not supported.
|Interfaces that are always implemented but not exposed to applications||IVdsProviderPrivate|
|Interfaces that are always implemented by hardware providers but not exposed to applications||IVdsHwProviderPrivate|
|Interfaces that may be implemented by hardware providers but not exposed to applications||IVdsHwProviderPrivateMpio|
|Associated enumerations||VDS_PROVIDER_FLAG, VDS_QUERY_PROVIDER_FLAG, and VDS_PROVIDER_TYPE.|