Win32 API 日本語リファレンス
ホームStorage.Vss › IVssDifferentialSoftwareSnapshotMgmt

IVssDifferentialSoftwareSnapshotMgmt

COM
IID214a0f28-b737-4026-b847-4f9e37d79529継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

システムのシャドウコピープロバイダーによって生成されたシャドウコピー記憶域をアプリケーションが照会および管理するためのメソッドを提供します。

メソッド 6

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT AddDiffArea(WORD* pwszVolumeName, WORD* pwszDiffAreaVolumeName, LONGLONG llMaximumDiffSpace)

指定したボリュームに対してシャドウコピー記憶域の関連付けを追加します。

pwszVolumeNameWORD*in

シャドウコピーの元となるボリュームの名前です。このボリュームは、pwszDiffAreaVolumeName ボリューム上のシャドウコピー 記憶域に関連付けられます。

ボリューム名は次のいずれかの形式で指定し、末尾に円記号 (\) を含める必要があります。

  • マウントされたフォルダーのパス (例: Y:\MountX\)
  • ドライブ文字 (例: D:\)
  • \\?\Volume{GUID}\ 形式のボリューム GUID パス (GUID はボリュームを識別します)
pwszDiffAreaVolumeNameWORD*in

pwszVolumeName ボリュームに関連付けるシャドウコピー記憶域を格納する ボリュームの名前です。

ボリューム名は次のいずれかの形式で指定し、末尾に円記号 (\) を含める必要があります。

  • マウントされたフォルダーのパス
  • ドライブ文字 (例: D:\)
  • \\?\Volume{GUID}\ 形式のボリューム GUID パス (GUID はボリュームを識別します)
llMaximumDiffSpaceLONGLONGin

ボリューム上のシャドウコピー記憶域の最大サイズ (バイト単位) です。この値は 最小でも 320 MB 必要であり、上限はシステム全体の制限に従います。 この値が –1 の場合、最大サイズは無制限になります。

Windows Server 2003: Windows Server 2003 with SP1 より前では、シャドウコピー記憶域のサイズは 100 MB に固定されていました。

戻り値

このメソッドは次のいずれかの値を返します。

意味
S_OK
シャドウコピー記憶域の関連付けを正常に追加しました。
E_ACCESSDENIED
呼び出し元にバックアップ特権が不足しているか、管理者ではありません。
E_INVALIDARG
パラメーターのいずれかの値が有効ではありません。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_MAXIMUM_DIFFAREA_ASSOCIATIONS_REACHED
シャドウコピー元のボリュームに追加できるシャドウコピー記憶域の数が上限に達しています。指定された シャドウコピー記憶域ボリュームは、指定されたシャドウコピー元ボリュームに関連付けられませんでした。
VSS_E_NESTED_VOLUME_LIMIT
指定されたボリュームは入れ子が深すぎるため、VSS 操作に参加できません。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この戻り値はサポートされていません。

VSS_E_OBJECT_ALREADY_EXISTS
pwszVolumeName ボリュームと pwszDiffAreaVolumeName ボリュームの関連付けは既に存在します。
VSS_E_PROVIDER_VETO
想定されるプロバイダーエラーです。プロバイダーはこのエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。
VSS_E_UNEXPECTED
予期しないエラーです。エラーコードはエラーログファイルに記録されます。詳細については、 Event and Error Handling Under VSS を参照してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この値は Windows Server 2008 R2 および Windows 7 まではサポートされません。代わりに E_UNEXPECTED が使用されます。

VSS_E_VOLUME_NOT_SUPPORTED
pwszDiffAreaVolumeName ボリュームが NTFS ボリュームではないか、空き領域が不足 しています。

解説(Remarks)

pwszVolumeName ボリュームに対して既にシャドウコピーが存在する場合、またはそのボリュームに対して 既にシャドウコピー記憶域の関連付けが存在する場合は、シャドウコピー記憶域の関連付けを作成できません。

