//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 1994. // // File: stkswtch.h // // Contents: Stack Switching proto types and macros // // Classes: // // Functions: // // History: 12-10-94 JohannP (Johann Posch) Created // //---------------------------------------------------------------------------- #ifndef _STKSWTCH_ #define _STKSWTCH_ #ifdef _CHICAGO_ extern "C" DWORD NEAR _cdecl SSCall(DWORD cbParamBytes, DWORD flags, LPVOID lpfnProcAddress, DWORD param1,...); #define SSF_BigStack 1 #define SSF_SmallStack 0 extern "C" BOOL WINAPI SSOnBigStack(VOID); DECLARE_DEBUG(Stack) #define DEB_STCKSWTCH DEB_USER1 #define SSOnSmallStack() (!SSOnBigStack()) #if DBG==1 extern BOOL fSSOn; #define SSONBIGSTACK() (fSSOn && IsWOWThread() && SSOnBigStack()) #define SSONSMALLSTACK() (fSSOn && IsWOWThread() && !SSOnBigStack()) #define StackAssert(x) ((fSSOn && IsWOWThread())? Win4Assert(x): TRUE) #define StackDebugOut(x) StackInlineDebugOut x #else #define SSONBIGSTACK() (IsWOWThread() && SSOnBigStack()) #define SSONSMALLSTACK() (IsWOWThread() && !SSOnBigStack()) #define StackAssert(x) #define StackDebugOut(x) #endif LRESULT WINAPI SSSendMessage(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); BOOL WINAPI SSReplyMessage(LRESULT lResult); LRESULT WINAPI SSCallWindowProc(WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); LRESULT WINAPI SSDefWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); BOOL WINAPI SSPeekMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax,UINT wRemoveMsg); BOOL WINAPI SSGetMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax); LONG WINAPI SSDispatchMessage(CONST MSG *lpMsg); DWORD WINAPI SSMsgWaitForMultipleObjects(DWORD nCount, LPHANDLE pHandles, BOOL fWaitAll, DWORD dwMilliseconds, DWORD dwWakeMask); BOOL WINAPI SSWaitMessage(VOID); BOOL WINAPI SSDirectedYield(HTASK htask); int WINAPI SSDialogBoxParam(HINSTANCE hInstance, LPCSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam); int WINAPI SSDialogBoxIndirectParam(HINSTANCE hInstance, LPCDLGTEMPLATEA hDialogTemplate, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam); #define SSDialogBox(a,b,c,d) \ SSDialogBoxParam(a,b,c,d, 0L) #define SSDialogBoxIndirect(a,b,c,d) \ SSDialogBoxIndirectParam(a,b,c,d,e, 0L) HWND WINAPI SSCreateWindowExA(DWORD dwExStyle, LPCSTR lpClassName,LPCSTR lpWindowName, DWORD dwStyle,int X,int Y,int nWidth,int nHeight, HWND hWndParent ,HMENU hMenu,HINSTANCE hInstance, LPVOID lpParam); HWND WINAPI SSCreateWindowExW(DWORD dwExStyle, LPCWSTR lpClassName,LPCWSTR lpWindowName, DWORD dwStyle, int X, int Y, int nWidth,int nHeight, HWND hWndParent ,HMENU hMenu,HINSTANCE hInstance, LPVOID lpParam); BOOL WINAPI SSDestroyWindow(HWND hWnd); int WINAPI SSMessageBox(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption, UINT uType); BOOL WINAPI SSOpenClipboard(HWND hWndNewOwner); BOOL WINAPI SSCloseClipboard(VOID); HWND WINAPI SSGetClipboardOwner(VOID); HANDLE WINAPI SSSetClipboardData(UINT uFormat,HANDLE hMem); HANDLE WINAPI SSGetClipboardData(UINT uFormat); UINT WINAPI SSRegisterClipboardFormatA(LPCSTR lpszFormat); UINT WINAPI SSEnumClipboardFormats(UINT format); int WINAPI SSGetClipboardFormatNameA(UINT format,LPSTR lpszFormatName,int cchMaxCount); BOOL WINAPI SSEmptyClipboard(VOID); BOOL WINAPI SSIsClipboardFormatAvailable(UINT format); BOOL WINAPI SSCreateProcessA( LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation); BOOL WINAPI SSInSendMessage(VOID); DWORD WINAPI SSInSendMessageEx(LPVOID); #if 0 #undef SendMessage #undef ReplyMessage #undef CallWindowProc #undef DefWindowProc #undef PeekMessage #undef GetMessage #undef DispatchMessage #undef WaitMessage #undef MsgWaitForMultipleObjects #undef DialogBoxParam #undef DialogBoxIndirectParam #undef CreateWindowExA #undef CreateWindowExW #undef DestroyWindow #undef MessageBox // #undef OpenClipboard #undef CloseClipboard #undef GetClipboardOwner #undef SetClipboardData #undef RegisterClipboardFormatA #undef EnumClipboardFormats #undef GetClipboardFormatNameA #undef EmptyClipboard #undef IsClipboardFormatAvailable #undef CreateProcessA #undef InSendMessage #undef InSendMessageEx // Define all user APIs to an undefined function to // force an compiling error. #define SS_STOP_STR USE_SS_API_INSTEAD /* error: Stack Switching: Please use SSxxx APIS! */ #define SendMessage( hWnd, Msg, wParam, lParam) SS_STOP_STR #define ReplyMessage( lResult) SS_STOP_STR #define CallWindowProc( lpPrevWndFunc, hWnd, Msg, wParam, lParam) SS_STOP_STR #define DefWindowProc( hWnd, Msg, wParam, lParam) SS_STOP_STR #define PeekMessage( lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax, wRemoveMsg) SS_STOP_STR #define GetMessage( lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax) SS_STOP_STR #define DispatchMessage( lpMsg) SS_STOP_STR #define WaitMessage() SS_STOP_STR #define MsgWaitForMultipleObjects(nCount, pHandles, fWaitAll, dwMilliseconds, dwWakeMask) SS_STOP_STR #define DialogBoxParam( hInstance, lpTemplateName, hWndParent, lpDialogFunc, dwInitParam) SS_STOP_STR #define DialogBoxIndirectParam( hInstance, hDialogTemplate, hWndParent, lpDialogFunc, dwInitParam) SS_STOP_STR #define CreateWindowExA( dwExStyle, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWndParent , hMenu, hInstance, lpParam) SS_STOP_STR #define CreateWindowExW( dwExStyle, lpClassName, lpWindowName, dwStyle, X, Y, nWidth, nHeight, hWndParent , hMenu, hInstance, lpParam) SS_STOP_STR #define DestroyWindow( hWnd) SS_STOP_STR #define MessageBox( hWnd, lpText, lpCaption, uType) SS_STOP_STR // #define OpenClipboard( hWndNewOwner) SS_STOP_STR #define CloseClipboard() SS_STOP_STR #define GetClipboardOwner() SS_STOP_STR #define SetClipboardData( uFormat, hMem) SS_STOP_STR #define RegisterClipboardFormatA(lpszFormat) SS_STOP_STR #define EnumClipboardFormats( format) SS_STOP_STR #define GetClipboardFormatNameA( format, lpszFormatName, cchMaxCount) SS_STOP_STR #define EmptyClipboard() SS_STOP_STR #define IsClipboardFormatAvailable( format) SS_STOP_STR #define CreateProcessA(lpApplicationName, lpCommandLine, lpProcessAttributes, lpThreadAttributes, bInheritHandles, dwCreationFlags, lpEnvironment, lpCurrentDirectory, lpStartupInfo, lpProcessInformation) SS_STOP_STR #define InSendMessage() SS_STOP_STR #define InSendMessageEx(lpResvd) SS_STOP_STR #endif // 0 #else // ! _CHICAGO // For non-chicago platrforms: define all SSxxx APIs // back to the original user api #define SSSendMessage SendMessage #define SSReplyMessage ReplyMessage #define SSCallWindowProc CallWindowProc #define SSDefWindowProc DefWindowProc #define SSPeekMessage PeekMessage #define SSGetMessage GetMessage #define SSDispatchMessage DispatchMessage #define SSWaitMessage WaitMessage #define SSMsgWaitForMultipleObjects MsgWaitForMultipleObjects #define SSDirectedYield DirectedYield #define SSDialogBoxParam DialogBoxParam #define SSDialogBoxIndirectParam DialogBoxIndirectParam #define SSCreateWindowExA CreateWindowExA #define SSCreateWindowExW CreateWindowExW #define SSDestroyWindow DestroyWindow #define SSMessageBox MessageBox #define SSOpenClipboard OpenClipboard #define SSCloseClipboard CloseClipboard #define SSGetClipboardOwner GetClipboardOwner #define SSSetClipboardData SetClipboardData #define SSGetClipboardData GetClipboardData #define SSRegisterClipboardFormatA RegisterClipboardFormatA #define SSEnumClipboardFormats EnumClipboardFormats #define SSGetClipboardFormatNameA GetClipboardFormatNameA #define SSEmptyClipboard EmptyClipboard #define SSIsClipboardFormatAvailable IsClipboardFormatAvailable #define SSCreateProcessA CreateProcessA #define SSInSendMessage InSendMessage #define SSInSendMessageEx InSendMessageEx #endif // _CHICAGO_ #ifdef _CHICAGO_ #define SSAPI(x) SS##x #else #define SSAPI(x) x #define StackDebugOut(x) #define StackAssert(x) #define SSOnSmallStack() #endif // _CHICAGO_ #endif // _STKSWTCH_