mirror of https://github.com/tongzx/nt5src
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
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);
|
|
}
|