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

IVssComponentEx2

COM
IID3b5be0f2-07a9-4e4b-bdd3-cfdc8e2c0d2d継承元IVssComponentEx自前メソッド開始 vtbl48

公式ドキュメント

コンポーネントレベルのライターエラーを報告および取得するための追加のメソッドを定義します。

メソッド 2

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

vtbl 48 HRESULT SetFailure(HRESULT hr, HRESULT hrApplication, LPWSTR wszApplicationMessage, DWORD dwReserved)

VSS ライターは、コンポーネントレベルでエラーを報告するためにこのメソッドを呼び出します。

hrHRESULTin

IVssComponentEx2::GetFailure メソッドを呼び出す要求元に返されるエラーコード。

このメソッドが設定できるエラーコードは次のとおりです。

意味
S_OK
ライターが成功しました。
VSS_E_WRITERERROR_INCONSISTENTSNAPSHOT
シャドウコピーには、ライターがアプリケーションコンポーネントを正しくバックアップするために必要なボリュームの一部のみが含まれています。
VSS_E_WRITERERROR_OUTOFRESOURCES
ライターがメモリまたはその他のシステムリソースを使い果たしました。このエラーコードの推奨される処理方法は、10 分待ってから操作を最大 3 回まで繰り返すことです。
VSS_E_WRITERERROR_TIMEOUT
Freeze イベントと Thaw イベントの間のタイムアウトのため、ライター操作が失敗しました。このエラーコードの推奨される処理方法は、10 分待ってから操作を最大 3 回まで繰り返すことです。
VSS_E_WRITERERROR_RETRYABLE
バックアップ、復元、またはシャドウコピー作成のプロセス全体を再起動すれば発生しない可能性が高いエラーのため、ライターが失敗しました。このエラーコードの推奨される処理方法は、10 分待ってから操作を最大 3 回まで繰り返すことです。
VSS_E_WRITERERROR_NONRETRYABLE
別のシャドウコピーを作成した場合に再発する可能性のあるエラーのため、ライター操作が失敗しました。詳細については、VSS でのイベントとエラーの処理を参照してください。
hrApplicationHRESULTin要求元に返される追加のエラーコード。このパラメーターは省略可能です。
wszApplicationMessageLPWSTRinoptional要求元がエンドユーザーに表示するためのエラーメッセージを含む文字列。ライターは、このメソッドで使用する前に、必要に応じてこの文字列をローカライズする責任があります。このパラメーターは省略可能で、NULL または空の文字列を指定できます。
dwReservedDWORDinこのパラメーターは将来の使用のために予約されており、ゼロに設定する必要があります。

戻り値

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

解説(Remarks)

このメソッドを呼び出すことに加えて、ライターの部分的な失敗が発生したことを報告するために CVssWriterEx2::SetWriterFailureEx メソッドを使用してください。

このメソッドは、CVssWriter::OnIdentify または CVssWriterEx::OnIdentifyEx から呼び出すことはできません。

vtbl 49 HRESULT GetFailure(HRESULT* phr, HRESULT* phrApplication, LPWSTR* pbstrApplicationMessage, DWORD* pdwReserved)

VSS 要求元は、ライターが報告したコンポーネントレベルのエラーを取得するためにこのメソッドを呼び出します。

phrHRESULT*out

ライターが IVssComponentEx2::SetFailure メソッドの hr パラメーターに渡した HRESULT 失敗コードを受け取る、呼び出し元が割り当てた変数のアドレス。このパラメーターは必須であり、NULL にすることはできません。

サポートされる値は次のとおりです。

意味
S_OK
ライターが成功しました。
VSS_E_WRITERERROR_INCONSISTENTSNAPSHOT
シャドウコピーには、ライターがアプリケーションコンポーネントを正しくバックアップするために必要なボリュームの一部のみが含まれています。
VSS_E_WRITERERROR_OUTOFRESOURCES
ライターがメモリまたはその他のシステムリソースを使い果たしました。このエラーコードの推奨される処理方法は、10 分待ってから操作を最大 3 回まで繰り返すことです。
VSS_E_WRITERERROR_TIMEOUT
Freeze イベントと Thaw イベントの間のタイムアウトのため、ライター操作が失敗しました。このエラーコードの推奨される処理方法は、10 分待ってから操作を最大 3 回まで繰り返すことです。
VSS_E_WRITERERROR_RETRYABLE
バックアップ、復元、またはシャドウコピー作成のプロセス全体を再起動すれば発生しない可能性が高いエラーのため、ライターが失敗しました。このエラーコードの推奨される処理方法は、10 分待ってから操作を最大 3 回まで繰り返すことです。
VSS_E_WRITERERROR_NONRETRYABLE
別のシャドウコピーを作成した場合に再発する可能性のあるエラーのため、ライター操作が失敗しました。詳細については、VSS でのイベントとエラーの処理を参照してください。
VSS_E_WRITER_NOT_RESPONDING
ライターが応答していません。
VSS_E_WRITER_STATUS_NOT_AVAILABLE
1 つ以上のライターについてライターの状態が利用できません。ライターが利用可能なバックアップおよび復元セッションの最大数に達した可能性があります。
phrApplicationHRESULT*outライターが SetFailure メソッドの hrApplication パラメーターに渡した戻りコードを受け取る、呼び出し元が割り当てた変数のアドレス。このパラメーターは必須であり、NULL にすることはできません。
pbstrApplicationMessageLPWSTR*outライターが SetFailure メソッドの wszApplicationMessage パラメーターに渡したアプリケーション失敗メッセージを受け取る、呼び出し元が割り当てた変数のアドレス。このパラメーターは必須であり、NULL にすることはできません。
pdwReservedDWORD*out呼び出し元が割り当てた DWORD 変数のアドレス。このパラメーターは将来の使用のために予約されていますが、必須であり、NULL にすることはできません。

戻り値

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

意味
S_OK
0x00000000L
指定されたライターの状態を正常に返しました。ライターが成功したことを確認するには、phrFailureWriter パラメーターの値を確認する必要があることに注意してください。ライターの失敗コードは、VsWriter.h および ライターのエラーと拒否 (Writer Errors and Vetoes) に記載されているものである可能性があります。
E_INVALIDARG
0x80070057L
phrphrApplicationpbstrApplicationMessage、または pdwReserved パラメーターが NULL です。
E_OUTOFMEMORY
0x8007000EL
呼び出し元のメモリまたはその他のシステムリソースが不足しています。
VSS_E_BAD_STATE
0x80042301L
バックアップコンポーネントオブジェクトが初期化されていないか、このメソッドが復元操作中に呼び出されたか、または正しいシーケンス内で呼び出されていません。

解説(Remarks)

呼び出し元は、このメソッドが返す状態情報へのアクセスを終えたら、SysFreeString を呼び出して、pbstrApplicationMessage パラメーターが保持するメモリを解放する必要があります。

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