Win32 API 日本語リファレンス
ホームUI.Shell › IPreviousVersionsInfo

IPreviousVersionsInfo

COM
IID76e54780-ad74-48e3-a695-3ba9a0aff10d継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Windows Server 2003 で提供されるシャドウ コピー技術によって、復元を目的として保存されたサーバー上のファイルやフォルダーの以前のバージョンの有無を確認するメソッドを公開します。

解説(Remarks)

このインターフェイスの CLSID、IID、および定義を次の例に示します。

// {596AB062-B4D2-4215-9F74-E9109B0A8153}
const CLSID CLSID_PreviousVersions = {0x596AB062, 0xB4D2, 0x4215, 
                             {0x9F, 0x74, 0xE9, 0x10, 0x9B, 0x0A, 0x81, 0x53}};

// {76e54780-ad74-48e3-a695-3ba9a0aff10d}
const IID IID_IPreviousVersionsInfo = {0x76E54780, 0xAD74, 0x48E3, 
                             {0xA6, 0x95, 0x3B, 0xA9, 0xA0, 0xAF, 0xF1, 0x0D}};

MIDL_INTERFACE("76e54780-ad74-48e3-a695-3ba9a0aff10d")
IPreviousVersionsInfo : public IUnknown
{
public:
    virtual HRESULT STDMETHODCALLTYPE AreSnapshotsAvailable( 
        /* [string][in] */ LPCWSTR pszPath,
        /* [in] */ BOOL fOkToBeSlow,
        /* [retval][out] */ BOOL *pfAvailable) = 0;
};

シャドウ コピー技術は、古いバージョンが削除されない限りその完全なコピーを保存するのではなく、変更されたビットのみを保存する点に注意してください。

メソッド 1

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

vtbl 3 HRESULT AreSnapshotsAvailable(LPWSTR pszPath, BOOL fOkToBeSlow, BOOL* pfAvailable)

システムが以前に記録した Windows Server 2003 のボリューム イメージが利用可能かどうかを照会します。

pszPathLPWSTRin

対象ボリューム上のファイルまたはフォルダーへの完全修飾パスを格納した、null 終端の Unicode 文字列です。

注意 現在サポートされているのは、Windows Server 2003 のボリューム上に保存されたファイルおよびフォルダーへのパスのみです。
fOkToBeSlowBOOLin

保存されたボリューム イメージの有無を判断するためにサーバーへ問い合わせるかどうかを指定するブール値です。詳細については、「解説」セクションを参照してください。

TRUE

結果がまだキャッシュされていない場合は、サーバーへ問い合わせます。

FALSE

サーバーへ問い合わせません。代わりにキャッシュされた結果を使用します。

pfAvailableBOOL*out

結果を格納するブール変数へのポインターです。この値はメソッド呼び出しが成功した場合にのみ有効であり、それ以外の場合は未定義です。

TRUE

pszPath で指定されたファイルまたはフォルダーが存在するボリュームの保存済みイメージが、少なくとも 1 つ利用可能です。

FALSE

ボリューム イメージは保存されていません。

戻り値

型: HRESULT

以下を含む(ただしこれらに限定されない)標準のエラー値を返します。

戻り値 説明
S_OK
成功しました。
E_PENDING
fOkToBeSlowFALSE であり、かつ結果が現在キャッシュされていません。

解説(Remarks)

IPreviousVersionsInfo::AreSnapshotsAvailable をファイルまたはフォルダーに対して呼び出した場合、その結果は特定のファイルやフォルダーに対するロールバック情報が利用可能であることを示すものではなく、ボリューム全体のスナップショットが利用可能であることを示すにすぎません。この結果はキャッシュされ、同じボリューム上に保存された任意の対象について照会する後続の呼び出しは、サーバーへ再度問い合わせる代わりに、キャッシュされた結果へほとんどパフォーマンス上のオーバーヘッドなくアクセスします。

サーバーの応答がメモリにキャッシュされると、fOkToBeSlowTRUE であっても後続の呼び出しはサーバーへ問い合わせません。fOkToBeSlowFALSE であり、かつサーバーの応答が以前の呼び出しでまだキャッシュされていない場合、このメソッドは E_PENDING を返します。その場合は、fOkToBeSlowTRUE に設定して IPreviousVersionsInfo::AreSnapshotsAvailable を再度呼び出し、サーバーへ問い合わせてください。

パフォーマンスを向上させるため、このメソッドを呼び出す UI スレッドでは常に fOkToBeSlowFALSE に設定する必要があります。メソッドが E_PENDING を返した場合は、次の手順に従ってください。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IPreviousVersionsInfo "{76E54780-AD74-48E3-A695-3BA9A0AFF10D}"
#usecom global IPreviousVersionsInfo IID_IPreviousVersionsInfo "{}"
#comfunc global IPreviousVersionsInfo_AreSnapshotsAvailable  3 wstr,int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。