Уведомления VDS
[Начиная с Windows 8 и Windows Server 2012 интерфейс COM виртуальной дисковой службы заменен API управления хранилищами Windows .]
Поставщик может отправить уведомление о событии в VDS, и VDS может в свою очередь перенаправить уведомление в приложения. Модель уведомлений, используемая VDS, напоминает модель точки подключения, используемую com-объектами.
VDS создает уведомления службы для событий, таких как назначение буквы диска или прибытие нераспределенного диска. После того как VDS выделяет диск поставщику, поставщик отвечает за создание связанных уведомлений. На рисунке ниже показаны интерфейсы и методы, используемые в модели уведомлений VDS.
Для получения уведомлений VDS регистрирует свой интерфейс IVdsAdviseSink с объектом поставщика путем вызова метода IVdsProviderPrivate::OnLoad и передачи указателя на интерфейс. При возникновении события уведомления, например при поступлении нового тома или диска, поставщик передает соответствующую структуру уведомлений в VDS в качестве параметра метода IVdsAdviseSink::OnNotify метода.
Процесс аналогичен приложению и VDS. В частности, для получения уведомлений приложение регистрирует свой интерфейс IVdsAdviseSink с помощью VDS путем вызова метода IVdsService::Совет и передачи указателя на интерфейс. Когда VDS получает уведомление от поставщика, он передает соответствующую структуру уведомлений зарегистрированным приложениям в качестве параметра метода IVdsAdviseSink::OnNotify метода.
Заметка
Приложение, которое вызывает Совет, должно в конечном итоге вызвать метод IVdsService::Unadvise. В идеале он должен вызывать Unadvise, как только он больше не должен получать уведомления.
В следующей таблице перечислены созданные поставщиком уведомления по типу объекта.
Объект | Уведомление | Ценность | Ссылка на описание события |
---|---|---|---|
Упаковывать | VDS_NF_PACK_ARRIVE | 1 | VDS_PACK_NOTIFICATION |
Упаковывать | VDS_NF_PACK_DEPART | 2 | VDS_PACK_NOTIFICATION |
Упаковывать | VDS_NF_PACK_MODIFY | 3 | VDS_PACK_NOTIFICATION |
Том | VDS_NF_VOLUME_ARRIVE | 4 | VDS_VOLUME_NOTIFICATION |
Том | VDS_NF_VOLUME_DEPART | 5 | VDS_VOLUME_NOTIFICATION |
Том | VDS_NF_VOLUME_MODIFY | 6 | VDS_VOLUME_NOTIFICATION |
Том | VDS_NF_VOLUME_REBUILDING_PROGRESS | 7 | VDS_VOLUME_NOTIFICATION |
Диск | VDS_NF_DISK_ARRIVE | 8 | VDS_DISK_NOTIFICATION |
Диск | VDS_NF_DISK_DEPART | 9 | VDS_DISK_NOTIFICATION |
Диск | VDS_NF_DISK_MODIFY | 10 | VDS_DISK_NOTIFICATION |
Раздел | VDS_NF_PARTITION_ARRIVE | 11 | VDS_PARTITION_NOTIFICATION |
Раздел | VDS_NF_PARTITION_DEPART | 12 | VDS_PARTITION_NOTIFICATION |
Раздел | VDS_NF_PARTITION_MODIFY | 13 | VDS_PARTITION_NOTIFICATION |
Подсистема | VDS_NF_SUB_SYSTEM_ARRIVE | 101 | VDS_SUB_SYSTEM_NOTIFICATION |
Подсистема | VDS_NF_SUB_SYSTEM_DEPART | 102 | VDS_SUB_SYSTEM_NOTIFICATION |
Подсистема | VDS_NF_SUB_SYSTEM_MODIFY | 151 | VDS_SUB_SYSTEM_NOTIFICATION |
Контроллер | VDS_NF_CONTROLLER_ARRIVE | 103 | VDS_CONTROLLER_NOTIFICATION |
Контроллер | VDS_NF_CONTROLLER_DEPART | 104 | VDS_CONTROLLER_NOTIFICATION |
Контроллер | VDS_NF_CONTROLLER_MODIFY | 350 | VDS_CONTROLLER_NOTIFICATION |
Контроллер | VDS_NF_CONTROLLER_REMOVED | 351 | VDS_CONTROLLER_NOTIFICATION |
Порт | VDS_NF_PORT_MODIFY | 352 | VDS_PORT_NOTIFICATION |
Порт | VDS_NF_PORT_REMOVED | 353 | VDS_PORT_NOTIFICATION |
Гнать | VDS_NF_DRIVE_ARRIVE | 105 | VDS_DRIVE_NOTIFICATION |
Гнать | VDS_NF_DRIVE_DEPART | 106 | VDS_DRIVE_NOTIFICATION |
Гнать | VDS_NF_DRIVE_MODIFY | 107 | VDS_DRIVE_NOTIFICATION |
Гнать | 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 создает оставшиеся уведомления. В следующей таблице перечислены константы уведомлений на основе служб по категориям.
Категория | Уведомление | Ценность | Ссылка на описание события |
---|---|---|---|
Диск | VDS_NF_DISK_ARRIVE | 8 | VDS_DISK_NOTIFICATION |
Диск | VDS_NF_DISK_DEPART | 9 | VDS_DISK_NOTIFICATION |
Диск | VDS_NF_DISK_MODIFY | 10 | VDS_DISK_NOTIFICATION |
Буква диска | VDS_NF_DRIVE_LETTER_FREE | 201 | VDS_DRIVE_LETTER_NOTIFICATION |
Буква диска | VDS_NF_DRIVE_LETTER_ASSIGN | 202 | VDS_DRIVE_LETTER_NOTIFICATION |
Файловая система | VDS_NF_FILE_SYSTEM_MODIFY | 203 | VDS_FILE_SYSTEM_NOTIFICATION |
Файловая система | VDS_NF_FILE_SYSTEM_FORMAT_PROGRESS | 204 | VDS_FILE_SYSTEM_NOTIFICATION |
Том | VDS_NF_MOUNT_POINTS_CHANGE | 205 | VDS_MOUNT_POINT_NOTIFICATION |
Связанные разделы