IVssAdmin
COM公式ドキュメント
IVssAdmin インターフェイスは、VSS に登録されたプロバイダーを管理します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
新しいシャドウコピープロバイダーを登録します。
| pProviderId | GUID | in | プロバイダーを一意かつ永続的に識別する VSS_ID。いったん 定義したら、ソフトウェアのリビジョンが更新された場合でも ProviderId パラメーターは同じ値のままにしてください。ProviderId パラメーターを変更するのは、 両方のプロバイダーが同一システム上で同時に動作するほど機能が異なる場合に限ります。リクエスターは、シャドウコピーの作成時に特定のプロバイダーを使用するよう要求するために ProviderId パラメーターを使用できます。 |
| ClassId | GUID | in | プロバイダーの CLSID。 |
| pwszProviderName | WORD* | in | プロバイダーの名前。 |
| eProviderType | VSS_PROVIDER_TYPE | in | プロバイダーの種類を指定する VSS_PROVIDER_TYPE 列挙値。Windows クライアント オペレーティング システムのバージョンでは VSS_PROV_HARDWARE は有効なプロバイダーの種類ではないことに注意してください。ハードウェア プロバイダーは Windows サーバー オペレーティング システムのバージョンでのみ動作します。 |
| pwszProviderVersion | WORD* | in | プロバイダーのバージョン。 |
| ProviderVersionId | GUID | in | このバージョンのプロバイダーを一意に識別する VSS_ID。 pProviderId パラメーターと ProviderVersionId パラメーターの組み合わせは一意である必要があります。ProviderVersionId パラメーターは、別のプロバイダーの ProviderVersionId パラメーターと同じ値でもかまいません。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| プロバイダーが正常に登録されました。 | |
| 1 つ以上のパラメーター値が無効です。たとえば、Windows クライアント オペレーティング システムのバージョンでは VSS_PROV_HARDWARE は有効なプロバイダーの種類ではありません。 | |
| メモリまたはその他のシステム リソースが不足しています。 | |
| 呼び出し元が管理者ではありません。 | |
| プロバイダーはこのコンピューターに既に登録されています。 | |
|
予期しないエラーです。エラー コードはエラー ログ ファイルに記録されます。詳細については、
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)
ハードウェア プロバイダーを更新する場合、セットアップ アプリケーションは UnregisterProvider メソッドを呼び出して 古いバージョンの登録を解除し、その後 RegisterProvider メソッドを呼び出して 更新後のプロバイダーを登録してください。
既存のプロバイダーの登録を解除します。
| ProviderId | GUID | in | プロバイダーの VSS_ID。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| プロバイダーの登録が正常に解除されました。 | |
| プロバイダーは使用中です。 | |
| プロバイダーが登録されていません。 | |
| メモリまたはその他のシステム リソースが不足しています。 | |
|
予期しないエラーです。エラー コードはエラー ログ ファイルに記録されます。詳細については、
Event and Error Handling Under VSS を参照してください。
Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP: この値は Windows Server 2008 R2 および Windows 7 まではサポートされません。代わりに E_UNEXPECTED が使用されます。 |
登録されているすべてのプロバイダーを照会します。
| ppEnum | IVssEnumObject** | out | IVssEnumObject インターフェイス ポインターのアドレス。 戻り時に初期化されます。呼び出し元はこのインターフェイスを解放する必要があります。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 照会が正常に返されました。 | |
| 1 つ以上のパラメーター値が無効です。 | |
| メモリまたはその他のシステム リソースが不足しています。 | |
| 呼び出し元が管理者ではありません。 | |
| 予期しないエラーが発生しました。 | |
| 予期しないプロバイダー エラーが発生しました。 | |
| 想定されるプロバイダー エラーです。プロバイダーはイベント ログにエラーを記録しました。詳細については、 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 が使用されます。 |
|
| 予期しないプロバイダー エラーです。エラー コードはエラー ログに記録されます。詳細については、 Event and Error Handling Under VSS を参照してください。 |
解説(Remarks)
ppEnum パラメーターを通じて返される IVssEnumObject インターフェイスに対して IVssEnumObject::Next メソッドを呼び出すと、 登録されている各プロバイダーについて VSS_PROVIDER_PROP 構造体を含む VSS_OBJECT_PROP 構造体が返されます。
このメソッドはシステム用に予約されています。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IVssAdmin "{77ED5996-2F63-11D3-8A39-00C04F72D8E3}" #usecom global IVssAdmin IID_IVssAdmin "{}" #comfunc global IVssAdmin_RegisterProvider 3 int,int,var,int,var,int #comfunc global IVssAdmin_UnregisterProvider 4 int #comfunc global IVssAdmin_QueryProviders 5 sptr #comfunc global IVssAdmin_AbortAllSnapshotsInProgress 6 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IVssAdmin "{77ED5996-2F63-11D3-8A39-00C04F72D8E3}" #usecom global IVssAdmin IID_IVssAdmin "{}" #comfunc global IVssAdmin_RegisterProvider 3 int,int,sptr,int,sptr,int #comfunc global IVssAdmin_UnregisterProvider 4 int #comfunc global IVssAdmin_QueryProviders 5 sptr #comfunc global IVssAdmin_AbortAllSnapshotsInProgress 6 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。