windows-nt/Source/XPSP1/NT/admin/activec/test/snapins/inc/basemmc.hxx
2020-09-26 16:20:57 +08:00

109 lines
2.9 KiB
C++

/*
* basemmc.hxx
*
*
* Copyright (c) 1998-1999 Microsoft Corporation
*
* PURPOSE: Includes all required headers for the basemmc subsystem
*
*
* OWNER: ptousig
*/
#ifndef _BASEMMC_HXX_
#define _BASEMMC_HXX_
//
// Forward declarations
//
class CComponent;
class CComponentData;
class CBaseSnapin;
class CBaseSnapinItem;
class CColumnInfoEx;
#define iconNil -1
//
// This string must be defined by the target (exadmin, maildsmx, adcadmin, etc...)
//
extern const tstring szHelpFileTOC; // The name of the TOC within the help file
#undef STRICT
#define STRICT
#ifndef _ATL_APARTMENT_THREADED
#define _ATL_APARTMENT_THREADED
#endif
//--------------------------------------------------------------
// Some macros to register snapins.
//--------------------------------------------------------------
#ifdef BASEMMC_SUB
#define BEGIN_SNAPIN_MAP()
#define SNAPIN_ENTRY(_class, _f) \
{ \
CComObject<_class> _m_; \
SC sc = _m_.ScRegister(_f); \
if(sc) \
throw(sc); \
}
#define END_SNAPIN_MAP()
#endif //BASEMMC_SUB
//--------------------------------------------------------------
// Smart pointer declarations
//
// A declaration like DEFINE_PTR(IConsole) translates to
// typedef CComQIPtr<IConsole, &IID_IConsole> IConsolePtr
//--------------------------------------------------------------
#define DEFINE_PTR(_a) typedef CComQIPtr<_a,&IID_##_a> _a##Ptr;
DEFINE_PTR(IRegistrar);
DEFINE_PTR(IResultData);
/*
* BEGIN_CODESPACE_DATA
* END_CODESPACE_DATA
*
* These macros are used to place static data into the code segment rather
* the data segment. This improves performance because the data segement
* doesn't have to be swapped in to access the data and because the data
* is defined in the same code segement as the code that's currently
* running no other pages have to be swapped in. LEGO is also able to
* further optimize the code when it sees data defined in this method.
*
* Usage:
*
* Any statically defined data should be wrapped with these macros. i.e
*
* BEGIN_CODESPACE_DATA
*
* static char sz[]="asfjsdfjlsajdfldsajflk";
*
* END_CODE_SPACE_DATA
*
*
*/
#if 1
// This is necessary for the VC 10.0 compiler
#define BEGIN_CODESPACE_DATA
#define END_CODESPACE_DATA
#else
#ifdef WIN32
#define BEGIN_CODESPACE_DATA data_seg(".text")
#define END_CODESPACE_DATA data_seg()
#else
#define BEGIN_CODESPACE_DATA data_seg("_CODE")
#define END_CODESPACE_DATA data_seg()
#endif
#endif
// Free Functions
void DLLAPI DeinitInstanceBaseMMC(void);
SC DLLAPI ScInitApplicationBaseMMC();
SC DLLAPI ScInitInstanceBaseMMC(void);
#endif _BASEMMC_HXX_