仮想ハードディスク (VHD) をソースボリュームとする場合、そのシャドウコピー記憶域は同一ボリューム上に存在する必要があります。同様に、VHD ボリューム上にシャドウコピー記憶域を作成できるのは、ソースボリュームが両者で同一である場合に限られます。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: VHD はサポートされていません。

シャドウコピー記憶域のサイズを変更するには、IVssDifferentialSoftwareSnapshotMgmt::ChangeDiffAreaMaximumSize メソッドまたは IVssDifferentialSoftwareSnapshotMgmt2::ChangeDiffAreaMaximumSizeEx メソッドを使用します。サイズを 0 に変更することで、シャドウコピー記憶域を削除できます。

vtbl 4 HRESULT ChangeDiffAreaMaximumSize(WORD* pwszVolumeName, WORD* pwszDiffAreaVolumeName, LONGLONG llMaximumDiffSpace)

指定したボリュームのシャドウコピー記憶域の最大サイズを更新します。

pwszVolumeNameWORD*in

シャドウコピーの元となるボリュームの名前です。このボリュームは、pwszDiffAreaVolumeName ボリューム上の シャドウコピー記憶域に関連付けられます。

ボリューム名は次のいずれかの形式で指定し、末尾に円記号 (\) を含める必要があります。

  • マウントされたフォルダーのパス (例: Y:\MountX\)
  • ドライブ文字 (例: D:\)
  • \\?\Volume{GUID}\ 形式のボリューム GUID パス (GUID はボリュームを識別します)
pwszDiffAreaVolumeNameWORD*in

pwszVolumeName ボリュームに関連付けられたシャドウコピー記憶域を格納する ボリュームの名前です。

ボリューム名は次のいずれかの形式で指定し、末尾に円記号 (\) を含める必要があります。

  • マウントされたフォルダーのパス
  • ドライブ文字 (例: D:\)
  • \\?\Volume{GUID}\ 形式のボリューム GUID パス (GUID はボリュームを識別します)
llMaximumDiffSpaceLONGLONGinこのボリューム用に使用するシャドウコピー記憶域の最大サイズ (バイト単位) を指定します。この値が 0 の場合、 シャドウコピー記憶域は削除されます。この値が –1 の場合、最大サイズは無制限になります。

戻り値

このメソッドは次のいずれかの値を返します。

意味
S_OK
シャドウコピー記憶域の最大サイズを正常に変更しました。
E_ACCESSDENIED
呼び出し元にバックアップ特権が不足しているか、管理者ではありません。
E_INVALIDARG
パラメーターのいずれかの値が有効ではありません。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INSUFFICIENT_STORAGE
pwszDiffAreaVolumeName ボリュームの空き領域が不足しています。
VSS_E_OBJECT_NOT_FOUND
pwszVolumeName ボリュームと pwszDiffAreaVolumeName ボリュームの関連付けが見つかりませんでした。
VSS_E_PROVIDER_VETO
プロバイダーエラーです。プロバイダーはこのエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。
VSS_E_UNEXPECTED
予期しないエラーです。エラーコードはエラーログファイルに記録されます。詳細については、 Event and Error Handling Under VSS を参照してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この値は Windows Server 2008 R2 および Windows 7 まではサポートされません。代わりに E_UNEXPECTED が使用されます。

VSS_E_VOLUME_IN_USE
現在、シャドウコピーがそのシャドウコピー記憶域を使用しています。

解説(Remarks)

ChangeDiffAreaMaximumSize メソッドはシャドウコピー記憶域を明示的なものにします。つまり、すべてのシャドウコピーが削除されても自動的には削除されなくなります。

シャドウコピー記憶域が存在しない場合、このメソッドはそれを作成します。

Windows Server 2008、Windows Vista および Windows Server 2003: シャドウコピー記憶域が存在しない場合でも、このメソッドはそれを作成しません。

シャドウコピー記憶域を作成するには、IVssDifferentialSoftwareSnapshotMgmt::AddDiffArea メソッドを使用します。

