Leaked source code of windows server 2003
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.
 
 
 
 
 
 

312 lines
9.5 KiB

// Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1993 Microsoft Corporation,
// All rights reserved.
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and Microsoft
// QuickHelp and/or WinHelp documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.
// afxdll_.h - extensions to AFXWIN.H used for the 'AFXDLL' version
// This file contains MFC library implementation details as well
// as APIs for writing MFC Extension DLLs.
// Please refer to Technical Note 033 (TN033) for more details.
/////////////////////////////////////////////////////////////////////////////
#ifndef _AFXDLL
#error illegal file inclusion
#endif
#undef AFXAPP_DATA
#define AFXAPP_DATA AFXAPI_DATA
/////////////////////////////////////////////////////////////////////////////
// get best fitting resource
HINSTANCE AFXAPI AfxFindResourceHandle(LPCSTR lpszName, LPCSTR lpszType);
/////////////////////////////////////////////////////////////////////////////
// CDynLinkLibrary - for implementation of MFC Extension DLLs
struct AFX_EXTENSION_MODULE
{
HMODULE hModule;
CRuntimeClass* pFirstSharedClass;
};
// Call in DLL's LibMain
void AFXAPI AfxInitExtensionModule(AFX_EXTENSION_MODULE& state, HMODULE hMod);
// there is one CDynLinkLibrary in each client application using an
// MFC Extension DLL
class CDynLinkLibrary : public CCmdTarget
{
DECLARE_DYNAMIC(CDynLinkLibrary)
public:
// Constructor
CDynLinkLibrary(AFX_EXTENSION_MODULE& state);
// Attributes
HMODULE m_hModule;
HMODULE m_hResource; // for shared resources
CRuntimeClass* m_pFirstSharedClass; // for shared CRuntimeClasses
#ifdef _AFXCTL
BOOL m_bSystem; // TRUE only for MFC DLLs
#endif
// Implementation
public:
CDynLinkLibrary* m_pNextDLL; // simple singly linked list
virtual ~CDynLinkLibrary();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif //_DEBUG
};
/////////////////////////////////////////////////////////////////////////////
// Diagnostic support (exported by App, used by MFC250D.DLL)
class COleDebugMalloc;
#ifdef _DEBUG
//WARNING: Do not change this structure since AFXDLL.ASM depends on
// the specific structure layout and size
struct AFX_APPDEBUG
{
// Trace output
void (CALLBACK* lpfnTraceV)(LPCSTR lpszFormat, const void FAR* lpArgs);
// Assert failure reporting
void (CALLBACK* lpfnAssertFailed)(LPCSTR lpszFileName, int nLine);
BOOL appTraceEnabled;
int appTraceFlags;
// state for current memory allocation ('bAllocObj' used for free as well)
LPCSTR lpszAllocFileName; // source file name (NULL => unknown)
UINT nAllocLine; // source line number
BOOL bAllocObj; // allocating CObject derived object
BOOL bMemoryTracking; // tracking on
// state for OLE debug allocations
COleDebugMalloc* appDebugMalloc; // OLE 2.0 debug allocator
};
#define _AfxGetAppDebug() (_AfxGetAppData()->pAppDebug)
#define afxTraceEnabled (_AfxGetAppDebug()->appTraceEnabled)
#define afxTraceFlags (_AfxGetAppDebug()->appTraceFlags)
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// App specific data for _AFXDLL version
class CHandleMap; // not NEAR in _AFXDLL version
struct AFX_VBSTATE; // VB State
struct AFX_FRSTATE; // Find/Replace state (for CEditView)
struct AFX_OLESTATE; // OLE State
struct AFX_SOCKSTATE; // Socket State
typedef void FAR* HENV; // must match SQL.H
#ifndef _AFXCTL
//WARNING: Do not change this structure since the assembler DLL init
// the specific structure layout and size
struct AFX_APPDATA // starts at SS:0010
{
WORD cbSize; // size of this structure
WORD wVersion; // 0x0250 for MFC 250
#ifdef _DEBUG
AFX_APPDEBUG BASED_STACK* pAppDebug;
UINT wReserved;
#else
DWORD dwReserved;
#endif
DWORD dwReserved2;
DWORD dwReserved3;
FARPROC lpfnVBApiEntry; // must be at SS:0020
// App provided/exported memory allocation interface etc
void (CALLBACK* lpfnAppAbort)(); // SS:0024
FARPROC (CALLBACK* lpfnAppSetNewHandler)(FARPROC); // SS:0028
void* (CALLBACK* lpfnAppAlloc)(size_t nBytes); // SS:002C
void (CALLBACK* lpfnAppFree)(void*); // SS:0030
void* (CALLBACK* lpfnAppReAlloc)(void* pOld, size_t nSize); // SS:0034
DWORD dwReserved4; // SS:0038
DWORD dwReserved5; // SS:0040
// app state
CWinApp* appCurrentWinApp;
HINSTANCE appCurrentInstanceHandle;
HINSTANCE appCurrentResourceHandle;
AFX_EXCEPTION_CONTEXT appExceptionContext;
const char* appCurrentAppName;
DWORD appTempMapLock;
// internal App initialization and state
HBRUSH appDlgBkBrush;
COLORREF appDlgTextClr;
HHOOK appHHookOldMsgFilter;
HHOOK appHHookOldCbtFilter;
BOOL appUserAbort; // for printing and other app modal states
// splitter window state (used in winsplit.cpp)
HCURSOR hcurSplitLast;
HCURSOR hcurSplitDestroy;
UINT idcSplitPrimaryLast;
// linkage to shared resources/classes
CDynLinkLibrary* pFirstDLL; // order is important for resource loads
CRuntimeClass* pFirstAppClass; // CRuntimeClass support
CFrameWnd* appFirstFrameWnd; // first frame window for this app
// sub-system state storage
// handle maps
CHandleMap* appMapHGDIOBJ;
CHandleMap* appMapHDC;
CHandleMap* appMapHMENU;
CHandleMap* appMapHWND;
AFX_VBSTATE FAR* appVBState;
AFX_FRSTATE FAR* appLastFRState;
AFX_OLESTATE FAR* appOleState;
WORD appWaitForDataSource; // semaphore for async database access
BOOL bDBExtensionDLL;
HENV appHenvAllConnections;
int appAllocatedConnections;
HINSTANCE appInstMail; // handle to MAPI.DLL
AFX_SOCKSTATE FAR* appSockState;
};
#define _AfxGetAppData() ((AFX_APPDATA BASED_STACK*)0x10)
#else
struct AFX_APPDATA_MODULE
{
AFX_APPDATA_MODULE* m_pID; // Uniquely identify where this data came from.
// app state
CWinApp* appCurrentWinApp;
HINSTANCE appCurrentInstanceHandle;
HINSTANCE appCurrentResourceHandle;
const char* appCurrentAppName;
// linkage to shared resources/classes
CDynLinkLibrary* pFirstDLL; // order is important for resource loads
CFrameWnd* appFirstFrameWnd; // first frame window for this app
CRuntimeClass* pFirstAppClass; // CRuntimeClass support
AFX_OLESTATE FAR* appOleState;
// dialog state
HBRUSH appDlgBkBrush;
COLORREF appDlgTextClr;
};
struct AFX_APPDATA : AFX_APPDATA_MODULE
{
#ifdef _DEBUG
AFX_APPDEBUG *pAppDebug;
#endif
// splitter window state (used in winsplit.cpp)
HCURSOR hcurSplitLast;
HCURSOR hcurSplitDestroy;
UINT idcSplitPrimaryLast;
AFX_EXCEPTION_CONTEXT appExceptionContext;
// internal App initialization and state
HHOOK appHHookOldMsgFilter;
HHOOK appHHookOldCbtFilter;
BOOL appUserAbort; // for printing and other app modal states
// sub-system state storage
WORD appWaitForDataSource; // semaphore for async database access
BOOL bDBExtensionDLL;
// handle maps
DWORD appTempMapLock;
CHandleMap* appMapHGDIOBJ;
CHandleMap* appMapHDC;
CHandleMap* appMapHMENU;
CHandleMap* appMapHWND;
// App provided/exported memory allocation interface etc
void (CALLBACK* lpfnAppAbort)();
FARPROC (CALLBACK* lpfnAppSetNewHandler)(FARPROC);
void* (CALLBACK* lpfnAppAlloc)(size_t nBytes);
void (CALLBACK* lpfnAppFree)(void*);
void* (CALLBACK* lpfnAppReAlloc)(void* pOld, size_t nSize);
AFX_FRSTATE FAR* appLastFRState;
WORD cbSize; // size of this structure
WORD wVersion; // 0x0251 for OC 251
HINSTANCE appLangDLL; // Localized resources
BOOL bLangDLLInit; // TRUE if language DLL is initialized
CMapPtrToPtr* appMapExtra; // Extra data for controls
HENV appHenvAllConnections;
int appAllocatedConnections;
};
extern AFX_APPDATA_MODULE* AFXAPI AfxGetBaseModuleContext();
extern AFX_APPDATA_MODULE* AFXAPI AfxGetCurrentModuleContext();
extern AFX_APPDATA* _AfxGetAppData();
#define AfxGetExtraDataMap() (_AfxGetAppData()->appMapExtra);
#define _afxOleState (*_AfxGetAppData()->appOleState)
#define _afxFirstFactory (_AfxGetAppData()->appOleState->pFirstFactory)
#define _afxModuleAddrCurrent AfxGetCurrentModuleContext()
#define AFX_MANAGE_STATE(pData) AFX_MAINTAIN_STATE _ctlState(pData);
#define METHOD_MANAGE_STATE(theClass, localClass) \
METHOD_PROLOGUE(theClass, localClass) \
AFX_MANAGE_STATE(pThis->m_pModuleState)
extern AFX_APPDATA_MODULE* AFXAPI AfxPushModuleContext(AFX_APPDATA_MODULE* psIn);
extern void AFXAPI AfxPopModuleContext(AFX_APPDATA_MODULE* psIn,
BOOL bCopy = FALSE);
// When using this object, or the macros above that use this object
// it is necessary to insure that the object's destructor cannot be
// thrown past, by an unexpected exception.
class AFX_MAINTAIN_STATE
{
private:
AFX_APPDATA_MODULE* m_psPrevious;
public:
AFX_MAINTAIN_STATE(AFX_APPDATA_MODULE* psData);
~AFX_MAINTAIN_STATE();
};
#endif
#define afxTempMapLock (_AfxGetAppData()->appTempMapLock)
// Extra Initialization
extern "C" int PASCAL AfxWinMain(HINSTANCE, HINSTANCE, LPSTR, int);
#undef AFXAPP_DATA
#define AFXAPP_DATA NEAR
/////////////////////////////////////////////////////////////////////////////