Dela via


VDS-objektmodell

[Från och med Windows 8 och Windows Server 2012 ersätts com-gränssnittet virtual disk service COM med Windows Storage Management API.]

VDS ger indirekt åtkomst till värdbaserade lagringsenheter, till exempel diskar och CD-ROM enheter, samt till diskmatriser som hanteras av RAID-maskinvarustyrenheter. Medan vissa lagringsentiteter modellerar fysiska enheter, modellerar andra virtuella konstruktioner: volymer, partitioner och så vidare. Objekten som beskrivs i det här avsnittet representerar både fysiska och virtuella entiteter för VDS.

Program anropar de metoder som exponeras av dessa objekt och VDS anropar lämplig provider för att utföra de begärda lagringsåtgärderna. Ett program anropar aldrig ett providerprogram direkt.

Klassificering av objekt

Som följande bild visar implementerar programleverantörsprogram objekt som modellerar värdbaserade entiteter. maskinvaruleverantörsprogram implementerar objekt som modellerar interna och externa RAID-maskinvaruenheter. de återstående vanliga objekten är antingen provideroberoende eller implementeras av VDS. En spindel, som inte är ett VDS-objekt, är en term för allmänna lagringsmedier som består av disk- eller enhetsutrymmen.

diagram som visar en klassificering av objekt, definierat som

Om du vill veta mer om beteendet för varje objekt väljer du bland följande ämnen:

Skapa objekt

Konfigurations- och frågeåtgärder som är associerade med att skapa objekt kan ta lång tid att slutföra. VDS anropar därför alla metoder asynkront. Identifieringsprovidern returnerar alla slutförande-, fel- eller tillståndsändringshändelser. Programvaruleverantörer loggar också alla fel och betydande tillståndsändringar.

Borttagning av objekt

Flera VDS-metoder tar bort eller transformerar VDS-objekt. En anropare kan som en gränssnittspekare lagra en referens till ett borttaget objekt när metoden har returnerats. När anroparen släpper gränssnittet tar VDS bort objektet.

När det gäller borttagning av objekt bör anropare avstå från att anropa något annat än metoden IUnknown::Release i dessa gränssnitt. Leverantören måste vara tillräckligt robust för att hantera felaktiga uppringare. Om en anropare anropar en metod för ett borttaget objekt ska providern returnera VDS_E_OBJECT_DELETED.

Tjänstinitiering

VDS tillhandahåller en klassidentifierare (Clsid) för tjänstinläsaren och tjänstobjekten, men endast tjänstinläsaren Clsid är offentlig. Tjänstinitiering sker när leverantörerna, ett anropande program och tjänsten utför följande uppgifter:

  • Varje ny provider anropar metoden IVdsAdmin::RegisterProvider under installationen för att registrera sig hos VDS. Anropet skapar en registernyckel under systemdatafilen som identifieras av providerns objekt-GUID. Under den här nyckeln finns Clsid för providerobjektet, namnet, versionen och versionens GUID för providern.

    Not

    GUID:er för providerobjekt är beständiga. program- och maskinvaruobjekt-GUID:er är inte det.

     

  • Ett program anropar funktionen CoCreateInstance och skickar tjänstinläsaren Clsid som ett argument. Med en pekare till tjänstinläsningsobjektet kan programmet starta VDS antingen lokalt eller via fjärranslutning genom att skicka önskat datornamn som en parameter till metoden IVdsServiceLoader::LoadService.

  • När det första programmet ansluter till tjänsten anropar VDS först CoCreateInstance- på varje Clsid som finns under registernyckeln och anropar sedan IVdsProviderPrivate::OnLoad-metoden på varje provider för att initiera programmen.

om VDS

IVdsAdmin::RegisterProvider

IVdsServiceLoader::LoadService

IVdsProviderPrivate::OnLoad