vtbl 5 HRESULT QueryVolumesSupportedForDiffAreas(WORD* pwszOriginalVolumeName, IVssEnumMgmtObject** ppEnum)

シャドウコピー記憶域をサポートするボリューム (シャドウコピー記憶域が無効になっているボリュームを含む) を照会します。

pwszOriginalVolumeNameWORD*in

シャドウコピーの元となる元のボリュームの名前です。ボリューム名は次のいずれかの形式で指定し、 末尾に円記号 (\) を含める必要があります。

  • マウントされたフォルダーのパス (例: Y:\MountX\)
  • ドライブ文字 (例: D:\)
  • \\?\Volume{GUID}\ 形式のボリューム GUID パス (GUID はボリュームを識別します)
ppEnumIVssEnumMgmtObject**outIVssEnumMgmtObject インターフェイス ポインターのアドレスです。戻り時に初期化されます。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

このメソッドは次のいずれかの値を返します。

意味
S_OK
シャドウコピー記憶域のボリュームを正常に照会しました。
E_ACCESSDENIED
呼び出し元にバックアップ特権が不足しているか、管理者ではありません。
E_INVALIDARG
パラメーターのいずれかの値が有効ではありません。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_PROVIDER_VETO
プロバイダーエラーです。プロバイダーはこのエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。
VSS_E_UNEXPECTED
予期しないエラーです。エラーコードはエラーログファイルに記録されます。詳細については、 Event and Error Handling Under VSS を参照してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この値は Windows Server 2008 R2 および Windows 7 まではサポートされません。代わりに E_UNEXPECTED が使用されます。

解説(Remarks)

返される IVssEnumMgmtObject 列挙子オブジェクトには、 VSS_MGMT_OBJECT_PROP 構造体の中の VSS_MGMT_OBJECT_UNION 共用体の中に VSS_DIFF_VOLUME_PROP 構造体が格納されます。

vtbl 6 HRESULT QueryDiffAreasForVolume(WORD* pwszVolumeName, IVssEnumMgmtObject** ppEnum)

指定したボリュームが使用しているシャドウコピー記憶域を照会します。

pwszVolumeNameWORD*in

シャドウコピー記憶域を含むボリュームの名前です。

ボリューム名は次のいずれかの形式で指定し、末尾に円記号 (\) を含める必要があります。

  • マウントされたフォルダーのパス (例: Y:\MountX\)
  • ドライブ文字 (例: D:\)
  • \\?\Volume{GUID}\ 形式のボリューム GUID パス (GUID はボリュームを識別します)
ppEnumIVssEnumMgmtObject**outIVssEnumMgmtObject インターフェイス ポインターのアドレスです。戻り時に初期化されます。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

このメソッドは次のいずれかの値を返します。

意味
S_OK
シャドウコピー記憶域を正常に照会しました。
E_ACCESSDENIED
呼び出し元にバックアップ特権が不足しているか、管理者ではありません。
E_INVALIDARG
パラメーターのいずれかの値が有効ではありません。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_PROVIDER_VETO
プロバイダーエラーです。プロバイダーはこのエラーをイベントログに記録しました。詳細については、Event and Error Handling Under VSS を参照してください。
VSS_E_UNEXPECTED
予期しないエラーです。エラーコードはエラーログファイルに記録されます。詳細については、Event and Error Handling Under VSS を参照してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この値は Windows Server 2008 R2 および Windows 7 まではサポートされません。代わりに E_UNEXPECTED が使用されます。

解説(Remarks)

返される IVssEnumMgmtObject 列挙子オブジェクトには、VSS_MGMT_OBJECT_PROP 構造体の中の VSS_MGMT_OBJECT_UNION 共用体の中に VSS_DIFF_AREA_PROP 構造体が格納されます。

vtbl 7 HRESULT QueryDiffAreasOnVolume(WORD* pwszVolumeName, IVssEnumMgmtObject** ppEnum)

指定したボリューム上に物理的に存在するシャドウコピー記憶域を照会します。

pwszVolumeNameWORD*in

シャドウコピー記憶域を含むボリュームの名前です。

