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

IVssComponent

COM
IIDd2c72c96-c121-4518-b627-e5a93d010ead継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IVssComponent インターフェイスは、リクエスターのバックアップコンポーネントドキュメントに含まれるコンポーネントに関する情報を調査および変更するためのメソッドを持つ、C++(COM ではない)インターフェイスです。

メソッド 38

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

vtbl 3 HRESULT GetLogicalPath(LPWSTR* pbstrPath)

GetLogicalPath メソッドは、このコンポーネントの論理パスを返します。

pbstrPathLPWSTR*inoutコンポーネントの論理パスを含む文字列へのポインター。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
S_FALSE
このコンポーネントには論理パスがありません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

呼び出し元は、SysFreeString を呼び出して pbstrPath パラメーターが保持するメモリを解放する必要があります。

論理パスはコンポーネントに必須ではありません。論理パスを持たないコンポーネントは S_FALSE を返します。

vtbl 4 HRESULT GetComponentType(VSS_COMPONENT_TYPE* pct)

GetComponentType メソッドは、VSS_COMPONENT_TYPE 列挙体の観点から、このコンポーネントの種類を返します。

pctVSS_COMPONENT_TYPE*inoutコンポーネントの種類を指定する VSS_COMPONENT_TYPE 列挙値を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。
vtbl 5 HRESULT GetComponentName(LPWSTR* pbstrName)

GetComponentName メソッドは、このコンポーネントの論理名を返します。

pbstrNameLPWSTR*inoutコンポーネントの論理名を含む文字列へのポインター。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
S_FALSE
このコンポーネントには名前がありません。この状態は決して発生しないはずです。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

呼び出し元は、SysFreeString を呼び出して pwszName パラメーターが保持するメモリを解放する必要があります。

vtbl 6 HRESULT GetBackupSucceeded(BOOLEAN* pbSucceeded)

GetBackupSucceeded メソッドは、選択されたコンポーネントまたはコンポーネントセットのすべてのファイルをバックアップする一連の試行の状態を、VSS_FILE_RESTORE_STATUS 列挙体として返します。

pbSucceededBOOLEAN*inoutバックアップが成功した場合は true、それ以外の場合は false を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
S_FALSE
メソッドが BackupComplete イベントより前に呼び出されたため、バックアップの成否状態は未定義です。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

このメソッドは BackupComplete イベントより前に呼び出さないでください。イベントハンドラー CVssWriter::OnBackupComplete の実装内で使用することを想定しています。

vtbl 7 HRESULT GetAlternateLocationMappingCount(DWORD* pcMappings)

GetAlternateLocationMappingCount メソッドは、リクエスターがデータの復元時に使用する代替場所マッピングの数を返します。このメソッドはライターまたはリクエスターのいずれからでも呼び出せます。

pcMappingsDWORD*inout代替場所マッピングの数を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。

解説(Remarks)

GetAlternateLocationMappingCount が返す代替場所マッピングの数は、現在のコンポーネント内のファイルだけでなく、その選択不可能なサブコンポーネント内のファイルにも起因する場合があります。

代替場所マッピングは復元操作中にのみ使用され、バックアップ操作中にのみ使用される代替パスと混同しないでください。

GetAlternateLocationMappingCount が返す数は、ファイルの復元の過程で使用される代替場所マッピングの数を指します。

この数は IVssBackupComponents::AddAlternativeLocationMapping の呼び出しによって更新されます。

vtbl 8 HRESULT GetAlternateLocationMapping(DWORD iMapping, IVssWMFiledesc** ppFiledesc)

GetAlternateLocationMapping は、ファイル復元のためのファイルセットの代替場所を返すために使用します。このメソッドはライターまたはリクエスターのいずれからでも呼び出せます。

iMappingDWORDin特定のマッピングのインデックス。このパラメーターの値は 0 から n-1 までの整数です(n は、現在のコンポーネントに関連付けられた代替場所マッピングの総数)。n の値は IVssComponent::GetAlternateLocationMappingCount によって返されます。
ppFiledescIVssWMFiledesc**outマッピング情報を格納する IVssWMFiledesc オブジェクトへの二重間接ポインター。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。
VSS_E_OBJECT_NOT_FOUND
指定された項目が見つかりませんでした。

解説(Remarks)

GetAlternateLocationMapping が返す代替場所マッピングは、現在のコンポーネント内のファイルからだけでなく、その選択不可能なサブコンポーネント内のファイルからも取得される場合があります。

IVssComponent::GetAlternateLocationMapping が返す値は、 IVssExamineWriterMetadata::GetAlternateLocationMapping が返す値とも混同しないでください。

次のいずれかに該当する場合、ファイルは常にその代替場所マッピングに復元される必要があります。 いずれの場合も、代替場所マッピングが定義されていないことはライターのエラーとなります。

次のいずれかに該当する場合、ファイルは代替場所マッピングに復元できます。

代替場所マッピングは復元操作中にのみ使用され、バックアップ操作中にのみ使用される代替パスと混同しないでください。

GetAlternateLocationMapping が返すマッピングは、ファイルの復元の過程で使用される代替場所マッピングを指します。

代替場所マッピングは、 IVssBackupComponents::AddAlternativeLocationMapping によって IVssComponent オブジェクトに追加されます。

呼び出し元は、ppMapping パラメーターが指す IVssWMFiledesc オブジェクトの使用を終えたら、IUnknown::Release を呼び出して、そのパラメーターが保持するシステムリソースを解放する必要があります。

VSS におけるバックアップおよび復元のファイルの場所の詳細については、 既定以外のバックアップおよび復元場所を参照してください。

vtbl 9 HRESULT SetBackupMetadata(LPWSTR wszData)

SetBackupMetadata メソッドは、コンポーネントにバックアップメタデータを設定します。

wszDataLPWSTRinバックアップメタデータを含む NULL 終端のワイド文字列。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
項目を正常に設定しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_OBJECT_ALREADY_EXISTS
このコンポーネントに対して、プライベートメタデータはすでに書き込まれています。
VSS_E_BAD_STATE
このメソッドがライターから呼び出されなかったか、またはライターから呼び出された場合でも、バックアップ操作中に呼び出されなかったか、BackupComplete または BackupShutdown イベントの処理中に呼び出されました。

解説(Remarks)

SetBackupMetadata は、バックアップ操作を記述するプライベートなライター固有のメタデータを設定します。

その形式は、いかなる VSS メタデータ仕様にも準拠する必要はありません。

vtbl 10 HRESULT GetBackupMetadata(LPWSTR* pbstrData)

GetBackupMetadata メソッドは、PrepareForBackup イベント中に CVssWriter::OnPrepareBackup が IVssComponent::SetBackupMetadata を使用して設定した可能性のある、プライベートなライター固有のバックアップメタデータを取得します。

pbstrDataLPWSTR*inout
  <a href="/windows/desktop/api/vswriter/nf-vswriter-cvsswriter-onpreparebackup">OnPrepareBackup</a> イベント中に追加されたバックアップメタデータを含む文字列を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
S_FALSE
このコンポーネントに関連付けられたバックアップメタデータはありません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

このメソッドは、指定されたライターのロジックに応じて、任意のタイミングで呼び出すことができます。

バックアップメタデータが設定されていない場合、 GetBackupMetadataS_FALSE を返します。

