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:
- Szolgáltatásbetöltő és szolgáltatásobjektumok: Indítási és szolgáltatásobjektumok.
- Enumerálás és aszinkron objektumok: Segédobjektumok.
- Szolgáltatóobjektum: Provider Object.
- Pack, disk, volume, and volume plex objects, see Software Provider Objects.
- Alrendszer, vezérlő, meghajtó, LUN és LUN plexi objektumok: Hardverszolgáltató objektumai.
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.
Kapcsolódó témakörök