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

IVssFileShareSnapshotProvider

COM
IIDc8636060-7c2e-11df-8c4a-0800200c9a66継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

。 (IVssFileShareSnapshotProvider)

メソッド 8

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

vtbl 3 HRESULT SetContext(INT lContext)

以降のシャドウコピー関連の操作に使用するコンテキストを設定します。

lContextINTin設定するコンテキスト。コンテキストには、_VSS_SNAPSHOT_CONTEXT のサポートされる値のいずれか、または _VSS_VOLUME_SNAPSHOT_ATTRIBUTES_VSS_SNAPSHOT_CONTEXT の値のサポートされる組み合わせを指定する必要があります。

戻り値

このメソッドの有効な戻り値は次のとおりです。

説明
S_OK
コンテキストが正常に設定されました。
E_ACCESSDENIED
呼び出し元に十分なバックアップ特権がないか、管理者ではありません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_BAD_STATE
コンテキストは凍結されており、変更できません。

解説(Remarks)

VSS シャドウコピーの既定のコンテキストは VSS_CTX_BACKUP です。

Windows XP: サポートされるコンテキストは既定のコンテキストである VSS_CTX_BACKUP のみです。そのため、Windows XP で SetContext を呼び出すと E_NOTIMPL が返されます。

SetContext で設定されるコンテキストが、 シャドウコピーの作成および管理方法にどのように影響するかについては、 Implementation Details for Creating Shadow Copies を参照してください。

許可されるシャドウコピーのコンテキストの詳細については、 _VSS_SNAPSHOT_CONTEXT および _VSS_VOLUME_SNAPSHOT_ATTRIBUTES を参照してください。

vtbl 4 HRESULT GetSnapshotProperties(GUID SnapshotId, VSS_SNAPSHOT_PROP* pProp)

ファイル共有スナップショットの VSS_SNAPSHOT_PROP 構造体を取得します。

SnapshotIdGUIDinシャドウコピー識別子。
pPropVSS_SNAPSHOT_PROP*outシャドウコピーのプロパティを受け取る、呼び出し元が割り当てた VSS_SNAPSHOT_PROP 構造体のアドレス。この構造体のメンバーを設定する責任はプロバイダーにあります。m_pwszExposedNamem_pwszExposedPath を除くすべてのメンバーが必須であり、これら 2 つはプロバイダーが NULL に設定できます。プロバイダーは、構造体内で設定するすべての文字列メンバーのメモリを割り当てます。構造体が不要になった際には、呼び出し元が VssFreeSnapshotProperties 関数を呼び出してこれらの文字列を解放する必要があります。

戻り値

このメソッドの有効な戻り値は次のとおりです。

説明
S_OK
要求された情報が正常に返されました。
E_ACCESSDENIED
呼び出し元に十分なバックアップ特権がないか、管理者ではありません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_OBJECT_NOT_FOUND
指定されたボリュームが見つかりませんでした。
VSS_E_PROVIDER_VETO
プロバイダーエラー。プロバイダーがエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。
VSS_E_UNEXPECTED
予期しないエラー。エラーコードはエラーログファイルに記録されます。詳細については、 Event and Error Handling Under VSS を参照してください。

解説(Remarks)

呼び出し元は、GetSnapshotProperties メソッドを呼び出す前に、VSS_SNAPSHOT_PROP 構造体の内容をゼロに設定する必要があります。

VSS_SNAPSHOT_PROP 構造体内の文字列の割り当てと解放は、プロバイダーの責任です。

VSS コーディネーターは、スナップショットのアクセスパス (ファイル共有スナップショットの場合は UNC パス) を取得するために、スナップショット作成の PostSnapshot フェーズでこのメソッドを呼び出します。コーディネーターは、PreFinalCommitSnapshots の後、ライターの PostSnapshot を呼び出す前に、このメソッドを呼び出します。

vtbl 5 HRESULT Query(GUID QueriedObjectId, VSS_OBJECT_TYPE eQueriedObjectType, VSS_OBJECT_TYPE eReturnedObjectsType, IVssEnumObject** ppEnum)

アプリケーションサーバーで利用可能なすべてのファイル共有スナップショットについて、VSS_SNAPSHOT_PROP 構造体の列挙を取得します。

