102 lines
2.1 KiB
C++
102 lines
2.1 KiB
C++
// Copyright (c) Microsoft. All rights reserved.
|
|
//
|
|
// This is unpublished source code of Microsoft.
|
|
// The copyright notice above does not evidence any
|
|
// actual or intended publication of such source code.
|
|
|
|
// OneLiner : Implementation of MWmiError
|
|
// DevUnit : wlbstest
|
|
// Author : Murtaza Hakim
|
|
|
|
// include files
|
|
#include "MWmiError.h"
|
|
#include "MTrace.h"
|
|
|
|
// initialize static variables.
|
|
//
|
|
MWmiError* MWmiError::_instance = 0;
|
|
|
|
// constructor
|
|
//
|
|
MWmiError::MWmiError()
|
|
: pStatus(NULL)
|
|
{
|
|
SCODE sc;
|
|
|
|
sc = CoCreateInstance(CLSID_WbemStatusCodeText, 0, CLSCTX_INPROC_SERVER,
|
|
IID_IWbemStatusCodeText, (LPVOID *) &pStatus);
|
|
if( sc != S_OK )
|
|
{
|
|
TRACE(MTrace::SEVERE_ERROR, L"CoCreateInstance failure\n");
|
|
throw( WBEM_E_UNEXPECTED );
|
|
}
|
|
}
|
|
|
|
|
|
// Instance
|
|
//
|
|
MWmiError*
|
|
MWmiError::Instance()
|
|
{
|
|
if( _instance == 0 )
|
|
{
|
|
_instance = new MWmiError;
|
|
}
|
|
|
|
return _instance;
|
|
}
|
|
|
|
// GetErrorCodeText
|
|
//
|
|
MWmiError::MWmiError_Error
|
|
MWmiError::GetErrorCodeText( const HRESULT hr,
|
|
_bstr_t& errText )
|
|
{
|
|
MWmiError_Error err;
|
|
SCODE sc;
|
|
BSTR bstr = 0;
|
|
|
|
sc = pStatus->GetFacilityCodeText( hr,
|
|
0,
|
|
0,
|
|
&bstr );
|
|
if( sc != S_OK )
|
|
{
|
|
TRACE(MTrace::SEVERE_ERROR, L"CoCreateInstance failure\n");
|
|
throw( WBEM_E_UNEXPECTED );
|
|
}
|
|
|
|
errText = bstr;
|
|
|
|
SysFreeString( bstr );
|
|
bstr = 0;
|
|
|
|
sc = pStatus->GetErrorCodeText( hr,
|
|
0,
|
|
0,
|
|
&bstr );
|
|
if( sc != S_OK )
|
|
{
|
|
TRACE(MTrace::SEVERE_ERROR, L"CoCreateInstance failure\n");
|
|
throw( WBEM_E_UNEXPECTED );
|
|
}
|
|
|
|
errText = errText + L": " + bstr;
|
|
|
|
SysFreeString( bstr );
|
|
bstr = 0;
|
|
|
|
return MWmiError_SUCCESS;
|
|
|
|
}
|
|
|
|
// GetErrorCodeText
|
|
//
|
|
MWmiError::MWmiError_Error
|
|
GetErrorCodeText( const HRESULT hr, _bstr_t& errText )
|
|
{
|
|
static MWmiError* wmiErr = MWmiError::Instance();
|
|
|
|
return wmiErr->GetErrorCodeText( hr, errText );
|
|
}
|