Поделиться через


Уведомления VDS

[Начиная с Windows 8 и Windows Server 2012 интерфейс COM виртуальной дисковой службы заменен API управления хранилищами Windows .]

Поставщик может отправить уведомление о событии в VDS, и VDS может в свою очередь перенаправить уведомление в приложения. Модель уведомлений, используемая VDS, напоминает модель точки подключения, используемую com-объектами.

VDS создает уведомления службы для событий, таких как назначение буквы диска или прибытие нераспределенного диска. После того как VDS выделяет диск поставщику, поставщик отвечает за создание связанных уведомлений. На рисунке ниже показаны интерфейсы и методы, используемые в модели уведомлений VDS.

диаграмма, показывющая интерфейс и методы (Совет, OnLoad и OnNotify) между приложениями, службами виртуальных дисков и поставщиками виртуальных дисков V D S.

Для получения уведомлений 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

 

объектной модели VDS

IVdsAdviseSink

IVdsAdviseSink::OnNotify

IVdsProviderPrivate::OnLoad

IVdsService::Совет