QueriedObjectIdGUIDinシステム用に予約されています。このパラメーターの値は GUID_NULL でなければなりません。
eQueriedObjectTypeVSS_OBJECT_TYPEinシステム用に予約されています。このパラメーターの値は VSS_OBJECT_NONE でなければなりません。
eReturnedObjectsTypeVSS_OBJECT_TYPEinシステム用に予約されています。このパラメーターの値は VSS_OBJECT_SNAPSHOT でなければなりません。
ppEnumIVssEnumObject**outIVssEnumObject インターフェイスポインターのアドレス。 戻り時に初期化されます。呼び出し元はこのインターフェイスを解放する必要があります。このパラメーターは必須であり、null にはできません。

戻り値

このメソッドの有効な戻り値は次のとおりです。

説明
S_OK
クエリ操作が成功しました。
E_ACCESSDENIED
呼び出し元に十分なバックアップ特権がないか、管理者ではありません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_PROVIDER_VETO
プロバイダーエラー。プロバイダーがエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。

解説(Remarks)

このメソッドは通常、リクエスターが発行したスナップショットのクエリ操作に応じて呼び出されます。

ppEnum パラメーターを通じて返される IVssEnumObject インターフェイスに対して IVssEnumObject::Next メソッドを呼び出すと、 各シャドウコピーに対応する VSS_SNAPSHOT_PROP 構造体を含む VSS_OBJECT_PROP 構造体が返されます。

vtbl 6 HRESULT DeleteSnapshots(GUID SourceObjectId, VSS_OBJECT_TYPE eSourceObjectType, BOOL bForceDelete, INT* plDeletedSnapshots, GUID* pNondeletedSnapshotID)

特定のスナップショット、または指定されたスナップショットセット内のすべてのスナップショットを削除します。

SourceObjectIdGUIDin削除するシャドウコピーまたはシャドウコピーセットの識別子。
eSourceObjectTypeVSS_OBJECT_TYPEin削除するオブジェクトの種類。このパラメーターの値は VSS_OBJECT_SNAPSHOT または VSS_OBJECT_SNAPSHOT_SET です。
bForceDeleteBOOLinこのパラメーターの値が TRUE の場合、プロバイダーはシャドウコピーまたはシャドウコピーセット内のシャドウコピーを削除するために可能な限りの処理を行います。FALSE の場合、追加の処理は行われません。
plDeletedSnapshotsINT*out削除されたシャドウコピーの数を受け取る変数へのポインター。
pNondeletedSnapshotIDGUID*outエラーが発生した場合、このパラメーターは削除できなかった最初のシャドウコピーの識別子へのポインターを受け取ります。それ以外の場合は GUID_NULL を指します。

戻り値

このメソッドの有効な戻り値は次のとおりです。

説明
S_OK
シャドウコピーが正常に削除されました。
E_ACCESSDENIED
呼び出し元に十分なバックアップ特権がないか、管理者ではありません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_OBJECT_NOT_FOUND
指定されたシャドウコピーが見つかりませんでした。
VSS_E_PROVIDER_VETO
プロバイダーエラー。プロバイダーがエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。

解説(Remarks)

VSS コーディネーターは、スナップショットの自動解放処理の一環としてこのメソッドを呼び出します。また、リクエスター主導の削除操作に応じても呼び出されます。

vtbl 7 HRESULT BeginPrepareSnapshot(GUID SnapshotSetId, GUID SnapshotId, WORD* pwszSharePath, INT lNewContext, GUID ProviderId)

VSS は、シャドウコピーセットに追加される各シャドウコピーに対してこのメソッドを呼び出します。 (IVssFileShareSnapshotProvider.BeginPrepareSnapshot)

SnapshotSetIdGUIDinシャドウコピーセット識別子。
SnapshotIdGUIDin作成するシャドウコピーの識別子。
pwszSharePathWORD*inファイル共有パス。
lNewContextINTinシャドウコピーセットのコンテキスト。このコンテキストは _VSS_VOLUME_SNAPSHOT_ATTRIBUTES 値のビットマスクで構成されます。
ProviderIdGUIDinプロバイダー ID。

戻り値

このメソッドの有効な戻り値は次のとおりです。

説明
S_OK
シャドウコピーが正常に作成されました。
E_ACCESSDENIED
呼び出し元に十分なバックアップ特権がないか、管理者ではありません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_OBJECT_NOT_FOUND
指定されたボリュームが見つかりませんでした。
VSS_E_PROVIDER_VETO
プロバイダーエラー。プロバイダーがエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。
VSS_E_UNSUPPORTED_CONTEXT
指定されたコンテキストはサポートされていません。
VSS_E_VOLUME_NOT_SUPPORTED_BY_PROVIDER
プロバイダーは指定されたボリュームをサポートしていません。
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 が使用されます。

