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.
|
|
// 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
/////////////////////////////////////////////////////////////////////////////
|