次の方法で共有


IVdsAdviseSink::OnNotify メソッド (vds.h)

[Windows 8とWindows Server 2012以降、仮想ディスク サービス COM インターフェイスは Windows Storage Management API に置き換えられます。

プロバイダーから VDS に、VDS からアプリケーションに通知を渡します。

構文

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

パラメーター

[in] lNumberOfNotifications

pNotificationArray で指定された通知の数。

[in] pNotificationArray

VDS_NOTIFICATION構造体の配列へのポインター。 プロバイダーは、プロバイダーがサービスを呼び出すときに、配列のメモリを割り当てます。サービスは 配列を解放します。 VDS は、サービスがアプリケーションを呼び出すときに配列を割り当てます。 この場合、呼び出し元は CoTaskMemFree 関数を使用して配列を解放する必要があります。

戻り値

このメソッドは、E_INVALIDARGやE_OUTOFMEMORYなどの標準の HRESULT 値と、VDS 固有の戻り値を返すことができます。 また、HRESULT_FROM_WIN32 マクロを使用して、変換されたシステム エラー コードを返すこともできます。 エラーは、VDS 自体または使用されている基になる VDS プロバイダー から発生する可能性があります。 可能な戻り値は次のとおりです。

リターン コード 説明
S_FALSE
プロバイダーがこのメソッドを呼び出すときにサービスが完全に初期化されていない場合、またはサービスによって一部の通知が失われた場合、VDS はプロバイダーにこの値を返します。

解説

アプリケーションは、VDS から通知を受け取るためにこのメソッドを実装します。 これらの通知の一部はVDSから発信されます。その他は、VDS によって転送されるプロバイダー通知です。

VDS は、サブシステムやコントローラーなど、すべての VDS オブジェクトのプロパティに関する情報のキャッシュを保持します。 通知をトリガーする変更が発生するたびに、このキャッシュは自動的に更新されます。 また、 VDS 通知に応答して IVdsHwProvider::Refresh または IVdsService::Refresh を呼び出すと、通知の無限ループが送信される可能性があります。 これらの理由から、アプリケーションでは、このメソッドの実装で IVdsHwProvider::Refresh または IVdsService::Refresh を呼び出さないでください。

このメソッドを使用して通知を送信するプロバイダーの場合は、1 つのイベントから発生した通知をグループ化することをお勧めします。 たとえば、LUN が削除された場合は、影響を受けるすべてのドライブ に対してVDS_NF_DRIVE_MODIFY 通知を一緒に送信します。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2003 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー vds.h
Library Uuid.lib

関連項目

IVdsAdviseSink

IVdsHwProvider::Refresh

IVdsService::Advise

IVdsService::Refresh

IVdsService::Unadvise

VDS 通知

VDS_NOTIFICATION