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.
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 |
Tópicos relacionados