Delen via


VDS-objectmodel

[Vanaf Windows 8 en Windows Server 2012 wordt de Virtual Disk Service COM-interface vervangen door de Windows Storage Management API.]

VDS biedt indirecte toegang tot op host gebaseerde opslagapparaten, zoals schijven en CD-ROM-apparaten, en schijfmatrices die worden beheerd door hardware RAID-controllers. Hoewel sommige opslagentiteiten fysieke apparaten modelleren, modelleren andere virtuele constructies: volumes, partities enzovoort. De objecten die in dit onderwerp worden beschreven, vertegenwoordigen zowel de fysieke als virtuele entiteiten van VDS.

Toepassingen roepen de methoden aan die door deze objecten worden weergegeven en VDS roept de juiste provider aan om de aangevraagde opslagbewerkingen uit te voeren. Een toepassing roept nooit rechtstreeks een providerprogramma aan.

Classificatie van objecten

Zoals in de volgende afbeelding wordt weergegeven, implementeren softwareproviderprogramma's objecten die op host gebaseerde entiteiten modelleren; hardwareproviderprogramma's implementeren objecten die interne en externe HARDWARE RAID-apparaten modelleren; de resterende algemene objecten zijn provideronafhankelijk of worden geïmplementeerd door VDS. Een spindle, dat geen VDS-object is, is een term voor algemene opslagmedia die bestaat uit schijf- of stationslengten.

Diagram met een classificatie van objecten, gedefinieerd als 'Algemene objecten', 'Softwareproviderobjecten' en 'Hardwareproviderobjecten'.

Voor meer informatie over het gedrag van elk object selecteert u een van de volgende onderwerpen:

Object maken

De configuratie- en querybewerkingen die zijn gekoppeld aan het maken van objecten, kunnen veel tijd in beslag nemen; als zodanig roept VDS asynchroon alle methoden aan. De detectieprovider retourneert alle voltooiings-, fout- of statuswijzigingsevenementen. Softwareproviders registreren ook alle fouten en belangrijke statuswijzigingen.

Objectverwijdering

Verschillende VDS-methoden verwijderen of transformeren VDS-objecten. Een aanroeper kan een verwijzing bevatten via een interfaceaanwijzer naar een verwijderd object nadat de methode is geretourneerd. Wanneer de aanroeper de interface vrijgeeft, verwijdert VDS het object.

Wat betreft het verwijderen van objecten, moeten bellers zich onthouden van het aanroepen van iets behalve de IUnknown::Release methode op deze interfaces. De provider moet robuust genoeg zijn om te kunnen omgaan met foutieve bellers; als een aanroeper een methode voor een verwijderd object aanroept, moet de provider VDS_E_OBJECT_DELETEDretourneren.

Service-initialisatie

VDS levert een klasse-id (Clsid) voor de servicelader en de serviceobjecten, maar alleen de servicelader Clsid is openbaar. Service-initialisatie vindt plaats wanneer de providers, een aanroepende toepassing en de service de volgende taken uitvoeren:

  • Elke nieuwe provider roept de methode IVdsAdmin::RegisterProvider aan tijdens de installatie om te registreren bij VDS. De aanroep maakt een registersleutel onder de SYSTEM Hive, geïdentificeerd door de object-GUID van de provider. Deze sleutel bevat de Clsid van het providerobject, de naam, versie en de versie-GUID van de provider.

    Notitie

    GuiD's van providerobjecten zijn permanent; GUID's voor software- en hardwareobjecten zijn niet.

     

  • Een toepassing roept de CoCreateInstance-functie aan, waarbij de servicelader Clsid als argument wordt doorgegeven. Met een aanwijzer naar het servicelaadprogrammaobject kan de toepassing VDS lokaal of extern starten door de gewenste computernaam als parameter door te geven aan de methode IVdsServiceLoader::LoadService.

  • Wanneer de eerste toepassing aan de service wordt gekoppeld, roept VDS eerst CoCreateInstance aan op elke Clsid die wordt gevonden onder de registersleutel en roept vervolgens de methode IVdsProviderPrivate::OnLoad op elke provider aan om de programma's te initialiseren.

over VDS-

IVdsAdmin::RegisterProvider

IVdsServiceLoader::LoadService

IVdsProviderPrivate::OnLoad