229 lines
8.7 KiB
C
229 lines
8.7 KiB
C
//+---------------------------------------------------------------------------
|
|
//
|
|
// 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_
|
|
|