windows-nt/Source/XPSP1/NT/net/rras/cm/common/inc/cmutil.h
2020-09-26 16:20:57 +08:00

324 lines
10 KiB
C++

//+----------------------------------------------------------------------------
//
// File: cmutil.h
//
// Module: CMUTIL.DLL
//
// Synopsis: Header file for Private CM APIs
//
// Copyright (c) 1997-1999 Microsoft Corporation
//
// Author: henryt Created 03/01/98
//
//+----------------------------------------------------------------------------
#ifndef _CMUTIL_INC_
#define _CMUTIL_INC_
#ifdef _CMUTIL_MODULE_
#define CMUTILAPI /*extern "C" __declspec(dllexport)*/
#define CMUTILAPI_CLASS __declspec(dllexport)
#else
#define CMUTILAPI /*extern "C" __declspec(dllimport)*/
#define CMUTILAPI_CLASS __declspec(dllimport)
#endif
#include "cini.h"
//+----------------------------------------------------------------------------
// defines
//+----------------------------------------------------------------------------
//
// platform ID for WINDOWS98
//
#define VER_PLATFORM_WIN32_WINDOWS98 100
//
// platform ID for WINDOWS Millennium
//
#define VER_PLATFORM_WIN32_MILLENNIUM 200
//
// OS version macros
//
#define OS_NT ((GetOSVersion() == VER_PLATFORM_WIN32_NT))
#define OS_W9X ((GetOSVersion() != VER_PLATFORM_WIN32_NT))
#define OS_NT6 ((GetOSVersion() == VER_PLATFORM_WIN32_NT) && (GetOSMajorVersion() >= 6))
#define OS_NT51 ((GetOSVersion() == VER_PLATFORM_WIN32_NT) && (GetOSMajorVersion() >= 5) && (GetOSBuildNumber() > 2195))
#define OS_NT5 ((GetOSVersion() == VER_PLATFORM_WIN32_NT) && (GetOSMajorVersion() >= 5))
#define OS_NT4 ((GetOSVersion() == VER_PLATFORM_WIN32_NT) && (GetOSMajorVersion() < 5))
#define OS_W2K ((GetOSVersion() == VER_PLATFORM_WIN32_NT) && (GetOSBuildNumber() == 2195))
#define OS_MIL ((GetOSVersion() == VER_PLATFORM_WIN32_MILLENNIUM))
#define OS_W98 ((GetOSVersion() == VER_PLATFORM_WIN32_WINDOWS98) || (GetOSVersion() == VER_PLATFORM_WIN32_MILLENNIUM))
#define OS_W95 ((GetOSVersion() == VER_PLATFORM_WIN32_WINDOWS))
#ifdef UNICODE
#define CmStrTrim CmStrTrimW
#define CmIsSpace CmIsSpaceW
#define CmIsDigit CmIsDigitW
#define CmEndOfStr CmEndOfStrW
#define CmAtol CmAtolW
#define CmStrStr CmStrStrW
#define CmStrchr CmStrchrW
#define CmStrrchr CmStrrchrW
#define CmStrtok CmStrtokW
#define CmStrCpyAlloc CmStrCpyAllocW
#define CmStrCatAlloc CmStrCatAllocW
#define CmLoadString CmLoadStringW
#define CmParsePath CmParsePathW
#define CmConvertRelativePath CmConvertRelativePathW
#define CmStripPathAndExt CmStripPathAndExtW
#define CmStripFileName CmStripFileNameW
#define CmBuildFullPathFromRelative CmBuildFullPathFromRelativeW
#define CmFmtMsg CmFmtMsgW
#define CmLoadImage CmLoadImageW
#define CmLoadIcon CmLoadIconW
#define CmLoadSmallIcon CmLoadSmallIconW
#else
#define CmStrTrim CmStrTrimA
#define CmIsSpace CmIsSpaceA
#define CmIsDigit CmIsDigitA
#define CmEndOfStr CmEndOfStrA
#define CmAtol CmAtolA
#define CmStrStr CmStrStrA
#define CmStrchr CmStrchrA
#define CmStrrchr CmStrrchrA
#define CmStrtok CmStrtokA
#define CmStrCpyAlloc CmStrCpyAllocA
#define CmStrCatAlloc CmStrCatAllocA
#define CmLoadString CmLoadStringA
#define CmParsePath CmParsePathA
#define CmConvertRelativePath CmConvertRelativePathA
#define CmStripPathAndExt CmStripPathAndExtA
#define CmStripFileName CmStripFileNameA
#define CmBuildFullPathFromRelative CmBuildFullPathFromRelativeA
#define CmFmtMsg CmFmtMsgA
#define CmLoadImage CmLoadImageA
#define CmLoadIcon CmLoadIconA
#define CmLoadSmallIcon CmLoadSmallIconA
#endif
//+----------------------------------------------------------------------------
// typedefs
//+----------------------------------------------------------------------------
//+----------------------------------------------------------------------------
// declarations
//+----------------------------------------------------------------------------
CMUTILAPI int WzToSz(IN LPCWSTR pszwStrIn, OUT LPSTR pszStrOut, IN int nOutBufferSize);
CMUTILAPI int SzToWz(IN LPCSTR pszInput, OUT LPWSTR pszwOutput, IN int nBufferSize);
CMUTILAPI LPSTR WzToSzWithAlloc(LPCWSTR pszwWideString);
CMUTILAPI LPWSTR SzToWzWithAlloc(LPCSTR pszAnsiString);
CMUTILAPI DWORD WINAPI GetOSVersion(void);
CMUTILAPI DWORD WINAPI GetOSBuildNumber(void);
CMUTILAPI DWORD WINAPI GetOSMajorVersion(void);
CMUTILAPI BOOL WINAPI IsFarEastNonOSR2Win95(void);
CMUTILAPI HRESULT ReleaseBold(HWND hwnd);
CMUTILAPI HRESULT MakeBold (HWND hwnd, BOOL fSize);
CMUTILAPI void UpdateFont(HWND hDlg);
CMUTILAPI int WzToSz(IN LPCWSTR pszwStrIn, OUT LPSTR pszStrOut, IN int nOutBufferSize);
CMUTILAPI int SzToWz(IN LPCSTR pszInput, OUT LPWSTR pszwOutput, IN int nBufferSize);
CMUTILAPI LPSTR WzToSzWithAlloc(LPCWSTR pszwWideString);
CMUTILAPI LPWSTR SzToWzWithAlloc(LPCSTR pszAnsiString);
CMUTILAPI BOOL CmWinHelp(HWND hWndMain, HWND hWndItem, CONST WCHAR *lpszHelp, UINT uCommand, ULONG_PTR dwData);
CMUTILAPI BOOL IsLogonAsSystem();
//
// Ansi Functions
//
CMUTILAPI LPSTR CmLoadStringA(HINSTANCE hInst, UINT nId);
CMUTILAPI void WINAPI CmStrTrimA(LPSTR);
CMUTILAPI BOOL WINAPI CmIsSpaceA(LPSTR);
CMUTILAPI BOOL WINAPI CmIsDigitA(LPSTR);
CMUTILAPI LPSTR WINAPI CmEndOfStrA(LPSTR);
CMUTILAPI LONG WINAPI CmAtolA(LPCSTR);
CMUTILAPI LPSTR CmStrStrA(LPCSTR, LPCSTR);
CMUTILAPI LPSTR WINAPI CmStrchrA(LPCSTR, CHAR);
CMUTILAPI LPSTR CmStrrchrA(LPCSTR, CHAR);
CMUTILAPI LPSTR CmStrtokA(LPSTR, LPCSTR);
CMUTILAPI LPSTR CmStrCpyAllocA(LPCSTR);
CMUTILAPI LPSTR CmStrCatAllocA(LPSTR *ppszDst, LPCSTR pszSrc);
CMUTILAPI LPSTR CmFmtMsgA(HINSTANCE hInst, DWORD dwMsgId, ...);
CMUTILAPI HANDLE CmLoadImageA(HINSTANCE hMainInst, LPCSTR pszSpec, UINT nResType, UINT nCX, UINT nCY);
CMUTILAPI HICON CmLoadIconA(HINSTANCE hInst, LPCSTR pszSpec);
CMUTILAPI HICON CmLoadSmallIconA(HINSTANCE hInst, LPCSTR pszSpec);
CMUTILAPI BOOL CmParsePathA(LPCSTR pszCmdLine, LPCSTR pszServiceFile, LPSTR *ppszCommand, LPSTR *ppszArguments);
CMUTILAPI LPSTR CmConvertRelativePathA(LPCSTR pszServiceFile, LPSTR pszRelative);
CMUTILAPI LPSTR CmStripPathAndExtA(LPCSTR pszFileName);
CMUTILAPI LPSTR CmStripFileNameA(LPCSTR pszFullNameAndPath, BOOL fKeepSlash);
CMUTILAPI LPSTR CmBuildFullPathFromRelativeA(LPCSTR pszFullFileName, LPCSTR pszRelative);
//
// Unicode Functions
//
CMUTILAPI LPWSTR CmLoadStringW(HINSTANCE hInst, UINT nId);
CMUTILAPI void WINAPI CmStrTrimW(LPWSTR);
CMUTILAPI BOOL WINAPI CmIsSpaceW(LPWSTR);
CMUTILAPI BOOL WINAPI CmIsDigitW(LPWSTR);
CMUTILAPI LPWSTR WINAPI CmEndOfStrW(LPWSTR);
CMUTILAPI LONG WINAPI CmAtolW(LPCWSTR);
CMUTILAPI LPWSTR CmStrStrW(LPCWSTR, LPCWSTR);
CMUTILAPI LPWSTR WINAPI CmStrchrW(LPCWSTR, WCHAR);
CMUTILAPI LPWSTR CmStrrchrW(LPCWSTR, WCHAR);
CMUTILAPI LPWSTR CmStrtokW(LPWSTR, LPCWSTR);
CMUTILAPI LPWSTR CmStrCpyAllocW(LPCWSTR);
CMUTILAPI LPWSTR CmStrCatAllocW(LPWSTR *ppszDst, LPCWSTR pszSrc);
CMUTILAPI LPWSTR CmFmtMsgW(HINSTANCE hInst, DWORD dwMsgId, ...);
CMUTILAPI HANDLE CmLoadImageW(HINSTANCE hMainInst, LPCWSTR pszSpec, UINT nResType, UINT nCX, UINT nCY);
CMUTILAPI HICON CmLoadIconW(HINSTANCE hInst, LPCWSTR pszSpec);
CMUTILAPI HICON CmLoadSmallIconW(HINSTANCE hInst, LPCWSTR pszSpec);
CMUTILAPI BOOL CmParsePathW(LPCWSTR pszCmdLine, LPCWSTR pszServiceFile, LPWSTR *ppszCommand, LPWSTR *ppszArguments);
CMUTILAPI LPWSTR CmConvertRelativePathW(LPCWSTR pszServiceFile, LPWSTR pszRelative);
CMUTILAPI LPWSTR CmStripPathAndExtW(LPCWSTR pszFileName);
CMUTILAPI LPWSTR CmStripFileNameW(LPCWSTR pszFullNameAndPath, BOOL fKeepSlash);
CMUTILAPI LPWSTR CmBuildFullPathFromRelativeW(LPCWSTR pszFullFileName, LPCWSTR pszRelative);
//
// If DEBUG_MEM is defined, used a different set of functions
// to track memory
//
#if defined(DEBUG) && defined(DEBUG_MEM)
CMUTILAPI void* AllocDebugMem(long nSize, const char* lpFileName,int nLine);
CMUTILAPI BOOL FreeDebugMem(void* lpMem);
CMUTILAPI void* ReAllocDebugMem(void* lpMem, long nSize, const char* lpFileName,int nLine);
CMUTILAPI BOOL CheckDebugMem();
#define CmMalloc(nSize) AllocDebugMem(nSize,__FILE__, __LINE__)
#define CmFree(lpMem) ((void)FreeDebugMem(lpMem))
#define CmRealloc(pvPtr, nSize) ReAllocDebugMem(pvPtr, nSize,__FILE__, __LINE__)
inline void __cdecl operator delete(void* p) {CmFree(p);}
inline void* __cdecl operator new(size_t nSize, const char* lpszFileName, int nLine)
{
return AllocDebugMem(nSize, lpszFileName, nLine);
}
//
// Redefine new to keep trak of the file name and line number
//
#define DEBUG_NEW new(__FILE__, __LINE__)
#define new DEBUG_NEW
#else
CMUTILAPI void *CmRealloc(void *pvPtr, size_t nBytes);
CMUTILAPI void *CmMalloc(size_t nBytes);
CMUTILAPI void CmFree(void *pvPtr);
#define CheckDebugMem() (TRUE)
inline void __cdecl operator delete(void* p) {CmFree(p);}
inline void* __cdecl operator new( size_t cSize ) { return CmMalloc(cSize); }
#endif
//
// for i386
//
#ifdef _M_IX86
CMUTILAPI PVOID WINAPI CmMoveMemory(
PVOID dst,
CONST PVOID src,
size_t count
);
#else
//
// alpha has native support
//
#define CmMoveMemory MoveMemory
#endif //_M_IX86
//+----------------------------------------------------------------------------
// definitions
//+----------------------------------------------------------------------------
//
// Returns a pseudo-random number 0 through 32767. Taken from the C runtime rand().
//
class CMUTILAPI_CLASS CRandom
{
public:
CRandom(void) { m_uiSeed = GetTickCount(); }
CRandom(UINT uiSeed) { m_uiSeed = uiSeed; }
void Init(DWORD uiSeed) { m_uiSeed = uiSeed; }
int Generate(void) { return(((m_uiSeed = m_uiSeed * 214013L + 2531011L) >> 16) & 0x7fff); }
protected:
UINT m_uiSeed;
};
//
// thread local storage index
//
extern DWORD g_dwTlsIndex;
#endif _CMUTIL_INC_