Compartilhar via


Método IVdsAdviseSink::OnNotify (vds.h)

[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.]

Passa notificações de provedores para VDS e de VDS para aplicativos.

Sintaxe

HRESULT OnNotify(
  [in] LONG             lNumberOfNotifications,
  [in] VDS_NOTIFICATION *pNotificationArray
);

Parâmetros

[in] lNumberOfNotifications

O número de notificações especificadas em pNotificationArray.

[in] pNotificationArray

Um ponteiro para uma matriz de estruturas VDS_NOTIFICATION . Um provedor aloca a memória para a matriz quando o provedor chama o serviço; o serviço libera a matriz. O VDS aloca a matriz quando o serviço chama um aplicativo. Nesse caso, os chamadores devem liberar a matriz usando a função CoTaskMemFree .

Retornar valor

Esse método pode retornar valores HRESULT padrão, como E_INVALIDARG ou E_OUTOFMEMORY, e valores retornados específicos do VDS. Ele também pode retornar códigos de erro do sistema convertidos usando a macro HRESULT_FROM_WIN32 . Os erros podem se originar do próprio VDS ou do provedor de VDS subjacente que está sendo usado. Os possíveis valores retornados incluem o seguinte.

Código de retorno Descrição
S_FALSE
O VDS retornará esse valor a um provedor se o serviço não for totalmente inicializado quando o provedor chamar esse método ou se algumas notificações forem perdidas pelo serviço.

Comentários

Um aplicativo implementa esse método para receber notificações do VDS. Algumas dessas notificações são originadas do VDS; outras são notificações do provedor que são encaminhadas pelo VDS.

O VDS mantém um cache de informações sobre as propriedades de todos os objetos VDS, como subsistemas e controladores. Sempre que ocorre uma alteração que dispara uma notificação, esse cache é atualizado automaticamente. Além disso, chamar IVdsHwProvider::Refresh ou IVdsService::Refresh em resposta a uma notificação de VDS pode fazer com que um loop infinito de notificações seja enviado. Por esses motivos, um aplicativo não deve chamar IVdsHwProvider::Refresh ou IVdsService::Refresh em sua implementação desse método.

Para provedores que usam esse método para enviar notificações, é uma boa prática agrupar notificações provenientes de um único evento juntos. Por exemplo, quando um LUN é excluído, envie VDS_NF_DRIVE_MODIFY notificações para todas as unidades afetadas juntas.

Requisitos

   
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho vds.h
Biblioteca Uuid.lib

Confira também

IVdsAdviseSink

IVdsHwProvider::Refresh

IVdsService::Advise

IVdsService::Refresh

IVdsService::Unadvise

Notificações do VDS

VDS_NOTIFICATION