GetBackupMetadata の呼び出しが成功した場合、呼び出し元は SysFreeString 関数を呼び出して、pbstrMetadata パラメーターで返される文字列を解放する責任があります。

vtbl 11 HRESULT AddPartialFile(LPWSTR wszPath, LPWSTR wszFilename, LPWSTR wszRanges, LPWSTR wszMetadata)

AddPartialFile メソッドは、指定されたファイルの一部分のみをバックアップの対象とすること、およびその部分がどこであるかを示します。

wszPathLPWSTRin

部分ファイル操作に関係するファイルのパスを含む Null 終端のワイド文字列。

パスには環境変数(たとえば %SystemRoot%)を含めることができますが、ワイルドカード文字を含めることはできません。

パスがバックスラッシュ("")で終わる必要はありません。この情報を取得するアプリケーション側で確認する必要があります。

このパスは、コンポーネント(またはコンポーネントがコンポーネントセットを定義している場合はそのサブコンポーネントの 1 つ)内にすでにあるファイルセットのパスと一致するか、その配下にある必要があります。

wszFilenameLPWSTRin部分ファイル操作に関係するファイルの名前を含む Null 終端のワイド文字列。ファイル名(wszFilename)はワイルドカード文字(* または ?)を含むことができず、ソースパス(wszPath)を含むファイルセットのファイル指定と整合している必要があります。
wszRangesLPWSTRin

部分ファイルサポート範囲(実際にバックアップされるファイルのセクション)を構成するファイルオフセットと長さの一覧、またはそのような一覧を含むファイルの名前のいずれかを含む Null 終端のワイド文字列。

部分ファイルサポート範囲の指定は必須であり、この値を NULL にすることはできません。

wszMetadataLPWSTRin

部分ファイルの復元操作を検証するためにライターが必要とする追加のメタデータを含む Null 終端のワイド文字列。このメタデータ文字列内の情報は、リクエスターにとって不透明です。

追加のメタデータが不要な場合、この値は NULL にできます。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
項目を正常に設定しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_BAD_STATE
このメソッドがライターから呼び出されなかったか、またはライターから呼び出された場合でも、復元操作中に呼び出されませんでした。

解説(Remarks)

このメソッドを呼び出せるのはライターのみであり、ライターは復元操作中にこのメソッドを呼び出すことはできません。

範囲リスト(wszRanges)の構文は、offset1:length1, offset2:length2 という形式のコンマ区切りリストであり、各オフセットと長さはそれぞれバイトオフセットとバイト単位の長さを指定する 64 ビット整数です。オフセットと長さは、16 進数または 10 進数のいずれかの値で表現できます。

wszRange がすべてのオフセットと長さを含むファイル(範囲ファイル)を参照している場合、wszRange にはそのファイルへのフルパスのみが含まれます。

範囲ファイルは、次の形式のバイナリファイルである必要があります。

  1. バックアップが必要な個別のファイル範囲の数を示す 64 ビット整数
  2. 各範囲を 64 ビット整数のペアとして表現したもの。バックアップ対象ファイルへのオフセット(バイト単位)と、そのオフセットからバックアップするデータの長さ
いずれの場合も、範囲は、ファイルの残りの部分とは独立してバックアップされる、指定されたファイルの一部分を示します。

リクエスターは、 IVssComponent::GetPartialFile を使用して部分ファイル情報を取得し、 GetPartialFile が返すオフセットと長さの情報を使用して、復元時にディスク上のファイルのコピー内の適切な場所にバックアップされたセクションを復元できます。

AddPartialFile は、コンポーネント(またはコンポーネントがコンポーネントセットを定義している場合はそのサブコンポーネントの 1 つ)によってすでに管理されているファイルに適用できるほか、新しいファイルをコンポーネントに追加して、それが部分ファイル操作に参加することを示すこともできます。

参加させるファイルが新しいファイルであることを示す場合、そのファイルはシャドウコピーされたボリューム上に存在し、そのパス(wszPath)はコンポーネント(またはコンポーネントがコンポーネントセットを定義している場合はそのサブコンポーネントの 1 つ)内にすでにあるパスと一致するか、その配下にある必要があります。ただし、そのファイルのファイル指定(wszFileSpec)は、コンポーネント内のものと一致してはなりません。

新しく追加されたファイルは、代替場所マッピングをサポートしません。

vtbl 12 HRESULT GetPartialFileCount(DWORD* pcPartialFiles)

GetPartialFileCount メソッドは、コンポーネントに関連付けられた部分ファイルの数を返します。

pcPartialFilesDWORD*inout部分ファイルの数を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
vtbl 13 HRESULT GetPartialFile(DWORD iPartialFile, LPWSTR* pbstrPath, LPWSTR* pbstrFilename, LPWSTR* pbstrRange, LPWSTR* pbstrMetadata)

GetPartialFile メソッドは、このコンポーネントに関連付けられた部分ファイルに関する情報を返します。

iPartialFileDWORDin部分ファイルのインデックス番号。このパラメーターの値は 0 から n-1 までの整数です(n は、指定されたコンポーネントに関連付けられた部分ファイルの総数)。n の値は IVssComponent::GetPartialFileCount によって返されます。
pbstrPathLPWSTR*inout

部分ファイルのパスを含む文字列へのポインター。

このメソッドの利用者は、このパスがバックスラッシュ("")で終わるかどうかを確認する必要があります。

pbstrFilenameLPWSTR*inout部分ファイルの名前を含む文字列へのポインター。
pbstrRangeLPWSTR*inout部分ファイルサポート範囲(バックアップされたファイルのセクション)を構成するファイルオフセットと長さの一覧、またはそのような一覧を含むファイルの名前のいずれかを含む文字列へのポインター。
pbstrMetadataLPWSTR*inout

部分ファイルの復元操作を検証するためにライターが必要とする追加のメタデータを含む文字列へのポインター。このメタデータ文字列内の情報は、リクエスターにとって不透明です。

追加のメタデータは必須ではないため、pbstrMetadata は空(長さ 0)である場合もあります。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_BAD_STATE
呼び出し元が、操作に対して正しい状態(バックアップまたは復元)にありません。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。
VSS_E_OBJECT_NOT_FOUND
指定された項目が見つかりませんでした。

解説(Remarks)

呼び出し元は、SysFreeString を呼び出して、pbstrPathpbstrFilenamepbstrRangepbstrMetadata の各パラメーターが保持するメモリを解放する必要があります。

範囲は、ファイルの残りの部分とは独立してバックアップされる、指定されたファイルの一部分を示します。

範囲リスト(pbstrRanges)の構文は、offset1:length1, offset2:length2 という形式のコンマ区切りリストであり、各オフセットと長さはそれぞれバイトオフセットとバイト単位の長さを指定する 64 ビット整数です。オフセットと長さは、16 進数または 10 進数のいずれかの値で表現できます。

pbstrRanges がすべてのオフセットと長さを含むファイル(範囲ファイル)を参照している場合、pbstrRanges にはそのファイルへのフルパスが含まれている必要があります。

wszRange がすべてのオフセットと長さを含むファイル(範囲ファイル)を参照している場合、wszRange にはそのファイルへのフルパスが含まれている必要があります。

