次の方法で共有


VDS 通知

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

プロバイダーは VDS にイベント通知を送信でき、VDS は通知をアプリケーションに順番に転送できます。 VDS で使用される通知モデルは、COM オブジェクトで使用される接続ポイント モデルに似ています。

VDS は、ドライブ文字の割り当てや未割り当てディスクの到着などのイベントのサービス通知を生成します。 VDS がプロバイダーにディスクを割り当てると、プロバイダーは関連する通知を生成する役割を担います。 次の図は、VDS 通知モデルで使用されるインターフェイスとメソッドを示しています。

アプリケーション、仮想ディスク サービス、および V D S プロバイダー間のインターフェイスとメソッド (Advise、OnLoad、OnNotify) を示す図。

通知を受信するために、VDS は IVdsProviderPrivate::OnLoad メソッドを呼び出し、インターフェイスへのポインターを渡すことによって、その IVdsAdviseSink インターフェイスをプロバイダー オブジェクトに登録します。 新しいボリュームやドライブの到着などの通知イベントが発生すると、プロバイダーは適切な通知構造を IVdsAdviseSink::OnNotify メソッド パラメーターとして VDS に 渡します。

このプロセスは、アプリケーションと VDS の間で似ています。 具体的には、通知を受信するために、アプリケーションは IVdsService ::Advise メソッドを呼び出し、インターフェイスへのポインターを渡すことによって、 その IVdsAdviseSink インターフェイスを VDS に登録します。 VDS は、プロバイダーから通知を受信すると、 IVdsAdviseSink::OnNotify メソッド パラメーターとして、登録されているアプリケーションに適切な通知構造を渡します。

注意

Advise を呼び出すアプリケーションは、最終的に IVdsService::Unadvise メソッドを呼び出す必要があります。 理想的には、通知を受信する必要がなくなったらすぐに Unadvise を呼び出す必要があります。

 

次の表に、プロバイダーによって生成された通知をオブジェクトの種類別に示します。

Object Notification イベントの説明へのリンク
Pack VDS_NF_PACK_ARRIVE 1 VDS_PACK_NOTIFICATION
Pack VDS_NF_PACK_DEPART 2 VDS_PACK_NOTIFICATION
Pack VDS_NF_PACK_MODIFY 3 VDS_PACK_NOTIFICATION
ボリューム VDS_NF_VOLUME_ARRIVE 4 VDS_VOLUME_NOTIFICATION
ボリューム VDS_NF_VOLUME_DEPART 5 VDS_VOLUME_NOTIFICATION
ボリューム VDS_NF_VOLUME_MODIFY 6 VDS_VOLUME_NOTIFICATION
ボリューム VDS_NF_VOLUME_REBUILDING_PROGRESS 7 VDS_VOLUME_NOTIFICATION
ディスク VDS_NF_DISK_ARRIVE 8 VDS_DISK_NOTIFICATION
ディスク VDS_NF_DISK_DEPART 9 VDS_DISK_NOTIFICATION
ディスク VDS_NF_DISK_MODIFY 10 VDS_DISK_NOTIFICATION
Partition VDS_NF_PARTITION_ARRIVE 11 VDS_PARTITION_NOTIFICATION
Partition VDS_NF_PARTITION_DEPART 12 VDS_PARTITION_NOTIFICATION
Partition VDS_NF_PARTITION_MODIFY 13 VDS_PARTITION_NOTIFICATION
Subsystem VDS_NF_SUB_SYSTEM_ARRIVE 101 VDS_SUB_SYSTEM_NOTIFICATION
Subsystem VDS_NF_SUB_SYSTEM_DEPART 102 VDS_SUB_SYSTEM_NOTIFICATION
Subsystem VDS_NF_SUB_SYSTEM_MODIFY 151 VDS_SUB_SYSTEM_NOTIFICATION
コントローラー VDS_NF_CONTROLLER_ARRIVE 103 VDS_CONTROLLER_NOTIFICATION
コントローラー VDS_NF_CONTROLLER_DEPART 104 VDS_CONTROLLER_NOTIFICATION
コントローラー VDS_NF_CONTROLLER_MODIFY 350 VDS_CONTROLLER_NOTIFICATION
コントローラー VDS_NF_CONTROLLER_REMOVED 351 VDS_CONTROLLER_NOTIFICATION
Port VDS_NF_PORT_MODIFY 352 VDS_PORT_NOTIFICATION
Port VDS_NF_PORT_REMOVED 353 VDS_PORT_NOTIFICATION
ドライブ VDS_NF_DRIVE_ARRIVE 105 VDS_DRIVE_NOTIFICATION
ドライブ VDS_NF_DRIVE_DEPART 106 VDS_DRIVE_NOTIFICATION
ドライブ VDS_NF_DRIVE_MODIFY 107 VDS_DRIVE_NOTIFICATION
ドライブ 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

 

VDS は残りの通知を生成します。 次の表に、サービス ベースの通知定数をカテゴリ別に示します。

カテゴリ Notification イベントの説明へのリンク
ディスク VDS_NF_DISK_ARRIVE 8 VDS_DISK_NOTIFICATION
ディスク VDS_NF_DISK_DEPART 9 VDS_DISK_NOTIFICATION
ディスク VDS_NF_DISK_MODIFY 10 VDS_DISK_NOTIFICATION
ドライブ文字 VDS_NF_DRIVE_LETTER_FREE 201 VDS_DRIVE_LETTER_NOTIFICATION
ドライブ文字 VDS_NF_DRIVE_LETTER_ASSIGN 202 VDS_DRIVE_LETTER_NOTIFICATION
ファイル システム VDS_NF_FILE_SYSTEM_MODIFY 203 VDS_FILE_SYSTEM_NOTIFICATION
ファイル システム VDS_NF_FILE_SYSTEM_FORMAT_PROGRESS 204 VDS_FILE_SYSTEM_NOTIFICATION
ボリューム VDS_NF_MOUNT_POINTS_CHANGE 205 VDS_MOUNT_POINT_NOTIFICATION

 

VDS オブジェクト モデル

IVdsAdviseSink

IVdsAdviseSink::OnNotify

IVdsProviderPrivate::OnLoad

IVdsService::Advise