//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1999. // // File: srheader.hxx // // Contents: Common precompiled header for all System Restore Test utilities // and applications. // // Notes: // // History: 6-29-2000 jgreen Created // 9-15-2000 annah Added defines for compatibility // with STL. // //---------------------------------------------------------------------------- #ifndef _CSRHEADER #define _CSRHEADER #include #include #include #include #include "killwarn.h" // Kill useless informational warnings #include // For Win32 functions #include // UI/control helper functions #include // For STDIO stuff #include #include // For STDLIB stuff #include #include #include #include #include #include #include #include // For TCHAR functions #include #include #include #include // Common controls #include #include // shell utility api #include "tstparam.hxx" // CTestParams parameter container #ifndef ARRAYSIZE #define ARRAYSIZE(ar) sizeof(ar)/sizeof(ar[0]) #endif // BUGs on ole headers. Fix it here. #undef OLESTR #undef __OLESTR #ifndef _MAC #define __OLESTR(str) L##str #else #define __OLESTR(str) str #endif //_MAC #define OLESTR(str) __OLESTR(str) // Definition for compatibility of TCHAR with STL #ifdef UNICODE #define TSTRING wstring #else #define TSTRING string #endif //-------------------------------------------------------------------------- // Macros //-------------------------------------------------------------------------- #define DH_VDATEPTRIN( ptr, type ) \ { \ if ((NULL == ptr) || (FALSE != IsBadReadPtr(ptr, sizeof(type)))) \ { \ return E_INVALIDARG ; \ } \ } #define DH_VDATEPTROUT( ptr, type ) \ { \ if ((NULL == ptr) || (FALSE != IsBadWritePtr(ptr, sizeof(type)))) \ { \ return E_INVALIDARG ; \ } \ } #define DH_ABORTIF(condition,err_code,msg) \ { \ if ((condition)) \ { \ hr=err_code; \ if (S_OK == hr) \ { \ hr = E_FAIL; \ } \ goto ErrReturn; \ } \ } #define DH_HRCHECK_ABORT(hresult,message) \ { \ if (S_OK != hresult) \ { \ hr = hresult; \ goto ErrReturn; \ } \ } #define DH_ABORT_ALWAYS(err_code,msg) \ { \ hr = err_code; \ goto ErrReturn; \ } #define DH_ASSERT(cond) \ { \ assert(cond); \ } //-------------------------------------------------------------------------- // Inline functions //-------------------------------------------------------------------------- inline void CleanupTStr(LPTSTR *ptszToClean) { if (NULL != *ptszToClean) { delete [] *ptszToClean; *ptszToClean = NULL; } } inline void CleanupStr(LPSTR *pszToClean) { if (NULL != *pszToClean) { delete [] *pszToClean; *pszToClean = NULL; } } inline void CleanupWStr(LPWSTR *pwszToClean) { if (NULL != *pwszToClean) { delete [] *pwszToClean; *pwszToClean = NULL; } } inline void CleanupHandle(HANDLE &Hnd) { if (INVALID_HANDLE_VALUE != Hnd) { CloseHandle(Hnd); Hnd = INVALID_HANDLE_VALUE; } } inline void CleanupNullHandle(HANDLE &Hnd) { if (NULL != Hnd) { CloseHandle(Hnd); Hnd = NULL; } } inline void CleanupBlock(PVOID &rpvBlock) { if (NULL != rpvBlock) { delete [] rpvBlock; rpvBlock = NULL; } } //-------------------------------------------------------------------------- // Function prototypes //-------------------------------------------------------------------------- HRESULT SrTstStrCat(IN LPCSTR szStr1, IN LPCSTR szStr2, OUT LPSTR *ppDest); HRESULT SrTstTStrCat(IN LPCTSTR szStr1, IN LPCTSTR szStr2, OUT LPTSTR *ppDest); HRESULT CopyString(LPCWSTR, LPSTR *); HRESULT CopyString(LPCSTR, LPWSTR *); HRESULT CopyString(LPCSTR, LPSTR *); HRESULT CopyString(LPCWSTR, LPWSTR *); #endif