範囲ファイルは、次の形式のバイナリファイルである必要があります。

  1. バックアップが必要な個別のファイル範囲の数を示す 64 ビット整数。
  2. 各範囲を 64 ビット整数のペアとして表現したもの。バックアップ対象ファイルへのオフセット(バイト単位)と、そのオフセットからバックアップするデータの長さ。
範囲ファイルは部分ファイルとともにバックアップされているはずであり、通常はバックアップ元と同じ場所に復元されます。

ただし、範囲ファイルの復元先は、リクエスターによって変更される場合があります。リクエスターは IVssBackupComponents::SetRangesFilePath を使用してこれを示し、pbstrRanges が正しい範囲ファイルを示すようにバックアップコンポーネントドキュメントを更新します。

リクエスターは、 GetPartialFile が返す範囲情報を使用して、復元時にディスク上のファイルのコピー内の適切な場所にバックアップされたセクションを復元します。

vtbl 14 HRESULT IsSelectedForRestore(BOOLEAN* pbSelectedForRestore)

IsSelectedForRestore メソッドは、現在のコンポーネントが復元対象として選択されているかどうかを判断します。

pbSelectedForRestoreBOOLEAN*inoutコンポーネントが復元対象として選択されている場合は true、それ以外の場合は false を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
項目を正常に設定しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_BAD_STATE
呼び出し元が、操作に対して正しい状態(バックアップまたは復元)にありません。

解説(Remarks)

IsSelectedForRestore はコンポーネントモードでのみ意味を持ちます。

コンポーネントがコンポーネントセットを定義している場合、 IsSelectedForRestore はコンポーネントとそのすべてのサブコンポーネントの両方を指します。

vtbl 15 HRESULT GetAdditionalRestores(BOOLEAN* pbAdditionalRestores)

GetAdditionalRestores メソッドは、増分復元または差分復元操作中にライターが使用し、指定されたコンポーネントを完全に取得するために追加の復元操作が必要かどうかを判断します。

pbAdditionalRestoresBOOLEAN*inout現在のコンポーネントに対して追加の復元が発生する場合は true、それ以外の場合は false を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
S_FALSE
指定された属性には値がありません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

GetAdditionalRestores が返す値は、復元操作中にリクエスターが IVssBackupComponents::SetAdditionalRestores を呼び出さない限り、false になります。

GetAdditionalRestores は、コンポーネントを完全に復元するために複数のバックアップセットを使用する必要があるかどうかを確認するために使用します。コンポーネントは、まずフルバックアップからデータを復元して取得され、その後、後続の 1 つ以上の増分バックアップまたは差分バックアップからそのデータが更新されることがあります。

GetAdditionalRestores メソッドは通常、 PostRestore イベントハンドラー(CVssWriter::OnPostRestore)の一部として明示的なリカバリーメカニズムをサポートするライター(たとえば Exchange Server や、SQL Server などのデータベースアプリケーション)によって使用されます。これらのアプリケーションでは、そのようなリカバリーの実行後に、追加の差分、増分、またはログの復元を行うことができないことがよくあります。

したがって、 GetAdditionalRestores がコンポーネントに対して true を返す場合、そのようなライターは明示的なリカバリーメカニズムを実行すべきではなく、追加の差分、増分、またはログの復元が行われることを想定する必要があります。

SetAdditionalRestoresfalse を返す場合、復元の終了後、 PostRestore イベントの処理時に、ライターはリカバリー操作を完了してオンラインに復帰できます。

vtbl 16 HRESULT GetNewTargetCount(DWORD* pcNewTarget)

GetNewTargetCount メソッドは、指定されたコンポーネントに関連付けられた新しいターゲット復元場所の数を返します。

pcNewTargetDWORD*inout新しいターゲット復元場所の数を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
vtbl 17 HRESULT GetNewTarget(DWORD iNewTarget, IVssWMFiledesc** ppFiledesc)

GetNewTarget メソッドは、選択されたコンポーネントまたはコンポーネントセットの新しいファイル復元場所を返します。

iNewTargetDWORDin新しいターゲットのインデックス番号。このパラメーターの値は 0 から n-1 までの整数です(n は、指定されたコンポーネントに関連付けられた新しいターゲットの総数)。n の値は IVssComponent::GetNewTargetCount によって返されます。
ppFiledescIVssWMFiledesc**out新しいターゲット復元場所の情報を格納する IVssWMFiledesc オブジェクトへの二重間接ポインター。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。
VSS_E_OBJECT_NOT_FOUND
指定された項目が見つかりませんでした。

解説(Remarks)

GetNewTarget が返す新しいターゲットは、現在のコンポーネント内のファイルのものだけでなく、その選択不可能なサブコンポーネント内のファイルのものである場合もあります。

vtbl 18 HRESULT AddDirectedTarget(LPWSTR wszSourcePath, LPWSTR wszSourceFilename, LPWSTR wszSourceRangeList, LPWSTR wszDestinationPath, LPWSTR wszDestinationFilename, LPWSTR wszDestinationRangeList)

AddDirectedTarget メソッドは、ファイルを復元する際に、そのファイル(ソースファイル)を再マッピングする必要があることを、ライターが復元時に示せるようにします。

wszSourcePathLPWSTRin復元時に、復元対象のファイル(ソースファイル)を含むディレクトリへのパスを含む Null 終端のワイド文字列。このパスは、コンポーネント(またはコンポーネントがコンポーネントセットを定義している場合はそのサブコンポーネントの 1 つ)内にすでにあるファイルセットのパスと一致するか、その配下にある必要があります。
wszSourceFilenameLPWSTRin復元時に再マッピングされる(バックアップ時の)ファイル名(ソースファイル)を含む Null 終端のワイド文字列。ファイル名(wszSourceFilename)はワイルドカード文字(* または ?)を含むことができず、ソースパス(wszSourcePath)を含むファイルセットのファイル指定と整合している必要があります。
wszSourceRangeListLPWSTRin

ソースファイルサポート範囲(実際に復元されるファイルのセクション)を示すファイルオフセットと長さのコンマ区切りリストを含む Null 終端のワイド文字列。

ソースファイルサポート範囲の数と長さは、宛先ファイルサポート範囲の数とサイズに一致している必要があります。

wszDestinationPathLPWSTRin復元時にソースファイルのデータが再マッピングされる先のパスを含む Null 終端のワイド文字列。
wszDestinationFilenameLPWSTRin復元時にソースファイルのデータが再マッピングされる先のファイル名を含む Null 終端のワイド文字列。ファイル名(wszDestinationFilename)はワイルドカード文字(* または ?)を含むことができません。
wszDestinationRangeListLPWSTRin

宛先ファイルサポート範囲(ソースファイルのセクションの復元先の場所)を示すファイルオフセットと長さのコンマ区切りリストを含む Null 終端のワイド文字列。

宛先ファイルサポート範囲の数と長さは、ソースファイルサポート範囲の数とサイズに一致している必要があります。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
項目を正常に設定しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_BAD_STATE
このメソッドがライターから呼び出されなかったか、またはライターから呼び出された場合でも、復元操作中に呼び出されなかったか、BackupComplete または BackupShutdown イベントの処理中に呼び出されました。

解説(Remarks)

AddDirectedTarget を呼び出せるのはライターのみであり、復元操作中に限られます。

リクエスターは、復元ターゲットが VSS_RT_DIRECTED の場合にのみ、バックアップコンポーネントドキュメントに格納されたディレクテッドターゲット情報を使用します。

