Megosztás a következőn keresztül:


VDS-objektummodell

[A Windows 8-tól és a Windows Server 2012-től kezdve a Virtual Disk Service COM-felületet a Windows Storage Management APIfelülírja.]

A VDS közvetett hozzáférést biztosít a gazdagépalapú tárolóeszközökhöz, például a lemezekhez és CD-ROM eszközökhöz, valamint a hardveres RAID-vezérlők által felügyelt lemeztömbökhöz. Míg egyes tárolási entitások fizikai eszközöket modelleznek, mások virtuális szerkezeteket modelleznek: köteteket, partíciókat stb. Az ebben a témakörben ismertetett objektumok a VDS fizikai és virtuális entitásait is képviselik.

Az alkalmazások meghívják az objektumok által közzétett metódusokat, a VDS pedig a megfelelő szolgáltatót hívja meg a kért tárolási műveletek végrehajtásához. Egy alkalmazás soha nem hív meg közvetlenül szolgáltatói programot.

Objektumok besorolása

Az alábbi ábrán látható, hogy a szoftverszolgáltatói programok olyan objektumokat implementálnak, amelyek gazdagépalapú entitásokat modelleznek; a hardverszolgáltatói programok belső és külső hardveres RAID-eszközöket modellező objektumokat implementálnak; a többi közös objektum szolgáltatófüggetlen, vagy a VDS implementálva van. Az orsó, amely nem VDS-objektum, az általános tároló adathordozók kifejezése, amely lemezből vagy meghajtókból áll.

Az egyes objektumok viselkedéséről az alábbi témakörökből tudhat meg többet:

Objektum létrehozása

Az objektumlétrehozással társított konfigurációs és lekérdezési műveletek végrehajtása jelentős időt vehet igénybe; A VDS így aszinkron módon hívja meg az összes metódust. A felderítő szolgáltató az összes befejezési, hiba- vagy állapotváltozási eseményt visszaadja. A szoftverszolgáltatók emellett naplóznak minden hibát és jelentős állapotváltozást.

Objektum törlése

Számos VDS-metódus törli vagy átalakítja a VDS-objektumokat. A hívó a metódus visszatérése után egy felületmutatón keresztül hivatkozhat egy törölt objektumra. Amikor a hívó felszabadítja a felületet, a VDS törli az objektumot.

Ami az objektum törlését illeti, a hívóknak tartózkodniuk kell a IUnknown::Release metódustól eltekintve ezen felületeken. A szolgáltatónak elég robusztusnak kell lennie ahhoz, hogy a kiszámíthatatlan hívókkal foglalkozzon; ha egy hívó metódust hív meg egy törölt objektumon, a szolgáltatónak vissza kell adnia VDS_E_OBJECT_DELETED.

Szolgáltatás inicializálása

A VDS egy osztályazonosítót (Clsid) biztosít a szolgáltatásbetöltőhöz és a szolgáltatásobjektumokhoz, de csak a Clsid szolgáltatásbetöltő nyilvános. A szolgáltatás inicializálása akkor történik, ha a szolgáltatók, egy hívó alkalmazás és a szolgáltatás a következő feladatokat hajtják végre:

  • Minden új szolgáltató meghívja a IVdsAdmin::RegisterProvider metódust a telepítés során a VDS-ben való regisztrációhoz. A hívás létrehoz egy beállításkulcsot a SYSTEM hive alatt, amelyet a szolgáltató objektum GUID azonosítója azonosít. A kulcs alatt található a szolgáltató objektum clsid azonosítója, a szolgáltató neve, verziója és verzióAZONOSÍTÓja.

    Jegyzet

    A szolgáltatói objektum GUID-jai állandók; A szoftver- és hardverobjektum-grafikus azonosítók nem.

     

  • Egy alkalmazás meghívja a CoCreateInstance függvényt, és argumentumként átadja a Clsid szolgáltatásbetöltőt. A szolgáltatásbetöltő objektumra mutató mutatóval az alkalmazás helyileg vagy távolról is elindíthatja a VDS-t úgy, hogy paraméterként átadja a kívánt számítógépnevet az IVdsServiceLoader::LoadService metódusnak.

  • Amikor a kezdeti alkalmazás csatlakozik a szolgáltatáshoz, a VDS először meghívja CoCreateInstance a beállításkulcs alatt található összes Clsid-azonosítón, majd meghívja az IVdsProviderPrivate::OnLoad metódust az egyes szolgáltatókon a programok inicializálásához.

A VDS-

IVdsAdmin::RegisterProvider

IVdsServiceLoader::LoadService

IVdsProviderPrivate::OnLoad