Partager via


VDS Notifications

[À compter de Windows 8 et Windows Server 2012, l’interface COM du service de disque virtuel est remplacée par l’API gestion du stockage Windows.]

Un fournisseur peut envoyer une notification d’événement à VDS, et VDS peut à son tour transférer la notification aux applications. Le modèle de notification utilisé par VDS ressemble au modèle de point de connexion utilisé par les objets COM.

VDS génère des notifications de service pour des événements tels qu’une affectation de lettre de lecteur ou l’arrivée d’un disque non alloué. Une fois que VDS alloue un disque à un fournisseur, le fournisseur est chargé de générer les notifications associées. L’illustration qui suit montre les interfaces et les méthodes utilisées dans le modèle de notification VDS.

Diagramme montrant l’interface et les méthodes (Advise, OnLoad et OnNotify) entre les applications, le service de disque virtuel et les fournisseurs V DS.

Pour recevoir des notifications, VDS inscrit son interface IVdsAdviseSink auprès de l’objet fournisseur en appelant la méthode IVdsProviderPrivate::OnLoad et en passant un pointeur vers l’interface. Lorsqu’un événement de notification se produit, tel que l’arrivée d’un nouveau volume ou d’un nouveau lecteur, le fournisseur transmet la structure de notification appropriée à VDS en tant que paramètre de méthode IVdsAdviseSink::OnNotify .

Le processus est similaire entre une application et un VDS. Plus précisément, pour recevoir des notifications, une application inscrit son interface IVdsAdviseSink auprès de VDS en appelant la méthode IVdsService::Advise et en passant un pointeur vers l’interface. Lorsque VDS reçoit une notification d’un fournisseur, il transmet la structure de notification appropriée aux applications inscrites en tant que paramètre de méthode IVdsAdviseSink::OnNotify .

Notes

Une application qui appelle Advise doit finalement appeler la méthode IVdsService::Unadvise . Dans l’idéal, il doit appeler Unadvise dès qu’il n’a plus besoin de recevoir de notifications.

 

Le tableau qui suit répertorie les notifications générées par le fournisseur par type d’objet.

Object Notification Valeur Lien vers la description de l’événement
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
Disque VDS_NF_DISK_ARRIVE 8 VDS_DISK_NOTIFICATION
Disque VDS_NF_DISK_DEPART 9 VDS_DISK_NOTIFICATION
Disque 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
Contrôleur VDS_NF_CONTROLLER_ARRIVE 103 VDS_CONTROLLER_NOTIFICATION
Contrôleur VDS_NF_CONTROLLER_DEPART 104 VDS_CONTROLLER_NOTIFICATION
Contrôleur VDS_NF_CONTROLLER_MODIFY 350 VDS_CONTROLLER_NOTIFICATION
Contrôleur 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
Lecteur VDS_NF_DRIVE_ARRIVE 105 VDS_DRIVE_NOTIFICATION
Lecteur VDS_NF_DRIVE_DEPART 106 VDS_DRIVE_NOTIFICATION
Lecteur VDS_NF_DRIVE_MODIFY 107 VDS_DRIVE_NOTIFICATION
Lecteur VDS_NF_DRIVE_REMOVED 354 VDS_DRIVE_NOTIFICATION
Numéro d'unité logique VDS_NF_LUN_ARRIVE 108 VDS_LUN_NOTIFICATION
Numéro d'unité logique VDS_NF_LUN_DEPART 109 VDS_LUN_NOTIFICATION
Numéro d'unité logique VDS_NF_LUN_MODIFY 110 VDS_LUN_NOTIFICATION

 

VDS génère les notifications restantes. Le tableau suivant répertorie les constantes de notification basées sur le service par catégorie.

Category Notification Valeur Lien vers la description de l’événement
Disque VDS_NF_DISK_ARRIVE 8 VDS_DISK_NOTIFICATION
Disque VDS_NF_DISK_DEPART 9 VDS_DISK_NOTIFICATION
Disque VDS_NF_DISK_MODIFY 10 VDS_DISK_NOTIFICATION
Lettre de lecteur VDS_NF_DRIVE_LETTER_FREE 201 VDS_DRIVE_LETTER_NOTIFICATION
Lettre de lecteur VDS_NF_DRIVE_LETTER_ASSIGN 202 VDS_DRIVE_LETTER_NOTIFICATION
Système de fichiers VDS_NF_FILE_SYSTEM_MODIFY 203 VDS_FILE_SYSTEM_NOTIFICATION
Système de fichiers VDS_NF_FILE_SYSTEM_FORMAT_PROGRESS 204 VDS_FILE_SYSTEM_NOTIFICATION
Volume VDS_NF_MOUNT_POINTS_CHANGE 205 VDS_MOUNT_POINT_NOTIFICATION

 

Modèle objet VDS

IVdsAdviseSink

IVdsAdviseSink::OnNotify

IVdsProviderPrivate::OnLoad

IVdsService::Advise