AddDirectedTarget メソッドは、現在のコンポーネントで管理されている任意のファイル、または、コンポーネントがコンポーネントセットを定義している場合はその選択不可能なサブコンポーネント内の任意のファイルに適用できます。

ソースと宛先のファイル指定は同じファイルを指してもかまいません。これにより、復元時にファイルをそれ自身に再マッピングできます。

範囲リスト(wszSourceRanges および wszDestinationRanges)の構文は、offset1:length1, offset2:length2 という形式のコンマ区切りリストであり、各オフセットと長さはそれぞれバイトオフセットとバイト単位の長さを指定する 64 ビット整数です。オフセットと長さは、16 進数または 10 進数のいずれかの値で表現できます。

エントリの数とそのサイズは、ソースと宛先の範囲引数で一致している必要があります。

AddDirectedTarget は、コンポーネント、またはコンポーネントがコンポーネントセットを定義している場合はそのサブコンポーネントの 1 つによってすでに管理されている任意のファイルをソースファイルとして使用できます。

バックアップ対象の部分ファイル範囲がディレクテッドターゲットのソース範囲と一致する場合、部分ファイルをディレクテッドターゲットとして追加できます( IVssComponent::AddPartialFile を参照)。これにより、復元時に部分ファイルを再マッピングできます。

この場合、リクエスターは IVssComponent::GetDirectedTarget メソッドを呼び出してディレクテッドターゲット情報を取得し、それを使用して復元時にバックアップされたデータの再マッピングを実装します。

vtbl 19 HRESULT GetDirectedTargetCount(DWORD* pcDirectedTarget)

GetDirectedTargetCount メソッドは、現在のコンポーネントに関連付けられたディレクテッドターゲット指定の数を返します。このメソッドはライターまたはリクエスターのいずれからでも呼び出せます。

pcDirectedTargetDWORD*inoutディレクテッドターゲット指定の数を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
vtbl 20 HRESULT GetDirectedTarget(DWORD iDirectedTarget, LPWSTR* pbstrSourcePath, LPWSTR* pbstrSourceFileName, LPWSTR* pbstrSourceRangeList, LPWSTR* pbstrDestinationPath, LPWSTR* pbstrDestinationFilename, LPWSTR* pbstrDestinationRangeList)

GetDirectedTarget メソッドは、ファイルを復元する際にそのファイル(ソースファイル)を再マッピングする必要があることを示すために、ライターがバックアップ時にバックアップコンポーネントドキュメントに格納した情報を返します。

iDirectedTargetDWORDinディレクテッドターゲットのインデックス番号。このパラメーターの値は 0 から n-1 までの整数です(n は、指定されたコンポーネント(およびコンポーネントセットを定義している場合はそのサブコンポーネント)に関連付けられたディレクテッドターゲットの総数)。n の値は IVssComponent::GetDirectedTargetCount によって返されます。
pbstrSourcePathLPWSTR*inoutバックアップ時に、復元対象のファイル(ソースファイル)を含んでいたディレクトリへのパスを含む文字列を受け取る、呼び出し元が割り当てた変数のアドレス。このパスは、コンポーネントまたはそのサブコンポーネントの 1 つ(コンポーネントがコンポーネントセットを定義している場合)内にすでにあるファイルセットのパスと一致するか、その配下にある必要があります。
pbstrSourceFileNameLPWSTR*inout復元時に再マッピングされる(バックアップ時の)ファイル名(ソースファイル)を含む文字列を受け取る、呼び出し元が割り当てた変数のアドレス。このファイル名はワイルドカード文字を含んではならず、ソースパス(pbstrSourcePath)と同じファイルセットのメンバーである必要があります。
pbstrSourceRangeListLPWSTR*inout

ソースファイルサポート範囲(復元されるファイルのセクション)を示すファイルオフセットと長さのコンマ区切りリストを含む文字列を受け取る、呼び出し元が割り当てた変数のアドレス。

ソースファイルサポート範囲の数と長さは、宛先ファイルサポート範囲の数とサイズに一致している必要があります。

pbstrDestinationPathLPWSTR*inout復元時にソースファイルのデータが再マッピングされる先のパスを含む文字列を受け取る、呼び出し元が割り当てた変数のアドレス。
pbstrDestinationFilenameLPWSTR*inout復元時にソースファイルのデータが再マッピングされる先のファイル名を含む文字列を受け取る、呼び出し元が割り当てた変数のアドレス。
pbstrDestinationRangeListLPWSTR*inout

宛先ファイルサポート範囲(ソースファイルのセクションの復元先の場所)を示すファイルオフセットと長さのコンマ区切りリストを含む文字列を受け取る、呼び出し元が割り当てた変数のアドレス。

宛先ファイルサポート範囲の数と長さは、ソースファイルサポート範囲の数とサイズに一致している必要があります。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。
VSS_E_OBJECT_NOT_FOUND
指定された項目が見つかりませんでした。

解説(Remarks)

GetDirectedTarget の呼び出しが成功した場合、呼び出し元は SysFreeString 関数を呼び出して、返された各文字列を解放する責任があります。

リクエスターは、復元ターゲットが VSS_RT_DIRECTED の場合にのみ、バックアップコンポーネントドキュメントに格納されたディレクテッドターゲット情報を使用します。

範囲リスト(wszSourceRanges および wszDestinationRanges)の構文は、offset1:length1, offset2:length2 という形式のコンマ区切りリストであり、各オフセットと長さはそれぞれバイトオフセットとバイト単位の長さを指定する 64 ビット整数です。オフセットと長さは、16 進数または 10 進数のいずれかの値で表現できます。

GetDirectedTarget がディレクテッドターゲットを返すファイルは、現在のコンポーネントのファイル、またはそれが定義する任意のサブコンポーネントのメンバーである場合があります。

呼び出し元は、SysFreeString を呼び出して、pbstrSourcePathpbstrSourceFileNamepbstrSourceRangeListpbstrDestinationPathpbstrDestinationFilenamepbstrDestinationRangeList の各パラメーターが保持するメモリを解放する必要があります。

バックアップ対象の部分ファイル範囲がディレクテッドターゲットのソース範囲と一致する場合、部分ファイルをディレクテッドターゲットとして追加できます( IVssComponent::AddPartialFile を参照)。これにより、部分ファイルを再マッピングできます。

リクエスターは、復元を正しく実装するために、ディレクテッドターゲットのソースファイルが部分ファイルとしてバックアップされたかどうかを確認する必要があります。そうである場合、リクエスターはディレクテッドターゲット情報を部分ファイル情報(IVssComponent::GetPartialFile)と組み合わせて使用し、復元時にバックアップされたデータの再マッピングを実装します。

vtbl 21 HRESULT SetRestoreMetadata(LPWSTR wszRestoreMetadata)

SetRestoreMetadata メソッドは、現在のコンポーネントにライター固有のメタデータを設定します。

wszRestoreMetadataLPWSTRinコンポーネントの復元メタデータを含む、呼び出し元が割り当てた NULL 終端のワイド文字列。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
項目を正常に設定しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_OBJECT_ALREADY_EXISTS
このコンポーネントに対して、プライベートメタデータはすでに書き込まれています。
VSS_E_BAD_STATE
メソッドが、PreRestore イベントを処理するライターのコンテキスト外で呼び出されました。

