VDS-Benachrichtigungen

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

Ein Anbieter kann eine Ereignisbenachrichtigung an VDS senden, und VDS kann die Benachrichtigung wiederum an Anwendungen weiterleiten. Das von VDS verwendete Benachrichtigungsmodell ähnelt dem Verbindungspunktmodell, das von COM-Objekten verwendet wird.

VDS generiert Dienstbenachrichtigungen für Ereignisse, z. B. eine Laufwerkbuchstabenzuweisung oder das Eintreffen eines nicht zugeordneten Datenträgers. Sobald VDS einen Datenträger einem Anbieter zuordnet, ist der Anbieter für die Generierung der zugehörigen Benachrichtigungen verantwortlich. Die folgende Abbildung zeigt die Schnittstellen und Methoden, die im VDS-Benachrichtigungsmodell verwendet werden.

Diagramm, das die Schnittstelle und die Methoden (Advise, OnLoad und OnNotify) zwischen Anwendungen, Virtual Disk Service und VD S-Anbietern zeigt.

Um Benachrichtigungen zu empfangen, registriert VDS seine IVdsAdviseSink-Schnittstelle beim Anbieterobjekt, indem die IVdsProviderPrivate::OnLoad-Methode aufgerufen und ein Zeiger auf die Schnittstelle übergeben wird. Wenn ein Benachrichtigungsereignis auftritt, z. B. das Eintreffen eines neuen Volumes oder Laufwerks, übergibt der Anbieter die entsprechende Benachrichtigungsstruktur als IVdsAdviseSink::OnNotify-Methodenparameter an VDS.

Der Prozess ist zwischen einer Anwendung und VDS ähnlich. Insbesondere zum Empfangen von Benachrichtigungen registriert eine Anwendung ihre IVdsAdviseSink-Schnittstelle bei VDS, indem sie die IVdsService::Advise-Methode aufruft und einen Zeiger auf die Schnittstelle übergibt. Wenn VDS eine Benachrichtigung von einem Anbieter empfängt, übergibt er die entsprechende Benachrichtigungsstruktur als IVdsAdviseSink::OnNotify-Methodenparameter an registrierte Anwendungen.

Hinweis

Eine Anwendung, die Advise aufruft, muss schließlich die IVdsService::Unadvise-Methode aufrufen. Im Idealfall sollte unadvise aufgerufen werden, sobald keine Benachrichtigungen mehr empfangen werden müssen.

 

Die folgende Tabelle enthält die vom Anbieter generierten Benachrichtigungen nach Objekttyp.

Object Benachrichtigung Wert Link zur Ereignisbeschreibung
Pack VDS_NF_PACK_ARRIVE 1 VDS_PACK_NOTIFICATION
Pack VDS_NF_PACK_DEPART 2 VDS_PACK_NOTIFICATION
Pack VDS_NF_PACK_MODIFY 3 VDS_PACK_NOTIFICATION
Lautstärke VDS_NF_VOLUME_ARRIVE 4 VDS_VOLUME_NOTIFICATION
Lautstärke VDS_NF_VOLUME_DEPART 5 VDS_VOLUME_NOTIFICATION
Lautstärke VDS_NF_VOLUME_MODIFY 6 VDS_VOLUME_NOTIFICATION
Lautstärke VDS_NF_VOLUME_REBUILDING_PROGRESS 7 VDS_VOLUME_NOTIFICATION
Datenträger VDS_NF_DISK_ARRIVE 8 VDS_DISK_NOTIFICATION
Datenträger VDS_NF_DISK_DEPART 9 VDS_DISK_NOTIFICATION
Datenträger VDS_NF_DISK_MODIFY 10 VDS_DISK_NOTIFICATION
Partition VDS_NF_PARTITION_ARRIVE 11 VDS_PARTITION_NOTIFICATION
Partition VDS_NF_PARTITION_DEPART 12 VDS_PARTITION_NOTIFICATION
Partition VDS_NF_PARTITION_MODIFY 13 VDS_PARTITION_NOTIFICATION
Subsystem VDS_NF_SUB_SYSTEM_ARRIVE 101 VDS_SUB_SYSTEM_NOTIFICATION
Subsystem VDS_NF_SUB_SYSTEM_DEPART 102 VDS_SUB_SYSTEM_NOTIFICATION
Subsystem VDS_NF_SUB_SYSTEM_MODIFY 151 VDS_SUB_SYSTEM_NOTIFICATION
Controller VDS_NF_CONTROLLER_ARRIVE 103 VDS_CONTROLLER_NOTIFICATION
Controller VDS_NF_CONTROLLER_DEPART 104 VDS_CONTROLLER_NOTIFICATION
Controller VDS_NF_CONTROLLER_MODIFY 350 VDS_CONTROLLER_NOTIFICATION
Controller VDS_NF_CONTROLLER_REMOVED 351 VDS_CONTROLLER_NOTIFICATION
Port VDS_NF_PORT_MODIFY 352 VDS_PORT_NOTIFICATION
Port VDS_NF_PORT_REMOVED 353 VDS_PORT_NOTIFICATION
Laufwerk VDS_NF_DRIVE_ARRIVE 105 VDS_DRIVE_NOTIFICATION
Laufwerk VDS_NF_DRIVE_DEPART 106 VDS_DRIVE_NOTIFICATION
Laufwerk VDS_NF_DRIVE_MODIFY 107 VDS_DRIVE_NOTIFICATION
Laufwerk VDS_NF_DRIVE_REMOVED 354 VDS_DRIVE_NOTIFICATION
LUN VDS_NF_LUN_ARRIVE 108 VDS_LUN_NOTIFICATION
LUN VDS_NF_LUN_DEPART 109 VDS_LUN_NOTIFICATION
LUN VDS_NF_LUN_MODIFY 110 VDS_LUN_NOTIFICATION

 

VDS generiert die verbleibenden Benachrichtigungen. In der folgenden Tabelle sind dienstbasierte Benachrichtigungskonstanten nach Kategorie aufgeführt.

Category Benachrichtigung Wert Link zur Ereignisbeschreibung
Datenträger VDS_NF_DISK_ARRIVE 8 VDS_DISK_NOTIFICATION
Datenträger VDS_NF_DISK_DEPART 9 VDS_DISK_NOTIFICATION
Datenträger VDS_NF_DISK_MODIFY 10 VDS_DISK_NOTIFICATION
Laufwerkbuchstabe VDS_NF_DRIVE_LETTER_FREE 201 VDS_DRIVE_LETTER_NOTIFICATION
Laufwerkbuchstabe VDS_NF_DRIVE_LETTER_ASSIGN 202 VDS_DRIVE_LETTER_NOTIFICATION
Dateisystem VDS_NF_FILE_SYSTEM_MODIFY 203 VDS_FILE_SYSTEM_NOTIFICATION
Dateisystem VDS_NF_FILE_SYSTEM_FORMAT_PROGRESS 204 VDS_FILE_SYSTEM_NOTIFICATION
Lautstärke VDS_NF_MOUNT_POINTS_CHANGE 205 VDS_MOUNT_POINT_NOTIFICATION

 

VDS-Objektmodell

IVdsAdviseSink

IVdsAdviseSink::OnNotify

IVdsProviderPrivate::OnLoad

IVdsService::Advise