Notifiche VDS

[A partire da Windows 8 e Windows Server 2012, l'interfaccia COM del servizio disco virtuale viene sostituita dall'API gestione archiviazione di Windows.]

Un provider può inviare una notifica di evento a VDS e VDS può a sua volta inoltrare la notifica alle applicazioni. Il modello di notifica usato da VDS è simile al modello di punto di connessione utilizzato dagli oggetti COM.

VDS genera notifiche del servizio per eventi come un'assegnazione di lettera di unità o l'arrivo di un disco non allocato. Quando VDS alloca un disco a un provider, il provider è responsabile della generazione delle notifiche associate. La figura seguente mostra le interfacce e i metodi usati nel modello di notifica VDS.

Diagramma che mostra l'interfaccia e i metodi (Advise, OnLoad e OnNotify) tra applicazioni, servizio dischi virtuali e provider V D S.

Per ricevere notifiche, VDS registra l'interfaccia IVdsAdviseSink con l'oggetto provider chiamando il metodo IVdsProviderPrivate::OnLoad e passando un puntatore all'interfaccia. Quando si verifica un evento di notifica, ad esempio l'arrivo di un nuovo volume o di un'unità, il provider passa la struttura di notifica appropriata a VDS come parametro del metodo IVdsAdviseSink::OnNotify .

Il processo è simile tra un'applicazione e un disco rigido virtuale. In particolare, per ricevere notifiche, un'applicazione registra la propria interfaccia IVdsAdviseSink con VDS chiamando il metodo IVdsService::Advise e passando un puntatore all'interfaccia. Quando VDS riceve una notifica da un provider, passa la struttura di notifica appropriata alle applicazioni registrate come parametro del metodo IVdsAdviseSink::OnNotify .

Nota

Un'applicazione che chiama Advise deve infine chiamare il metodo IVdsService::Unadvise . Idealmente, dovrebbe chiamare Unadvise non appena non deve più ricevere notifiche.

 

La tabella seguente elenca le notifiche generate dal provider in base al tipo di oggetto.

Oggetto Notifica Valore Collegamento alla descrizione dell'evento
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
Volume VDS_NF_VOLUME_ARRIVE 4 VDS_VOLUME_NOTIFICATION
Volume VDS_NF_VOLUME_DEPART 5 VDS_VOLUME_NOTIFICATION
Volume VDS_NF_VOLUME_MODIFY 6 VDS_VOLUME_NOTIFICATION
Volume VDS_NF_VOLUME_REBUILDING_PROGRESS 7 VDS_VOLUME_NOTIFICATION
Disco VDS_NF_DISK_ARRIVE 8 VDS_DISK_NOTIFICATION
Disco VDS_NF_DISK_DEPART 9 VDS_DISK_NOTIFICATION
Disco 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
Porta VDS_NF_PORT_MODIFY 352 VDS_PORT_NOTIFICATION
Porta VDS_NF_PORT_REMOVED 353 VDS_PORT_NOTIFICATION
Unità VDS_NF_DRIVE_ARRIVE 105 VDS_DRIVE_NOTIFICATION
Unità VDS_NF_DRIVE_DEPART 106 VDS_DRIVE_NOTIFICATION
Unità VDS_NF_DRIVE_MODIFY 107 VDS_DRIVE_NOTIFICATION
Unità 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 genera le notifiche rimanenti. Nella tabella seguente sono elencate le costanti di notifica basate sul servizio per categoria.

Category Notifica Valore Collegamento alla descrizione dell'evento
Disco VDS_NF_DISK_ARRIVE 8 VDS_DISK_NOTIFICATION
Disco VDS_NF_DISK_DEPART 9 VDS_DISK_NOTIFICATION
Disco VDS_NF_DISK_MODIFY 10 VDS_DISK_NOTIFICATION
Lettera unità VDS_NF_DRIVE_LETTER_FREE 201 VDS_DRIVE_LETTER_NOTIFICATION
Lettera unità VDS_NF_DRIVE_LETTER_ASSIGN 202 VDS_DRIVE_LETTER_NOTIFICATION
File system VDS_NF_FILE_SYSTEM_MODIFY 203 VDS_FILE_SYSTEM_NOTIFICATION
File system VDS_NF_FILE_SYSTEM_FORMAT_PROGRESS 204 VDS_FILE_SYSTEM_NOTIFICATION
Volume VDS_NF_MOUNT_POINTS_CHANGE 205 VDS_MOUNT_POINT_NOTIFICATION

 

Modello a oggetti VDS

IVdsAdviseSink

IVdsAdviseSink::OnNotify

IVdsProviderPrivate::OnLoad

IVdsService::Advise