解説(Remarks)

IVssComponent::SetRestoreMetadata は、復元操作中にライターが使用できる、プライベートなライター固有のメタデータを設定します。

その形式は、いかなる VSS メタデータ仕様にも準拠する必要はありません。

vtbl 22 HRESULT GetRestoreMetadata(LPWSTR* pbstrRestoreMetadata)

GetRestoreMetadata メソッドは、PreRestore イベント中に CVssWriter::OnPreRestore が IVssComponent::SetRestoreMetadata を使用して設定した可能性のある、プライベートなライター固有の復元メタデータを取得します。

pbstrRestoreMetadataLPWSTR*inout復元メタデータを含む文字列。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
S_FALSE
指定された属性には値がありません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

このメソッドは、指定されたライターのロジックに応じて、任意のタイミングで呼び出すことができます。

呼び出し元は、 SysFreeString を呼び出して pbstrRestoreMetadata パラメーターが保持するメモリを解放する必要があります。

バックアップメタデータが設定されていない場合、 GetBackupMetadataS_FALSE を返します。

ライターが代替場所マッピングを定義せずに復元方法を VSS_RME_RESTORE_TO_ALTERNATE_LOCATION に設定することは、ライターのエラーとなります。

vtbl 23 HRESULT SetRestoreTarget(VSS_RESTORE_TARGET target)

SetRestoreTarget メソッドは、現在のコンポーネントの復元ターゲットを(VSS_RESTORE_TARGET 列挙体の観点から)設定します。

targetVSS_RESTORE_TARGETin復元ターゲット情報を含む VSS_RESTORE_TARGET の値。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
項目を正常に設定しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_BAD_STATE
呼び出し元が、操作に対して正しい状態(バックアップまたは復元)にありません。

解説(Remarks)

SetRestoreTarget によって設定される復元ターゲットは、コンポーネント内のすべてのファイルおよびすべての選択不可能なサブコンポーネントに適用されます。

vtbl 24 HRESULT GetRestoreTarget(VSS_RESTORE_TARGET* pTarget)

GetRestoreTarget メソッドは、現在のコンポーネントの復元ターゲットを(VSS_RESTORE_TARGET 列挙体の観点から)返します。

pTargetVSS_RESTORE_TARGET*inout復元ターゲットを指定する VSS_RESTORE_TARGET 列挙値を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。
VSS_E_OBJECT_NOT_FOUND
指定された項目が見つかりませんでした。
vtbl 25 HRESULT SetPreRestoreFailureMsg(LPWSTR wszPreRestoreFailureMsg)

SetPreRestoreFailureMsg メソッドは、PreRestore イベントの処理における失敗を記述するメッセージを作成するために使用します。

wszPreRestoreFailureMsgLPWSTRinPreRestore イベントの処理中に発生したエラーを記述する失敗メッセージを含む、呼び出し元が割り当てた NULL 終端のワイド文字列。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
失敗メッセージを正常に設定しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_BAD_STATE
呼び出し元が、操作に対して正しい状態(バックアップまたは復元)にありません。

解説(Remarks)

SetPreRestoreFailureMsg によって設定される失敗メッセージは、コンポーネント内のすべてのファイルおよびすべての選択不可能なサブコンポーネントに適用されます。

vtbl 26 HRESULT GetPreRestoreFailureMsg(LPWSTR* pbstrPreRestoreFailureMsg)

GetPreRestoreFailureMsg メソッドは、IVssComponent::SetPreRestoreFailureMsg が設定していた場合に、PreRestore イベントの処理中にライターが生成したエラーメッセージを取得します。

pbstrPreRestoreFailureMsgLPWSTR*inoutPreRestore イベントの処理中に発生したエラーを記述する失敗メッセージを含む文字列。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
S_FALSE
取得できる PreRestore の失敗メッセージがありませんでした。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

呼び出し元は、SysFreeString を呼び出して pbstrPreRestoreFailureMsg パラメーターが保持するメモリを解放する必要があります。

SetPreRestoreFailureMsg を使用して PreRestore の失敗メッセージが設定されていなかった場合、 GetPreRestoreFailureMsgS_FALSE を返します。

vtbl 27 HRESULT SetPostRestoreFailureMsg(LPWSTR wszPostRestoreFailureMsg)

SetPostRestoreFailureMsg メソッドは、PostRestore イベントの処理における失敗を記述するメッセージを作成するために使用します。

wszPostRestoreFailureMsgLPWSTRinPostRestore イベントの処理中に発生したエラーを記述する失敗メッセージを含む、呼び出し元が割り当てた NULL 終端のワイド文字列。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
失敗メッセージを正常に設定しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_BAD_STATE
呼び出し元が、操作に対して正しい状態(バックアップまたは復元)にありません。

解説(Remarks)

SetPostRestoreFailureMsg によって設定される失敗メッセージは、コンポーネント内のすべてのファイルおよびすべての選択不可能なサブコンポーネントに適用されます。

vtbl 28 HRESULT GetPostRestoreFailureMsg(LPWSTR* pbstrPostRestoreFailureMsg)

GetPostRestoreFailureMsg メソッドは、IVssComponent::SetPostRestoreFailureMsg が設定していた場合に、PostRestore イベントの処理中にライターが生成した失敗メッセージを返します。

pbstrPostRestoreFailureMsgLPWSTR*inoutPostRestore イベントの処理中に発生したエラーを記述する失敗メッセージを含む文字列へのポインター。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
S_FALSE
取得できる PostRestore の失敗メッセージがありませんでした。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

呼び出し元は、SysFreeString を呼び出して pbstrPostRestoreFailureMsg パラメーターが保持するメモリを解放する必要があります。

SetPostRestoreFailureMsg を使用して PostRestore の失敗メッセージが設定されていなかった場合、 GetPreRestoreFailureMsgS_FALSE を返します。

vtbl 29 HRESULT SetBackupStamp(LPWSTR wszBackupStamp)

SetBackupStamp メソッドは、バックアップがいつ実行されたかを示す情報を含む文字列を設定します。

wszBackupStampLPWSTRinバックアップがいつ実行されたかを示す Null 終端のワイド文字列情報。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
バックアップのタイムスタンプを正常に設定しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_BAD_STATE
このメソッドがライターから呼び出されなかったか、またはライターから呼び出された場合でも、バックアップ操作中に呼び出されなかったか、BackupComplete または BackupShutdown イベントの処理中に呼び出されました。

解説(Remarks)

バックアップスタンプの詳細については、複雑なストアのバックアップにおけるライターの役割を参照してください。

SetBackupStamp によって設定されるバックアップスタンプは、コンポーネント内のすべてのファイルおよびそれが持つすべての選択不可能なサブコンポーネントに適用されます。

ライターは通常、 CVssWriter::OnPostSnapshot 内で PostSnapshot イベントを処理する際に SetBackupStamp を呼び出します。

リクエスターは、バックアップスタンプをバックアップコンポーネントドキュメントに格納するだけです。バックアップスタンプを直接使用したり、その解釈方法を知っている必要はありません。

リクエスターがバックアップスタンプを使用するのは、復元操作中に、 IVssBackupComponents::SetPreviousBackupStamp メソッドを使用して、格納されたタイムスタンプ文字列をライターが利用できるようにする場合のみです。

