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

IVssAdmin

COM
IID77ed5996-2f63-11d3-8a39-00c04f72d8e3継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IVssAdmin インターフェイスは、VSS に登録されたプロバイダーを管理します。

メソッド 4

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

vtbl 3 HRESULT RegisterProvider(GUID pProviderId, GUID ClassId, WORD* pwszProviderName, VSS_PROVIDER_TYPE eProviderType, WORD* pwszProviderVersion, GUID ProviderVersionId)

新しいシャドウコピープロバイダーを登録します。

pProviderIdGUIDinプロバイダーを一意かつ永続的に識別する VSS_ID。いったん 定義したら、ソフトウェアのリビジョンが更新された場合でも ProviderId パラメーターは同じ値のままにしてください。ProviderId パラメーターを変更するのは、 両方のプロバイダーが同一システム上で同時に動作するほど機能が異なる場合に限ります。リクエスターは、シャドウコピーの作成時に特定のプロバイダーを使用するよう要求するために ProviderId パラメーターを使用できます。
ClassIdGUIDinプロバイダーの CLSID。
pwszProviderNameWORD*inプロバイダーの名前。
eProviderTypeVSS_PROVIDER_TYPEinプロバイダーの種類を指定する VSS_PROVIDER_TYPE 列挙値。Windows クライアント オペレーティング システムのバージョンでは VSS_PROV_HARDWARE は有効なプロバイダーの種類ではないことに注意してください。ハードウェア プロバイダーは Windows サーバー オペレーティング システムのバージョンでのみ動作します。
pwszProviderVersionWORD*inプロバイダーのバージョン。
ProviderVersionIdGUIDinこのバージョンのプロバイダーを一意に識別する VSS_IDpProviderId パラメーターと ProviderVersionId パラメーターの組み合わせは一意である必要があります。ProviderVersionId パラメーターは、別のプロバイダーの ProviderVersionId パラメーターと同じ値でもかまいません。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
プロバイダーが正常に登録されました。
E_INVALIDARG
1 つ以上のパラメーター値が無効です。たとえば、Windows クライアント オペレーティング システムのバージョンでは VSS_PROV_HARDWARE は有効なプロバイダーの種類ではありません。
E_OUTOFMEMORY
メモリまたはその他のシステム リソースが不足しています。
E_ACCESSDENIED
呼び出し元が管理者ではありません。
VSS_E_PROVIDER_ALREADY_REGISTERED
プロバイダーはこのコンピューターに既に登録されています。
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)

ハードウェア プロバイダーを更新する場合、セットアップ アプリケーションは UnregisterProvider メソッドを呼び出して 古いバージョンの登録を解除し、その後 RegisterProvider メソッドを呼び出して 更新後のプロバイダーを登録してください。

ハードウェア プロバイダーは Windows Server オペレーティング システムでのみ登録できます。
vtbl 4 HRESULT UnregisterProvider(GUID ProviderId)

既存のプロバイダーの登録を解除します。

ProviderIdGUIDinプロバイダーの VSS_ID

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
プロバイダーの登録が正常に解除されました。
VSS_E_PROVIDER_IN_USE
プロバイダーは使用中です。
VSS_E_PROVIDER_NOT_REGISTERED
プロバイダーが登録されていません。
E_OUTOFMEMORY
メモリまたはその他のシステム リソースが不足しています。
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 5 HRESULT QueryProviders(IVssEnumObject** ppEnum)

登録されているすべてのプロバイダーを照会します。

ppEnumIVssEnumObject**outIVssEnumObject インターフェイス ポインターのアドレス。 戻り時に初期化されます。呼び出し元はこのインターフェイスを解放する必要があります。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
照会が正常に返されました。
E_INVALIDARG
1 つ以上のパラメーター値が無効です。
E_OUTOFMEMORY
メモリまたはその他のシステム リソースが不足しています。
E_ACCESSDENIED
呼び出し元が管理者ではありません。
E_UNEXPECTED
予期しないエラーが発生しました。
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 が使用されます。

VSS_E_UNEXPECTED_PROVIDER_ERROR
予期しないプロバイダー エラーです。エラー コードはエラー ログに記録されます。詳細については、 Event and Error Handling Under VSS を参照してください。

解説(Remarks)

ppEnum パラメーターを通じて返される IVssEnumObject インターフェイスに対して IVssEnumObject::Next メソッドを呼び出すと、 登録されている各プロバイダーについて VSS_PROVIDER_PROP 構造体を含む VSS_OBJECT_PROP 構造体が返されます。

vtbl 6 HRESULT AbortAllSnapshotsInProgress()

このメソッドはシステム用に予約されています。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 指定が可能。