IVssComponentEx::GetPrepareForBackupFailureMsg メソッド (vswriter.h)
ライターが特定のコンポーネントに対して設定した PrepareForBackup エラー メッセージ文字列を返します。
ライターと要求者の両方がこのメソッドを呼び出すことができます。
構文
HRESULT GetPrepareForBackupFailureMsg(
[out] BSTR *pbstrFailureMsg
);
パラメーター
[out] pbstrFailureMsg
PrepareForBackup イベントの処理中に発生したエラーを説明するエラー メッセージを含む、null で終わるワイド文字列へのポインター。
戻り値
このメソッドの有効なリターン コードを次に示します。
値 | 意味 |
---|---|
|
エラー メッセージが正常に取得されました。 |
|
コンポーネント に対して PrepareForBackup エラー メッセージが設定されていません。 |
|
パラメーター値の 1 つが無効です。 |
|
呼び出し元がメモリやその他のシステム リソースを使い切れている。 |
注釈
呼び出し元は、sysFreeString 関数を呼び出すことによって、pbstrFailureMsg パラメーターが指す文字列を解放します。
例
#include <windows.h>
#include "vss.h"
#include "vsmgmt.h"
#define CHKARG_ASSERT(EXPR)
do
{
if(! ( EXPR ) )
{
assert(FALSE);
hr = E_INVALIDARG;
goto exit;
}
}
while ( FALSE, FALSE );
#define CHK(HR)
do
{
hr = ( HR ) ;
if(FAILED(HR))
{
hr = HR;
goto exit;
}
}
while ( FALSE, FALSE );
STDMETHODIMP CheckAsrBackupErrorMsg
(
IVssBackupComponents *pBackup,
const WCHAR *pwszWriterName
)
{
CComPtr<IVssWriterComponentsExt> spWriter;
CComPtr<IVssComponent> spComponent;
CComPtr<IVssComponentEx> spComponentEx;
UINT cWriterComponents = 0;
UINT iWriterComponent = 0;
UINT cComponents = 0;
UINT iComponent = 0;
VSS_ID idWriter;
VSS_ID idInstance;
CComBSTR bstrFailureMsg;
HRESULT hr = S_OK;
CHKARG_ASSERT( pBackup );
CHKARG_ASSERT( pwszWriterName );
CHK( pBackup->GetWriterComponentsCount( &cWriterComponents ) );
for( iWriterComponent = 0; iWriterComponent < cWriterComponents; iWriterComponent++ )
{
spWriter.Release();
CHK( pBackup->GetWriterComponents( iWriterComponent, &spWriter ) );
CHK( spWriter->GetWriterInfo(&idInstance, &idWriter) );
if( idWriter != c_ASRWriterId )
{
continue;
}
CHK( spWriter->GetComponentCount(&cComponents) );
for( iComponent = 0; iComponent < cComponents; iComponent++ )
{
spComponent.Release();
spComponentEx.Release();
CHK( spWriter->GetComponent(iComponent, &spComponent) );
CHK( spComponent->QueryInterface(__uuidof(IVssComponentEx), (void**)&spComponentEx) );
bstrFailureMsg.Empty();
CHK( spComponentEx->GetPrepareForBackupFailureMsg(&bstrFailureMsg) );
if( ::SysStringLen(bstrFailureMsg) != 0 )
{
// Write into the event log.
Log_SPP_ERROR_WRITER( &ft, __LINE__, pwszWriterName, bstrFailureMsg );
// The ASR writer writes the same message to all components.
// Log the message once.
break;
}
}
}
exit:
return hr;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | vswriter.h (Vss.h、VsWriter.h を含む) |
Library | VssApi.lib |