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


Метод IVdsAdviseSink::OnNotify (vdshwprv.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 vdshwprv.h
Библиотека Uuid.lib

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

IVdsAdviseSink

IVdsHwProvider::Refresh

IVdsService::Совет

IVdsService::Refresh

IVdsService::Unadvise

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

VDS_NOTIFICATION