119 lines
4.8 KiB
C
119 lines
4.8 KiB
C
//+---------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1997.
|
|
//
|
|
// File: K K U T I L S . H
|
|
//
|
|
// Contents: Misc. helper functions
|
|
//
|
|
// Notes:
|
|
//
|
|
// Author: kumarp 14 Jan 1997
|
|
//
|
|
//----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
#include "kkstl.h"
|
|
|
|
#ifndef NCAPI
|
|
#define NCAPI extern "C" HRESULT __declspec(dllexport)
|
|
#endif
|
|
|
|
#ifdef ENABLETRACE
|
|
#define DefineFunctionName(name) static char __FUNCNAME__[] = name
|
|
#else
|
|
#define DefineFunctionName(name) (void) 0
|
|
#define __FUNCNAME__ ""
|
|
#endif
|
|
|
|
#define DeleteIfNotNull(p) \
|
|
delete p; \
|
|
p = NULL;
|
|
|
|
#define ReturnHrIfFailedSz(hr,msg) if (FAILED(hr)) \
|
|
{ \
|
|
TraceError(msg, hr); \
|
|
return hr; \
|
|
}
|
|
#define ReturnHrIfFailed(hr) if (FAILED(hr)) \
|
|
{ \
|
|
TraceError(__FUNCNAME__, hr); \
|
|
return hr; \
|
|
}
|
|
#define ReturnErrorIf(condition,hr) if (condition) \
|
|
{ \
|
|
TraceError(__FUNCNAME__, hr); \
|
|
return hr; \
|
|
}
|
|
#define ReturnError(hr) if (1) { TraceFunctionError(hr); return hr; }
|
|
#define DoErrorCleanupAndReturnError(status_var,error_code) \
|
|
{ \
|
|
status_var = error_code; \
|
|
goto error_cleanup; \
|
|
}
|
|
#define DoErrorCleanupAndReturnErrorIf(condition,status_var,error_code) \
|
|
if (condition) \
|
|
{ \
|
|
status_var = error_code; \
|
|
goto error_cleanup; \
|
|
}
|
|
|
|
#define TraceFunctionEntry(ttid) TraceTag(ttid, "---------> entering %s", __FUNCNAME__)
|
|
#define TraceFunctionError(hr) TraceError(__FUNCNAME__, hr)
|
|
#define TraceLastWin32ErrorInCurrentFunction() TraceLastWin32Error(__FUNCNAME__)
|
|
#define TraceWin32FunctionError(e) TraceFunctionError(HRESULT_FROM_WIN32(e))
|
|
|
|
#define ReturnNULLIf(condition) if (condition) return NULL
|
|
#define BreakIf(condition) if (condition) break
|
|
#define ContinueIf(condition) if (condition) continue
|
|
//#define ReturnFalseIfFailed(hr) if ((hr) != S_OK) return FALSE
|
|
#define DoErrorCleanupIf(condition) if (condition) goto error_cleanup
|
|
#define AppendErrorAndReturnFalseIf(condition,e) if (condition) { AppendError(e); return FALSE;}
|
|
|
|
#define BenignAssert() AssertSz(FALSE,"Benign Assert (this is not a bug): Click Ignore to continue...")
|
|
|
|
#define CR L"\n"
|
|
|
|
void AddOnlyOnceToStringList(IN TStringList* psl, IN PCWSTR pszString);
|
|
void ConvertDelimitedListToStringList(IN const tstring& strDelimitedList,
|
|
IN WCHAR chDelimiter,
|
|
OUT TStringList &slList);
|
|
void ConvertCommaDelimitedListToStringList(IN const tstring& strDelimitedList,
|
|
OUT TStringList &slList);
|
|
void ConvertSpaceDelimitedListToStringList(IN const tstring& strDelimitedList,
|
|
OUT TStringList &slList);
|
|
|
|
|
|
void ConvertStringListToCommaList(IN const TStringList &slList,
|
|
OUT tstring &strList);
|
|
void ConvertStringListToDelimitedList(IN const TStringList &slList,
|
|
OUT tstring &strList, IN WCHAR chDelimiter);
|
|
|
|
BOOL IsBoolString(IN PCWSTR pszStr, OUT BOOL *pbValue);
|
|
|
|
BOOL UpgradingFromNT(IN DWORD dwUpgradeFlag);
|
|
|
|
BOOL FIsInStringArray(
|
|
IN const PCWSTR* ppszStrings,
|
|
IN DWORD cNumStrings,
|
|
IN PCWSTR pszStringToFind,
|
|
OUT UINT* puIndex=NULL);
|
|
|
|
HRESULT HrRegOpenServiceKey(IN PCWSTR pszServiceName,
|
|
REGSAM samDesired,
|
|
OUT HKEY* phKey);
|
|
HRESULT HrRegOpenServiceSubKey(IN PCWSTR pszServiceName,
|
|
IN PCWSTR pszSubKey,
|
|
REGSAM samDesired,
|
|
OUT HKEY* phKey);
|
|
BOOL FIsServiceKeyPresent(IN PCWSTR pszServiceName);
|
|
|
|
void AppendToPath(IN OUT tstring* pstrPath, IN PCWSTR pszItem);
|
|
void EraseAndDeleteAll(IN TStringArray* sa);
|
|
void ConvertDelimitedListToStringArray(IN const tstring& strDelimitedList,
|
|
IN WCHAR chDelimiter,
|
|
OUT TStringArray &saStrings);
|
|
void ConvertCommaDelimitedListToStringArray(IN const tstring& strDelimitedList,
|
|
OUT TStringArray &saStrings);
|