VDS-Objektmodell

[Ab Windows 8 und Windows Server 2012 wird die COM-Schnittstelle des virtuellen Festplatten Dienstanbieter durch die Windows-Speicherverwaltungs-APIersetzt.]

VDS bietet indirekten Zugriff auf Host basierte Speichergeräte, z. b. Datenträger und CD-ROM-Geräte, sowie auf Datenträger Arrays, die von Hardware-RAID-Controllern verwaltet werden. Während einige Speicher Entitäten physische Geräte modellieren, sind andere Modell-VM-Konstrukte: Volumes, Partitionen usw. Die in diesem Thema beschriebenen Objekte stellen die physischen und 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 ein Anbieter Programm niemals direkt auf.

Klassifizierung von Objekten

Wie die folgende Abbildung zeigt, implementieren Softwareanbieter Programme Objekte, die Host basierte Entitäten modellieren. Hardware Anbieter Programme implementieren Objekte, die interne und externe Hardware-RAID-Geräte modellieren. die verbleibenden allgemeinen Objekte sind entweder Anbieter unabhä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 Laufwerks Blöcken bestehen.

Diagramm, das eine Klassifizierung von Objekten anzeigt, die als "Common Objects", "Software Provider Objects" und "Hardware Provider Objects" definiert sind.

Weitere Informationen zum Verhalten der einzelnen Objekte finden Sie unter den folgenden Themen:

Objekterstellung

Die Konfigurations-und Abfrage Vorgänge, die mit der Objekt Erstellung verknüpft sind, können viel Zeit in Anspruch nehmen. Daher ruft VDS alle Methoden asynchron auf. Der Ermittlungs Anbieter gibt alle Abschluss-, Fehler-oder Status Änderungs Ereignisse zurück. Software Anbieter protokollieren außerdem alle Fehler und erheblichen Zustandsänderungen.

Löschen von Objekten

Mit mehreren VDS-Methoden werden VDS-Objekte gelöscht oder transformiert. Ein Aufrufer kann einen Verweis über einen Schnittstellen Zeiger auf ein gelöschtes Objekt speichern, nachdem die Methode zurückgegeben wurde. Wenn der Aufrufer die-Schnittstelle freigibt, löscht VDS das-Objekt.

Im Hinblick auf das Löschen von Objekten sollten Aufrufer keine Ausnahme von der IUnknown:: Release -Methode für diese Schnittstellen aufrufen. Der Anbieter muss robust genug sein, um mit fehlgeleiteten-Aufrufern zu umgehen. Wenn ein Aufrufer eine Methode für ein gelöschtes Objekt aufruft, sollte der Anbieter das VDS _ E- _ Objekt _ gelöscht zurückgeben.

Dienstinitialisierung

VDS stellt einen Klassen Bezeichner (CLSID) für das Dienst Lade Programm und die Dienst Objekte bereit, aber nur die Dienst Lade Programm-CLSID ist öffentlich. Die Dienst Initialisierung tritt auf, wenn die Anbieter, eine aufrufenden Anwendung und der Dienst die folgenden Aufgaben ausführen:

  • Jeder neue Anbieter ruft während der Installation die ivdsadmin:: RegisterProvider -Methode auf, um sich bei VDS zu registrieren. Der-Befehl erstellt einen Registrierungsschlüssel unter der System Struktur, der durch die Objekt-GUID des Anbieters gekennzeichnet ist. Unter diesem Schlüssel ist die CLSID des Anbieter Objekts, der Name, die Version und die Versions-GUID des Anbieters enthalten.

    Hinweis

    Anbieter Objekt-GUIDs sind persistent. die Software-und Hardware Objekt-GUIDs sind nicht.

  • Eine Anwendung ruft die cokreatzustance -Funktion auf und übergibt die Dienst Ladefunktion CLSID als Argument. Mit einem Zeiger auf das Service Loader-Objekt kann die Anwendung VDS entweder lokal oder Remote starten, indem der gewünschte Computername als Parameter an die ivdsserviceloader:: loadservice -Methode übergeben wird.

  • Wenn die anfängliche Anwendung an den Dienst angefügt wird, ruft VDS zuerst cokreateinstance für jede CLSID auf, die unter dem Registrierungsschlüssel gefunden wurde, und ruft dann die ivdsproviderprivate:: OnLoad -Methode für jeden Anbieter auf, um die Programme zu initialisieren.

Informationen zu VDS

Ivdsadmin:: RegisterProvider

Ivdsserviceloader:: loadservice

Ivdsproviderprivate:: OnLoad