/////////////////////////////////////////////////////////////////////////// // // Copyright(C) 1997-1998 Microsoft Corporation all rights reserved. // // Module: iasexceptns.h // // Project: Everest // // Description: IAS Exceptions // // Author: TLP 1/20/98 // /////////////////////////////////////////////////////////////////////////// #ifndef _IAS_EXCEPTIONS_H #define _IAS_EXCEPTIONS_H // Assume another include has #included ias.h // Exception Class for Win32 Errors class CWin32Error { LPTSTR m_lpMsgBuf; DWORD m_dwLastError; public: ////////////////////////////////////////////////////////////////////// CWin32Error() throw() : m_lpMsgBuf(NULL) { m_dwLastError = GetLastError(); } ////////////////////////////////////////////////////////////////////// ~CWin32Error() throw() { if ( m_lpMsgBuf ) { LocalFree( m_lpMsgBuf ); } } ////////////////////////////////////////////////////////////////////// DWORD Error() { return m_dwLastError; } ////////////////////////////////////////////////////////////////////// LPCTSTR Reason() const throw() { DWORD dwCount; _ASSERTE ( NULL == m_lpMsgBuf ); dwCount = FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM, NULL, m_dwLastError, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language (LPTSTR) &m_lpMsgBuf, 0, NULL ); if ( dwCount > 0 ) { return m_lpMsgBuf; } else { return NULL; } } }; #endif // __IAS_EXCEPTIONS_H