ボリューム名は次のいずれかの形式で指定し、末尾に円記号 (\) を含める必要があります。

  • マウントされたフォルダーのパス (例: Y:\MountX\)
  • ドライブ文字 (例: D:\)
  • \\?\Volume{GUID}\ 形式のボリューム GUID パス (GUID はボリュームを識別します)
ppEnumIVssEnumMgmtObject**outIVssEnumMgmtObject インターフェイス ポインターのアドレスです。戻り時に初期化されます。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

このメソッドは次のいずれかの値を返します。

意味
S_OK
シャドウコピー記憶域を正常に照会しました。
E_ACCESSDENIED
呼び出し元にバックアップ特権が不足しているか、管理者ではありません。
E_INVALIDARG
パラメーターのいずれかの値が有効ではありません。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_PROVIDER_VETO
プロバイダーエラーです。プロバイダーはこのエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。
VSS_E_UNEXPECTED
予期しないエラーです。エラーコードはエラーログファイルに記録されます。詳細については、 Event and Error Handling Under VSS を参照してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この値は Windows Server 2008 R2 および Windows 7 まではサポートされません。代わりに E_UNEXPECTED が使用されます。

解説(Remarks)

返される IVssEnumMgmtObject 列挙子オブジェクトには、 VSS_MGMT_OBJECT_PROP 構造体の中の VSS_MGMT_OBJECT_UNION 共用体の中に VSS_DIFF_AREA_PROP 構造体が格納されます。

vtbl 8 HRESULT QueryDiffAreasForSnapshot(GUID SnapshotId, IVssEnumMgmtObject** ppEnum)

入力されたシャドウコピーに関連付けられた元のボリュームが使用しているシャドウコピー記憶域を照会します。

SnapshotIdGUIDinシャドウコピーの VSS_ID です。
ppEnumIVssEnumMgmtObject**outIVssEnumMgmtObject インターフェイス ポインターのアドレスです。戻り時に初期化されます。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

このメソッドは次のいずれかの値を返します。

意味
S_OK
シャドウコピー記憶域を正常に照会しました。
E_ACCESSDENIED
呼び出し元にバックアップ特権が不足しているか、管理者ではありません。
E_INVALIDARG
パラメーターのいずれかの値が有効ではありません。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_PROVIDER_VETO
プロバイダーエラーです。プロバイダーはこのエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。
VSS_E_UNEXPECTED
予期しないエラーです。エラーコードはエラーログファイルに記録されます。詳細については、 Event and Error Handling Under VSS を参照してください。

Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この値は Windows Server 2008 R2 および Windows 7 まではサポートされません。代わりに E_UNEXPECTED が使用されます。

解説(Remarks)

返される IVssEnumMgmtObject 列挙子オブジェクトには、 VSS_MGMT_OBJECT_PROP 構造体の中の VSS_MGMT_OBJECT_UNION 共用体の中に VSS_DIFF_AREA_PROP 構造体が格納されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IVssDifferentialSoftwareSnapshotMgmt "{214A0F28-B737-4026-B847-4F9E37D79529}"
#usecom global IVssDifferentialSoftwareSnapshotMgmt IID_IVssDifferentialSoftwareSnapshotMgmt "{}"
#comfunc global IVssDifferentialSoftwareSnapshotMgmt_AddDiffArea                        3 var,var,int64
#comfunc global IVssDifferentialSoftwareSnapshotMgmt_ChangeDiffAreaMaximumSize          4 var,var,int64
#comfunc global IVssDifferentialSoftwareSnapshotMgmt_QueryVolumesSupportedForDiffAreas  5 var,sptr
#comfunc global IVssDifferentialSoftwareSnapshotMgmt_QueryDiffAreasForVolume            6 var,sptr
#comfunc global IVssDifferentialSoftwareSnapshotMgmt_QueryDiffAreasOnVolume             7 var,sptr
#comfunc global IVssDifferentialSoftwareSnapshotMgmt_QueryDiffAreasForSnapshot          8 int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。