このため、バックアップスタンプの内容に形式上の制約はありません。時刻や日付の情報、論理シーケンス番号、または同じクラスのライターが最後のバックアップがいつ実行されたかを判断できるその他の情報を含めることができます。

vtbl 30 HRESULT GetBackupStamp(LPWSTR* pbstrBackupStamp)

GetBackupStamp メソッドは、指定されたコンポーネントに対してライターが格納したバックアップスタンプ文字列を返します。

pbstrBackupStampLPWSTR*inoutコンポーネントがバックアップされた時刻を示すバックアップスタンプを含む文字列を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
S_FALSE
このコンポーネントに関連付けられたタイムスタンプはありません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

バックアップタイムスタンプが設定されていない場合、 GetBackupStampS_FALSE を返します。

GetBackupStamp の呼び出しが成功した場合、呼び出し元は SysFreeString 関数を呼び出して、pbstrBackupStamp パラメーターで返される文字列を解放する責任があります。

返される文字列は、コンポーネント内のすべてのファイルおよびそれが持つすべての選択不可能なサブコンポーネントを指します。

GetBackupStamp が取得するバックアップスタンプは、通常、PostSnapshot イベントハンドラー CVssWriter::OnPostSnapshot 内から IVssComponent::SetBackupStamp を呼び出してライターが設定します。

リクエスターは、バックアップスタンプをバックアップコンポーネントドキュメントに格納するだけです。バックアップスタンプを直接使用したり、その生成方法を知っていたり、その形式を理解していたりする必要はありません。

vtbl 31 HRESULT GetPreviousBackupStamp(LPWSTR* pbstrBackupStamp)

GetPreviousBackupStamp メソッドは、リクエスターがバックアップコンポーネントドキュメントに読み込んだ以前のバックアップスタンプを返します。この値は、ファイルを差分または増分バックアップ操作に参加させるべきかどうかをライターが判断する際に使用されます。

pbstrBackupStampLPWSTR*inout差分または増分バックアップを正しく実装できるように、以前のバックアップのタイムスタンプを含む文字列へのポインター。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
S_FALSE
以前のバックアップタイムスタンプが設定されていません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

バックアップスタンプの詳細については、複雑なストアのバックアップにおけるライターの役割および 複雑なストアのバックアップにおけるリクエスターの役割を参照してください。

呼び出し元は、SysFreeString を呼び出して pbstrBackupStamp パラメーターが保持するメモリを解放する必要があります。

以前のバックアップタイムスタンプがない場合、 GetPreviousBackupStampS_FALSE を返します。

返される文字列は、コンポーネント内のすべてのファイルおよびそれが持つすべての選択不可能なサブコンポーネントを指します。

GetPreviousBackupStamp が取得するバックアップスタンプは、リクエスターが IVssBackupComponents::SetPreviousBackupStamp を使用して設定します。

通常、 GetPreviousBackupStamp で見つかる値の設定に使用された文字列は、格納されたバックアップコンポーネントドキュメントから取得されたか、リクエスターが独自の内部レコードの一部として格納したものです。

vtbl 32 HRESULT GetBackupOptions(LPWSTR* pbstrBackupOptions)

GetBackupOptions メソッドは、リクエスターが IVssBackupComponents::SetBackupOptions を使用して、現在選択されているコンポーネントまたはコンポーネントセットを管理するライターに指定したバックアップオプションを返します。

pbstrBackupOptionsLPWSTR*inout現在のライターのバックアップオプションを含む文字列を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
S_FALSE
このコンポーネントにはバックアップオプションが指定されていません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

バックアップオプションが設定されていない場合、S_FALSE が返されます。

GetBackupOptions の呼び出しが成功した場合、呼び出し元は SysFreeString 関数を呼び出して、pbstrBackupOptions パラメーターで返される文字列を解放する責任があります。

vtbl 33 HRESULT GetRestoreOptions(LPWSTR* pbstrRestoreOptions)

GetRestoreOptions メソッドは、リクエスターが IVssBackupComponents::SetRestoreOptions を使用して現在のライターに指定した復元オプションを取得します。

pbstrRestoreOptionsLPWSTR*inoutライターの復元オプションを含む文字列。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
S_FALSE
復元オプションが指定されていません。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

呼び出し元は、SysFreeString を呼び出して pbstrRestoreOptions パラメーターが保持するメモリを解放する必要があります。

復元オプションが設定されていない場合、S_FALSE が返されます。

vtbl 34 HRESULT GetRestoreSubcomponentCount(DWORD* pcRestoreSubcomponent)

GetRestoreSubcomponentCount メソッドは、コンポーネントに関連付けられたサブコンポーネントの数を返します。

pcRestoreSubcomponentDWORD*inoutコンポーネントに関連付けられたサブコンポーネントの数を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
vtbl 35 HRESULT GetRestoreSubcomponent(DWORD iComponent, LPWSTR* pbstrLogicalPath, LPWSTR* pbstrComponentName, BOOLEAN* pbRepair)

GetRestoreSubcomponent メソッドは、指定されたコンポーネントに関連付けられた、指定のサブコンポーネントを返します。

iComponentDWORDinサブコンポーネントのインデックス。このパラメーターの値は 0 から n-1 までの整数です(n は、指定されたコンポーネントに関連付けられたサブコンポーネントの総数)。n の値は IVssComponent::GetRestoreSubcomponentCount によって返されます。
pbstrLogicalPathLPWSTR*inoutサブコンポーネントの論理パスを含む文字列へのポインター。サブコンポーネントを扱う場合、論理パスを空にすることはできません。
pbstrComponentNameLPWSTR*inoutサブコンポーネントの名前を含む文字列へのポインター。この文字列を空にすることはできません。
pbRepairBOOLEAN*inout将来使用するために予約されています。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。
VSS_E_OBJECT_NOT_FOUND
指定された項目が見つかりませんでした。

解説(Remarks)

呼び出し元は、SysFreeString を呼び出して、pbstrLogicalPath および pbstrComponentName の各パラメーターが保持するメモリを解放する必要があります。

vtbl 36 HRESULT GetFileRestoreStatus(VSS_FILE_RESTORE_STATUS* pStatus)

GetFileRestoreStatus メソッドは、選択されたコンポーネントまたはコンポーネントセットのすべてのファイルを復元する完了した試行の状態を、VSS_FILE_RESTORE_STATUS 列挙体として返します。

pStatusVSS_FILE_RESTORE_STATUS*inoutすべてのファイルが正常に復元されたかどうかを指定する VSS_FILE_RESTORE_STATUS 列挙値を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_BAD_STATE
メソッドが復元操作の一部として呼び出されませんでした。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

このメソッドは、 PostRestore イベントの後にのみ呼び出す必要があります。

このメソッドが、 IVssBackupComponents::AddComponent によってバックアップコンポーネントに追加されて復元対象として選択されていないコンポーネントに適用された場合、返される状態は未定義です。

vtbl 37 HRESULT AddDifferencedFilesByLastModifyTime(LPWSTR wszPath, LPWSTR wszFilespec, BOOL bRecursive, FILETIME ftLastModifyTime)

ファイルセット(指定された 1 つまたは複数のファイル)を、ファイル全体を使用するタイムスタンプ付きの増分または差分バックアップに含めるために、最終更新タイムスタンプと照合して評価すべきであることを、ライターが示すために使用します。

