Compartilhar via


Notificações do VDS

[Começando com Windows 8 e Windows Server 2012, a interface COM do Serviço de Disco Virtual é substituída pela API de Gerenciamento de Armazenamento do Windows.]

Um provedor pode enviar uma notificação de evento para o VDS, e o VDS pode, por sua vez, encaminhar a notificação para aplicativos. O modelo de notificação usado pelo VDS é semelhante ao modelo de ponto de conexão usado por objetos COM.

O VDS gera notificações de serviço para eventos como uma atribuição de letra da unidade ou a chegada de um disco não alocado. Depois que o VDS aloca um disco a um provedor, o provedor é responsável por gerar as notificações associadas. A ilustração a seguir mostra as interfaces e os métodos usados no modelo de notificação do VDS.

Diagrama que mostra a interface e os métodos (Advise, OnLoad e OnNotify) entre Aplicativos, Serviço de Disco Virtual e Provedores de VDS.

Para receber notificações, o VDS registra sua interface IVdsAdviseSink com o objeto do provedor chamando o método IVdsProviderPrivate::OnLoad e passando um ponteiro para a interface. Quando ocorre um evento de notificação, como a chegada de um novo volume ou unidade, o provedor passa a estrutura de notificação apropriada para o VDS como um parâmetro de método IVdsAdviseSink::OnNotify .

O processo é semelhante entre um aplicativo e o VDS. Especificamente, para receber notificações, um aplicativo registra sua interface IVdsAdviseSink com VDS chamando o método IVdsService::Advise e passando um ponteiro para a interface. Quando o VDS recebe uma notificação de um provedor, ele passa a estrutura de notificação apropriada para aplicativos registrados como um parâmetro de método IVdsAdviseSink::OnNotify .

Observação

Um aplicativo que chama Advise deve eventualmente chamar o método IVdsService::Unadvise . Idealmente, ele deve chamar Unadvise assim que não precisar mais receber notificações.

 

A tabela a seguir lista as notificações geradas pelo provedor por tipo de objeto.

Objeto Notification Valor Link para a descrição do 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
Partição VDS_NF_PARTITION_ARRIVE 11 VDS_PARTITION_NOTIFICATION
Partição VDS_NF_PARTITION_DEPART 12 VDS_PARTITION_NOTIFICATION
Partição VDS_NF_PARTITION_MODIFY 13 VDS_PARTITION_NOTIFICATION
Subsistema VDS_NF_SUB_SYSTEM_ARRIVE 101 VDS_SUB_SYSTEM_NOTIFICATION
Subsistema VDS_NF_SUB_SYSTEM_DEPART 102 VDS_SUB_SYSTEM_NOTIFICATION
Subsistema 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
Unidade VDS_NF_DRIVE_ARRIVE 105 VDS_DRIVE_NOTIFICATION
Unidade VDS_NF_DRIVE_DEPART 106 VDS_DRIVE_NOTIFICATION
Unidade VDS_NF_DRIVE_MODIFY 107 VDS_DRIVE_NOTIFICATION
Unidade 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

 

O VDS gera as notificações restantes. A tabela a seguir lista constantes de notificação baseadas em serviço por categoria.

Categoria Notification Valor Link para a descrição do 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
Letra da unidade VDS_NF_DRIVE_LETTER_FREE 201 VDS_DRIVE_LETTER_NOTIFICATION
Letra da unidade VDS_NF_DRIVE_LETTER_ASSIGN 202 VDS_DRIVE_LETTER_NOTIFICATION
Sistema de arquivos VDS_NF_FILE_SYSTEM_MODIFY 203 VDS_FILE_SYSTEM_NOTIFICATION
Sistema de arquivos VDS_NF_FILE_SYSTEM_FORMAT_PROGRESS 204 VDS_FILE_SYSTEM_NOTIFICATION
Volume VDS_NF_MOUNT_POINTS_CHANGE 205 VDS_MOUNT_POINT_NOTIFICATION

 

Modelo de objeto VDS

IVdsAdviseSink

IVdsAdviseSink::OnNotify

IVdsProviderPrivate::OnLoad

IVdsService::Advise