vtbl 8 HRESULT IsPathSupported(WORD* pwszSharePath, BOOL* pbSupportedByThisProvider)

指定された Universal Naming Convention (UNC) パスがこのプロバイダーでサポートされているかどうかを判定します。

pwszSharePathWORD*inファイル共有へのパス。
pbSupportedByThisProviderBOOL*out指定されたボリュームでシャドウコピーがサポートされている場合、このパラメーターは TRUE を受け取ります。それ以外の場合は FALSE を受け取ります。

戻り値

このメソッドの有効な戻り値は次のとおりです。

説明
S_OK
要求された情報が正常に返されました。
E_ACCESSDENIED
呼び出し元に十分なバックアップ特権がないか、管理者ではありません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
VSS_E_NESTED_VOLUME_LIMIT
指定されたボリュームは入れ子が深すぎるため、VSS 操作に参加できません。

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

E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_OBJECT_NOT_FOUND
指定されたボリュームが見つかりませんでした。
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)

VSS コーディネーターは、スナップショットの作成にどのプロバイダーを使用するかを判断するため、AddToSnapshotSet の一環としてこのメソッドを呼び出します。

vtbl 9 HRESULT IsPathSnapshotted(WORD* pwszSharePath, BOOL* pbSnapshotsPresent, INT* plSnapshotCompatibility)

指定された Universal Naming Convention (UNC) パスに現在スナップショットが存在するかどうかを判定します。

pwszSharePathWORD*inファイル共有へのパス。
pbSnapshotsPresentBOOL*outボリュームにシャドウコピーが存在する場合、このパラメーターは TRUE を受け取ります。存在しない場合は FALSE を受け取ります。
plSnapshotCompatibilityINT*outVSS_SNAPSHOT_COMPATIBILITY 値のビットマスク。指定されたボリュームにシャドウコピーが存在する場合に、そのボリュームで特定のボリューム制御操作やファイル I/O 操作が無効化されているかどうかを示します。

戻り値

このメソッドの有効な戻り値は次のとおりです。

説明
S_OK
要求された情報が正常に返されました。
E_ACCESSDENIED
呼び出し元に十分なバックアップ特権がないか、管理者ではありません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_OBJECT_NOT_FOUND
指定されたボリュームが見つかりませんでした。
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 が使用されます。

vtbl 10 HRESULT SetSnapshotProperty(GUID SnapshotId, VSS_SNAPSHOT_PROPERTY_ID eSnapshotPropertyId, VARIANT vProperty)

指定されたスナップショットのプロパティ値を設定するようプロバイダーに要求します。

SnapshotIdGUIDinシャドウコピー識別子。このパラメーターは必須であり、GUID_NULL にはできません。
eSnapshotPropertyIdVSS_SNAPSHOT_PROPERTY_IDinシャドウコピーに設定するプロパティを指定する VSS_SNAPSHOT_PROPERTY_ID 値。
vPropertyVARIANTinプロパティに設定する値。シャドウコピーに設定できるプロパティの有効なデータ型と説明については、VSS_SNAPSHOT_PROP 構造体を参照してください。

戻り値

このメソッドの有効な戻り値は次のとおりです。

説明
S_OK
プロパティが正常に設定されました。
E_ACCESSDENIED
呼び出し元に十分なバックアップ特権がないか、管理者ではありません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_OBJECT_NOT_FOUND
指定されたシャドウコピーが見つかりませんでした。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IVssFileShareSnapshotProvider "{C8636060-7C2E-11DF-8C4A-0800200C9A66}"
#usecom global IVssFileShareSnapshotProvider IID_IVssFileShareSnapshotProvider "{}"
#comfunc global IVssFileShareSnapshotProvider_SetContext             3 int
#comfunc global IVssFileShareSnapshotProvider_GetSnapshotProperties  4 int,var
#comfunc global IVssFileShareSnapshotProvider_Query                  5 int,int,int,sptr
#comfunc global IVssFileShareSnapshotProvider_DeleteSnapshots        6 int,int,int,var,var
#comfunc global IVssFileShareSnapshotProvider_BeginPrepareSnapshot   7 int,int,var,int,int
#comfunc global IVssFileShareSnapshotProvider_IsPathSupported        8 var,var
#comfunc global IVssFileShareSnapshotProvider_IsPathSnapshotted      9 var,var,var
#comfunc global IVssFileShareSnapshotProvider_SetSnapshotProperty    10 int,int,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。