Notificações VDS

[A partir do Windows 8 e do Windows Server 2012, o Virtual Disk Service interface COM é substituído 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 os 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 de unidade ou a chegada de um disco não alocado. Uma vez que o VDS aloca um disco para 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 VDS.

diagrama que mostra a interface e os métodos (Advise, OnLoad e OnNotify) entre aplicativos, serviço de disco virtual e provedores de V D S.

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 IVdsAdviseSink::OnNotify parâmetro de método.

O processo é semelhante entre uma aplicação e VDS. Especificamente, para receber notificações, um aplicativo registra seu IVdsAdviseSink interface com VDS chamando o IVdsService::Advise método 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 IVdsAdviseSink::OnNotify parâmetro de método.

Observação

Um aplicativo que chama Advise deve, eventualmente, chamar o IVdsService::Unadvise método. O ideal é que ele ligue para Desaconselhado 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 Notificação Valor Link para a descrição do evento
Embalagem VDS_NF_PACK_ARRIVE 1 VDS_PACK_NOTIFICATION
Embalagem VDS_NF_PACK_DEPART 2 VDS_PACK_NOTIFICATION
Embalagem 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
Responsável pelo tratamento VDS_NF_CONTROLLER_ARRIVE 103 VDS_CONTROLLER_NOTIFICATION
Responsável pelo tratamento VDS_NF_CONTROLLER_DEPART 104 VDS_CONTROLLER_NOTIFICATION
Responsável pelo tratamento VDS_NF_CONTROLLER_MODIFY 350 VDS_CONTROLLER_NOTIFICATION
Responsável pelo tratamento VDS_NF_CONTROLLER_REMOVED 351 VDS_CONTROLLER_NOTIFICATION
Porto VDS_NF_PORT_MODIFY 352 VDS_PORT_NOTIFICATION
Porto VDS_NF_PORT_REMOVED 353 VDS_PORT_NOTIFICATION
Conduzir VDS_NF_DRIVE_ARRIVE 105 VDS_DRIVE_NOTIFICATION
Conduzir VDS_NF_DRIVE_DEPART 106 VDS_DRIVE_NOTIFICATION
Conduzir VDS_NF_DRIVE_MODIFY 107 VDS_DRIVE_NOTIFICATION
Conduzir 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 Notificação 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 ficheiros VDS_NF_FILE_SYSTEM_MODIFY 203 VDS_FILE_SYSTEM_NOTIFICATION
Sistema de ficheiros 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::Aconselhar