Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

67 lines
1.7 KiB

#pragma once
#include <objbase.h>
#define SafeRelease(p) if (NULL != p) { (p)->Release(); }
#define SafeReleaseNULL(p) if (NULL != p) { (p)->Release(); (p) = NULL; }
#define SafeFree(p) if (NULL != p) { free(p); }
#define SafeFreeNULL(p) if (NULL != p) { free(p); (p) = NULL; }
#define SafeDelete(p) if (NULL != p) { delete (p); }
#define SafeDeleteNULL(p) if (NULL != p) { delete (p); (p) = NULL; }
#define SafeLocalFree(p) if (NULL != p) { LocalFree(p); }
#define SafeLocalFreeNULL(p) if (NULL != p) { LocalFree(p); (p) = NULL; }
inline void SafeCloseHandle(HANDLE h)
{
if ( NULL != h )
{
CloseHandle(h);
}
}
inline void SafeCloseHandleNULL(HANDLE & h)
{
if ( NULL != h )
{
CloseHandle(h);
h = NULL;
}
}
inline void SafeCloseFileHandle(HANDLE h)
{
if ( INVALID_HANDLE_VALUE != h )
{
CloseHandle(h);
}
}
inline void SafeCloseFileHandleInvalidate(HANDLE & h)
{
if ( INVALID_HANDLE_VALUE != h )
{
CloseHandle(h);
h = INVALID_HANDLE_VALUE;
}
}
inline void SafeFreeBSTR(BSTR bstr)
{
SysFreeString(bstr); // SysFreeString takes no action if bstr == NULL
}
inline void SafeFreeBSTRNULL(BSTR &bstr)
{
SysFreeString(bstr);
bstr = NULL;
}
inline int WUCompareString(LPCTSTR lpString1, LPCTSTR lpString2)
{
return CompareString(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT), 0, lpString1, -1, lpString2, -1);
}
inline int WUCompareStringI(LPCTSTR lpString1, LPCTSTR lpString2)
{
return CompareString(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT), NORM_IGNORECASE, lpString1, -1, lpString2, -1);
}