Уведомления 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::Advise и передачи указателя на интерфейс. Когда служба VDS получает уведомление от поставщика, она передает соответствующую структуру уведомлений зарегистрированным приложениям в качестве параметра метода IVdsAdviseSink::OnNotify .
Примечание
Приложение, которое вызывает Совет , должно в конечном итоге вызвать метод IVdsService::Unadvise . В идеале он должен вызывать Unadvise , как только ему больше не нужно получать уведомления.
В следующей таблице перечислены уведомления, созданные поставщиком по типу объекта.
Объект | Уведомление | Значение | Ссылка на описание события |
---|---|---|---|
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 |
Громкость | 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 |
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 |
Контроллер | 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 |
Связанные темы