DragonNest/Server/ServiceMonitorEx/Source/SysBaseBase.h
Cussrro 47f7895977 Revert "修复编码问题"
This reverts commit 9e69c01767.
2024-12-21 10:04:04 +08:00

164 lines
6 KiB
C

/*//===============================================================
<< SYSTEM BASE HEADER >>
PRGM : B4nFter
FILE : SYSBASEBASE.H
DESC : System Base 라이브러리의 대부분의 구성 컴포넌트들이 공통적으로 갖추어야할 매크로와 헤더 선언등을 모아놓은 헤더
INIT BUILT DATE : 2005. 10. 15
LAST BUILT DATE : 2005. 10. 15
P.S.>
- 내부 컴포턴트들만을 위한 헤더로 내부에서만 INCLUDE 하여 사용
Copyrightⓒ 2002~2009 B4nFter (b4nfter@gmail.com) and Co-Writers. All Rights Reserved.
*///===============================================================
#pragma once
///////////////////////////////////////////////////////////////////
// LINK OPTION
///////////////////////////////////////////////////////////////////
// warning 제거
#if defined(_MSC_VER) && (_MSC_VER <= 1200) // for VS 6.0 or less version.
#pragma warning(disable:4786)
#pragma warning(disable:4251)
#elif defined(_MSC_VER) && (_MSC_VER > 1200) // for VS 7.0 or more version.
#pragma warning(disable:4251)
#endif // _MSC_VER
// DLL용 링크접두사 선언
#if defined(N4A_EXPORT)
#define N4A_DECLSPEC __declspec(dllexport)
#define N4A_DECLSPEC_EXC extern"C" __declspec(dllexport) // C타입 링크관계 사용 (다른 C++타입 링크관계 함수의 함수포인터로 들어가는 경우 오류 주의)
#elif defined(N4A_IMPORT)
#define N4A_DECLSPEC __declspec(dllimport)
#define N4A_DECLSPEC_EXC extern"C" __declspec(dllimport) // C타입 링크관계 사용 (다른 C++타입 링크관계 함수의 함수포인터로 들어가는 경우 오류 주의)
#else // !defined(N4A_EXPORT) && !defined(N4A_IMPORT)
#define N4A_DECLSPEC
#define N4A_DECLSPEC_EXC
#endif // !defined(N4A_EXPORT) && !defined(N4A_IMPORT)
///////////////////////////////////////////////////////////////////
// INCLUDE
///////////////////////////////////////////////////////////////////
//#pragma warning (disable:4995) // !!! 임시 - 안전 문자열 CRT함수 관련 경고 끔
#pragma warning (disable:4996) // !!! 임시 - 안전 문자열 CRT함수 관련 경고 끔
#pragma warning (disable:4819) // !!! 임시 - 코드페이지 처리 관련 경고 끔
/*
<윈도우 버전 설정>
Minimum system required Macros to define
------------------------ ------------------------
Windows Vista WINVER>=0x0600/_WIN32_WINNT>=0x0600
Windows Server 2003 family WINVER>=0x0502/_WIN32_WINNT>=0x0502
Windows XP WINVER>=0x0501/_WIN32_WINNT>=0x0501
Windows 2000 WINVER>=0x0500/_WIN32_WINNT>=0x0500
Windows NT 4.0 WINVER>=0x0400/_WIN32_WINNT>=0x0400
Windows Me WINVER>=0x0500/_WIN32_WINDOWS=0x0500
Windows 98 WINVER>=0x0410/_WIN32_WINDOWS>=0x0410
Windows 95 WINVER>=0x0400/_WIN32_WINDOWS>=0x0400
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/using_the_windows_headers.asp
<인터넷 익스플로어러 버전 설정>
Minimum system required Macros to define
------------------------ ------------------------
Internet Explorer 7.0 _WIN32_IE>=0x0700
Internet Explorer 6.0 SP2 _WIN32_IE>=0x0603
Internet Explorer 6.0 SP1 _WIN32_IE>=0x0601
Internet Explorer 6.0 _WIN32_IE>=0x0600
Internet Explorer 5.5 _WIN32_IE>=0x0550
Internet Explorer 5.01 _WIN32_IE>=0x0501
Internet Explorer 5.0, 5.0a, 5.0b _WIN32_IE>=0x0500
Internet Explorer 4.01 _WIN32_IE>=0x0401
Internet Explorer 4.0 _WIN32_IE>=0x0400
Internet Explorer 3.0, 3.01, 3.02 _WIN32_IE>=0x0300
P.S.>
- MBCS 사용 시 Windows 98 부터, _UNICODE 사용 시 Windows Server 2003 부터 지원
- 버전을 나타내는 매크로가 여럿 있지만 WINVER는 항상 있으므로 WINVER 사용
- WINVER 사용 시 Windows 98 이 Windows NT 4.0 보다 크므로 Windows Server 2000 을 기준으로 함
- ODBC 는 자체 헤더에 별도 지정 (미구현)
*/
#if defined(_MBCS)
#if defined(_WIN32_WINDOWS)
#undef _WIN32_WINDOWS
#endif // #if defined(_WIN32_WINDOWS)
#if !defined(_WIN32_WINDOWS)
#define _WIN32_WINDOWS 0x0410
#endif // #if !defined(_WIN32_WINDOWS)
#if defined(_WIN32_WINNT) && (_WIN32_WINNT < 0x0502)
#undef _WIN32_WINNT
#endif // #if defined(_WIN32_WINNT) && (_WIN32_WINNT < 0x0502)
#if !defined(_WIN32_WINNT)
#define _WIN32_WINNT 0x0502
#endif // #if !defined(_WIN32_WINNT)
#if defined(WINVER)
#undef WINVER
#endif // #if defined(WINVER)
#if !defined(WINVER)
#define WINVER 0x0410
#endif // #if !defined(WINVER)
#else // #if defined(_MBCS)
#if defined(_WIN32_WINNT) && (_WIN32_WINNT < 0x0502)
#undef _WIN32_WINNT
#endif // #if defined(_WIN32_WINNT) && (_WIN32_WINNT < 0x0502)
#if !defined(_WIN32_WINNT)
#define _WIN32_WINNT 0x0502
#endif // #if !defined(_WIN32_WINNT)
#if defined(WINVER) && (WINVER < 0x0502)
#undef WINVER
#endif // #if defined(WINVER) && (WINVER < 0x0502)
#if !defined(WINVER)
#define WINVER 0x0502
#endif // #if !defined(WINVER)
#endif // #if defined(_MBCS)
// Windows 의 min/max 대신 STL 의 min/max 사용
#if !defined(NOMINMAX)
#define NOMINMAX
#endif // NOMINMAX
// C4996 경고 방지
#if !defined(_DEBUG)
#define _CRT_SECURE_NO_DEPRECATE
#endif // _DEBUG
//#define _HAS_ITERATOR_DEBUGGING 0 // DEBUG 모드일 때 STL 경고 무시 (기본값 1)
//#define EXCEPT_EXTERNALLIB // 서버프로젝트 이외의 외부 프로젝트에서 파일단위로 포함하여 사용할 경우 '프로젝트 속성 → 링커 → 입력' 에서 라이브러리의 상대경로를 추가하여 사용
#include <AFX.H>
#include <WINSOCK2.H>
#include <MSWSOCK.H>
#include <WINDOWS.H>
#include <TCHAR.H>
#include <STDIO.H>
#include <STDLIB.H>
#include <BASETSD.H> // WIN64 데이터타입 변환
#include <STRING>
#include <LMERR.H>
#define _CONVERSION_DONT_USE_THREAD_LOCALE // ATL 7.0 부터 생긴 각 스레드별 코드페이지를 얻어오지 않고 기존 ATL 3.0 처럼 CP_THREAD_ACP 매크로 사용
#include <ATLBASE.H> // ATL 7.0 문자열 변환 클래스와 매크로를 위함
#include <ATLCONV.H>
//#include "SWITCH.H" // SWITCH 가 내부 기본헤더를 포함하는 모듈 뿐 아니라 바로 추가되는 모든 모듈에도 영향을 줄 수 있도록 함
#include "COMMONMACROS.HPP"
#include "BASESET.HPP"
#include "DEBUGSET.HPP"
#include "SAFESTRINGMACROS.HPP"
// DWORD 형 리턴값 타입정의 - 차후 적당한 파일로 이동
#define HASERROR ((DWORD)0x00000001L) // NOERROR 의 반대의미 (에러있음)
#define OLEERROR ((HRESULT)0x80040000L) // HRESULT 에러 (OLE_E_FIRST) (P.S.> S_FALSE 는 성공을 의미 → SUCCEEDED(), FAILED() 에서 에러로 취급되지 않음)