Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
#ifndef _CHRESULT_HXX_
#define _CHRESULT_HXX_
class CHResult { public:
~CHResult() { Initialize(); }
CHResult() { _hr = E_FAIL; _bstrMessage = NULL; _pszFile = NULL; _ulLine = (ULONG) 0; }
CHResult( HRESULT hr, const LPOLESTR pwszMessage, const LPSTR pszFile, ULONG ulLine ) { _hr = hr;
_bstrMessage = SysAllocString( pwszMessage );
_pszFile = new CHAR[strlen(pszFile) + sizeof(CHAR)]; if( NULL != _pszFile ) memcpy( _pszFile, pszFile, strlen(pszFile) + sizeof(CHAR) );
_ulLine = ulLine; }
CHResult( HRESULT hr, LPOLESTR pwszMessage ) { this->CHResult::CHResult( hr, pwszMessage, NULL, 0 ); }
public:
operator HRESULT() { return( _hr ); }
operator LPOLESTR() { return( _bstrMessage ); }
operator =(HRESULT hr) { _hr = hr;
SysFreeString( _bstrMessage ); _bstrMessage = NULL;
return(_hr); }
public:
ULONG GetLastResult() { Initialize(); _hr = HRESULT_FROM_WIN32(GetLastResult()); return( _hr ); }
LPSTR GetFile() { return( _pszFile ); }
ULONG GetLine() { return( _ulLine ); }
private:
void Initialize() { _hr = E_FAIL; _ulLine = 0;
SysFreeString( _bstrMessage ); _bstrMessage = NULL;
CoTaskMemFree( _pszFile ); _pszFile = NULL; }
private:
HRESULT _hr; BSTR _bstrMessage; LPSTR _pszFile; ULONG _ulLine; };
#define CHRESULT(hr,pwszMessage) CHResult( hr, pwszMessage, __FILE__, __LINE__ )
#endif
|