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


Метод IVdsAdviseSink::OnNotify (vds.h)

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

Передает уведомления от поставщиков в VDS и от VDS в приложения.

Синтаксис

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

Параметры

[in] lNumberOfNotifications

Количество уведомлений, указанное в pNotificationArray.

[in] pNotificationArray

Указатель на массив VDS_NOTIFICATION структур. Поставщик выделяет память для массива, когда поставщик вызывает службу; служба освобождает массив. VDS выделяет массив, когда служба вызывает приложение. В этом случае вызывающие элементы должны освободить массив с помощью функции CoTaskMemFree .

Возвращаемое значение

Этот метод может возвращать стандартные значения HRESULT, такие как E_INVALIDARG или E_OUTOFMEMORY, а также возвращаемые значения VDS. Он также может возвращать преобразованные коды системных ошибок с помощью макроса HRESULT_FROM_WIN32 . Ошибки могут возникать из самого VDS или от используемого базового поставщика VDS . Возможные возвращаемые значения включают следующие.

Код возврата Описание
S_FALSE
VDS возвращает это значение поставщику, если служба не полностью инициализирована при вызове этого метода или если служба теряет некоторые уведомления.

Комментарии

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

VDS поддерживает кэш сведений о свойствах всех объектов VDS, таких как подсистемы и контроллеры. Каждый раз, когда происходит изменение, которое вызывает уведомление, этот кэш обновляется автоматически. Кроме того, вызов IVdsHwProvider::Refresh или IVdsService::Refresh в ответ на уведомление VDS может привести к отправке бесконечного цикла уведомлений. По этим причинам приложение не должно вызывать IVdsHwProvider::Refresh или IVdsService::Refresh в своей реализации этого метода.

Для поставщиков, которые используют этот метод для отправки уведомлений, рекомендуется группировать уведомления, исходящие из одного события. Например, при удалении LUN отправьте VDS_NF_DRIVE_MODIFY уведомления для всех затронутых дисков.

Требования

   
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Целевая платформа Windows
Header vds.h
Библиотека Uuid.lib

См. также раздел

IVdsAdviseSink

IVdsHwProvider::Refresh

IVdsService::Совет

IVdsService::Refresh

IVdsService::Unadvise

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

VDS_NOTIFICATION