VDS-Objektmodell

[Ab Windows 8 und Windows Server 2012 wird die COM-Schnittstelle des Virtuellen Datenträgerdiensts von der Windows Storage Management-API abgelöst.]

VDS bietet indirekten Zugriff auf hostbasierte Speichergeräte wie Datenträger und CD-ROM-Geräte sowie auf Datenträgerarrays, die von Hardware-RAID-Controllern verwaltet werden. Während einige Speicherentitäten physische Geräte modellieren, modellieren andere virtuelle Konstrukte: Volumes, Partitionen usw. Die in diesem Thema beschriebenen Objekte stellen sowohl die physischen als auch die virtuellen Entitäten von VDS dar.

Anwendungen rufen die Methoden auf, die von diesen Objekten verfügbar gemacht werden, und VDS ruft den entsprechenden Anbieter auf, um die angeforderten Speichervorgänge auszuführen. Eine Anwendung ruft niemals direkt ein Anbieterprogramm auf.

Klassifizierung von Objekten

Wie die folgende Abbildung zeigt, implementieren Softwareanbieterprogramme Objekte, die hostbasierte Entitäten modellieren. Hardwareanbieterprogramme implementieren Objekte, die interne und externe Hardware-RAID-Geräte modellieren. die übrigen gängigen Objekte sind entweder anbieterunabhängig oder werden von VDS implementiert. Eine Spindel, bei der es sich nicht um ein VDS-Objekt handelt, ist ein Begriff für generische Speichermedien, die aus Datenträger- oder Laufwerkerweiterungen besteht.

Diagramm, das eine Klassifizierung von Objekten zeigt, die als

Um mehr über das Verhalten der einzelnen Objekte zu erfahren, wählen Sie aus den folgenden Themen aus:

Objekterstellung

Die Konfigurations- und Abfragevorgänge, die der Objekterstellung zugeordnet sind, können viel Zeit in Anspruch nehmen. daher ruft VDS alle Methoden asynchron auf. Der Ermittlungsanbieter gibt alle Abschluss-, Fehler- oder Zustandsänderungsereignisse zurück. Softwareanbieter protokollieren auch alle Fehler und signifikanten Zustandsänderungen.

Löschen von Objekten

Mehrere VDS-Methoden löschen oder transformieren VDS-Objekte. Ein Aufrufer kann einen Verweis über einen Schnittstellenzeiger auf ein gelöschtes Objekt enthalten, nachdem die Methode zurückgegeben wurde. Wenn der Aufrufer die Schnittstelle freigibt, löscht VDS das -Objekt.

In Bezug auf das Löschen von Objekten sollten Aufrufer auf diese Schnittstellen verzichten, mit Ausnahme der IUnknown::Release-Methode . Der Anbieter muss robust genug sein, um mit fehlerhaften Anrufern umzugehen; Wenn ein Aufrufer eine Methode für ein gelöschtes Objekt aufruft, sollte der Anbieter VDS_E_OBJECT_DELETED zurückgeben.

Dienstinitialisierung

VDS stellt einen Klassenbezeichner (Clsid) für den Dienstladeprogramm und die Dienstobjekte bereit, aber nur der Dienstladeprogramm Clsid ist öffentlich. Die Dienstinitialisierung erfolgt, wenn die Anbieter, eine aufrufende Anwendung und der Dienst die folgenden Aufgaben ausführen:

  • Jeder neue Anbieter ruft die IVdsAdmin::RegisterProvider-Methode während der Installation auf, um sich bei VDS zu registrieren. Der Aufruf erstellt einen Registrierungsschlüssel unter der SYSTEM-Struktur, der durch die Objekt-GUID des Anbieters identifiziert wird. Unter diesem Schlüssel ist die Clsid des Anbieterobjekts, der Name, die Version und die Versions-GUID des Anbieters enthalten.

    Hinweis

    Anbieterobjekt-GUIDs sind persistent; Software- und Hardwareobjekt-GUIDs sind nicht.

     

  • Eine Anwendung ruft die CoCreateInstance-Funktion auf und übergibt den Dienstladeprogramm Clsid als Argument. Mit einem Zeiger auf das Dienstladeprogrammobjekt kann die Anwendung VDS entweder lokal oder remote starten, indem sie den gewünschten Computernamen als Parameter an die IVdsServiceLoader::LoadService-Methode übergibt.

  • Wenn die erste Anwendung an den Dienst angefügt wird, ruft VDS zunächst CoCreateInstance für jede Clsid auf, die sich unter dem Registrierungsschlüssel befindet, und ruft dann die IVdsProviderPrivate::OnLoad-Methode für jeden Anbieter auf, um die Programme zu initialisieren.

Über VDS

IVdsAdmin::RegisterProvider

IVdsServiceLoader::LoadService

IVdsProviderPrivate::OnLoad