|
|
/////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Microsoft WMIOLE DB Provider
// (C) Copyright 1999 Microsoft Corporation. All Rights Reserved.
//
// UTIL.h - HEader file for utility functions
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef _UTIL_HEADER
#define _UTIL_HEADER
class CWbemConnectionWrapper;
#define SAFE_DELETE_PTR(pv) \
{ if(pv) delete pv; \ pv = NULL; }
#define SAFE_RELEASE_PTR(pv) \
{ if(pv){ pv->Release(); } \ pv = NULL; }
#define SAFE_DELETE_ARRAY(pv) \
{ if(pv) delete []pv; \ pv = NULL; }
#define SAFE_FREE_SYSSTRING(pv) \
{ if(pv){ SysFreeString(pv);} \ pv = NULL; }
#define TRY_BLOCK try {
#define CATCH_BLOCK_HRESULT(hr , str) } \
catch(CStructured_Exception e_SE) \ { \ hr = E_UNEXPECTED; \ FormatAndLogMessage(L"%s: HEAP_EXCEPTION",str); \ } \ catch(CHeap_Exception e_HE) \ { \ FormatAndLogMessage(L"%s: STRUCTURED_EXCEPTION",str); \ hr = E_OUTOFMEMORY; \ } \ catch(...) \ { \ FormatAndLogMessage(L"%s: UNSPECIFIED_EXCEPTION",str); \ hr = E_UNEXPECTED; \ }
#define CATCH_BLOCK_BOOL(bVal,str) } \
catch(CStructured_Exception e_SE) \ { \ bVal = FALSE; \ FormatAndLogMessage(L"%s: HEAP_EXCEPTION",str); \ } \ catch(CHeap_Exception e_HE) \ { \ FormatAndLogMessage(L"%s: STRUCTURED_EXCEPTION",str); \ bVal = FALSE; \ } \ catch(...) \ { \ FormatAndLogMessage(L"%s: UNSPECIFIED_EXCEPTION",str); \ bVal = FALSE; \ }
BOOL UnicodeToAnsi(WCHAR * pszW, char *& pAnsi); void AllocateAndConvertAnsiToUnicode(char * pstr, WCHAR *& pszW);
void TranslateAndLog( WCHAR * wcsMsg ); void LogMessage( char * szMsg ); void LogMessage( char * szMsg , HRESULT hr); void LogMessage( WCHAR * szMsg ); void LogMessage( WCHAR * szMsg , HRESULT hr); BOOL OnUnicodeSystem(); void FormatAndLogMessage( LPCWSTR pszFormatString,... ); BSTR Wmioledb_SysAllocString(const OLECHAR * sz); void GetInitAndBindFlagsFromBindFlags(DBBINDURLFLAG dwBindURLFlags,LONG & lInitMode ,LONG & lInitBindFlags); int WMIOledb_LoadStringW(UINT nID, LPWSTR lpszBuf, UINT nMaxBuf);
int wbem_wcsicmp(const wchar_t* wsz1, const wchar_t* wsz2); int wbem_wcsincmp(const wchar_t* wsz1, const wchar_t* wsz2,int nChars);
DWORD GetImpLevel(DWORD dwImpPropVal); DWORD GetAuthnLevel(DWORD dwAuthnPropVal); HRESULT InitializeConnectionProperties(CWbemConnectionWrapper *pConWrap,DBPROPSET* prgPropertySets,BSTR strPath); HRESULT GetClassName(CURLParser *pUrlParser,DBPROPSET* prgPropertySets,BSTR &strClassName,CWbemConnectionWrapper *pConWrapper = NULL); DBTYPE GetVBCompatibleAutomationType(DBTYPE dbInType);
class CTString { TCHAR * m_pStr; public: CTString(); ~CTString(); HRESULT LoadStr(UINT lStrID);
operator LPTSTR() { return m_pStr; } // operator LPCTSTR() { return (LPCTSTR)m_pStr; }
};
typedef enum FetchDir { FETCHDIRNONE = -1, FETCHDIRFORWARD, FETCHDIRBACKWARD, } FETCHDIRECTION;
#endif
|