IVssFileShareSnapshotProvider
COM公式ドキュメント
。 (IVssFileShareSnapshotProvider)
メソッド 8
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
以降のシャドウコピー関連の操作に使用するコンテキストを設定します。
| lContext | INT | in | 設定するコンテキスト。コンテキストには、_VSS_SNAPSHOT_CONTEXT のサポートされる値のいずれか、または _VSS_VOLUME_SNAPSHOT_ATTRIBUTES と _VSS_SNAPSHOT_CONTEXT の値のサポートされる組み合わせを指定する必要があります。 |
戻り値
このメソッドの有効な戻り値は次のとおりです。
| 値 | 説明 |
|---|---|
| コンテキストが正常に設定されました。 | |
| 呼び出し元に十分なバックアップ特権がないか、管理者ではありません。 | |
| パラメーター値のいずれかが無効です。 | |
| 呼び出し元のメモリまたはその他のシステムリソースが不足しています。 | |
| コンテキストは凍結されており、変更できません。 |
解説(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 を参照してください。
ファイル共有スナップショットの VSS_SNAPSHOT_PROP 構造体を取得します。
| SnapshotId | GUID | in | シャドウコピー識別子。 |
| pProp | VSS_SNAPSHOT_PROP* | out | シャドウコピーのプロパティを受け取る、呼び出し元が割り当てた VSS_SNAPSHOT_PROP 構造体のアドレス。この構造体のメンバーを設定する責任はプロバイダーにあります。m_pwszExposedName と m_pwszExposedPath を除くすべてのメンバーが必須であり、これら 2 つはプロバイダーが NULL に設定できます。プロバイダーは、構造体内で設定するすべての文字列メンバーのメモリを割り当てます。構造体が不要になった際には、呼び出し元が VssFreeSnapshotProperties 関数を呼び出してこれらの文字列を解放する必要があります。 |
戻り値
このメソッドの有効な戻り値は次のとおりです。
| 値 | 説明 |
|---|---|
| 要求された情報が正常に返されました。 | |
| 呼び出し元に十分なバックアップ特権がないか、管理者ではありません。 | |
| パラメーター値のいずれかが無効です。 | |
| 呼び出し元のメモリまたはその他のシステムリソースが不足しています。 | |
| 指定されたボリュームが見つかりませんでした。 | |
| プロバイダーエラー。プロバイダーがエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。 | |
| 予期しないエラー。エラーコードはエラーログファイルに記録されます。詳細については、 Event and Error Handling Under VSS を参照してください。 |
解説(Remarks)
呼び出し元は、GetSnapshotProperties メソッドを呼び出す前に、VSS_SNAPSHOT_PROP 構造体の内容をゼロに設定する必要があります。
VSS_SNAPSHOT_PROP 構造体内の文字列の割り当てと解放は、プロバイダーの責任です。
VSS コーディネーターは、スナップショットのアクセスパス (ファイル共有スナップショットの場合は UNC パス) を取得するために、スナップショット作成の PostSnapshot フェーズでこのメソッドを呼び出します。コーディネーターは、PreFinalCommitSnapshots の後、ライターの PostSnapshot を呼び出す前に、このメソッドを呼び出します。
アプリケーションサーバーで利用可能なすべてのファイル共有スナップショットについて、VSS_SNAPSHOT_PROP 構造体の列挙を取得します。
| QueriedObjectId | GUID | in | システム用に予約されています。このパラメーターの値は GUID_NULL でなければなりません。 |
| eQueriedObjectType | VSS_OBJECT_TYPE | in | システム用に予約されています。このパラメーターの値は VSS_OBJECT_NONE でなければなりません。 |
| eReturnedObjectsType | VSS_OBJECT_TYPE | in | システム用に予約されています。このパラメーターの値は VSS_OBJECT_SNAPSHOT でなければなりません。 |
| ppEnum | IVssEnumObject** | out | IVssEnumObject インターフェイスポインターのアドレス。 戻り時に初期化されます。呼び出し元はこのインターフェイスを解放する必要があります。このパラメーターは必須であり、null にはできません。 |
戻り値
このメソッドの有効な戻り値は次のとおりです。
| 値 | 説明 |
|---|---|
| クエリ操作が成功しました。 | |
| 呼び出し元に十分なバックアップ特権がないか、管理者ではありません。 | |
| パラメーター値のいずれかが無効です。 | |
| 呼び出し元のメモリまたはその他のシステムリソースが不足しています。 | |
| プロバイダーエラー。プロバイダーがエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。 |
解説(Remarks)
このメソッドは通常、リクエスターが発行したスナップショットのクエリ操作に応じて呼び出されます。
ppEnum パラメーターを通じて返される IVssEnumObject インターフェイスに対して IVssEnumObject::Next メソッドを呼び出すと、 各シャドウコピーに対応する VSS_SNAPSHOT_PROP 構造体を含む VSS_OBJECT_PROP 構造体が返されます。
特定のスナップショット、または指定されたスナップショットセット内のすべてのスナップショットを削除します。
| SourceObjectId | GUID | in | 削除するシャドウコピーまたはシャドウコピーセットの識別子。 |
| eSourceObjectType | VSS_OBJECT_TYPE | in | 削除するオブジェクトの種類。このパラメーターの値は VSS_OBJECT_SNAPSHOT または VSS_OBJECT_SNAPSHOT_SET です。 |
| bForceDelete | BOOL | in | このパラメーターの値が TRUE の場合、プロバイダーはシャドウコピーまたはシャドウコピーセット内のシャドウコピーを削除するために可能な限りの処理を行います。FALSE の場合、追加の処理は行われません。 |
| plDeletedSnapshots | INT* | out | 削除されたシャドウコピーの数を受け取る変数へのポインター。 |
| pNondeletedSnapshotID | GUID* | out | エラーが発生した場合、このパラメーターは削除できなかった最初のシャドウコピーの識別子へのポインターを受け取ります。それ以外の場合は GUID_NULL を指します。 |
戻り値
このメソッドの有効な戻り値は次のとおりです。
| 値 | 説明 |
|---|---|
| シャドウコピーが正常に削除されました。 | |
| 呼び出し元に十分なバックアップ特権がないか、管理者ではありません。 | |
| パラメーター値のいずれかが無効です。 | |
| 呼び出し元のメモリまたはその他のシステムリソースが不足しています。 | |
| 指定されたシャドウコピーが見つかりませんでした。 | |
| プロバイダーエラー。プロバイダーがエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。 |
解説(Remarks)
VSS コーディネーターは、スナップショットの自動解放処理の一環としてこのメソッドを呼び出します。また、リクエスター主導の削除操作に応じても呼び出されます。
VSS は、シャドウコピーセットに追加される各シャドウコピーに対してこのメソッドを呼び出します。 (IVssFileShareSnapshotProvider.BeginPrepareSnapshot)
| SnapshotSetId | GUID | in | シャドウコピーセット識別子。 |
| SnapshotId | GUID | in | 作成するシャドウコピーの識別子。 |
| pwszSharePath | WORD* | in | ファイル共有パス。 |
| lNewContext | INT | in | シャドウコピーセットのコンテキスト。このコンテキストは _VSS_VOLUME_SNAPSHOT_ATTRIBUTES 値のビットマスクで構成されます。 |
| ProviderId | GUID | in | プロバイダー ID。 |
戻り値
このメソッドの有効な戻り値は次のとおりです。
| 値 | 説明 |
|---|---|
| シャドウコピーが正常に作成されました。 | |
| 呼び出し元に十分なバックアップ特権がないか、管理者ではありません。 | |
| パラメーター値のいずれかが無効です。 | |
| 呼び出し元のメモリまたはその他のシステムリソースが不足しています。 | |
| 指定されたボリュームが見つかりませんでした。 | |
| プロバイダーエラー。プロバイダーがエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。 | |
| 指定されたコンテキストはサポートされていません。 | |
| プロバイダーは指定されたボリュームをサポートしていません。 | |
|
予期しないエラー。エラーコードはエラーログファイルに記録されます。詳細については、
Event and Error Handling Under VSS を参照してください。
Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この値は Windows Server 2008 R2 および Windows 7 までサポートされません。代わりに E_UNEXPECTED が使用されます。 |
指定された Universal Naming Convention (UNC) パスがこのプロバイダーでサポートされているかどうかを判定します。
| pwszSharePath | WORD* | in | ファイル共有へのパス。 |
| pbSupportedByThisProvider | BOOL* | out | 指定されたボリュームでシャドウコピーがサポートされている場合、このパラメーターは TRUE を受け取ります。それ以外の場合は FALSE を受け取ります。 |
戻り値
このメソッドの有効な戻り値は次のとおりです。
| 値 | 説明 |
|---|---|
| 要求された情報が正常に返されました。 | |
| 呼び出し元に十分なバックアップ特権がないか、管理者ではありません。 | |
| パラメーター値のいずれかが無効です。 | |
|
指定されたボリュームは入れ子が深すぎるため、VSS 操作に参加できません。
Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この戻り値はサポートされていません。 |
|
| 呼び出し元のメモリまたはその他のシステムリソースが不足しています。 | |
| 指定されたボリュームが見つかりませんでした。 | |
| プロバイダーエラー。プロバイダーがエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。 | |
|
予期しないエラー。エラーコードはエラーログファイルに記録されます。詳細については、
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 の一環としてこのメソッドを呼び出します。
指定された Universal Naming Convention (UNC) パスに現在スナップショットが存在するかどうかを判定します。
| pwszSharePath | WORD* | in | ファイル共有へのパス。 |
| pbSnapshotsPresent | BOOL* | out | ボリュームにシャドウコピーが存在する場合、このパラメーターは TRUE を受け取ります。存在しない場合は FALSE を受け取ります。 |
| plSnapshotCompatibility | INT* | out | VSS_SNAPSHOT_COMPATIBILITY 値のビットマスク。指定されたボリュームにシャドウコピーが存在する場合に、そのボリュームで特定のボリューム制御操作やファイル I/O 操作が無効化されているかどうかを示します。 |
戻り値
このメソッドの有効な戻り値は次のとおりです。
| 値 | 説明 |
|---|---|
| 要求された情報が正常に返されました。 | |
| 呼び出し元に十分なバックアップ特権がないか、管理者ではありません。 | |
| パラメーター値のいずれかが無効です。 | |
| 呼び出し元のメモリまたはその他のシステムリソースが不足しています。 | |
| 指定されたボリュームが見つかりませんでした。 | |
| プロバイダーエラー。プロバイダーがエラーをイベントログに記録しました。詳細については、 Event and Error Handling Under VSS を参照してください。 | |
|
予期しないエラー。エラーコードはエラーログファイルに記録されます。詳細については、
Event and Error Handling Under VSS を参照してください。
Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この値は Windows Server 2008 R2 および Windows 7 までサポートされません。代わりに E_UNEXPECTED が使用されます。 |
指定されたスナップショットのプロパティ値を設定するようプロバイダーに要求します。
| SnapshotId | GUID | in | シャドウコピー識別子。このパラメーターは必須であり、GUID_NULL にはできません。 |
| eSnapshotPropertyId | VSS_SNAPSHOT_PROPERTY_ID | in | シャドウコピーに設定するプロパティを指定する VSS_SNAPSHOT_PROPERTY_ID 値。 |
| vProperty | VARIANT | in | プロパティに設定する値。シャドウコピーに設定できるプロパティの有効なデータ型と説明については、VSS_SNAPSHOT_PROP 構造体を参照してください。 |
戻り値
このメソッドの有効な戻り値は次のとおりです。
| 値 | 説明 |
|---|---|
| プロパティが正常に設定されました。 | |
| 呼び出し元に十分なバックアップ特権がないか、管理者ではありません。 | |
| パラメーター値のいずれかが無効です。 | |
| 呼び出し元のメモリまたはその他のシステムリソースが不足しています。 | |
| 指定されたシャドウコピーが見つかりませんでした。 |
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 指定が可能。#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,sptr #comfunc global IVssFileShareSnapshotProvider_Query 5 int,int,int,sptr #comfunc global IVssFileShareSnapshotProvider_DeleteSnapshots 6 int,int,int,sptr,sptr #comfunc global IVssFileShareSnapshotProvider_BeginPrepareSnapshot 7 int,int,sptr,int,int #comfunc global IVssFileShareSnapshotProvider_IsPathSupported 8 sptr,sptr #comfunc global IVssFileShareSnapshotProvider_IsPathSnapshotted 9 sptr,sptr,sptr #comfunc global IVssFileShareSnapshotProvider_SetSnapshotProperty 10 int,int,int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。