wszPathLPWSTRin

マッピングするファイルを含むディレクトリまたはディレクトリ階層の名前を含む Null 終端のワイド文字列。

パスには環境変数(たとえば %SystemRoot%)を含めることができますが、ワイルドカード文字を含めることはできません。

パスがバックスラッシュ("")で終わる必要はありません。この情報を取得するアプリケーション側で確認する必要があります。

wszFilespecLPWSTRin

マッピングするファイルのファイル指定を含む Null 終端のワイド文字列。

ファイル指定にはディレクトリ指定(たとえばバックスラッシュ)を含めることはできませんが、? および * のワイルドカード文字を含めることができます。

bRecursiveBOOLin

wszPath パラメーターで指定されたパスが単一のディレクトリのみを識別するか、または再帰的にたどるディレクトリの階層を示すかを指定するブール値。パスを再帰的にたどるディレクトリの階層として扱う場合はこのパラメーターを true に、そうでない場合は false に設定する必要があります。

マウントされたフォルダーのたどり方については、 マウントされたフォルダーと再解析ポイントの操作を参照してください。

ftLastModifyTimeFILETIMEin

差分ファイルの最終更新時刻のライターによる指定。 FILETIME 構造体として表現されます。

最終更新時刻は常にグリニッジ標準時で与えられます。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
差分ファイルを正常に追加しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_BAD_STATE
このメソッドがライターから呼び出されなかったか、またはライターから呼び出された場合でも、バックアップ操作中に呼び出されなかったか、BackupComplete または BackupShutdown イベントの処理中に呼び出されました。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。
VSS_E_UNEXPECTED
予期しないエラーです。エラーコードはエラーログファイルに記録されます。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

Windows Server 2008、Windows Vista、Windows Server 2003、Windows XP:この値は Windows Server 2008 R2 および Windows 7 まではサポートされていません。代わりに E_UNEXPECTED が使用されます。

解説(Remarks)

ライターは、コンポーネント内の特定のファイルを、一定の時刻以降に変更された場合にのみバックアップすべきであることを指定するために、このメソッドを呼び出します。詳細については、最終更新時刻によるバックアップを参照してください。

このメソッドは、最終更新スキーマ (VSS_BS_LAST_MODIFY)をサポートするライターのみが、バックアップ操作中にのみ呼び出すことができます。このメソッドを使用するライターは、タイムスタンプスキーマ(VSS_BS_TIMESTAMPED)をサポートする必要はありません。

AddDifferencedFilesByLastModifyTime によって追加されるファイルは、 IVssComponent::AddPartialFile によっても追加すべきではありません。

バックアップの種類(VSS_BACKUP_TYPE)が増分(VSS_BT_INCREMENTAL)の場合、 AddDifferencedFilesByLastModifyTime を使用するライターは、増分スキーマ(VSS_BS_INCREMENTAL)をサポートする必要があります。バックアップの種類が差分の場合、ライターは VSS_BS_DIFFERENTIAL スキーマをサポートする必要があります。

AddDifferencedFilesByLastModifyTime メソッドは、バックアップ操作の実際の開始前に、通常は PostSnapshot イベントの処理中に呼び出す必要があります( CVssWriter::OnPostSnapshot を参照)。

AddDifferencedFilesByLastModifyTime によって設定されたタイムスタンプ値が 0 以外の場合、リクエスターは、差分ファイルを差分または増分バックアップに含めるべきかどうかを判断する際に、自身のレコードやファイルシステム情報にかかわらず、この値を尊重する必要があります。

AddDifferencedFilesByLastModifyTime によって設定されたタイムスタンプ(ftLastModifyTime)が 0 の場合、リクエスターは、差分ファイルを差分または増分バックアップに含めるべきかどうかを判断するために、ファイルシステム情報と自身のレコードを使用できます。

リクエスターは、 IVssComponent::GetDifferencedFile を呼び出して、コンポーネントが管理する差分ファイルの数を取得します。

差分ファイルセットは、次のいずれかになります。

すでにコンポーネントの一部であるファイルを参照する場合、 AddDifferencedFilesByLastModifyTime に指定してマッピングするパス、ファイル指定、および再帰フラグ(それぞれ wszPathwszFileSpecbRecursive)の組み合わせは、 IVssCreateWriterMetadata::AddFilesToFileGroupIVssCreateWriterMetadata::AddDatabaseFiles、または IVssCreateWriterMetadata::AddDatabaseLogFiles によってコンポーネントに追加されたファイルセットの 1 つと一致している必要があります。

コンポーネントに新しいファイルを追加する場合、 AddDifferencedFilesByLastModifyTime では、ライターは別のコンポーネントやライターが管理するファイルを追加すべきではありません。

IVssComponent インターフェイスには、 AddDifferencedFilesByLastModifyTime によって追加された新しいファイルの代替場所マッピングを変更または追加できるメソッドはありません。 新しいファイルに対応する代替場所マッピングがある場合は、その代替場所が使用されます。

vtbl 38 HRESULT AddDifferencedFilesByLastModifyLSN(LPWSTR wszPath, LPWSTR wszFilespec, BOOL bRecursive, LPWSTR bstrLsnString)

サポートされていません。(IVssComponent.AddDifferencedFilesByLastModifyLSN)

wszPathLPWSTRinこのパラメーターはシステムで使用するために予約されています。
wszFilespecLPWSTRinこのパラメーターはシステムで使用するために予約されています。
bRecursiveBOOLinこのパラメーターはシステムで使用するために予約されています。
bstrLsnStringLPWSTRinこのパラメーターはシステムで使用するために予約されています。

戻り値

このメソッドは値を返しません。

vtbl 39 HRESULT GetDifferencedFilesCount(DWORD* pcDifferencedFiles)

このコンポーネント(および、それが定義するコンポーネントセットの任意のサブコンポーネント)内で、増分バックアップまたは復元をサポートするライターによって差分ファイルとしてマークされたファイル指定の数を返します。

pcDifferencedFilesDWORD*inout差分ファイル指定の数を受け取る、呼び出し元が割り当てた変数のアドレス。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
vtbl 40 HRESULT GetDifferencedFile(DWORD iDifferencedFile, LPWSTR* pbstrPath, LPWSTR* pbstrFilespec, BOOL* pbRecursive, LPWSTR* pbstrLsnString, FILETIME* pftLastModifyTime)

GetDifferencedFile メソッドは、差分ファイルとして増分または差分のバックアップまたは復元に参加させるファイルセット(指定された 1 つまたは複数のファイル)に関する情報を返します。つまり、それに関連するバックアップと復元は、(部分ファイルを使用するのではなく)ファイル全体がバックアップメディアとの間でコピーされるかのように実装されます。

iDifferencedFileDWORDin調査する差分ファイルのインデックス番号。このパラメーターの値は 0 から n-1 までの整数です(n は、指定されたコンポーネント(およびコンポーネントセットを定義している場合はそのサブコンポーネント)に関連付けられた差分ファイルの総数)。n の値は IVssComponent::GetDifferencedFilesCount によって返されます。
pbstrPathLPWSTR*inout

差分ファイルへのパスを含む文字列を受け取る、呼び出し元が割り当てた変数のアドレス。

このメソッドの利用者は、このパスがバックスラッシュ(\)で終わるかどうかを確認する必要があります。

