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

IVssSnapshotMgmt

COM
IIDfa7df749-66e7-4986-a27f-e2f04ae53772継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

シャドウコピープロバイダーをさらに構成するためのインターフェイスを返すメソッドを提供します。

解説(Remarks)

IVssSnapshotMgmt インターフェイスは DCOM を使用してリモートから呼び出すことができます。呼び出し元は、リモートコンピューター上のローカル Administrators グループのメンバーである必要があります。

#include "vss.h"
#include "vsmgmt.h"

void main()
{
    // software-provider id is {b5946137-7b9f-4925-af80-51abd60b20d5}
    const VSS_ID ProviderId = { 0xb5946137, 
                                0x7b9f, 
                                0x4925, 
                              { 0xaf,0x80,0x51,0xab,0xd6,0xb,0x20,0xd5 } };

    HRESULT                               hr        = S_OK;
    IVssSnapshotMgmt*                     pMgmt     = NULL;
    IVssDifferentialSoftwareSnapshotMgmt* pDiffMgmt = NULL;

    hr = CoCreateInstance(CLSID_VssSnapshotMgmt,
                          NULL,
                          CLSCTX_ALL,
                          IID_IVssSnapshotMgmt,
                          (void**)&(pMgmt));
    if (FAILED(hr)) 
    {
        // error handling code
    }

    hr = pMgmt->GetProviderMgmtInterface(ProviderId, 
                                         IID_IVssDifferentialSoftwareSnapshotMgmt, 
                                         (IUnknown**)&pDiffMgmt);
    if (FAILED(hr)) 
    {
        pMgmt->Release();
    }

    // processing code

    pDiffMgmt->Release();
    pMgmt->Release();
}

メソッド 3

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

vtbl 3 HRESULT GetProviderMgmtInterface(GUID ProviderId, GUID* InterfaceId, IUnknown** ppItf)

システムプロバイダーをさらに構成するためのインターフェイスを返します。

ProviderIdGUIDinシステムプロバイダーを指定する必要があります。システムプロバイダーの VSS_ID{b5946137-7b9f-4925-af80-51abd60b20d5} です。
InterfaceIdGUID*inIVssDifferentialSoftwareSnapshotMgmt インターフェイスを表す IID_IVssDifferentialSoftwareSnapshotMgmt である必要があります。
ppItfIUnknown**out返されるインターフェイスポインターが格納されるインターフェイスポインターのアドレスです。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 4 HRESULT QueryVolumesSupportedForSnapshots(GUID ProviderId, INT lContext, IVssEnumMgmtObject** ppEnum)

システム用に予約されています。(IVssSnapshotMgmt.QueryVolumesSupportedForSnapshots)

ProviderIdGUIDinシステム用に予約されています。使用しないでください。
lContextINTinシステム用に予約されています。使用しないでください。
ppEnumIVssEnumMgmtObject**outシステム用に予約されています。使用しないでください。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 5 HRESULT QuerySnapshotsByVolume(WORD* pwszVolumeName, GUID ProviderId, IVssEnumObject** ppEnum)

システム用に予約されています。(IVssSnapshotMgmt.QuerySnapshotsByVolume)

pwszVolumeNameWORD*inシステム用に予約されています。使用しないでください。
ProviderIdGUIDinシステム用に予約されています。使用しないでください。
ppEnumIVssEnumObject**outシステム用に予約されています。使用しないでください。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IVssSnapshotMgmt "{FA7DF749-66E7-4986-A27F-E2F04AE53772}"
#usecom global IVssSnapshotMgmt IID_IVssSnapshotMgmt "{0B5A2C52-3EB9-470A-96E2-6C6D4570E40F}"
#comfunc global IVssSnapshotMgmt_GetProviderMgmtInterface           3 int,var,sptr
#comfunc global IVssSnapshotMgmt_QueryVolumesSupportedForSnapshots  4 int,int,sptr
#comfunc global IVssSnapshotMgmt_QuerySnapshotsByVolume             5 var,int,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。