pbstrFilespecLPWSTR*inout差分ファイルのファイル指定を含む文字列を受け取る、呼び出し元が割り当てた変数のアドレス。
pbRecursiveBOOL*inout差分ファイルのファイル指定を再帰的に解釈すべきかどうかを指定するブール値を受け取る、呼び出し元が割り当てた変数のアドレス。TRUE の場合、増分または差分バックアップ中に差分ファイルとして扱うファイルを見つけるために、ファイル指定 pbstrFilespec に一致するファイルをディレクトリ階層全体で検索する必要があります。FALSE の場合、ルートディレクトリのみを検索する必要があります。
pbstrLsnStringLPWSTR*inout将来使用するために予約されています。
pftLastModifyTimeFILETIME*inout差分ファイルの最終更新時刻のライターによる指定を受け取る、呼び出し元が割り当てた変数のアドレス。 FILETIME 構造体として表現されます。

戻り値

このメソッドの有効な戻り値コードは次のとおりです。

意味
S_OK
属性値を正常に返しました。
E_INVALIDARG
パラメーター値のいずれかが無効です。
E_OUTOFMEMORY
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_OBJECT_NOT_FOUND
指定されたインデックスに対応する差分ファイルが見つかりませんでした。
VSS_E_INVALID_XML_DOCUMENT
XML ドキュメントが無効です。詳細についてはイベントログを確認してください。詳しくは、VSS におけるイベントとエラーの処理を参照してください。

解説(Remarks)

GetDifferencedFile は、バックアップまたは復元操作中に、リクエスターまたはライターから呼び出せます。

GetDifferencedFile の呼び出しが成功した場合、呼び出し元は SysFreeString 関数を呼び出して、pbstrPath および pbstrFilespec パラメーターで返される文字列を解放する責任があります。

ライターは、ファイルの実際のバックアップより前の任意のタイミング、通常は PostSnapshot イベント(CVssWriter::OnPostSnapshot)の処理中に、 IVssComponent::AddDifferencedFilesByLastModifyTime の呼び出しによって差分ファイルを示すことができます。そのため、バックアップ中は、 IVssBackupComponents::DoSnapshotSet が正常に返る前に GetDifferencedFile を呼び出しても有用ではありません。

GetDifferencedFile が返すタイムスタンプは、返されたパス(pbstrPath)およびファイル指定(pbstrFilespec)に一致するすべてのファイルに適用されます。

GetDifferencedFile が返すタイムスタンプ値(pftLastModifyTime)が 0 以外の場合、リクエスターは、差分ファイルを差分または増分バックアップに含めるべきかどうかを判断するために、自身のレコードやファイルシステム情報にかかわらずこの値を尊重し、それを使用する必要があります。

GetDifferencedFile が返すタイムスタンプが 0 の場合、リクエスターは、差分ファイルを差分または増分バックアップに含めるべきかどうかを判断するために、ファイルシステム情報と自身のレコードを使用できます。

差分ファイルは、次のいずれかになります。

すでにコンポーネントの一部であるファイルセットを参照する場合、 GetDifferencedFile を呼び出す際に使用するパス、ファイル指定、および再帰フラグ(それぞれ wszPathwszFileSpecbRecursive)の組み合わせは、コンポーネント、またはそのサブコンポーネントの 1 つ(コンポーネントがコンポーネントセットを定義している場合)内にすでにあるファイルセットのものと一致している必要があります。

GetDifferencedFile が差分の新しいファイルを返す場合、そのファイルのパス(pbstrPath)は、コンポーネント、またはそのサブコンポーネントの 1 つ(コンポーネントがコンポーネントセットを定義している場合)内にすでにあるパスと一致するか、その配下にある必要があります。

さらに、 GetDifferencedFile が返すファイルは、コンポーネントまたはライターによってすでに管理されているものであってはなりません。

これらの基準のいずれかに違反する場合、それはライター側のエラーであり、報告される必要があります。

IVssComponent インターフェイスには、 GetDifferencedFilesByLastModifyTime が返す新しいファイルの代替場所マッピングを変更または追加できるメソッドはありません。新しいファイルに対応する代替場所マッピングがある場合は、その代替場所が使用されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IVssComponent "{D2C72C96-C121-4518-B627-E5A93D010EAD}"
#usecom global IVssComponent IID_IVssComponent "{}"
#comfunc global IVssComponent_GetLogicalPath                       3 var
#comfunc global IVssComponent_GetComponentType                     4 var
#comfunc global IVssComponent_GetComponentName                     5 var
#comfunc global IVssComponent_GetBackupSucceeded                   6 var
#comfunc global IVssComponent_GetAlternateLocationMappingCount     7 var
#comfunc global IVssComponent_GetAlternateLocationMapping          8 int,sptr
#comfunc global IVssComponent_SetBackupMetadata                    9 wstr
#comfunc global IVssComponent_GetBackupMetadata                    10 var
#comfunc global IVssComponent_AddPartialFile                       11 wstr,wstr,wstr,wstr
#comfunc global IVssComponent_GetPartialFileCount                  12 var
#comfunc global IVssComponent_GetPartialFile                       13 int,var,var,var,var
#comfunc global IVssComponent_IsSelectedForRestore                 14 var
#comfunc global IVssComponent_GetAdditionalRestores                15 var
#comfunc global IVssComponent_GetNewTargetCount                    16 var
#comfunc global IVssComponent_GetNewTarget                         17 int,sptr
#comfunc global IVssComponent_AddDirectedTarget                    18 wstr,wstr,wstr,wstr,wstr,wstr
#comfunc global IVssComponent_GetDirectedTargetCount               19 var
#comfunc global IVssComponent_GetDirectedTarget                    20 int,var,var,var,var,var,var
#comfunc global IVssComponent_SetRestoreMetadata                   21 wstr
#comfunc global IVssComponent_GetRestoreMetadata                   22 var
#comfunc global IVssComponent_SetRestoreTarget                     23 int
#comfunc global IVssComponent_GetRestoreTarget                     24 var
#comfunc global IVssComponent_SetPreRestoreFailureMsg              25 wstr
#comfunc global IVssComponent_GetPreRestoreFailureMsg              26 var
#comfunc global IVssComponent_SetPostRestoreFailureMsg             27 wstr
#comfunc global IVssComponent_GetPostRestoreFailureMsg             28 var
#comfunc global IVssComponent_SetBackupStamp                       29 wstr
#comfunc global IVssComponent_GetBackupStamp                       30 var
#comfunc global IVssComponent_GetPreviousBackupStamp               31 var
#comfunc global IVssComponent_GetBackupOptions                     32 var
#comfunc global IVssComponent_GetRestoreOptions                    33 var
#comfunc global IVssComponent_GetRestoreSubcomponentCount          34 var
#comfunc global IVssComponent_GetRestoreSubcomponent               35 int,var,var,var
#comfunc global IVssComponent_GetFileRestoreStatus                 36 var
#comfunc global IVssComponent_AddDifferencedFilesByLastModifyTime  37 wstr,wstr,int,int
#comfunc global IVssComponent_AddDifferencedFilesByLastModifyLSN   38 wstr,wstr,int,wstr
#comfunc global IVssComponent_GetDifferencedFilesCount             39 var
#comfunc global IVssComponent_GetDifferencedFile                   40 int,var,var,var,var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。