Release 970824 Sat Aug 23 00:05:23 1997 Andreas Mohr <100.30936@germany.net> * [if1632/kernel.spec] [if1632/mmsystem.spec] Added some stubs. * [include/neexe.h] [loader/module.c] Added warning for OS/2 executables. * [multimedia/midi.c] Shortened MIDIOUT driver version string to be less than 31 chars. * [objects/gdiobj.c] Fixed DeleteObject32() to react properly when called with stock object. Fri Aug 22 18:03:26 1997 Dimitrie O. Paun <dimi@cs.toronto.edu> * [controls/updown.c] [include/updown.h] First attempt at implementiong the UpDown class. * [controls/widgets.c] Added the UpDown class to be initialized by InitCommonControls(). Wed Aug 20 18:01:33 1997 Doug Ridgway <ridgway@routh.UCSD.EDU> * [graphics/*] [objects/*] [include/gdi.h] Made all GDI objects (except DCs) moveable. Mon Aug 18 03:25:30 1997 Alex Korobka <alex@trantor.pharm.sunysb.edu> * [windows/event.c] [misc/winsock.c] [misc/winsock_dns.c] Removed IPC communication to speed up winsock services (tested only with 16-bit netscape 3.03). * [graphics/x11drv/xfont.c] [documentation/fonts] Miscellaneous improvements. Updated docs. Sun Aug 17 20:39:55 1997 Ingo Schneider <schneidi@informatik.tu-muenchen.de> * [misc/comm.c] A couple of bug fixes. Sun Aug 17 19:29:22 1997 Alexandre Julliard <julliard@lrc.epfl.ch> * [debugger/dbg.y] Display next instruction after stepi/nexti. * [if1632/relay.c] [include/callback.h] [tools/build.c] Replaced CallTo32_LargeStack with the CALL_LARGE_STACK macro for better Winelib support. * [include/sigcontext.h] Renamed to sig_context.h to avoid conflicts with libc. * [*/*] All API functions are now prefixed with WINAPI in prevision of future Winelib integration. * [loader/signal.c] [memory/ldt.c] Fixed assembly code to be -fPIC compatible. Thu Aug 14 14:38:15 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de> * [if1632/crtdll.spec][win32/except.c] _global_unwind, _local_unwind stub added. * [objects/dib.c] Don't read memory you don't even need for the target bitmap (fixes one 'lazy' program). * [if1632/relay.c][if1632/thunk.c][if1632/kernel32.spec] [win32/ordinals.c][memory/selector.c][memory/global.c] [include/callback.h] Added/moved some more win95 ordinal stuff. Implemented QT_Thunk (not 100% correct yet) and some friends. * [loader/pe_image.c] Add possibility to break at the DLL entrypoint. * [controls/static.c][misc/commdlg.c][scheduler/thread.c] Misc bugfixes and additions. * [misc/registry.c] The registry seems to be case-preserving but case-insensitive. * [memory/global.c] Adapted to new /proc/meminfo format. * [objects/font.c][graphics/x11drv/xfont.c] FONT_SelectObject and GetTextMetrics* get passed ranges in logical and not device points (thanks to Marion Reyzl for pointing this out). * [windows/caret.c] Use the windows own DC if present (The caret coordinates are logical coordinates based on it). Fixes another AMIPRO problem. Wed Aug 6 18:22:22 1997 Morten Welinder <terra@diku.dk> * [controls/menu.c] General clean-up and Win32 work: split item_flags into fType and fState; split item_id into wID and hSubMenu. Improved debug-printing. Implemented InsertMenuItem32[AW], SetMenuDefaultItem32, and SetMenuItemInfo32[AW]. Fixed GetMenuItemInfo32[AW]. * [if1632/user32.spec] Define above new functions. * [include/windows.h] Define MF_DEFAULT and MF_RIGHTJUSTIFY. Prototype above functions. * [include/menu.h] Don't prototype now-static MENU_InitSysMenuPopup. * [include/comm.h] Reduce MAX_PORTS to 9 (which the profile code can handle). Tue Aug 5 20:16:22 1997 Victor Schneider <vischne@ibm.net> * [library/winestub.c] [libtest/expand.c] These patches let people porting Windows apps compile them using the same conventions regarding global _argc and _argv as those on Windows C/C++ compilers.
diff --git a/ANNOUNCE b/ANNOUNCE index 73a0d1a..b22dffa 100644 --- a/ANNOUNCE +++ b/ANNOUNCE
@@ -1,13 +1,15 @@ -This is release 970804 of Wine, the MS Windows emulator. This is still a +This is release 970824 of Wine, the MS Windows emulator. This is still a developer's only release. There are many bugs and many unimplemented API features. Most applications still do not work correctly. Patches should be submitted to "julliard@lrc.epfl.ch". Please don't forget to include a ChangeLog entry. -WHAT'S NEW with Wine-970804: (see ChangeLog for details) - - Joystick support. - - More Win32 stuff. +WHAT'S NEW with Wine-970824: (see ChangeLog for details) + - Better Win32 menu support. + - Improved Winsock. + - UpDown control. + - More undocumented Win95 hacks. - Lots of bug fixes. See the README file in the distribution for installation instructions. @@ -16,10 +18,10 @@ the release is available at the ftp sites. The sources will be available from the following locations: - ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-970804.tar.gz - ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-970804.tar.gz - ftp://ftp.infomagic.com/pub/mirrors/linux/wine/development/Wine-970804.tar.gz - ftp://ftp.progsoc.uts.edu.au/pub/Wine/development/Wine-970804.tar.gz + ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/development/Wine-970824.tar.gz + ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/development/Wine-970824.tar.gz + ftp://ftp.infomagic.com/pub/mirrors/linux/wine/development/Wine-970824.tar.gz + ftp://ftp.progsoc.uts.edu.au/pub/Wine/development/Wine-970824.tar.gz It should also be available from any site that mirrors tsx-11 or sunsite.
diff --git a/BUGS b/BUGS index 74110a3..05f5253 100644 --- a/BUGS +++ b/BUGS
@@ -42,9 +42,6 @@ * "Cursor XXXX has more than 1 bpp!" - * 32-bit Freecell segfaults when started from the Progman (looks like - a problem with cards.dll). - * Margins in edit controls are too wide. * SGI window manager treats Wine windows as topmost.
diff --git a/ChangeLog b/ChangeLog index f1264ad..94d3fd9 100644 --- a/ChangeLog +++ b/ChangeLog
@@ -1,4 +1,129 @@ ---------------------------------------------------------------------- +Sat Aug 23 00:05:23 1997 Andreas Mohr <100.30936@germany.net> + + * [if1632/kernel.spec] [if1632/mmsystem.spec] + Added some stubs. + + * [include/neexe.h] [loader/module.c] + Added warning for OS/2 executables. + + * [multimedia/midi.c] + Shortened MIDIOUT driver version string to be less than 31 chars. + + * [objects/gdiobj.c] + Fixed DeleteObject32() to react properly when called with stock object. + +Fri Aug 22 18:03:26 1997 Dimitrie O. Paun <dimi@cs.toronto.edu> + + * [controls/updown.c] [include/updown.h] + First attempt at implementiong the UpDown class. + + * [controls/widgets.c] + Added the UpDown class to be initialized by InitCommonControls(). + +Wed Aug 20 18:01:33 1997 Doug Ridgway <ridgway@routh.UCSD.EDU> + + * [graphics/*] [objects/*] [include/gdi.h] + Made all GDI objects (except DCs) moveable. + +Mon Aug 18 03:25:30 1997 Alex Korobka <alex@trantor.pharm.sunysb.edu> + + * [windows/event.c] [misc/winsock.c] [misc/winsock_dns.c] + Removed IPC communication to speed up winsock services + (tested only with 16-bit netscape 3.03). + + * [graphics/x11drv/xfont.c] [documentation/fonts] + Miscellaneous improvements. Updated docs. + +Sun Aug 17 20:39:55 1997 Ingo Schneider <schneidi@informatik.tu-muenchen.de> + + * [misc/comm.c] + A couple of bug fixes. + +Sun Aug 17 19:29:22 1997 Alexandre Julliard <julliard@lrc.epfl.ch> + + * [debugger/dbg.y] + Display next instruction after stepi/nexti. + + * [if1632/relay.c] [include/callback.h] [tools/build.c] + Replaced CallTo32_LargeStack with the CALL_LARGE_STACK macro for + better Winelib support. + + * [include/sigcontext.h] + Renamed to sig_context.h to avoid conflicts with libc. + + * [*/*] + All API functions are now prefixed with WINAPI in prevision of + future Winelib integration. + + * [loader/signal.c] [memory/ldt.c] + Fixed assembly code to be -fPIC compatible. + +Thu Aug 14 14:38:15 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de> + + * [if1632/crtdll.spec][win32/except.c] + _global_unwind, _local_unwind stub added. + + * [objects/dib.c] + Don't read memory you don't even need for the target bitmap (fixes + one 'lazy' program). + + * [if1632/relay.c][if1632/thunk.c][if1632/kernel32.spec] + [win32/ordinals.c][memory/selector.c][memory/global.c] + [include/callback.h] + Added/moved some more win95 ordinal stuff. Implemented QT_Thunk + (not 100% correct yet) and some friends. + + * [loader/pe_image.c] + Add possibility to break at the DLL entrypoint. + + * [controls/static.c][misc/commdlg.c][scheduler/thread.c] + Misc bugfixes and additions. + + * [misc/registry.c] + The registry seems to be case-preserving but case-insensitive. + + * [memory/global.c] + Adapted to new /proc/meminfo format. + + * [objects/font.c][graphics/x11drv/xfont.c] + FONT_SelectObject and GetTextMetrics* get passed ranges in logical + and not device points (thanks to Marion Reyzl for pointing this + out). + + * [windows/caret.c] + Use the windows own DC if present (The caret coordinates are + logical coordinates based on it). Fixes another AMIPRO problem. + +Wed Aug 6 18:22:22 1997 Morten Welinder <terra@diku.dk> + + * [controls/menu.c] + General clean-up and Win32 work: split item_flags into fType and + fState; split item_id into wID and hSubMenu. Improved + debug-printing. Implemented InsertMenuItem32[AW], + SetMenuDefaultItem32, and SetMenuItemInfo32[AW]. Fixed + GetMenuItemInfo32[AW]. + + * [if1632/user32.spec] + Define above new functions. + + * [include/windows.h] + Define MF_DEFAULT and MF_RIGHTJUSTIFY. Prototype above functions. + + * [include/menu.h] + Don't prototype now-static MENU_InitSysMenuPopup. + + * [include/comm.h] + Reduce MAX_PORTS to 9 (which the profile code can handle). + +Tue Aug 5 20:16:22 1997 Victor Schneider <vischne@ibm.net> + + * [library/winestub.c] [libtest/expand.c] + These patches let people porting Windows apps compile them using + the same conventions regarding global _argc and _argv as those on + Windows C/C++ compilers. + +---------------------------------------------------------------------- Sun Aug 3 14:03:43 1997 Alexandre Julliard <julliard@lrc.epfl.ch> * [documentation/Makefile.in]
diff --git a/README b/README index 25a81f6..01bc791 100644 --- a/README +++ b/README
@@ -83,7 +83,8 @@ The best place to get help or to report bugs is the Usenet newsgroup comp.emulators.ms-windows.wine. The Wine FAQ is posted there every -month. +month. Also, you may want to browse old messages on www.dejanews.com +to check whether your problem is already fixed. If you add something, or fix a bug, please send a patch ('diff -u' format preferred) to julliard@lrc.epfl.ch for inclusion in the next
diff --git a/controls/Makefile.in b/controls/Makefile.in index 3379b18..9d24345 100644 --- a/controls/Makefile.in +++ b/controls/Makefile.in
@@ -16,6 +16,7 @@ scroll.c \ static.c \ status.c \ + updown.c \ widgets.c all: $(MODULE).o
diff --git a/controls/button.c b/controls/button.c index 07cc5e1..312282d 100644 --- a/controls/button.c +++ b/controls/button.c
@@ -71,7 +71,8 @@ /*********************************************************************** * ButtonWndProc */ -LRESULT ButtonWndProc(HWND32 hWnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) +LRESULT WINAPI ButtonWndProc( HWND32 hWnd, UINT32 uMsg, + WPARAM32 wParam, LPARAM lParam ) { RECT16 rect; WND *wndPtr = WIN_FindWndPtr(hWnd);
diff --git a/controls/combo.c b/controls/combo.c index 3771933..3c3590f 100644 --- a/controls/combo.c +++ b/controls/combo.c
@@ -83,30 +83,32 @@ */ static LRESULT COMBO_NCCreate(WND* wnd, LPARAM lParam) { - LPHEADCOMBO lphc; + LPHEADCOMBO lphc; - if ( wnd && COMBO_Init() && + if ( wnd && COMBO_Init() && (lphc = HeapAlloc(GetProcessHeap(), 0, sizeof(HEADCOMBO))) ) - { - LPCREATESTRUCT32A lpcs = (CREATESTRUCT32A*)lParam; + { + LPCREATESTRUCT32A lpcs = (CREATESTRUCT32A*)lParam; - memset( lphc, 0, sizeof(HEADCOMBO) ); + memset( lphc, 0, sizeof(HEADCOMBO) ); *(LPHEADCOMBO*)wnd->wExtra = lphc; /* some braindead apps do try to use scrollbar/border flags */ - lphc->dwStyle = (lpcs->style & ~(WS_BORDER | WS_HSCROLL | WS_VSCROLL)); - wnd->dwStyle &= ~(WS_BORDER | WS_HSCROLL | WS_VSCROLL); + lphc->dwStyle = (lpcs->style & ~(WS_BORDER | WS_HSCROLL | WS_VSCROLL)); + wnd->dwStyle &= ~(WS_BORDER | WS_HSCROLL | WS_VSCROLL); - if( !(lpcs->style & (CBS_OWNERDRAWFIXED | CBS_OWNERDRAWVARIABLE)) ) - lphc->dwStyle |= CBS_HASSTRINGS; + if( !(lpcs->style & (CBS_OWNERDRAWFIXED | CBS_OWNERDRAWVARIABLE)) ) + lphc->dwStyle |= CBS_HASSTRINGS; + if( !(wnd->dwExStyle & WS_EX_NOPARENTNOTIFY) ) + lphc->wState |= CBF_NOTIFY; - dprintf_combo(stddeb, "COMBO_NCCreate: [0x%08x], style = %08x\n", - (UINT32)lphc, lphc->dwStyle ); + dprintf_combo(stddeb, "COMBO_NCCreate: [0x%08x], style = %08x\n", + (UINT32)lphc, lphc->dwStyle ); - return (LRESULT)(UINT32)wnd->hwndSelf; - } - return (LRESULT)FALSE; + return (LRESULT)(UINT32)wnd->hwndSelf; + } + return (LRESULT)FALSE; } /*********************************************************************** @@ -1239,7 +1241,8 @@ * * http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/ctrl/src/combobox_15.htm */ -LRESULT ComboWndProc(HWND32 hwnd, UINT32 message, WPARAM32 wParam, LPARAM lParam) +LRESULT WINAPI ComboWndProc( HWND32 hwnd, UINT32 message, + WPARAM32 wParam, LPARAM lParam ) { WND* pWnd = WIN_FindWndPtr(hwnd);
diff --git a/controls/desktop.c b/controls/desktop.c index 6708fb7..b1651f2 100644 --- a/controls/desktop.c +++ b/controls/desktop.c
@@ -131,8 +131,8 @@ * * Window procedure for the desktop window. */ -LRESULT DesktopWndProc( HWND32 hwnd, UINT32 message, - WPARAM32 wParam, LPARAM lParam ) +LRESULT WINAPI DesktopWndProc( HWND32 hwnd, UINT32 message, + WPARAM32 wParam, LPARAM lParam ) { WND *wndPtr = WIN_FindWndPtr( hwnd ); DESKTOPINFO *infoPtr = (DESKTOPINFO *)wndPtr->wExtra; @@ -169,7 +169,7 @@ /*********************************************************************** * SetDeskPattern (USER.279) */ -BOOL16 SetDeskPattern(void) +BOOL16 WINAPI SetDeskPattern(void) { char buffer[100]; GetProfileString32A( "desktop", "Pattern", "(None)", buffer, 100 ); @@ -180,7 +180,7 @@ /*********************************************************************** * SetDeskWallPaper16 (USER.285) */ -BOOL16 SetDeskWallPaper16( LPCSTR filename ) +BOOL16 WINAPI SetDeskWallPaper16( LPCSTR filename ) { return SetDeskWallPaper32( filename ); } @@ -191,7 +191,7 @@ * * FIXME: is there a unicode version? */ -BOOL32 SetDeskWallPaper32( LPCSTR filename ) +BOOL32 WINAPI SetDeskWallPaper32( LPCSTR filename ) { HBITMAP32 hbitmap; HDC32 hdc;
diff --git a/controls/edit.c b/controls/edit.c index 0a8a3d48..28373cd 100644 --- a/controls/edit.c +++ b/controls/edit.c
@@ -148,7 +148,8 @@ /* * This is the only exported function */ -LRESULT EditWndProc(HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam); +LRESULT WINAPI EditWndProc( HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ); /* * Helper functions only valid for one type of control */ @@ -297,7 +298,8 @@ * names). * */ -LRESULT EditWndProc(HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam) +LRESULT WINAPI EditWndProc( HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ) { WND *wnd = WIN_FindWndPtr(hwnd); EDITSTATE *es = *(EDITSTATE **)((wnd)->wExtra);
diff --git a/controls/icontitle.c b/controls/icontitle.c index 1864086..b54801e 100644 --- a/controls/icontitle.c +++ b/controls/icontitle.c
@@ -185,7 +185,8 @@ /*********************************************************************** * IconTitleWndProc */ -LRESULT IconTitleWndProc( HWND32 hWnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam ) +LRESULT WINAPI IconTitleWndProc( HWND32 hWnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ) { WND *wnd = WIN_FindWndPtr( hWnd );
diff --git a/controls/listbox.c b/controls/listbox.c index 71f56be..5466abe 100644 --- a/controls/listbox.c +++ b/controls/listbox.c
@@ -233,7 +233,8 @@ { INT32 diff = (descr->top_item - index) / descr->page_size * descr->column_width; if (scroll && (abs(diff) < descr->width)) - ScrollWindow32( wnd->hwndSelf, diff, 0, NULL, NULL ); + ScrollWindowEx32( wnd->hwndSelf, diff, 0, NULL, NULL, 0, NULL, + SW_INVALIDATE | SW_ERASE ); else scroll = FALSE; } @@ -259,7 +260,8 @@ diff = (descr->top_item - index) * descr->item_height; if (abs(diff) < descr->height) - ScrollWindow32( wnd->hwndSelf, 0, diff, NULL, NULL ); + ScrollWindowEx32( wnd->hwndSelf, 0, diff, NULL, NULL, 0, NULL, + SW_INVALIDATE | SW_ERASE ); else scroll = FALSE; } @@ -1006,7 +1008,8 @@ descr->horz_pos = pos; LISTBOX_UpdateScroll( wnd, descr ); if (abs(diff) < descr->width) - ScrollWindow32( wnd->hwndSelf, diff, 0, NULL, NULL ); + ScrollWindowEx32( wnd->hwndSelf, diff, 0, NULL, NULL, 0, NULL, + SW_INVALIDATE | SW_ERASE ); else InvalidateRect32( wnd->hwndSelf, NULL, TRUE ); } @@ -2019,6 +2022,8 @@ *(LB_DESCR **)wnd->wExtra = descr; +/* if (wnd->dwExStyle & WS_EX_NOPARENTNOTIFY) descr->style &= ~LBS_NOTIFY; + */ if (descr->style & LBS_EXTENDEDSEL) descr->style |= LBS_MULTIPLESEL; if (descr->style & LBS_MULTICOLUMN) descr->style &= ~LBS_OWNERDRAWVARIABLE; if (descr->style & LBS_OWNERDRAWVARIABLE) descr->style |= LBS_NOINTEGRALHEIGHT; @@ -2066,7 +2071,8 @@ /*********************************************************************** * ListBoxWndProc */ -LRESULT ListBoxWndProc(HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam) +LRESULT WINAPI ListBoxWndProc( HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ) { LRESULT ret; LB_DESCR *descr; @@ -2491,7 +2497,8 @@ * NOTE: in Windows, winproc address of the ComboLBox is the same * as that of the Listbox. */ -LRESULT ComboLBWndProc(HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam) +LRESULT WINAPI ComboLBWndProc( HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ) { LRESULT lRet = 0; WND *wnd = WIN_FindWndPtr( hwnd );
diff --git a/controls/menu.c b/controls/menu.c index 769084b..5a1e28c 100644 --- a/controls/menu.c +++ b/controls/menu.c
@@ -51,26 +51,24 @@ #define MM_SETMENUHANDLE (WM_USER + 0) #define MM_GETMENUHANDLE (WM_USER + 1) -typedef struct -{ - HBITMAP32 hCheckBit; - HBITMAP32 hUnCheckBit; -} CBITMAPS, *PCBITMAPS; - /* Menu item structure */ -typedef struct -{ - UINT32 item_flags; /* Item flags */ - UINT32 item_id; /* Item or popup id */ +typedef struct { + /* ----------- MENUITEMINFO Stuff ----------- */ + UINT32 fType; /* Item type. */ + UINT32 fState; /* Item state. */ + UINT32 wID; /* Item id. */ + HMENU32 hSubMenu; /* Pop-up menu. */ + HBITMAP32 hCheckBit; /* Bitmap when checked. */ + HBITMAP32 hUnCheckBit; /* Bitmap when unchecked. */ + LPSTR text; /* Item text or bitmap handle. */ + DWORD dwItemData; /* Application defined. */ + /* ----------- Wine stuff ----------- */ RECT32 rect; /* Item area (relative to menu window) */ UINT32 xTab; /* X position of text after Tab */ - PCBITMAPS pCB; /* checkmark bitmaps */ - LPSTR text; /* Item text or bitmap handle */ } MENUITEM; /* Popup menu structure */ -typedef struct -{ +typedef struct { WORD wFlags; /* Menu flags (MF_POPUP, MF_SYSMENU) */ WORD wMagic; /* Magic number */ HQUEUE16 hTaskQ; /* Task queue for this menu */ @@ -98,6 +96,7 @@ } MTRACKER; #define MENU_MAGIC 0x554d /* 'MU' */ +#define IS_A_MENU(pmenu) ((pmenu) && (pmenu)->wMagic == MENU_MAGIC) #define ITEM_PREV -1 #define ITEM_NEXT 1 @@ -112,24 +111,33 @@ #define POPUP_YSHADE 4 /* Space between 2 menu bar items */ -int MENU_BAR_ITEMS_SPACE = 12; +#define MENU_BAR_ITEMS_SPACE 12 /* Minimum width of a tab character */ -int MENU_TAB_SPACE = 8; +#define MENU_TAB_SPACE 8 /* Height of a separator item */ -int SEPARATOR_HEIGHT = 5; +#define SEPARATOR_HEIGHT 5 /* (other menu->FocusedItem values give the position of the focused item) */ #define NO_SELECTED_ITEM 0xffff -#define IS_STRING_ITEM(flags) \ - (!((flags) & (MF_BITMAP | MF_OWNERDRAW | MF_SEPARATOR))) +#define MENU_ITEM_TYPE(flags) \ + ((flags) & (MF_STRING | MF_BITMAP | MF_OWNERDRAW | MF_SEPARATOR)) + +#define IS_STRING_ITEM(flags) (MENU_ITEM_TYPE ((flags)) == MF_STRING) + #define IS_SYSTEM_MENU(menu) \ (!((menu)->wFlags & MF_POPUP) && (menu)->wFlags & MF_SYSMENU) #define IS_SYSTEM_POPUP(menu) \ ((menu)->wFlags & MF_POPUP && (menu)->wFlags & MF_SYSMENU) +#define TYPE_MASK (MFT_STRING | MFT_BITMAP | MFT_OWNERDRAW | MFT_SEPARATOR | \ + MFT_MENUBARBREAK | MFT_MENUBREAK | MFT_RADIOCHECK | \ + MFT_RIGHTORDER | MFT_RIGHTJUSTIFY | \ + MF_POPUP | MF_SYSMENU | MF_HELP) +#define STATE_MASK (~TYPE_MASK) + /* Dimension of the menu bitmaps */ static WORD check_bitmap_width = 0, check_bitmap_height = 0; static WORD arrow_bitmap_width = 0, arrow_bitmap_height = 0; @@ -150,6 +158,92 @@ /*********************************************************************** + * debug_print_menuitem + * + * Print a menuitem in readable form. + */ + +#define MENUOUT(text) \ + dprintf_menu (stddeb, "%s%s", (count++ ? "," : ""), (text)) + +#define MENUFLAG(bit,text) \ + do { \ + if (flags & (bit)) { flags &= ~(bit); MENUOUT ((text)); } \ + } while (0) + +static void debug_print_menuitem(const char *prefix, MENUITEM * mp, const char *postfix) +{ + dprintf_menu(stddeb, "%s", prefix); + if (mp) { + UINT32 flags = mp->fType; + int typ = MENU_ITEM_TYPE(flags); + dprintf_menu(stddeb, "{ ID=0x%x", mp->wID); + if (flags & MF_POPUP) + dprintf_menu(stddeb, ", Sub=0x%x", mp->hSubMenu); + if (flags) { + int count = 0; + dprintf_menu(stddeb, ", Typ="); + if (typ == MFT_STRING) + /* Nothing */ ; + else if (typ == MFT_SEPARATOR) + MENUOUT("sep"); + else if (typ == MFT_OWNERDRAW) + MENUOUT("own"); + else if (typ == MFT_BITMAP) + MENUOUT("bit"); + else + MENUOUT("???"); + flags -= typ; + + MENUFLAG(MF_POPUP, "pop"); + MENUFLAG(MFT_MENUBARBREAK, "barbrk"); + MENUFLAG(MFT_MENUBREAK, "brk"); + MENUFLAG(MFT_RADIOCHECK, "radio"); + MENUFLAG(MFT_RIGHTORDER, "rorder"); + MENUFLAG(MF_SYSMENU, "sys"); + MENUFLAG(MFT_RIGHTJUSTIFY, "right"); + + if (flags) + dprintf_menu(stddeb, "+0x%x", flags); + } + flags = mp->fState; + if (flags) { + int count = 0; + dprintf_menu(stddeb, ", State="); + MENUFLAG(MFS_GRAYED, "grey"); + MENUFLAG(MFS_DISABLED, "dis"); + MENUFLAG(MFS_CHECKED, "check"); + MENUFLAG(MFS_HILITE, "hi"); + MENUFLAG(MF_USECHECKBITMAPS, "usebit"); + MENUFLAG(MF_MOUSESELECT, "mouse"); + if (flags) + dprintf_menu(stddeb, "+0x%x", flags); + } + if (mp->hCheckBit) + dprintf_menu(stddeb, ", Chk=0x%x", mp->hCheckBit); + if (mp->hUnCheckBit) + dprintf_menu(stddeb, ", Unc=0x%x", mp->hUnCheckBit); + + if (typ == MFT_STRING) { + if (mp->text) + dprintf_menu(stddeb, ", Text=\"%s\"", mp->text); + else + dprintf_menu(stddeb, ", Text=Null"); + } else if (mp->text == NULL) + /* Nothing */ ; + else + dprintf_menu(stddeb, ", Text=%p", mp->text); + dprintf_menu(stddeb, " }"); + } else { + dprintf_menu(stddeb, "NULL"); + } + dprintf_menu(stddeb, "%s", postfix); +} + +#undef MENUOUT +#undef MENUFLAG + +/*********************************************************************** * MENU_CopySysPopup * * Return the default system menu. @@ -167,7 +261,7 @@ fprintf( stderr, "Unable to load default system menu\n" ); } - dprintf_menu( stddeb, "MENU_CopySysPopup: returning %d.\n", hMenu ); + dprintf_menu( stddeb, "MENU_CopySysPopup: returning %x.\n", hMenu ); return hMenu; } @@ -200,7 +294,8 @@ { InsertMenu32A( hMenu, -1, MF_SYSMENU | MF_POPUP | MF_BYPOSITION, hPopupMenu, NULL ); - menu->items[0].item_flags = MF_SYSMENU | MF_POPUP; + menu->items[0].fType = MF_SYSMENU | MF_POPUP; + menu->items[0].fState = 0; menu = (POPUPMENU*) USER_HEAP_LIN_ADDR(hPopupMenu); menu->wFlags |= MF_SYSMENU; @@ -260,7 +355,7 @@ * * Grey the appropriate items in System menu. */ -void MENU_InitSysMenuPopup( HMENU32 hmenu, DWORD style, DWORD clsStyle ) +static void MENU_InitSysMenuPopup( HMENU32 hmenu, DWORD style, DWORD clsStyle ) { BOOL32 gray; @@ -299,7 +394,7 @@ return i; for( ; i < menu->nItems; ++i ) { - if( menu->items[i].item_flags & MF_MENUBARBREAK ) + if (menu->items[i].fType & MF_MENUBARBREAK) return i; } @@ -329,14 +424,14 @@ /* Find the start of the column */ for(i = menu->FocusedItem; i != 0 && - !(menu->items[i].item_flags & MF_MENUBARBREAK); + !(menu->items[i].fType & MF_MENUBARBREAK); --i); /* empty */ if(i == 0) return NO_SELECTED_ITEM; for(--i; i != 0; --i) { - if(menu->items[i].item_flags & MF_MENUBARBREAK) + if (menu->items[i].fType & MF_MENUBARBREAK) break; } @@ -369,14 +464,14 @@ MENUITEM *item = menu->items; for (i = 0; i < menu->nItems; i++, item++) { - if (item->item_id == *nPos) + if (item->wID == *nPos) { *nPos = i; return item; } - else if (item->item_flags & MF_POPUP) + else if (item->fType & MF_POPUP) { - HMENU32 hsubmenu = (HMENU32)item->item_id; + HMENU32 hsubmenu = item->hSubMenu; MENUITEM *subitem = MENU_FindItem( &hsubmenu, nPos, wFlags ); if (subitem) { @@ -395,13 +490,8 @@ static void MENU_FreeItemData( MENUITEM* item ) { /* delete text */ - - if (IS_STRING_ITEM(item->item_flags) && item->text) + if (IS_STRING_ITEM(item->fType) && item->text) HeapFree( SystemHeap, 0, item->text ); - - /* delete checkmark stuff */ - - if (item->pCB) HeapFree( SystemHeap, 0, item->pCB ); } /*********************************************************************** @@ -465,7 +555,7 @@ key = toupper(key); for (i = 0; i < menu->nItems; i++, item++) { - if (IS_STRING_ITEM(item->item_flags)) + if (IS_STRING_ITEM(item->fType)) { char *p = strchr( item->text, '&' ); if (p && (p[1] != '&') && (toupper(p[1]) == key)) return i; @@ -492,29 +582,29 @@ DWORD dwSize; char *p; - dprintf_menu( stddeb, "MENU_CalcItemSize: HDC %p, item '%s', at " - "(%d, %d) %s\n", (void *)hdc, lpitem->text, orgX, orgY, - menuBar ? "(MenuBar)" : "" ); + dprintf_menu(stddeb, "MENU_CalcItemSize: HDC 0x%x at (%d,%d): ", + hdc, orgX, orgY); + debug_print_menuitem("", lpitem, (menuBar ? " (MenuBar)\n" : "\n")); SetRect32( &lpitem->rect, orgX, orgY, orgX, orgY ); - if (lpitem->item_flags & MF_OWNERDRAW) + if (lpitem->fType & MF_OWNERDRAW) { MEASUREITEMSTRUCT32 mis; mis.CtlType = ODT_MENU; - mis.itemID = lpitem->item_id; + mis.itemID = lpitem->wID; mis.itemData = (DWORD)lpitem->text; mis.itemHeight = 16; mis.itemWidth = 30; SendMessage32A( hwndOwner, WM_MEASUREITEM, 0, (LPARAM)&mis ); lpitem->rect.bottom += mis.itemHeight; lpitem->rect.right += mis.itemWidth; - dprintf_menu( stddeb, "DrawMenuItem: MeasureItem %04x %dx%d!\n", - lpitem->item_id, mis.itemWidth, mis.itemHeight ); + dprintf_menu(stddeb, "MENU_CalcItemSize: %08x %dx%d\n", + lpitem->wID, mis.itemWidth, mis.itemHeight); return; } - if (lpitem->item_flags & MF_SEPARATOR) + if (lpitem->fType & MF_SEPARATOR) { lpitem->rect.bottom += SEPARATOR_HEIGHT; return; @@ -523,11 +613,11 @@ if (!menuBar) { lpitem->rect.right += 2 * check_bitmap_width; - if (lpitem->item_flags & MF_POPUP) + if (lpitem->fType & MF_POPUP) lpitem->rect.right += arrow_bitmap_width; } - if (lpitem->item_flags & MF_BITMAP) + if (lpitem->fType & MF_BITMAP) { BITMAP32 bm; if (GetObject32A( (HBITMAP32)lpitem->text, sizeof(bm), &bm )) @@ -540,7 +630,7 @@ /* If we get here, then it must be a text item */ - if (IS_STRING_ITEM( lpitem->item_flags )) + if (IS_STRING_ITEM( lpitem->fType )) { dwSize = GetTextExtent( hdc, lpitem->text, strlen(lpitem->text) ); lpitem->rect.right += LOWORD(dwSize); @@ -595,19 +685,16 @@ for (i = start; i < lppop->nItems; i++, lpitem++) { if ((i != start) && - (lpitem->item_flags & (MF_MENUBREAK | MF_MENUBARBREAK))) break; + (lpitem->fType & (MF_MENUBREAK | MF_MENUBARBREAK))) break; - dprintf_menu( stddeb, "MENU_PopupMenuCalcSize: calling " - "MENU_CalcItemSize on '%s', org=(%d, %d)\n", - lpitem->text, orgX, orgY ); if(TWEAK_Win95Look) ++orgY; MENU_CalcItemSize( hdc, lpitem, hwndOwner, orgX, orgY, FALSE ); - if (lpitem->item_flags & MF_MENUBARBREAK) orgX++; + if (lpitem->fType & MF_MENUBARBREAK) orgX++; maxX = MAX( maxX, lpitem->rect.right ); orgY = lpitem->rect.bottom; - if (IS_STRING_ITEM(lpitem->item_flags) && lpitem->xTab) + if (IS_STRING_ITEM(lpitem->fType) && lpitem->xTab) { maxTab = MAX( maxTab, lpitem->xTab ); maxTabWidth = MAX(maxTabWidth,lpitem->rect.right-lpitem->xTab); @@ -619,7 +706,7 @@ for (lpitem = &lppop->items[start]; start < i; start++, lpitem++) { lpitem->rect.right = maxX; - if (IS_STRING_ITEM(lpitem->item_flags) && lpitem->xTab) + if (IS_STRING_ITEM(lpitem->fType) && lpitem->xTab) lpitem->xTab = maxTab; } lppop->Height = MAX( lppop->Height, orgY ); @@ -663,9 +750,9 @@ /* Parse items until line break or end of menu */ for (i = start; i < lppop->nItems; i++, lpitem++) { - if ((helpPos == -1) && (lpitem->item_flags & MF_HELP)) helpPos = i; + if ((helpPos == -1) && (lpitem->fType & MF_HELP)) helpPos = i; if ((i != start) && - (lpitem->item_flags & (MF_MENUBREAK | MF_MENUBARBREAK))) break; + (lpitem->fType & (MF_MENUBREAK | MF_MENUBARBREAK))) break; dprintf_menu( stddeb, "MENU_MenuBarCalcSize: calling " @@ -716,34 +803,36 @@ { RECT32 rect; - if (lpitem->item_flags & MF_SYSMENU) + debug_print_menuitem("MENU_DrawMenuItem: ", lpitem, "\n"); + + if (lpitem->fType & MF_SYSMENU) { if( !IsIconic32(hwnd) ) { if(TWEAK_Win95Look) NC_DrawSysButton95( hwnd, hdc, - lpitem->item_flags & + lpitem->fState & (MF_HILITE | MF_MOUSESELECT) ); else NC_DrawSysButton( hwnd, hdc, - lpitem->item_flags & + lpitem->fState & (MF_HILITE | MF_MOUSESELECT) ); } return; } - if (lpitem->item_flags & MF_OWNERDRAW) + if (lpitem->fType & MF_OWNERDRAW) { DRAWITEMSTRUCT32 dis; dprintf_menu( stddeb, "DrawMenuItem: Ownerdraw!\n" ); dis.CtlType = ODT_MENU; - dis.itemID = lpitem->item_id; + dis.itemID = lpitem->wID; dis.itemData = (DWORD)lpitem->text; dis.itemState = 0; - if (lpitem->item_flags & MF_CHECKED) dis.itemState |= ODS_CHECKED; - if (lpitem->item_flags & MF_GRAYED) dis.itemState |= ODS_GRAYED; - if (lpitem->item_flags & MF_HILITE) dis.itemState |= ODS_SELECTED; + if (lpitem->fState & MF_CHECKED) dis.itemState |= ODS_CHECKED; + if (lpitem->fState & MF_GRAYED) dis.itemState |= ODS_GRAYED; + if (lpitem->fState & MF_HILITE) dis.itemState |= ODS_SELECTED; dis.itemAction = ODA_DRAWENTIRE | ODA_SELECT | ODA_FOCUS; dis.hwndItem = hwnd; dis.hDC = hdc; @@ -752,7 +841,7 @@ return; } - if (menuBar && (lpitem->item_flags & MF_SEPARATOR)) return; + if (menuBar && (lpitem->fType & MF_SEPARATOR)) return; rect = lpitem->rect; /* Draw the background */ @@ -770,7 +859,7 @@ */ } - if (lpitem->item_flags & MF_HILITE) { + if (lpitem->fState & MF_HILITE) { RECT32 r = rect; r.top += MENU_HighlightTopNudge; r.bottom += MENU_HighlightBottomNudge; @@ -791,7 +880,7 @@ /* Draw the separator bar (if any) */ - if (!menuBar && (lpitem->item_flags & MF_MENUBARBREAK)) + if (!menuBar && (lpitem->fType & MF_MENUBARBREAK)) { if(TWEAK_Win95Look) TWEAK_DrawMenuSeparatorVert95(hdc, rect.left - 1, 3, height - 3); @@ -801,7 +890,7 @@ LineTo32( hdc, rect.left, height ); } } - if (lpitem->item_flags & MF_SEPARATOR) + if (lpitem->fType & MF_SEPARATOR) { if(TWEAK_Win95Look) TWEAK_DrawMenuSeparatorHoriz95(hdc, rect.left + 1, @@ -818,9 +907,9 @@ /* Setup colors */ - if (lpitem->item_flags & MF_HILITE) + if (lpitem->fState & MF_HILITE) { - if (lpitem->item_flags & MF_GRAYED) + if (lpitem->fState & MF_GRAYED) SetTextColor32( hdc, GetSysColor32( COLOR_GRAYTEXT ) ); else SetTextColor32( hdc, GetSysColor32( COLOR_HIGHLIGHTTEXT ) ); @@ -828,7 +917,7 @@ } else { - if (lpitem->item_flags & MF_GRAYED) + if (lpitem->fState & MF_GRAYED) SetTextColor32( hdc, GetSysColor32( COLOR_GRAYTEXT ) ); else SetTextColor32( hdc, GetSysColor32( COLOR_MENUTEXT ) ); @@ -846,18 +935,18 @@ * is 1 for a white pixel and 0 for a black one. */ - if (lpitem->item_flags & MF_CHECKED) - GRAPH_DrawBitmap( hdc, lpitem->pCB ? lpitem->pCB->hCheckBit + if (lpitem->fState & MF_CHECKED) + GRAPH_DrawBitmap( hdc, lpitem->hCheckBit ? lpitem->hCheckBit : hStdCheck, rect.left, (y - check_bitmap_height) / 2, 0, 0, check_bitmap_width, check_bitmap_height, TRUE ); - else if (lpitem->pCB) - GRAPH_DrawBitmap( hdc, lpitem->pCB->hUnCheckBit, rect.left, + else if (lpitem->hUnCheckBit) + GRAPH_DrawBitmap( hdc, lpitem->hUnCheckBit, rect.left, (y - check_bitmap_height) / 2, 0, 0, check_bitmap_width, check_bitmap_height, TRUE ); /* Draw the popup-menu arrow */ - if (lpitem->item_flags & MF_POPUP) + if (lpitem->fType & MF_POPUP) { GRAPH_DrawBitmap( hdc, hStdMnArrow, rect.right-arrow_bitmap_width-1, @@ -871,7 +960,7 @@ /* Draw the item text or bitmap */ - if (lpitem->item_flags & MF_BITMAP) + if (lpitem->fType & MF_BITMAP) { GRAPH_DrawBitmap( hdc, (HBITMAP32)lpitem->text, rect.left, rect.top, 0, 0, @@ -879,7 +968,7 @@ return; } /* No bitmap - process text if present */ - else if (IS_STRING_ITEM(lpitem->item_flags)) + else if (IS_STRING_ITEM(lpitem->fType)) { register int i; @@ -902,12 +991,13 @@ rect.left += MENU_ItemLeftNudge; } - if(!TWEAK_Win95Look || !(lpitem->item_flags & MF_GRAYED)) { + if(!TWEAK_Win95Look || !(lpitem->fState & MF_GRAYED)) { DrawText32A( hdc, lpitem->text, i, &rect, DT_LEFT | DT_VCENTER | DT_SINGLELINE ); } else { - if (!(lpitem->item_flags & MF_HILITE)) { + if (!(lpitem->fState & MF_HILITE)) + { ++rect.left; ++rect.top; ++rect.right; @@ -1119,7 +1209,7 @@ if (!(menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hmenu ))) return FALSE; if (menu->FocusedItem != NO_SELECTED_ITEM) { - menu->items[menu->FocusedItem].item_flags &= ~(MF_HILITE|MF_MOUSESELECT); + menu->items[menu->FocusedItem].fState &= ~(MF_HILITE|MF_MOUSESELECT); menu->FocusedItem = NO_SELECTED_ITEM; } @@ -1220,7 +1310,7 @@ if (!lppop->nItems) return; if ((wIndex != NO_SELECTED_ITEM) && - (lppop->items[wIndex].item_flags & MF_SEPARATOR)) + (lppop->items[wIndex].fType & MF_SEPARATOR)) wIndex = NO_SELECTED_ITEM; if (lppop->FocusedItem == wIndex) return; @@ -1230,7 +1320,7 @@ /* Clear previous highlighted item */ if (lppop->FocusedItem != NO_SELECTED_ITEM) { - lppop->items[lppop->FocusedItem].item_flags &=~(MF_HILITE|MF_MOUSESELECT); + lppop->items[lppop->FocusedItem].fState &= ~(MF_HILITE|MF_MOUSESELECT); MENU_DrawMenuItem(lppop->hWnd,hdc,&lppop->items[lppop->FocusedItem], lppop->Height, !(lppop->wFlags & MF_POPUP) ); } @@ -1239,13 +1329,16 @@ lppop->FocusedItem = wIndex; if (lppop->FocusedItem != NO_SELECTED_ITEM) { - lppop->items[lppop->FocusedItem].item_flags |= MF_HILITE; + lppop->items[lppop->FocusedItem].fState |= MF_HILITE; MENU_DrawMenuItem( lppop->hWnd, hdc, &lppop->items[lppop->FocusedItem], lppop->Height, !(lppop->wFlags & MF_POPUP) ); if (sendMenuSelect) - SendMessage16( hwndOwner, WM_MENUSELECT, - lppop->items[lppop->FocusedItem].item_id, - MAKELONG( lppop->items[lppop->FocusedItem].item_flags | MF_MOUSESELECT, hmenu)); + { + MENUITEM *ip = &lppop->items[lppop->FocusedItem]; + SendMessage16( hwndOwner, WM_MENUSELECT, ip->wID, + MAKELONG(ip->fType | (ip->fState | MF_MOUSESELECT), + hmenu) ); + } } else if (sendMenuSelect) SendMessage16( hwndOwner, WM_MENUSELECT, hmenu, @@ -1275,7 +1368,7 @@ if( menu->nItems == 1 ) return; else for (i = menu->FocusedItem + offset ; i >= 0 && i < menu->nItems ; i += offset) - if (!(menu->items[i].item_flags & MF_SEPARATOR)) + if (!(menu->items[i].fType & MF_SEPARATOR)) { MENU_SelectItem( hwndOwner, hmenu, i, TRUE ); return; @@ -1284,7 +1377,7 @@ for ( i = (offset > 0) ? 0 : menu->nItems - 1; i >= 0 && i < menu->nItems ; i += offset) - if (!(menu->items[i].item_flags & MF_SEPARATOR)) + if (!(menu->items[i].fType & MF_SEPARATOR)) { MENU_SelectItem( hwndOwner, hmenu, i, TRUE ); return; @@ -1301,11 +1394,9 @@ static BOOL32 MENU_SetItemData( MENUITEM *item, UINT32 flags, UINT32 id, LPCSTR str ) { - LPSTR prevText = IS_STRING_ITEM(item->item_flags) ? item->text : NULL; + LPSTR prevText = IS_STRING_ITEM(item->fType) ? item->text : NULL; - dprintf_menu(stddeb,"SetItemData: %04x [%08x] '%s' -> %04x [%08x] '%s'\n", - item->item_flags, item->item_id, prevText ? prevText : "", - flags, id, (IS_STRING_ITEM(flags) && str) ? str : "" ); + debug_print_menuitem("MENU_SetItemData from: ", item, "\n"); if (IS_STRING_ITEM(flags)) { @@ -1331,22 +1422,32 @@ else if (flags & MF_OWNERDRAW) item->text = (LPSTR)str; else item->text = NULL; - if (item->item_flags & MF_POPUP && item->item_id != id ) - DestroyMenu32( (HMENU32)item->item_id ); /* ModifyMenu() spec */ + if (item->fType & MF_POPUP && item->hSubMenu != id ) + DestroyMenu32( item->hSubMenu ); /* ModifyMenu() spec */ if (flags & MF_POPUP) { - POPUPMENU* menu = (POPUPMENU *)USER_HEAP_LIN_ADDR((UINT16)id); - if( menu && menu->wMagic == MENU_MAGIC) menu->wFlags |= MF_POPUP; + POPUPMENU *menu = (POPUPMENU *)USER_HEAP_LIN_ADDR((UINT16)id); + if (IS_A_MENU(menu)) menu->wFlags |= MF_POPUP; else - return (item->item_id = item->item_flags = FALSE); + { + item->wID = 0; + item->hSubMenu = 0; + item->fType = 0; + item->fState = 0; + return FALSE; + } } - item->item_flags = flags & ~(MF_HILITE | MF_MOUSESELECT); - item->item_id = id; + item->fType = flags & TYPE_MASK; + item->fState = (flags & STATE_MASK) & + ~(MF_HILITE | MF_MOUSESELECT | MF_BYPOSITION); + item->wID = item->hSubMenu = id; SetRectEmpty32( &item->rect ); if (prevText) HeapFree( SystemHeap, 0, prevText ); + + debug_print_menuitem("MENU_SetItemData to : ", item, "\n"); return TRUE; } @@ -1470,55 +1571,50 @@ */ static LPCSTR MENUEX_ParseResource( LPCSTR res, HMENU32 hMenu) { - DWORD flags; - DWORD state; - DWORD id; - LPCWSTR str; WORD resinfo; + do { + MENUITEMINFO32W mii; - do - { - /* printf ("%p:", res); */ - - flags = GET_DWORD(res); + mii.cbSize = sizeof(mii); + mii.fMask = MIIM_STATE | MIIM_ID | MIIM_TYPE; + mii.fType = GET_DWORD(res); res += sizeof(DWORD); - state = GET_DWORD(res); + mii.fState = GET_DWORD(res); res += sizeof(DWORD); - id = GET_DWORD(res); + mii.wID = GET_DWORD(res); res += sizeof(DWORD); resinfo = GET_WORD(res); /* FIXME: for 16-bit apps this is a byte. */ res += sizeof(WORD); /* Align the text on a word boundary. */ res += (~((int)res - 1)) & 1; - str = (LPCWSTR)res; - res += (1 + lstrlen32W (str)) * sizeof(WCHAR); + mii.dwTypeData = (LPWSTR) res; + res += (1 + lstrlen32W(mii.dwTypeData)) * sizeof(WCHAR); /* Align the following fields on a dword boundary. */ res += (~((int)res - 1)) & 3; /* FIXME: This is inefficient and cannot be optimised away by gcc. */ { - LPSTR newstr = HEAP_strdupWtoA( GetProcessHeap(), 0, str ); - dprintf_menu (stddeb, "Menu item: [%08lx,%08lx,%04lx,%04x,%s]\n", - flags, state, id, resinfo, newstr); + LPSTR newstr = HEAP_strdupWtoA(GetProcessHeap(), + 0, mii.dwTypeData); + dprintf_menu(stddeb, "Menu item: [%08x,%08x,%04x,%04x,%s]\n", + mii.fType, mii.fState, mii.wID, resinfo, newstr); HeapFree( GetProcessHeap(), 0, newstr ); } - if (resinfo & 1) /* Pop-up? */ - { + if (resinfo & 1) { /* Pop-up? */ DWORD helpid = GET_DWORD(res); /* FIXME: use this. */ - HMENU32 hSubMenu = CreatePopupMenu32(); res += sizeof(DWORD); - if (!hSubMenu) return NULL; - if (!(res = MENUEX_ParseResource( res, hSubMenu))) + mii.hSubMenu = CreatePopupMenu32(); + if (!mii.hSubMenu) + return NULL; + if (!(res = MENUEX_ParseResource(res, mii.hSubMenu))) { + DestroyMenu32(mii.hSubMenu); return NULL; - AppendMenu32W( hMenu, flags | MF_POPUP /* HACK! FIXME */, - (UINT32)hSubMenu, (LPCWSTR)str ); } - else /* Not a popup */ - { - AppendMenu32W( hMenu, flags, id, - *(LPCWSTR)str ? (LPCWSTR)str : NULL ); + mii.fMask |= MIIM_SUBMENU; + mii.fType |= MF_POPUP; } + InsertMenuItem32W(hMenu, -1, MF_BYPOSITION, &mii); } while (!(resinfo & MF_END)); return res; } @@ -1539,9 +1635,8 @@ if (menu->FocusedItem == NO_SELECTED_ITEM) return 0; item = &menu->items[menu->FocusedItem]; - if ((item->item_flags & (MF_POPUP | MF_MOUSESELECT)) - == (MF_POPUP | MF_MOUSESELECT)) - return (HMENU32)item->item_id; + if ((item->fType & MF_POPUP) && (item->fState & MF_MOUSESELECT)) + return item->hSubMenu; return 0; } @@ -1565,10 +1660,10 @@ if (menu->FocusedItem != NO_SELECTED_ITEM) { item = &menu->items[menu->FocusedItem]; - if (!(item->item_flags & MF_POPUP) || - !(item->item_flags & MF_MOUSESELECT)) return; - item->item_flags &= ~MF_MOUSESELECT; - hsubmenu = (HMENU32)item->item_id; + if (!(item->fType & MF_POPUP) || + !(item->fState & MF_MOUSESELECT)) return; + item->fState &= ~MF_MOUSESELECT; + hsubmenu = item->hSubMenu; } else return; submenu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hsubmenu ); @@ -1609,17 +1704,18 @@ (menu->FocusedItem == NO_SELECTED_ITEM)) return hmenu; item = &menu->items[menu->FocusedItem]; - if (!(item->item_flags & MF_POPUP) || - (item->item_flags & (MF_GRAYED | MF_DISABLED))) return hmenu; - item->item_flags |= MF_MOUSESELECT; + if (!(item->fType & MF_POPUP) || + (item->fState & (MF_GRAYED | MF_DISABLED))) return hmenu; + item->fState |= MF_MOUSESELECT; if (IS_SYSTEM_MENU(menu)) { - MENU_InitSysMenuPopup((HMENU16)item->item_id, wndPtr->dwStyle, wndPtr->class->style); + MENU_InitSysMenuPopup(item->hSubMenu, wndPtr->dwStyle, wndPtr->class->style); NC_GetSysPopupPos( wndPtr, &rect ); rect.top = rect.bottom; - rect.right = SYSMETRICS_CXSIZE; rect.bottom = SYSMETRICS_CYSIZE; + rect.right = SYSMETRICS_CXSIZE; + rect.bottom = SYSMETRICS_CYSIZE; } else { @@ -1639,11 +1735,11 @@ } } - MENU_ShowPopup( hwndOwner, (HMENU16)item->item_id, menu->FocusedItem, + MENU_ShowPopup( hwndOwner, item->hSubMenu, menu->FocusedItem, rect.left, rect.top, rect.right, rect.bottom ); if (selectFirst) - MENU_MoveSelection( hwndOwner, (HMENU32)item->item_id, ITEM_NEXT ); - return (HMENU32)item->item_id; + MENU_MoveSelection( hwndOwner, item->hSubMenu, ITEM_NEXT ); + return item->hSubMenu; } /*********************************************************************** @@ -1656,12 +1752,11 @@ POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( hMenu ); register UINT32 ht = menu->FocusedItem; -#define HAS_POPUP(item) (((item).item_flags & (MF_POPUP | MF_MOUSESELECT)) \ - == (MF_POPUP | MF_MOUSESELECT)) /* try subpopup first (if any) */ - ht = (ht != NO_SELECTED_ITEM && HAS_POPUP(menu->items[ht])) - ? (UINT32)MENU_PtMenu( menu->items[ht].item_id, pt ) : 0; -#undef HAS_POPUP + ht = (ht != NO_SELECTED_ITEM && + (menu->items[ht].fType & MF_POPUP) && + (menu->items[ht].fState & MF_MOUSESELECT)) + ? (UINT32) MENU_PtMenu(menu->items[ht].hSubMenu, pt) : 0; if( !ht ) /* check the current window (avoiding WM_HITTEST) */ { @@ -1694,18 +1789,21 @@ (menu->FocusedItem == NO_SELECTED_ITEM)) return TRUE; item = &menu->items[menu->FocusedItem]; - if (!(item->item_flags & MF_POPUP)) + + dprintf_menu(stddeb, "MENU_ExecFocusedItem: %08x %08x %08x\n", + hMenu, item->wID, item->hSubMenu); + + if (!(item->fType & MF_POPUP)) { - if (!(item->item_flags & (MF_GRAYED | MF_DISABLED))) + if (!(item->fState & (MF_GRAYED | MF_DISABLED))) { if( menu->wFlags & MF_SYSMENU ) { - PostMessage16( pmt->hOwnerWnd, WM_SYSCOMMAND, item->item_id, + PostMessage16( pmt->hOwnerWnd, WM_SYSCOMMAND, item->hSubMenu, MAKELPARAM((INT16)pmt->pt.x, (INT16)pmt->pt.y) ); } else - PostMessage16( pmt->hOwnerWnd, WM_COMMAND, - item->item_id, 0 ); + PostMessage16( pmt->hOwnerWnd, WM_COMMAND, item->wID, 0 ); return FALSE; } else return TRUE; @@ -1765,9 +1863,9 @@ if( ptmenu->FocusedItem == id ) { /* nothing to do with already selected non-popup */ - if( !(item->item_flags & MF_POPUP) ) return TRUE; + if( !(item->fType & MF_POPUP) ) return TRUE; - if( item->item_flags & MF_MOUSESELECT ) + if( item->fState & MF_MOUSESELECT ) { if( ptmenu->wFlags & MF_POPUP ) { @@ -1812,9 +1910,9 @@ if( ptmenu->FocusedItem == id ) { - if( !(item->item_flags & MF_POPUP) ) + if( !(item->fType & MF_POPUP) ) return MENU_ExecFocusedItem( pmt, hPtMenu ); - hPtMenu = (HMENU32)item->item_id; + hPtMenu = item->hSubMenu; if( hPtMenu == pmt->hCurrentMenu ) { /* Select first item of sub-popup */ @@ -2390,8 +2488,8 @@ /********************************************************************** * TrackPopupMenu16 (USER.416) */ -BOOL16 TrackPopupMenu16( HMENU16 hMenu, UINT16 wFlags, INT16 x, INT16 y, - INT16 nReserved, HWND16 hWnd, const RECT16 *lpRect ) +BOOL16 WINAPI TrackPopupMenu16( HMENU16 hMenu, UINT16 wFlags, INT16 x, INT16 y, + INT16 nReserved, HWND16 hWnd, const RECT16 *lpRect ) { RECT32 r; if (lpRect) @@ -2404,8 +2502,8 @@ /********************************************************************** * TrackPopupMenu32 (USER32.548) */ -BOOL32 TrackPopupMenu32( HMENU32 hMenu, UINT32 wFlags, INT32 x, INT32 y, - INT32 nReserved, HWND32 hWnd, const RECT32 *lpRect ) +BOOL32 WINAPI TrackPopupMenu32( HMENU32 hMenu, UINT32 wFlags, INT32 x, INT32 y, + INT32 nReserved, HWND32 hWnd, const RECT32 *lpRect ) { BOOL32 ret = FALSE; @@ -2419,8 +2517,8 @@ /********************************************************************** * TrackPopupMenuEx (USER32.549) */ -BOOL32 TrackPopupMenuEx( HMENU32 hMenu, UINT32 wFlags, INT32 x, INT32 y, - HWND32 hWnd, LPTPMPARAMS lpTpm ) +BOOL32 WINAPI TrackPopupMenuEx( HMENU32 hMenu, UINT32 wFlags, INT32 x, INT32 y, + HWND32 hWnd, LPTPMPARAMS lpTpm ) { fprintf( stderr, "TrackPopupMenuEx: not fully implemented\n" ); return TrackPopupMenu32( hMenu, wFlags, x, y, 0, hWnd, @@ -2432,8 +2530,8 @@ * * NOTE: Windows has totally different (and undocumented) popup wndproc. */ -LRESULT PopupMenuWndProc( HWND32 hwnd, UINT32 message, WPARAM32 wParam, - LPARAM lParam ) +LRESULT WINAPI PopupMenuWndProc( HWND32 hwnd, UINT32 message, WPARAM32 wParam, + LPARAM lParam ) { WND* wndPtr = WIN_FindWndPtr(hwnd); @@ -2517,7 +2615,7 @@ WND *wndPtr; LPPOPUPMENU lppop; - dprintf_menu( stddeb, "MENU_GetMenuBarHeight: HWND 0x%lx, width %d, " + dprintf_menu( stddeb, "MENU_GetMenuBarHeight: HWND 0x%x, width %d, " "at (%d, %d).\n", hwnd, menubarWidth, orgX, orgY ); if (!(wndPtr = WIN_FindWndPtr( hwnd ))) return 0; @@ -2534,8 +2632,8 @@ /******************************************************************* * ChangeMenu16 (USER.153) */ -BOOL16 ChangeMenu16( HMENU16 hMenu, UINT16 pos, SEGPTR data, - UINT16 id, UINT16 flags ) +BOOL16 WINAPI ChangeMenu16( HMENU16 hMenu, UINT16 pos, SEGPTR data, + UINT16 id, UINT16 flags ) { dprintf_menu( stddeb,"ChangeMenu16: menu=%04x pos=%d data=%08lx id=%04x flags=%04x\n", hMenu, pos, (DWORD)data, id, flags ); @@ -2560,8 +2658,8 @@ /******************************************************************* * ChangeMenu32A (USER32.22) */ -BOOL32 ChangeMenu32A( HMENU32 hMenu, UINT32 pos, LPCSTR data, - UINT32 id, UINT32 flags ) +BOOL32 WINAPI ChangeMenu32A( HMENU32 hMenu, UINT32 pos, LPCSTR data, + UINT32 id, UINT32 flags ) { dprintf_menu( stddeb,"ChangeMenu32A: menu=%08x pos=%d data=%08lx id=%08x flags=%08x\n", hMenu, pos, (DWORD)data, id, flags ); @@ -2581,8 +2679,8 @@ /******************************************************************* * ChangeMenu32W (USER32.23) */ -BOOL32 ChangeMenu32W( HMENU32 hMenu, UINT32 pos, LPCWSTR data, - UINT32 id, UINT32 flags ) +BOOL32 WINAPI ChangeMenu32W( HMENU32 hMenu, UINT32 pos, LPCWSTR data, + UINT32 id, UINT32 flags ) { dprintf_menu( stddeb,"ChangeMenu32W: menu=%08x pos=%d data=%08lx id=%08x flags=%08x\n", hMenu, pos, (DWORD)data, id, flags ); @@ -2602,7 +2700,7 @@ /******************************************************************* * CheckMenuItem16 (USER.154) */ -BOOL16 CheckMenuItem16( HMENU16 hMenu, UINT16 id, UINT16 flags ) +BOOL16 WINAPI CheckMenuItem16( HMENU16 hMenu, UINT16 id, UINT16 flags ) { return (BOOL16)CheckMenuItem32( hMenu, id, flags ); } @@ -2611,16 +2709,16 @@ /******************************************************************* * CheckMenuItem32 (USER32.45) */ -DWORD CheckMenuItem32( HMENU32 hMenu, UINT32 id, UINT32 flags ) +DWORD WINAPI CheckMenuItem32( HMENU32 hMenu, UINT32 id, UINT32 flags ) { MENUITEM *item; DWORD ret; dprintf_menu( stddeb,"CheckMenuItem: %04x %04x %04x\n", hMenu, id, flags ); if (!(item = MENU_FindItem( &hMenu, &id, flags ))) return -1; - ret = item->item_flags & MF_CHECKED; - if (flags & MF_CHECKED) item->item_flags |= MF_CHECKED; - else item->item_flags &= ~MF_CHECKED; + ret = item->fState & MF_CHECKED; + if (flags & MF_CHECKED) item->fState |= MF_CHECKED; + else item->fState &= ~MF_CHECKED; return ret; } @@ -2628,7 +2726,7 @@ /********************************************************************** * EnableMenuItem16 (USER.155) */ -BOOL16 EnableMenuItem16( HMENU16 hMenu, UINT16 wItemID, UINT16 wFlags ) +BOOL16 WINAPI EnableMenuItem16( HMENU16 hMenu, UINT16 wItemID, UINT16 wFlags ) { return EnableMenuItem32( hMenu, wItemID, wFlags ); } @@ -2637,7 +2735,7 @@ /********************************************************************** * EnableMenuItem32 (USER32.169) */ -BOOL32 EnableMenuItem32( HMENU32 hMenu, UINT32 wItemID, UINT32 wFlags ) +BOOL32 WINAPI EnableMenuItem32( HMENU32 hMenu, UINT32 wItemID, UINT32 wFlags ) { BOOL32 bRet = FALSE; MENUITEM *item, *first = NULL; @@ -2647,20 +2745,20 @@ while( (item = MENU_FindItem( &hMenu, &wItemID, wFlags )) ) { - if( !(item->item_flags & MF_POPUP) ) + if( !(item->fType & MF_POPUP) ) { /* We can't have MF_GRAYED and MF_DISABLED together */ if (wFlags & MF_GRAYED) { - item->item_flags = (item->item_flags & ~MF_DISABLED) | MF_GRAYED; + item->fState = (item->fState & ~MF_DISABLED) | MF_GRAYED; } else if (wFlags & MF_DISABLED) { - item->item_flags = (item->item_flags & ~MF_GRAYED) | MF_DISABLED; + item->fState = (item->fState & ~MF_GRAYED) | MF_DISABLED; } else /* MF_ENABLED */ { - item->item_flags &= ~(MF_GRAYED | MF_DISABLED); + item->fState &= ~(MF_GRAYED | MF_DISABLED); } bRet = TRUE; break; @@ -2675,8 +2773,8 @@ /******************************************************************* * GetMenuString16 (USER.161) */ -INT16 GetMenuString16( HMENU16 hMenu, UINT16 wItemID, - LPSTR str, INT16 nMaxSiz, UINT16 wFlags ) +INT16 WINAPI GetMenuString16( HMENU16 hMenu, UINT16 wItemID, + LPSTR str, INT16 nMaxSiz, UINT16 wFlags ) { return GetMenuString32A( hMenu, wItemID, str, nMaxSiz, wFlags ); } @@ -2685,8 +2783,8 @@ /******************************************************************* * GetMenuString32A (USER32.267) */ -INT32 GetMenuString32A( HMENU32 hMenu, UINT32 wItemID, - LPSTR str, INT32 nMaxSiz, UINT32 wFlags ) +INT32 WINAPI GetMenuString32A( HMENU32 hMenu, UINT32 wItemID, + LPSTR str, INT32 nMaxSiz, UINT32 wFlags ) { MENUITEM *item; @@ -2695,7 +2793,7 @@ if (!str || !nMaxSiz) return 0; str[0] = '\0'; if (!(item = MENU_FindItem( &hMenu, &wItemID, wFlags ))) return 0; - if (!IS_STRING_ITEM(item->item_flags)) return 0; + if (!IS_STRING_ITEM(item->fType)) return 0; lstrcpyn32A( str, item->text, nMaxSiz ); dprintf_menu( stddeb, "GetMenuString32A: returning '%s'\n", str ); return strlen(str); @@ -2705,8 +2803,8 @@ /******************************************************************* * GetMenuString32W (USER32.268) */ -INT32 GetMenuString32W( HMENU32 hMenu, UINT32 wItemID, - LPWSTR str, INT32 nMaxSiz, UINT32 wFlags ) +INT32 WINAPI GetMenuString32W( HMENU32 hMenu, UINT32 wItemID, + LPWSTR str, INT32 nMaxSiz, UINT32 wFlags ) { MENUITEM *item; @@ -2715,7 +2813,7 @@ if (!str || !nMaxSiz) return 0; str[0] = '\0'; if (!(item = MENU_FindItem( &hMenu, &wItemID, wFlags ))) return 0; - if (!IS_STRING_ITEM(item->item_flags)) return 0; + if (!IS_STRING_ITEM(item->fType)) return 0; lstrcpynAtoW( str, item->text, nMaxSiz ); return lstrlen32W(str); } @@ -2724,8 +2822,8 @@ /********************************************************************** * HiliteMenuItem16 (USER.162) */ -BOOL16 HiliteMenuItem16( HWND16 hWnd, HMENU16 hMenu, UINT16 wItemID, - UINT16 wHilite ) +BOOL16 WINAPI HiliteMenuItem16( HWND16 hWnd, HMENU16 hMenu, UINT16 wItemID, + UINT16 wHilite ) { return HiliteMenuItem32( hWnd, hMenu, wItemID, wHilite ); } @@ -2734,8 +2832,8 @@ /********************************************************************** * HiliteMenuItem32 (USER32.317) */ -BOOL32 HiliteMenuItem32( HWND32 hWnd, HMENU32 hMenu, UINT32 wItemID, - UINT32 wHilite ) +BOOL32 WINAPI HiliteMenuItem32( HWND32 hWnd, HMENU32 hMenu, UINT32 wItemID, + UINT32 wHilite ) { LPPOPUPMENU menu; dprintf_menu(stddeb,"HiliteMenuItem(%04x, %04x, %04x, %04x);\n", @@ -2752,7 +2850,7 @@ /********************************************************************** * GetMenuState16 (USER.250) */ -UINT16 GetMenuState16( HMENU16 hMenu, UINT16 wItemID, UINT16 wFlags ) +UINT16 WINAPI GetMenuState16( HMENU16 hMenu, UINT16 wItemID, UINT16 wFlags ) { return GetMenuState32( hMenu, wItemID, wFlags ); } @@ -2761,31 +2859,32 @@ /********************************************************************** * GetMenuState32 (USER32.266) */ -UINT32 GetMenuState32( HMENU32 hMenu, UINT32 wItemID, UINT32 wFlags ) +UINT32 WINAPI GetMenuState32( HMENU32 hMenu, UINT32 wItemID, UINT32 wFlags ) { MENUITEM *item; dprintf_menu(stddeb,"GetMenuState(%04x, %04x, %04x);\n", hMenu, wItemID, wFlags); if (!(item = MENU_FindItem( &hMenu, &wItemID, wFlags ))) return -1; - if (item->item_flags & MF_POPUP) + if (item->fType & MF_POPUP) { - POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( (HMENU16)item->item_id ); + POPUPMENU *menu = (POPUPMENU *) USER_HEAP_LIN_ADDR( item->hSubMenu ); if (!menu) return -1; else return (menu->nItems << 8) | (menu->wFlags & 0xff); } else - /* Non POPUP Menus only return flags in the lower byte */ - return (item->item_flags & 0x00ff); + /* Non POPUP Menus only return flags in the lower byte */ + /* XXX ??? */ + return ((item->fType | item->fState) & 0x00ff); } /********************************************************************** * GetMenuItemCount16 (USER.263) */ -INT16 GetMenuItemCount16( HMENU16 hMenu ) +INT16 WINAPI GetMenuItemCount16( HMENU16 hMenu ) { LPPOPUPMENU menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu); - if (!menu || (menu->wMagic != MENU_MAGIC)) return -1; + if (!IS_A_MENU(menu)) return -1; dprintf_menu( stddeb,"GetMenuItemCount16(%04x) returning %d\n", hMenu, menu->nItems ); return menu->nItems; @@ -2795,10 +2894,10 @@ /********************************************************************** * GetMenuItemCount32 (USER32.261) */ -INT32 GetMenuItemCount32( HMENU32 hMenu ) +INT32 WINAPI GetMenuItemCount32( HMENU32 hMenu ) { LPPOPUPMENU menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu); - if (!menu || (menu->wMagic != MENU_MAGIC)) return -1; + if (!IS_A_MENU(menu)) return -1; dprintf_menu( stddeb,"GetMenuItemCount32(%04x) returning %d\n", hMenu, menu->nItems ); return menu->nItems; @@ -2808,36 +2907,37 @@ /********************************************************************** * GetMenuItemID16 (USER.264) */ -UINT16 GetMenuItemID16( HMENU16 hMenu, INT16 nPos ) +UINT16 WINAPI GetMenuItemID16( HMENU16 hMenu, INT16 nPos ) { LPPOPUPMENU menu; if (!(menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu))) return -1; if ((nPos < 0) || ((UINT16) nPos >= menu->nItems)) return -1; - if (menu->items[nPos].item_flags & MF_POPUP) return -1; - return menu->items[nPos].item_id; + if (menu->items[nPos].fType & MF_POPUP) return -1; + return menu->items[nPos].wID; } /********************************************************************** * GetMenuItemID32 (USER32.262) */ -UINT32 GetMenuItemID32( HMENU32 hMenu, INT32 nPos ) +UINT32 WINAPI GetMenuItemID32( HMENU32 hMenu, INT32 nPos ) { LPPOPUPMENU menu; if (!(menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu))) return -1; if ((nPos < 0) || (nPos >= menu->nItems)) return -1; - if (menu->items[nPos].item_flags & MF_POPUP) return -1; - return menu->items[nPos].item_id; + /* FIXME: Now that submenus can have ids, is this still right? */ + if (menu->items[nPos].fType & MF_POPUP) return -1; + return menu->items[nPos].wID; } /******************************************************************* * InsertMenu16 (USER.410) */ -BOOL16 InsertMenu16( HMENU16 hMenu, UINT16 pos, UINT16 flags, - UINT16 id, SEGPTR data ) +BOOL16 WINAPI InsertMenu16( HMENU16 hMenu, UINT16 pos, UINT16 flags, + UINT16 id, SEGPTR data ) { UINT32 pos32 = (UINT32)pos; if ((pos == (UINT16)-1) && (flags & MF_BYPOSITION)) pos32 = (UINT32)-1; @@ -2851,8 +2951,8 @@ /******************************************************************* * InsertMenu32A (USER32.321) */ -BOOL32 InsertMenu32A( HMENU32 hMenu, UINT32 pos, UINT32 flags, - UINT32 id, LPCSTR str ) +BOOL32 WINAPI InsertMenu32A( HMENU32 hMenu, UINT32 pos, UINT32 flags, + UINT32 id, LPCSTR str ) { MENUITEM *item; @@ -2875,7 +2975,8 @@ if (flags & MF_POPUP) /* Set the MF_POPUP flag on the popup-menu */ ((POPUPMENU *)USER_HEAP_LIN_ADDR((HMENU16)id))->wFlags |= MF_POPUP; - item->pCB = NULL; + item->hCheckBit = item->hUnCheckBit = 0; + item->dwItemData = 0; return TRUE; } @@ -2883,8 +2984,8 @@ /******************************************************************* * InsertMenu32W (USER32.324) */ -BOOL32 InsertMenu32W( HMENU32 hMenu, UINT32 pos, UINT32 flags, - UINT32 id, LPCWSTR str ) +BOOL32 WINAPI InsertMenu32W( HMENU32 hMenu, UINT32 pos, UINT32 flags, + UINT32 id, LPCWSTR str ) { BOOL32 ret; @@ -2902,7 +3003,7 @@ /******************************************************************* * AppendMenu16 (USER.411) */ -BOOL16 AppendMenu16( HMENU16 hMenu, UINT16 flags, UINT16 id, SEGPTR data ) +BOOL16 WINAPI AppendMenu16(HMENU16 hMenu, UINT16 flags, UINT16 id, SEGPTR data) { return InsertMenu16( hMenu, -1, flags | MF_BYPOSITION, id, data ); } @@ -2911,7 +3012,8 @@ /******************************************************************* * AppendMenu32A (USER32.4) */ -BOOL32 AppendMenu32A( HMENU32 hMenu, UINT32 flags, UINT32 id, LPCSTR data ) +BOOL32 WINAPI AppendMenu32A( HMENU32 hMenu, UINT32 flags, + UINT32 id, LPCSTR data ) { return InsertMenu32A( hMenu, -1, flags | MF_BYPOSITION, id, data ); } @@ -2920,7 +3022,8 @@ /******************************************************************* * AppendMenu32W (USER32.5) */ -BOOL32 AppendMenu32W( HMENU32 hMenu, UINT32 flags, UINT32 id, LPCWSTR data ) +BOOL32 WINAPI AppendMenu32W( HMENU32 hMenu, UINT32 flags, + UINT32 id, LPCWSTR data ) { return InsertMenu32W( hMenu, -1, flags | MF_BYPOSITION, id, data ); } @@ -2929,7 +3032,7 @@ /********************************************************************** * RemoveMenu16 (USER.412) */ -BOOL16 RemoveMenu16( HMENU16 hMenu, UINT16 nPos, UINT16 wFlags ) +BOOL16 WINAPI RemoveMenu16( HMENU16 hMenu, UINT16 nPos, UINT16 wFlags ) { return RemoveMenu32( hMenu, nPos, wFlags ); } @@ -2938,7 +3041,7 @@ /********************************************************************** * RemoveMenu32 (USER32.440) */ -BOOL32 RemoveMenu32( HMENU32 hMenu, UINT32 nPos, UINT32 wFlags ) +BOOL32 WINAPI RemoveMenu32( HMENU32 hMenu, UINT32 nPos, UINT32 wFlags ) { LPPOPUPMENU menu; MENUITEM *item; @@ -2974,7 +3077,7 @@ /********************************************************************** * DeleteMenu16 (USER.413) */ -BOOL16 DeleteMenu16( HMENU16 hMenu, UINT16 nPos, UINT16 wFlags ) +BOOL16 WINAPI DeleteMenu16( HMENU16 hMenu, UINT16 nPos, UINT16 wFlags ) { return DeleteMenu32( hMenu, nPos, wFlags ); } @@ -2983,11 +3086,11 @@ /********************************************************************** * DeleteMenu32 (USER32.128) */ -BOOL32 DeleteMenu32( HMENU32 hMenu, UINT32 nPos, UINT32 wFlags ) +BOOL32 WINAPI DeleteMenu32( HMENU32 hMenu, UINT32 nPos, UINT32 wFlags ) { MENUITEM *item = MENU_FindItem( &hMenu, &nPos, wFlags ); if (!item) return FALSE; - if (item->item_flags & MF_POPUP) DestroyMenu32( (HMENU32)item->item_id ); + if (item->fType & MF_POPUP) DestroyMenu32( item->hSubMenu ); /* nPos is now the position of the item */ RemoveMenu32( hMenu, nPos, wFlags | MF_BYPOSITION ); return TRUE; @@ -2997,8 +3100,8 @@ /******************************************************************* * ModifyMenu16 (USER.414) */ -BOOL16 ModifyMenu16( HMENU16 hMenu, UINT16 pos, UINT16 flags, - UINT16 id, SEGPTR data ) +BOOL16 WINAPI ModifyMenu16( HMENU16 hMenu, UINT16 pos, UINT16 flags, + UINT16 id, SEGPTR data ) { if (IS_STRING_ITEM(flags)) return ModifyMenu32A( hMenu, pos, flags, id, @@ -3010,8 +3113,8 @@ /******************************************************************* * ModifyMenu32A (USER32.396) */ -BOOL32 ModifyMenu32A( HMENU32 hMenu, UINT32 pos, UINT32 flags, - UINT32 id, LPCSTR str ) +BOOL32 WINAPI ModifyMenu32A( HMENU32 hMenu, UINT32 pos, UINT32 flags, + UINT32 id, LPCSTR str ) { MENUITEM *item; @@ -3035,8 +3138,8 @@ /******************************************************************* * ModifyMenu32W (USER32.397) */ -BOOL32 ModifyMenu32W( HMENU32 hMenu, UINT32 pos, UINT32 flags, - UINT32 id, LPCWSTR str ) +BOOL32 WINAPI ModifyMenu32W( HMENU32 hMenu, UINT32 pos, UINT32 flags, + UINT32 id, LPCWSTR str ) { BOOL32 ret; @@ -3054,7 +3157,7 @@ /********************************************************************** * CreatePopupMenu16 (USER.415) */ -HMENU16 CreatePopupMenu16(void) +HMENU16 WINAPI CreatePopupMenu16(void) { return CreatePopupMenu32(); } @@ -3063,7 +3166,7 @@ /********************************************************************** * CreatePopupMenu32 (USER32.81) */ -HMENU32 CreatePopupMenu32(void) +HMENU32 WINAPI CreatePopupMenu32(void) { HMENU32 hmenu; POPUPMENU *menu; @@ -3078,7 +3181,7 @@ /********************************************************************** * GetMenuCheckMarkDimensions (USER.417) (USER32.257) */ -DWORD GetMenuCheckMarkDimensions(void) +DWORD WINAPI GetMenuCheckMarkDimensions(void) { return MAKELONG( check_bitmap_width, check_bitmap_height ); } @@ -3087,8 +3190,8 @@ /********************************************************************** * SetMenuItemBitmaps16 (USER.418) */ -BOOL16 SetMenuItemBitmaps16( HMENU16 hMenu, UINT16 nPos, UINT16 wFlags, - HBITMAP16 hNewUnCheck, HBITMAP16 hNewCheck ) +BOOL16 WINAPI SetMenuItemBitmaps16( HMENU16 hMenu, UINT16 nPos, UINT16 wFlags, + HBITMAP16 hNewUnCheck, HBITMAP16 hNewCheck) { return SetMenuItemBitmaps32( hMenu, nPos, wFlags, hNewUnCheck, hNewCheck ); } @@ -3097,8 +3200,8 @@ /********************************************************************** * SetMenuItemBitmaps32 (USER32.489) */ -BOOL32 SetMenuItemBitmaps32( HMENU32 hMenu, UINT32 nPos, UINT32 wFlags, - HBITMAP32 hNewUnCheck, HBITMAP32 hNewCheck ) +BOOL32 WINAPI SetMenuItemBitmaps32( HMENU32 hMenu, UINT32 nPos, UINT32 wFlags, + HBITMAP32 hNewUnCheck, HBITMAP32 hNewCheck) { MENUITEM *item; dprintf_menu(stddeb,"SetMenuItemBitmaps(%04x, %04x, %04x, %04x, %04x)\n", @@ -3107,17 +3210,13 @@ if (!hNewCheck && !hNewUnCheck) { - if( item->pCB ) HeapFree( SystemHeap, 0, item->pCB ); - item->pCB = NULL; - item->item_flags &= ~MF_USECHECKBITMAPS; + item->fState &= ~MF_USECHECKBITMAPS; } else /* Install new bitmaps */ { - if( item->pCB == NULL ) - item->pCB = HeapAlloc( SystemHeap, 0, sizeof(CBITMAPS)); - item->pCB->hCheckBit = hNewCheck; - item->pCB->hUnCheckBit = hNewUnCheck; - item->item_flags |= MF_USECHECKBITMAPS; + item->hCheckBit = hNewCheck; + item->hUnCheckBit = hNewUnCheck; + item->fState |= MF_USECHECKBITMAPS; } return TRUE; } @@ -3126,7 +3225,7 @@ /********************************************************************** * CreateMenu16 (USER.151) */ -HMENU16 CreateMenu16(void) +HMENU16 WINAPI CreateMenu16(void) { return CreateMenu32(); } @@ -3135,7 +3234,7 @@ /********************************************************************** * CreateMenu32 (USER32.80) */ -HMENU32 CreateMenu32(void) +HMENU32 WINAPI CreateMenu32(void) { HMENU32 hMenu; LPPOPUPMENU menu; @@ -3158,7 +3257,7 @@ /********************************************************************** * DestroyMenu16 (USER.152) */ -BOOL16 DestroyMenu16( HMENU16 hMenu ) +BOOL16 WINAPI DestroyMenu16( HMENU16 hMenu ) { return DestroyMenu32( hMenu ); } @@ -3167,7 +3266,7 @@ /********************************************************************** * DestroyMenu32 (USER32.133) */ -BOOL32 DestroyMenu32( HMENU32 hMenu ) +BOOL32 WINAPI DestroyMenu32( HMENU32 hMenu ) { dprintf_menu(stddeb,"DestroyMenu(%04x)\n", hMenu); @@ -3180,7 +3279,7 @@ if( pTopPopupWnd && (hMenu == *(HMENU32*)pTopPopupWnd->wExtra) ) *(UINT32*)pTopPopupWnd->wExtra = 0; - if (lppop && (lppop->wMagic == MENU_MAGIC)) + if (IS_A_MENU( lppop )) { lppop->wMagic = 0; /* Mark it as destroyed */ @@ -3194,8 +3293,7 @@ MENUITEM *item = lppop->items; for (i = lppop->nItems; i > 0; i--, item++) { - if (item->item_flags & MF_POPUP) - DestroyMenu32( (HMENU32)item->item_id ); + if (item->fType & MF_POPUP) DestroyMenu32(item->hSubMenu); MENU_FreeItemData( item ); } HeapFree( SystemHeap, 0, lppop->items ); @@ -3211,7 +3309,7 @@ /********************************************************************** * GetSystemMenu16 (USER.156) */ -HMENU16 GetSystemMenu16( HWND16 hWnd, BOOL16 bRevert ) +HMENU16 WINAPI GetSystemMenu16( HWND16 hWnd, BOOL16 bRevert ) { return GetSystemMenu32( hWnd, bRevert ); } @@ -3220,7 +3318,7 @@ /********************************************************************** * GetSystemMenu32 (USER32.290) */ -HMENU32 GetSystemMenu32( HWND32 hWnd, BOOL32 bRevert ) +HMENU32 WINAPI GetSystemMenu32( HWND32 hWnd, BOOL32 bRevert ) { WND *wndPtr = WIN_FindWndPtr( hWnd ); @@ -3237,8 +3335,8 @@ { POPUPMENU *menu = (POPUPMENU*) USER_HEAP_LIN_ADDR(wndPtr->hSysMenu); - if( menu->items[0].item_id == MENU_DefSysPopup ) - menu->items[0].item_id = MENU_CopySysPopup(); + if( menu->items[0].hSubMenu == MENU_DefSysPopup ) + menu->items[0].hSubMenu = MENU_CopySysPopup(); } } @@ -3255,7 +3353,7 @@ /******************************************************************* * SetSystemMenu16 (USER.280) */ -BOOL16 SetSystemMenu16( HWND16 hwnd, HMENU16 hMenu ) +BOOL16 WINAPI SetSystemMenu16( HWND16 hwnd, HMENU16 hMenu ) { return SetSystemMenu32( hwnd, hMenu ); } @@ -3264,7 +3362,7 @@ /******************************************************************* * SetSystemMenu32 (USER32.507) */ -BOOL32 SetSystemMenu32( HWND32 hwnd, HMENU32 hMenu ) +BOOL32 WINAPI SetSystemMenu32( HWND32 hwnd, HMENU32 hMenu ) { WND *wndPtr = WIN_FindWndPtr(hwnd); @@ -3281,7 +3379,7 @@ /********************************************************************** * GetMenu16 (USER.157) */ -HMENU16 GetMenu16( HWND16 hWnd ) +HMENU16 WINAPI GetMenu16( HWND16 hWnd ) { WND * wndPtr = WIN_FindWndPtr(hWnd); if (wndPtr && !(wndPtr->dwStyle & WS_CHILD)) @@ -3293,7 +3391,7 @@ /********************************************************************** * GetMenu32 (USER32.256) */ -HMENU32 GetMenu32( HWND32 hWnd ) +HMENU32 WINAPI GetMenu32( HWND32 hWnd ) { WND * wndPtr = WIN_FindWndPtr(hWnd); if (wndPtr && !(wndPtr->dwStyle & WS_CHILD)) @@ -3305,7 +3403,7 @@ /********************************************************************** * SetMenu16 (USER.158) */ -BOOL16 SetMenu16( HWND16 hWnd, HMENU16 hMenu ) +BOOL16 WINAPI SetMenu16( HWND16 hWnd, HMENU16 hMenu ) { return SetMenu32( hWnd, hMenu ); } @@ -3314,7 +3412,7 @@ /********************************************************************** * SetMenu32 (USER32.486) */ -BOOL32 SetMenu32( HWND32 hWnd, HMENU32 hMenu ) +BOOL32 WINAPI SetMenu32( HWND32 hWnd, HMENU32 hMenu ) { WND * wndPtr = WIN_FindWndPtr(hWnd); @@ -3347,7 +3445,7 @@ /********************************************************************** * GetSubMenu16 (USER.159) */ -HMENU16 GetSubMenu16( HMENU16 hMenu, INT16 nPos ) +HMENU16 WINAPI GetSubMenu16( HMENU16 hMenu, INT16 nPos ) { return GetSubMenu32( hMenu, nPos ); } @@ -3356,21 +3454,21 @@ /********************************************************************** * GetSubMenu32 (USER32.287) */ -HMENU32 GetSubMenu32( HMENU32 hMenu, INT32 nPos ) +HMENU32 WINAPI GetSubMenu32( HMENU32 hMenu, INT32 nPos ) { LPPOPUPMENU lppop; if (!(lppop = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hMenu))) return 0; if ((UINT32)nPos >= lppop->nItems) return 0; - if (!(lppop->items[nPos].item_flags & MF_POPUP)) return 0; - return (HMENU32)lppop->items[nPos].item_id; + if (!(lppop->items[nPos].fType & MF_POPUP)) return 0; + return lppop->items[nPos].hSubMenu; } /********************************************************************** * DrawMenuBar16 (USER.160) */ -void DrawMenuBar16( HWND16 hWnd ) +void WINAPI DrawMenuBar16( HWND16 hWnd ) { DrawMenuBar32( hWnd ); } @@ -3379,7 +3477,7 @@ /********************************************************************** * DrawMenuBar32 (USER32.160) */ -BOOL32 DrawMenuBar32( HWND32 hWnd ) +BOOL32 WINAPI DrawMenuBar32( HWND32 hWnd ) { LPPOPUPMENU lppop; WND *wndPtr = WIN_FindWndPtr(hWnd); @@ -3400,7 +3498,7 @@ /*********************************************************************** * EndMenu (USER.187) (USER32.174) */ -void EndMenu(void) +void WINAPI EndMenu(void) { fEndMenu = TRUE; } @@ -3409,7 +3507,7 @@ /*********************************************************************** * LookupMenuHandle (USER.217) */ -HMENU16 LookupMenuHandle( HMENU16 hmenu, INT16 id ) +HMENU16 WINAPI LookupMenuHandle( HMENU16 hmenu, INT16 id ) { HMENU32 hmenu32 = hmenu; INT32 id32 = id; @@ -3421,7 +3519,7 @@ /********************************************************************** * LoadMenu16 (USER.150) */ -HMENU16 LoadMenu16( HINSTANCE16 instance, SEGPTR name ) +HMENU16 WINAPI LoadMenu16( HINSTANCE16 instance, SEGPTR name ) { HRSRC16 hRsrc; HGLOBAL16 handle; @@ -3454,7 +3552,7 @@ /***************************************************************** * LoadMenu32A (USER32.370) */ -HMENU32 LoadMenu32A( HINSTANCE32 instance, LPCSTR name ) +HMENU32 WINAPI LoadMenu32A( HINSTANCE32 instance, LPCSTR name ) { HRSRC32 hrsrc = FindResource32A( instance, name, (LPSTR)RT_MENU ); if (!hrsrc) return 0; @@ -3465,7 +3563,7 @@ /***************************************************************** * LoadMenu32W (USER32.372) */ -HMENU32 LoadMenu32W( HINSTANCE32 instance, LPCWSTR name ) +HMENU32 WINAPI LoadMenu32W( HINSTANCE32 instance, LPCWSTR name ) { HRSRC32 hrsrc = FindResource32W( instance, name, (LPWSTR)RT_MENU ); if (!hrsrc) return 0; @@ -3476,7 +3574,7 @@ /********************************************************************** * LoadMenuIndirect16 (USER.220) */ -HMENU16 LoadMenuIndirect16( LPCVOID template ) +HMENU16 WINAPI LoadMenuIndirect16( LPCVOID template ) { HMENU16 hMenu; WORD version, offset; @@ -3505,7 +3603,7 @@ /********************************************************************** * LoadMenuIndirect32A (USER32.370) */ -HMENU32 LoadMenuIndirect32A( LPCVOID template ) +HMENU32 WINAPI LoadMenuIndirect32A( LPCVOID template ) { HMENU16 hMenu; WORD version, offset; @@ -3547,7 +3645,7 @@ /********************************************************************** * LoadMenuIndirect32W (USER32.371) */ -HMENU32 LoadMenuIndirect32W( LPCVOID template ) +HMENU32 WINAPI LoadMenuIndirect32W( LPCVOID template ) { /* FIXME: is there anything different between A and W? */ return LoadMenuIndirect32A( template ); @@ -3557,11 +3655,20 @@ /********************************************************************** * IsMenu16 (USER.358) */ -BOOL16 IsMenu16( HMENU16 hmenu ) +BOOL16 WINAPI IsMenu16( HMENU16 hmenu ) { - LPPOPUPMENU menu; - if (!(menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR( hmenu ))) return FALSE; - return (menu->wMagic == MENU_MAGIC); + LPPOPUPMENU menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hmenu); + return IS_A_MENU(menu); +} + + +/********************************************************************** + * IsMenu32 (USER32.345) + */ +BOOL32 WINAPI IsMenu32(HMENU32 hmenu) +{ + LPPOPUPMENU menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR(hmenu); + return IS_A_MENU(menu); } /********************************************************************** @@ -3574,40 +3681,48 @@ BOOL32 unicode) { MENUITEM *menu = MENU_FindItem (&hmenu, &item, bypos); - if (!menu) return FALSE; + debug_print_menuitem("GetMenuItemInfo32_common: ", menu, "\n"); + if (!menu) + return FALSE; - if (lpmii->fMask && MIIM_TYPE) - { - lpmii->fType = menu->item_flags; - lpmii->dwTypeData = menu->text; - if (IS_STRING_ITEM (menu->item_flags)) - { - lpmii->cch = strlen (menu->text); + if (lpmii->fMask & MIIM_TYPE) { + lpmii->fType = menu->fType; + switch (MENU_ITEM_TYPE(menu->fType)) { + case MF_STRING: + if (menu->text && lpmii->dwTypeData && lpmii->cch) { if (unicode) - ; /* UGH! FIXME */ + lstrcpynAtoW((LPWSTR) lpmii->dwTypeData, + menu->text, + lpmii->cch); + else + lstrcpyn32A(lpmii->dwTypeData, + menu->text, + lpmii->cch); } - else - lpmii->cch = 0; + break; + case MF_OWNERDRAW: + case MF_BITMAP: + lpmii->dwTypeData = menu->text; + break; + default: + break; } - - if (lpmii->fMask && MIIM_STATE) - lpmii->fState = 0; /* FIXME -- not saved. */ - - if (lpmii->wID && MIIM_ID) - lpmii->fType = menu->item_id; - - if (lpmii->fMask && MIIM_SUBMENU) - lpmii->hSubMenu = menu->item_id; /* FIXME: ??? */ - - if (lpmii->fMask && MIIM_CHECKMARKS) - { - PCBITMAPS pCB = menu->pCB; - lpmii->hbmpChecked = pCB ? pCB->hCheckBit : 0; - lpmii->hbmpUnchecked = pCB ? pCB->hUnCheckBit : 0; } + if (lpmii->fMask & MIIM_STATE) + lpmii->fState = menu->fState; - if (lpmii->fMask && MIIM_DATA) - lpmii->dwItemData = 0; /* FIXME -- not saved. */ + if (lpmii->fMask & MIIM_ID) + lpmii->wID = menu->wID; + + if (lpmii->fMask & MIIM_SUBMENU) + lpmii->hSubMenu = menu->hSubMenu; + + if (lpmii->fMask & MIIM_CHECKMARKS) { + lpmii->hbmpChecked = menu->hCheckBit; + lpmii->hbmpUnchecked = menu->hUnCheckBit; + } + if (lpmii->fMask & MIIM_DATA) + lpmii->dwItemData = menu->dwItemData; return TRUE; } @@ -3615,8 +3730,8 @@ /********************************************************************** * GetMenuItemInfo32A (USER32.263) */ -BOOL32 GetMenuItemInfo32A( HMENU32 hmenu, UINT32 item, BOOL32 bypos, - LPMENUITEMINFO32A lpmii) +BOOL32 WINAPI GetMenuItemInfo32A( HMENU32 hmenu, UINT32 item, BOOL32 bypos, + LPMENUITEMINFO32A lpmii) { return GetMenuItemInfo32_common (hmenu, item, bypos, lpmii, FALSE); } @@ -3624,20 +3739,136 @@ /********************************************************************** * GetMenuItemInfo32W (USER32.264) */ -BOOL32 GetMenuItemInfo32W( HMENU32 hmenu, UINT32 item, BOOL32 bypos, - LPMENUITEMINFO32W lpmii) +BOOL32 WINAPI GetMenuItemInfo32W( HMENU32 hmenu, UINT32 item, BOOL32 bypos, + LPMENUITEMINFO32W lpmii) { return GetMenuItemInfo32_common (hmenu, item, bypos, (LPMENUITEMINFO32A)lpmii, TRUE); } +/********************************************************************** + * SetMenuItemInfo32_common + */ + +static BOOL32 SetMenuItemInfo32_common(MENUITEM * menu, + const MENUITEMINFO32A *lpmii, + BOOL32 unicode) +{ + if (!menu) return FALSE; + + if (lpmii->fMask & MIIM_TYPE) { + /* Get rid of old string. */ + if (IS_STRING_ITEM(menu->fType) && menu->text) + HeapFree(SystemHeap, 0, menu->text); + + menu->fType = lpmii->fType; + menu->text = lpmii->dwTypeData; + if (IS_STRING_ITEM(menu->fType) && menu->text) { + menu->text = + unicode + ? HEAP_strdupWtoA(SystemHeap, 0, + (LPWSTR) lpmii->dwTypeData) + : HEAP_strdupA(SystemHeap, 0, lpmii->dwTypeData); + } + } + if (lpmii->fMask & MIIM_STATE) + menu->fState = lpmii->fState; + + if (lpmii->fMask & MIIM_ID) + menu->wID = lpmii->wID; + + if (lpmii->fMask & MIIM_SUBMENU) + menu->hSubMenu = lpmii->hSubMenu; + + if (lpmii->fMask & MIIM_CHECKMARKS) + { + menu->hCheckBit = lpmii->hbmpChecked; + menu->hUnCheckBit = lpmii->hbmpUnchecked; + } + if (lpmii->fMask & MIIM_DATA) + menu->dwItemData = lpmii->dwItemData; + + debug_print_menuitem("SetMenuItemInfo32_common: ", menu, "\n"); + return TRUE; +} /********************************************************************** - * IsMenu32 (USER32.345) + * SetMenuItemInfo32A (USER32.490) */ -BOOL32 IsMenu32( HMENU32 hmenu ) +BOOL32 WINAPI SetMenuItemInfo32A(HMENU32 hmenu, UINT32 item, BOOL32 bypos, + const MENUITEMINFO32A *lpmii) { - LPPOPUPMENU menu; - if (!(menu = (LPPOPUPMENU) USER_HEAP_LIN_ADDR( hmenu ))) return FALSE; - return (menu->wMagic == MENU_MAGIC); + return SetMenuItemInfo32_common(MENU_FindItem(&hmenu, &item, bypos), + lpmii, FALSE); +} + +/********************************************************************** + * SetMenuItemInfo32W (USER32.491) + */ +BOOL32 WINAPI SetMenuItemInfo32W(HMENU32 hmenu, UINT32 item, BOOL32 bypos, + const MENUITEMINFO32W *lpmii) +{ + return SetMenuItemInfo32_common(MENU_FindItem(&hmenu, &item, bypos), + (const MENUITEMINFO32A*)lpmii, TRUE); +} + +/********************************************************************** + * SetMenuDefaultItem32 (USER32.488) + */ +BOOL32 WINAPI SetMenuDefaultItem32(HMENU32 hmenu, UINT32 item, BOOL32 bypos) +{ + MENUITEM *menu = MENU_FindItem(&hmenu, &item, bypos); + if (!menu) return FALSE; + debug_print_menuitem("SetMenuDefaultItem32: ", menu, "\n"); + fprintf(stdnimp, "SetMenuDefaultItem32 (0x%x,%d,%d), empty stub!\n", + hmenu, item, bypos); + return TRUE; +} + +/******************************************************************* + * InsertMenuItem16 (USER.441) + * + * FIXME: untested + */ +BOOL16 WINAPI InsertMenuItem16( HMENU16 hmenu, UINT16 pos, BOOL16 byposition, + const MENUITEMINFO16 *mii ) +{ + MENUITEMINFO32A miia; + + miia.cbSize = sizeof(miia); + miia.fMask = mii->fMask; + miia.dwTypeData = miia.dwTypeData; + miia.fType = mii->fType; + miia.fState = mii->fState; + miia.wID = mii->wID; + miia.hSubMenu = mii->hSubMenu; + miia.hbmpChecked = mii->hbmpChecked; + miia.hbmpUnchecked = mii->hbmpUnchecked; + miia.dwItemData = mii->dwItemData; + miia.cch = mii->cch; + if (IS_STRING_ITEM(miia.fType)) + miia.dwTypeData = PTR_SEG_TO_LIN(miia.dwTypeData); + return InsertMenuItem32A( hmenu, pos, byposition, &miia ); +} + + +/********************************************************************** + * InsertMenuItem32A (USER32.322) + */ +BOOL32 WINAPI InsertMenuItem32A(HMENU32 hMenu, UINT32 uItem, BOOL32 bypos, + const MENUITEMINFO32A *lpmii) +{ + MENUITEM *item = MENU_InsertItem(hMenu, uItem, bypos); + return SetMenuItemInfo32_common(item, lpmii, FALSE); +} + + +/********************************************************************** + * InsertMenuItem32W (USER32.323) + */ +BOOL32 WINAPI InsertMenuItem32W(HMENU32 hMenu, UINT32 uItem, BOOL32 bypos, + const MENUITEMINFO32W *lpmii) +{ + MENUITEM *item = MENU_InsertItem(hMenu, uItem, bypos); + return SetMenuItemInfo32_common(item, (const MENUITEMINFO32A*)lpmii, TRUE); }
diff --git a/controls/scroll.c b/controls/scroll.c index d2371f1..b8a3d4e 100644 --- a/controls/scroll.c +++ b/controls/scroll.c
@@ -756,8 +756,8 @@ /*********************************************************************** * ScrollBarWndProc */ -LRESULT ScrollBarWndProc( HWND32 hwnd, UINT32 message, WPARAM32 wParam, - LPARAM lParam ) +LRESULT WINAPI ScrollBarWndProc( HWND32 hwnd, UINT32 message, WPARAM32 wParam, + LPARAM lParam ) { switch(message) { @@ -893,8 +893,8 @@ /************************************************************************* * SetScrollInfo16 (USER.475) */ -INT16 SetScrollInfo16( HWND16 hwnd, INT16 nBar, const SCROLLINFO *info, - BOOL16 bRedraw ) +INT16 WINAPI SetScrollInfo16( HWND16 hwnd, INT16 nBar, const SCROLLINFO *info, + BOOL16 bRedraw ) { return (INT16)SetScrollInfo32( hwnd, nBar, info, bRedraw ); } @@ -903,8 +903,8 @@ /************************************************************************* * SetScrollInfo32 (USER32.500) */ -INT32 SetScrollInfo32( HWND32 hwnd, INT32 nBar, const SCROLLINFO *info, - BOOL32 bRedraw ) +INT32 WINAPI SetScrollInfo32( HWND32 hwnd, INT32 nBar, const SCROLLINFO *info, + BOOL32 bRedraw ) { SCROLLBAR_INFO *infoPtr; UINT32 new_flags; @@ -1007,7 +1007,7 @@ /************************************************************************* * GetScrollInfo16 (USER.476) */ -BOOL16 GetScrollInfo16( HWND16 hwnd, INT16 nBar, LPSCROLLINFO info ) +BOOL16 WINAPI GetScrollInfo16( HWND16 hwnd, INT16 nBar, LPSCROLLINFO info ) { return GetScrollInfo32( hwnd, nBar, info ); } @@ -1016,7 +1016,7 @@ /************************************************************************* * GetScrollInfo32 (USER32.283) */ -BOOL32 GetScrollInfo32( HWND32 hwnd, INT32 nBar, LPSCROLLINFO info ) +BOOL32 WINAPI GetScrollInfo32( HWND32 hwnd, INT32 nBar, LPSCROLLINFO info ) { SCROLLBAR_INFO *infoPtr; @@ -1041,7 +1041,8 @@ /************************************************************************* * SetScrollPos16 (USER.62) */ -INT16 SetScrollPos16( HWND16 hwnd, INT16 nBar, INT16 nPos, BOOL16 bRedraw ) +INT16 WINAPI SetScrollPos16( HWND16 hwnd, INT16 nBar, INT16 nPos, + BOOL16 bRedraw ) { return (INT16)SetScrollPos32( hwnd, nBar, nPos, bRedraw ); } @@ -1050,7 +1051,8 @@ /************************************************************************* * SetScrollPos32 (USER32.501) */ -INT32 SetScrollPos32( HWND32 hwnd, INT32 nBar, INT32 nPos, BOOL32 bRedraw ) +INT32 WINAPI SetScrollPos32( HWND32 hwnd, INT32 nBar, INT32 nPos, + BOOL32 bRedraw ) { SCROLLINFO info; SCROLLBAR_INFO *infoPtr; @@ -1069,7 +1071,7 @@ /************************************************************************* * GetScrollPos16 (USER.63) */ -INT16 GetScrollPos16( HWND16 hwnd, INT16 nBar ) +INT16 WINAPI GetScrollPos16( HWND16 hwnd, INT16 nBar ) { return (INT16)GetScrollPos32( hwnd, nBar ); } @@ -1078,7 +1080,7 @@ /************************************************************************* * GetScrollPos32 (USER32.284) */ -INT32 GetScrollPos32( HWND32 hwnd, INT32 nBar ) +INT32 WINAPI GetScrollPos32( HWND32 hwnd, INT32 nBar ) { SCROLLBAR_INFO *infoPtr; @@ -1090,8 +1092,8 @@ /************************************************************************* * SetScrollRange16 (USER.64) */ -void SetScrollRange16( HWND16 hwnd, INT16 nBar, INT16 MinVal, INT16 MaxVal, - BOOL16 bRedraw ) +void WINAPI SetScrollRange16( HWND16 hwnd, INT16 nBar, + INT16 MinVal, INT16 MaxVal, BOOL16 bRedraw ) { /* Invalid range -> range is set to (0,0) */ if ((INT32)MaxVal - (INT32)MinVal > 0x7fff) MinVal = MaxVal = 0; @@ -1102,8 +1104,8 @@ /************************************************************************* * SetScrollRange32 (USER32.502) */ -BOOL32 SetScrollRange32( HWND32 hwnd, INT32 nBar, INT32 MinVal, INT32 MaxVal, - BOOL32 bRedraw ) +BOOL32 WINAPI SetScrollRange32( HWND32 hwnd, INT32 nBar, + INT32 MinVal, INT32 MaxVal, BOOL32 bRedraw ) { SCROLLINFO info; @@ -1153,7 +1155,8 @@ /************************************************************************* * GetScrollRange16 (USER.65) */ -BOOL16 GetScrollRange16( HWND16 hwnd, INT16 nBar, LPINT16 lpMin, LPINT16 lpMax) +BOOL16 WINAPI GetScrollRange16( HWND16 hwnd, INT16 nBar, + LPINT16 lpMin, LPINT16 lpMax) { INT32 min, max; BOOL16 ret = GetScrollRange32( hwnd, nBar, &min, &max ); @@ -1166,7 +1169,8 @@ /************************************************************************* * GetScrollRange32 (USER32.285) */ -BOOL32 GetScrollRange32( HWND32 hwnd, INT32 nBar, LPINT32 lpMin, LPINT32 lpMax) +BOOL32 WINAPI GetScrollRange32( HWND32 hwnd, INT32 nBar, + LPINT32 lpMin, LPINT32 lpMax) { SCROLLBAR_INFO *infoPtr; @@ -1185,7 +1189,7 @@ /************************************************************************* * ShowScrollBar16 (USER.267) */ -void ShowScrollBar16( HWND16 hwnd, INT16 nBar, BOOL16 fShow ) +void WINAPI ShowScrollBar16( HWND16 hwnd, INT16 nBar, BOOL16 fShow ) { ShowScrollBar32( hwnd, nBar, fShow ); } @@ -1194,7 +1198,7 @@ /************************************************************************* * ShowScrollBar32 (USER32.531) */ -BOOL32 ShowScrollBar32( HWND32 hwnd, INT32 nBar, BOOL32 fShow ) +BOOL32 WINAPI ShowScrollBar32( HWND32 hwnd, INT32 nBar, BOOL32 fShow ) { WND *wndPtr = WIN_FindWndPtr( hwnd ); @@ -1261,7 +1265,7 @@ /************************************************************************* * EnableScrollBar16 (USER.482) */ -BOOL16 EnableScrollBar16( HWND16 hwnd, INT16 nBar, UINT16 flags ) +BOOL16 WINAPI EnableScrollBar16( HWND16 hwnd, INT16 nBar, UINT16 flags ) { return EnableScrollBar32( hwnd, nBar, flags ); } @@ -1270,7 +1274,7 @@ /************************************************************************* * EnableScrollBar32 (USER32.170) */ -BOOL32 EnableScrollBar32( HWND32 hwnd, INT32 nBar, UINT32 flags ) +BOOL32 WINAPI EnableScrollBar32( HWND32 hwnd, INT32 nBar, UINT32 flags ) { SCROLLBAR_INFO *infoPtr;
diff --git a/controls/static.c b/controls/static.c index 6a547e2..ecd4a02 100644 --- a/controls/static.c +++ b/controls/static.c
@@ -50,13 +50,17 @@ { HICON16 prevIcon; STATICINFO *infoPtr = (STATICINFO *)wndPtr->wExtra; + CURSORICONINFO *info = hicon?(CURSORICONINFO *) GlobalLock16( hicon ):NULL; if ((wndPtr->dwStyle & 0x0f) != SS_ICON) return 0; + if (hicon && !info) { + fprintf(stderr,"STATIC_SetIcon: huh? hicon!=0, but info=0???\n"); + return 0; + } prevIcon = infoPtr->hIcon; infoPtr->hIcon = hicon; if (hicon) { - CURSORICONINFO *info = (CURSORICONINFO *) GlobalLock16( hicon ); SetWindowPos32( wndPtr->hwndSelf, 0, 0, 0, info->nWidth, info->nHeight, SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER ); GlobalUnlock16( hicon ); @@ -95,8 +99,8 @@ /*********************************************************************** * StaticWndProc */ -LRESULT StaticWndProc( HWND32 hWnd, UINT32 uMsg, WPARAM32 wParam, - LPARAM lParam ) +LRESULT WINAPI StaticWndProc( HWND32 hWnd, UINT32 uMsg, WPARAM32 wParam, + LPARAM lParam ) { LRESULT lResult = 0; WND *wndPtr = WIN_FindWndPtr(hWnd);
diff --git a/controls/status.c b/controls/status.c index feef96c..0732664 100644 --- a/controls/status.c +++ b/controls/status.c
@@ -38,7 +38,8 @@ /*********************************************************************** * DrawStatusText32A (COMCTL32.3) */ -void DrawStatusText32A( HDC32 hdc, LPRECT32 lprc, LPCSTR text, UINT32 style ) +void WINAPI DrawStatusText32A( HDC32 hdc, LPRECT32 lprc, LPCSTR text, + UINT32 style ) { RECT32 r, rt; int oldbkmode; @@ -435,8 +436,8 @@ return 0; } -LRESULT StatusWindowProc( HWND32 hwnd, UINT32 msg, - WPARAM32 wParam, LPARAM lParam ) +LRESULT WINAPI StatusWindowProc( HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ) { STATUSWINDOWINFO *self; @@ -480,8 +481,8 @@ /*********************************************************************** * CreateStatusWindow32A (COMCTL32.4) */ -HWND32 CreateStatusWindow32A( INT32 style, LPCSTR text, HWND32 parent, - UINT32 wid ) +HWND32 WINAPI CreateStatusWindow32A( INT32 style, LPCSTR text, HWND32 parent, + UINT32 wid ) { HWND32 ret; ATOM atom;
diff --git a/controls/updown.c b/controls/updown.c new file mode 100644 index 0000000..a3a75ef --- /dev/null +++ b/controls/updown.c
@@ -0,0 +1,865 @@ +/* + * Updown control + * + * Copyright 1997 Dimitrie O. Paun + * + * TODO: + * - subclass the buddy window (in UPDOWN_SetBuddy) to process the + * arrow keys + * - I am not sure about the default values for the Min, Max, Pos + * (in the UPDOWN_INFO the fields: MinVal, MaxVal, CurVal) + * Testing: + * Not much. The following have not been tested at all: + * - horizontal arrows + * - listbox as buddy window + * - acceleration + * - base 16 + * - UDS_ALIGNLEFT, ~UDS_WRAP + * - integers with thousand separators. + * Even though the above list seems rather large, the control seems to + * behave very well so I am confident it does work in most (all) of the + * untested cases. + * Problems: + * At the moment, the control will no draw itself very well because it + * uses some features in DrawEdge that are not yet implemented. + * In other words, there is no known problem, exempt for the things in + * the TODO list above. + */ + +#include <stdlib.h> +#include <stdio.h> +#include <assert.h> +#include <string.h> +#include "windows.h" +#include "winnls.h" +#include "syscolor.h" +#include "sysmetrics.h" +#include "updown.h" +#include "graphics.h" +#include "heap.h" +#include "win.h" +#include "stddebug.h" +/*#define DEBUG_UPDOWN*/ +#include "debug.h" + +/* Control configuration constants */ + +#define INITIAL_DELAY 500 /* initial timer until auto-increment kicks in */ +#define REPEAT_DELAY 50 /* delay between auto-increments */ + +#define DEFAULT_WIDTH 10 /* default width of the ctrl */ +#define DEFAULT_XSEP 0 /* default separation between buddy and crtl */ +#define DEFAULT_ADDTOP 1 /* amount to extend above the buddy window */ +#define DEFAULT_ADDBOT 1 /* amount to extend below the buddy window */ + + +/* Work constants */ + +#define FLAG_INCR 0x01 +#define FLAG_DECR 0x02 +#define FLAG_MOUSEIN 0x04 +#define FLAG_CLICKED (FLAG_INCR | FLAG_DECR) + +#define TIMERID1 1 +#define TIMERID2 2 + +static int accelIndex = -1; + +#define max(a,b) ((a)>(b)?(a):(b)) +#define min(a,b) ((a)<(b)?(a):(b)) + +#define UNKNOWN_PARAM(msg, wParam, lParam) dprintf_updown(stddeb, \ + "UpDown Ctrl: Unknown parameter(s) for message " #msg \ + "(%04x): wp=%04x lp=%08lx\n", msg, wParam, lParam); + +#define UPDOWN_GetInfoPtr(wndPtr) ((UPDOWN_INFO *)wndPtr->wExtra) + +/*********************************************************************** + * UPDOWN_InBounds + * Tests if a given value 'val' is between the Min&Max limits + */ +static BOOL32 UPDOWN_InBounds(WND *wndPtr, int val) +{ + UPDOWN_INFO *infoPtr = UPDOWN_GetInfoPtr(wndPtr); + + if(infoPtr->MaxVal > infoPtr->MinVal) + return (infoPtr->MinVal <= val) && (val <= infoPtr->MaxVal); + else + return (infoPtr->MaxVal <= val) && (val <= infoPtr->MinVal); +} + +/*********************************************************************** + * UPDOWN_OffsetVal + * Tests if we can change the current value by delta. If so, it changes + * it and returns TRUE. Else, it leaves it unchanged and returns FALSE. + */ +static BOOL32 UPDOWN_OffsetVal(WND *wndPtr, int delta) +{ + UPDOWN_INFO *infoPtr = UPDOWN_GetInfoPtr(wndPtr); + + /* check if we can do the modification first */ + if(!UPDOWN_InBounds(wndPtr, infoPtr->CurVal+delta)){ + if(wndPtr->dwStyle & UDS_WRAP) + delta += (delta < 0 ? -1 : 1) * + (infoPtr->MaxVal < infoPtr->MinVal ? -1 : 1) * + (infoPtr->MinVal - infoPtr->MaxVal) + + (delta < 0 ? 1 : -1); + else + return FALSE; + } + + infoPtr->CurVal += delta; + return TRUE; +} + +/*********************************************************************** + * UPDOWN_GetArrawRect + * wndPtr - pointer to the up-down wnd + * rect - will hold the rectangle + * incr - TRUE get the "increment" rect (up or right) + * FALSE get the "decrement" rect (down or left) + * + */ +static void UPDOWN_GetArrowRect(WND *wndPtr, RECT32 *rect, BOOL32 incr) +{ + int len; /* will hold the width or height */ + + GetClientRect32(wndPtr->hwndSelf, rect); + + if (wndPtr->dwStyle & UDS_HORZ) { + len = rect->right - rect->left; /* compute the width */ + if (incr) + rect->left = len/2; + else + rect->right = len/2; + } + else { + len = rect->bottom - rect->top; /* compute the height */ + if (incr) + rect->bottom = len/2; + else + rect->top = len/2; + } +} + +/*********************************************************************** + * UPDOWN_GetArrowFromPoint + * Returns the rectagle (for the up or down arrow) that contains pt. + * If it returns the up rect, it returns TRUE. + * If it returns the down rect, it returns FALSE. + */ +static int UPDOWN_GetArrowFromPoint(WND *wndPtr, RECT32 *rect, POINT32 pt) +{ + UPDOWN_GetArrowRect(wndPtr, rect, TRUE); + if(PtInRect32(rect, pt)) + return TRUE; + + UPDOWN_GetArrowRect(wndPtr, rect, FALSE); + return FALSE; +} + + +/*********************************************************************** + * UPDOWN_GetThousandSep + * Returns the thousand sep. If an error occurs, it returns ','. + */ +static char UPDOWN_GetThousandSep() +{ + char sep[2]; + + if(GetLocaleInfo32A(LOCALE_USER_DEFAULT, LOCALE_STHOUSAND, + sep, sizeof(sep)) != 1) + return ','; + + return sep[0]; +} + +/*********************************************************************** + * UPDOWN_GetBuddyInt + * Tries to read the pos from the buddy window and if it succeeds, + * it stores it in the control's CurVal + * returns: + * TRUE - if it read the integer from the buddy successfully + * FALSE - if an error occured + */ +static BOOL32 UPDOWN_GetBuddyInt(WND *wndPtr) +{ + UPDOWN_INFO *infoPtr = UPDOWN_GetInfoPtr(wndPtr); + char txt[20], sep, *src, *dst; + int newVal; + + if (!IsWindow32(infoPtr->Buddy)) + return FALSE; + + /*if the buddy is a list window, we must set curr index */ + if(WIDGETS_IsControl32(WIN_FindWndPtr(infoPtr->Buddy), BIC32_LISTBOX)){ + newVal = SendMessage32A(infoPtr->Buddy, LB_GETCARETINDEX32, 0, 0); + if(newVal < 0) + return FALSE; + } + else{ + /* we have a regural window, so will get the text */ + if (!GetWindowText32A(infoPtr->Buddy, txt, sizeof(txt))) + return FALSE; + + sep = UPDOWN_GetThousandSep(); + + /* now get rid of the separators */ + for(src = dst = txt; *src; src++) + if(*src != sep) + *dst++ = *src; + *dst = 0; + + /* try to convert the number and validate it */ + newVal = strtol(txt, &src, infoPtr->Base); + if(*src || !UPDOWN_InBounds(wndPtr, newVal)) + return FALSE; + + dprintf_updown(stddeb, "UpDown Ctrl: new value(%d) read from buddy " + "(old=%d)\n", newVal, infoPtr->CurVal); + } + + infoPtr->CurVal = newVal; + return TRUE; +} + + +/*********************************************************************** + * UPDOWN_SetBuddyInt + * Tries to set the pos to the buddy window based on current pos + * returns: + * TRUE - if it set the caption of the buddy successfully + * FALSE - if an error occured + */ +static BOOL32 UPDOWN_SetBuddyInt(WND *wndPtr) +{ + UPDOWN_INFO *infoPtr = UPDOWN_GetInfoPtr(wndPtr); + char txt1[20], sep; + int len; + + if (!IsWindow32(infoPtr->Buddy)) + return FALSE; + + dprintf_updown(stddeb, "UpDown Ctrl: set new value(%d) to buddy.\n", + infoPtr->CurVal); + + /*if the buddy is a list window, we must set curr index */ + if(WIDGETS_IsControl32(WIN_FindWndPtr(infoPtr->Buddy), BIC32_LISTBOX)){ + SendMessage32A(infoPtr->Buddy, LB_SETCURSEL32, infoPtr->CurVal, 0); + } + else{ /* Regural window, so set caption to the number */ + len = sprintf(txt1, (infoPtr->Base==16) ? "%X" : "%d", infoPtr->CurVal); + + sep = UPDOWN_GetThousandSep(); + + if (!(wndPtr->dwStyle & UDS_NOTHOUSANDS)) { + char txt2[20], *src = txt1, *dst = txt2; + if(len%3 > 0){ + strncpy(dst, src, len%3); + dst += len%3; + src += len%3; + } + for(len=0; *src; len++,src++){ + if(len%3==0) + *dst++ = sep; + *dst++ = *src++; + } + *dst = 0; /* null terminate it */ + strcpy(txt1, txt2); /* move it to the proper place */ + } + SetWindowText32A(infoPtr->Buddy, txt1); + } + + return TRUE; +} + +/*********************************************************************** + * UPDOWN_DrawArraw + * Draw the arrows for the up-down control. The arrows are drawn with the + * current pen and filled with the current brush. + * Input: + * hdc - the DC to draw on + * rect - rectangle holding the arrow + * incr - TRUE if we draw the "increment" arrow + * FALSE if we draw the "decrement" arrow + * pressed - TRUE if the arrow is pressed (clicked) + * FALSE if the arrow is not pressed (clicked) + * horz - TRUE if the arrow is horizontal + * FLASE if the arrow is vertical + */ +static void UPDOWN_DrawArrow(HDC32 hdc, RECT32 *rect, BOOL32 incr, + BOOL32 pressed, BOOL32 horz) +{ + const int w = rect->right - rect->left; + const int h = rect->bottom - rect->top; + int offset = pressed ? 1 : 0, tmp; + POINT32 pts[3]; + + if(horz){ /* horizontal arrows */ + pts[0].x = rect->right - max(2, w/3) + offset; + pts[0].y = rect->top + max(2, h/4) + offset; + pts[1].x = pts[0].x; + pts[1].y = rect->bottom - max(2, h/4) + offset; + pts[2].x = rect->left + w/3 + offset; + pts[2].y = (pts[0].y + pts[1].y)/2; + if(pts[2].x-2<rect->left) + pts[2].x = rect->left + 2; + if(pts[2].x <= pts[0].x) + pts[2].x = pts[0].x - 1; + + if(incr){ + tmp = pts[2].x; + pts[2].x = pts[0].x; + pts[0].x = pts[1].x = tmp; + } + } + else{ /* vertical arrows */ + pts[0].x = rect->left + max(2, w/4) + offset; + pts[0].y = rect->top + max(2, h/3) + offset; + pts[1].x = rect->right- max(2, w/4) + offset; + pts[1].y = pts[0].y; + pts[2].x = (pts[0].x + pts[1].x)/2; + pts[2].y = pts[0].y + h/3 + offset; + if(pts[2].y+2>rect->bottom) + pts[2].y = rect->bottom - 2; + if(pts[2].y <= pts[0].y) + pts[2].y = pts[0].y + 1; + + if(incr){ + tmp = pts[2].y; + pts[2].y = pts[0].y; + pts[0].y = pts[1].y = tmp; + } + } + Polygon32(hdc, pts, 3); + +} + +/*********************************************************************** + * UPDOWN_Paint + * Draw the arrows. The background need not be erased. + */ +static void UPDOWN_Paint(WND *wndPtr) +{ + UPDOWN_INFO *infoPtr = UPDOWN_GetInfoPtr(wndPtr); + PAINTSTRUCT32 ps; + BOOL32 prssed; + RECT32 rect; + HDC32 hdc; + HBRUSH32 oldBrush; + + hdc = BeginPaint32( wndPtr->hwndSelf, &ps ); + + /*FIXME - this is just for test */ + /* - when DrawEdge works properly, this should dissapear + as DrawEdge will erase the background */ +/*oldBrush = SelectObject32(hdc, GetStockObject32(GRAY_BRUSH)); + GetClientRect32(wndPtr->hwndSelf, &rect); + Rectangle32(hdc, rect.left, rect.top, rect.right, rect.bottom); + SelectObject32(hdc, oldBrush);*/ + + /* First select the proper brush */ + oldBrush = wndPtr->dwStyle & WS_DISABLED ? GRAY_BRUSH : BLACK_BRUSH; + oldBrush = SelectObject32(hdc, GetStockObject32(oldBrush)); + + /* Draw the incr button */ + UPDOWN_GetArrowRect(wndPtr, &rect, TRUE); + prssed = (infoPtr->Flags & FLAG_INCR) && (infoPtr->Flags & FLAG_MOUSEIN); + DrawEdge32(hdc, &rect, prssed ? EDGE_SUNKEN : EDGE_RAISED, + BF_RECT | BF_SOFT | BF_MIDDLE); + UPDOWN_DrawArrow(hdc, &rect, TRUE, prssed, wndPtr->dwStyle & UDS_HORZ); + + /* Draw the decr button */ + UPDOWN_GetArrowRect(wndPtr, &rect, FALSE); + prssed = (infoPtr->Flags & FLAG_DECR) && (infoPtr->Flags & FLAG_MOUSEIN); + DrawEdge32(hdc, &rect, prssed ? EDGE_SUNKEN : EDGE_RAISED, + BF_RECT | BF_SOFT | BF_MIDDLE); + UPDOWN_DrawArrow(hdc, &rect, FALSE, prssed, wndPtr->dwStyle & UDS_HORZ); + + /* clean-up */ + SelectObject32(hdc, oldBrush); + EndPaint32( wndPtr->hwndSelf, &ps ); +} + +/*********************************************************************** + * UPDOWN_SetBuddy + * Tests if 'hwndBud' is a valid window handle. If not, returns FALSE. + * Else, sets it as a new Buddy. + * Then, it should subclass the buddy + * If window has the UDS_ARROWKEYS, it subcalsses the buddy window to + * process the UP/DOWN arrow keys. + * If window has the UDS_ALIGNLEFT or UDS_ALIGNRIGHT style + * the size/pos of the buddy and the control are adjusted accordingly. + */ +static BOOL32 UPDOWN_SetBuddy(WND *wndPtr, HWND32 hwndBud) +{ + UPDOWN_INFO *infoPtr = UPDOWN_GetInfoPtr(wndPtr); + RECT32 budRect; /* new coord for the buddy */ + int x; /* new x position and width for the up-down */ + + /* Is is a valid bud? */ + if(!IsWindow32(hwndBud)) + return FALSE; + + if(wndPtr->dwStyle & UDS_ARROWKEYS){ + /* FIXME: we need to subclass the buddy to process the arrow keys. */ + fprintf(stderr, "UpDown Ctrl: we should subclass the buddy window!\n"); + } + + /* do we need to do any adjustments? */ + if(!(wndPtr->dwStyle & (UDS_ALIGNLEFT | UDS_ALIGNRIGHT))) + return TRUE; + + /* Get the rect of the buddy relative to its parent */ + GetWindowRect32(infoPtr->Buddy, &budRect); + MapWindowPoints32(HWND_DESKTOP, GetParent32(infoPtr->Buddy), + (POINT32 *)(&budRect.left), 2); + + /* now do the positioning */ + if(wndPtr->dwStyle & UDS_ALIGNRIGHT){ + budRect.right -= DEFAULT_WIDTH+DEFAULT_XSEP; + x = budRect.right+DEFAULT_XSEP; + } + else{ /* UDS_ALIGNLEFT */ + x = budRect.left; + budRect.left += DEFAULT_WIDTH+DEFAULT_XSEP; + } + + /* first adjust the buddy to accomodate the up/down */ + SetWindowPos32(infoPtr->Buddy, 0, budRect.left, budRect.top, + budRect.right - budRect.left, budRect.bottom - budRect.top, + SWP_NOACTIVATE|SWP_NOZORDER); + + /* now position the up/down */ + /* Since the UDS_ALIGN* flags were used, */ + /* we will pick the position and size of the window. */ + SetWindowPos32(wndPtr->hwndSelf,0,x,budRect.top-DEFAULT_ADDTOP,DEFAULT_WIDTH, + (budRect.bottom-budRect.top)+DEFAULT_ADDTOP+DEFAULT_ADDBOT, + SWP_NOACTIVATE|SWP_NOZORDER); + + return TRUE; +} + +/*********************************************************************** + * UPDOWN_DoAction + * + * This function increments/decrements the CurVal by the + * 'delta' amount according to the 'incr' flag + * It notifies the parent as required. + * It handles wraping and non-wraping correctly. + * It is assumed that delta>0 + */ +static void UPDOWN_DoAction(WND *wndPtr, int delta, BOOL32 incr) +{ + UPDOWN_INFO *infoPtr = UPDOWN_GetInfoPtr(wndPtr); + int old_val = infoPtr->CurVal; + NM_UPDOWN ni; + + dprintf_updown(stddeb, "UpDown Ctrl action: %s by %d\n", + incr ? "inc" : "dec", delta); + + /* check if we can do the modification first */ + delta *= (incr ? 1 : -1) * (infoPtr->MaxVal < infoPtr->MinVal ? -1 : 1); + if(!UPDOWN_OffsetVal(wndPtr, delta)) + return; + + /* so, if we can do the change, recompute delta and restore old value */ + delta = infoPtr->CurVal - old_val; + infoPtr->CurVal = old_val; + + /* We must notify parent now to obtain permission */ + ni.iPos = infoPtr->CurVal; + ni.iDelta = delta; + ni.hdr.hwndFrom = wndPtr->hwndSelf; + ni.hdr.idFrom = wndPtr->wIDmenu; + ni.hdr.code = UDN_DELTAPOS; + if(SendMessage32A(wndPtr->parent->hwndSelf, + WM_NOTIFY, wndPtr->wIDmenu, (LPARAM)&ni)) + return; /* we are not allowed to change */ + + /* Now adjust value with (maybe new) delta */ + if(!UPDOWN_OffsetVal(wndPtr, ni.iDelta)) + return; + + /* Now take care about our buddy */ + if(!IsWindow32(infoPtr->Buddy)) + return; /* Nothing else to do */ + + + if(wndPtr->dwStyle & UDS_SETBUDDYINT) + UPDOWN_SetBuddyInt(wndPtr); + + /* Also, notify it */ + /* FIXME: do we need to send the notification only if + we do not have the UDS_SETBUDDYINT style set? */ + SendMessage32A(infoPtr->Buddy, + wndPtr->dwStyle & UDS_HORZ ? WM_HSCROLL : WM_VSCROLL, + MAKELONG(incr ? SB_LINEUP : SB_LINEDOWN, infoPtr->CurVal), + wndPtr->hwndSelf); +} + +/*********************************************************************** + * UPDOWN_IsEnabled + * + * Returns TRUE if it is enabled as well as its buddy (if any) + * FALSE otherwise + */ +static BOOL32 UPDOWN_IsEnabled(WND *wndPtr) +{ + UPDOWN_INFO *infoPtr = UPDOWN_GetInfoPtr(wndPtr); + + if(wndPtr->dwStyle & WS_DISABLED) + return FALSE; + return IsWindowEnabled32(infoPtr->Buddy); +} + +/*********************************************************************** + * UPDOWN_CancelMode + * + * Deletes any timers, releases the mouse and does redraw if necessary. + * If the control is not in "capture" mode, it does nothing. + * If the control was not in cancel mode, it returns FALSE. + * If the control was in cancel mode, it returns TRUE. + */ +static BOOL32 UPDOWN_CancelMode(WND *wndPtr) +{ + UPDOWN_INFO *infoPtr = UPDOWN_GetInfoPtr(wndPtr); + + /* if not in 'capture' mode, do nothing */ + if(!(infoPtr->Flags & FLAG_CLICKED)) + return FALSE; + + KillTimer32(wndPtr->hwndSelf, TIMERID1); /* kill all possible timers */ + KillTimer32(wndPtr->hwndSelf, TIMERID2); + + if(GetCapture32() == wndPtr->hwndSelf) /* let the mouse go */ + ReleaseCapture(); /* if we still have it */ + + infoPtr->Flags = 0; /* get rid of any flags */ + UPDOWN_Paint(wndPtr); /* redraw the control just in case */ + + return TRUE; +} + +/*********************************************************************** + * UPDOWN_HandleMouseEvent + * + * Handle a mouse event for the updown. + * 'pt' is the location of the mouse event in client or + * windows coordinates. + */ +static void UPDOWN_HandleMouseEvent(WND *wndPtr, UINT32 msg, POINT32 pt) +{ + UPDOWN_INFO *infoPtr = UPDOWN_GetInfoPtr(wndPtr); + RECT32 rect; + int temp; + + switch(msg) + { + case WM_LBUTTONDOWN: /* Initialise mouse tracking */ + /* If we are already in the 'clicked' mode, then nothing to do */ + if(infoPtr->Flags & FLAG_CLICKED) + return; + + /* If the buddy is an edit, will set focus to it */ + if(WIDGETS_IsControl32(WIN_FindWndPtr(infoPtr->Buddy), BIC32_EDIT)) + SetFocus32(infoPtr->Buddy); + + /* Now see which one is the 'active' arrow */ + temp = UPDOWN_GetArrowFromPoint(wndPtr, &rect, pt); + + /* Update the CurVal if necessary */ + if(wndPtr->dwStyle & UDS_SETBUDDYINT) + UPDOWN_GetBuddyInt(wndPtr); + + /* Before we proceed, see if we can spin... */ + if(!(wndPtr->dwStyle & UDS_WRAP)) + if(( temp && infoPtr->CurVal==infoPtr->MaxVal) || + (!temp && infoPtr->CurVal==infoPtr->MinVal)) + return; + + /* Set up the correct flags */ + infoPtr->Flags = 0; + infoPtr->Flags |= temp ? FLAG_INCR : FLAG_DECR; + infoPtr->Flags |= FLAG_MOUSEIN; + + /* repaint the control */ + UPDOWN_Paint(wndPtr); + + /* process the click */ + UPDOWN_DoAction(wndPtr, 1, infoPtr->Flags & FLAG_INCR); + + /* now capture all mouse messages */ + SetCapture32(wndPtr->hwndSelf); + + /* and startup the first timer */ + SetTimer32(wndPtr->hwndSelf, TIMERID1, INITIAL_DELAY, 0); + break; + + case WM_MOUSEMOVE: + /* If we are not in the 'clicked' mode, then nothing to do */ + if(!(infoPtr->Flags & FLAG_CLICKED)) + return; + + /* save the flags to see if any got modified */ + temp = infoPtr->Flags; + + /* Now get the 'active' arrow rectangle */ + if (infoPtr->Flags & FLAG_INCR) + UPDOWN_GetArrowRect(wndPtr, &rect, TRUE); + else + UPDOWN_GetArrowRect(wndPtr, &rect, FALSE); + + /* Update the flags if we are in/out */ + if(PtInRect32(&rect, pt)) + infoPtr->Flags |= FLAG_MOUSEIN; + else{ + infoPtr->Flags &= ~FLAG_MOUSEIN; + if(accelIndex != -1) /* if we have accel info */ + accelIndex = 0; /* reset it */ + } + /* If state changed, redraw the control */ + if(temp != infoPtr->Flags) + UPDOWN_Paint(wndPtr); + break; + + default: + fprintf(stderr, "UpDown: Impossible case in proc " + "UPDOWN_HandleMouseEvent"); + } + +} + +/*********************************************************************** + * UpDownWndProc + */ +LRESULT WINAPI UpDownWindowProc(HWND32 hwnd, UINT32 message, WPARAM32 wParam, + LPARAM lParam) +{ + WND *wndPtr = WIN_FindWndPtr(hwnd); + UPDOWN_INFO *infoPtr = UPDOWN_GetInfoPtr(wndPtr); + int temp; + + switch(message) + { + case WM_CREATE: + /* initialize the info struct */ + infoPtr->AccelCount=0; infoPtr->AccelVect=0; + infoPtr->CurVal=0; infoPtr->MinVal=0; infoPtr->MaxVal=100; /*FIXME*/ + infoPtr->Base = 10; /* Default to base 10 */ + infoPtr->Buddy = 0; /* No buddy window yet */ + infoPtr->Flags = 0; /* And no flags */ + + /* Do we pick the buddy win ourselves? */ + if(wndPtr->dwStyle & UDS_AUTOBUDDY) + UPDOWN_SetBuddy(wndPtr, GetWindow32(wndPtr->hwndSelf, GW_HWNDPREV)); + + dprintf_updown(stddeb, "UpDown Ctrl creation, hwnd=%04x\n", hwnd); + break; + + case WM_DESTROY: + if(infoPtr->AccelVect) + free(infoPtr->AccelVect); + dprintf_updown(stddeb, "UpDown Ctrl destruction, hwnd=%04x\n", hwnd); + break; + + case WM_ENABLE: + if(wndPtr->dwStyle & WS_DISABLED) + UPDOWN_CancelMode(wndPtr); + UPDOWN_Paint(wndPtr); + break; + + case WM_TIMER: + /* if initial timer, kill it and start the repeat timer */ + if(wParam == TIMERID1){ + KillTimer32(hwnd, TIMERID1); + /* if no accel info given, used default timer */ + if(infoPtr->AccelCount==0 || infoPtr->AccelVect==0){ + accelIndex = -1; + temp = REPEAT_DELAY; + } + else{ + accelIndex = 0; /* otherwise, use it */ + temp = infoPtr->AccelVect[accelIndex].nSec * 1000 + 1; + } + SetTimer32(hwnd, TIMERID2, temp, 0); + } + + /* now, if the mouse is above us, do the thing...*/ + if(infoPtr->Flags & FLAG_MOUSEIN){ + temp = accelIndex==-1 ? 1 : infoPtr->AccelVect[accelIndex].nInc; + UPDOWN_DoAction(wndPtr, temp, infoPtr->Flags & FLAG_INCR); + + if(accelIndex!=-1 && accelIndex < infoPtr->AccelCount-1){ + KillTimer32(hwnd, TIMERID2); + accelIndex++; /* move to the next accel info */ + temp = infoPtr->AccelVect[accelIndex].nSec * 1000 + 1; + /* make sure we have at least 1ms intervals */ + SetTimer32(hwnd, TIMERID2, temp, 0); + } + } + break; + + case WM_CANCELMODE: + UPDOWN_CancelMode(wndPtr); + break; + + case WM_LBUTTONUP: + if(!UPDOWN_CancelMode(wndPtr)) + break; + /*If we released the mouse and our buddy is an edit */ + /* we must select all text in it. */ + if(WIDGETS_IsControl32(WIN_FindWndPtr(infoPtr->Buddy), BIC32_EDIT)) + SendMessage32A(infoPtr->Buddy, EM_SETSEL32, 0, MAKELONG(0, -1)); + break; + + case WM_LBUTTONDOWN: + case WM_MOUSEMOVE: + if(UPDOWN_IsEnabled(wndPtr)){ + POINT32 pt; + CONV_POINT16TO32( (POINT16 *)&lParam, &pt ); + UPDOWN_HandleMouseEvent( wndPtr, message, pt ); + } + break; + + case WM_KEYDOWN: + if((wndPtr->dwStyle & UDS_ARROWKEYS) && UPDOWN_IsEnabled(wndPtr)){ + switch(wParam){ + case VK_UP: + case VK_DOWN: + UPDOWN_GetBuddyInt(wndPtr); + UPDOWN_DoAction(wndPtr, 1, wParam==VK_UP); + break; + } + } + break; + + case WM_PAINT: + UPDOWN_Paint(wndPtr); + break; + + case UDM_GETACCEL: + if (wParam==0 && lParam==0) /*if both zero, */ + return infoPtr->AccelCount; /*just return the accel count*/ + if (wParam || lParam){ + UNKNOWN_PARAM(UDM_GETACCEL, wParam, lParam); + return 0; + } + temp = min(infoPtr->AccelCount, wParam); + memcpy((void *)lParam, infoPtr->AccelVect, temp*sizeof(UDACCEL)); + return temp; + + case UDM_SETACCEL: + dprintf_updown(stddeb, "UpDown Ctrl new accel info, hwnd=%04x\n", hwnd); + if(infoPtr->AccelVect){ + free(infoPtr->AccelVect); + infoPtr->AccelCount = 0; + infoPtr->AccelVect = 0; + } + if(wParam==0) + return TRUE; + infoPtr->AccelVect = malloc(wParam*sizeof(UDACCEL)); + if(infoPtr->AccelVect==0) + return FALSE; + memcpy(infoPtr->AccelVect, (void*)lParam, wParam*sizeof(UDACCEL)); + return TRUE; + + case UDM_GETBASE: + if (wParam || lParam) + UNKNOWN_PARAM(UDM_GETBASE, wParam, lParam); + return infoPtr->Base; + + case UDM_SETBASE: + dprintf_updown(stddeb, "UpDown Ctrl new base(%d), hwnd=%04x\n", + wParam, hwnd); + if ( !(wParam==10 || wParam==16) || lParam) + UNKNOWN_PARAM(UDM_SETBASE, wParam, lParam); + if (wParam==10 || wParam==16){ + temp = infoPtr->Base; + infoPtr->Base = wParam; + return temp; /* return the prev base */ + } + break; + + case UDM_GETBUDDY: + if (wParam || lParam) + UNKNOWN_PARAM(UDM_GETBUDDY, wParam, lParam); + return infoPtr->Buddy; + + case UDM_SETBUDDY: + if (lParam) + UNKNOWN_PARAM(UDM_SETBUDDY, wParam, lParam); + temp = infoPtr->Buddy; + infoPtr->Buddy = wParam; + UPDOWN_SetBuddy(wndPtr, wParam); + dprintf_updown(stddeb, "UpDown Ctrl new buddy(%04x), hwnd=%04x\n", + infoPtr->Buddy, hwnd); + return temp; + + case UDM_GETPOS: + if (wParam || lParam) + UNKNOWN_PARAM(UDM_GETPOS, wParam, lParam); + temp = UPDOWN_GetBuddyInt(wndPtr); + return MAKELONG(infoPtr->CurVal, temp ? 0 : 1); + + case UDM_SETPOS: + if (wParam || HIWORD(lParam)) + UNKNOWN_PARAM(UDM_GETPOS, wParam, lParam); + temp = SLOWORD(lParam); + dprintf_updown(stddeb, "UpDown Ctrl new value(%d), hwnd=%04x\n", + temp, hwnd); + if(!UPDOWN_InBounds(wndPtr, temp)){ + if(temp < infoPtr->MinVal) + temp = infoPtr->MinVal; + if(temp > infoPtr->MaxVal) + temp = infoPtr->MaxVal; + } + wParam = infoPtr->CurVal; /* save prev value */ + infoPtr->CurVal = temp; /* set the new value */ + if(wndPtr->dwStyle & UDS_SETBUDDYINT) + UPDOWN_SetBuddyInt(wndPtr); + return wParam; /* return prev value */ + + case UDM_GETRANGE: + if (wParam || lParam) + UNKNOWN_PARAM(UDM_GETRANGE, wParam, lParam); + return MAKELONG(infoPtr->MaxVal, infoPtr->MinVal); + + case UDM_SETRANGE: + if (wParam) + UNKNOWN_PARAM(UDM_SETRANGE, wParam, lParam); /* we must have: */ + infoPtr->MaxVal = SLOWORD(lParam); /* UD_MINVAL <= Max <= UD_MAXVAL */ + infoPtr->MinVal = SHIWORD(lParam); /* UD_MINVAL <= Min <= UD_MAXVAL */ + /* |Max-Min| <= UD_MAXVAL */ + dprintf_updown(stddeb, "UpDown Ctrl new range(%d to %d), hwnd=%04x\n", + infoPtr->MinVal, infoPtr->MaxVal, hwnd); + break; + + default: + if (message >= WM_USER) + fprintf( stderr, "UpDown Ctrl: unknown msg %04x wp=%04x lp=%08lx\n", + message, wParam, lParam ); + return DefWindowProc32A( hwnd, message, wParam, lParam ); + } + + return 0; +} + +/*********************************************************************** + * CreateUpDownControl (COMCTL32.14) + */ +HWND32 WINAPI CreateUpDownControl( DWORD style, INT32 x, INT32 y, + INT32 cx, INT32 cy, HWND32 parent, + INT32 id, HINSTANCE32 inst, HWND32 buddy, + INT32 maxVal, INT32 minVal, INT32 curVal ) +{ + HWND32 hUD = CreateWindow32A(UPDOWN_CLASS32A, 0, style, x, y, cx, cy, + parent, id, inst, 0); + if(hUD){ + SendMessage32A(hUD, UDM_SETBUDDY, buddy, 0); + SendMessage32A(hUD, UDM_SETRANGE, 0, MAKELONG(maxVal, minVal)); + SendMessage32A(hUD, UDM_SETPOS, 0, MAKELONG(curVal, 0)); + } + + return hUD; +}
diff --git a/controls/widgets.c b/controls/widgets.c index 20fe5a5..c8b9990 100644 --- a/controls/widgets.c +++ b/controls/widgets.c
@@ -12,6 +12,7 @@ #include "static.h" #include "status.h" #include "scroll.h" +#include "updown.h" #include "desktop.h" #include "mdi.h" #include "gdi.h" @@ -20,18 +21,18 @@ /* Window procedures */ -extern LRESULT EditWndProc( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, - LPARAM lParam ); -extern LRESULT ComboWndProc( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, - LPARAM lParam ); -extern LRESULT ComboLBWndProc( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, - LPARAM lParam ); -extern LRESULT ListBoxWndProc( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, - LPARAM lParam ); -extern LRESULT PopupMenuWndProc( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, - LPARAM lParam ); -extern LRESULT IconTitleWndProc( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, - LPARAM lParam ); +extern LRESULT WINAPI EditWndProc( HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ); +extern LRESULT WINAPI ComboWndProc( HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ); +extern LRESULT WINAPI ComboLBWndProc( HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ); +extern LRESULT WINAPI ListBoxWndProc( HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ); +extern LRESULT WINAPI PopupMenuWndProc( HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ); +extern LRESULT WINAPI IconTitleWndProc( HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ); /* Win16 class info */ @@ -102,6 +103,8 @@ { { CS_GLOBALCLASS | CS_VREDRAW | CS_HREDRAW, StatusWindowProc, 0, sizeof(STATUSWINDOWINFO), 0, 0, 0, 0, 0, STATUSCLASSNAME32A }, + { CS_GLOBALCLASS | CS_VREDRAW | CS_HREDRAW, UpDownWindowProc, 0, + sizeof(UPDOWN_INFO), 0, 0, 0, 0, 0, UPDOWN_CLASS32A } }; #define NB_COMMON_CONTROLS32 \ @@ -160,7 +163,7 @@ /*********************************************************************** * InitCommonControls (COMCTL32.15) */ -void InitCommonControls(void) +void WINAPI InitCommonControls(void) { int i; char name[30];
diff --git a/debugger/dbg.y b/debugger/dbg.y index cc6d35d..39541c1 100644 --- a/debugger/dbg.y +++ b/debugger/dbg.y
@@ -504,8 +504,10 @@ DEBUG_SilentBackTrace(); } - if( signal != SIGTRAP ) - { + if ((signal != SIGTRAP) || + (dbg_exec_mode == EXEC_STEPI_OVER) || + (dbg_exec_mode == EXEC_STEPI_INSTR)) + { /* Show where we crashed */ curr_frame = 0; DEBUG_PrintAddress( &addr, dbg_mode, TRUE ); @@ -515,7 +517,7 @@ DEBUG_Disasm( &addr, TRUE ); fprintf(stderr,"\n"); } - } + } ret_ok = 0; do
diff --git a/documentation/fonts b/documentation/fonts index 00ef738..32ac06c 100644 --- a/documentation/fonts +++ b/documentation/fonts
@@ -2,7 +2,7 @@ How To Convert Windows Fonts ============================ -If you have access to Windows installation you should use +If you have access to a Windows installation you should use fnt2bdf utility (found in the 'tools)' directory to convert bitmap fonts (VGASYS.FON, SSERIFE.FON, and SERIFE.FON) into the format that X Window System can recognize. @@ -21,18 +21,21 @@ If you are already in X you should run 'xset fp rehash' to make X server aware of the new fonts. -Step 5. Edit wine.conf file to remove aliases for the fonts +Step 5. Edit WINE.CONF file to remove aliases for the fonts you've just installed. -Wine can get by without these fonts but 'the look and feel' -will be quite different. Also, some applications try to load -their custom fonts on the fly (WinWord 6.0) and since Wine does +WINE can get by without these fonts but 'the look and feel' +may be quite different. Also, some applications try to load +their custom fonts on the fly (WinWord 6.0) and since WINE does not implement this yet it instead prints out something like; -STUB: AddFontResource( somefile.FON ) +STUB: AddFontResource( SOMEFILE.FON ) You can convert this file too. Note that .FON file may not hold -any bitmap fonts and fnt2bdf will fail if this is the case. +any bitmap fonts and fnt2bdf will fail if this is the case. Also +note that although the above message will not disappear WINE will +work around the problem by using the font you extracted from the +SOMEFILE.FON. What to do with TrueType fonts? There are several commercial font tools that can convert them to the Type1 format but the @@ -44,53 +47,75 @@ via FreeType renderer in the future (hint, hint :-) -WINE.CONF And Font Mapper -========================= +How To Add Font Aliases To WINE.CONF +==================================== Many Windows applications assume that fonts included in original Windows 3.1 -distribution (Arial, Times New Roman, MS Sans Serif, etc.) are always present. -In order to make font mapper choose a closely related font you can add aliases -to the [fonts] section. +distribution are always present. By default Wine creates a number of aliases +that map them on the existing X fonts: + +Windows font ...is mapped to... X font + +"MS Sans Serif" -> "-adobe-helvetica-" +"MS Serif" -> "-bitstream-charter-" +"Times New Roman" -> "-adobe-times-" +"Arial" -> "-adobe-helvetica-" + +There is no default alias for the "System" font. Also, no aliases are +created for the fonts that applications install at runtime. The recommended +way to deal with this problem is to convert the missing font (see above). +If it proves impossible, like in the case with TrueType fonts, you can force +the font mapper to choose a closely related X font by adding an alias to the +[fonts] section. Make sure that the X font actually exists (with xfontsel +tool). AliasN = [Windows font], [X font] <, optional "mask X font" flag> Example: -Alias0 = System, --international-, mask -Alias1 = Arial, -adobe-helvetica- -Alias2 = Times New Roman, -adobe-times- +Alias0 = System, --international-, subst +Alias1 = ... ... Comments: - There must be no gaps in the sequence {0, ..., N} otherwise all aliases +* There must be no gaps in the sequence {0, ..., N} otherwise all aliases after the first gap won't be read. - Usually font mapper translates X font names into font names visible to +* Usually font mapper translates X font names into font names visible to Windows programs in the following fashion: - X font Converted name + X font ...will show up as... Extracted name - -adobe-helvetica-... "Helvetica" - -adobe-utopia-... "Utopia" - -misc-fixed-... "Fixed" + --international-... -> "International" + -adobe-helvetica-... -> "Helvetica" + -adobe-utopia-... -> "Utopia" + -misc-fixed-... -> "Fixed" -... - -sony-fixed-... "Sony Fixed" (already have "Fixed") + -sony-fixed-... -> "Sony Fixed" -... - Only converted names appear in the font selection dialogs. However, - if there is an alias with the "mask" flag set converted name will be - replaced by this alias. + Note that since -misc-fixed- and -sony-fixed- are different fonts + Wine modified the second extracted name to make sure Windows programs + can distinguish them because only extracted names appear in the font + selection dialogs. + +* "Masking" alias replaces the original extracted name so that in the + example case we will have the following mapping: - --international- "System" + --international- -> "System" - Nonmasking aliases are translated only when program asks for a font - with the name that matches an alias. + "Nonmasking" aliases are transparent to the user and they do not + replace extracted names. - If you do not have an access to Windows fonts mentioned in the first - paragraph you should try to substitute them with similar X fonts. + Wine discards an alias when it sees that the native X font is + available. + +* If you do not have access to Windows fonts mentioned in the first + paragraph you should try to substitute the "System" font with + nonmasking alias. 'xfontsel' will show you the fonts available to + X. Alias.. = System, ...bold font without serifs - Alias.. = MS Sans Serif, ...helvetica-like font Also, some Windows applications request fonts without specifying the typeface name of the font. Font table starts with Arial in most Windows @@ -106,15 +131,16 @@ It is better to have a scalable font family (bolds and italics included) as the default choice because mapper checks all available fonts until requested height and other attributes match perfectly or the end of the - font table is reached. + font table is reached. Typical X installations have scalable fonts in + the ../fonts/Type1 and ../fonts/Speedo directories. -Cached Font Metrics -=================== +How To Manage Cached Font Metrics +================================= WINE stores detailed information about available fonts in the ~/.wine/.cachedmetrics file. You can copy it elsewhere and add this entry to the [fonts] section -in the WINE.CONF: +in your WINE.CONF: FontMetrics = <file with metrics> @@ -122,3 +148,27 @@ metrics from scratch and then it will overwrite ~/.wine/.cachedmetrics with the new information. This process can take a while. + +Too Small Or Too Large Fonts +============================ + +Windows programs may ask WINE to render a font with the height specified +in points. However, point-to-pixel ratio depends on the real physical size +of your display (15", 17", etc...). X tries to provide an estimate of that +but it can be quite different from the actual size. You can change this +ratio by adding the following entry to the [fonts] section: + +Resolution = <integer value> + +In general, higher numbers give you larger fonts. Try to experiment with +values in the 60 - 120 range. 96 is a good starting point. + + +"FONT_Init: failed to load ..." Messages On Startup +=================================================== + +The most likely cause is a broken fonts.dir file in one of your font +directories. You need to rerun 'mkfontdir' to rebuild this file. Read +its manpage for more information. + +
diff --git a/documentation/wine.texinfo b/documentation/wine.texinfo index a530871..1395c61 100644 --- a/documentation/wine.texinfo +++ b/documentation/wine.texinfo
@@ -45,12 +45,14 @@ @sp 4 FIXME: UNIX and POSIX trademarks. @* -DOS @* X11 @* -MS-Windows, Windows-NT, Windows 95 are registered trademarks of -Microsoft Corp. Postscript is a registered trademark of Adobe Systems -Inc. All other product names mentioned herein are the trademarks of -their respective owners. +Microsoft, Windows, MS-Windows, Windows-NT, Windows 95, and MS-DOS are +registered trademarks of Microsoft Corporation. +NT is a trademark of Northern Telecom Limited. +C++Builder is a trademark of Borland International, Inc. +Postscript is a registered trademark of Adobe Systems Inc. +Other trademarks are the property of their respective owners, which may +be registered in certain jurisdictions. @end ifinfo @c begin chapters on right pages @@ -60,7 +62,7 @@ @sp 10 @center @titlefont{The Wine Reference Manual} -@center Edition 0.0.2, 21 July 1997 +@center Edition 0.0.3, 14 August 1997 @c The following two commands start the copyright page. @@ -81,10 +83,14 @@ @sp 4 FIXME: UNIX and POSIX trademarks. @* -MS-Windows, Windows-NT, Windows 95 are registered trademarks of -Microsoft Corp. Postscript is a registered trademark of Adobe Systems -Inc. All other product names mentioned herein are the trademarks of -their respective owners. +X11 @* +Microsoft, Windows, MS-Windows, Windows-NT, Windows 95, and MS-DOS are +registered trademarks of Microsoft Corporation. +NT is a trademark of Northern Telecom Limited. +C++Builder is a trademark of Borland International, Inc. +Postscript is a registered trademark of Adobe Systems Inc. +Other trademarks are the property of their respective owners, which may +be registered in certain jurisdictions. @end titlepage @@ -95,12 +101,12 @@ @c Edit this macro manually in the above parts of the document @macro winemanualversion -0.0.2 +0.0.3 @end macro @c Edit this macro manually in the above parts of the document @macro winemanualdate -21 July 1997 +14 August 1997 @end macro @c Edit this macro manually into the TeX titlepage @@ -136,6 +142,11 @@ @end macro @c FIXME: automatical trademark reference +@macro WINNT40 +Windows NT 4.0 +@end macro + +@c FIXME: automatical trademark reference @macro WIN95 Windows 95 @end macro @@ -409,12 +420,12 @@ @file{RELEASE-NOTES}, @file{BUGS}, @file{LICENSE}, and @file{WARRANTY}, in the root directory of the Wine distribution. -The Wine FAQ, available from -@url{ftp://ftp.asgardpro.com/wine/dave/Wine.FAQ}, -@url{ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/Wine.FAQ}, -@url{ftp://rtfm.mit.edu/pub/usenet-by-group/comp.emulators.ms-windows.wine/WINE_(WINdows_Emulator)_Frequently_Asked_Questions}, -@url{ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/Wine.FAQ}, -@url{http://www.asgardpro.com/wine/index.html}, +The Wine FAQ, available from @* +@url{ftp://ftp.asgardpro.com/wine/dave/Wine.FAQ}, @* +@url{ftp://tsx-11.mit.edu/pub/linux/ALPHA/Wine/Wine.FAQ}, @* +@url{ftp://rtfm.mit.edu/pub/usenet-by-group/comp.emulators.ms-windows.wine/WINE_(WINdows_Emulator)_Frequently_Asked_Questions}, @* +@url{ftp://sunsite.unc.edu/pub/Linux/ALPHA/wine/Wine.FAQ}, @* +@url{http://www.asgardpro.com/wine/index.html}, @* gives answer to a lot of questions. The Wine USENET newsgroup is interesting for developers. It discusses technical @@ -702,8 +713,10 @@ The file is a directory. (Wine value: 0x0010). @end defvr @defvr_cw32 FILE_ATTRIBUTE_ARCHIVE -The file is an archive file. All non-directory files are reported by Wine -to have this attribute. (Wine value: 0x0020). +The file is an archive file. Currently, all non-directory files are +reported by Wine to have this attribute. This attribute is normally set +by @mswindows{} to indicate that a file is to be archived; when the file +is archived, the flag is cleared. (Wine value: 0x0020). @end defvr @defvr_cw32 FILE_ATTRIBUTE_NORMAL The file does not have any other attributes set. This value must be used @@ -948,7 +961,21 @@ name is the common usage, some program parts (notably DLL's themselves) sometimes refer to DLL entries by ordinal. Therefore, the ordinals cannot be chosen arbitrarily. -@* FIXME: is that correct? + +Regular programs that are compiled and linked against @mswindows{} DLL's +will import DLL functions by name. This is therefore the default +behaviour. Most DLL functions will be imported by name in all cases. +Apparently, the @WIN32{} DLL's even show some difference in the mapping +of functions and ordinals on @WINNT{} and @WIN95{}. For most DLL +functions, the ordinal number will not matter. + +There are some exceptions to that. Notable the KERNEL32 ordinals below +100 are (presently) unnamed and undocumented functions which can only be +imported by ordinal. These functions are called by some @mswindows{} +programs. Also the @file{shell32.dll} functions are reported to be +imported by ordinal in some other DLL's. + +@xref{Getting information on the API}, for sources of further information. @node Spec file header, Variable entry points, Ordinals, The spec files @subsubsection The header of a @file{.spec}-file @@ -1034,7 +1061,8 @@ @item register A function using CPU registers to pass arguments. @item stdcall -A normal @WIN32{} function. +A normal @WIN32{} function. @xref{Investigating the undocumented API}, +for an explanation of the stdcall calling convention. @item cdecl A @WIN32{} function using the C calling conventions. (This is presently only used for the built-in functions of the C runtime system). @@ -1097,6 +1125,9 @@ See the @code{wsprintf}* functions in @file{user.spec} and @file{user32.spec} for an example. +Sometimes it is not known how many arguments an undocumented DLL +function takes. @xref{Getting information on the API}, for some hints on +how to proceed in such a case. @node Special entries, , Function entry points, The spec files @subsubsection Special entries of @file{.spec}-files @@ -1132,8 +1163,10 @@ @var{ORDINAL} is replaced by the ordinal number corresponding to the function. @var{ARGLENGTH} is the number of bytes that need to be removed -from the stack before returning to the caller. @var{RETVALUE} is the -return value which will be passed back to the caller. +from the stack before returning to the caller. @xref{Investigating the +undocumented API}, for an explanation of the stdcall calling convention. +@var{RETVALUE} is the return value which will be passed back to the +caller. @strong{Extern ordinals} @@ -1182,6 +1215,10 @@ some suggestions. @menu +* Getting information on the API:: Official and unofficial sources + of information on the @WIN32{} API. +* Investigating the undocumented API:: You can find out some API + information on your own. * Implementing an API type:: How to implement a data type of the API (a checklist). * Implementing an API function:: How to implement one function @@ -1198,9 +1235,268 @@ @xref{Debugging}, for advice on how to debug Wine. @xref{Applying patches}, for instructions on applying patches. -FIXME: what is most urgently needed -@node Implementing an API type, Implementing an API function, , The Wine Project +@node Getting information on the API, Investigating the undocumented API, , The Wine Project +@section Official and unofficial documentation on the @mswindows{} API +@cindex documentation of API functions +@cindex undocumented API functions + + +@strong{Official documentation} + +For documentation on @WIN32{} API functions, you might try one of these +sources: + +@itemize @bullet + +@item +There is a free online version of the MSDN library (including +documentation for the @WIN32{} API) on +@url{http://www.microsoft.com/msdn/}. + +@item +The @WINNT{} DDK gives information about some kernel (``executive'') +routines. Some of the function documentation might also apply to user +accessible DLL's. +@end itemize + +@strong{Unofficial documentation} + +Not all of the @WIN32{} API is well documented. Some functions are +obscured, and undocumented. @xref{Ordinals}, for information about +undocumented functions imported by ordinal. Getting to know what these +functions do can be tiresome and tedious. Here is a quote from a +news posting concerning two books that might help: +@c From: vischne@ibm.net-nospam (root) +@c Subject: Re: Functions +@c Newsgroups: comp.emulators.ms-windows.wine +@c Date: 24 Jul 97 16:45:11 GMT +@c Organization: The Light +@c NNTP-Posting-Host: 129.37.246.203 +@c Message-ID: <33d78697.0@news3.ibm.net> + +@quotation +Well actually, there are at least _two_ books that address these problems. +One is by Matt Pietrek, ``Windows 95 System Programming Secrets'', which +gives some auxiliary programs for helping ferret out the information, and +the other is by Shulman, ``Undocumented Windows 95''. +@end quotation + +@xref{Ordinals}, for some notes on undocumented kernel functions. + +@itemize @bullet + +@item +@cindex book on undocumented API features by Pietrik +``Windows 95 System Programming Secrets'' @* +by Matt Pietrek @* +Book & Disk Edition @* +Paperback, 778 pages @* +Published by IDG Books Worldwide @* +Publication date: November 1, 1995 @* +Dimensions (in inches): 9.25 x 7.42 x 2.06 @* +ISBN: 1568843186 @* + +@item +@cindex book on undocumented API features by Schulman +``Undocumented Windows; A Programmers Guide +to Reserved Microsoft Windows API Functions'' @* +by Andrew Schulman @* +Paperback, 715 pages @* +Published by Addison-Wesley Pub Co @* +Publication date: February 1, 1994 @* +Dimensions (in inches): 9.11 x 7.37 x 1.53 @* +ISBN: 0201608340 @* + +@item +More books on these topics (including Schulman and Pietrik): @* +@url{http://www.sonic.net/~undoc/bookstore.html} + +@item +More details about calling undocumented functions can be found at +@url{http://ftp.uni-mannheim.de/info/OReilly/windows/win95.update/dirty.html}. + +@item +In 1993 Dr. Dobbs Journal published a column called ``Undocumented +Corner''. +@item +You might want to check out BYTE from December 1983 as well. +@* FIXME: is that to be taken seriously? +@item +And you might try to find out something on your own. @xref{Investigating +the undocumented API}, for details. +@end itemize + +But, all in all, @url{news:comp.emulators.ms-windows.wine} says +@c From: dacut@henry.ece.cmu.edu (David A. Cuthbert) +@c Subject: Re: Getting Internet Explorer to work +@c Newsgroups: comp.emulators.ms-windows.wine +@c Date: 24 Jul 1997 03:10:30 GMT +@c Organization: Electrical & Computer Engineering, Carnegie Mellon University +@c Reply-To: henry.ece.cmu.edu!dacut +@c Message-ID: <5r6h36$86c@fs7.ece.cmu.edu> +@c NNTP-Posting-Host: henry.ece.cmu.edu + +@quotation +Unfortunately, short of getting something like NuMega's SoftIce, I +don't think there's a ``good'' reference on the mystery <100 ordinals in +KERNEL32.DLL. +@end quotation + + +@node Investigating the undocumented API, Implementing an API type, Getting information on the API, The Wine Project +@section Investigating the undocumented API +@cindex undocumented API investigation +@cindex parameters of undocumented API functions +@cindex stdcall calling convention +@cindex C calling convention +@cindex API function parameters investigation +@cindex stack handling under stdcall calling + +Besides reading the documentation in @ref{Getting information on the API}, +you can find out some properties of API functions on your own. + +Sometimes it is not known how many arguments an undocumented DLL +function takes. Here is a text from a news posting that gives some +hints on how you might proceed in this case. + +@c The following text is closely quoted from: +@c From: dacut@henry.ece.cmu.edu (David A. Cuthbert) +@c Subject: Win32 stub functions (Claus Fischer, please read) +@c Newsgroups: comp.emulators.ms-windows.wine +@c Date: 7 Aug 1997 22:33:09 GMT +@c Organization: Electrical & Computer Engineering, Carnegie Mellon University +@c Reply-To: henry.ece.cmu.edu!dacut +@c Message-ID: <5sdif5$qt3@fs7.ece.cmu.edu> + +The problem with implementing stubs for @WIN32{} functions is that it is +not sufficient to return a default value (usually 0) and leave the +stack the way we found it. For most @WIN32{} functions -- those that use +the @dfn{stdcall} calling convention -- the arguments sent to the function +are removed from the stack. + +Some background: On the i386 class of machines, stack entries are +usually dword (4 bytes) in size, little-endian. The stack grows +downward in memory. The stack pointer, maintained in the @samp{esp} +register, points to the last valid entry; thus, the operation of +pushing a value onto the stack involves decrementing @samp{esp} and then +moving the value into the memory pointed to by esp (i.e., @code{push p} +in assembly resembles @code{*(--esp) = p;} in C). Removing (popping) +values off the stack is the reverse (i.e., @code{pop p} corresponds to +@code{p = *(esp++);}). + +In the @dfn{stdcall} calling convention, arguments are pushed onto the +stack right-to-left. For example, the C call + +@example + myfunction(40, 20, 70, 30); +@end example + +is expressed in Intel assembly as: + +@example + push 30 + push 70 + push 20 + push 40 + call myfunction +@end example + +In addition, the called function is responsible for removing the +arguments off the stack. Thus, before the call to myfunction, the +stack would look like: + +@example + [local variable or temporary] + [local variable or temporary] + 30 + 70 + 20 + esp -> 40 +@end example + +After the call returns, it should look like: + +@example + [local variable or temporary] + esp -> [local variable or temporary] +@end example + +To restore the stack to this state, the called function must know how +many arguments to remove (which is the number of arguments it takes). +This is a problem if the function is undocumented. + +One way to attempt to document the number of arguments each function +takes is to create a wrapper around that function that detects the +stack offset. @file{WinRelay} (see below) was written to create such +wrappers. Essentially, each wrapper assumes that the function will take +a large number of arguments (by default, 64 in @file{WinRelay}). The +wrapper copies each of these arguments into its stack, calls the actual +function, and then calculates the number of arguments by checking esp +before and after the call. + +@cindex bsod (blue screen of death) +@cindex blue screen of death +The main problem with this scheme is that the function must actually +be called from another program. Many of these functions are seldom +used. An attempt was made to aggressively query each function in a +given library (@file{ntdll.dll}) by passing 64 arguments, all 0, to each +function. Unfortunately, @WINNT40{} quickly goes to a blue screen +of death (@dfn{bsod}), even if the program is run from a +non-administrator account. + +Another method that has been much more successful is to attempt to +figure out how many arguments each function is removing from the +stack. This instruction, @code{ret hhll} (where @samp{hhll} is the +number of bytes to remove, i.e. the number of arguments times 4), contains +the bytes @samp{0xc2 ll hh} in memory. It is a reasonable assumption +that few, if any, functions take more than 16 arguments; therefore, +@samp{hh} is 0x0 and @samp{ll} is less than 0x40. This utility, +@file{MakeSpec} (see below), simply queries the address of a function +and looks for the first occurrence of the bytes @samp{0xc2 ll 0x0}, +where @math{@samp{ll} <= 0x40}. + +Of course, this is not without errors. @code{ret 00ll} is not the only +instruction that can have the byte sequence @samp{0xc2 ll 0x0}; for +example, @code{push 0x000040c2} has the byte sequence +@samp{0x68 0xc2 0x40 0x0 0x0}, which matches the above. Properly, the +utility should look for this sequence only on an instruction boundary; +unfortunately, finding instruction boundaries on an i386 requires +implementing a full disassemble -- quite a daunting task. Besides, +the probability of having such a byte sequence that is not the actual +return instruction is fairly low. + +Much more troublesome is the non-linear flow of a function. For +example, consider the following two functions: + +@example + somefunction1: + jmp somefunction1_impl + + somefunction2: + ret 0004 + + somefunction1_impl: + ret 0008 +@end example + +@file{MakeSpec} would incorrectly list both @code{somefunction1} and +@code{somefunction2} as taking only a single argument, whereas +@code{somefunction1} really takes two arguments. + +With these limitations in mind, it is possible to implement more stubs +in Wine and, eventually, the functions themselves. + +@c end of quote + +The program @file{WinRelay} can be downloaded from +@url{http://www.ece.cmu.edu/afs/ece/usr/dacut/www/src}, +and @file{MakeSpec} will be available from the same location. You can +compile them with Borland's C++Builder; you should not optimize when +compiling (@file{WinRelay} needs the stack frames). + + +@node Implementing an API type, Implementing an API function, Investigating the undocumented API, The Wine Project @section Implementing an API type Here is a checklist that should help you writing your first API type. It @@ -1279,6 +1575,11 @@ @xref{API function and type naming}, for details. @item +Find out what the function should do. This may be tricky for +undocumented functions. @xref{Getting information on the API}, for some +hints. + +@item Find out where the function should go: @enumerate @item
diff --git a/files/directory.c b/files/directory.c index 6bc5c45..ba6a2aa 100644 --- a/files/directory.c +++ b/files/directory.c
@@ -179,7 +179,7 @@ /*********************************************************************** * GetTempPath32A (KERNEL32.292) */ -UINT32 GetTempPath32A( UINT32 count, LPSTR path ) +UINT32 WINAPI GetTempPath32A( UINT32 count, LPSTR path ) { if (path) lstrcpyn32A( path, DIR_TempDosDir, count ); return strlen( DIR_TempDosDir ); @@ -189,7 +189,7 @@ /*********************************************************************** * GetTempPath32W (KERNEL32.293) */ -UINT32 GetTempPath32W( UINT32 count, LPWSTR path ) +UINT32 WINAPI GetTempPath32W( UINT32 count, LPWSTR path ) { if (path) lstrcpynAtoW( path, DIR_TempDosDir, count ); return strlen( DIR_TempDosDir ); @@ -240,14 +240,14 @@ /*********************************************************************** * GetTempDrive (KERNEL.92) */ -BYTE GetTempDrive( BYTE ignored ) +BYTE WINAPI GetTempDrive( BYTE ignored ) { /* FIXME: apparently Windows does something with the ignored byte */ return DIR_TempDosDir[0]; } -UINT32 WIN16_GetTempDrive( BYTE ignored ) +UINT32 WINAPI WIN16_GetTempDrive( BYTE ignored ) { /* A closer look at krnl386.exe shows what the SDK doesn't mention: * @@ -264,7 +264,7 @@ /*********************************************************************** * GetWindowsDirectory16 (KERNEL.134) */ -UINT16 GetWindowsDirectory16( LPSTR path, UINT16 count ) +UINT16 WINAPI GetWindowsDirectory16( LPSTR path, UINT16 count ) { return (UINT16)GetWindowsDirectory32A( path, count ); } @@ -273,7 +273,7 @@ /*********************************************************************** * GetWindowsDirectory32A (KERNEL32.311) */ -UINT32 GetWindowsDirectory32A( LPSTR path, UINT32 count ) +UINT32 WINAPI GetWindowsDirectory32A( LPSTR path, UINT32 count ) { if (path) lstrcpyn32A( path, DIR_WindowsDosDir, count ); return strlen( DIR_WindowsDosDir ); @@ -283,7 +283,7 @@ /*********************************************************************** * GetWindowsDirectory32W (KERNEL32.312) */ -UINT32 GetWindowsDirectory32W( LPWSTR path, UINT32 count ) +UINT32 WINAPI GetWindowsDirectory32W( LPWSTR path, UINT32 count ) { if (path) lstrcpynAtoW( path, DIR_WindowsDosDir, count ); return strlen( DIR_WindowsDosDir ); @@ -293,7 +293,7 @@ /*********************************************************************** * GetSystemDirectory16 (KERNEL.135) */ -UINT16 GetSystemDirectory16( LPSTR path, UINT16 count ) +UINT16 WINAPI GetSystemDirectory16( LPSTR path, UINT16 count ) { return (UINT16)GetSystemDirectory32A( path, count ); } @@ -302,7 +302,7 @@ /*********************************************************************** * GetSystemDirectory32A (KERNEL32.282) */ -UINT32 GetSystemDirectory32A( LPSTR path, UINT32 count ) +UINT32 WINAPI GetSystemDirectory32A( LPSTR path, UINT32 count ) { if (path) lstrcpyn32A( path, DIR_SystemDosDir, count ); return strlen( DIR_SystemDosDir ); @@ -312,7 +312,7 @@ /*********************************************************************** * GetSystemDirectory32W (KERNEL32.283) */ -UINT32 GetSystemDirectory32W( LPWSTR path, UINT32 count ) +UINT32 WINAPI GetSystemDirectory32W( LPWSTR path, UINT32 count ) { if (path) lstrcpynAtoW( path, DIR_SystemDosDir, count ); return strlen( DIR_SystemDosDir ); @@ -322,7 +322,7 @@ /*********************************************************************** * CreateDirectory16 (KERNEL.144) */ -BOOL16 CreateDirectory16( LPCSTR path, LPVOID dummy ) +BOOL16 WINAPI CreateDirectory16( LPCSTR path, LPVOID dummy ) { dprintf_file( stddeb,"CreateDirectory16(%s,%p)\n", path, dummy ); return (BOOL16)CreateDirectory32A( path, NULL ); @@ -332,7 +332,8 @@ /*********************************************************************** * CreateDirectory32A (KERNEL32.39) */ -BOOL32 CreateDirectory32A( LPCSTR path, LPSECURITY_ATTRIBUTES lpsecattribs ) +BOOL32 WINAPI CreateDirectory32A( LPCSTR path, + LPSECURITY_ATTRIBUTES lpsecattribs ) { DOS_FULL_NAME full_name; LPCSTR unixName; @@ -357,7 +358,8 @@ /*********************************************************************** * CreateDirectory32W (KERNEL32.42) */ -BOOL32 CreateDirectory32W( LPCWSTR path, LPSECURITY_ATTRIBUTES lpsecattribs ) +BOOL32 WINAPI CreateDirectory32W( LPCWSTR path, + LPSECURITY_ATTRIBUTES lpsecattribs ) { LPSTR xpath = HEAP_strdupWtoA( GetProcessHeap(), 0, path ); BOOL32 ret = CreateDirectory32A( xpath, lpsecattribs ); @@ -369,8 +371,8 @@ /*********************************************************************** * CreateDirectoryEx32A (KERNEL32.40) */ -BOOL32 CreateDirectoryEx32A( LPCSTR template, LPCSTR path, - LPSECURITY_ATTRIBUTES lpsecattribs) +BOOL32 WINAPI CreateDirectoryEx32A( LPCSTR template, LPCSTR path, + LPSECURITY_ATTRIBUTES lpsecattribs) { return CreateDirectory32A(path,lpsecattribs); } @@ -379,8 +381,8 @@ /*********************************************************************** * CreateDirectoryEx32W (KERNEL32.41) */ -BOOL32 CreateDirectoryEx32W( LPCWSTR template, LPCWSTR path, - LPSECURITY_ATTRIBUTES lpsecattribs) +BOOL32 WINAPI CreateDirectoryEx32W( LPCWSTR template, LPCWSTR path, + LPSECURITY_ATTRIBUTES lpsecattribs) { return CreateDirectory32W(path,lpsecattribs); } @@ -389,7 +391,7 @@ /*********************************************************************** * RemoveDirectory16 (KERNEL) */ -BOOL16 RemoveDirectory16( LPCSTR path ) +BOOL16 WINAPI RemoveDirectory16( LPCSTR path ) { return (BOOL16)RemoveDirectory32A( path ); } @@ -398,7 +400,7 @@ /*********************************************************************** * RemoveDirectory32A (KERNEL32.437) */ -BOOL32 RemoveDirectory32A( LPCSTR path ) +BOOL32 WINAPI RemoveDirectory32A( LPCSTR path ) { DOS_FULL_NAME full_name; LPCSTR unixName; @@ -424,7 +426,7 @@ /*********************************************************************** * RemoveDirectory32W (KERNEL32.438) */ -BOOL32 RemoveDirectory32W( LPCWSTR path ) +BOOL32 WINAPI RemoveDirectory32W( LPCWSTR path ) { LPSTR xpath = HEAP_strdupWtoA( GetProcessHeap(), 0, path ); BOOL32 ret = RemoveDirectory32A( xpath ); @@ -583,8 +585,8 @@ /*********************************************************************** * SearchPath32A (KERNEL32.447) */ -DWORD SearchPath32A( LPCSTR path, LPCSTR name, LPCSTR ext, DWORD buflen, - LPSTR buffer, LPSTR *lastpart ) +DWORD WINAPI SearchPath32A( LPCSTR path, LPCSTR name, LPCSTR ext, DWORD buflen, + LPSTR buffer, LPSTR *lastpart ) { LPSTR p, res; DOS_FULL_NAME full_name; @@ -604,8 +606,8 @@ /*********************************************************************** * SearchPath32W (KERNEL32.448) */ -DWORD SearchPath32W( LPCWSTR path, LPCWSTR name, LPCWSTR ext, DWORD buflen, - LPWSTR buffer, LPWSTR *lastpart ) +DWORD WINAPI SearchPath32W( LPCWSTR path, LPCWSTR name, LPCWSTR ext, + DWORD buflen, LPWSTR buffer, LPWSTR *lastpart ) { LPWSTR p; LPSTR res;
diff --git a/files/dos_fs.c b/files/dos_fs.c index 014b41e..74f6cf2 100644 --- a/files/dos_fs.c +++ b/files/dos_fs.c
@@ -764,7 +764,8 @@ /*********************************************************************** * GetShortPathName32A (KERNEL32.271) */ -DWORD GetShortPathName32A( LPCSTR longpath, LPSTR shortpath, DWORD shortlen ) +DWORD WINAPI GetShortPathName32A( LPCSTR longpath, LPSTR shortpath, + DWORD shortlen ) { DOS_FULL_NAME full_name; @@ -778,7 +779,8 @@ /*********************************************************************** * GetShortPathName32W (KERNEL32.272) */ -DWORD GetShortPathName32W( LPCWSTR longpath, LPWSTR shortpath, DWORD shortlen ) +DWORD WINAPI GetShortPathName32W( LPCWSTR longpath, LPWSTR shortpath, + DWORD shortlen ) { DOS_FULL_NAME full_name; DWORD ret = 0; @@ -877,7 +879,8 @@ /*********************************************************************** * GetFullPathName32A (KERNEL32.272) */ -DWORD GetFullPathName32A(LPCSTR name, DWORD len, LPSTR buffer, LPSTR *lastpart) +DWORD WINAPI GetFullPathName32A( LPCSTR name, DWORD len, LPSTR buffer, + LPSTR *lastpart ) { DWORD ret = DOSFS_DoGetFullPathName( name, len, buffer, FALSE ); if (ret && lastpart) @@ -893,8 +896,8 @@ /*********************************************************************** * GetFullPathName32W (KERNEL32.273) */ -DWORD GetFullPathName32W( LPCWSTR name, DWORD len, LPWSTR buffer, - LPWSTR *lastpart ) +DWORD WINAPI GetFullPathName32W( LPCWSTR name, DWORD len, LPWSTR buffer, + LPWSTR *lastpart ) { LPSTR nameA = HEAP_strdupWtoA( GetProcessHeap(), 0, name ); DWORD ret = DOSFS_DoGetFullPathName( nameA, len, (LPSTR)buffer, TRUE ); @@ -1044,7 +1047,7 @@ /************************************************************************* * FindFirstFile16 (KERNEL.413) */ -HANDLE16 FindFirstFile16( LPCSTR path, WIN32_FIND_DATA32A *data ) +HANDLE16 WINAPI FindFirstFile16( LPCSTR path, WIN32_FIND_DATA32A *data ) { DOS_FULL_NAME full_name; HGLOBAL16 handle; @@ -1076,7 +1079,7 @@ /************************************************************************* * FindFirstFile32A (KERNEL32.123) */ -HANDLE32 FindFirstFile32A( LPCSTR path, WIN32_FIND_DATA32A *data ) +HANDLE32 WINAPI FindFirstFile32A( LPCSTR path, WIN32_FIND_DATA32A *data ) { HANDLE32 handle = FindFirstFile16( path, data ); if (handle == INVALID_HANDLE_VALUE16) return INVALID_HANDLE_VALUE32; @@ -1087,7 +1090,7 @@ /************************************************************************* * FindFirstFile32W (KERNEL32.124) */ -HANDLE32 FindFirstFile32W( LPCWSTR path, WIN32_FIND_DATA32W *data ) +HANDLE32 WINAPI FindFirstFile32W( LPCWSTR path, WIN32_FIND_DATA32W *data ) { WIN32_FIND_DATA32A dataA; LPSTR pathA = HEAP_strdupWtoA( GetProcessHeap(), 0, path ); @@ -1111,7 +1114,7 @@ /************************************************************************* * FindNextFile16 (KERNEL.414) */ -BOOL16 FindNextFile16( HANDLE16 handle, WIN32_FIND_DATA32A *data ) +BOOL16 WINAPI FindNextFile16( HANDLE16 handle, WIN32_FIND_DATA32A *data ) { FIND_FIRST_INFO *info; int count; @@ -1143,7 +1146,7 @@ /************************************************************************* * FindNextFile32A (KERNEL32.126) */ -BOOL32 FindNextFile32A( HANDLE32 handle, WIN32_FIND_DATA32A *data ) +BOOL32 WINAPI FindNextFile32A( HANDLE32 handle, WIN32_FIND_DATA32A *data ) { return FindNextFile16( handle, data ); } @@ -1152,7 +1155,7 @@ /************************************************************************* * FindNextFile32W (KERNEL32.127) */ -BOOL32 FindNextFile32W( HANDLE32 handle, WIN32_FIND_DATA32W *data ) +BOOL32 WINAPI FindNextFile32W( HANDLE32 handle, WIN32_FIND_DATA32W *data ) { WIN32_FIND_DATA32A dataA; if (!FindNextFile32A( handle, &dataA )) return FALSE; @@ -1171,7 +1174,7 @@ /************************************************************************* * FindClose16 (KERNEL.415) */ -BOOL16 FindClose16( HANDLE16 handle ) +BOOL16 WINAPI FindClose16( HANDLE16 handle ) { FIND_FIRST_INFO *info; @@ -1191,7 +1194,7 @@ /************************************************************************* * FindClose32 (KERNEL32.119) */ -BOOL32 FindClose32( HANDLE32 handle ) +BOOL32 WINAPI FindClose32( HANDLE32 handle ) { return FindClose16( (HANDLE16)handle ); } @@ -1419,7 +1422,7 @@ /*********************************************************************** * DosDateTimeToFileTime (KERNEL32.76) */ -BOOL32 DosDateTimeToFileTime( WORD fatdate, WORD fattime, LPFILETIME ft ) +BOOL32 WINAPI DosDateTimeToFileTime( WORD fatdate, WORD fattime, LPFILETIME ft) { struct tm newtm; @@ -1437,8 +1440,8 @@ /*********************************************************************** * FileTimeToDosDateTime (KERNEL32.111) */ -BOOL32 FileTimeToDosDateTime( const FILETIME *ft, LPWORD fatdate, - LPWORD fattime ) +BOOL32 WINAPI FileTimeToDosDateTime( const FILETIME *ft, LPWORD fatdate, + LPWORD fattime ) { time_t unixtime = DOSFS_FileTimeToUnixTime( ft, NULL ); struct tm *tm = localtime( &unixtime ); @@ -1454,7 +1457,8 @@ /*********************************************************************** * LocalFileTimeToFileTime (KERNEL32.373) */ -BOOL32 LocalFileTimeToFileTime( const FILETIME *localft, LPFILETIME utcft ) +BOOL32 WINAPI LocalFileTimeToFileTime( const FILETIME *localft, + LPFILETIME utcft ) { struct tm *xtm; DWORD remainder; @@ -1470,7 +1474,8 @@ /*********************************************************************** * FileTimeToLocalFileTime (KERNEL32.112) */ -BOOL32 FileTimeToLocalFileTime( const FILETIME *utcft, LPFILETIME localft ) +BOOL32 WINAPI FileTimeToLocalFileTime( const FILETIME *utcft, + LPFILETIME localft ) { struct tm *xtm; DWORD remainder; @@ -1486,7 +1491,7 @@ /*********************************************************************** * FileTimeToSystemTime (KERNEL32.113) */ -BOOL32 FileTimeToSystemTime( const FILETIME *ft, LPSYSTEMTIME syst ) +BOOL32 WINAPI FileTimeToSystemTime( const FILETIME *ft, LPSYSTEMTIME syst ) { struct tm *xtm; DWORD remainder; @@ -1508,8 +1513,7 @@ * * returns array of strings terminated by \0, terminated by \0 */ -DWORD -QueryDosDevice32A(LPCSTR devname,LPSTR target,DWORD bufsize) +DWORD WINAPI QueryDosDevice32A(LPCSTR devname,LPSTR target,DWORD bufsize) { LPSTR s; char buffer[200]; @@ -1537,8 +1541,7 @@ * * returns array of strings terminated by \0, terminated by \0 */ -DWORD -QueryDosDevice32W(LPCWSTR devname,LPWSTR target,DWORD bufsize) +DWORD WINAPI QueryDosDevice32W(LPCWSTR devname,LPWSTR target,DWORD bufsize) { LPSTR devnameA = devname?HEAP_strdupWtoA(GetProcessHeap(),0,devname):NULL; LPSTR targetA = (LPSTR)HEAP_xalloc(GetProcessHeap(),0,bufsize); @@ -1554,7 +1557,7 @@ /*********************************************************************** * SystemTimeToFileTime (KERNEL32.526) */ -BOOL32 SystemTimeToFileTime( const SYSTEMTIME *syst, LPFILETIME ft ) +BOOL32 WINAPI SystemTimeToFileTime( const SYSTEMTIME *syst, LPFILETIME ft ) { struct tm xtm;
diff --git a/files/drive.c b/files/drive.c index c4a88de..cee484a 100644 --- a/files/drive.c +++ b/files/drive.c
@@ -538,9 +538,9 @@ /*********************************************************************** * GetDiskFreeSpace16 (KERNEL.422) */ -BOOL16 GetDiskFreeSpace16( LPCSTR root, LPDWORD cluster_sectors, - LPDWORD sector_bytes, LPDWORD free_clusters, - LPDWORD total_clusters ) +BOOL16 WINAPI GetDiskFreeSpace16( LPCSTR root, LPDWORD cluster_sectors, + LPDWORD sector_bytes, LPDWORD free_clusters, + LPDWORD total_clusters ) { return GetDiskFreeSpace32A( root, cluster_sectors, sector_bytes, free_clusters, total_clusters ); @@ -550,9 +550,9 @@ /*********************************************************************** * GetDiskFreeSpace32A (KERNEL32.206) */ -BOOL32 GetDiskFreeSpace32A( LPCSTR root, LPDWORD cluster_sectors, - LPDWORD sector_bytes, LPDWORD free_clusters, - LPDWORD total_clusters ) +BOOL32 WINAPI GetDiskFreeSpace32A( LPCSTR root, LPDWORD cluster_sectors, + LPDWORD sector_bytes, LPDWORD free_clusters, + LPDWORD total_clusters ) { int drive; DWORD size,available; @@ -583,9 +583,9 @@ /*********************************************************************** * GetDiskFreeSpace32W (KERNEL32.207) */ -BOOL32 GetDiskFreeSpace32W( LPCWSTR root, LPDWORD cluster_sectors, - LPDWORD sector_bytes, LPDWORD free_clusters, - LPDWORD total_clusters ) +BOOL32 WINAPI GetDiskFreeSpace32W( LPCWSTR root, LPDWORD cluster_sectors, + LPDWORD sector_bytes, LPDWORD free_clusters, + LPDWORD total_clusters ) { LPSTR xroot; BOOL32 ret; @@ -601,7 +601,7 @@ /*********************************************************************** * GetDriveType16 (KERNEL.136) */ -UINT16 GetDriveType16( UINT16 drive ) +UINT16 WINAPI GetDriveType16( UINT16 drive ) { dprintf_dosfs( stddeb, "GetDriveType16(%c:)\n", 'A' + drive ); switch(DRIVE_GetType(drive)) @@ -619,7 +619,7 @@ /*********************************************************************** * GetDriveType32A (KERNEL32.208) */ -UINT32 GetDriveType32A( LPCSTR root ) +UINT32 WINAPI GetDriveType32A( LPCSTR root ) { dprintf_dosfs( stddeb, "GetDriveType32A(%s)\n", root ); if (root[1] != ':') @@ -642,7 +642,7 @@ /*********************************************************************** * GetDriveType32W (KERNEL32.209) */ -UINT32 GetDriveType32W( LPCWSTR root ) +UINT32 WINAPI GetDriveType32W( LPCWSTR root ) { LPSTR xpath = HEAP_strdupWtoA( GetProcessHeap(), 0, root ); UINT32 ret = GetDriveType32A( xpath ); @@ -654,7 +654,7 @@ /*********************************************************************** * GetCurrentDirectory16 (KERNEL.411) */ -UINT16 GetCurrentDirectory16( UINT16 buflen, LPSTR buf ) +UINT16 WINAPI GetCurrentDirectory16( UINT16 buflen, LPSTR buf ) { return (UINT16)GetCurrentDirectory32A( buflen, buf ); } @@ -665,7 +665,7 @@ * * Returns "X:\\path\\etc\\". */ -UINT32 GetCurrentDirectory32A( UINT32 buflen, LPSTR buf ) +UINT32 WINAPI GetCurrentDirectory32A( UINT32 buflen, LPSTR buf ) { char *pref = "A:\\"; const char *s = DRIVE_GetDosCwd( DRIVE_GetCurrentDrive() ); @@ -684,7 +684,7 @@ /*********************************************************************** * GetCurrentDirectory32W (KERNEL32.197) */ -UINT32 GetCurrentDirectory32W( UINT32 buflen, LPWSTR buf ) +UINT32 WINAPI GetCurrentDirectory32W( UINT32 buflen, LPWSTR buf ) { LPSTR xpath = HeapAlloc( GetProcessHeap(), 0, buflen+1 ); UINT32 ret = GetCurrentDirectory32A( buflen, xpath ); @@ -697,7 +697,7 @@ /*********************************************************************** * SetCurrentDirectory (KERNEL.412) */ -BOOL16 SetCurrentDirectory16( LPCSTR dir ) +BOOL16 WINAPI SetCurrentDirectory16( LPCSTR dir ) { return SetCurrentDirectory32A( dir ); } @@ -706,7 +706,7 @@ /*********************************************************************** * SetCurrentDirectory32A (KERNEL32.479) */ -BOOL32 SetCurrentDirectory32A( LPCSTR dir ) +BOOL32 WINAPI SetCurrentDirectory32A( LPCSTR dir ) { int drive = DRIVE_GetCurrentDrive(); @@ -730,7 +730,7 @@ /*********************************************************************** * SetCurrentDirectory32W (KERNEL32.480) */ -BOOL32 SetCurrentDirectory32W( LPCWSTR dirW ) +BOOL32 WINAPI SetCurrentDirectory32W( LPCWSTR dirW ) { LPSTR dir = HEAP_strdupWtoA( GetProcessHeap(), 0, dirW ); BOOL32 res = SetCurrentDirectory32A( dir ); @@ -742,7 +742,7 @@ /*********************************************************************** * GetLogicalDriveStrings32A (KERNEL32.231) */ -UINT32 GetLogicalDriveStrings32A( UINT32 len, LPSTR buffer ) +UINT32 WINAPI GetLogicalDriveStrings32A( UINT32 len, LPSTR buffer ) { int drive, count; @@ -768,7 +768,7 @@ /*********************************************************************** * GetLogicalDriveStrings32W (KERNEL32.232) */ -UINT32 GetLogicalDriveStrings32W( UINT32 len, LPWSTR buffer ) +UINT32 WINAPI GetLogicalDriveStrings32W( UINT32 len, LPWSTR buffer ) { int drive, count; @@ -794,7 +794,7 @@ /*********************************************************************** * GetLogicalDrives (KERNEL32.233) */ -DWORD GetLogicalDrives(void) +DWORD WINAPI GetLogicalDrives(void) { DWORD ret = 0; int drive; @@ -808,9 +808,10 @@ /*********************************************************************** * GetVolumeInformation32A (KERNEL32.309) */ -BOOL32 GetVolumeInformation32A( LPCSTR root, LPSTR label, DWORD label_len, - DWORD *serial, DWORD *filename_len, - DWORD *flags, LPSTR fsname, DWORD fsname_len ) +BOOL32 WINAPI GetVolumeInformation32A( LPCSTR root, LPSTR label, + DWORD label_len, DWORD *serial, + DWORD *filename_len, DWORD *flags, + LPSTR fsname, DWORD fsname_len ) { int drive; @@ -843,9 +844,10 @@ /*********************************************************************** * GetVolumeInformation32W (KERNEL32.310) */ -BOOL32 GetVolumeInformation32W( LPCWSTR root, LPWSTR label, DWORD label_len, - DWORD *serial, DWORD *filename_len, - DWORD *flags, LPWSTR fsname, DWORD fsname_len) +BOOL32 WINAPI GetVolumeInformation32W( LPCWSTR root, LPWSTR label, + DWORD label_len, DWORD *serial, + DWORD *filename_len, DWORD *flags, + LPWSTR fsname, DWORD fsname_len ) { LPSTR xroot = HEAP_strdupWtoA( GetProcessHeap(), 0, root ); LPSTR xvolname = label ? HeapAlloc(GetProcessHeap(),0,label_len) : NULL;
diff --git a/files/file.c b/files/file.c index 742d518..540446a 100644 --- a/files/file.c +++ b/files/file.c
@@ -376,8 +376,8 @@ /*********************************************************************** * GetFileInformationByHandle (KERNEL32.219) */ -DWORD GetFileInformationByHandle( HFILE32 hFile, - BY_HANDLE_FILE_INFORMATION *info ) +DWORD WINAPI GetFileInformationByHandle( HFILE32 hFile, + BY_HANDLE_FILE_INFORMATION *info ) { FILE_OBJECT *file; DWORD ret = 0; @@ -400,7 +400,7 @@ /************************************************************************** * GetFileAttributes16 (KERNEL.420) */ -DWORD GetFileAttributes16( LPCSTR name ) +DWORD WINAPI GetFileAttributes16( LPCSTR name ) { return GetFileAttributes32A( name ); } @@ -409,7 +409,7 @@ /************************************************************************** * GetFileAttributes32A (KERNEL32.217) */ -DWORD GetFileAttributes32A( LPCSTR name ) +DWORD WINAPI GetFileAttributes32A( LPCSTR name ) { DOS_FULL_NAME full_name; BY_HANDLE_FILE_INFORMATION info; @@ -425,7 +425,7 @@ /************************************************************************** * GetFileAttributes32W (KERNEL32.218) */ -DWORD GetFileAttributes32W( LPCWSTR name ) +DWORD WINAPI GetFileAttributes32W( LPCWSTR name ) { LPSTR nameA = HEAP_strdupWtoA( GetProcessHeap(), 0, name ); DWORD res = GetFileAttributes32A( nameA ); @@ -437,7 +437,7 @@ /*********************************************************************** * GetFileSize (KERNEL32.220) */ -DWORD GetFileSize( HFILE32 hFile, LPDWORD filesizehigh ) +DWORD WINAPI GetFileSize( HFILE32 hFile, LPDWORD filesizehigh ) { BY_HANDLE_FILE_INFORMATION info; if (!GetFileInformationByHandle( hFile, &info )) return 0; @@ -449,8 +449,9 @@ /*********************************************************************** * GetFileTime (KERNEL32.221) */ -BOOL32 GetFileTime( HFILE32 hFile, FILETIME *lpCreationTime, - FILETIME *lpLastAccessTime, FILETIME *lpLastWriteTime ) +BOOL32 WINAPI GetFileTime( HFILE32 hFile, FILETIME *lpCreationTime, + FILETIME *lpLastAccessTime, + FILETIME *lpLastWriteTime ) { BY_HANDLE_FILE_INFORMATION info; if (!GetFileInformationByHandle( hFile, &info )) return FALSE; @@ -463,7 +464,7 @@ /*********************************************************************** * CompareFileTime (KERNEL32.28) */ -INT32 CompareFileTime( LPFILETIME x, LPFILETIME y ) +INT32 WINAPI CompareFileTime( LPFILETIME x, LPFILETIME y ) { if (!x || !y) return -1; @@ -517,8 +518,8 @@ /*********************************************************************** * GetTempFileName16 (KERNEL.97) */ -UINT16 GetTempFileName16( BYTE drive, LPCSTR prefix, UINT16 unique, - LPSTR buffer ) +UINT16 WINAPI GetTempFileName16( BYTE drive, LPCSTR prefix, UINT16 unique, + LPSTR buffer ) { char temppath[144]; @@ -544,8 +545,8 @@ /*********************************************************************** * GetTempFileName32A (KERNEL32.290) */ -UINT32 GetTempFileName32A( LPCSTR path, LPCSTR prefix, UINT32 unique, - LPSTR buffer) +UINT32 WINAPI GetTempFileName32A( LPCSTR path, LPCSTR prefix, UINT32 unique, + LPSTR buffer) { DOS_FULL_NAME full_name; int i; @@ -603,8 +604,8 @@ /*********************************************************************** * GetTempFileName32W (KERNEL32.291) */ -UINT32 GetTempFileName32W( LPCWSTR path, LPCWSTR prefix, UINT32 unique, - LPWSTR buffer ) +UINT32 WINAPI GetTempFileName32W( LPCWSTR path, LPCWSTR prefix, UINT32 unique, + LPWSTR buffer ) { LPSTR patha,prefixa; char buffera[144]; @@ -758,7 +759,7 @@ /*********************************************************************** * OpenFile16 (KERNEL.74) */ -HFILE16 OpenFile16( LPCSTR name, OFSTRUCT *ofs, UINT16 mode ) +HFILE16 WINAPI OpenFile16( LPCSTR name, OFSTRUCT *ofs, UINT16 mode ) { return FILE_DoOpenFile( name, ofs, mode, FALSE ); } @@ -767,7 +768,7 @@ /*********************************************************************** * OpenFile32 (KERNEL32.396) */ -HFILE32 OpenFile32( LPCSTR name, OFSTRUCT *ofs, UINT32 mode ) +HFILE32 WINAPI OpenFile32( LPCSTR name, OFSTRUCT *ofs, UINT32 mode ) { return FILE_DoOpenFile( name, ofs, mode, TRUE ); } @@ -776,7 +777,7 @@ /*********************************************************************** * _lclose16 (KERNEL.81) */ -HFILE16 _lclose16( HFILE16 hFile ) +HFILE16 WINAPI _lclose16( HFILE16 hFile ) { dprintf_file( stddeb, "_lclose16: handle %d\n", hFile ); return CloseHandle( hFile ) ? 0 : HFILE_ERROR16; @@ -786,7 +787,7 @@ /*********************************************************************** * _lclose32 (KERNEL32.592) */ -HFILE32 _lclose32( HFILE32 hFile ) +HFILE32 WINAPI _lclose32( HFILE32 hFile ) { dprintf_file( stddeb, "_lclose32: handle %d\n", hFile ); return CloseHandle( hFile ) ? 0 : HFILE_ERROR32; @@ -796,7 +797,7 @@ /*********************************************************************** * WIN16_hread */ -LONG WIN16_hread( HFILE16 hFile, SEGPTR buffer, LONG count ) +LONG WINAPI WIN16_hread( HFILE16 hFile, SEGPTR buffer, LONG count ) { LONG maxlen; @@ -813,7 +814,7 @@ /*********************************************************************** * WIN16_lread */ -UINT16 WIN16_lread( HFILE16 hFile, SEGPTR buffer, UINT16 count ) +UINT16 WINAPI WIN16_lread( HFILE16 hFile, SEGPTR buffer, UINT16 count ) { return (UINT16)WIN16_hread( hFile, buffer, (LONG)count ); } @@ -822,7 +823,7 @@ /*********************************************************************** * _lread32 (KERNEL32.596) */ -UINT32 _lread32( HFILE32 hFile, LPVOID buffer, UINT32 count ) +UINT32 WINAPI _lread32( HFILE32 hFile, LPVOID buffer, UINT32 count ) { FILE_OBJECT *file; UINT32 result; @@ -840,7 +841,7 @@ /*********************************************************************** * _lread16 (KERNEL.82) */ -UINT16 _lread16( HFILE16 hFile, LPVOID buffer, UINT16 count ) +UINT16 WINAPI _lread16( HFILE16 hFile, LPVOID buffer, UINT16 count ) { return (UINT16)_lread32( hFile, buffer, (LONG)count ); } @@ -849,7 +850,7 @@ /*********************************************************************** * _lcreat16 (KERNEL.83) */ -HFILE16 _lcreat16( LPCSTR path, INT16 attr ) +HFILE16 WINAPI _lcreat16( LPCSTR path, INT16 attr ) { int mode = (attr & 1) ? 0444 : 0666; dprintf_file( stddeb, "_lcreat16: %s %02x\n", path, attr ); @@ -860,7 +861,7 @@ /*********************************************************************** * _lcreat32 (KERNEL32.593) */ -HFILE32 _lcreat32( LPCSTR path, INT32 attr ) +HFILE32 WINAPI _lcreat32( LPCSTR path, INT32 attr ) { int mode = (attr & 1) ? 0444 : 0666; dprintf_file( stddeb, "_lcreat32: %s %02x\n", path, attr ); @@ -882,8 +883,8 @@ /*********************************************************************** * SetFilePointer (KERNEL32.492) */ -DWORD SetFilePointer( HFILE32 hFile, LONG distance, LONG *highword, - DWORD method ) +DWORD WINAPI SetFilePointer( HFILE32 hFile, LONG distance, LONG *highword, + DWORD method ) { FILE_OBJECT *file; int origin, result; @@ -915,7 +916,7 @@ /*********************************************************************** * _llseek16 (KERNEL.84) */ -LONG _llseek16( HFILE16 hFile, LONG lOffset, INT16 nOrigin ) +LONG WINAPI _llseek16( HFILE16 hFile, LONG lOffset, INT16 nOrigin ) { return SetFilePointer( hFile, lOffset, NULL, nOrigin ); } @@ -924,7 +925,7 @@ /*********************************************************************** * _llseek32 (KERNEL32.594) */ -LONG _llseek32( HFILE32 hFile, LONG lOffset, INT32 nOrigin ) +LONG WINAPI _llseek32( HFILE32 hFile, LONG lOffset, INT32 nOrigin ) { return SetFilePointer( hFile, lOffset, NULL, nOrigin ); } @@ -933,7 +934,7 @@ /*********************************************************************** * _lopen16 (KERNEL.85) */ -HFILE16 _lopen16( LPCSTR path, INT16 mode ) +HFILE16 WINAPI _lopen16( LPCSTR path, INT16 mode ) { return _lopen32( path, mode ); } @@ -942,7 +943,7 @@ /*********************************************************************** * _lopen32 (KERNEL32.595) */ -HFILE32 _lopen32( LPCSTR path, INT32 mode ) +HFILE32 WINAPI _lopen32( LPCSTR path, INT32 mode ) { INT32 unixMode; @@ -968,7 +969,7 @@ /*********************************************************************** * _lwrite16 (KERNEL.86) */ -UINT16 _lwrite16( HFILE16 hFile, LPCSTR buffer, UINT16 count ) +UINT16 WINAPI _lwrite16( HFILE16 hFile, LPCSTR buffer, UINT16 count ) { return (UINT16)_hwrite32( hFile, buffer, (LONG)count ); } @@ -976,7 +977,7 @@ /*********************************************************************** * _lwrite32 (KERNEL.86) */ -UINT32 _lwrite32( HFILE32 hFile, LPCSTR buffer, UINT32 count ) +UINT32 WINAPI _lwrite32( HFILE32 hFile, LPCSTR buffer, UINT32 count ) { return (UINT32)_hwrite32( hFile, buffer, (LONG)count ); } @@ -985,7 +986,7 @@ /*********************************************************************** * _hread16 (KERNEL.349) */ -LONG _hread16( HFILE16 hFile, LPVOID buffer, LONG count) +LONG WINAPI _hread16( HFILE16 hFile, LPVOID buffer, LONG count) { return _lread32( hFile, buffer, count ); } @@ -994,7 +995,7 @@ /*********************************************************************** * _hread32 (KERNEL32.590) */ -LONG _hread32( HFILE32 hFile, LPVOID buffer, LONG count) +LONG WINAPI _hread32( HFILE32 hFile, LPVOID buffer, LONG count) { return _lread32( hFile, buffer, count ); } @@ -1003,7 +1004,7 @@ /*********************************************************************** * _hwrite16 (KERNEL.350) */ -LONG _hwrite16( HFILE16 hFile, LPCSTR buffer, LONG count ) +LONG WINAPI _hwrite16( HFILE16 hFile, LPCSTR buffer, LONG count ) { return _hwrite32( hFile, buffer, count ); } @@ -1012,7 +1013,7 @@ /*********************************************************************** * _hwrite32 (KERNEL32.591) */ -LONG _hwrite32( HFILE32 hFile, LPCSTR buffer, LONG count ) +LONG WINAPI _hwrite32( HFILE32 hFile, LPCSTR buffer, LONG count ) { FILE_OBJECT *file; LONG result; @@ -1042,7 +1043,7 @@ /*********************************************************************** * SetHandleCount16 (KERNEL.199) */ -UINT16 SetHandleCount16( UINT16 count ) +UINT16 WINAPI SetHandleCount16( UINT16 count ) { HGLOBAL16 hPDB = GetCurrentPDB(); PDB *pdb = (PDB *)GlobalLock16( hPDB ); @@ -1094,7 +1095,7 @@ /************************************************************************* * SetHandleCount32 (KERNEL32.494) */ -UINT32 SetHandleCount32( UINT32 count ) +UINT32 WINAPI SetHandleCount32( UINT32 count ) { return MIN( 256, count ); } @@ -1103,7 +1104,7 @@ /*********************************************************************** * FlushFileBuffers (KERNEL32.133) */ -BOOL32 FlushFileBuffers( HFILE32 hFile ) +BOOL32 WINAPI FlushFileBuffers( HFILE32 hFile ) { FILE_OBJECT *file; BOOL32 ret; @@ -1124,7 +1125,7 @@ /************************************************************************** * SetEndOfFile (KERNEL32.483) */ -BOOL32 SetEndOfFile( HFILE32 hFile ) +BOOL32 WINAPI SetEndOfFile( HFILE32 hFile ) { FILE_OBJECT *file; BOOL32 ret = TRUE; @@ -1145,7 +1146,7 @@ /*********************************************************************** * DeleteFile16 (KERNEL.146) */ -BOOL16 DeleteFile16( LPCSTR path ) +BOOL16 WINAPI DeleteFile16( LPCSTR path ) { return DeleteFile32A( path ); } @@ -1154,7 +1155,7 @@ /*********************************************************************** * DeleteFile32A (KERNEL32.71) */ -BOOL32 DeleteFile32A( LPCSTR path ) +BOOL32 WINAPI DeleteFile32A( LPCSTR path ) { DOS_FULL_NAME full_name; const char *unixName; @@ -1181,7 +1182,7 @@ /*********************************************************************** * DeleteFile32W (KERNEL32.72) */ -BOOL32 DeleteFile32W( LPCWSTR path ) +BOOL32 WINAPI DeleteFile32W( LPCWSTR path ) { LPSTR xpath = HEAP_strdupWtoA( GetProcessHeap(), 0, path ); BOOL32 ret = RemoveDirectory32A( xpath ); @@ -1218,13 +1219,6 @@ if (!file) { - /* Linux EINVAL's on us if we don't pass MAP_PRIVATE to an anon mmap */ -#ifdef MAP_SHARED - flags &= ~MAP_SHARED; -#endif -#ifdef MAP_PRIVATE - flags |= MAP_PRIVATE; -#endif #ifdef MAP_ANON flags |= MAP_ANON; #else @@ -1240,6 +1234,13 @@ } fd = fdzero; #endif /* MAP_ANON */ + /* Linux EINVAL's on us if we don't pass MAP_PRIVATE to an anon mmap */ +#ifdef MAP_SHARED + flags &= ~MAP_SHARED; +#endif +#ifdef MAP_PRIVATE + flags |= MAP_PRIVATE; +#endif } else fd = file->unix_handle; @@ -1250,7 +1251,7 @@ /*********************************************************************** * GetFileType (KERNEL32.222) */ -DWORD GetFileType( HFILE32 hFile ) +DWORD WINAPI GetFileType( HFILE32 hFile ) { FILE_OBJECT *file = FILE_GetFile(hFile); if (!file) return FILE_TYPE_UNKNOWN; /* FIXME: correct? */ @@ -1264,7 +1265,7 @@ * * */ -BOOL32 MoveFileEx32A( LPCSTR fn1, LPCSTR fn2, DWORD flag ) +BOOL32 WINAPI MoveFileEx32A( LPCSTR fn1, LPCSTR fn2, DWORD flag ) { DOS_FULL_NAME full_name1, full_name2; int mode=0; /* mode == 1: use copy */ @@ -1348,7 +1349,7 @@ /************************************************************************** * MoveFileEx32W (KERNEL32.???) */ -BOOL32 MoveFileEx32W( LPCWSTR fn1, LPCWSTR fn2, DWORD flag ) +BOOL32 WINAPI MoveFileEx32W( LPCWSTR fn1, LPCWSTR fn2, DWORD flag ) { LPSTR afn1 = HEAP_strdupWtoA( GetProcessHeap(), 0, fn1 ); LPSTR afn2 = HEAP_strdupWtoA( GetProcessHeap(), 0, fn2 ); @@ -1364,7 +1365,7 @@ * * Move file or directory */ -BOOL32 MoveFile32A( LPCSTR fn1, LPCSTR fn2 ) +BOOL32 WINAPI MoveFile32A( LPCSTR fn1, LPCSTR fn2 ) { DOS_FULL_NAME full_name1, full_name2; struct stat fstat; @@ -1408,7 +1409,7 @@ /************************************************************************** * MoveFile32W (KERNEL32.390) */ -BOOL32 MoveFile32W( LPCWSTR fn1, LPCWSTR fn2 ) +BOOL32 WINAPI MoveFile32W( LPCWSTR fn1, LPCWSTR fn2 ) { LPSTR afn1 = HEAP_strdupWtoA( GetProcessHeap(), 0, fn1 ); LPSTR afn2 = HEAP_strdupWtoA( GetProcessHeap(), 0, fn2 ); @@ -1422,7 +1423,7 @@ /************************************************************************** * CopyFile32A (KERNEL32.36) */ -BOOL32 CopyFile32A( LPCSTR source, LPCSTR dest, BOOL32 fail_if_exists ) +BOOL32 WINAPI CopyFile32A( LPCSTR source, LPCSTR dest, BOOL32 fail_if_exists ) { HFILE32 h1, h2; BY_HANDLE_FILE_INFORMATION info; @@ -1465,7 +1466,7 @@ /************************************************************************** * CopyFile32W (KERNEL32.37) */ -BOOL32 CopyFile32W( LPCWSTR source, LPCWSTR dest, BOOL32 fail_if_exists ) +BOOL32 WINAPI CopyFile32W( LPCWSTR source, LPCWSTR dest, BOOL32 fail_if_exists) { LPSTR sourceA = HEAP_strdupWtoA( GetProcessHeap(), 0, source ); LPSTR destA = HEAP_strdupWtoA( GetProcessHeap(), 0, dest ); @@ -1479,10 +1480,10 @@ /*********************************************************************** * SetFileTime (KERNEL32.493) */ -BOOL32 SetFileTime( HFILE32 hFile, - const FILETIME *lpCreationTime, - const FILETIME *lpLastAccessTime, - const FILETIME *lpLastWriteTime ) +BOOL32 WINAPI SetFileTime( HFILE32 hFile, + const FILETIME *lpCreationTime, + const FILETIME *lpLastAccessTime, + const FILETIME *lpLastWriteTime ) { FILE_OBJECT *file = FILE_GetFile(hFile); struct utimbuf utimbuf; @@ -1596,7 +1597,7 @@ /************************************************************************** * LockFile (KERNEL32.511) */ -BOOL32 LockFile( +BOOL32 WINAPI LockFile( HFILE32 hFile,DWORD dwFileOffsetLow,DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToLockLow,DWORD nNumberOfBytesToLockHigh ) { @@ -1647,7 +1648,7 @@ /************************************************************************** * UnlockFile (KERNEL32.703) */ -BOOL32 UnlockFile( +BOOL32 WINAPI UnlockFile( HFILE32 hFile,DWORD dwFileOffsetLow,DWORD dwFileOffsetHigh, DWORD nNumberOfBytesToUnlockLow,DWORD nNumberOfBytesToUnlockHigh ) {
diff --git a/files/profile.c b/files/profile.c index 6fac8eb..eb15ace 100644 --- a/files/profile.c +++ b/files/profile.c
@@ -766,15 +766,14 @@ for (lpchX = start, lpch = NULL; *lpchX != '\0'; lpchX++ ) { - if( isspace( *lpchX ) ) lpch = lpch ? lpch : lpchX; - else lpch = NULL; - if( *lpchX == ',' ) { if( lpch ) *lpch = '\0'; else *lpchX = '\0'; while( *(++lpchX) ) if( !isspace(*lpchX) ) return lpchX; } + else if( isspace( *lpchX ) && !lpch ) lpch = lpchX; + else lpch = NULL; } if( lpch ) *lpch = '\0'; return NULL; @@ -786,7 +785,7 @@ /*********************************************************************** * GetProfileInt16 (KERNEL.57) */ -UINT16 GetProfileInt16( LPCSTR section, LPCSTR entry, INT16 def_val ) +UINT16 WINAPI GetProfileInt16( LPCSTR section, LPCSTR entry, INT16 def_val ) { return GetPrivateProfileInt16( section, entry, def_val, "win.ini" ); } @@ -795,7 +794,7 @@ /*********************************************************************** * GetProfileInt32A (KERNEL32.264) */ -UINT32 GetProfileInt32A( LPCSTR section, LPCSTR entry, INT32 def_val ) +UINT32 WINAPI GetProfileInt32A( LPCSTR section, LPCSTR entry, INT32 def_val ) { return GetPrivateProfileInt32A( section, entry, def_val, "win.ini" ); } @@ -803,7 +802,7 @@ /*********************************************************************** * GetProfileInt32W (KERNEL32.264) */ -UINT32 GetProfileInt32W( LPCWSTR section, LPCWSTR entry, INT32 def_val ) +UINT32 WINAPI GetProfileInt32W( LPCWSTR section, LPCWSTR entry, INT32 def_val ) { if (!wininiW) wininiW = HEAP_strdupAtoW( SystemHeap, 0, "win.ini" ); return GetPrivateProfileInt32W( section, entry, def_val, wininiW ); @@ -812,8 +811,8 @@ /*********************************************************************** * GetProfileString16 (KERNEL.58) */ -INT16 GetProfileString16( LPCSTR section, LPCSTR entry, LPCSTR def_val, - LPSTR buffer, INT16 len ) +INT16 WINAPI GetProfileString16( LPCSTR section, LPCSTR entry, LPCSTR def_val, + LPSTR buffer, INT16 len ) { return GetPrivateProfileString16( section, entry, def_val, buffer, len, "win.ini" ); @@ -822,8 +821,8 @@ /*********************************************************************** * GetProfileString32A (KERNEL32.268) */ -INT32 GetProfileString32A( LPCSTR section, LPCSTR entry, LPCSTR def_val, - LPSTR buffer, INT32 len ) +INT32 WINAPI GetProfileString32A( LPCSTR section, LPCSTR entry, LPCSTR def_val, + LPSTR buffer, INT32 len ) { return GetPrivateProfileString32A( section, entry, def_val, buffer, len, "win.ini" ); @@ -832,8 +831,8 @@ /*********************************************************************** * GetProfileString32W (KERNEL32.269) */ -INT32 GetProfileString32W( LPCWSTR section,LPCWSTR entry,LPCWSTR def_val, - LPWSTR buffer, INT32 len ) +INT32 WINAPI GetProfileString32W( LPCWSTR section, LPCWSTR entry, + LPCWSTR def_val, LPWSTR buffer, INT32 len ) { if (!wininiW) wininiW = HEAP_strdupAtoW( SystemHeap, 0, "win.ini" ); return GetPrivateProfileString32W( section, entry, def_val, @@ -844,7 +843,8 @@ /*********************************************************************** * WriteProfileString16 (KERNEL.59) */ -BOOL16 WriteProfileString16( LPCSTR section, LPCSTR entry, LPCSTR string ) +BOOL16 WINAPI WriteProfileString16( LPCSTR section, LPCSTR entry, + LPCSTR string ) { return WritePrivateProfileString16( section, entry, string, "win.ini" ); } @@ -852,7 +852,8 @@ /*********************************************************************** * WriteProfileString32A (KERNEL32.587) */ -BOOL32 WriteProfileString32A( LPCSTR section, LPCSTR entry, LPCSTR string ) +BOOL32 WINAPI WriteProfileString32A( LPCSTR section, LPCSTR entry, + LPCSTR string ) { return WritePrivateProfileString32A( section, entry, string, "win.ini" ); } @@ -860,7 +861,8 @@ /*********************************************************************** * WriteProfileString32W (KERNEL32.588) */ -BOOL32 WriteProfileString32W( LPCWSTR section, LPCWSTR entry, LPCWSTR string ) +BOOL32 WINAPI WriteProfileString32W( LPCWSTR section, LPCWSTR entry, + LPCWSTR string ) { if (!wininiW) wininiW = HEAP_strdupAtoW( SystemHeap, 0, "win.ini" ); return WritePrivateProfileString32W( section, entry, string, wininiW ); @@ -870,8 +872,8 @@ /*********************************************************************** * GetPrivateProfileInt16 (KERNEL.127) */ -UINT16 GetPrivateProfileInt16( LPCSTR section, LPCSTR entry, INT16 def_val, - LPCSTR filename ) +UINT16 WINAPI GetPrivateProfileInt16( LPCSTR section, LPCSTR entry, + INT16 def_val, LPCSTR filename ) { long result=(long)GetPrivateProfileInt32A(section,entry,def_val,filename); @@ -884,8 +886,8 @@ /*********************************************************************** * GetPrivateProfileInt32A (KERNEL32.251) */ -UINT32 GetPrivateProfileInt32A( LPCSTR section, LPCSTR entry, INT32 def_val, - LPCSTR filename ) +UINT32 WINAPI GetPrivateProfileInt32A( LPCSTR section, LPCSTR entry, + INT32 def_val, LPCSTR filename ) { char buffer[20]; char *p; @@ -902,8 +904,8 @@ /*********************************************************************** * GetPrivateProfileInt32W (KERNEL32.252) */ -UINT32 GetPrivateProfileInt32W( LPCWSTR section, LPCWSTR entry, INT32 def_val, - LPCWSTR filename ) +UINT32 WINAPI GetPrivateProfileInt32W( LPCWSTR section, LPCWSTR entry, + INT32 def_val, LPCWSTR filename ) { LPSTR sectionA = HEAP_strdupWtoA( GetProcessHeap(), 0, section ); LPSTR entryA = HEAP_strdupWtoA( GetProcessHeap(), 0, entry ); @@ -918,8 +920,9 @@ /*********************************************************************** * GetPrivateProfileString16 (KERNEL.128) */ -INT16 GetPrivateProfileString16( LPCSTR section, LPCSTR entry, LPCSTR def_val, - LPSTR buffer, INT16 len, LPCSTR filename ) +INT16 WINAPI GetPrivateProfileString16( LPCSTR section, LPCSTR entry, + LPCSTR def_val, LPSTR buffer, + INT16 len, LPCSTR filename ) { return GetPrivateProfileString32A(section,entry,def_val,buffer,len,filename); } @@ -927,8 +930,9 @@ /*********************************************************************** * GetPrivateProfileString32A (KERNEL32.255) */ -INT32 GetPrivateProfileString32A( LPCSTR section, LPCSTR entry, LPCSTR def_val, - LPSTR buffer, INT32 len, LPCSTR filename ) +INT32 WINAPI GetPrivateProfileString32A( LPCSTR section, LPCSTR entry, + LPCSTR def_val, LPSTR buffer, + INT32 len, LPCSTR filename ) { if (PROFILE_Open( filename )) return PROFILE_GetString( section, entry, def_val, buffer, len ); @@ -939,9 +943,9 @@ /*********************************************************************** * GetPrivateProfileString32W (KERNEL32.256) */ -INT32 GetPrivateProfileString32W( LPCWSTR section, LPCWSTR entry, - LPCWSTR def_val, LPWSTR buffer, - INT32 len, LPCWSTR filename ) +INT32 WINAPI GetPrivateProfileString32W( LPCWSTR section, LPCWSTR entry, + LPCWSTR def_val, LPWSTR buffer, + INT32 len, LPCWSTR filename ) { LPSTR sectionA = HEAP_strdupWtoA( GetProcessHeap(), 0, section ); LPSTR entryA = HEAP_strdupWtoA( GetProcessHeap(), 0, entry ); @@ -964,8 +968,8 @@ /*********************************************************************** * WritePrivateProfileString16 (KERNEL.129) */ -BOOL16 WritePrivateProfileString16(LPCSTR section,LPCSTR entry,LPCSTR string, - LPCSTR filename) +BOOL16 WINAPI WritePrivateProfileString16( LPCSTR section, LPCSTR entry, + LPCSTR string, LPCSTR filename ) { return WritePrivateProfileString32A(section,entry,string,filename); } @@ -973,8 +977,8 @@ /*********************************************************************** * WritePrivateProfileString32A (KERNEL32.582) */ -BOOL32 WritePrivateProfileString32A(LPCSTR section,LPCSTR entry,LPCSTR string, - LPCSTR filename ) +BOOL32 WINAPI WritePrivateProfileString32A( LPCSTR section, LPCSTR entry, + LPCSTR string, LPCSTR filename ) { if (!PROFILE_Open( filename )) return FALSE; if (!section) return PROFILE_FlushFile(); @@ -984,8 +988,8 @@ /*********************************************************************** * WritePrivateProfileString32W (KERNEL32.583) */ -BOOL32 WritePrivateProfileString32W( LPCWSTR section, LPCWSTR entry, - LPCWSTR string, LPCWSTR filename ) +BOOL32 WINAPI WritePrivateProfileString32W( LPCWSTR section, LPCWSTR entry, + LPCWSTR string, LPCWSTR filename ) { LPSTR sectionA = HEAP_strdupWtoA( GetProcessHeap(), 0, section ); LPSTR entryA = HEAP_strdupWtoA( GetProcessHeap(), 0, entry ); @@ -1004,7 +1008,7 @@ /*********************************************************************** * WriteOutProfiles (KERNEL.315) */ -void WriteOutProfiles(void) +void WINAPI WriteOutProfiles(void) { PROFILE_FlushFile(); }
diff --git a/graphics/bitblt.c b/graphics/bitblt.c index eda13f4..2356de8 100644 --- a/graphics/bitblt.c +++ b/graphics/bitblt.c
@@ -12,8 +12,8 @@ /*********************************************************************** * PatBlt16 (GDI.29) */ -BOOL16 PatBlt16( HDC16 hdc, INT16 left, INT16 top, - INT16 width, INT16 height, DWORD rop) +BOOL16 WINAPI PatBlt16( HDC16 hdc, INT16 left, INT16 top, + INT16 width, INT16 height, DWORD rop) { DC * dc = DC_GetDCPtr( hdc ); if (!dc || !dc->funcs->pPatBlt) return FALSE; @@ -27,8 +27,8 @@ /*********************************************************************** * PatBlt32 (GDI32.260) */ -BOOL32 PatBlt32( HDC32 hdc, INT32 left, INT32 top, - INT32 width, INT32 height, DWORD rop) +BOOL32 WINAPI PatBlt32( HDC32 hdc, INT32 left, INT32 top, + INT32 width, INT32 height, DWORD rop) { DC * dc = DC_GetDCPtr( hdc ); if (!dc || !dc->funcs->pPatBlt) return FALSE; @@ -42,8 +42,9 @@ /*********************************************************************** * BitBlt16 (GDI.34) */ -BOOL16 BitBlt16( HDC16 hdcDst, INT16 xDst, INT16 yDst, INT16 width, - INT16 height, HDC16 hdcSrc, INT16 xSrc, INT16 ySrc, DWORD rop) +BOOL16 WINAPI BitBlt16( HDC16 hdcDst, INT16 xDst, INT16 yDst, INT16 width, + INT16 height, HDC16 hdcSrc, INT16 xSrc, INT16 ySrc, + DWORD rop ) { DC *dcDst, *dcSrc; @@ -63,8 +64,9 @@ /*********************************************************************** * BitBlt32 (GDI32.10) */ -BOOL32 BitBlt32( HDC32 hdcDst, INT32 xDst, INT32 yDst, INT32 width, - INT32 height, HDC32 hdcSrc, INT32 xSrc, INT32 ySrc, DWORD rop) +BOOL32 WINAPI BitBlt32( HDC32 hdcDst, INT32 xDst, INT32 yDst, INT32 width, + INT32 height, HDC32 hdcSrc, INT32 xSrc, INT32 ySrc, + DWORD rop ) { DC *dcDst, *dcSrc; @@ -84,10 +86,10 @@ /*********************************************************************** * StretchBlt16 (GDI.35) */ -BOOL16 StretchBlt16( HDC16 hdcDst, INT16 xDst, INT16 yDst, - INT16 widthDst, INT16 heightDst, - HDC16 hdcSrc, INT16 xSrc, INT16 ySrc, - INT16 widthSrc, INT16 heightSrc, DWORD rop ) +BOOL16 WINAPI StretchBlt16( HDC16 hdcDst, INT16 xDst, INT16 yDst, + INT16 widthDst, INT16 heightDst, + HDC16 hdcSrc, INT16 xSrc, INT16 ySrc, + INT16 widthSrc, INT16 heightSrc, DWORD rop ) { DC *dcDst, *dcSrc; @@ -109,10 +111,10 @@ /*********************************************************************** * StretchBlt32 (GDI32.350) */ -BOOL32 StretchBlt32( HDC32 hdcDst, INT32 xDst, INT32 yDst, - INT32 widthDst, INT32 heightDst, - HDC32 hdcSrc, INT32 xSrc, INT32 ySrc, - INT32 widthSrc, INT32 heightSrc, DWORD rop ) +BOOL32 WINAPI StretchBlt32( HDC32 hdcDst, INT32 xDst, INT32 yDst, + INT32 widthDst, INT32 heightDst, + HDC32 hdcSrc, INT32 xSrc, INT32 ySrc, + INT32 widthSrc, INT32 heightSrc, DWORD rop ) { DC *dcDst, *dcSrc; @@ -134,8 +136,8 @@ /*********************************************************************** * FastWindowFrame (GDI.400) */ -BOOL16 FastWindowFrame( HDC16 hdc, const RECT16 *rect, - INT16 width, INT16 height, DWORD rop ) +BOOL16 WINAPI FastWindowFrame( HDC16 hdc, const RECT16 *rect, + INT16 width, INT16 height, DWORD rop ) { HBRUSH32 hbrush = SelectObject32( hdc, GetStockObject32( GRAY_BRUSH ) ); PatBlt32( hdc, rect->left, rect->top,
diff --git a/graphics/escape.c b/graphics/escape.c index d742fc1..b60b9a8 100644 --- a/graphics/escape.c +++ b/graphics/escape.c
@@ -9,19 +9,24 @@ #include "gdi.h" #include "dc.h" -INT16 Escape16( HDC16 hdc, INT16 nEscape, INT16 cbInput, - SEGPTR lpszInData, SEGPTR lpvOutData ) +INT16 WINAPI Escape16( HDC16 hdc, INT16 nEscape, INT16 cbInput, + SEGPTR lpszInData, SEGPTR lpvOutData ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc || !dc->funcs->pEscape) return 0; return dc->funcs->pEscape( dc, nEscape, cbInput, lpszInData, lpvOutData ); } -INT32 Escape32( HDC32 hdc, INT32 nEscape, INT32 cbInput, - LPVOID lpszInData, LPVOID lpvOutData ) +INT32 WINAPI Escape32( HDC32 hdc, INT32 nEscape, INT32 cbInput, + LPVOID lpszInData, LPVOID lpvOutData ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc || !dc->funcs->pEscape) return 0; + switch (nEscape) { + case GETSCALINGFACTOR: + return 1; + + } return dc->funcs->pEscape( dc, nEscape, cbInput, (SEGPTR)lpszInData, (SEGPTR)lpvOutData ); }
diff --git a/graphics/fontengine.c b/graphics/fontengine.c index 376b7f7..4dd6e1f 100644 --- a/graphics/fontengine.c +++ b/graphics/fontengine.c
@@ -8,23 +8,20 @@ #include "windows.h" /* GDI 300 */ -WORD -EngineEnumerateFont(LPSTR fontname, FARPROC16 proc, DWORD data ) +WORD WINAPI EngineEnumerateFont(LPSTR fontname, FARPROC16 proc, DWORD data ) { printf("In engineEnumerateFont for %s\n",(fontname)?fontname:"NULL"); return 0; } #ifdef NOTDEF /* GDI 301 */ -WORD -EngineDeleteFont(LPFONTINFO16 lpFontInfo) +WORD WINAPI EngineDeleteFont(LPFONTINFO16 lpFontInfo) { return 0 } #endif /* GDI 302 */ -WORD -EngineRealizeFont(LPLOGFONT16 lplogFont, LPTEXTXFORM16 lptextxform, LPFONTINFO16 lpfontInfo) +WORD WINAPI EngineRealizeFont(LPLOGFONT16 lplogFont, LPTEXTXFORM16 lptextxform, LPFONTINFO16 lpfontInfo) { printf("In EngineRealizeFont\n"); @@ -32,27 +29,23 @@ } #ifdef NOTDEF /* GDI 303 */ -WORD -EngineGetCharWidth(LPFONTINFO16 lpFontInfo, BYTE, BYTE, LPINT16) +WORD WINAPI EngineGetCharWidth(LPFONTINFO16 lpFontInfo, BYTE, BYTE, LPINT16) { return 0; } /* GDI 304 */ -WORD -EngineSetFontContext(LPFONTINFO lpFontInfo, WORD data) +WORD WINAPI EngineSetFontContext(LPFONTINFO lpFontInfo, WORD data) { } /* GDI 305 */ -WORD -EngineGetGlyphBMP(WORD word, LPFONTINFO lpFontInfo, WORD, WORD, LPSTR string, DWORD dword, LPBITMAPMETRICS16 metrics) +WORD WINAPI EngineGetGlyphBMP(WORD word, LPFONTINFO lpFontInfo, WORD, WORD, LPSTR string, DWORD dword, LPBITMAPMETRICS16 metrics) { return 0; } /* GDI 306 */ -DWORD -EngineMakeFontDir(HDC16 hdc, LPFONTDIR fontdir, LPCSTR string) +DWORD WINAPI EngineMakeFontDir(HDC16 hdc, LPFONTDIR fontdir, LPCSTR string) { return 0; @@ -60,8 +53,7 @@ /* GDI 314 */ -WORD -EngineExtTextOut() +WORD WINAPI EngineExtTextOut() { }
diff --git a/graphics/mapping.c b/graphics/mapping.c index e70c1e5..576eb34 100644 --- a/graphics/mapping.c +++ b/graphics/mapping.c
@@ -37,7 +37,7 @@ /*********************************************************************** * DPtoLP16 (GDI.67) */ -BOOL16 DPtoLP16( HDC16 hdc, LPPOINT16 points, INT16 count ) +BOOL16 WINAPI DPtoLP16( HDC16 hdc, LPPOINT16 points, INT16 count ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return FALSE; @@ -55,7 +55,7 @@ /*********************************************************************** * DPtoLP32 (GDI32.65) */ -BOOL32 DPtoLP32( HDC32 hdc, LPPOINT32 points, INT32 count ) +BOOL32 WINAPI DPtoLP32( HDC32 hdc, LPPOINT32 points, INT32 count ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return FALSE; @@ -73,7 +73,7 @@ /*********************************************************************** * LPtoDP16 (GDI.99) */ -BOOL16 LPtoDP16( HDC16 hdc, LPPOINT16 points, INT16 count ) +BOOL16 WINAPI LPtoDP16( HDC16 hdc, LPPOINT16 points, INT16 count ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return FALSE; @@ -91,7 +91,7 @@ /*********************************************************************** * LPtoDP32 (GDI32.247) */ -BOOL32 LPtoDP32( HDC32 hdc, LPPOINT32 points, INT32 count ) +BOOL32 WINAPI LPtoDP32( HDC32 hdc, LPPOINT32 points, INT32 count ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return FALSE; @@ -109,7 +109,7 @@ /*********************************************************************** * SetMapMode16 (GDI.3) */ -INT16 SetMapMode16( HDC16 hdc, INT16 mode ) +INT16 WINAPI SetMapMode16( HDC16 hdc, INT16 mode ) { return SetMapMode32( hdc, mode ); } @@ -118,7 +118,7 @@ /*********************************************************************** * SetMapMode32 (GDI32.321) */ -INT32 SetMapMode32( HDC32 hdc, INT32 mode ) +INT32 WINAPI SetMapMode32( HDC32 hdc, INT32 mode ) { INT32 prevMode; DC * dc = DC_GetDCPtr( hdc ); @@ -199,7 +199,7 @@ /*********************************************************************** * SetViewportExt (GDI.14) */ -DWORD SetViewportExt( HDC16 hdc, INT16 x, INT16 y ) +DWORD WINAPI SetViewportExt( HDC16 hdc, INT16 x, INT16 y ) { SIZE32 size; if (!SetViewportExtEx32( hdc, x, y, &size )) return 0; @@ -210,7 +210,7 @@ /*********************************************************************** * SetViewportExtEx16 (GDI.479) */ -BOOL16 SetViewportExtEx16( HDC16 hdc, INT16 x, INT16 y, LPSIZE16 size ) +BOOL16 WINAPI SetViewportExtEx16( HDC16 hdc, INT16 x, INT16 y, LPSIZE16 size ) { SIZE32 size32; BOOL16 ret = SetViewportExtEx32( hdc, x, y, &size32 ); @@ -222,7 +222,7 @@ /*********************************************************************** * SetViewportExtEx32 (GDI32.340) */ -BOOL32 SetViewportExtEx32( HDC32 hdc, INT32 x, INT32 y, LPSIZE32 size ) +BOOL32 WINAPI SetViewportExtEx32( HDC32 hdc, INT32 x, INT32 y, LPSIZE32 size ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE; @@ -246,7 +246,7 @@ /*********************************************************************** * SetViewportOrg (GDI.13) */ -DWORD SetViewportOrg( HDC16 hdc, INT16 x, INT16 y ) +DWORD WINAPI SetViewportOrg( HDC16 hdc, INT16 x, INT16 y ) { POINT32 pt; if (!SetViewportOrgEx32( hdc, x, y, &pt )) return 0; @@ -257,7 +257,7 @@ /*********************************************************************** * SetViewportOrgEx16 (GDI.480) */ -BOOL16 SetViewportOrgEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT16 pt ) +BOOL16 WINAPI SetViewportOrgEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT16 pt ) { POINT32 pt32; BOOL16 ret = SetViewportOrgEx32( hdc, x, y, &pt32 ); @@ -269,7 +269,7 @@ /*********************************************************************** * SetViewportOrgEx32 (GDI32.341) */ -BOOL32 SetViewportOrgEx32( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 pt ) +BOOL32 WINAPI SetViewportOrgEx32( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 pt ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE; @@ -289,7 +289,7 @@ /*********************************************************************** * SetWindowExt (GDI.12) */ -DWORD SetWindowExt( HDC16 hdc, INT16 x, INT16 y ) +DWORD WINAPI SetWindowExt( HDC16 hdc, INT16 x, INT16 y ) { SIZE32 size; if (!SetWindowExtEx32( hdc, x, y, &size )) return 0; @@ -300,7 +300,7 @@ /*********************************************************************** * SetWindowExtEx16 (GDI.481) */ -BOOL16 SetWindowExtEx16( HDC16 hdc, INT16 x, INT16 y, LPSIZE16 size ) +BOOL16 WINAPI SetWindowExtEx16( HDC16 hdc, INT16 x, INT16 y, LPSIZE16 size ) { SIZE32 size32; BOOL16 ret = SetWindowExtEx32( hdc, x, y, &size32 ); @@ -312,7 +312,7 @@ /*********************************************************************** * SetWindowExtEx32 (GDI32.344) */ -BOOL32 SetWindowExtEx32( HDC32 hdc, INT32 x, INT32 y, LPSIZE32 size ) +BOOL32 WINAPI SetWindowExtEx32( HDC32 hdc, INT32 x, INT32 y, LPSIZE32 size ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE; @@ -335,7 +335,7 @@ /*********************************************************************** * SetWindowOrg (GDI.11) */ -DWORD SetWindowOrg( HDC16 hdc, INT16 x, INT16 y ) +DWORD WINAPI SetWindowOrg( HDC16 hdc, INT16 x, INT16 y ) { POINT32 pt; if (!SetWindowOrgEx32( hdc, x, y, &pt )) return 0; @@ -346,7 +346,7 @@ /*********************************************************************** * SetWindowOrgEx16 (GDI.482) */ -BOOL16 SetWindowOrgEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT16 pt ) +BOOL16 WINAPI SetWindowOrgEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT16 pt ) { POINT32 pt32; BOOL16 ret = SetWindowOrgEx32( hdc, x, y, &pt32 ); @@ -358,7 +358,7 @@ /*********************************************************************** * SetWindowOrgEx32 (GDI32.345) */ -BOOL32 SetWindowOrgEx32( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 pt ) +BOOL32 WINAPI SetWindowOrgEx32( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 pt ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE; @@ -377,7 +377,7 @@ /*********************************************************************** * OffsetViewportOrg (GDI.17) */ -DWORD OffsetViewportOrg( HDC16 hdc, INT16 x, INT16 y ) +DWORD WINAPI OffsetViewportOrg( HDC16 hdc, INT16 x, INT16 y ) { POINT32 pt; if (!OffsetViewportOrgEx32( hdc, x, y, &pt )) return 0; @@ -388,7 +388,7 @@ /*********************************************************************** * OffsetViewportOrgEx16 (GDI.476) */ -BOOL16 OffsetViewportOrgEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT16 pt ) +BOOL16 WINAPI OffsetViewportOrgEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT16 pt) { POINT32 pt32; BOOL16 ret = OffsetViewportOrgEx32( hdc, x, y, &pt32 ); @@ -400,7 +400,7 @@ /*********************************************************************** * OffsetViewportOrgEx32 (GDI32.257) */ -BOOL32 OffsetViewportOrgEx32( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 pt ) +BOOL32 WINAPI OffsetViewportOrgEx32( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 pt) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE; @@ -420,7 +420,7 @@ /*********************************************************************** * OffsetWindowOrg (GDI.15) */ -DWORD OffsetWindowOrg( HDC16 hdc, INT16 x, INT16 y ) +DWORD WINAPI OffsetWindowOrg( HDC16 hdc, INT16 x, INT16 y ) { POINT32 pt; if (!OffsetWindowOrgEx32( hdc, x, y, &pt )) return 0; @@ -431,7 +431,7 @@ /*********************************************************************** * OffsetWindowOrgEx16 (GDI.477) */ -BOOL16 OffsetWindowOrgEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT16 pt ) +BOOL16 WINAPI OffsetWindowOrgEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT16 pt ) { POINT32 pt32; BOOL16 ret = OffsetWindowOrgEx32( hdc, x, y, &pt32 ); @@ -443,7 +443,7 @@ /*********************************************************************** * OffsetWindowOrgEx32 (GDI32.258) */ -BOOL32 OffsetWindowOrgEx32( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 pt ) +BOOL32 WINAPI OffsetWindowOrgEx32( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 pt ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE; @@ -463,8 +463,8 @@ /*********************************************************************** * ScaleViewportExt (GDI.18) */ -DWORD ScaleViewportExt( HDC16 hdc, INT16 xNum, INT16 xDenom, - INT16 yNum, INT16 yDenom ) +DWORD WINAPI ScaleViewportExt( HDC16 hdc, INT16 xNum, INT16 xDenom, + INT16 yNum, INT16 yDenom ) { SIZE32 size; if (!ScaleViewportExtEx32( hdc, xNum, xDenom, yNum, yDenom, &size )) @@ -476,8 +476,8 @@ /*********************************************************************** * ScaleViewportExtEx16 (GDI.484) */ -BOOL16 ScaleViewportExtEx16( HDC16 hdc, INT16 xNum, INT16 xDenom, - INT16 yNum, INT16 yDenom, LPSIZE16 size ) +BOOL16 WINAPI ScaleViewportExtEx16( HDC16 hdc, INT16 xNum, INT16 xDenom, + INT16 yNum, INT16 yDenom, LPSIZE16 size ) { SIZE32 size32; BOOL16 ret = ScaleViewportExtEx32( hdc, xNum, xDenom, yNum, yDenom, @@ -490,8 +490,8 @@ /*********************************************************************** * ScaleViewportExtEx32 (GDI32.293) */ -BOOL32 ScaleViewportExtEx32( HDC32 hdc, INT32 xNum, INT32 xDenom, - INT32 yNum, INT32 yDenom, LPSIZE32 size ) +BOOL32 WINAPI ScaleViewportExtEx32( HDC32 hdc, INT32 xNum, INT32 xDenom, + INT32 yNum, INT32 yDenom, LPSIZE32 size ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE; @@ -517,8 +517,8 @@ /*********************************************************************** * ScaleWindowExt (GDI.16) */ -DWORD ScaleWindowExt( HDC16 hdc, INT16 xNum, INT16 xDenom, - INT16 yNum, INT16 yDenom ) +DWORD WINAPI ScaleWindowExt( HDC16 hdc, INT16 xNum, INT16 xDenom, + INT16 yNum, INT16 yDenom ) { SIZE32 size; if (!ScaleWindowExtEx32( hdc, xNum, xDenom, yNum, yDenom, &size )) @@ -530,8 +530,8 @@ /*********************************************************************** * ScaleWindowExtEx16 (GDI.485) */ -BOOL16 ScaleWindowExtEx16( HDC16 hdc, INT16 xNum, INT16 xDenom, - INT16 yNum, INT16 yDenom, LPSIZE16 size ) +BOOL16 WINAPI ScaleWindowExtEx16( HDC16 hdc, INT16 xNum, INT16 xDenom, + INT16 yNum, INT16 yDenom, LPSIZE16 size ) { SIZE32 size32; BOOL16 ret = ScaleWindowExtEx32( hdc, xNum, xDenom, yNum, yDenom, @@ -544,8 +544,8 @@ /*********************************************************************** * ScaleWindowExtEx32 (GDI32.294) */ -BOOL32 ScaleWindowExtEx32( HDC32 hdc, INT32 xNum, INT32 xDenom, - INT32 yNum, INT32 yDenom, LPSIZE32 size ) +BOOL32 WINAPI ScaleWindowExtEx32( HDC32 hdc, INT32 xNum, INT32 xDenom, + INT32 yNum, INT32 yDenom, LPSIZE32 size ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc) return FALSE;
diff --git a/graphics/metafiledrv/init.c b/graphics/metafiledrv/init.c index a5ffa69..b187bce 100644 --- a/graphics/metafiledrv/init.c +++ b/graphics/metafiledrv/init.c
@@ -138,7 +138,7 @@ /********************************************************************** * CreateMetafile16 (GDI.125) */ -HDC16 CreateMetaFile16( LPCSTR filename ) +HDC16 WINAPI CreateMetaFile16( LPCSTR filename ) { DC *dc; METAFILEDRV_PDEVICE *physDev; @@ -177,7 +177,7 @@ /****************************************************************** * CloseMetafile16 (GDI.126) */ -HMETAFILE16 CloseMetaFile16( HDC16 hdc ) +HMETAFILE16 WINAPI CloseMetaFile16( HDC16 hdc ) { DC *dc; HMETAFILE16 hmf; @@ -231,7 +231,7 @@ /****************************************************************** * DeleteMetafile16 (GDI.127) */ -BOOL16 DeleteMetaFile16( HMETAFILE16 hmf ) +BOOL16 WINAPI DeleteMetaFile16( HMETAFILE16 hmf ) { return !GlobalFree16( hmf ); }
diff --git a/graphics/metafiledrv/objects.c b/graphics/metafiledrv/objects.c index 2c1aa22..dcb096d 100644 --- a/graphics/metafiledrv/objects.c +++ b/graphics/metafiledrv/objects.c
@@ -83,6 +83,7 @@ HGDIOBJ32 MFDRV_SelectObject( DC *dc, HGDIOBJ32 handle ) { GDIOBJHDR * ptr = GDI_GetObjPtr( handle, MAGIC_DONTCARE ); + HGDIOBJ32 ret = 0; if (!ptr) return 0; dprintf_gdi(stddeb, "SelectObject: hdc=%04x %04x\n", dc->hSelf, handle ); @@ -90,15 +91,21 @@ switch(ptr->wMagic) { case PEN_MAGIC: - return MFDRV_PEN_SelectObject( dc, handle, (PENOBJ *)ptr ); + ret = MFDRV_PEN_SelectObject( dc, handle, (PENOBJ *)ptr ); + break; case BRUSH_MAGIC: - return MFDRV_BRUSH_SelectObject( dc, handle, (BRUSHOBJ *)ptr ); + ret = MFDRV_BRUSH_SelectObject( dc, handle, (BRUSHOBJ *)ptr ); + break; case BITMAP_MAGIC: - return MFDRV_BITMAP_SelectObject( dc, handle, (BITMAPOBJ *)ptr ); + ret = MFDRV_BITMAP_SelectObject( dc, handle, (BITMAPOBJ *)ptr ); + break; case FONT_MAGIC: - return MFDRV_FONT_SelectObject( dc, handle, (FONTOBJ *)ptr ); + ret = MFDRV_FONT_SelectObject( dc, handle, (FONTOBJ *)ptr ); + break; case REGION_MAGIC: - return (HGDIOBJ16)SelectClipRgn16( dc->hSelf, handle ); + ret = (HGDIOBJ16)SelectClipRgn16( dc->hSelf, handle ); + break; } - return 0; + GDI_HEAP_UNLOCK( handle ); + return ret; }
diff --git a/graphics/painting.c b/graphics/painting.c index ed96464..efd785a 100644 --- a/graphics/painting.c +++ b/graphics/painting.c
@@ -29,7 +29,7 @@ /*********************************************************************** * LineTo16 (GDI.19) */ -BOOL16 LineTo16( HDC16 hdc, INT16 x, INT16 y ) +BOOL16 WINAPI LineTo16( HDC16 hdc, INT16 x, INT16 y ) { return LineTo32( hdc, x, y ); } @@ -38,7 +38,7 @@ /*********************************************************************** * LineTo32 (GDI32.249) */ -BOOL32 LineTo32( HDC32 hdc, INT32 x, INT32 y ) +BOOL32 WINAPI LineTo32( HDC32 hdc, INT32 x, INT32 y ) { DC * dc = DC_GetDCPtr( hdc ); @@ -50,7 +50,7 @@ /*********************************************************************** * MoveTo (GDI.20) */ -DWORD MoveTo( HDC16 hdc, INT16 x, INT16 y ) +DWORD WINAPI MoveTo( HDC16 hdc, INT16 x, INT16 y ) { POINT16 pt; @@ -63,7 +63,7 @@ /*********************************************************************** * MoveToEx16 (GDI.483) */ -BOOL16 MoveToEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT16 pt ) +BOOL16 WINAPI MoveToEx16( HDC16 hdc, INT16 x, INT16 y, LPPOINT16 pt ) { POINT32 pt32; @@ -77,7 +77,7 @@ /*********************************************************************** * MoveToEx32 (GDI32.254) */ -BOOL32 MoveToEx32( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 pt ) +BOOL32 WINAPI MoveToEx32( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 pt ) { DC * dc = DC_GetDCPtr( hdc ); @@ -89,8 +89,9 @@ /*********************************************************************** * Arc16 (GDI.23) */ -BOOL16 Arc16( HDC16 hdc, INT16 left, INT16 top, INT16 right, INT16 bottom, - INT16 xstart, INT16 ystart, INT16 xend, INT16 yend ) +BOOL16 WINAPI Arc16( HDC16 hdc, INT16 left, INT16 top, INT16 right, + INT16 bottom, INT16 xstart, INT16 ystart, + INT16 xend, INT16 yend ) { return Arc32( (HDC32)hdc, (INT32)left, (INT32)top, (INT32)right, (INT32)bottom, (INT32)xstart, (INT32)ystart, (INT32)xend, @@ -101,8 +102,9 @@ /*********************************************************************** * Arc32 (GDI32.7) */ -BOOL32 Arc32( HDC32 hdc, INT32 left, INT32 top, INT32 right, INT32 bottom, - INT32 xstart, INT32 ystart, INT32 xend, INT32 yend ) +BOOL32 WINAPI Arc32( HDC32 hdc, INT32 left, INT32 top, INT32 right, + INT32 bottom, INT32 xstart, INT32 ystart, + INT32 xend, INT32 yend ) { DC * dc = DC_GetDCPtr( hdc ); @@ -114,8 +116,9 @@ /*********************************************************************** * Pie16 (GDI.26) */ -BOOL16 Pie16( HDC16 hdc, INT16 left, INT16 top, INT16 right, INT16 bottom, - INT16 xstart, INT16 ystart, INT16 xend, INT16 yend ) +BOOL16 WINAPI Pie16( HDC16 hdc, INT16 left, INT16 top, + INT16 right, INT16 bottom, INT16 xstart, INT16 ystart, + INT16 xend, INT16 yend ) { return Pie32( (HDC32)hdc, (INT32)left, (INT32)top, (INT32)right, (INT32)bottom, (INT32)xstart, (INT32)ystart, (INT32)xend, @@ -126,8 +129,9 @@ /*********************************************************************** * Pie32 (GDI32.262) */ -BOOL32 Pie32( HDC32 hdc, INT32 left, INT32 top, INT32 right, INT32 bottom, - INT32 xstart, INT32 ystart, INT32 xend, INT32 yend ) +BOOL32 WINAPI Pie32( HDC32 hdc, INT32 left, INT32 top, + INT32 right, INT32 bottom, INT32 xstart, INT32 ystart, + INT32 xend, INT32 yend ) { DC * dc = DC_GetDCPtr( hdc ); @@ -139,8 +143,9 @@ /*********************************************************************** * Chord16 (GDI.348) */ -BOOL16 Chord16( HDC16 hdc, INT16 left, INT16 top, INT16 right, INT16 bottom, - INT16 xstart, INT16 ystart, INT16 xend, INT16 yend ) +BOOL16 WINAPI Chord16( HDC16 hdc, INT16 left, INT16 top, + INT16 right, INT16 bottom, INT16 xstart, INT16 ystart, + INT16 xend, INT16 yend ) { return Chord32( hdc, left, top, right, bottom, xstart, ystart, xend, yend ); } @@ -149,8 +154,9 @@ /*********************************************************************** * Chord32 (GDI32.14) */ -BOOL32 Chord32( HDC32 hdc, INT32 left, INT32 top, INT32 right, INT32 bottom, - INT32 xstart, INT32 ystart, INT32 xend, INT32 yend ) +BOOL32 WINAPI Chord32( HDC32 hdc, INT32 left, INT32 top, + INT32 right, INT32 bottom, INT32 xstart, INT32 ystart, + INT32 xend, INT32 yend ) { DC * dc = DC_GetDCPtr( hdc ); @@ -162,7 +168,8 @@ /*********************************************************************** * Ellipse16 (GDI.24) */ -BOOL16 Ellipse16( HDC16 hdc, INT16 left, INT16 top, INT16 right, INT16 bottom ) +BOOL16 WINAPI Ellipse16( HDC16 hdc, INT16 left, INT16 top, + INT16 right, INT16 bottom ) { return Ellipse32( hdc, left, top, right, bottom ); } @@ -171,7 +178,8 @@ /*********************************************************************** * Ellipse32 (GDI32.75) */ -BOOL32 Ellipse32( HDC32 hdc, INT32 left, INT32 top, INT32 right, INT32 bottom ) +BOOL32 WINAPI Ellipse32( HDC32 hdc, INT32 left, INT32 top, + INT32 right, INT32 bottom ) { DC * dc = DC_GetDCPtr( hdc ); @@ -183,7 +191,8 @@ /*********************************************************************** * Rectangle16 (GDI.27) */ -BOOL16 Rectangle16(HDC16 hdc, INT16 left, INT16 top, INT16 right, INT16 bottom) +BOOL16 WINAPI Rectangle16( HDC16 hdc, INT16 left, INT16 top, + INT16 right, INT16 bottom ) { return Rectangle32( hdc, left, top, right, bottom ); } @@ -192,7 +201,8 @@ /*********************************************************************** * Rectangle32 (GDI32.283) */ -BOOL32 Rectangle32(HDC32 hdc, INT32 left, INT32 top, INT32 right, INT32 bottom) +BOOL32 WINAPI Rectangle32( HDC32 hdc, INT32 left, INT32 top, + INT32 right, INT32 bottom ) { DC * dc = DC_GetDCPtr( hdc ); @@ -204,8 +214,8 @@ /*********************************************************************** * RoundRect16 (GDI.28) */ -BOOL16 RoundRect16( HDC16 hdc, INT16 left, INT16 top, INT16 right, - INT16 bottom, INT16 ell_width, INT16 ell_height ) +BOOL16 WINAPI RoundRect16( HDC16 hdc, INT16 left, INT16 top, INT16 right, + INT16 bottom, INT16 ell_width, INT16 ell_height ) { return RoundRect32( hdc, left, top, right, bottom, ell_width, ell_height ); } @@ -214,8 +224,8 @@ /*********************************************************************** * RoundRect32 (GDI32.291) */ -BOOL32 RoundRect32( HDC32 hdc, INT32 left, INT32 top, INT32 right, - INT32 bottom, INT32 ell_width, INT32 ell_height ) +BOOL32 WINAPI RoundRect32( HDC32 hdc, INT32 left, INT32 top, INT32 right, + INT32 bottom, INT32 ell_width, INT32 ell_height ) { DC * dc = DC_GetDCPtr( hdc ); @@ -227,7 +237,7 @@ /*********************************************************************** * FillRect16 (USER.81) */ -INT16 FillRect16( HDC16 hdc, const RECT16 *rect, HBRUSH16 hbrush ) +INT16 WINAPI FillRect16( HDC16 hdc, const RECT16 *rect, HBRUSH16 hbrush ) { HBRUSH16 prevBrush; @@ -246,7 +256,7 @@ /*********************************************************************** * FillRect32 (USER32.196) */ -INT32 FillRect32( HDC32 hdc, const RECT32 *rect, HBRUSH32 hbrush ) +INT32 WINAPI FillRect32( HDC32 hdc, const RECT32 *rect, HBRUSH32 hbrush ) { HBRUSH32 prevBrush; @@ -261,7 +271,7 @@ /*********************************************************************** * InvertRect16 (USER.82) */ -void InvertRect16( HDC16 hdc, const RECT16 *rect ) +void WINAPI InvertRect16( HDC16 hdc, const RECT16 *rect ) { PatBlt32( hdc, rect->left, rect->top, rect->right - rect->left, rect->bottom - rect->top, DSTINVERT ); @@ -271,7 +281,7 @@ /*********************************************************************** * InvertRect32 (USER32.329) */ -void InvertRect32( HDC32 hdc, const RECT32 *rect ) +void WINAPI InvertRect32( HDC32 hdc, const RECT32 *rect ) { PatBlt32( hdc, rect->left, rect->top, rect->right - rect->left, rect->bottom - rect->top, DSTINVERT ); @@ -281,7 +291,7 @@ /*********************************************************************** * FrameRect16 (USER.83) */ -INT16 FrameRect16( HDC16 hdc, const RECT16 *rect, HBRUSH16 hbrush ) +INT16 WINAPI FrameRect16( HDC16 hdc, const RECT16 *rect, HBRUSH16 hbrush ) { HBRUSH16 prevBrush; int left, top, right, bottom; @@ -316,7 +326,7 @@ /*********************************************************************** * FrameRect32 (USER32.202) */ -INT32 FrameRect32( HDC32 hdc, const RECT32 *rect, HBRUSH32 hbrush ) +INT32 WINAPI FrameRect32( HDC32 hdc, const RECT32 *rect, HBRUSH32 hbrush ) { RECT16 rect16; CONV_RECT32TO16( rect, &rect16 ); @@ -327,7 +337,7 @@ /*********************************************************************** * SetPixel16 (GDI.31) */ -COLORREF SetPixel16( HDC16 hdc, INT16 x, INT16 y, COLORREF color ) +COLORREF WINAPI SetPixel16( HDC16 hdc, INT16 x, INT16 y, COLORREF color ) { return SetPixel32( hdc, x, y, color ); } @@ -336,7 +346,7 @@ /*********************************************************************** * SetPixel32 (GDI32.327) */ -COLORREF SetPixel32( HDC32 hdc, INT32 x, INT32 y, COLORREF color ) +COLORREF WINAPI SetPixel32( HDC32 hdc, INT32 x, INT32 y, COLORREF color ) { DC * dc = DC_GetDCPtr( hdc ); @@ -348,7 +358,7 @@ /*********************************************************************** * GetPixel16 (GDI.83) */ -COLORREF GetPixel16( HDC16 hdc, INT16 x, INT16 y ) +COLORREF WINAPI GetPixel16( HDC16 hdc, INT16 x, INT16 y ) { return GetPixel32( hdc, x, y ); } @@ -357,7 +367,7 @@ /*********************************************************************** * GetPixel32 (GDI32.211) */ -COLORREF GetPixel32( HDC32 hdc, INT32 x, INT32 y ) +COLORREF WINAPI GetPixel32( HDC32 hdc, INT32 x, INT32 y ) { DC * dc = DC_GetDCPtr( hdc ); @@ -376,7 +386,7 @@ /*********************************************************************** * PaintRgn16 (GDI.43) */ -BOOL16 PaintRgn16( HDC16 hdc, HRGN16 hrgn ) +BOOL16 WINAPI PaintRgn16( HDC16 hdc, HRGN16 hrgn ) { return PaintRgn32( hdc, hrgn ); } @@ -385,7 +395,7 @@ /*********************************************************************** * PaintRgn32 (GDI32.259) */ -BOOL32 PaintRgn32( HDC32 hdc, HRGN32 hrgn ) +BOOL32 WINAPI PaintRgn32( HDC32 hdc, HRGN32 hrgn ) { DC * dc = DC_GetDCPtr( hdc ); @@ -397,7 +407,7 @@ /*********************************************************************** * FillRgn16 (GDI.40) */ -BOOL16 FillRgn16( HDC16 hdc, HRGN16 hrgn, HBRUSH16 hbrush ) +BOOL16 WINAPI FillRgn16( HDC16 hdc, HRGN16 hrgn, HBRUSH16 hbrush ) { return FillRgn32( hdc, hrgn, hbrush ); } @@ -406,7 +416,7 @@ /*********************************************************************** * FillRgn32 (GDI32.101) */ -BOOL32 FillRgn32( HDC32 hdc, HRGN32 hrgn, HBRUSH32 hbrush ) +BOOL32 WINAPI FillRgn32( HDC32 hdc, HRGN32 hrgn, HBRUSH32 hbrush ) { BOOL32 retval; HBRUSH32 prevBrush = SelectObject32( hdc, hbrush ); @@ -420,8 +430,8 @@ /*********************************************************************** * FrameRgn16 (GDI.41) */ -BOOL16 FrameRgn16( HDC16 hdc, HRGN16 hrgn, HBRUSH16 hbrush, - INT16 nWidth, INT16 nHeight ) +BOOL16 WINAPI FrameRgn16( HDC16 hdc, HRGN16 hrgn, HBRUSH16 hbrush, + INT16 nWidth, INT16 nHeight ) { return FrameRgn32( hdc, hrgn, hbrush, nWidth, nHeight ); } @@ -430,8 +440,8 @@ /*********************************************************************** * FrameRgn32 (GDI32.105) */ -BOOL32 FrameRgn32( HDC32 hdc, HRGN32 hrgn, HBRUSH32 hbrush, - INT32 nWidth, INT32 nHeight ) +BOOL32 WINAPI FrameRgn32( HDC32 hdc, HRGN32 hrgn, HBRUSH32 hbrush, + INT32 nWidth, INT32 nHeight ) { HRGN32 tmp = CreateRectRgn32( 0, 0, 0, 0 ); if(!REGION_FrameRgn( tmp, hrgn, nWidth, nHeight )) return FALSE; @@ -444,7 +454,7 @@ /*********************************************************************** * InvertRgn16 (GDI.42) */ -BOOL16 InvertRgn16( HDC16 hdc, HRGN16 hrgn ) +BOOL16 WINAPI InvertRgn16( HDC16 hdc, HRGN16 hrgn ) { return InvertRgn32( hdc, hrgn ); } @@ -453,7 +463,7 @@ /*********************************************************************** * InvertRgn32 (GDI32.246) */ -BOOL32 InvertRgn32( HDC32 hdc, HRGN32 hrgn ) +BOOL32 WINAPI InvertRgn32( HDC32 hdc, HRGN32 hrgn ) { HBRUSH32 prevBrush = SelectObject32( hdc, GetStockObject32(BLACK_BRUSH) ); INT32 prevROP = SetROP232( hdc, R2_NOT ); @@ -467,7 +477,7 @@ /*********************************************************************** * DrawFocusRect16 (USER.466) */ -void DrawFocusRect16( HDC16 hdc, const RECT16* rc ) +void WINAPI DrawFocusRect16( HDC16 hdc, const RECT16* rc ) { RECT32 rect32; CONV_RECT16TO32( rc, &rect32 ); @@ -480,7 +490,7 @@ * * FIXME: PatBlt(PATINVERT) with background brush. */ -void DrawFocusRect32( HDC32 hdc, const RECT32* rc ) +void WINAPI DrawFocusRect32( HDC32 hdc, const RECT32* rc ) { HPEN32 hOldPen; INT32 oldDrawMode, oldBkMode; @@ -515,7 +525,7 @@ /********************************************************************** * Polyline16 (GDI.37) */ -BOOL16 Polyline16( HDC16 hdc, LPPOINT16 pt, INT16 count ) +BOOL16 WINAPI Polyline16( HDC16 hdc, LPPOINT16 pt, INT16 count ) { register int i; LPPOINT32 pt32 = (LPPOINT32)xmalloc(count*sizeof(POINT32)); @@ -531,7 +541,7 @@ /********************************************************************** * Polyline32 (GDI32.276) */ -BOOL32 Polyline32( HDC32 hdc, const LPPOINT32 pt, INT32 count ) +BOOL32 WINAPI Polyline32( HDC32 hdc, const LPPOINT32 pt, INT32 count ) { DC * dc = DC_GetDCPtr( hdc ); @@ -543,7 +553,7 @@ /********************************************************************** * Polygon16 (GDI.36) */ -BOOL16 Polygon16( HDC16 hdc, LPPOINT16 pt, INT16 count ) +BOOL16 WINAPI Polygon16( HDC16 hdc, LPPOINT16 pt, INT16 count ) { register int i; LPPOINT32 pt32 = (LPPOINT32)xmalloc(count*sizeof(POINT32)); @@ -560,7 +570,7 @@ /********************************************************************** * Polygon32 (GDI32.275) */ -BOOL32 Polygon32( HDC32 hdc, LPPOINT32 pt, INT32 count ) +BOOL32 WINAPI Polygon32( HDC32 hdc, LPPOINT32 pt, INT32 count ) { DC * dc = DC_GetDCPtr( hdc ); @@ -572,7 +582,8 @@ /********************************************************************** * PolyPolygon16 (GDI.450) */ -BOOL16 PolyPolygon16( HDC16 hdc, LPPOINT16 pt, LPINT16 counts, UINT16 polygons) +BOOL16 WINAPI PolyPolygon16( HDC16 hdc, LPPOINT16 pt, LPINT16 counts, + UINT16 polygons ) { int i,nrpts; LPPOINT32 pt32; @@ -597,7 +608,8 @@ /********************************************************************** * PolyPolygon32 (GDI.450) */ -BOOL32 PolyPolygon32( HDC32 hdc, LPPOINT32 pt, LPINT32 counts, UINT32 polygons) +BOOL32 WINAPI PolyPolygon32( HDC32 hdc, LPPOINT32 pt, LPINT32 counts, + UINT32 polygons ) { DC * dc = DC_GetDCPtr( hdc ); @@ -608,8 +620,8 @@ /********************************************************************** * ExtFloodFill16 (GDI.372) */ -BOOL16 ExtFloodFill16( HDC16 hdc, INT16 x, INT16 y, COLORREF color, - UINT16 fillType ) +BOOL16 WINAPI ExtFloodFill16( HDC16 hdc, INT16 x, INT16 y, COLORREF color, + UINT16 fillType ) { return ExtFloodFill32( hdc, x, y, color, fillType ); } @@ -618,8 +630,8 @@ /********************************************************************** * ExtFloodFill32 (GDI32.96) */ -BOOL32 ExtFloodFill32( HDC32 hdc, INT32 x, INT32 y, COLORREF color, - UINT32 fillType ) +BOOL32 WINAPI ExtFloodFill32( HDC32 hdc, INT32 x, INT32 y, COLORREF color, + UINT32 fillType ) { DC *dc = DC_GetDCPtr( hdc ); @@ -631,7 +643,7 @@ /********************************************************************** * FloodFill16 (GDI.25) */ -BOOL16 FloodFill16( HDC16 hdc, INT16 x, INT16 y, COLORREF color ) +BOOL16 WINAPI FloodFill16( HDC16 hdc, INT16 x, INT16 y, COLORREF color ) { return ExtFloodFill32( hdc, x, y, color, FLOODFILLBORDER ); } @@ -640,7 +652,7 @@ /********************************************************************** * FloodFill32 (GDI32.104) */ -BOOL32 FloodFill32( HDC32 hdc, INT32 x, INT32 y, COLORREF color ) +BOOL32 WINAPI FloodFill32( HDC32 hdc, INT32 x, INT32 y, COLORREF color ) { return ExtFloodFill32( hdc, x, y, color, FLOODFILLBORDER ); } @@ -649,7 +661,7 @@ /********************************************************************** * DrawEdge16 (USER.659) */ -BOOL16 DrawEdge16( HDC16 hdc, LPRECT16 rc, UINT16 edge, UINT16 flags ) +BOOL16 WINAPI DrawEdge16( HDC16 hdc, LPRECT16 rc, UINT16 edge, UINT16 flags ) { RECT32 rect32; BOOL32 ret; @@ -664,7 +676,7 @@ /********************************************************************** * DrawEdge32 (USER32.154) */ -BOOL32 DrawEdge32( HDC32 hdc, LPRECT32 rc, UINT32 edge, UINT32 flags ) +BOOL32 WINAPI DrawEdge32( HDC32 hdc, LPRECT32 rc, UINT32 edge, UINT32 flags ) { HBRUSH32 hbrushOld; @@ -747,7 +759,8 @@ /********************************************************************** * DrawFrameControl16 (USER.656) */ -BOOL16 DrawFrameControl16( HDC16 hdc, LPRECT16 rc, UINT16 uType, UINT16 uState ) +BOOL16 WINAPI DrawFrameControl16( HDC16 hdc, LPRECT16 rc, UINT16 uType, + UINT16 uState ) { fprintf( stdnimp,"DrawFrameControl16(%x,%p,%d,%x), empty stub!\n", hdc,rc,uType,uState ); @@ -758,7 +771,8 @@ /********************************************************************** * DrawFrameControl32 (USER32.157) */ -BOOL32 DrawFrameControl32( HDC32 hdc, LPRECT32 rc, UINT32 uType, UINT32 uState ) +BOOL32 WINAPI DrawFrameControl32( HDC32 hdc, LPRECT32 rc, UINT32 uType, + UINT32 uState ) { fprintf( stdnimp,"DrawFrameControl32(%x,%p,%d,%x), empty stub!\n", hdc,rc,uType,uState ); @@ -768,10 +782,22 @@ /********************************************************************** * DrawFrameControl32 (USER32.152) */ -BOOL32 DrawAnimatedRects32( HWND32 hwnd, int idAni, - const LPRECT32 lprcFrom, const LPRECT32 lprcTo ) +BOOL32 WINAPI DrawAnimatedRects32( HWND32 hwnd, int idAni, + const LPRECT32 lprcFrom, + const LPRECT32 lprcTo ) { fprintf( stdnimp,"DrawAnimatedRects32(%x,%d,%p,%p), empty stub!\n", hwnd, idAni, lprcFrom, lprcTo ); return TRUE; } + +BOOL32 WINAPI DrawState32A( + HDC32 hdc,HBRUSH32 hbrush,DRAWSTATEPROC drawstateproc, + LPARAM lparam,WPARAM32 wparam,INT32 x,INT32 y,INT32 z,INT32 a,UINT32 b +) { + fprintf(stderr,"DrawStateA(%x,%x,%p,0x%08lx,0x%08lx,%d,%d,%d,%d,%d),stub\n", + hdc,hbrush,drawstateproc,lparam,wparam,x,y,z,a,b + ); + return TRUE; +} +
diff --git a/graphics/win16drv/init.c b/graphics/win16drv/init.c index 9fc2086..4611105 100644 --- a/graphics/win16drv/init.c +++ b/graphics/win16drv/init.c
@@ -173,8 +173,9 @@ * 1) Just count the number of fonts available. * 2) Store all font data passed. */ -WORD WineEnumDFontCallback(LPLOGFONT16 lpLogFont, LPTEXTMETRIC16 lpTextMetrics, - WORD wFontType, LONG lpvClientData) +WORD WINAPI WineEnumDFontCallback(LPLOGFONT16 lpLogFont, + LPTEXTMETRIC16 lpTextMetrics, + WORD wFontType, LONG lpvClientData) { int wRet = 0; WEPFC *pWEPFC = (WEPFC *)lpvClientData; @@ -325,6 +326,12 @@ (void *)&wepfc); numFonts = wepfc.nCount; } + else + { + /* If the number of fonts returned are zero we can not continue */ + fprintf( stderr, "No fonts? Aborting CreateDC...\n"); + return FALSE; + } } } @@ -476,20 +483,17 @@ static struct hpq *hpqueue; -HPQ -CreatePQ(int size) +HPQ WINAPI CreatePQ(int size) { printf("CreatePQ: %d\n",size); return 1; } -int -DeletePQ(HPQ hPQ) +int WINAPI DeletePQ(HPQ hPQ) { printf("DeletePQ: %x\n", hPQ); return 0; } -int -ExtractPQ(HPQ hPQ) +int WINAPI ExtractPQ(HPQ hPQ) { struct hpq *queue, *prev, *current, *currentPrev; int key = 0, tag = -1; @@ -527,8 +531,7 @@ return tag; } -int -InsertPQ(HPQ hPQ, int tag, int key) +int WINAPI InsertPQ(HPQ hPQ, int tag, int key) { struct hpq *queueItem = malloc(sizeof(struct hpq)); queueItem->next = hpqueue; @@ -539,14 +542,12 @@ printf("InsertPQ: %x %d %d\n", hPQ, tag, key); return TRUE; } -int -MinPQ(HPQ hPQ) +int WINAPI MinPQ(HPQ hPQ) { printf("MinPQ: %x\n", hPQ); return 0; } -int -SizePQ(HPQ hPQ, int sizechange) +int WINAPI SizePQ(HPQ hPQ, int sizechange) { printf("SizePQ: %x %d\n", hPQ, sizechange); return -1; @@ -656,7 +657,7 @@ return nRet; } -HANDLE16 OpenJob(LPSTR lpOutput, LPSTR lpTitle, HDC16 hDC) +HANDLE16 WINAPI OpenJob(LPSTR lpOutput, LPSTR lpTitle, HDC16 hDC) { HANDLE16 hHandle = SP_ERROR; PPRINTJOB pPrintJob; @@ -690,7 +691,7 @@ return hHandle; } -int CloseJob(HANDLE16 hJob) +int WINAPI CloseJob(HANDLE16 hJob) { int nRet = SP_ERROR; PPRINTJOB pPrintJob = NULL; @@ -708,7 +709,7 @@ return nRet; } -int WriteSpool(HANDLE16 hJob, LPSTR lpData, WORD cch) +int WINAPI WriteSpool(HANDLE16 hJob, LPSTR lpData, WORD cch) { int nRet = SP_ERROR; PPRINTJOB pPrintJob = NULL; @@ -726,7 +727,7 @@ return nRet; } -int WriteDialog(HANDLE16 hJob, LPSTR lpMsg, WORD cchMsg) +int WINAPI WriteDialog(HANDLE16 hJob, LPSTR lpMsg, WORD cchMsg) { int nRet = 0; @@ -736,7 +737,7 @@ return nRet; } -int DeleteJob(HANDLE16 hJob, WORD wNotUsed) +int WINAPI DeleteJob(HANDLE16 hJob, WORD wNotUsed) { int nRet; @@ -751,20 +752,20 @@ * when it has been processed. For simplicity they havn't been implemented. * This means a whole job has to be processed before it is sent to the printer. */ -int StartSpoolPage(HANDLE16 hJob) +int WINAPI StartSpoolPage(HANDLE16 hJob) { dprintf_win16drv(stddeb, "StartSpoolPage GDI.246 unimplemented\n"); return 1; } -int EndSpoolPage(HANDLE16 hJob) +int WINAPI EndSpoolPage(HANDLE16 hJob) { dprintf_win16drv(stddeb, "EndSpoolPage GDI.247 unimplemented\n"); return 1; } -DWORD GetSpoolJob(int nOption, LONG param) +DWORD WINAPI GetSpoolJob(int nOption, LONG param) { DWORD retval = 0; dprintf_win16drv(stddeb, "In GetSpoolJob param 0x%lx noption %d\n",param, nOption);
diff --git a/graphics/win16drv/objects.c b/graphics/win16drv/objects.c index c865790..ee54724 100644 --- a/graphics/win16drv/objects.c +++ b/graphics/win16drv/objects.c
@@ -24,11 +24,12 @@ /*********************************************************************** - * X11DRV_SelectObject + * WIN16DRV_SelectObject */ HGDIOBJ32 WIN16DRV_SelectObject( DC *dc, HGDIOBJ32 handle ) { GDIOBJHDR *ptr = GDI_GetObjPtr( handle, MAGIC_DONTCARE ); + HGDIOBJ32 ret = 0; if (!ptr) return 0; dprintf_gdi(stddeb, "SelectObject: hdc=%04x %04x\n", dc->hSelf, handle ); @@ -37,17 +38,17 @@ { case PEN_MAGIC: fprintf(stderr, "WIN16DRV_SelectObject for PEN not implemented\n"); - return 0; case BRUSH_MAGIC: fprintf(stderr, "WIN16DRV_SelectObject for BRUSH not implemented\n"); - return 0; case BITMAP_MAGIC: fprintf(stderr, "WIN16DRV_SelectObject for BITMAP not implemented\n"); - return 0; case FONT_MAGIC: - return WIN16DRV_FONT_SelectObject( dc, handle, (FONTOBJ *)ptr ); + ret = WIN16DRV_FONT_SelectObject( dc, handle, (FONTOBJ *)ptr ); + break; case REGION_MAGIC: - return (HGDIOBJ16)SelectClipRgn16( dc->hSelf, handle ); + ret = (HGDIOBJ16)SelectClipRgn16( dc->hSelf, handle ); + break; } - return 0; + GDI_HEAP_UNLOCK( handle ); + return ret; }
diff --git a/graphics/wing.c b/graphics/wing.c index 90321e5..58be554 100644 --- a/graphics/wing.c +++ b/graphics/wing.c
@@ -66,7 +66,7 @@ /*********************************************************************** * WinGCreateDC16 (WING.1001) */ -HDC16 WinGCreateDC16(void) +HDC16 WINAPI WinGCreateDC16(void) { __initWinG(); @@ -78,7 +78,7 @@ /*********************************************************************** * WinGRecommendDIBFormat16 (WING.1002) */ -BOOL16 WinGRecommendDIBFormat16(BITMAPINFO *fmt) +BOOL16 WINAPI WinGRecommendDIBFormat16(BITMAPINFO *fmt) { fprintf(stdnimp,"WinGRecommendDIBFormat()\n"); @@ -93,7 +93,8 @@ /*********************************************************************** * WinGCreateBitmap16 (WING.1003) */ -HBITMAP16 WinGCreateBitmap16(HDC16 winDC, BITMAPINFO *header, void **bits) +HBITMAP16 WINAPI WinGCreateBitmap16(HDC16 winDC, BITMAPINFO *header, + void **bits) { fprintf(stdnimp,"WinGCreateBitmap: empty stub! (expect failure)\n"); if( __WinGOK > 0 && header ) @@ -126,7 +127,7 @@ if (hbitmap) { __ShmBitmapCtl* p = (__ShmBitmapCtl*)xmalloc(sizeof(__ShmBitmapCtl)); - BITMAPOBJ* bmpObjPtr = (BITMAPOBJ *) GDI_HEAP_LIN_ADDR( hbitmap ); + BITMAPOBJ* bmpObjPtr = (BITMAPOBJ *) GDI_HEAP_LOCK( hbitmap ); bmpObjPtr->size.cx = 0; bmpObjPtr->size.cy = 0; @@ -170,6 +171,7 @@ hbitmap = 0; } } + GDI_HEAP_UNLOCK( hbitmap ); return hbitmap; } } @@ -181,7 +183,7 @@ /*********************************************************************** * WinGGetDIBPointer (WING.1004) */ -SEGPTR WinGGetDIBPointer16(HBITMAP16 hWinGBitmap, BITMAPINFO* bmpi) +SEGPTR WINAPI WinGGetDIBPointer16(HBITMAP16 hWinGBitmap, BITMAPINFO* bmpi) { #ifdef PRELIMINARY_WING16_SUPPORT BITMAPOBJ* bmp = (BITMAPOBJ *) GDI_GetObjPtr( hWinGBitmap, BITMAP_MAGIC ); @@ -192,6 +194,7 @@ if( p ) { if( bmpi ) memcpy( bmpi, &__bmpiWinG, sizeof(BITMAPINFOHEADER)); + GDI_HEAP_UNLOCK( hWinGBitmap ); return p->bits; } } @@ -202,7 +205,8 @@ /*********************************************************************** * WinGSetDIBColorTable (WING.1004) */ -UINT16 WinGSetDIBColorTable16(HDC16 hWinGDC, UINT16 start, UINT16 num, RGBQUAD* pColor) +UINT16 WINAPI WinGSetDIBColorTable16(HDC16 hWinGDC, UINT16 start, UINT16 num, + RGBQUAD* pColor) { fprintf(stdnimp,"WinGSetDIBColorTable: empty stub!\n"); return num; @@ -211,8 +215,8 @@ /*********************************************************************** * WinGGetDIBColorTable16 (WING.1005) */ -UINT16 WinGGetDIBColorTable16(HDC16 winDC, UINT16 start, UINT16 numentry, - RGBQUAD* colors) +UINT16 WINAPI WinGGetDIBColorTable16(HDC16 winDC, UINT16 start, + UINT16 numentry, RGBQUAD* colors) { fprintf(stdnimp,"WinGGetDIBColorTable: empty stub!\n"); return 0; @@ -221,7 +225,7 @@ /*********************************************************************** * WinGCreateHalfTonePalette16 (WING.1007) */ -HPALETTE16 WinGCreateHalfTonePalette16(void) +HPALETTE16 WINAPI WinGCreateHalfTonePalette16(void) { fprintf(stdnimp,"WinGCreateHalfTonePalette: empty stub!\n"); return 0; @@ -230,7 +234,8 @@ /*********************************************************************** * WinGCreateHalfToneBrush16 (WING.1008) */ -HPALETTE16 WinGCreateHalfToneBrush16(HDC16 winDC, COLORREF col, WING_DITHER_TYPE type) +HPALETTE16 WINAPI WinGCreateHalfToneBrush16(HDC16 winDC, COLORREF col, + WING_DITHER_TYPE type) { fprintf(stdnimp,"WinGCreateHalfToneBrush: empty stub!\n"); return 0; @@ -239,9 +244,10 @@ /*********************************************************************** * WinGStretchBlt16 (WING.1009) */ -BOOL16 WinGStretchBlt16(HDC16 destDC, INT16 xDest, INT16 yDest, INT16 widDest, - INT16 heiDest, HDC16 srcDC, INT16 xSrc, INT16 ySrc, - INT16 widSrc, INT16 heiSrc) +BOOL16 WINAPI WinGStretchBlt16(HDC16 destDC, INT16 xDest, INT16 yDest, + INT16 widDest, INT16 heiDest, + HDC16 srcDC, INT16 xSrc, INT16 ySrc, + INT16 widSrc, INT16 heiSrc) { return StretchBlt16(destDC, xDest, yDest, widDest, heiDest, srcDC, xSrc, ySrc, widSrc, heiSrc, SRCCOPY); @@ -252,8 +258,9 @@ /*********************************************************************** * WinGBitBlt16 (WING.1010) */ -BOOL16 WinGBitBlt16(HDC16 destDC, INT16 xDest, INT16 yDest, INT16 widDest, - INT16 heiDest, HDC16 srcDC, INT16 xSrc, INT16 ySrc) +BOOL16 WINAPI WinGBitBlt16(HDC16 destDC, INT16 xDest, INT16 yDest, + INT16 widDest, INT16 heiDest, HDC16 srcDC, + INT16 xSrc, INT16 ySrc) { /* destDC is a display DC, srcDC is a memory DC */
diff --git a/graphics/x11drv/bitblt.c b/graphics/x11drv/bitblt.c index 1fbd3c5..a497ce2 100644 --- a/graphics/x11drv/bitblt.c +++ b/graphics/x11drv/bitblt.c
@@ -1341,6 +1341,34 @@ return TRUE; } +struct StretchBlt_params +{ + DC *dcDst; + INT32 xDst; + INT32 yDst; + INT32 widthDst; + INT32 heightDst; + DC *dcSrc; + INT32 xSrc; + INT32 ySrc; + INT32 widthSrc; + INT32 heightSrc; + DWORD rop; +}; + +/*********************************************************************** + * BITBLT_DoStretchBlt + * + * Wrapper function for BITBLT_InternalStretchBlt + * to use with CALL_LARGE_STACK. + */ +static int BITBLT_DoStretchBlt( const struct StretchBlt_params *p ) +{ + return (int)BITBLT_InternalStretchBlt( p->dcDst, p->xDst, p->yDst, + p->widthDst, p->heightDst, + p->dcSrc, p->xSrc, p->ySrc, + p->widthSrc, p->heightSrc, p->rop ); +} /*********************************************************************** * X11DRV_PatBlt @@ -1348,9 +1376,9 @@ BOOL32 X11DRV_PatBlt( DC *dc, INT32 left, INT32 top, INT32 width, INT32 height, DWORD rop ) { - return CallTo32_LargeStack( (int(*)())BITBLT_InternalStretchBlt, 11, - dc, left, top, width, height, - NULL, 0, 0, 0, 0, rop ); + struct StretchBlt_params params = { dc, left, top, width, height, + NULL, 0, 0, 0, 0, rop }; + return (BOOL32)CALL_LARGE_STACK( BITBLT_DoStretchBlt, ¶ms ); } @@ -1361,9 +1389,9 @@ INT32 width, INT32 height, DC *dcSrc, INT32 xSrc, INT32 ySrc, DWORD rop ) { - return CallTo32_LargeStack( (int(*)())BITBLT_InternalStretchBlt, 11, - dcDst, xDst, yDst, width, height, - dcSrc, xSrc, ySrc, width, height, rop ); + struct StretchBlt_params params = { dcDst, xDst, yDst, width, height, + dcSrc, xSrc, ySrc, width, height, rop}; + return (BOOL32)CALL_LARGE_STACK( BITBLT_DoStretchBlt, ¶ms ); } @@ -1375,7 +1403,8 @@ DC *dcSrc, INT32 xSrc, INT32 ySrc, INT32 widthSrc, INT32 heightSrc, DWORD rop ) { - return CallTo32_LargeStack( (int(*)())BITBLT_InternalStretchBlt, 11, - dcDst, xDst, yDst, widthDst, heightDst, - dcSrc, xSrc, ySrc, widthSrc, heightSrc, rop ); + struct StretchBlt_params params = { dcDst, xDst, yDst, widthDst, heightDst, + dcSrc, xSrc, ySrc, widthSrc, heightSrc, + rop }; + return (BOOL32)CALL_LARGE_STACK( BITBLT_DoStretchBlt, ¶ms ); }
diff --git a/graphics/x11drv/brush.c b/graphics/x11drv/brush.c index 1fe88da..a162ad7 100644 --- a/graphics/x11drv/brush.c +++ b/graphics/x11drv/brush.c
@@ -179,6 +179,7 @@ dc->u.x.brush.fillStyle = FillOpaqueStippled; dc->u.x.brush.pixel = -1; /* Special case (see DC_SetupGCForBrush) */ } + GDI_HEAP_UNLOCK( hbitmap ); return TRUE; }
diff --git a/graphics/x11drv/clipping.c b/graphics/x11drv/clipping.c index ddc9183..7645e68 100644 --- a/graphics/x11drv/clipping.c +++ b/graphics/x11drv/clipping.c
@@ -31,4 +31,5 @@ { XSetClipRectangles( display, dc->u.x.gc, 0, 0, NULL, 0, 0 ); } + GDI_HEAP_UNLOCK( dc->w.hGCClipRgn ); }
diff --git a/graphics/x11drv/graphics.c b/graphics/x11drv/graphics.c index 2619425..ec80312 100644 --- a/graphics/x11drv/graphics.c +++ b/graphics/x11drv/graphics.c
@@ -631,16 +631,29 @@ * * Main flood-fill routine. */ -static BOOL32 X11DRV_DoFloodFill( DC *dc, RECT32 *rect, INT32 x, INT32 y, - COLORREF color, UINT32 fillType ) + +struct FloodFill_params +{ + DC *dc; + INT32 x; + INT32 y; + COLORREF color; + UINT32 fillType; +}; + +static BOOL32 X11DRV_DoFloodFill( const struct FloodFill_params *params ) { XImage *image; + RECT32 rect; + DC *dc = params->dc; + + if (GetRgnBox32( dc->w.hGCClipRgn, &rect ) == ERROR) return FALSE; if (!(image = XGetImage( display, dc->u.x.drawable, - dc->w.DCOrgX + rect->left, - dc->w.DCOrgY + rect->top, - rect->right - rect->left, - rect->bottom - rect->top, + dc->w.DCOrgX + rect.left, + dc->w.DCOrgY + rect.top, + rect.right - rect.left, + rect.bottom - rect.top, AllPlanes, ZPixmap ))) return FALSE; if (DC_SetupGCForBrush( dc )) @@ -648,11 +661,12 @@ /* ROP mode is always GXcopy for flood-fill */ XSetFunction( display, dc->u.x.gc, GXcopy ); X11DRV_InternalFloodFill(image, dc, - XLPTODP(dc,x) - rect->left, - YLPTODP(dc,y) - rect->top, - dc->w.DCOrgX + rect->left, - dc->w.DCOrgY + rect->top, - COLOR_ToPhysical( dc, color ), fillType ); + XLPTODP(dc,params->x) - rect.left, + YLPTODP(dc,params->y) - rect.top, + dc->w.DCOrgX + rect.left, + dc->w.DCOrgY + rect.top, + COLOR_ToPhysical( dc, params->color ), + params->fillType ); } XDestroyImage( image ); @@ -667,15 +681,11 @@ X11DRV_ExtFloodFill( DC *dc, INT32 x, INT32 y, COLORREF color, UINT32 fillType ) { - RECT32 rect; - HDC32 hdc = dc->hSelf; /* FIXME */ + struct FloodFill_params params = { dc, x, y, color, fillType }; dprintf_graphics( stddeb, "X11DRV_ExtFloodFill %d,%d %06lx %d\n", x, y, color, fillType ); - if (!PtVisible32( hdc, x, y )) return FALSE; - if (GetRgnBox32( dc->w.hGCClipRgn, &rect ) == ERROR) return FALSE; - - return CallTo32_LargeStack( (int(*)())X11DRV_DoFloodFill, 6, - dc, &rect, x, y, color, fillType ); + if (!PtVisible32( dc->hSelf, x, y )) return FALSE; + return CALL_LARGE_STACK( X11DRV_DoFloodFill, ¶ms ); }
diff --git a/graphics/x11drv/init.c b/graphics/x11drv/init.c index 0d7496f..6cfd5a1 100644 --- a/graphics/x11drv/init.c +++ b/graphics/x11drv/init.c
@@ -136,6 +136,8 @@ X11DRV_DevCaps.rasterCaps |= RC_PALETTE; X11DRV_DevCaps.sizePalette = DefaultVisual(display,DefaultScreen(display))->map_entries; } + + /* Resolution will be adjusted during the font init */ X11DRV_DevCaps.logPixelsX = (int)(X11DRV_DevCaps.horzRes * 25.4 / X11DRV_DevCaps.horzSize); X11DRV_DevCaps.logPixelsY = (int)(X11DRV_DevCaps.vertRes * 25.4 / X11DRV_DevCaps.vertSize); @@ -177,6 +179,7 @@ dc->w.bitsPerPixel = bmp->bitmap.bmBitsPixel; dc->w.hVisRgn = CreateRectRgn32( 0, 0, bmp->bitmap.bmWidth, bmp->bitmap.bmHeight ); + GDI_HEAP_UNLOCK( dc->w.hBitmap ); } else {
diff --git a/graphics/x11drv/objects.c b/graphics/x11drv/objects.c index fb2f0b8..c665b07 100644 --- a/graphics/x11drv/objects.c +++ b/graphics/x11drv/objects.c
@@ -29,6 +29,7 @@ HGDIOBJ32 X11DRV_SelectObject( DC *dc, HGDIOBJ32 handle ) { GDIOBJHDR *ptr = GDI_GetObjPtr( handle, MAGIC_DONTCARE ); + HGDIOBJ32 ret = 0; if (!ptr) return 0; dprintf_gdi(stddeb, "SelectObject: hdc=%04x %04x\n", dc->hSelf, handle ); @@ -36,15 +37,21 @@ switch(ptr->wMagic) { case PEN_MAGIC: - return X11DRV_PEN_SelectObject( dc, handle, (PENOBJ *)ptr ); + ret = X11DRV_PEN_SelectObject( dc, handle, (PENOBJ *)ptr ); + break; case BRUSH_MAGIC: - return X11DRV_BRUSH_SelectObject( dc, handle, (BRUSHOBJ *)ptr ); + ret = X11DRV_BRUSH_SelectObject( dc, handle, (BRUSHOBJ *)ptr ); + break; case BITMAP_MAGIC: - return X11DRV_BITMAP_SelectObject( dc, handle, (BITMAPOBJ *)ptr ); + ret = X11DRV_BITMAP_SelectObject( dc, handle, (BITMAPOBJ *)ptr ); + break; case FONT_MAGIC: - return X11DRV_FONT_SelectObject( dc, handle, (FONTOBJ *)ptr ); + ret = X11DRV_FONT_SelectObject( dc, handle, (FONTOBJ *)ptr ); + break; case REGION_MAGIC: - return (HGDIOBJ16)SelectClipRgn16( dc->hSelf, handle ); + ret = (HGDIOBJ16)SelectClipRgn16( dc->hSelf, handle ); + break; } - return 0; + GDI_HEAP_UNLOCK( handle ); + return ret; }
diff --git a/graphics/x11drv/xfont.c b/graphics/x11drv/xfont.c index f12d89f..4b112e2 100644 --- a/graphics/x11drv/xfont.c +++ b/graphics/x11drv/xfont.c
@@ -48,11 +48,44 @@ struct __fontAlias* next; } fontAlias; +typedef struct +{ + LPSTR fatResource; + LPSTR fatAlias; +} aliasTemplate; + +/* Font alias table - these 2 aliases are always present */ + static fontAlias aliasTable[2] = { { "Helvetica", "Helv", &aliasTable[1] }, { "Times", "Tms Rmn", NULL } }; +/* Optional built-in aliases, they are installed only when X + * cannot supply us with original MS fonts */ + +static int faTemplateNum = 4; +static aliasTemplate faTemplate[4] = { + { "-adobe-helvetica-", "MS Sans Serif" }, + { "-bitstream-charter-", "MS Serif" }, + { "-adobe-times-", "Times New Roman" }, + { "-adobe-helvetica-", "Arial" } + }; + +/* Charset translation table, cp125-.. encoded fonts are produced by + * the fnt2bdf */ + +static int numCPTranslation = 8; +static BYTE CPTranslation[] = { EE_CHARSET, /* cp125-0 */ + RUSSIAN_CHARSET, /* cp125-1 */ + ANSI_CHARSET, /* cp125-2 */ + GREEK_CHARSET, /* cp125-3 */ + TURKISH_CHARSET, /* cp125-4 */ + HEBREW_CHARSET, /* cp125-5 */ + ARABIC_CHARSET, /* cp125-6 */ + BALTIC_CHARSET /* cp125-7 */ + }; + UINT16 XTextCaps = TC_OP_CHARACTER | TC_OP_STROKE | TC_CP_STROKE | TC_SA_DOUBLE | TC_SA_INTEGER | TC_SA_CONTIN | TC_UA_ABLE | TC_SO_ABLE | TC_RA_ABLE; @@ -64,14 +97,17 @@ static const char* INIFontSection = "fonts"; static const char* INISubSection = "Alias"; static const char* INIDefault = "Default"; +static const char* INIResolution = "Resolution"; +static const char* INIGlobalMetrics = "FontMetrics"; static const char* LFDSeparator = "*-"; +static const char* localMSEncoding = "cp125-"; static const char* iso8859Encoding = "iso8859-"; static const char* iso646Encoding = "iso646.1991-"; static const char* ansiEncoding = "ansi-"; -static fontResource* fontList = NULL; static unsigned DefResolution = 0; +static fontResource* fontList = NULL; static fontObject* fontCache = NULL; /* array */ static int fontCacheSize = FONTCACHE; static int fontLF = -1, fontMRU = -1; /* last free, most recently used */ @@ -317,28 +353,32 @@ *(lpch - 1) = LFDSeparator[1]; /* charset registry, charset encoding - */ - if( strstr(lpch, "jisx") || strstr(lpch, "ksc") ) return FALSE; /* 2-byte stuff */ + if( strstr(lpch, "jisx") || + strstr(lpch, "ksc") || + strstr(lpch, "gb2312") ) return FALSE; /* 2-byte stuff */ + fi->df.dfCharSet = ANSI_CHARSET; if( strstr(lpch, iso8859Encoding) ) - { fi->fi_flags |= FI_ENC_ISO8859; - fi->df.dfCharSet = ANSI_CHARSET; - } else if( strstr(lpch, iso646Encoding) ) - { fi->fi_flags |= FI_ENC_ISO646; - fi->df.dfCharSet = ANSI_CHARSET; - } - else if( strstr(lpch, ansiEncoding) ) /* font2bdf produces -ansi-0 LFD */ - { + else if( strstr(lpch, ansiEncoding) ) /* fnt2bdf produces -ansi-0 LFD */ fi->fi_flags |= FI_ENC_ANSI; - fi->df.dfCharSet = ANSI_CHARSET; + else /* ... and -cp125-x */ + { + fi->df.dfCharSet = OEM_CHARSET; + if( !strncasecmp(lpch, localMSEncoding, 6) ) + { + lpch = LFD_Advance( lpch, 1 ); + if( lpch && (i = atoi( lpch )) < numCPTranslation ) + { + fi->fi_flags |= FI_ENC_MSCODEPAGE; + fi->df.dfCharSet = CPTranslation[i]; + } + } + else if( strstr(lpch, "fontspecific") ) + fi->df.dfCharSet = SYMBOL_CHARSET; } - else if( strstr(lpch, "fontspecific") ) - fi->df.dfCharSet = SYMBOL_CHARSET; - else - fi->df.dfCharSet = OEM_CHARSET; /* FIXME: -cp126-.. from fnt2bdf */ - return TRUE; } @@ -348,7 +388,7 @@ static BOOL32 LFD_ComposeLFD( fontObject* fo, INT32 height, LPSTR lpLFD, UINT32 uRelax ) { - int h, w, ch, point = 0; + int h, w, ch, enc_ch, point = 0; char* lpch; const char* lpEncoding = NULL; @@ -400,9 +440,12 @@ if( fo->fo_flags & FO_SYNTH_HEIGHT ) h = fo->fi->lfd_height; else h = (fo->fi->lfd_height * height) / fo->fi->df.dfPixHeight; - if( fo->lf.lfWidth && (XTextCaps & TC_SF_X_YINDEP) - && !(fo->fo_flags & FO_SYNTH_WIDTH) ) - point = (fo->fi->lfd_decipoints * fo->lf.lfWidth) / fo->fi->df.dfAvgWidth; + if( XTextCaps & TC_SF_X_YINDEP ) + if( fo->lf.lfWidth && !(fo->fo_flags & FO_SYNTH_WIDTH) ) + point = (fo->fi->lfd_decipoints * fo->lf.lfWidth) / fo->fi->df.dfAvgWidth; + else + if( fo->fi->fi_flags & FI_SCALABLE ) /* adjust h/w ratio */ + point = h * 72 * 10 / fo->fi->lfd_resolution; /* spacing and width */ @@ -411,16 +454,35 @@ else w = ( fo->fi->fi_flags & FI_VARIABLEPITCH ) ? 'p' : LFDSeparator[0]; -/* encoding, not quite there yet */ +/* encoding */ + enc_ch = '*'; if( fo->fi->df.dfCharSet == ANSI_CHARSET ) { if( fo->fi->fi_flags & FI_ENC_ISO8859 ) lpEncoding = iso8859Encoding; else if( fo->fi->fi_flags & FI_ENC_ISO646 ) lpEncoding = iso646Encoding; + else if( fo->fi->fi_flags & FI_ENC_MSCODEPAGE ) + { + enc_ch = '2'; + lpEncoding = localMSEncoding; + } else lpEncoding = ansiEncoding; - } else lpEncoding = LFDSeparator; + } + else if( fo->fi->fi_flags & FI_ENC_MSCODEPAGE ) + { + int i; + + lpEncoding = localMSEncoding; + for( i = 0; i < numCPTranslation; i++ ) + if( CPTranslation[i] == fo->fi->df.dfCharSet ) + { + enc_ch = '0' + i; + break; + } + } + else lpEncoding = LFDSeparator; /* whatever */ lpch = lpLFD + lstrlen32A(lpLFD); ch = (fo->fi->fi_flags & FI_SCALABLE) ? '0' : LFDSeparator[0]; @@ -433,20 +495,20 @@ case 0: if( point ) { - sprintf( lpch, "%i-%i-%i-%c-%c-*-%s*", h, point, - fo->fi->lfd_resolution, ch, w, lpEncoding ); + sprintf( lpch, "%i-%i-%i-%c-%c-*-%s%c", h, point, + fo->fi->lfd_resolution, ch, w, lpEncoding, enc_ch ); break; } /* fall through */ case 1: - sprintf( lpch, "%i-*-%i-%c-%c-*-%s*", h, - fo->fi->lfd_resolution, ch, w, lpEncoding ); + sprintf( lpch, "%i-*-%i-%c-%c-*-%s%c", h, + fo->fi->lfd_resolution, ch, w, lpEncoding, enc_ch ); break; case 2: - sprintf( lpch, "%i-*-%i-%c-*-*-%s*", - h, fo->fi->lfd_resolution, ch, lpEncoding ); + sprintf( lpch, "%i-*-%i-%c-*-*-%s%c", + h, fo->fi->lfd_resolution, ch, lpEncoding, enc_ch ); break; case 3: @@ -668,7 +730,8 @@ return FF_SWISS; break; case 'c': - case 'C': if(!lstrcmpi32A(lfFaceName, "Courier") ) + case 'C': if(!lstrcmpi32A(lfFaceName, "Courier") || + !lstrcmpi32A(lfFaceName, "Charter") ) return FF_ROMAN; break; case 'p': @@ -692,6 +755,18 @@ /*********************************************************************** + * XFONT_CheckResourceName + */ +static BOOL32 XFONT_CheckResourceName( LPSTR resource, LPCSTR name, INT32 n ) +{ + resource = LFD_Advance( resource, 2 ); + if( resource ) + return (!lstrncmpi32A( resource, name, n )); + return FALSE; +} + + +/*********************************************************************** * XFONT_WindowsNames * * Build generic Windows aliases for X font names. @@ -711,17 +786,13 @@ if( fr->fr_flags & FR_NAMESET ) continue; /* skip already assigned */ lpstr = LFD_Advance(fr->resource, 2); - i = lpstr - LFD_Advance( lpstr, 1 ); + i = LFD_Advance( lpstr, 1 ) - lpstr; for( pfr = fontList; pfr != fr ; pfr = pfr->next ) if( pfr->fr_flags & FR_NAMESET ) - { - lpch = LFD_Advance(pfr->resource, 2); + if( XFONT_CheckResourceName( pfr->resource, lpstr, i ) ) + break; - /* check if already have the same face name */ - - if( !lstrncmp32A(lpch, lpstr, i) ) break; - } if( pfr != fr ) /* prepend vendor name */ lpstr = fr->resource + 1; @@ -781,10 +852,24 @@ */ static fontAlias* XFONT_CreateAlias( LPCSTR lpTypeFace, LPCSTR lpAlias ) { + int j; fontAlias* pfa = aliasTable; - int j = lstrlen32A(lpTypeFace) + 1; - while( pfa->next ) pfa = pfa->next; + while( 1 ) + { + /* check if we already got one */ + if( !lstrcmpi32A( pfa->faTypeFace, lpAlias ) ) + { +#ifdef DEBUG_FONT_INIT + dprintf_font(stddeb,"\tredundant alias '%s' -> '%s'\n", lpAlias, lpTypeFace ); +#endif + return NULL; + } + if( pfa->next ) pfa = pfa->next; + else break; + } + + j = lstrlen32A(lpTypeFace) + 1; pfa->next = HeapAlloc( SystemHeap, 0, sizeof(fontAlias) + j + lstrlen32A(lpAlias) + 1 ); if((pfa = pfa->next)) @@ -814,54 +899,79 @@ * Alias0 = Arial, -adobe-helvetica- * Alias1 = Times New Roman, -bitstream-courier-, 1 * ... + * + * Note that from 081797 and on we have built-in alias templates that take + * care of the necessary Windows typefaces. */ static void XFONT_LoadAliases( char** buffer, int buf_size ) { + char* lpResource, *lpAlias; char subsection[32]; - int i = 0; + int i = 0, j = 0; + BOOL32 bHaveAlias = TRUE, bSubst = FALSE; if( buf_size < 128 ) *buffer = HeapReAlloc(SystemHeap, 0, *buffer, 256 ); do { - wsprintf32A( subsection, "%s%i", INISubSection, i++ ); - - if( PROFILE_GetWineIniString( INIFontSection, subsection, "", *buffer, 128 ) ) + if( j < faTemplateNum ) { - char* lpchX, *lpchW = *buffer; + /* built-in templates first */ - while( isspace(*lpchW) ) lpchW++; - lpchX = PROFILE_GetStringItem( lpchW ); + lpResource = faTemplate[j].fatResource; + lpAlias = faTemplate[j].fatAlias; + j++; + } + else + { + /* then WINE.CONF */ - if( lpchX ) + wsprintf32A( subsection, "%s%i", INISubSection, i++ ); + + if( (bHaveAlias = PROFILE_GetWineIniString( INIFontSection, + subsection, "", *buffer, 128 )) ) { - fontResource* fr; + lpAlias = *buffer; + while( isspace(*lpAlias) ) lpAlias++; + lpResource = PROFILE_GetStringItem( lpAlias ); + bSubst = (PROFILE_GetStringItem( lpResource )) ? TRUE : FALSE; + } + } + + if( bHaveAlias ) + { + int length; + + length = lstrlen32A( lpAlias ); + if( lpResource && length ) + { + fontResource* fr, *frMatch = NULL; for (fr = fontList; fr ; fr = fr->next) { - int j; - - j = lstrlen32A( fr->resource ); - - if( !lstrncmpi32A( fr->resource, lpchX, j) ) + if( !lstrcmpi32A( fr->resource, lpResource ) ) frMatch = fr; + if( XFONT_CheckResourceName( fr->resource, lpAlias, length ) ) { - char* lpch = PROFILE_GetStringItem( lpchX ); + /* alias is not needed since the real font is present */ + frMatch = NULL; break; + } + } - if( lpch ) - { + if( frMatch ) + { + if( bSubst ) + { #ifdef DEBUG_FONT_INIT - dprintf_font(stddeb, "\tsubstituted '%s' with %s\n", - fr->lfFaceName, lpchW ); + dprintf_font(stddeb, "\tsubstituted '%s' with %s\n", + frMatch->lfFaceName, lpAlias ); #endif - lstrcpyn32A( fr->lfFaceName, lpchW, LF_FACESIZE ); - fr->fr_flags |= FR_NAMESET; - } - else - { - /* create new entry in the alias table */ - XFONT_CreateAlias(fr->lfFaceName, lpchW); - } - break; + lstrcpyn32A( frMatch->lfFaceName, lpAlias, LF_FACESIZE ); + frMatch->fr_flags |= FR_NAMESET; + } + else + { + /* create new entry in the alias table */ + XFONT_CreateAlias( frMatch->lfFaceName, lpAlias ); } } } @@ -883,8 +993,10 @@ pwd = getpwuid(getuid()); if( pwd && pwd->pw_dir ) { - int i = lstrlen32A( pwd->pw_dir ) + lstrlen32A( INIWinePrefix ) + lstrlen32A( INIFontMetrics ) + 2; - if( i > *buf_size ) buffer = (char*) HeapReAlloc( SystemHeap, 0, buffer, *buf_size = i ); + int i = lstrlen32A( pwd->pw_dir ) + lstrlen32A( INIWinePrefix ) + + lstrlen32A( INIFontMetrics ) + 2; + if( i > *buf_size ) + buffer = (char*) HeapReAlloc( SystemHeap, 0, buffer, *buf_size = i ); lstrcpy32A( buffer, pwd->pw_dir ); strcat( buffer, INIWinePrefix ); strcat( buffer, INIFontMetrics ); @@ -896,7 +1008,7 @@ /*********************************************************************** * XFONT_ReadCachedMetrics */ -static BOOL32 XFONT_ReadCachedMetrics( int fd, unsigned x_checksum, int x_count ) +static BOOL32 XFONT_ReadCachedMetrics( int fd, int res, unsigned x_checksum, int x_count ) { if( fd >= 0 ) { @@ -938,6 +1050,9 @@ (int)(pfi->next) != j++ ) goto fail; pfi->df.dfFace = pfr->lfFaceName; + pfi->df.dfHorizRes = pfi->df.dfVertRes = res; + pfi->df.dfPoints = (INT16)(((INT32)(pfi->df.dfPixHeight - + pfi->df.dfInternalLeading) * 72) / res ); pfi->next = pfi + 1; if( j > pfr->count ) break; @@ -1059,6 +1174,108 @@ } /*********************************************************************** + * XFONT_CheckIniSection + * + * Examines wine.conf for old/invalid font entries and recommend changes to + * the user. + * + * Revision history + * 05-Jul-1997 Dave Cuthbert (dacut@ece.cmu.edu) + * Original implementation. + */ +static void XFONT_CheckIniCallback(char const *, char const *, void *); + +static char const *fontmsgprologue = +"Wine warning:\n" +" The following entries in the [fonts] section of the wine.conf file are\n" +" obsolete or invalid:\n"; + +static char const *fontmsgepilogue = +" These entries should be eliminated or updated.\n" +" See the documentation/fonts file for more information.\n"; + +static int XFONT_CheckIniSection() +{ + int found = 0; + + PROFILE_EnumerateWineIniSection("Fonts", &XFONT_CheckIniCallback, + (void *)&found); + if(found) + fprintf(stderr, fontmsgepilogue); + + return 1; +} + +static void XFONT_CheckIniCallback( + char const *key, + char const *value, + void *found) +{ + /* Ignore any keys that start with potential comment characters "'", '#', + or ';'. */ + if(key[0] == '\'' || key[0] == '#' || key[0] == ';' || key[0] == '\0') + return; + + /* Make sure this is a valid key */ + if((strncasecmp(key, INISubSection, 5) == 0) || + (strcasecmp(key, INIDefault) == 0) || + (strcasecmp(key, INIGlobalMetrics) == 0) || + (strcasecmp(key, INIResolution) == 0) ) + { + /* Valid key; make sure the value doesn't contain a wildcard */ + if(strchr(value, '*')) { + if(*(int *)found == 0) { + fprintf(stderr, fontmsgprologue); + ++*(int *)found; + } + + fprintf(stderr, " %s=%s [no wildcards allowed]\n", key, value); + } + } + else { + /* Not a valid key */ + if(*(int *)found == 0) { + fprintf(stderr, fontmsgprologue); + ++*(int *)found; + } + + fprintf(stderr, " %s=%s [obsolete]\n", key, value); + } + + return; +} + +/*********************************************************************** + * XFONT_GetPointResolution() + * + * Here we initialize DefResolution which is used in the + * XFONT_Match() penalty function. We also load the point + * resolution value (higher values result in larger fonts). + */ +static int XFONT_GetPointResolution( DeviceCaps* pDevCaps ) +{ + int i, j, point_resolution, num = 3; + int allowed_xfont_resolutions[3] = { 72, 75, 100 }; + int best = 0, best_diff = 65536; + + DefResolution = point_resolution = PROFILE_GetWineIniInt( INIFontSection, INIResolution, 0 ); + if( !DefResolution ) DefResolution = point_resolution = pDevCaps->logPixelsY; + else pDevCaps->logPixelsX = pDevCaps->logPixelsY = DefResolution; + + for( i = best = 0; i < num; i++ ) + { + j = abs( DefResolution - allowed_xfont_resolutions[i] ); + if( j < best_diff ) + { + best = i; + best_diff = j; + } + } + DefResolution = allowed_xfont_resolutions[best]; + return point_resolution; +} + +/*********************************************************************** * X11DRV_FONT_Init * * Initialize font resource list and allocate font cache. @@ -1069,24 +1286,18 @@ fontResource* fr, *pfr; fontInfo* fi, *pfi; unsigned x_checksum; - int i, j, k, x_count, fd = -1, buf_size = 0; + int i, j, res, x_count, fd = -1, buf_size = 0; char* lpstr, *lpch, *lpmetrics, *buffer; char** x_pattern; - DefResolution = PROFILE_GetWineIniInt( INIFontSection, "Resolution", 0 ); - if( !DefResolution ) DefResolution = pDevCaps->logPixelsY; + XFONT_CheckIniSection(); - i = abs(DefResolution - 72); - j = abs(DefResolution - 75); - k = abs(DefResolution - 100); - - if( i < j ) DefResolution = ( i < k ) ? 72 : 100; - else DefResolution = ( j < k ) ? 75 : 100; + res = XFONT_GetPointResolution( pDevCaps ); x_pattern = XListFonts(display, "*", MAX_FONT_FAMILIES * 16, &x_count ); - dprintf_font(stddeb,"Font Mapper: initializing %i fonts [LPY=%i, DR=%i]\n", - x_count, pDevCaps->logPixelsY, DefResolution); + dprintf_font(stddeb,"Font Mapper: initializing %i fonts [LPY=%i, XDR=%i, DR=%i]\n", + x_count, pDevCaps->logPixelsY, DefResolution, res); for( i = x_checksum = 0; i < x_count; i++ ) { #if 0 @@ -1104,17 +1315,17 @@ /* deal with systemwide font metrics cache */ - if( PROFILE_GetWineIniString( INIFontSection, "FontMetrics", "", buffer, 128 ) ) + if( PROFILE_GetWineIniString( INIFontSection, INIGlobalMetrics, "", buffer, 128 ) ) fd = open( buffer, O_RDONLY ); - if( XFONT_ReadCachedMetrics(fd, x_checksum, x_count) == FALSE ) + if( XFONT_ReadCachedMetrics(fd, res, x_checksum, x_count) == FALSE ) { /* try per-user */ buffer = XFONT_UserMetricsCache( buffer, &buf_size ); if( buffer[0] ) { fd = open( buffer, O_RDONLY ); - if( XFONT_ReadCachedMetrics(fd, x_checksum, x_count) == FALSE ) + if( XFONT_ReadCachedMetrics(fd, res, x_checksum, x_count) == FALSE ) lpmetrics = HEAP_strdupA( SystemHeap, 0, buffer ); /* update later on */ } } @@ -1196,8 +1407,7 @@ if( (x_fs = XLoadQueryFont(display, lpstr)) ) { - fi->df.dfHorizRes = pDevCaps->logPixelsX; - fi->df.dfVertRes = pDevCaps->logPixelsY; + fi->df.dfHorizRes = fi->df.dfVertRes = res; XFONT_SetFontMetric( fi, fr, x_fs ); XFreeFont( display, x_fs ); @@ -1301,7 +1511,7 @@ * weight, italics, underlines, strikeouts * * NOTE: you can experiment with different penalty weights to see what happens. - * http://premium.microsoft.com/msdn/library/techart/f30/f34/f40/d4d/sa8bf.htm + * http://premium.microsoft.com/msdn/library/techart/f365/f36b/f37b/d38b/sa8bf.htm */ static UINT32 XFONT_Match( fontMatch* pfm ) { @@ -1354,7 +1564,7 @@ else /* expand only in integer multiples */ { pfm->height = height - height%pfi->df.dfPixHeight; - penalty += (height - pfm->height) * pfm->height / height; + penalty += (height - pfm->height + 1) * height / pfi->df.dfPixHeight; } } else /* can't be scaled at all */ @@ -1432,18 +1642,6 @@ } /*********************************************************************** - * XFONT_CheckAliasTable - */ -static LPSTR XFONT_CheckAliasTable( LPSTR lpAlias ) -{ - fontAlias* fa; - - for( fa = aliasTable; fa; fa = fa->next ) - if( !lstrcmpi32A( fa->faAlias, lpAlias ) ) return fa->faTypeFace; - return NULL; -} - -/*********************************************************************** * XFONT_CheckFIList * * REMOVE_SUBSETS - attach new fi and purge subsets @@ -1515,9 +1713,17 @@ fontMatch fm = *pfm; pfm->pfi = NULL; - if( fm.plf->lfFaceName[0] ) + if( fm.plf->lfFaceName[0] ) { - LPSTR str = XFONT_CheckAliasTable( fm.plf->lfFaceName ); + fontAlias* fa; + LPSTR str = NULL; + + for( fa = aliasTable; fa; fa = fa->next ) + if( !lstrcmpi32A( fa->faAlias, fm.plf->lfFaceName ) ) + { + str = fa->faTypeFace; + break; + } fm.pfr = XFONT_FindFIList( start, str ? str : fm.plf->lfFaceName ); } @@ -1827,11 +2033,17 @@ HFONT32 X11DRV_FONT_SelectObject( DC* dc, HFONT32 hfont, FONTOBJ* font ) { HFONT32 hPrevFont = 0; + LOGFONT16 lf; if( CHECK_PFONT(dc->u.x.font) ) XFONT_ReleaseCacheEntry( __PFONT(dc->u.x.font) ); - dc->u.x.font = XFONT_RealizeFont( &font->logfont ); + /* FIXME: do we need to pass anything back from here? */ + memcpy(&lf,&font->logfont,sizeof(lf)); + lf.lfWidth = font->logfont.lfWidth * dc->vportExtX/dc->wndExtX; + lf.lfHeight = font->logfont.lfHeight* dc->vportExtY/dc->wndExtY; + + dc->u.x.font = XFONT_RealizeFont( &lf ); hPrevFont = dc->w.hFont; dc->w.hFont = hfont; @@ -1966,7 +2178,7 @@ * the pfr->resource field) with FR_SOFTFONT/FR_SOFTRESOURCE * flag set. */ -INT16 AddFontResource16( LPCSTR filename ) +INT16 WINAPI AddFontResource16( LPCSTR filename ) { return AddFontResource32A( filename ); } @@ -1975,7 +2187,7 @@ /*********************************************************************** * AddFontResource32A (GDI32.2) */ -INT32 AddFontResource32A( LPCSTR str ) +INT32 WINAPI AddFontResource32A( LPCSTR str ) { if (HIWORD(str)) /* font file */ fprintf( stdnimp, "STUB: AddFontResource('%s')\n", str ); @@ -1988,7 +2200,7 @@ /*********************************************************************** * AddFontResource32W (GDI32.4) */ -INT32 AddFontResource32W( LPCWSTR str ) +INT32 WINAPI AddFontResource32W( LPCWSTR str ) { fprintf( stdnimp, "STUB: AddFontResource32W(%p)\n", str ); return 1; @@ -1997,7 +2209,7 @@ /*********************************************************************** * RemoveFontResource16 (GDI.136) */ -BOOL16 RemoveFontResource16( SEGPTR str ) +BOOL16 WINAPI RemoveFontResource16( SEGPTR str ) { if (HIWORD(str)) fprintf( stdnimp, "STUB: RemoveFontResource('%s')\n", @@ -2011,7 +2223,7 @@ /*********************************************************************** * RemoveFontResource32A (GDI32.284) */ -BOOL32 RemoveFontResource32A( LPCSTR str ) +BOOL32 WINAPI RemoveFontResource32A( LPCSTR str ) { if (HIWORD(str)) fprintf( stdnimp, "STUB: RemoveFontResource('%s')\n", str ); @@ -2024,7 +2236,7 @@ /*********************************************************************** * RemoveFontResource32W (GDI32.286) */ -BOOL32 RemoveFontResource32W( LPCWSTR str ) +BOOL32 WINAPI RemoveFontResource32W( LPCWSTR str ) { fprintf( stdnimp, "STUB: RemoveFontResource32W(%p)\n", str ); return TRUE;
diff --git a/if1632/builtin.c b/if1632/builtin.c index ebe48ad..6cc4527 100644 --- a/if1632/builtin.c +++ b/if1632/builtin.c
@@ -154,7 +154,7 @@ { &GDI32_Descriptor, 0 }, { &KERNEL32_Descriptor, DLL_FLAG_ALWAYS_USED }, { &LZ32_Descriptor, 0 }, - { &MPR_Descriptor, 0 }, + { &MPR_Descriptor, DLL_FLAG_NOT_USED }, { &NTDLL_Descriptor, 0 }, { &SHELL32_Descriptor, 0 }, { &USER32_Descriptor, 0 },
diff --git a/if1632/comctl32.spec b/if1632/comctl32.spec index be6c101..d2f1efa 100644 --- a/if1632/comctl32.spec +++ b/if1632/comctl32.spec
@@ -20,7 +20,7 @@ 11 stub MakeDragList 12 stub LBItemFromPt 13 stub DrawInsert -14 stub CreateUpDownControl +14 stdcall CreateUpDownControl(long long long long long long long long long long long long) CreateUpDownControl 15 stdcall InitCommonControls() InitCommonControls 16 stub CreateStatusWindow 17 stub CreateStatusWindowW
diff --git a/if1632/crtdll.spec b/if1632/crtdll.spec index 42a8805..5a61f97 100644 --- a/if1632/crtdll.spec +++ b/if1632/crtdll.spec
@@ -131,7 +131,7 @@ 126 stub _getpid 127 stub _getsystime 128 stub _getw -129 stub _global_unwind2 +129 register _global_unwind2(ptr) CRTDLL__global_unwind2 130 stub _heapchk 131 stub _heapmin 132 stub _heapset @@ -175,7 +175,7 @@ 170 stub _kbhit 171 stub _lfind 172 stub _loaddll -173 stub _local_unwind2 +173 register _local_unwind2(ptr long) CRTDLL__local_unwind2 174 stub _locking 175 stub _logb 176 stub _lrotl @@ -461,7 +461,7 @@ 456 cdecl sin(long) CRTDLL_sin 457 cdecl sinh(long) CRTDLL_sinh 458 cdecl sprintf() CRTDLL_sprintf -459 cdecl sqrt(long) CRTDLL_sqrt +459 cdecl sqrt(long long) CRTDLL_sqrt 460 cdecl srand(long) CRTDLL_srand 461 cdecl sscanf() CRTDLL_sscanf 462 cdecl strcat(ptr ptr) strcat
diff --git a/if1632/dummy.c b/if1632/dummy.c index abc792e..dbf23c8 100644 --- a/if1632/dummy.c +++ b/if1632/dummy.c
@@ -1,47 +1,49 @@ #include <stdio.h> -long stub_GDI_379(void) { fprintf(stderr, "Warning: GDI_379:STARTPAGE unimplemented stub\n"); return 1; } -long stub_GDI_380(void) { fprintf(stderr, "Warning: GDI_380:ENDPAGE unimplemented stub\n"); return 1; } -long stub_GDI_381(void) { fprintf(stderr, "Warning: GDI_381:SETABORTPROC unimplemented stub\n"); return 1; } -long stub_GDI_382(void) { fprintf(stderr, "Warning: GDI_382:ABORTPROC unimplemented stub\n"); return 1; } -long stub_GDI_530(void) { fprintf(stderr, "Warning: GDI_530: unimplemented stub\n"); return 0; } -long stub_GDI_531(void) { fprintf(stderr, "Warning: GDI_531: unimplemented stub\n"); return 0; } -long stub_GDI_532(void) { fprintf(stderr, "Warning: GDI_532: unimplemented stub\n"); return 0; } -long stub_GDI_536(void) { fprintf(stderr, "Warning: GDI_536: unimplemented stub\n"); return 0; } -long stub_GDI_538(void) { fprintf(stderr, "Warning: GDI_538: unimplemented stub\n"); return 0; } -long stub_GDI_540(void) { fprintf(stderr, "Warning: GDI_540: unimplemented stub\n"); return 0; } -long stub_GDI_543(void) { fprintf(stderr, "Warning: GDI_543: unimplemented stub\n"); return 0; } -long stub_GDI_555(void) { fprintf(stderr, "Warning: GDI_555: unimplemented stub\n"); return 0; } -long stub_GDI_560(void) { fprintf(stderr, "Warning: GDI_560: unimplemented stub\n"); return 0; } -long stub_GDI_561(void) { fprintf(stderr, "Warning: GDI_561: unimplemented stub\n"); return 0; } -long stub_GDI_564(void) { fprintf(stderr, "Warning: GDI_564: unimplemented stub\n"); return 0; } -long stub_GDI_565(void) { fprintf(stderr, "Warning: GDI_565: unimplemented stub\n"); return 0; } -long stub_GDI_566(void) { fprintf(stderr, "Warning: GDI_566: unimplemented stub\n"); return 0; } -long stub_GDI_571(void) { fprintf(stderr, "Warning: GDI_571: unimplemented stub\n"); return 0; } -long stub_GDI_572(void) { fprintf(stderr, "Warning: GDI_572: unimplemented stub\n"); return 0; } -long stub_GDI_573(void) { fprintf(stderr, "Warning: GDI_573: unimplemented stub\n"); return 0; } -long stub_GDI_556(void) { fprintf(stderr, "Warning: GDI_556: unimplemented stub\n"); return 0; } -long stub_GDI_558(void) { fprintf(stderr, "Warning: GDI_558: unimplemented stub\n"); return 0; } -long stub_GDI_569(void) { fprintf(stderr, "Warning: GDI_569: unimplemented stub\n"); return 0; } -long stub_KERNEL_450(void) { fprintf(stderr, "Warning: KERNEL_450: unimplemented stub\n"); return 0; } -long stub_USER_489(void) { fprintf(stderr, "Warning: USER_489: unimplemented stub\n"); return 0; } -long stub_USER_490(void) { fprintf(stderr, "Warning: USER_490: unimplemented stub\n"); return 0; } -long stub_USER_492(void) { fprintf(stderr, "Warning: USER_492: unimplemented stub\n"); return 0; } -long stub_USER_496(void) { fprintf(stderr, "Warning: USER_496: unimplemented stub\n"); return 0; } -long stub_USER_902(void) { fprintf(stderr, "Warning: USER_902: unimplemented stub\n"); return 0; } -long stub_USER_905(void) { fprintf(stderr, "Warning: USER_905: unimplemented stub\n"); return 0; } -long stub_USER_906(void) { fprintf(stderr, "Warning: USER_906: unimplemented stub\n"); return 0; } -long stub_USER_907(void) { fprintf(stderr, "Warning: USER_907: unimplemented stub\n"); return 0; } -long stub_USER_909(void) { fprintf(stderr, "Warning: USER_909: unimplemented stub\n"); return 0; } -long stub_USER_910(void) { fprintf(stderr, "Warning: USER_910: unimplemented stub\n"); return 0; } -long stub_USER_911(void) { fprintf(stderr, "Warning: USER_911: unimplemented stub\n"); return 0; } -long stub_USER_912(void) { fprintf(stderr, "Warning: USER_912: unimplemented stub\n"); return 0; } -long stub_USER_913(void) { fprintf(stderr, "Warning: USER_913: unimplemented stub\n"); return 0; } -long stub_USER_914(void) { fprintf(stderr, "Warning: USER_914: unimplemented stub\n"); return 0; } -long stub_USER_915(void) { fprintf(stderr, "Warning: USER_915: unimplemented stub\n"); return 0; } -long stub_USER_916(void) { fprintf(stderr, "Warning: USER_916: unimplemented stub\n"); return 0; } -long stub_USER_918(void) { fprintf(stderr, "Warning: USER_918: unimplemented stub\n"); return 0; } -long stub_USER_919(void) { fprintf(stderr, "Warning: USER_919: unimplemented stub\n"); return 0; } -long stub_USER_920(void) { fprintf(stderr, "Warning: USER_920: unimplemented stub\n"); return 0; } -long stub_USER_922(void) { fprintf(stderr, "Warning: USER_922: unimplemented stub\n"); return 0; } -long stub_USER_923(void) { fprintf(stderr, "Warning: USER_923: unimplemented stub\n"); return 0; } -long stub_KERNEL_700(void) { fprintf(stderr, "Warning: KERNEL_700: unimplemented stub\n"); return 1; } +#include "wintypes.h" +long WINAPI stub_GDI_379(void) { fprintf(stderr, "Warning: GDI_379:STARTPAGE unimplemented stub\n"); return 1; } +long WINAPI stub_GDI_380(void) { fprintf(stderr, "Warning: GDI_380:ENDPAGE unimplemented stub\n"); return 1; } +long WINAPI stub_GDI_381(void) { fprintf(stderr, "Warning: GDI_381:SETABORTPROC unimplemented stub\n"); return 1; } +long WINAPI stub_GDI_382(void) { fprintf(stderr, "Warning: GDI_382:ABORTPROC unimplemented stub\n"); return 1; } +long WINAPI stub_GDI_530(void) { fprintf(stderr, "Warning: GDI_530: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_531(void) { fprintf(stderr, "Warning: GDI_531: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_532(void) { fprintf(stderr, "Warning: GDI_532: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_536(void) { fprintf(stderr, "Warning: GDI_536: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_538(void) { fprintf(stderr, "Warning: GDI_538: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_540(void) { fprintf(stderr, "Warning: GDI_540: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_543(void) { fprintf(stderr, "Warning: GDI_543: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_555(void) { fprintf(stderr, "Warning: GDI_555: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_560(void) { fprintf(stderr, "Warning: GDI_560: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_561(void) { fprintf(stderr, "Warning: GDI_561: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_564(void) { fprintf(stderr, "Warning: GDI_564: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_565(void) { fprintf(stderr, "Warning: GDI_565: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_566(void) { fprintf(stderr, "Warning: GDI_566: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_571(void) { fprintf(stderr, "Warning: GDI_571: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_572(void) { fprintf(stderr, "Warning: GDI_572: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_573(void) { fprintf(stderr, "Warning: GDI_573: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_556(void) { fprintf(stderr, "Warning: GDI_556: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_558(void) { fprintf(stderr, "Warning: GDI_558: unimplemented stub\n"); return 0; } +long WINAPI stub_GDI_569(void) { fprintf(stderr, "Warning: GDI_569: unimplemented stub\n"); return 0; } +long WINAPI stub_KERNEL_450(void) { fprintf(stderr, "Warning: KERNEL_450: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_489(void) { fprintf(stderr, "Warning: USER_489: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_490(void) { fprintf(stderr, "Warning: USER_490: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_492(void) { fprintf(stderr, "Warning: USER_492: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_496(void) { fprintf(stderr, "Warning: USER_496: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_902(void) { fprintf(stderr, "Warning: USER_902: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_905(void) { fprintf(stderr, "Warning: USER_905: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_906(void) { fprintf(stderr, "Warning: USER_906: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_907(void) { fprintf(stderr, "Warning: USER_907: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_909(void) { fprintf(stderr, "Warning: USER_909: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_910(void) { fprintf(stderr, "Warning: USER_910: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_911(void) { fprintf(stderr, "Warning: USER_911: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_912(void) { fprintf(stderr, "Warning: USER_912: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_913(void) { fprintf(stderr, "Warning: USER_913: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_914(void) { fprintf(stderr, "Warning: USER_914: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_915(void) { fprintf(stderr, "Warning: USER_915: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_916(void) { fprintf(stderr, "Warning: USER_916: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_918(void) { fprintf(stderr, "Warning: USER_918: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_919(void) { fprintf(stderr, "Warning: USER_919: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_920(void) { fprintf(stderr, "Warning: USER_920: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_922(void) { fprintf(stderr, "Warning: USER_922: unimplemented stub\n"); return 0; } +long WINAPI stub_USER_923(void) { fprintf(stderr, "Warning: USER_923: unimplemented stub\n"); return 0; } +long WINAPI stub_KERNEL_700(void) { fprintf(stderr, "Warning: KERNEL_700: unimplemented stub\n"); return 1; } +long WINAPI stub_KERNEL_449(void) { fprintf(stderr, "Warning: KERNEL_449: unimplemented stub\n"); return 0; }
diff --git a/if1632/gdi.spec b/if1632/gdi.spec index e407b44..1b0f157 100644 --- a/if1632/gdi.spec +++ b/if1632/gdi.spec
@@ -314,7 +314,7 @@ ScaleViewportExtEx16 485 pascal16 ScaleWindowExtEx(word s_word s_word s_word s_word ptr) ScaleWindowExtEx16 -486 stub GETASPECTRATIOFILTEREX +486 pascal16 GetAspectRatioFilterEx(word ptr) GetAspectRatioFilterEx16 489 stub CreateDIBSection 490 stub CloseEnhMetafile 491 stub CopyEnhMetafile
diff --git a/if1632/gdi32.spec b/if1632/gdi32.spec index 5cf890a..fd5c543 100644 --- a/if1632/gdi32.spec +++ b/if1632/gdi32.spec
@@ -391,7 +391,7 @@ 0379 stub GdiWinWatchOpen 0380 stub GetGlyphOutlineWow 0381 stub GetTextCharsetInfo -0382 stub TranslateCharsetInfo +0382 stdcall TranslateCharsetInfo(ptr ptr long) TranslateCharSetInfo 0383 stub UpdateICMRegKeyA 0384 stub UpdateICMRegKeyW 0385 stub gdiPlaySpoolStream
diff --git a/if1632/kernel.spec b/if1632/kernel.spec index 39a6b41..e17ff9c 100644 --- a/if1632/kernel.spec +++ b/if1632/kernel.spec
@@ -243,6 +243,7 @@ 318 stub FatalExitHook 319 stub FlushCachedFileHandle 320 pascal16 IsTask(word) IsTask +321 stub KERNEL_321 323 return IsRomModule 2 0 324 pascal16 LogError(word ptr) LogError 325 pascal16 LogParamError(word ptr ptr) LogParamError @@ -304,7 +305,7 @@ 445 stub KERNEL_445 446 stub KERNEL_446 447 stub KERNEL_447 -449 stub KERNEL_449 +449 pascal KERNEL_449() stub_KERNEL_449 450 pascal16 KERNEL_450() stub_KERNEL_450 454 stub KERNEL_454 455 stub KERNEL_455 @@ -321,7 +322,7 @@ 513 pascal LoadLibraryEx32W(ptr long long) LoadLibraryEx32W16 514 pascal16 FreeLibrary32W(long) FreeLibrary32 515 pascal GetProcAddress32W(long ptr) GetProcAddress32 -516 stub GetVDMPointer32W +516 pascal GetVDMPointer32W(segptr long) GetVDMPointer32W 517 pascal CallProc32W() WIN16_CallProc32W 518 stub CallProcEx32W 519 stub KERNEL_519 @@ -334,7 +335,7 @@ 612 stub KERNEL_612 613 stub KERNEL_613 614 stub KERNEL_614 -619 stub KERNEL_619 +619 pascal KERNEL_619(word long long) _KERNEL_619 621 stub KERNEL_621 627 stub IsBadFlatReadWritePtr 630 stub KERNEL_630
diff --git a/if1632/kernel32.spec b/if1632/kernel32.spec index b858d62..695a564 100644 --- a/if1632/kernel32.spec +++ b/if1632/kernel32.spec
@@ -35,7 +35,7 @@ 40 stdcall _KERNEL32_41(long long long long long) _KERNEL32_41 41 stub _KERNEL32_42 42 stdcall _KERNEL32_43(long ptr long ptr ptr) _KERNEL32_43 -44 register _KERNEL32_45(long) _KERNEL32_45 +44 register _KERNEL32_45() _KERNEL32_45 45 stdcall _KERNEL32_46(long long long long long) _KERNEL32_46 46 stub _KERNEL32_47 @@ -44,7 +44,7 @@ 51 register _KERNEL32_52(long) _KERNEL32_52 # WOW calls -53 stub WOWCallback16 +53 stdcall WOWCallback16(long long) WOWCallback16 54 stub WOWCallback16Ex 55 stdcall WOWGetVDMPointer(long long long) WOWGetVDMPointer 56 stub WOWHandle32 @@ -53,7 +53,7 @@ 59 stub WOWGlobalLock16 60 stub WOWGlobalUnlock16 61 stub WOWGlobalFree16 -62 stub WOWGlobalAllocLock16 +62 stdcall WOWGlobalAllocLock16(long long ptr) WOWGlobalAllocLock16 63 stub WOWGlobalUnlockFree16 64 stub WOWGlobalLockSize16 65 stub WOWYield16 @@ -78,10 +78,10 @@ 84 stub RtlConvertUlongToLargeInteger 86 stdcall _KERNEL32_87() _KERNEL32_87 -87 cdecl _KERNEL32_88(long long ptr) _KERNEL32_88 +87 cdecl _KERNEL32_88() _KERNEL32_88 88 stub _KERNEL32_89 -89 stub _KERNEL32_90 -90 register _KERNEL32_91() _KERNEL32_91 +89 register _KERNEL32_90() _KERNEL32_90 +90 stub _KERNEL32_91 91 stub _KERNEL32_92 92 stdcall GETPWIN16LOCK(ptr) GetPWinLock 96 stub ENTERSYSLEVEL @@ -137,7 +137,7 @@ 144 stub ConnectNamedPipe 145 stdcall ContinueDebugEvent(long long long) ContinueDebugEvent 146 stub ConvertDefaultLocale -147 stub ConvertToGlobalHandle +147 stdcall ConvertToGlobalHandle(long) ConvertToGlobalHandle 148 stdcall CopyFileA(ptr ptr long) CopyFile32A 149 stdcall CopyFileW(ptr ptr long) CopyFile32W 150 stub CreateConsoleScreenBuffer @@ -285,6 +285,7 @@ 292 stdcall GetComputerNameA(ptr ptr) GetComputerName32A 293 stdcall GetComputerNameW(ptr ptr) GetComputerName32W 294 stdcall GetConsoleCP() GetConsoleCP +295 stub GetConsoleCursorInfo 296 stdcall GetConsoleMode(long ptr) GetConsoleMode 297 stdcall GetConsoleOutputCP() GetConsoleOutputCP 298 stdcall GetConsoleScreenBufferInfo(long ptr) GetConsoleScreenBufferInfo @@ -368,7 +369,7 @@ 376 stub GetProcessShutdownParameters 377 stdcall GetProcessTimes(long ptr ptr ptr ptr) GetProcessTimes 378 stdcall GetProcessVersion(long) GetProcessVersion -379 stub GetProcessWorkingSetSize +379 stdcall GetProcessWorkingSetSize(long ptr ptr) GetProcessWorkingSetSize 380 stub GetProductName 381 stdcall GetProfileIntA(ptr ptr long) GetProfileInt32A 382 stdcall GetProfileIntW(ptr ptr long) GetProfileInt32W @@ -407,7 +408,7 @@ 415 stdcall GetThreadContext(long ptr) GetThreadContext 416 stdcall GetThreadLocale() GetThreadLocale 417 stdcall GetThreadPriority(long) GetThreadPriority -418 stub GetThreadSelectorEntry +418 stdcall GetThreadSelectorEntry(long long ptr) GetThreadSelectorEntry 419 stub GetThreadTimes 420 stdcall GetTickCount() GetTickCount 421 stub GetTimeFormatA @@ -454,6 +455,7 @@ 462 stdcall HeapFree(long long ptr) HeapFree 463 stdcall HeapLock(long) HeapLock 464 stdcall HeapReAlloc(long long ptr long) HeapReAlloc +465 stub HeapSetFlags 466 stdcall HeapSize(long long ptr) HeapSize 467 stdcall HeapUnlock(long) HeapUnlock 468 stdcall HeapValidate(long long ptr) HeapValidate @@ -461,10 +463,10 @@ 470 stub InitAtomTable 471 stdcall InitializeCriticalSection(ptr) InitializeCriticalSection 472 stdcall InterlockedDecrement(ptr) InterlockedDecrement -473 stdcall InterlockedExchange(ptr) InterlockedExchange +473 stdcall InterlockedExchange(ptr long) InterlockedExchange 474 stdcall InterlockedIncrement(ptr) InterlockedIncrement 475 stub InvalidateNLSCache -476 stdcall IsBadCodePtr(ptr long) IsBadCodePtr32 +476 stdcall IsBadCodePtr(ptr) IsBadCodePtr32 477 stdcall IsBadHugeReadPtr(ptr long) IsBadHugeReadPtr32 478 stdcall IsBadHugeWritePtr(ptr long) IsBadHugeWritePtr32 479 stdcall IsBadReadPtr(ptr long) IsBadReadPtr32 @@ -483,7 +485,7 @@ 492 stub LCMapStringW 493 stdcall LeaveCriticalSection(ptr) LeaveCriticalSection 494 stdcall LoadLibraryA(ptr) LoadLibrary32A -495 stub LoadLibraryExA +495 stdcall LoadLibraryExA(ptr long long) LoadLibraryEx32A 496 stub LoadLibraryExW 497 stdcall LoadLibraryW(ptr) LoadLibrary32W 498 stub LoadModule @@ -510,9 +512,8 @@ 519 stub MapHModuleLS 520 stub MapHModuleSL 521 stdcall MapLS(ptr) MapLS -643 stdcall MapSL(long) MapSL +522 stdcall MapSL(long) MapSL 523 stub MapSLFix -522 stub MapSL 524 stdcall MapViewOfFile(long long long long long) MapViewOfFile 525 stdcall MapViewOfFileEx(long long long long long ptr) MapViewOfFileEx 526 stub Module32First @@ -523,6 +524,7 @@ 531 stdcall MoveFileW(ptr ptr) MoveFile32W 532 stdcall MulDiv(long long long) MulDiv32 533 stdcall MultiByteToWideChar(long long ptr long ptr long) MultiByteToWideChar +534 stub NotifyNLSUserCache 535 stdcall OpenEventA(long long ptr) OpenEvent32A 536 stdcall OpenEventW(long long ptr) OpenEvent32W 537 stdcall OpenFile(ptr ptr long) OpenFile32 @@ -546,7 +548,7 @@ 555 stub Process32Next 556 stub PulseEvent 557 stub PurgeComm -558 stub QT_Thunk +558 register QT_Thunk() QT_Thunk 559 stdcall QueryDosDeviceA(ptr ptr long) QueryDosDevice32A 560 stdcall QueryDosDeviceW(ptr ptr long) QueryDosDevice32W 561 stub QueryNumberOfEventLogRecords @@ -566,7 +568,7 @@ 575 stdcall ReadConsoleW(long ptr long ptr ptr) ReadConsole32W 576 stdcall ReadFile(long ptr long ptr ptr) ReadFile 577 stub ReadFileEx -578 stub ReadProcessMemory +578 stdcall ReadProcessMemory(long ptr ptr long ptr) ReadProcessMemory 579 stub RegisterServiceProcess 580 stdcall ReinitializeCriticalSection(ptr) ReinitializeCriticalSection 581 stdcall ReleaseMutex(long) ReleaseMutex @@ -579,16 +581,16 @@ 588 stdcall RtlMoveMemory(ptr ptr long) RtlMoveMemory 589 register RtlUnwind(ptr long ptr long) RtlUnwind 590 stdcall RtlZeroMemory(ptr long) RtlZeroMemory -591 stub SMapLS -592 stub SMapLS_IP_EBP_12 -593 stub SMapLS_IP_EBP_16 -594 stub SMapLS_IP_EBP_20 -595 stub SMapLS_IP_EBP_24 -596 stub SMapLS_IP_EBP_28 -597 stub SMapLS_IP_EBP_32 -598 stub SMapLS_IP_EBP_36 -599 stub SMapLS_IP_EBP_40 -600 stub SMapLS_IP_EBP_8 +591 register SMapLS() SMapLS +592 register SMapLS_IP_EBP_12() SMapLS_IP_EBP_12 +593 register SMapLS_IP_EBP_16() SMapLS_IP_EBP_16 +594 register SMapLS_IP_EBP_20() SMapLS_IP_EBP_20 +595 register SMapLS_IP_EBP_24() SMapLS_IP_EBP_24 +596 register SMapLS_IP_EBP_28() SMapLS_IP_EBP_28 +597 register SMapLS_IP_EBP_32() SMapLS_IP_EBP_32 +598 register SMapLS_IP_EBP_36() SMapLS_IP_EBP_36 +599 register SMapLS_IP_EBP_40() SMapLS_IP_EBP_40 +600 register SMapLS_IP_EBP_8() SMapLS_IP_EBP_8 601 stub SUnMapLS 602 stub SUnMapLS_IP_EBP_12 603 stub SUnMapLS_IP_EBP_16 @@ -648,8 +650,8 @@ 657 stub SetMailslotInfo 658 stub SetNamedPipeHandleState 659 stdcall SetPriorityClass(long long) SetPriorityClass -660 stub SetProcessShutdownParameters -661 stub SetProcessWorkingSetSize +660 stdcall SetProcessShutdownParameters(long long) SetProcessShutdownParameters +661 stdcall SetProcessWorkingSetSize(long long long) SetProcessWorkingSetSize 662 stdcall SetStdHandle(long long) SetStdHandle 663 stdcall SetSystemPowerState(long long) SetSystemPowerState 664 stdcall SetSystemTime(ptr) SetSystemTime @@ -672,11 +674,12 @@ 681 stdcall SystemTimeToFileTime(ptr ptr) SystemTimeToFileTime 682 stub SystemTimeToTzSpecificLocalTime 683 stub TerminateProcess -684 stub TerminateThread +684 stdcall TerminateThread(long long) TerminateThread 685 stub Thread32First 686 stub Thread32Next 687 stdcall ThunkConnect32(ptr ptr ptr ptr ptr ptr) ThunkConnect32 688 stdcall TlsAlloc() TlsAlloc +689 stub TlsAllocInternal 690 stdcall TlsFree(long) TlsFree 691 stub TlsFreeInternal 692 stdcall TlsGetValue(long) TlsGetValue @@ -710,7 +713,7 @@ 720 stub WaitForMultipleObjects 721 stub WaitForMultipleObjectsEx 722 stdcall WaitForSingleObject(long long) WaitForSingleObject -723 stub WaitForSingleObjectEx +723 stdcall WaitForSingleObjectEx(long long long) WaitForSingleObjectEx 724 stub WaitNamedPipeA 725 stub WaitNamedPipeW 726 stdcall WideCharToMultiByte(long long ptr long ptr long ptr ptr) WideCharToMultiByte @@ -798,8 +801,6 @@ 805 stub GetConsoleCommandHistoryLengthA 806 stub GetConsoleCommandHistoryLengthW 807 stub GetConsoleCommandHistoryW -808 stub GetConsoleCursorInfo -809 stub GetConsoleCursorInfo 810 stub GetConsoleDisplayMode 811 stub GetConsoleFontInfo 812 stub GetConsoleFontSize @@ -812,12 +813,10 @@ 819 stub HeapCreateTagsW 820 stub HeapExtend 821 stub HeapQueryTagW -822 stub HeapSetFlags 823 stub HeapSummary 824 stub HeapUsage 825 stub InvalidateConsoleDIBits 826 stub IsDebuggerPresent -827 stub NotifyNLSUserCache 828 stub OpenConsoleW 829 stub QueryWin31IniFilesMappedToRegistry 830 stub RegisterConsoleVDM
diff --git a/if1632/mmsystem.spec b/if1632/mmsystem.spec index 910f246..68b3a60 100644 --- a/if1632/mmsystem.spec +++ b/if1632/mmsystem.spec
@@ -42,6 +42,7 @@ 305 pascal MIDIINCLOSE(word) midiInClose 306 pascal MIDIINPREPAREHEADER(word segptr word) midiInPrepareHeader 307 pascal MIDIINUNPREPAREHEADER(word segptr word) midiInUnprepareHeader +308 pascal MIDIINADDBUFFER(word segptr word) midiInAddBuffer 309 pascal MIDIINSTART(word) midiInStart 310 pascal MIDIINSTOP(word) midiInStop 311 pascal MIDIINRESET(word) midiInReset
diff --git a/if1632/ntdll.spec b/if1632/ntdll.spec index eeee134..08d3941 100644 --- a/if1632/ntdll.spec +++ b/if1632/ntdll.spec
@@ -874,20 +874,20 @@ 870 stub _snwprintf 871 stub _splitpath 872 stub _strcmpi -873 stub _stricmp +873 stdcall _stricmp(ptr ptr) lstrcmpi32A 874 stub _strlwr 875 stub _strnicmp 876 stdcall _strupr(ptr) CRTDLL__strupr 877 stub _ultoa 878 stub _vsnprintf 879 stdcall _wcsicmp(ptr ptr) lstrcmpi32W -880 stub _wcslwr -881 stub _wcsnicmp -882 stub _wcsupr +880 stdcall _wcslwr(ptr) CRTDLL__wcslwr +881 stdcall _wcsnicmp(ptr ptr long) lstrncmpi32W +882 stdcall _wcsupr(ptr) CRTDLL__wcsupr 883 stub abs 884 stub atan 885 stdcall atoi(ptr) CRTDLL_atoi -886 stub atol +886 stdcall atol(ptr) CRTDLL_atol 887 stub ceil 888 stub cos 889 stub fabs @@ -917,10 +917,10 @@ 913 stdcall sscanf() CRTDLL_sscanf 914 stub strcat 915 stdcall strchr(ptr long) strchr -916 stub strcmp -917 stub strcpy +916 stdcall strcmp(ptr ptr) lstrcmp32A +917 stdcall strcpy(ptr ptr) lstrcpy32A 918 stub strcspn -919 stub strlen +919 stdcall strlen(ptr) lstrlen32A 920 stub strncat 921 stub strncmp 922 stub strncpy
diff --git a/if1632/relay.c b/if1632/relay.c index 06bf036..f8e98c4 100644 --- a/if1632/relay.c +++ b/if1632/relay.c
@@ -35,6 +35,7 @@ extern void CALLTO16_Start(), CALLTO16_End(); extern void CALLTO16_Ret_word(), CALLTO16_Ret_long(); + extern int CALLTO32_LargeStack(); extern DWORD CALLTO16_RetAddr_word, CALLTO16_RetAddr_long; codesel = GLOBAL_CreateBlock( GMEM_FIXED, (void *)CALLTO16_Start, @@ -49,6 +50,10 @@ CALLTO16_RetAddr_long=MAKELONG( (int)CALLTO16_Ret_long-(int)CALLTO16_Start, codesel ); + /* Set the CallLargeStack function pointer */ + + IF1632_CallLargeStack = CALLTO32_LargeStack; + /* Initialize thunking */ return THUNK_Init(); @@ -326,7 +331,7 @@ /********************************************************************** * Catch (KERNEL.55) */ -INT16 Catch( LPCATCHBUF lpbuf ) +INT16 WINAPI Catch( LPCATCHBUF lpbuf ) { STACK16FRAME *pFrame = CURRENT_STACK16; @@ -363,7 +368,7 @@ /********************************************************************** * Throw (KERNEL.56) */ -INT16 Throw( LPCATCHBUF lpbuf, INT16 retval ) +INT16 WINAPI Throw( LPCATCHBUF lpbuf, INT16 retval ) { STACK16FRAME *pFrame; WORD es = CURRENT_STACK16->es; @@ -394,8 +399,8 @@ /********************************************************************** * CallProc32W (KERNEL.56) */ -DWORD -WIN16_CallProc32W() { +DWORD /*WINAPI*/ WIN16_CallProc32W() +{ DWORD *win_stack = (DWORD *)CURRENT_STACK16->args; DWORD nrofargs = win_stack[0]; DWORD argconvmask = win_stack[1]; @@ -429,6 +434,10 @@ break; case 5: ret = CallTo32_5(proc32,args[0],args[1],args[2],args[3],args[4]); break; + case 6: ret = CallTo32_6(proc32,args[0],args[1],args[2],args[3],args[4],args[5]); + break; + case 7: ret = CallTo32_7(proc32,args[0],args[1],args[2],args[3],args[4],args[5],args[6]); + break; default: /* FIXME: should go up to 32 arguments */ fprintf(stderr,"CallProc32W: unsupported number of arguments %ld, please report.\n",nrofargs);
diff --git a/if1632/shell32.spec b/if1632/shell32.spec index 4498271..14f5deb 100644 --- a/if1632/shell32.spec +++ b/if1632/shell32.spec
@@ -17,6 +17,7 @@ 39 stdcall DragAcceptFiles(long long) DragAcceptFiles 40 stub DragFinish 42 stub DragQueryFile + 47 stub SHELL32_47 48 stub DragQueryFileA 51 stub DragQueryFileAorW 52 stub DragQueryFileW @@ -31,9 +32,15 @@ 136 stub ExtractIconExA 146 stub ExtractIconResInfoA 148 stub ExtractIconResInfoW + 154 stub SHELL32_154 + 155 stub SHELL32_155 + 156 stub SHELL32_156 + 158 stub SHELL32_158 178 stub ExtractIconW 180 stub ExtractVersionResource16W - 184 stub FindExecutableA + 182 stub SHELL32_182 + 183 stub SHELL32_183 + 184 stdcall FindExecutableA(ptr ptr ptr) FindExecutable32A 185 stub FindExecutableW 186 return FreeIconList 4 0 187 stub InternalExtractIconListA
diff --git a/if1632/signal.c b/if1632/signal.c index 58f0c0b..62a6395 100644 --- a/if1632/signal.c +++ b/if1632/signal.c
@@ -28,7 +28,7 @@ #include "debugger.h" #include "options.h" -#include "sigcontext.h" +#include "sig_context.h" #include "miscemu.h"
diff --git a/if1632/thunk.c b/if1632/thunk.c index 39cf091..a28c665 100644 --- a/if1632/thunk.c +++ b/if1632/thunk.c
@@ -1,7 +1,8 @@ /* - * Emulator thunks + * Emulator and Win95 thunks * * Copyright 1996 Alexandre Julliard + * Copyright 1997 Marcus Meissner */ #include "windows.h" @@ -134,8 +135,8 @@ /*********************************************************************** * THUNK_EnumObjects16 (GDI.71) */ -INT16 THUNK_EnumObjects16( HDC16 hdc, INT16 nObjType, - GOBJENUMPROC16 func, LPARAM lParam ) +INT16 WINAPI THUNK_EnumObjects16( HDC16 hdc, INT16 nObjType, + GOBJENUMPROC16 func, LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo16_word_ll ); return EnumObjects16( hdc, nObjType, (GOBJENUMPROC16)&thunk, lParam ); @@ -145,8 +146,8 @@ /*********************************************************************** * THUNK_EnumObjects32 (GDI32.89) */ -INT32 THUNK_EnumObjects32( HDC32 hdc, INT32 nObjType, - GOBJENUMPROC32 func, LPARAM lParam ) +INT32 WINAPI THUNK_EnumObjects32( HDC32 hdc, INT32 nObjType, + GOBJENUMPROC32 func, LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo32_2 ); return EnumObjects32( hdc, nObjType, (GOBJENUMPROC32)&thunk, lParam ); @@ -156,8 +157,8 @@ /************************************************************************* * THUNK_EnumFonts16 (GDI.70) */ -INT16 THUNK_EnumFonts16( HDC16 hdc, LPCSTR lpFaceName, - FONTENUMPROC16 func, LPARAM lParam ) +INT16 WINAPI THUNK_EnumFonts16( HDC16 hdc, LPCSTR lpFaceName, + FONTENUMPROC16 func, LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo16_word_llwl ); return EnumFonts16( hdc, lpFaceName, (FONTENUMPROC16)&thunk, lParam ); @@ -166,8 +167,8 @@ /************************************************************************* * THUNK_EnumFonts32A (GDI32.84) */ -INT32 THUNK_EnumFonts32A( HDC32 hdc, LPCSTR lpFaceName, - FONTENUMPROC32A func, LPARAM lParam ) +INT32 WINAPI THUNK_EnumFonts32A( HDC32 hdc, LPCSTR lpFaceName, + FONTENUMPROC32A func, LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo32_4 ); return EnumFonts32A( hdc, lpFaceName, (FONTENUMPROC32A)&thunk, lParam ); @@ -176,8 +177,8 @@ /************************************************************************* * THUNK_EnumFonts32W (GDI32.85) */ -INT32 THUNK_EnumFonts32W( HDC32 hdc, LPCWSTR lpFaceName, - FONTENUMPROC32W func, LPARAM lParam ) +INT32 WINAPI THUNK_EnumFonts32W( HDC32 hdc, LPCWSTR lpFaceName, + FONTENUMPROC32W func, LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo32_4 ); return EnumFonts32W( hdc, lpFaceName, (FONTENUMPROC32W)&thunk, lParam ); @@ -186,8 +187,8 @@ /****************************************************************** * THUNK_EnumMetaFile16 (GDI.175) */ -BOOL16 THUNK_EnumMetaFile16( HDC16 hdc, HMETAFILE16 hmf, - MFENUMPROC16 func, LPARAM lParam ) +BOOL16 WINAPI THUNK_EnumMetaFile16( HDC16 hdc, HMETAFILE16 hmf, + MFENUMPROC16 func, LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo16_word_wllwl ); return EnumMetaFile16( hdc, hmf, (MFENUMPROC16)&thunk, lParam ); @@ -197,8 +198,8 @@ /************************************************************************* * THUNK_EnumFontFamilies16 (GDI.330) */ -INT16 THUNK_EnumFontFamilies16( HDC16 hdc, LPCSTR lpszFamily, - FONTENUMPROC16 func, LPARAM lParam ) +INT16 WINAPI THUNK_EnumFontFamilies16( HDC16 hdc, LPCSTR lpszFamily, + FONTENUMPROC16 func, LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo16_word_llwl ); return EnumFontFamilies16(hdc, lpszFamily, (FONTENUMPROC16)&thunk, lParam); @@ -208,8 +209,8 @@ /************************************************************************* * THUNK_EnumFontFamilies32A (GDI32.80) */ -INT32 THUNK_EnumFontFamilies32A( HDC32 hdc, LPCSTR lpszFamily, - FONTENUMPROC32A func, LPARAM lParam ) +INT32 WINAPI THUNK_EnumFontFamilies32A( HDC32 hdc, LPCSTR lpszFamily, + FONTENUMPROC32A func, LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo32_4 ); return EnumFontFamilies32A(hdc,lpszFamily,(FONTENUMPROC32A)&thunk,lParam); @@ -219,8 +220,8 @@ /************************************************************************* * THUNK_EnumFontFamilies32W (GDI32.83) */ -INT32 THUNK_EnumFontFamilies32W( HDC32 hdc, LPCWSTR lpszFamily, - FONTENUMPROC32W func, LPARAM lParam ) +INT32 WINAPI THUNK_EnumFontFamilies32W( HDC32 hdc, LPCWSTR lpszFamily, + FONTENUMPROC32W func, LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo32_4 ); return EnumFontFamilies32W(hdc,lpszFamily,(FONTENUMPROC32W)&thunk,lParam); @@ -229,9 +230,9 @@ /************************************************************************* * THUNK_EnumFontFamiliesEx16 (GDI.613) */ -INT16 THUNK_EnumFontFamiliesEx16( HDC16 hdc, LPLOGFONT16 lpLF, - FONTENUMPROCEX16 func, LPARAM lParam, - DWORD reserved ) +INT16 WINAPI THUNK_EnumFontFamiliesEx16( HDC16 hdc, LPLOGFONT16 lpLF, + FONTENUMPROCEX16 func, LPARAM lParam, + DWORD reserved ) { DECL_THUNK( thunk, func, CallTo16_word_llwl ); return EnumFontFamiliesEx16( hdc, lpLF, (FONTENUMPROCEX16)&thunk, @@ -242,9 +243,9 @@ /************************************************************************* * THUNK_EnumFontFamiliesEx32A (GDI32.81) */ -INT32 THUNK_EnumFontFamiliesEx32A( HDC32 hdc, LPLOGFONT32A lpLF, - FONTENUMPROCEX32A func, LPARAM lParam, - DWORD reserved) +INT32 WINAPI THUNK_EnumFontFamiliesEx32A( HDC32 hdc, LPLOGFONT32A lpLF, + FONTENUMPROCEX32A func, LPARAM lParam, + DWORD reserved) { DECL_THUNK( thunk, func, CallTo32_4 ); return EnumFontFamiliesEx32A( hdc, lpLF, (FONTENUMPROCEX32A)&thunk, @@ -255,9 +256,9 @@ /************************************************************************* * THUNK_EnumFontFamiliesEx32W (GDI32.82) */ -INT32 THUNK_EnumFontFamiliesEx32W( HDC32 hdc, LPLOGFONT32W lpLF, - FONTENUMPROCEX32W func, LPARAM lParam, - DWORD reserved ) +INT32 WINAPI THUNK_EnumFontFamiliesEx32W( HDC32 hdc, LPLOGFONT32W lpLF, + FONTENUMPROCEX32W func, LPARAM lParam, + DWORD reserved ) { DECL_THUNK( thunk, func, CallTo32_4 ); return EnumFontFamiliesEx32W( hdc, lpLF, (FONTENUMPROCEX32W)&thunk, @@ -268,8 +269,8 @@ /********************************************************************** * THUNK_LineDDA16 (GDI.100) */ -void THUNK_LineDDA16( INT16 nXStart, INT16 nYStart, INT16 nXEnd, INT16 nYEnd, - LINEDDAPROC16 func, LPARAM lParam ) +void WINAPI THUNK_LineDDA16( INT16 nXStart, INT16 nYStart, INT16 nXEnd, + INT16 nYEnd, LINEDDAPROC16 func, LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo16_word_wwl ); LineDDA16( nXStart, nYStart, nXEnd, nYEnd, (LINEDDAPROC16)&thunk, lParam ); @@ -279,8 +280,8 @@ /********************************************************************** * THUNK_LineDDA32 (GDI32.248) */ -BOOL32 THUNK_LineDDA32( INT32 nXStart, INT32 nYStart, INT32 nXEnd, INT32 nYEnd, - LINEDDAPROC32 func, LPARAM lParam ) +BOOL32 WINAPI THUNK_LineDDA32( INT32 nXStart, INT32 nYStart, INT32 nXEnd, + INT32 nYEnd, LINEDDAPROC32 func, LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo32_3 ); return LineDDA32( nXStart, nYStart, nXEnd, nYEnd, @@ -291,7 +292,7 @@ /******************************************************************* * THUNK_EnumWindows16 (USER.54) */ -BOOL16 THUNK_EnumWindows16( WNDENUMPROC16 func, LPARAM lParam ) +BOOL16 WINAPI THUNK_EnumWindows16( WNDENUMPROC16 func, LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo16_word_wl ); return EnumWindows16( (WNDENUMPROC16)&thunk, lParam ); @@ -301,7 +302,7 @@ /******************************************************************* * THUNK_EnumWindows32 (USER32.192) */ -BOOL32 THUNK_EnumWindows32( WNDENUMPROC32 func, LPARAM lParam ) +BOOL32 WINAPI THUNK_EnumWindows32( WNDENUMPROC32 func, LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo32_2 ); return EnumWindows32( (WNDENUMPROC32)&thunk, lParam ); @@ -311,8 +312,8 @@ /********************************************************************** * THUNK_EnumChildWindows16 (USER.55) */ -BOOL16 THUNK_EnumChildWindows16( HWND16 parent, WNDENUMPROC16 func, - LPARAM lParam ) +BOOL16 WINAPI THUNK_EnumChildWindows16( HWND16 parent, WNDENUMPROC16 func, + LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo16_word_wl ); return EnumChildWindows16( parent, (WNDENUMPROC16)&thunk, lParam ); @@ -322,8 +323,8 @@ /********************************************************************** * THUNK_EnumChildWindows32 (USER32.177) */ -BOOL32 THUNK_EnumChildWindows32( HWND32 parent, WNDENUMPROC32 func, - LPARAM lParam ) +BOOL32 WINAPI THUNK_EnumChildWindows32( HWND32 parent, WNDENUMPROC32 func, + LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo32_2 ); return EnumChildWindows32( parent, (WNDENUMPROC32)&thunk, lParam ); @@ -333,8 +334,8 @@ /********************************************************************** * THUNK_EnumTaskWindows16 (USER.225) */ -BOOL16 THUNK_EnumTaskWindows16( HTASK16 hTask, WNDENUMPROC16 func, - LPARAM lParam ) +BOOL16 WINAPI THUNK_EnumTaskWindows16( HTASK16 hTask, WNDENUMPROC16 func, + LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo16_word_wl ); return EnumTaskWindows16( hTask, (WNDENUMPROC16)&thunk, lParam ); @@ -344,7 +345,8 @@ /********************************************************************** * THUNK_EnumThreadWindows (USER32.189) */ -BOOL32 THUNK_EnumThreadWindows( DWORD id, WNDENUMPROC32 func, LPARAM lParam ) +BOOL32 WINAPI THUNK_EnumThreadWindows( DWORD id, WNDENUMPROC32 func, + LPARAM lParam ) { DECL_THUNK( thunk, func, CallTo32_2 ); return EnumThreadWindows( id, (WNDENUMPROC32)&thunk, lParam ); @@ -354,7 +356,7 @@ /*********************************************************************** * THUNK_EnumProps16 (USER.27) */ -INT16 THUNK_EnumProps16( HWND16 hwnd, PROPENUMPROC16 func ) +INT16 WINAPI THUNK_EnumProps16( HWND16 hwnd, PROPENUMPROC16 func ) { DECL_THUNK( thunk, func, CallTo16_word_wlw ); return EnumProps16( hwnd, (PROPENUMPROC16)&thunk ); @@ -364,7 +366,7 @@ /*********************************************************************** * THUNK_EnumProps32A (USER32.185) */ -INT32 THUNK_EnumProps32A( HWND32 hwnd, PROPENUMPROC32A func ) +INT32 WINAPI THUNK_EnumProps32A( HWND32 hwnd, PROPENUMPROC32A func ) { DECL_THUNK( thunk, func, CallTo32_3 ); return EnumProps32A( hwnd, (PROPENUMPROC32A)&thunk ); @@ -374,7 +376,7 @@ /*********************************************************************** * THUNK_EnumProps32W (USER32.188) */ -INT32 THUNK_EnumProps32W( HWND32 hwnd, PROPENUMPROC32W func ) +INT32 WINAPI THUNK_EnumProps32W( HWND32 hwnd, PROPENUMPROC32W func ) { DECL_THUNK( thunk, func, CallTo32_3 ); return EnumProps32W( hwnd, (PROPENUMPROC32W)&thunk ); @@ -384,7 +386,8 @@ /*********************************************************************** * THUNK_EnumPropsEx32A (USER32.186) */ -INT32 THUNK_EnumPropsEx32A( HWND32 hwnd, PROPENUMPROCEX32A func, LPARAM lParam) +INT32 WINAPI THUNK_EnumPropsEx32A( HWND32 hwnd, PROPENUMPROCEX32A func, + LPARAM lParam) { DECL_THUNK( thunk, func, CallTo32_4 ); return EnumPropsEx32A( hwnd, (PROPENUMPROCEX32A)&thunk, lParam ); @@ -394,7 +397,8 @@ /*********************************************************************** * THUNK_EnumPropsEx32W (USER32.187) */ -INT32 THUNK_EnumPropsEx32W( HWND32 hwnd, PROPENUMPROCEX32W func, LPARAM lParam) +INT32 WINAPI THUNK_EnumPropsEx32W( HWND32 hwnd, PROPENUMPROCEX32W func, + LPARAM lParam) { DECL_THUNK( thunk, func, CallTo32_4 ); return EnumPropsEx32W( hwnd, (PROPENUMPROCEX32W)&thunk, lParam ); @@ -404,7 +408,8 @@ /*********************************************************************** * THUNK_EnumSystemCodePages32A (KERNEL32.92) */ -BOOL32 THUNK_EnumSystemCodePages32A( CODEPAGE_ENUMPROC32A func, DWORD flags ) +BOOL32 WINAPI THUNK_EnumSystemCodePages32A( CODEPAGE_ENUMPROC32A func, + DWORD flags ) { DECL_THUNK( thunk, func, CallTo32_1 ); return EnumSystemCodePages32A( (CODEPAGE_ENUMPROC32A)&thunk, flags ); @@ -414,7 +419,8 @@ /*********************************************************************** * THUNK_EnumSystemCodePages32W (KERNEL32.93) */ -BOOL32 THUNK_EnumSystemCodePages32W( CODEPAGE_ENUMPROC32W func, DWORD flags ) +BOOL32 WINAPI THUNK_EnumSystemCodePages32W( CODEPAGE_ENUMPROC32W func, + DWORD flags ) { DECL_THUNK( thunk, func, CallTo32_1 ); return EnumSystemCodePages32W( (CODEPAGE_ENUMPROC32W)&thunk, flags ); @@ -423,7 +429,7 @@ /*********************************************************************** * THUNK_EnumSystemLocales32A (KERNEL32.92) */ -BOOL32 THUNK_EnumSystemLocales32A( LOCALE_ENUMPROC32A func, DWORD flags ) +BOOL32 WINAPI THUNK_EnumSystemLocales32A( LOCALE_ENUMPROC32A func, DWORD flags) { DECL_THUNK( thunk, func, CallTo32_1 ); return EnumSystemLocales32A( (LOCALE_ENUMPROC32A)&thunk, flags ); @@ -433,7 +439,7 @@ /*********************************************************************** * THUNK_EnumSystemLocales32W (KERNEL32.93) */ -BOOL32 THUNK_EnumSystemLocales32W( LOCALE_ENUMPROC32W func, DWORD flags ) +BOOL32 WINAPI THUNK_EnumSystemLocales32W( LOCALE_ENUMPROC32W func, DWORD flags) { DECL_THUNK( thunk, func, CallTo32_1 ); return EnumSystemLocales32W( (LOCALE_ENUMPROC32W)&thunk, flags ); @@ -442,7 +448,10 @@ /*********************************************************************** * THUNK_EnumResourceLanguages32W (KERNEL32.87) */ -BOOL32 THUNK_EnumResourceLanguages32W( HMODULE32 hmod,LPCWSTR type,LPCWSTR name,ENUMRESLANGPROC32W func, LONG lParam ) +BOOL32 WINAPI THUNK_EnumResourceLanguages32W( HMODULE32 hmod, LPCWSTR type, + LPCWSTR name, + ENUMRESLANGPROC32W func, + LONG lParam ) { DECL_THUNK( thunk, func, CallTo32_5 ); return EnumResourceLanguages32W( hmod,type,name,(ENUMRESLANGPROC32W)&thunk, lParam ); @@ -451,7 +460,10 @@ /*********************************************************************** * THUNK_EnumResourceLanguages32A (KERNEL32.86) */ -BOOL32 THUNK_EnumResourceLanguages32A( HMODULE32 hmod,LPCSTR type,LPCSTR name,ENUMRESLANGPROC32A func, LONG lParam ) +BOOL32 WINAPI THUNK_EnumResourceLanguages32A( HMODULE32 hmod, LPCSTR type, + LPCSTR name, + ENUMRESLANGPROC32A func, + LONG lParam ) { DECL_THUNK( thunk, func, CallTo32_5 ); return EnumResourceLanguages32A( hmod,type,name,(ENUMRESLANGPROC32A)&thunk, lParam ); @@ -460,8 +472,8 @@ /*********************************************************************** * THUNK_EnumResourceNames32A (KERNEL32.88) */ -BOOL32 THUNK_EnumResourceNames32A( HMODULE32 hmod, LPCSTR type, - ENUMRESNAMEPROC32A func, LONG lParam ) +BOOL32 WINAPI THUNK_EnumResourceNames32A( HMODULE32 hmod, LPCSTR type, + ENUMRESNAMEPROC32A func, LONG lParam) { DECL_THUNK( thunk, func, CallTo32_4 ); return EnumResourceNames32A( hmod,type,(ENUMRESNAMEPROC32A)&thunk,lParam ); @@ -470,8 +482,8 @@ /*********************************************************************** * THUNK_EnumResourceNames32W (KERNEL32.89) */ -BOOL32 THUNK_EnumResourceNames32W( HMODULE32 hmod, LPCWSTR type, - ENUMRESNAMEPROC32W func, LONG lParam ) +BOOL32 WINAPI THUNK_EnumResourceNames32W( HMODULE32 hmod, LPCWSTR type, + ENUMRESNAMEPROC32W func, LONG lParam) { DECL_THUNK( thunk, func, CallTo32_4 ); return EnumResourceNames32W( hmod,type,(ENUMRESNAMEPROC32W)&thunk, lParam); @@ -480,7 +492,8 @@ /*********************************************************************** * THUNK_EnumResourceTypes32A (KERNEL32.90) */ -BOOL32 THUNK_EnumResourceTypes32A( HMODULE32 hmod,ENUMRESTYPEPROC32A func, LONG lParam ) +BOOL32 WINAPI THUNK_EnumResourceTypes32A( HMODULE32 hmod, + ENUMRESTYPEPROC32A func, LONG lParam) { DECL_THUNK( thunk, func, CallTo32_3 ); return EnumResourceTypes32A( hmod,(ENUMRESTYPEPROC32A)&thunk, lParam ); @@ -489,7 +502,9 @@ /*********************************************************************** * THUNK_EnumResourceTypes32W (KERNEL32.91) */ -BOOL32 THUNK_EnumResourceTypes32W( HMODULE32 hmod,ENUMRESTYPEPROC32W func, LONG lParam ) +BOOL32 WINAPI THUNK_EnumResourceTypes32W( HMODULE32 hmod, + ENUMRESTYPEPROC32W func, + LONG lParam ) { DECL_THUNK( thunk, func, CallTo32_3 ); return EnumResourceTypes32W( hmod,(ENUMRESTYPEPROC32W)&thunk, lParam ); @@ -499,9 +514,10 @@ /*********************************************************************** * THUNK_GrayString16 (USER.185) */ -BOOL16 THUNK_GrayString16( HDC16 hdc, HBRUSH16 hbr, GRAYSTRINGPROC16 func, - LPARAM lParam, INT16 cch, INT16 x, INT16 y, - INT16 cx, INT16 cy ) +BOOL16 WINAPI THUNK_GrayString16( HDC16 hdc, HBRUSH16 hbr, + GRAYSTRINGPROC16 func, LPARAM lParam, + INT16 cch, INT16 x, INT16 y, + INT16 cx, INT16 cy ) { DECL_THUNK( thunk, func, CallTo16_word_wlw ); if (!func) @@ -515,9 +531,10 @@ /*********************************************************************** * THUNK_GrayString32A (USER32.314) */ -BOOL32 THUNK_GrayString32A( HDC32 hdc, HBRUSH32 hbr, GRAYSTRINGPROC32 func, - LPARAM lParam, INT32 cch, INT32 x, INT32 y, - INT32 cx, INT32 cy ) +BOOL32 WINAPI THUNK_GrayString32A( HDC32 hdc, HBRUSH32 hbr, + GRAYSTRINGPROC32 func, LPARAM lParam, + INT32 cch, INT32 x, INT32 y, + INT32 cx, INT32 cy ) { DECL_THUNK( thunk, func, CallTo32_3 ); if (!func) @@ -531,9 +548,10 @@ /*********************************************************************** * THUNK_GrayString32W (USER32.315) */ -BOOL32 THUNK_GrayString32W( HDC32 hdc, HBRUSH32 hbr, GRAYSTRINGPROC32 func, - LPARAM lParam, INT32 cch, INT32 x, INT32 y, - INT32 cx, INT32 cy ) +BOOL32 WINAPI THUNK_GrayString32W( HDC32 hdc, HBRUSH32 hbr, + GRAYSTRINGPROC32 func, + LPARAM lParam, INT32 cch, INT32 x, INT32 y, + INT32 cx, INT32 cy ) { DECL_THUNK( thunk, func, CallTo32_3 ); if (!func) @@ -547,7 +565,7 @@ /*********************************************************************** * THUNK_SetWindowsHook16 (USER.121) */ -FARPROC16 THUNK_SetWindowsHook16( INT16 id, HOOKPROC16 proc ) +FARPROC16 WINAPI THUNK_SetWindowsHook16( INT16 id, HOOKPROC16 proc ) { HINSTANCE16 hInst = FarGetOwner( HIWORD(proc) ); HTASK16 hTask = (id == WH_MSGFILTER) ? GetCurrentTask() : 0; @@ -560,7 +578,7 @@ /*********************************************************************** * THUNK_UnhookWindowsHook16 (USER.234) */ -BOOL16 THUNK_UnhookWindowsHook16( INT16 id, HOOKPROC16 proc ) +BOOL16 WINAPI THUNK_UnhookWindowsHook16( INT16 id, HOOKPROC16 proc ) { BOOL16 ret; THUNK *thunk = THUNK_Find( (FARPROC16)proc ); @@ -574,8 +592,8 @@ /*********************************************************************** * THUNK_SetWindowsHookEx16 (USER.291) */ -HHOOK THUNK_SetWindowsHookEx16( INT16 id, HOOKPROC16 proc, HINSTANCE16 hInst, - HTASK16 hTask ) +HHOOK WINAPI THUNK_SetWindowsHookEx16( INT16 id, HOOKPROC16 proc, + HINSTANCE16 hInst, HTASK16 hTask ) { THUNK *thunk = THUNK_Alloc( (FARPROC16)proc, (RELAY)CallTo16_long_wwl ); if (!thunk) return 0; @@ -586,7 +604,7 @@ /*********************************************************************** * THUNK_UnhookWindowHookEx16 (USER.292) */ -BOOL16 THUNK_UnhookWindowsHookEx16( HHOOK hhook ) +BOOL16 WINAPI THUNK_UnhookWindowsHookEx16( HHOOK hhook ) { THUNK *thunk = (THUNK *)HOOK_GetProc16( hhook ); BOOL16 ret = UnhookWindowsHookEx16( hhook ); @@ -598,7 +616,7 @@ /*********************************************************************** * THUNK_CreateSystemTimer (SYSTEM.2) */ -WORD THUNK_CreateSystemTimer( WORD rate, FARPROC16 callback ) +WORD WINAPI THUNK_CreateSystemTimer( WORD rate, FARPROC16 callback ) { THUNK *thunk = THUNK_Alloc( callback, (RELAY)CallTo16_word_ ); if (!thunk) return 0; @@ -609,7 +627,7 @@ /*********************************************************************** * THUNK_KillSystemTimer (SYSTEM.3) */ -WORD THUNK_KillSystemTimer( WORD timer ) +WORD WINAPI THUNK_KillSystemTimer( WORD timer ) { extern WORD SYSTEM_KillSystemTimer( WORD timer ); /* misc/system.c */ extern FARPROC16 SYSTEM_GetTimerProc( WORD timer ); /* misc/system.c */ @@ -624,7 +642,7 @@ /*********************************************************************** * THUNK_SetUnhandledExceptionFilter (KERNEL32.516) */ -LPTOP_LEVEL_EXCEPTION_FILTER THUNK_SetUnhandledExceptionFilter( +LPTOP_LEVEL_EXCEPTION_FILTER WINAPI THUNK_SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER filter ) { LPTOP_LEVEL_EXCEPTION_FILTER old; @@ -644,7 +662,7 @@ /*********************************************************************** * THUNK_SetDCHook (GDI.190) */ -BOOL16 THUNK_SetDCHook( HDC16 hdc, FARPROC16 proc, DWORD dwHookData ) +BOOL16 WINAPI THUNK_SetDCHook( HDC16 hdc, FARPROC16 proc, DWORD dwHookData ) { THUNK *thunk, *oldThunk; @@ -669,7 +687,7 @@ /*********************************************************************** * THUNK_GetDCHook (GDI.191) */ -DWORD THUNK_GetDCHook( HDC16 hdc, FARPROC16 *phookProc ) +DWORD WINAPI THUNK_GetDCHook( HDC16 hdc, FARPROC16 *phookProc ) { THUNK *thunk = NULL; DWORD ret = GetDCHook( hdc, (FARPROC16 *)&thunk ); @@ -687,19 +705,81 @@ return ret; } +/*********************************************************************** + * * + * Win95 internal thunks * + * * + ***********************************************************************/ +/*********************************************************************** + * Generates a FT_Prolog call. + * + * 0FB6D1 movzbl edx,cl + * 8B1495xxxxxxxx mov edx,[4*edx + xxxxxxxx] + * 68xxxxxxxx push FT_Prolog + * C3 lret + */ +static void _write_ftprolog(LPBYTE start,DWORD thunkstart) { + LPBYTE x; + + x = start; + *x++ = 0x0f;*x++=0xb6;*x++=0xd1; /* movzbl edx,cl */ + *x++ = 0x8B;*x++=0x14;*x++=0x95;*(DWORD*)x= thunkstart; + x+=4; /* mov edx, [4*edx + thunkstart] */ + *x++ = 0x68; *(DWORD*)x = (DWORD)GetProcAddress32(WIN32_GetModuleHandleA("KERNEL32"),"FT_Prolog"); + x+=4; /* push FT_Prolog */ + *x++ = 0xC3; /* lret */ + /* fill rest with 0xCC / int 3 */ +} + +/*********************************************************************** + * Generates a QT_Thunk style call. + * + * 33C9 xor ecx, ecx + * 8A4DFC mov cl , [ebp-04] + * 8B148Dxxxxxxxx mov edx, [4*ecx + (EAX+EDX)] + * B8yyyyyyyy mov eax, QT_Thunk + * FFE0 jmp eax + */ +static void _write_qtthunk(LPBYTE start,DWORD thunkstart) { + LPBYTE x; + + x = start; + *x++ = 0x33;*x++=0xC9; /* xor ecx,ecx */ + *x++ = 0x8A;*x++=0x4D;*x++=0xFC; /* movb cl,[ebp-04] */ + *x++ = 0x8B;*x++=0x14;*x++=0x8D;*(DWORD*)x= thunkstart; + x+=4; /* mov edx, [4*ecx + (EAX+EDX) */ + *x++ = 0xB8; *(DWORD*)x = (DWORD)GetProcAddress32(WIN32_GetModuleHandleA("KERNEL32"),"QT_Thunk"); + x+=4; /* mov eax , QT_Thunk */ + *x++ = 0xFF; *x++ = 0xE0; /* jmp eax */ + /* should fill the rest of the 32 bytes with 0xCC */ +} + +/*********************************************************************** + * ThunkConnect32 (KERNEL32) + * Connects a 32bit and a 16bit thunkbuffer. + */ struct thunkstruct { char magic[4]; - DWORD x1; - DWORD x2; + DWORD length; + DWORD ptr; + DWORD x0C; + + DWORD x10; + DWORD x14; + DWORD x18; + DWORD x1C; + DWORD x20; }; -UINT32 ThunkConnect32( struct thunkstruct *ths, LPSTR thunkfun16, - LPSTR module16, LPSTR module32, HMODULE32 hmod32, - DWORD dllinitarg1 ) +UINT32 WINAPI ThunkConnect32( struct thunkstruct *ths, LPSTR thunkfun16, + LPSTR module16, LPSTR module32, HMODULE32 hmod32, + DWORD dllinitarg1 ) { HINSTANCE16 hmm; + SEGPTR thkbuf; + struct thunkstruct *ths16; fprintf(stdnimp,"ThunkConnect32(<struct>,%s,%s,%s,%x,%lx)\n", thunkfun16,module32,module16,hmod32,dllinitarg1 @@ -710,8 +790,402 @@ ths->magic[2], ths->magic[3] ); - fprintf(stdnimp," x1 = %lx\n",ths->x1); - fprintf(stdnimp," x2 = %lx\n",ths->x2); + fprintf(stdnimp," length = %lx\n",ths->length); + if (lstrncmp32A(ths->magic,"SL01",4)&&lstrncmp32A(ths->magic,"LS01",4)) + return 0; hmm=LoadModule16(module16,NULL); + if (hmm<=32) + return 0; + thkbuf=(SEGPTR)WIN32_GetProcAddress16(hmm,thunkfun16); + if (!thkbuf) + return 0; + ths16=(struct thunkstruct*)PTR_SEG_TO_LIN(thkbuf); + if (lstrncmp32A(ths16->magic,ths->magic,4)) + return 0; + + if (!lstrncmp32A(ths->magic,"SL01",4)) { + if (ths16->length != ths->length) + return 0; + ths->x0C = (DWORD)ths16; + + fprintf(stderr," ths16 magic is 0x%08lx\n",*(DWORD*)ths16->magic); + if (*((DWORD*)ths16->magic) != 0x0000304C) + return 0; + if (!*(WORD*)(((LPBYTE)ths16)+0x12)) + return 0; + + } + if (!lstrncmp32A(ths->magic,"LS01",4)) { + if (ths16->length != ths->length) + return 0; + ths->ptr = (DWORD)PTR_SEG_TO_LIN(ths16->ptr); + /* code offset for QT_Thunk is at 0x1C... */ + _write_qtthunk (((LPBYTE)ths) + ths->x1C,ths->ptr); + /* code offset for FT_Prolog is at 0x20... */ + _write_ftprolog(((LPBYTE)ths) + ths->x20,ths->ptr); + return 1; + } return TRUE; } + + +/********************************************************************** + * The infamous and undocumented QT_Thunk procedure. + * + * We get arguments in [EBP+8] up to [EBP+38]. + * We have to set up a frame in the 16 bit stackframe. + * saved_ss_sp: bp+0x40 + * bp+0x3c + * ... + * bp: bp+0x00 + * sp: + * + */ +extern DWORD IF1632_Saved16_ss_sp; +VOID WINAPI QT_Thunk(CONTEXT *context) +{ + CONTEXT context16; + LPBYTE curstack; + DWORD ret; + + fprintf(stderr,"QT_Thunk(%08lx) ..",EDX_reg(context)); + fprintf(stderr," argsize probably ebp-esp=%ld\n", + EBP_reg(context)-ESP_reg(context) + ); + memcpy(&context16,context,sizeof(context16)); + + curstack = PTR_SEG_TO_LIN(IF1632_Saved16_ss_sp); + memcpy(curstack-0x40,(LPBYTE)EBP_reg(context),0x40); + EBP_reg(&context16) = LOWORD(IF1632_Saved16_ss_sp)-0x40; + IF1632_Saved16_ss_sp -= 0x3c; + + CS_reg(&context16) = HIWORD(EDX_reg(context)); + IP_reg(&context16) = LOWORD(EDX_reg(context)); +#ifndef WINELIB + ret = CallTo16_regs_(&context16); +#endif + fprintf(stderr,". returned %08lx\n",ret); + EAX_reg(context) = ret; + IF1632_Saved16_ss_sp += 0x3c; +} + + +/********************************************************************** + * WOWCallback16 (KERNEL32.62) + */ +DWORD WINAPI WOWCallback16(FARPROC16 fproc,DWORD arg) +{ + DWORD ret; + fprintf(stderr,"WOWCallback16(%p,0x%08lx) ",fproc,arg); + ret = CallTo16_long_l(fproc,arg); + fprintf(stderr,"... returns %ld\n",ret); + return ret; +} + +/*********************************************************************** + * _KERNEL32_52 (KERNEL32.52) + * FIXME: what does it really do? + */ +VOID WINAPI _KERNEL32_52(DWORD arg1,CONTEXT *regs) +{ + fprintf(stderr,"_KERNE32_52(arg1=%08lx,%08lx)\n",arg1,EDI_reg(regs)); + + EAX_reg(regs) = (DWORD)WIN32_GetProcAddress16(EDI_reg(regs),"ThkBuf"); + + fprintf(stderr," GetProcAddress16(\"ThkBuf\") returns %08lx\n", + EAX_reg(regs) + ); +} + +/*********************************************************************** + * _KERNEL32_43 (KERNEL32.42) + * A thunkbuffer link routine + * The thunkbuf looks like: + * + * 00: DWORD length ? don't know exactly + * 04: SEGPTR ptr ? where does it point to? + * The pointer ptr is written into the first DWORD of 'thunk'. + * (probably correct implemented) + */ +BOOL32 WINAPI _KERNEL32_43(LPDWORD thunk,LPCSTR thkbuf,DWORD len, + LPCSTR dll16,LPCSTR dll32) +{ + HINSTANCE16 hmod; + LPDWORD addr; + SEGPTR segaddr; + + fprintf(stderr,"_KERNEL32_43(%p,%s,0x%08lx,%s,%s)\n",thunk,thkbuf,len,dll16,dll32); + + hmod = LoadLibrary16(dll16); + if (hmod<32) { + fprintf(stderr,"->failed to load 16bit DLL %s, error %d\n",dll16,hmod); + return NULL; + } + segaddr = (DWORD)WIN32_GetProcAddress16(hmod,(LPSTR)thkbuf); + if (!segaddr) { + fprintf(stderr,"->no %s exported from %s!\n",thkbuf,dll16); + return NULL; + } + addr = (LPDWORD)PTR_SEG_TO_LIN(segaddr); + if (addr[0] != len) { + fprintf(stderr,"->thkbuf length mismatch? %ld vs %ld\n",len,addr[0]); + return NULL; + } + if (!addr[1]) + return 0; + fprintf(stderr," addr[1] is %08lx\n",addr[1]); + *(DWORD*)thunk = addr[1]; + return addr[1]; +} + +/*********************************************************************** + * _KERNEL32_45 (KERNEL32.44) + * Looks like another 32->16 thunk. Dunno why they need two of them. + * calls the win16 address in EAX with the current stack. + * + * FIXME: doesn't seem to work correctly yet... + */ +VOID WINAPI _KERNEL32_45(CONTEXT *context) +{ + CONTEXT context16; + LPBYTE curstack; + DWORD ret,stacksize; + + fprintf(stderr,"KERNEL32_45(%%eax=0x%08lx(%%cx=0x%04lx,%%edx=0x%08lx))\n", + (DWORD)EAX_reg(context),(DWORD)CX_reg(context),(DWORD)EDX_reg(context) + ); + stacksize = EBP_reg(context)-ESP_reg(context); + fprintf(stderr," stacksize = %ld\n",stacksize); + + memcpy(&context16,context,sizeof(context16)); + + curstack = PTR_SEG_TO_LIN(IF1632_Saved16_ss_sp); + memcpy(curstack-stacksize,(LPBYTE)EBP_reg(context),stacksize); + fprintf(stderr,"IF1632_Saved16_ss_sp is 0x%08lx\n",IF1632_Saved16_ss_sp); + EBP_reg(&context16) = LOWORD(IF1632_Saved16_ss_sp)-stacksize; + IF1632_Saved16_ss_sp -= stacksize; + + DI_reg(&context16) = CX_reg(context); + CS_reg(&context16) = HIWORD(EAX_reg(context)); + IP_reg(&context16) = LOWORD(EAX_reg(context)); + /* some more registers spronged locally, but I don't think they are + * needed + */ +#ifndef WINELIB + ret = CallTo16_regs_(&context16); +#endif + fprintf(stderr,". returned %08lx\n",ret); + EAX_reg(context) = ret; + IF1632_Saved16_ss_sp += stacksize; + +} + +/*********************************************************************** + * (KERNEL32.40) + * A thunk setup routine. + * Expects a pointer to a preinitialized thunkbuffer in the first argument + * looking like: + * 00..03: unknown (pointer, check _41, _43, _46) + * 04: EB1E jmp +0x20 + * + * 06..23: unknown (space for replacement code, check .90) + * + * 24:>E800000000 call offset 29 + * 29:>58 pop eax ( target of call ) + * 2A: 2D25000000 sub eax,0x00000025 ( now points to offset 4 ) + * 2F: BAxxxxxxxx mov edx,xxxxxxxx + * 34: 68yyyyyyyy push KERNEL32.90 + * 39: C3 ret + * + * 3A: EB1E jmp +0x20 + * 3E ... 59: unknown (space for replacement code?) + * 5A: E8xxxxxxxx call <32bitoffset xxxxxxxx> + * 5F: 5A pop edx + * 60: 81EA25xxxxxx sub edx, 0x25xxxxxx + * 66: 52 push edx + * 67: 68xxxxxxxx push xxxxxxxx + * 6C: 68yyyyyyyy push KERNEL32.89 + * 71: C3 ret + * 72: end? + * This function checks if the code is there, and replaces the yyyyyyyy entries + * by the functionpointers. + * The thunkbuf looks like: + * + * 00: DWORD length ? don't know exactly + * 04: SEGPTR ptr ? where does it point to? + * The segpointer ptr is written into the first DWORD of 'thunk'. + * (probably correct implemented) + */ + +LPVOID WINAPI _KERNEL32_41(LPBYTE thunk,LPCSTR thkbuf,DWORD len,LPCSTR dll16, + LPCSTR dll32) +{ + HMODULE32 hkrnl32 = WIN32_GetModuleHandleA("KERNEL32"); + HMODULE16 hmod; + LPDWORD addr,addr2; + DWORD segaddr; + + fprintf(stderr,"KERNEL32_41(%p,%s,%ld,%s,%s)\n", + thunk,thkbuf,len,dll16,dll32 + ); + + /* FIXME: add checks for valid code ... */ + /* write pointers to kernel32.89 and kernel32.90 (+ordinal base of 1) */ + *(DWORD*)(thunk+0x35) = (DWORD)GetProcAddress32(hkrnl32,(LPSTR)90); + *(DWORD*)(thunk+0x6D) = (DWORD)GetProcAddress32(hkrnl32,(LPSTR)89); + + + hmod = LoadLibrary16(dll16); + if (hmod<32) { + fprintf(stderr,"->failed to load 16bit DLL %s, error %d\n",dll16,hmod); + return NULL; + } + segaddr = (DWORD)WIN32_GetProcAddress16(hmod,(LPSTR)thkbuf); + if (!segaddr) { + fprintf(stderr,"->no %s exported from %s!\n",thkbuf,dll16); + return NULL; + } + addr = (LPDWORD)PTR_SEG_TO_LIN(segaddr); + if (addr[0] != len) { + fprintf(stderr,"->thkbuf length mismatch? %ld vs %ld\n",len,addr[0]); + return NULL; + } + addr2 = PTR_SEG_TO_LIN(addr[1]); + fprintf(stderr," addr2 is %08lx:%p\n",addr[1],addr2); + if (HIWORD(addr2)) + *(DWORD*)thunk = (DWORD)addr2; + return addr2; +} + +/*********************************************************************** + * (KERNEL32.91) + * Thunk priming? function + * Rewrites the first part of the thunk to use the QT_Thunk interface + * and jumps to the start of that code. + */ +VOID WINAPI _KERNEL32_90(CONTEXT *context) +{ + fprintf(stderr,"_KERNEL32_90(eax=0x%08lx,edx=0x%08lx,ebp[-4]=0x%02x,target = %08lx, *target =%08lx)\n", + EAX_reg(context),EDX_reg(context),((BYTE*)EBP_reg(context))[-4], + (*(DWORD*)(EAX_reg(context)+EDX_reg(context)))+4*(((BYTE*)EBP_reg(context))[-4]), + *(DWORD*)((*(DWORD*)(EAX_reg(context)+EDX_reg(context)))+4*(((BYTE*)EBP_reg(context))[-4])) + ); + _write_qtthunk((LPBYTE)EAX_reg(context),*(DWORD*)(EAX_reg(context)+EDX_reg(context))); + /* we just call the real QT_Thunk right now + * we can bypass the relaycode, for we already have the registercontext + */ + EDX_reg(context) = *(DWORD*)((*(DWORD*)(EAX_reg(context)+EDX_reg(context)))+4*(((BYTE*)EBP_reg(context))[-4])); + return QT_Thunk(context); +} + +/*********************************************************************** + * (KERNEL32.45) + * Another thunkbuf link routine. + * The start of the thunkbuf looks like this: + * 00: DWORD length + * 04: SEGPTR address for thunkbuffer pointer + */ +VOID WINAPI _KERNEL32_46(LPBYTE thunk,LPSTR thkbuf,DWORD len,LPSTR dll16, + LPSTR dll32) +{ + LPDWORD addr; + HMODULE16 hmod; + SEGPTR segaddr; + + fprintf(stderr,"KERNEL32_46(%p,%s,%lx,%s,%s)\n", + thunk,thkbuf,len,dll16,dll32 + ); + hmod = LoadLibrary16(dll16); + if (hmod < 32) { + fprintf(stderr,"->couldn't load %s, error %d\n",dll16,hmod); + return; + } + segaddr = (SEGPTR)WIN32_GetProcAddress16(hmod,thkbuf); + if (!segaddr) { + fprintf(stderr,"-> haven't found %s in %s!\n",thkbuf,dll16); + return; + } + addr = (LPDWORD)PTR_SEG_TO_LIN(segaddr); + if (addr[0] != len) { + fprintf(stderr,"-> length of thkbuf differs from expected length! (%ld vs %ld)\n",addr[0],len); + return; + } + *(DWORD*)PTR_SEG_TO_LIN(addr[1]) = (DWORD)thunk; +} + +/********************************************************************** + * _KERNEL32_87 + * Check if thunking is initialized (ss selector set up etc.) + */ +BOOL32 WINAPI _KERNEL32_87() +{ + fprintf(stderr,"KERNEL32_87 stub, returning TRUE\n"); + return TRUE; +} + +/********************************************************************** + * _KERNEL32_88 + * One of the real thunking functions. This one seems to be for 32<->32 + * thunks. It should probably be capable of crossing processboundaries. + * + * And YES, I've seen nr=48 (somewhere in the Win95 32<->16 OLE coupling) + */ +DWORD WINAPI _KERNEL32_88(DWORD *args) +{ + DWORD nr = args[0]; + DWORD flags = args[1]; + FARPROC32 fun = (FARPROC32)args[2]; + DWORD i,ret; + + fprintf(stderr,"KERNEL32_88(%ld,0x%08lx,%p,[ ",nr,flags,fun); + for (i=0;i<nr/4;i++) + fprintf(stderr,"0x%08lx,",args[3+i]); + fprintf(stderr,"])"); +#ifndef WINELIB + switch (nr) { + case 0: ret = CallTo32_0(fun); + break; + case 4: ret = CallTo32_1(fun,args[3]); + break; + case 8: ret = CallTo32_2(fun,args[3],args[4]); + break; + case 12: ret = CallTo32_3(fun,args[3],args[4],args[5]); + break; + case 16: ret = CallTo32_4(fun,args[3],args[4],args[5],args[6]); + break; + case 20: ret = CallTo32_5(fun,args[3],args[4],args[5],args[6],args[7]); + break; + case 24: ret = CallTo32_6(fun,args[3],args[4],args[5],args[6],args[7],args[8]); + break; + case 28: ret = CallTo32_7(fun,args[3],args[4],args[5],args[6],args[7],args[8],args[9]); + break; + case 32: ret = CallTo32_8(fun,args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10]); + break; + case 36: ret = CallTo32_9(fun,args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11]); + break; + case 40: ret = CallTo32_10(fun,args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11],args[12]); + break; + case 44: ret = CallTo32_11(fun,args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11],args[12],args[13]); + break; + case 48: ret = CallTo32_12(fun,args[3],args[4],args[5],args[6],args[7],args[8],args[9],args[10],args[11],args[12],args[13],args[14]); + break; + default: + fprintf(stderr," unsupported nr of arguments, %ld\n",nr); + ret = 0; + break; + + } +#endif + fprintf(stderr," returning %ld ...\n",ret); + return ret; +} + +/********************************************************************** + * KERNEL_619 (KERNEL) + * Seems to store y and z depending on x in some internal lists... + */ +WORD WINAPI _KERNEL_619(WORD x,DWORD y,DWORD z) +{ + fprintf(stderr,"KERNEL_619(0x%04x,0x%08lx,0x%08lx)\n",x,y,z); + return x; +}
diff --git a/if1632/user.spec b/if1632/user.spec index 5f2dce1..6465424 100644 --- a/if1632/user.spec +++ b/if1632/user.spec
@@ -283,7 +283,7 @@ 276 stub LockMyTask 277 pascal16 GetDlgCtrlID(word) GetDlgCtrlID16 278 pascal16 GetDesktopHwnd() GetDesktopHwnd -279 stub OldSetDeskPattern +279 pascal16 OldSetDeskPattern() SetDeskPattern 280 pascal16 SetSystemMenu(word word) SetSystemMenu16 281 pascal16 GetSysColorBrush(word) GetSysColorBrush16 282 pascal16 SelectPalette(word word word) SelectPalette16 @@ -382,12 +382,12 @@ 431 pascal AnsiUpper(segstr) AnsiUpper16 432 pascal AnsiLower(segstr) AnsiLower16 433 pascal16 IsCharAlpha(byte) IsCharAlpha16 -434 pascal16 IsCharAlphanumeric(byte) IsCharAlphanumeric16 +434 pascal16 IsCharAlphaNumeric(byte) IsCharAlphaNumeric16 435 pascal16 IsCharUpper(byte) IsCharUpper16 436 pascal16 IsCharLower(byte) IsCharLower16 437 pascal16 AnsiUpperBuff(ptr word) AnsiUpperBuff16 438 pascal16 AnsiLowerBuff(ptr word) AnsiLowerBuff16 -441 stub InsertMenuItem +441 pascal16 InsertMenuItem(word word word ptr) InsertMenuItem16 443 stub GetMenuItemInfo 445 pascal DefFrameProc(word word word word long) DefFrameProc16 446 stub SetMenuItemInfo @@ -503,8 +503,8 @@ 804 stub CHOOSECOLOR_CALLBACK16 819 stub PeekMessage32 820 stub GetMessage32 -821 stub TranslateMessage32 -821 stub IsDialogMessage32 +821 stub TranslateMessage32 +#821 stub IsDialogMessage32 # FIXME: two ordinal 821??? 822 stub DispatchMessage32 825 stub PostMessage32 826 stub PostThreadMessage32
diff --git a/if1632/user32.spec b/if1632/user32.spec index 2144d97..78b5f23 100644 --- a/if1632/user32.spec +++ b/if1632/user32.spec
@@ -165,7 +165,7 @@ 0158 stdcall DrawIcon(long long long long) DrawIcon32 0159 stub DrawIconEx 0160 stdcall DrawMenuBar(long) DrawMenuBar32 -0161 stub DrawStateA +0161 stdcall DrawStateA(long long ptr long long long long long long long) DrawState32A 0162 stub DrawStateW 0163 stdcall DrawTextA(long ptr long ptr long) DrawText32A 0164 stub DrawTextExA @@ -253,7 +253,7 @@ 0246 stdcall GetKeyNameTextA(long ptr long) GetKeyNameText32A 0247 stdcall GetKeyNameTextW(long ptr long) GetKeyNameText32W 0248 stdcall GetKeyState(long) GetKeyState32 -0249 stub GetKeyboardLayout +0249 stdcall GetKeyboardLayout(long) GetKeyboardLayout 0250 stub GetKeyboardLayoutList 0251 stub GetKeyboardLayoutNameA 0252 stub GetKeyboardLayoutNameW @@ -326,8 +326,8 @@ 0319 stdcall InSendMessage() InSendMessage32 0320 stdcall InflateRect(ptr long long) InflateRect32 0321 stdcall InsertMenuA(long long long long ptr) InsertMenu32A -0322 stub InsertMenuItemA -0323 stub InsertMenuItemW +0322 stdcall InsertMenuItemA(long long long ptr) InsertMenuItem32A +0323 stdcall InsertMenuItemW(long long long ptr) InsertMenuItem32W 0324 stdcall InsertMenuW(long long long long ptr) InsertMenu32W 0325 stub InternalGetWindowText 0326 stdcall IntersectRect(ptr ptr ptr) IntersectRect32 @@ -492,10 +492,10 @@ 0485 stub SetLogonNotifyWindow 0486 stdcall SetMenu(long long) SetMenu32 0487 stub SetMenuContextHelpId -0488 stub SetMenuDefaultItem +0488 stdcall SetMenuDefaultItem(long long long) SetMenuDefaultItem32 0489 stdcall SetMenuItemBitmaps(long long long long long) SetMenuItemBitmaps32 -0490 stub SetMenuItemInfoA -0491 stub SetMenuItemInfoW +0490 stdcall SetMenuItemInfoA(long long long ptr) SetMenuItemInfo32A +0491 stdcall SetMenuItemInfoW(long long long ptr) SetMenuItemInfo32W 0492 stub SetMessageExtraInfo 0493 stdcall SetMessageQueue(long) SetMessageQueue32 0494 stdcall SetParent(long long) SetParent32
diff --git a/if1632/winsock.spec b/if1632/winsock.spec index 37ce932..2548e10 100644 --- a/if1632/winsock.spec +++ b/if1632/winsock.spec
@@ -6,36 +6,36 @@ name winsock type win16 -1 pascal16 accept(word ptr ptr) WINSOCK_accept -2 pascal16 bind(word ptr word) WINSOCK_bind -3 pascal16 closesocket(word) WINSOCK_closesocket -4 pascal16 connect(word ptr word) WINSOCK_connect -5 pascal16 getpeername(word ptr ptr) WINSOCK_getpeername -6 pascal16 getsockname(word ptr ptr) WINSOCK_getsockname -7 pascal16 getsockopt(word word word ptr ptr) WINSOCK_getsockopt +1 pascal16 accept(word ptr ptr) WINSOCK_accept16 +2 pascal16 bind(word ptr word) WINSOCK_bind16 +3 pascal16 closesocket(word) WINSOCK_closesocket16 +4 pascal16 connect(word ptr word) WINSOCK_connect16 +5 pascal16 getpeername(word ptr ptr) WINSOCK_getpeername16 +6 pascal16 getsockname(word ptr ptr) WINSOCK_getsockname16 +7 pascal16 getsockopt(word word word ptr ptr) WINSOCK_getsockopt16 8 pascal htonl(long) WINSOCK_htonl 9 pascal16 htons(word) WINSOCK_htons 10 pascal inet_addr(ptr) WINSOCK_inet_addr 11 pascal inet_ntoa(long) WINSOCK_inet_ntoa -12 pascal16 ioctlsocket(word long ptr) WINSOCK_ioctlsocket -13 pascal16 listen(word word) WINSOCK_listen +12 pascal16 ioctlsocket(word long ptr) WINSOCK_ioctlsocket16 +13 pascal16 listen(word word) WINSOCK_listen16 14 pascal ntohl(long) WINSOCK_ntohl 15 pascal16 ntohs(word) WINSOCK_ntohs -16 pascal16 recv(word ptr word word) WINSOCK_recv -17 pascal16 recvfrom(word ptr word word ptr ptr) WINSOCK_recvfrom -18 pascal16 select(word ptr ptr ptr ptr) WINSOCK_select -19 pascal16 send(word ptr word word) WINSOCK_send -20 pascal16 sendto(word ptr word word ptr word) WINSOCK_sendto -21 pascal16 setsockopt(word word word ptr word) WINSOCK_setsockopt -22 pascal16 shutdown(word word) WINSOCK_shutdown -23 pascal16 socket(word word word) WINSOCK_socket -51 pascal gethostbyaddr(ptr word word) WINSOCK_gethostbyaddr -52 pascal gethostbyname(ptr) WINSOCK_gethostbyname -53 pascal getprotobyname(ptr) WINSOCK_getprotobyname -54 pascal getprotobynumber(word) WINSOCK_getprotobynumber -55 pascal getservbyname(ptr ptr) WINSOCK_getservbyname -56 pascal getservbyport(word ptr) WINSOCK_getservbyport -57 pascal gethostname(ptr word) WINSOCK_gethostname +16 pascal16 recv(word ptr word word) WINSOCK_recv16 +17 pascal16 recvfrom(word ptr word word ptr ptr) WINSOCK_recvfrom16 +18 pascal16 select(word ptr ptr ptr ptr) WINSOCK_select16 +19 pascal16 send(word ptr word word) WINSOCK_send16 +20 pascal16 sendto(word ptr word word ptr word) WINSOCK_sendto16 +21 pascal16 setsockopt(word word word ptr word) WINSOCK_setsockopt16 +22 pascal16 shutdown(word word) WINSOCK_shutdown16 +23 pascal16 socket(word word word) WINSOCK_socket16 +51 pascal gethostbyaddr(ptr word word) WINSOCK_gethostbyaddr16 +52 pascal gethostbyname(ptr) WINSOCK_gethostbyname16 +53 pascal getprotobyname(ptr) WINSOCK_getprotobyname16 +54 pascal getprotobynumber(word) WINSOCK_getprotobynumber16 +55 pascal getservbyname(ptr ptr) WINSOCK_getservbyname16 +56 pascal getservbyport(word ptr) WINSOCK_getservbyport16 +57 pascal gethostname(ptr word) WINSOCK_gethostname16 101 pascal16 WSAAsyncSelect(word word word long) WSAAsyncSelect 102 pascal16 WSAAsyncGetHostByAddr(word word ptr word word segptr word) WSAAsyncGetHostByAddr @@ -53,9 +53,9 @@ 109 pascal16 WSASetBlockingHook(segptr) WSASetBlockingHook16 110 pascal16 WSAUnhookBlockingHook() WSAUnhookBlockingHook16 111 pascal16 WSAGetLastError() WSAGetLastError -112 pascal WSASetLastError(word) WSASetLastError +112 pascal WSASetLastError(word) WSASetLastError16 113 pascal16 WSACancelBlockingCall() WSACancelBlockingCall 114 pascal16 WSAIsBlocking() WSAIsBlocking -115 pascal WSAStartup(word ptr) WSAStartup +115 pascal WSAStartup(word ptr) WSAStartup16 116 pascal WSACleanup() WSACleanup -151 pascal16 __WSAFDIsSet(word ptr) __WSAFDIsSet +151 pascal16 __WSAFDIsSet(word ptr) __WSAFDIsSet16
diff --git a/if1632/winspool.spec b/if1632/winspool.spec index 12e16f6..ccc6dc7 100644 --- a/if1632/winspool.spec +++ b/if1632/winspool.spec
@@ -52,11 +52,11 @@ 048 stub DeletePrinterIC 049 stub DevQueryPrint 050 stub DeviceCapabilities -051 stub DeviceCapabilitiesA +051 stdcall DeviceCapabilitiesA(ptr ptr long ptr ptr) DeviceCapabilities32A 052 stub DeviceCapabilitiesW 053 stub DeviceMode 054 stub DocumentEvent -055 stub DocumentPropertiesA +055 stdcall DocumentPropertiesA(long long ptr ptr ptr long) DocumentProperties32A 056 stub DocumentPropertiesW 057 stub EXTDEVICEMODE 058 stub EndDocPrinter
diff --git a/if1632/wprocs.spec b/if1632/wprocs.spec index 2172fe7..48c1b4b 100644 --- a/if1632/wprocs.spec +++ b/if1632/wprocs.spec
@@ -1,7 +1,6 @@ name wprocs type win16 -1 pascal WINPROC_CallProc16To32A(word word word long long) WINPROC_CallProc16To32A 10 pascal MDIClientWndProc(word word word long) MDIClientWndProc 14 pascal FileOpenDlgProc(word word word long) FileOpenDlgProc 15 pascal FileSaveDlgProc(word word word long) FileSaveDlgProc @@ -11,7 +10,7 @@ 19 pascal PrintSetupDlgProc(word word word long) PrintSetupDlgProc 20 pascal PrintDlgProc(word word word long) PrintDlgProc 24 pascal16 TASK_Reschedule() TASK_Reschedule -27 pascal EntryAddrProc(word word) MODULE_GetEntryPoint +27 pascal EntryAddrProc(word word) EntryAddrProc 28 pascal MyAlloc(word word word) MODULE_AllocateSegment 30 pascal FormatCharDlgProc(word word word long) FormatCharDlgProc @@ -279,6 +278,7 @@ # #400+VXD_ID register <VxD handler>() <VxD handler> # +405 register VXD_Timer() VXD_Timer 414 register VXD_Comm() VXD_Comm #415 register VXD_Printer() VXD_Printer 423 register VXD_Shell() VXD_Shell
diff --git a/if1632/wsock32.spec b/if1632/wsock32.spec index 36893c2..1b36974 100644 --- a/if1632/wsock32.spec +++ b/if1632/wsock32.spec
@@ -2,36 +2,36 @@ type win32 base 0 -001 stdcall accept(long ptr ptr) WINSOCK_accept -002 stdcall bind(long ptr long) WINSOCK_bind -003 stdcall closesocket(long) WINSOCK_closesocket -004 stdcall connect(long ptr long) WINSOCK_connect -005 stub getpeername -006 stdcall getsockname(long ptr ptr) WINSOCK_getsockname -007 stub getsockopt +001 stdcall accept(long ptr ptr) WINSOCK_accept32 +002 stdcall bind(long ptr long) WINSOCK_bind32 +003 stdcall closesocket(long) WINSOCK_closesocket32 +004 stdcall connect(long ptr long) WINSOCK_connect32 +005 stdcall getpeername(long ptr ptr) WINSOCK_getpeername32 +006 stdcall getsockname(long ptr ptr) WINSOCK_getsockname32 +007 stdcall getsockopt(long long long ptr ptr) WINSOCK_getsockopt32 008 stdcall htonl(long) WINSOCK_htonl 009 stdcall htons(long) WINSOCK_htons 010 stdcall inet_addr(ptr) inet_addr 011 stdcall inet_ntoa(ptr) inet_ntoa -012 stub ioctlsocket -013 stub listen +012 stdcall ioctlsocket(long long ptr) WINSOCK_ioctlsocket32 +013 stdcall listen(long long) WINSOCK_listen32 014 stdcall ntohl(long) WINSOCK_ntohl 015 stdcall ntohs(long) WINSOCK_ntohs -016 stub recv -017 stub recvfrom -018 stub select -019 stub send -020 stub sendto -021 stub setsockopt -022 stub shutdown -023 stdcall socket(long long long) WINSOCK_socket -051 stdcall gethostbyaddr(ptr long long) WINSOCK_gethostbyaddr -052 stdcall gethostbyname(ptr) gethostbyname -053 stub getprotobyname -054 stub getprotobynumber -055 stdcall getservbyname(ptr ptr) getservbyname -056 stub getservbyport -057 stdcall gethostname(ptr long) gethostname +016 stdcall recv(long ptr long long) WINSOCK_recv32 +017 stdcall recvfrom(long ptr long long ptr ptr) WINSOCK_recvfrom32 +018 stdcall select(long ptr ptr ptr ptr) WINSOCK_select32 +019 stdcall send(long ptr long long) WINSOCK_send32 +020 stdcall sendto(long ptr long long ptr long) WINSOCK_sendto32 +021 stdcall setsockopt(long long long ptr long) WINSOCK_setsockopt32 +022 stdcall shutdown(long long) WINSOCK_shutdown32 +023 stdcall socket(long long long) WINSOCK_socket32 +051 stdcall gethostbyaddr(ptr long long) WINSOCK_gethostbyaddr32 +052 stdcall gethostbyname(ptr) WINSOCK_gethostbyname32 +053 stdcall getprotobyname(ptr) WINSOCK_getprotobyname32 +054 stdcall getprotobynumber(long) WINSOCK_getprotobynumber32 +055 stdcall getservbyname(ptr ptr) WINSOCK_getservbyname32 +056 stdcall getservbyport(long ptr) WINSOCK_getservbyport32 +057 stdcall gethostname(ptr long) WINSOCK_gethostname32 101 stub WSAAsyncSelect 102 stub WSAAsyncGetHostByAddr 103 stub WSAAsyncGetHostByName @@ -42,13 +42,13 @@ 108 stub WSACancelAsyncRequest 109 stdcall WSASetBlockingHook(ptr) WSASetBlockingHook32 110 stdcall WSAUnhookBlockingHook() WSAUnhookBlockingHook32 -111 stub WSAGetLastError -112 stub WSASetLastError -113 stub WSACancelBlockingCall -114 stub WSAIsBlocking -115 stdcall WSAStartup(long ptr) WSAStartup +111 stdcall WSAGetLastError() WSAGetLastError +112 stdcall WSASetLastError(long) WSASetLastError32 +113 stdcall WSACancelBlockingCall() WSACancelBlockingCall +114 stdcall WSAIsBlocking() WSAIsBlocking +115 stdcall WSAStartup(long ptr) WSAStartup32 116 stdcall WSACleanup() WSACleanup -151 stub __WSAFDIsSet +151 stdcall __WSAFDIsSet(long ptr) __WSAFDIsSet32 #500 stub WEP # applications *should* 'degrade gracefully if these are not present # ... as it is, they don't
diff --git a/include/bitmap.h b/include/bitmap.h index b6c6545..6ec1ad0 100644 --- a/include/bitmap.h +++ b/include/bitmap.h
@@ -53,6 +53,7 @@ extern INT16 BITMAP_GetObject16( BITMAPOBJ * bmp, INT16 count, LPVOID buffer ); extern INT32 BITMAP_GetObject32( BITMAPOBJ * bmp, INT32 count, LPVOID buffer ); extern BOOL32 BITMAP_DeleteObject( HBITMAP16 hbitmap, BITMAPOBJ * bitmap ); +extern XImage *BITMAP_GetXImage( const BITMAPOBJ *bmp ); /* objects/dib.c */ extern int DIB_GetDIBWidthBytes( int width, int depth );
diff --git a/include/button.h b/include/button.h index b0c7a1f..64c1c08 100644 --- a/include/button.h +++ b/include/button.h
@@ -28,7 +28,7 @@ #define BUTTON_STATE(hwnd) ((WIN_FindWndPtr(hwnd))->wExtra[0]) -extern LRESULT ButtonWndProc( HWND32 hWnd, UINT32 uMsg, - WPARAM32 wParam, LPARAM lParam ); +extern LRESULT WINAPI ButtonWndProc( HWND32 hWnd, UINT32 uMsg, + WPARAM32 wParam, LPARAM lParam ); #endif /* __WINE_BUTTON_H */
diff --git a/include/callback.h b/include/callback.h index c2d1020..4efb4e4 100644 --- a/include/callback.h +++ b/include/callback.h
@@ -10,17 +10,22 @@ #include "wintypes.h" #include "winnt.h" -extern -int CallTo32_LargeStack( int (*func)(), int nbargs, ... ); +extern int (*IF1632_CallLargeStack)( int (*func)(), void *arg ); + +#define CALL_LARGE_STACK(func,arg) \ + (IF1632_CallLargeStack ? \ + IF1632_CallLargeStack( (int(*)())(func), (void *)(arg) ) : \ + ((int(*)())(func))((void *)arg)) /* List of the 16-bit callback functions. This list is used */ /* by the build program to generate the file if1632/callto16.S */ #ifndef WINELIB -extern void CallTo16_regs_ ( const CONTEXT *context ); +extern LONG CallTo16_regs_ ( const CONTEXT *context ); extern WORD CallTo16_word_ ( FARPROC16 ); extern WORD CallTo16_word_w ( FARPROC16, WORD ); +extern LONG CallTo16_long_l ( FARPROC16, LONG ); extern WORD CallTo16_word_ww ( FARPROC16, WORD, WORD ); extern WORD CallTo16_word_wl ( FARPROC16, WORD, LONG ); extern WORD CallTo16_word_ll ( FARPROC16, LONG, LONG ); @@ -67,6 +72,14 @@ extern LONG CallTo32_3( FARPROC32, DWORD, DWORD, DWORD ); extern LONG CallTo32_4( FARPROC32, DWORD, DWORD, DWORD, DWORD ); extern LONG CallTo32_5( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD ); +extern LONG CallTo32_6( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD ); +extern LONG CallTo32_7( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD ); +extern LONG CallTo32_8( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD ); +extern LONG CallTo32_9( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD ); +extern LONG CallTo32_10( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD ); +extern LONG CallTo32_11( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD ); +extern LONG CallTo32_12( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD ); +extern LONG CallTo32_13( FARPROC32, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD ); #define CallTaskStart32( func ) \ CallTo32_0( func )
diff --git a/include/color.h b/include/color.h index 985c877..735e629 100644 --- a/include/color.h +++ b/include/color.h
@@ -17,7 +17,7 @@ extern void COLOR_Cleanup(void); extern COLORREF COLOR_ToLogical(int pixel); extern int COLOR_ToPhysical( DC *dc, COLORREF color ); -extern int COLOR_SetMapping( PALETTEOBJ* pal, BOOL32 mapOnly ); +extern int COLOR_SetMapping( PALETTEOBJ* pal, UINT32 uStart, UINT32 uNum, BOOL32 mapOnly ); extern BOOL32 COLOR_IsSolid( COLORREF color ); extern Colormap COLOR_GetColormap(); extern UINT16 COLOR_GetSystemPaletteSize();
diff --git a/include/combo.h b/include/combo.h index 7060bdb..a4a861e 100644 --- a/include/combo.h +++ b/include/combo.h
@@ -18,6 +18,7 @@ #define CBF_CAPTURE 0x0020 #define CBF_EDIT 0x0040 #define CBF_NORESIZE 0x0080 +#define CBF_NOTIFY 0x0100 #define CBF_EUI 0x8000 /* Combo state struct */
diff --git a/include/comm.h b/include/comm.h index 5f2b0af..e65df31 100644 --- a/include/comm.h +++ b/include/comm.h
@@ -1,7 +1,7 @@ #ifndef __WINE_COMM_H #define __WINE_COMM_H -#define MAX_PORTS 16 +#define MAX_PORTS 9 struct DosDeviceStruct { char *devicename; /* /dev/cua1 */
diff --git a/include/commctrl.h b/include/commctrl.h index a16e7bf..7e6d09d 100644 --- a/include/commctrl.h +++ b/include/commctrl.h
@@ -7,7 +7,7 @@ #include "windows.h" -void InitCommonControls(void); +void WINAPI InitCommonControls(void); /* StatusWindow */ @@ -41,11 +41,61 @@ #define CCS_BOTTOM 0x0003 #define SBARS_SIZEGRIP 0x0100 -HWND32 CreateStatusWindow32A(INT32,LPCSTR,HWND32,UINT32); -HWND32 CreateStatusWindow32W(INT32,LPCWSTR,HWND32,UINT32); +/* UpDown control */ + +#define UPDOWN_CLASS32A "msctls_updown32" +#define UPDOWN_CLASS32W "msctls_updown32" +#define UPDOWN_CLASS16 "msctls_updown" +#define UPDOWN_CLASS WINELIB_NAME_AW(UPDOWN_CLASS) + +typedef struct tagUDACCEL +{ + UINT32 nSec; + UINT32 nInc; +} UDACCEL; + +typedef struct tagNM_UPDOWN +{ + NMHDR hdr; + int iPos; + int iDelta; +} NM_UPDOWN; + +#define UD_MAXVAL 0x7fff +#define UD_MINVAL 0x8001 + +#define UDS_WRAP 0x0001 +#define UDS_SETBUDDYINT 0x0002 +#define UDS_ALIGNRIGHT 0x0004 +#define UDS_ALIGNLEFT 0x0008 +#define UDS_AUTOBUDDY 0x0010 +#define UDS_ARROWKEYS 0x0020 +#define UDS_HORZ 0x0040 +#define UDS_NOTHOUSANDS 0x0080 + +#define UDN_FIRST (0U-721) +#define UDN_DELTAPOS (UDN_FIRST - 1) + +#define UDM_SETRANGE (WM_USER+101) +#define UDM_GETRANGE (WM_USER+102) +#define UDM_SETPOS (WM_USER+103) +#define UDM_GETPOS (WM_USER+104) +#define UDM_SETBUDDY (WM_USER+105) +#define UDM_GETBUDDY (WM_USER+106) +#define UDM_SETACCEL (WM_USER+107) +#define UDM_GETACCEL (WM_USER+108) +#define UDM_SETBASE (WM_USER+109) +#define UDM_GETBASE (WM_USER+110) + +/* Functions prototypes */ + +HWND32 WINAPI CreateStatusWindow32A(INT32,LPCSTR,HWND32,UINT32); +HWND32 WINAPI CreateStatusWindow32W(INT32,LPCWSTR,HWND32,UINT32); #define CreateStatusWindow WINELIB_NAME_AW(CreateStatusWindow) -VOID DrawStatusText32A(HDC32,LPRECT32,LPCSTR,UINT32); -VOID DrawStatusText32W(HDC32,LPRECT32,LPCWSTR,UINT32); +HWND32 WINAPI CreateUpDownControl(DWORD,INT32,INT32,INT32,INT32,HWND32, + INT32,HINSTANCE32,HWND32,INT32,INT32,INT32); +VOID WINAPI DrawStatusText32A(HDC32,LPRECT32,LPCSTR,UINT32); +VOID WINAPI DrawStatusText32W(HDC32,LPRECT32,LPCWSTR,UINT32); #define DrawStatusText WINELIB_NAME_AW(DrawStatusText) #endif /* __WINE_COMMCTRL_H */
diff --git a/include/commdlg.h b/include/commdlg.h index 61ac06f..01d7bb7 100644 --- a/include/commdlg.h +++ b/include/commdlg.h
@@ -325,33 +325,32 @@ #define CDERR_NOHOOK 0x000B #define CDERR_REGISTERMSGFAIL 0x000C -BOOL16 ChooseColor(LPCHOOSECOLOR lpChCol); -DWORD CommDlgExtendedError(void); -HWND16 FindText( SEGPTR find); -INT16 GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf); -INT16 GetFileTitle32A(LPCSTR lpFile, LPSTR lpTitle, UINT32 cbBuf); -INT16 GetFileTitle32W(LPCWSTR lpFile, LPWSTR lpTitle, UINT32 cbBuf); +BOOL16 WINAPI ChooseColor(LPCHOOSECOLOR lpChCol); +DWORD WINAPI CommDlgExtendedError(void); +HWND16 WINAPI FindText( SEGPTR find); +INT16 WINAPI GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf); +INT16 WINAPI GetFileTitle32A(LPCSTR lpFile, LPSTR lpTitle, UINT32 cbBuf); +INT16 WINAPI GetFileTitle32W(LPCWSTR lpFile, LPWSTR lpTitle, UINT32 cbBuf); #define GetFileTitle WINELIB_NAME_AW(GetFileTitle) -BOOL16 GetOpenFileName16(SEGPTR ofn); -BOOL32 GetOpenFileName32A(LPOPENFILENAME32A ofn); -BOOL32 GetOpenFileName32W(LPOPENFILENAME32W ofn); +BOOL16 WINAPI GetOpenFileName16(SEGPTR ofn); +BOOL32 WINAPI GetOpenFileName32A(LPOPENFILENAME32A ofn); +BOOL32 WINAPI GetOpenFileName32W(LPOPENFILENAME32W ofn); #define GetOpenFileName WINELIB_NAME_AW(GetOpenFileName) -BOOL16 GetSaveFileName16(SEGPTR ofn); -BOOL32 GetSaveFileName32A(LPOPENFILENAME32A ofn); -BOOL32 GetSaveFileName32W(LPOPENFILENAME32W ofn); +BOOL16 WINAPI GetSaveFileName16(SEGPTR ofn); +BOOL32 WINAPI GetSaveFileName32A(LPOPENFILENAME32A ofn); +BOOL32 WINAPI GetSaveFileName32W(LPOPENFILENAME32W ofn); #define GetSaveFileName WINELIB_NAME_AW(GetSaveFileName) -BOOL16 PrintDlg( SEGPTR print); -HWND16 ReplaceText( SEGPTR find); -BOOL16 ChooseFont(LPCHOOSEFONT lpChFont); - -LRESULT FileOpenDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); -LRESULT FileSaveDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); -LRESULT ColorDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); -LRESULT FindTextDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); -LRESULT ReplaceTextDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); -LRESULT PrintDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); -LRESULT PrintSetupDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); -LRESULT FormatCharDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); +BOOL16 WINAPI PrintDlg( SEGPTR print); +HWND16 WINAPI ReplaceText( SEGPTR find); +BOOL16 WINAPI ChooseFont(LPCHOOSEFONT lpChFont); +LRESULT WINAPI FileOpenDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); +LRESULT WINAPI FileSaveDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); +LRESULT WINAPI ColorDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); +LRESULT WINAPI FindTextDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); +LRESULT WINAPI ReplaceTextDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); +LRESULT WINAPI PrintDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); +LRESULT WINAPI PrintSetupDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); +LRESULT WINAPI FormatCharDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam); #ifdef __cplusplus }
diff --git a/include/compobj.h b/include/compobj.h index baa348f..fb0d7ad 100644 --- a/include/compobj.h +++ b/include/compobj.h
@@ -10,7 +10,7 @@ typedef struct tagCLSID CLSID; -OLESTATUS StringFromCLSID(const CLSID *id, LPSTR); -OLESTATUS CLSIDFromString(const LPCSTR, CLSID *); +OLESTATUS WINAPI StringFromCLSID(const CLSID *id, LPSTR); +OLESTATUS WINAPI CLSIDFromString(const LPCSTR, CLSID *); #endif
diff --git a/include/debug.h b/include/debug.h index 3308a57..9cc2e9a 100644 --- a/include/debug.h +++ b/include/debug.h
@@ -80,6 +80,7 @@ #undef DEBUG_TIMER #undef DEBUG_TOOLHELP #undef DEBUG_TWEAK +#undef DEBUG_UPDOWN #undef DEBUG_VER #undef DEBUG_VIRTUAL #undef DEBUG_VXD @@ -164,6 +165,7 @@ #define DEBUG_TIMER #define DEBUG_TOOLHELP #define DEBUG_TWEAK +#define DEBUG_UPDOWN #define DEBUG_VER #define DEBUG_VIRTUAL #define DEBUG_VXD @@ -546,6 +548,11 @@ #else 0, #endif +#ifdef DEBUG_UPDOWN + 1, +#else + 0, +#endif #ifdef DEBUG_VER 1, #else @@ -1551,8 +1558,21 @@ #endif #ifdef DEBUG_RUNTIME -#define dprintf_ver if(!debug_msg_enabled[74]) ; else fprintf -#define debugging_ver debug_msg_enabled[74] +#define dprintf_updown if(!debug_msg_enabled[74]) ; else fprintf +#define debugging_updown debug_msg_enabled[74] +#else +#ifdef DEBUG_UPDOWN +#define dprintf_updown fprintf +#define debugging_updown 1 +#else +#define dprintf_updown while(0) fprintf +#define debugging_updown 0 +#endif +#endif + +#ifdef DEBUG_RUNTIME +#define dprintf_ver if(!debug_msg_enabled[75]) ; else fprintf +#define debugging_ver debug_msg_enabled[75] #else #ifdef DEBUG_VER #define dprintf_ver fprintf @@ -1564,8 +1584,8 @@ #endif #ifdef DEBUG_RUNTIME -#define dprintf_virtual if(!debug_msg_enabled[75]) ; else fprintf -#define debugging_virtual debug_msg_enabled[75] +#define dprintf_virtual if(!debug_msg_enabled[76]) ; else fprintf +#define debugging_virtual debug_msg_enabled[76] #else #ifdef DEBUG_VIRTUAL #define dprintf_virtual fprintf @@ -1577,8 +1597,8 @@ #endif #ifdef DEBUG_RUNTIME -#define dprintf_vxd if(!debug_msg_enabled[76]) ; else fprintf -#define debugging_vxd debug_msg_enabled[76] +#define dprintf_vxd if(!debug_msg_enabled[77]) ; else fprintf +#define debugging_vxd debug_msg_enabled[77] #else #ifdef DEBUG_VXD #define dprintf_vxd fprintf @@ -1590,8 +1610,8 @@ #endif #ifdef DEBUG_RUNTIME -#define dprintf_win if(!debug_msg_enabled[77]) ; else fprintf -#define debugging_win debug_msg_enabled[77] +#define dprintf_win if(!debug_msg_enabled[78]) ; else fprintf +#define debugging_win debug_msg_enabled[78] #else #ifdef DEBUG_WIN #define dprintf_win fprintf @@ -1603,8 +1623,8 @@ #endif #ifdef DEBUG_RUNTIME -#define dprintf_win16drv if(!debug_msg_enabled[78]) ; else fprintf -#define debugging_win16drv debug_msg_enabled[78] +#define dprintf_win16drv if(!debug_msg_enabled[79]) ; else fprintf +#define debugging_win16drv debug_msg_enabled[79] #else #ifdef DEBUG_WIN16DRV #define dprintf_win16drv fprintf @@ -1616,8 +1636,8 @@ #endif #ifdef DEBUG_RUNTIME -#define dprintf_win32 if(!debug_msg_enabled[79]) ; else fprintf -#define debugging_win32 debug_msg_enabled[79] +#define dprintf_win32 if(!debug_msg_enabled[80]) ; else fprintf +#define debugging_win32 debug_msg_enabled[80] #else #ifdef DEBUG_WIN32 #define dprintf_win32 fprintf @@ -1629,8 +1649,8 @@ #endif #ifdef DEBUG_RUNTIME -#define dprintf_winsock if(!debug_msg_enabled[80]) ; else fprintf -#define debugging_winsock debug_msg_enabled[80] +#define dprintf_winsock if(!debug_msg_enabled[81]) ; else fprintf +#define debugging_winsock debug_msg_enabled[81] #else #ifdef DEBUG_WINSOCK #define dprintf_winsock fprintf @@ -1719,6 +1739,7 @@ "timer", "toolhelp", "tweak", + "updown", "ver", "virtual", "vxd",
diff --git a/include/debugger.h b/include/debugger.h index a6670ce..bf9ee7a 100644 --- a/include/debugger.h +++ b/include/debugger.h
@@ -9,7 +9,7 @@ #include "winnt.h" #include "selectors.h" -#include "sigcontext.h" +#include "sig_context.h" #include "pe_image.h" #define STEP_FLAG 0x100 /* single step flag */
diff --git a/include/desktop.h b/include/desktop.h index 129f96e..7e8085f 100644 --- a/include/desktop.h +++ b/include/desktop.h
@@ -18,7 +18,7 @@ } DESKTOPINFO; extern BOOL32 DESKTOP_SetPattern( LPCSTR pattern ); -extern LRESULT DesktopWndProc( HWND32 hwnd, UINT32 message, - WPARAM32 wParam, LPARAM lParam ); +extern LRESULT WINAPI DesktopWndProc( HWND32 hwnd, UINT32 message, + WPARAM32 wParam, LPARAM lParam ); #endif /* __WINE_DESKTOP_H */
diff --git a/include/driver.h b/include/driver.h index 3eb7b7d..54fed12 100644 --- a/include/driver.h +++ b/include/driver.h
@@ -57,14 +57,15 @@ DRIVERPROC16 lpDrvProc; } DRIVERITEM, *LPDRIVERITEM; -LRESULT DefDriverProc(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg, - LPARAM dwParam1, LPARAM dwParam2); -HDRVR16 OpenDriver(LPSTR szDriverName, LPSTR szSectionName, LPARAM lParam2); -LRESULT CloseDriver(HDRVR16 hDriver, LPARAM lParam1, LPARAM lParam2); -LRESULT SendDriverMessage( HDRVR16 hDriver, UINT16 message, LPARAM lParam1, - LPARAM lParam2 ); -HMODULE16 GetDriverModuleHandle(HDRVR16 hDriver); -HDRVR16 GetNextDriver(HDRVR16, DWORD); -BOOL16 GetDriverInfo(HDRVR16, DRIVERINFOSTRUCT16 *); +LRESULT WINAPI DefDriverProc(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg, + LPARAM dwParam1, LPARAM dwParam2); +HDRVR16 WINAPI OpenDriver(LPSTR szDriverName, LPSTR szSectionName, + LPARAM lParam2); +LRESULT WINAPI CloseDriver(HDRVR16 hDriver, LPARAM lParam1, LPARAM lParam2); +LRESULT WINAPI SendDriverMessage( HDRVR16 hDriver, UINT16 message, + LPARAM lParam1, LPARAM lParam2 ); +HMODULE16 WINAPI GetDriverModuleHandle(HDRVR16 hDriver); +HDRVR16 WINAPI GetNextDriver(HDRVR16, DWORD); +BOOL16 WINAPI GetDriverInfo(HDRVR16, DRIVERINFOSTRUCT16 *); #endif /* __WINE_DRIVER_H */
diff --git a/include/except.h b/include/except.h index d55146b..8028060 100644 --- a/include/except.h +++ b/include/except.h
@@ -15,7 +15,7 @@ /* forward definition */ struct __EXCEPTION_FRAME; -typedef DWORD ( *PEXCEPTION_HANDLER)( PEXCEPTION_RECORD pexcrec, +typedef DWORD (CALLBACK *PEXCEPTION_HANDLER)( PEXCEPTION_RECORD pexcrec, struct __EXCEPTION_FRAME *pestframe, PCONTEXT pcontext, LPVOID pdispatcher); @@ -36,9 +36,9 @@ * Function definitions */ -void RaiseException(DWORD exccode, DWORD excflags, - DWORD nargs, const LPDWORD pargs, - PCONTEXT pcontext /* Wine additional parameter */ ); +void WINAPI RaiseException(DWORD exccode, DWORD excflags, + DWORD nargs, const LPDWORD pargs, + PCONTEXT pcontext /* Wine additional parameter */); /* * this undocumented function is called when an exception @@ -54,10 +54,10 @@ * context. */ -void RtlUnwind( PEXCEPTION_FRAME pestframe, - LPVOID unusedEIP, - PEXCEPTION_RECORD pexcrec, - DWORD contextEAX, - PCONTEXT pcontext /* Wine additional parameter */ ); +void WINAPI RtlUnwind( PEXCEPTION_FRAME pestframe, + LPVOID unusedEIP, + PEXCEPTION_RECORD pexcrec, + DWORD contextEAX, + PCONTEXT pcontext /* Wine additional parameter */ ); #endif /* __WINE_EXCEPT_H */
diff --git a/include/gdi.h b/include/gdi.h index 42d66cb..817fdf7 100644 --- a/include/gdi.h +++ b/include/gdi.h
@@ -273,14 +273,21 @@ #define GDI_HEAP_ALLOC(size) \ LOCAL_Alloc( GDI_HeapSel, LMEM_FIXED, (size) ) +#define GDI_HEAP_ALLOC_MOVEABLE(size) \ + LOCAL_Alloc( GDI_HeapSel, LMEM_MOVEABLE, (size) ) #define GDI_HEAP_REALLOC(handle,size) \ LOCAL_ReAlloc( GDI_HeapSel, (handle), (size), LMEM_FIXED ) #define GDI_HEAP_FREE(handle) \ LOCAL_Free( GDI_HeapSel, (handle) ) -#define GDI_HEAP_LIN_ADDR(handle) \ - ((handle) ? PTR_SEG_OFF_TO_LIN(GDI_HeapSel, (handle)) : NULL) -#define GDI_HEAP_SEG_ADDR(handle) \ - ((handle) ? PTR_SEG_OFF_TO_SEGPTR(GDI_HeapSel, (handle)) : (SEGPTR)0) + +#define GDI_HEAP_LOCK(handle) \ + LOCAL_Lock( GDI_HeapSel, (handle) ) +#define GDI_HEAP_LOCK_SEGPTR(handle) \ + LOCAL_LockSegptr( GDI_HeapSel, (handle) ) +#define GDI_HEAP_UNLOCK(handle) \ + ((((HGDIOBJ16)(handle) >= FIRST_STOCK_HANDLE) && \ + ((HGDIOBJ16)(handle)<=LAST_STOCK_HANDLE)) ? \ + 0 : LOCAL_Unlock( GDI_HeapSel, (handle) )) extern BOOL32 GDI_Init(void); extern HGDIOBJ16 GDI_AllocObject( WORD, WORD );
diff --git a/include/listbox.h b/include/listbox.h deleted file mode 100644 index 27cee05..0000000 --- a/include/listbox.h +++ /dev/null
@@ -1,71 +0,0 @@ -/* - * Listbox definitions - */ - -typedef struct tagLISTSTRUCT { - MEASUREITEMSTRUCT16 mis; - UINT16 itemState; - RECT16 itemRect; - HLOCAL16 hData; - char *itemText; - struct tagLISTSTRUCT *lpNext; -} LISTSTRUCT, *LPLISTSTRUCT; - -typedef struct { - WORD FirstVisible; - WORD ItemsCount; - WORD ItemsVisible; - WORD ColumnsVisible; - WORD ItemsPerColumn; - short ItemFocused; - short PrevFocused; - WORD StdItemHeight; - WORD ColumnsWidth; - WORD DrawCtlType; - WORD CtlID; - LPLISTSTRUCT lpFirst; - HWND16 hSelf; - DWORD dwStyle; /* added for COMBOLBOX style faking */ - HWND16 hParent; - HFONT16 hFont; - BOOL32 bRedrawFlag; - BOOL32 HasStrings; - BOOL32 OwnerDrawn; - WORD iNumStops; - LPINT16 TabStops; - BOOL32 needMeasure; - HGLOBAL16 HeapSel; -/* MDESC *Heap; */ -} HEADLIST,*LPHEADLIST; - -/* shared code between listbox and combo controls */ -extern void CreateListBoxStruct(HWND16 hwnd, WORD CtlType, LONG styles, HWND16 parent); -extern void DestroyListBoxStruct(LPHEADLIST lphl); - -extern void ListBoxSendNotification(LPHEADLIST lphl, WORD code); - -extern LPLISTSTRUCT ListBoxGetItem(LPHEADLIST lphl, UINT16 uIndex); -extern int ListMaxFirstVisible(LPHEADLIST lphl); -extern int ListBoxScrollToFocus(LPHEADLIST lphl); -extern int ListBoxAddString(LPHEADLIST lphl, SEGPTR itemData); -extern int ListBoxInsertString(LPHEADLIST lphl, UINT16 uIndex, LPCSTR newstr); -extern int ListBoxGetText(LPHEADLIST lphl, UINT16 uIndex, LPSTR OutStr); -extern DWORD ListBoxGetItemData(LPHEADLIST lphl, UINT16 uIndex); -extern int ListBoxSetItemData(LPHEADLIST lphl, UINT16 uIndex, DWORD ItemData); -extern int ListBoxDeleteString(LPHEADLIST lphl, UINT16 uIndex); -extern int ListBoxFindString(LPHEADLIST lphl, UINT16 nFirst, SEGPTR MatchStr); -extern int ListBoxFindStringExact(LPHEADLIST lphl, UINT16 nFirst, SEGPTR MatchStr); -extern int ListBoxResetContent(LPHEADLIST lphl); -extern int ListBoxSetCurSel(LPHEADLIST lphl, WORD wIndex); -extern int ListBoxSetSel(LPHEADLIST lphl, WORD wIndex, WORD state); -extern int ListBoxGetSel(LPHEADLIST lphl, WORD wIndex); -extern LONG ListBoxDirectory(LPHEADLIST lphl, UINT16 attrib, LPCSTR filespec); -extern int ListBoxGetItemRect(LPHEADLIST lphl, WORD wIndex, LPRECT16 rect); -extern int ListBoxSetItemHeight(LPHEADLIST lphl, WORD wIndex, long height); -extern int ListBoxFindNextMatch(LPHEADLIST lphl, WORD wChar); - -extern void ListBoxDrawItem (HWND16 hwnd, LPHEADLIST lphl, HDC16 hdc, - LPLISTSTRUCT lpls, RECT16 *rect, WORD itemAction, - WORD itemState); -extern int ListBoxFindMouse(LPHEADLIST lphl, int X, int Y); -extern void ListBoxAskMeasure(LPHEADLIST lphl, LPLISTSTRUCT lpls);
diff --git a/include/mdi.h b/include/mdi.h index 812580c..38e5872 100644 --- a/include/mdi.h +++ b/include/mdi.h
@@ -20,8 +20,8 @@ #define WM_MDICALCCHILDSCROLL 0x10AC /* this is exactly what Windows uses */ -extern LRESULT MDIClientWndProc(HWND16 hwnd, UINT16 message, - WPARAM16 wParam, LPARAM lParam); /* mdi.c */ +extern LRESULT WINAPI MDIClientWndProc(HWND16 hwnd, UINT16 message, + WPARAM16 wParam, LPARAM lParam); typedef struct {
diff --git a/include/menu.h b/include/menu.h index 121c091..c270b84 100644 --- a/include/menu.h +++ b/include/menu.h
@@ -7,7 +7,6 @@ extern BOOL32 MENU_Init(void); extern HMENU32 MENU_GetSysMenu(HWND32 hWndOwner, HMENU32 hSysPopup); -extern void MENU_InitSysMenuPopup(HMENU32 hmenu, DWORD style, DWORD clsStyle); extern UINT32 MENU_GetMenuBarHeight( HWND32 hwnd, UINT32 menubarWidth, INT32 orgX, INT32 orgY ); extern void MENU_TrackMouseMenuBar( WND *wnd, INT32 ht, POINT32 pt );
diff --git a/include/message.h b/include/message.h index 8a59d79..ecf33c4 100644 --- a/include/message.h +++ b/include/message.h
@@ -26,8 +26,12 @@ extern BOOL32 TIMER_GetTimerMsg( MSG16 *msg, HWND32 hwnd, HQUEUE16 hQueue, BOOL32 remove ); +#define EVENT_IO_READ 0 +#define EVENT_IO_WRITE 1 +#define EVENT_IO_EXCEPT 2 + /* event.c */ -extern BOOL32 EVENT_WaitXEvent( BOOL32 sleep, BOOL32 peek ); +extern BOOL32 EVENT_WaitNetEvent( BOOL32 sleep, BOOL32 peek ); extern void EVENT_Synchronize(void); extern void EVENT_ProcessEvent( XEvent *event ); extern void EVENT_RegisterWindow( WND *pWnd );
diff --git a/include/mmsystem.h b/include/mmsystem.h index 2941b4a..4735202 100644 --- a/include/mmsystem.h +++ b/include/mmsystem.h
@@ -108,7 +108,7 @@ #define CALLBACK_TASK 0x00020000l /* dwCallback is a HTASK */ #define CALLBACK_FUNCTION 0x00030000l /* dwCallback is a FARPROC */ -typedef void (*LPDRVCALLBACK) (HDRVR16 h, UINT16 uMessage, DWORD dwUser, DWORD dw1, DWORD dw2); +typedef void (CALLBACK *LPDRVCALLBACK) (HDRVR16 h, UINT16 uMessage, DWORD dwUser, DWORD dw1, DWORD dw2); #define MM_MICROSOFT 1 /* Microsoft Corp. */ @@ -129,10 +129,8 @@ #define MM_PC_JOYSTICK 12 /* Joystick adapter */ -WORD mmsystemGetVersion(void); -void OutputDebugStr(LPCSTR); - -BOOL16 sndPlaySound(LPCSTR lpszSoundName, UINT16 uFlags); +WORD WINAPI mmsystemGetVersion(void); +BOOL16 WINAPI sndPlaySound(LPCSTR lpszSoundName, UINT16 uFlags); #define SND_SYNC 0x0000 /* play synchronously (default) */ #define SND_ASYNC 0x0001 /* play asynchronously */ @@ -237,57 +235,60 @@ WORD wBitsPerSample; } PCMWAVEFORMAT, *LPPCMWAVEFORMAT; -UINT16 waveOutGetNumDevs(void); -UINT16 waveOutGetDevCaps(UINT16 uDeviceID, WAVEOUTCAPS * lpCaps, - UINT16 uSize); -UINT16 waveOutGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume); -UINT16 waveOutSetVolume(UINT16 uDeviceID, DWORD dwVolume); -UINT16 waveOutGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); -UINT16 waveGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); -UINT16 waveOutOpen(HWAVEOUT16 * lphWaveOut, UINT16 uDeviceID, +UINT16 WINAPI waveOutGetNumDevs(void); +UINT16 WINAPI waveOutGetDevCaps(UINT16 uDeviceID, WAVEOUTCAPS * lpCaps, + UINT16 uSize); +UINT16 WINAPI waveOutGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume); +UINT16 WINAPI waveOutSetVolume(UINT16 uDeviceID, DWORD dwVolume); +UINT16 WINAPI waveOutGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); +UINT16 WINAPI waveGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); +UINT16 WINAPI waveOutOpen(HWAVEOUT16 * lphWaveOut, UINT16 uDeviceID, const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags); -UINT16 waveOutClose(HWAVEOUT16 hWaveOut); -UINT16 waveOutPrepareHeader(HWAVEOUT16 hWaveOut, - WAVEHDR * lpWaveOutHdr, UINT16 uSize); -UINT16 waveOutUnprepareHeader(HWAVEOUT16 hWaveOut, - WAVEHDR * lpWaveOutHdr, UINT16 uSize); -UINT16 waveOutWrite(HWAVEOUT16 hWaveOut, WAVEHDR * lpWaveOutHdr, - UINT16 uSize); -UINT16 waveOutPause(HWAVEOUT16 hWaveOut); -UINT16 waveOutRestart(HWAVEOUT16 hWaveOut); -UINT16 waveOutReset(HWAVEOUT16 hWaveOut); -UINT16 waveOutBreakLoop(HWAVEOUT16 hWaveOut); -UINT16 waveOutGetPosition(HWAVEOUT16 hWaveOut, MMTIME * lpInfo, - UINT16 uSize); -UINT16 waveOutGetPitch(HWAVEOUT16 hWaveOut, DWORD * lpdwPitch); -UINT16 waveOutSetPitch(HWAVEOUT16 hWaveOut, DWORD dwPitch); -UINT16 waveOutGetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD * lpdwRate); -UINT16 waveOutSetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD dwRate); -UINT16 waveOutGetID(HWAVEOUT16 hWaveOut, UINT16 * lpuDeviceID); +UINT16 WINAPI waveOutClose(HWAVEOUT16 hWaveOut); +UINT16 WINAPI waveOutPrepareHeader(HWAVEOUT16 hWaveOut, + WAVEHDR *lpWaveOutHdr, UINT16 uSize); +UINT16 WINAPI waveOutUnprepareHeader(HWAVEOUT16 hWaveOut, + WAVEHDR *lpWaveOutHdr, UINT16 uSize); +UINT16 WINAPI waveOutWrite(HWAVEOUT16 hWaveOut, WAVEHDR * lpWaveOutHdr, + UINT16 uSize); +UINT16 WINAPI waveOutPause(HWAVEOUT16 hWaveOut); +UINT16 WINAPI waveOutRestart(HWAVEOUT16 hWaveOut); +UINT16 WINAPI waveOutReset(HWAVEOUT16 hWaveOut); +UINT16 WINAPI waveOutBreakLoop(HWAVEOUT16 hWaveOut); +UINT16 WINAPI waveOutGetPosition(HWAVEOUT16 hWaveOut, MMTIME * lpInfo, + UINT16 uSize); +UINT16 WINAPI waveOutGetPitch(HWAVEOUT16 hWaveOut, DWORD * lpdwPitch); +UINT16 WINAPI waveOutSetPitch(HWAVEOUT16 hWaveOut, DWORD dwPitch); +UINT16 WINAPI waveOutGetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD * lpdwRate); +UINT16 WINAPI waveOutSetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD dwRate); +UINT16 WINAPI waveOutGetID(HWAVEOUT16 hWaveOut, UINT16 * lpuDeviceID); -DWORD waveOutMessage(HWAVEOUT16 hWaveOut, UINT16 uMessage, DWORD dw1, DWORD dw2); +DWORD WINAPI waveOutMessage(HWAVEOUT16 hWaveOut, UINT16 uMessage, DWORD dw1, + DWORD dw2); -UINT16 waveInGetNumDevs(void); -UINT16 waveInGetDevCaps(UINT16 uDeviceID, WAVEINCAPS * lpCaps, - UINT16 uSize); -UINT16 waveInGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); -UINT16 waveInOpen(HWAVEIN16 * lphWaveIn, UINT16 uDeviceID, - const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags); -UINT16 waveInClose(HWAVEIN16 hWaveIn); -UINT16 waveInPrepareHeader(HWAVEIN16 hWaveIn, - WAVEHDR * lpWaveInHdr, UINT16 uSize); -UINT16 waveInUnprepareHeader(HWAVEIN16 hWaveIn, - WAVEHDR * lpWaveInHdr, UINT16 uSize); -UINT16 waveInAddBuffer(HWAVEIN16 hWaveIn, - WAVEHDR * lpWaveInHdr, UINT16 uSize); -UINT16 waveInStart(HWAVEIN16 hWaveIn); -UINT16 waveInStop(HWAVEIN16 hWaveIn); -UINT16 waveInReset(HWAVEIN16 hWaveIn); -UINT16 waveInGetPosition(HWAVEIN16 hWaveIn, MMTIME * lpInfo, - UINT16 uSize); -UINT16 waveInGetID(HWAVEIN16 hWaveIn, UINT16 * lpuDeviceID); +UINT16 WINAPI waveInGetNumDevs(void); +UINT16 WINAPI waveInGetDevCaps(UINT16 uDeviceID, WAVEINCAPS * lpCaps, + UINT16 uSize); +UINT16 WINAPI waveInGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); +UINT16 WINAPI waveInOpen(HWAVEIN16 * lphWaveIn, UINT16 uDeviceID, + const LPWAVEFORMAT lpFormat, DWORD dwCallback, + DWORD dwInstance, DWORD dwFlags); +UINT16 WINAPI waveInClose(HWAVEIN16 hWaveIn); +UINT16 WINAPI waveInPrepareHeader(HWAVEIN16 hWaveIn, WAVEHDR * lpWaveInHdr, + UINT16 uSize); +UINT16 WINAPI waveInUnprepareHeader(HWAVEIN16 hWaveIn, WAVEHDR * lpWaveInHdr, + UINT16 uSize); +UINT16 WINAPI waveInAddBuffer(HWAVEIN16 hWaveIn, WAVEHDR * lpWaveInHdr, + UINT16 uSize); +UINT16 WINAPI waveInStart(HWAVEIN16 hWaveIn); +UINT16 WINAPI waveInStop(HWAVEIN16 hWaveIn); +UINT16 WINAPI waveInReset(HWAVEIN16 hWaveIn); +UINT16 WINAPI waveInGetPosition(HWAVEIN16 hWaveIn, MMTIME * lpInfo, + UINT16 uSize); +UINT16 WINAPI waveInGetID(HWAVEIN16 hWaveIn, UINT16 * lpuDeviceID); -DWORD waveInMessage(HWAVEIN16 hWaveIn, UINT16 uMessage, DWORD dw1, DWORD dw2); +DWORD WINAPI waveInMessage(HWAVEIN16 hWaveIn, UINT16 uMessage, DWORD dw1, + DWORD dw2); #define MIDIERR_UNPREPARED (MIDIERR_BASE + 0) /* header not prepared */ #define MIDIERR_STILLPLAYING (MIDIERR_BASE + 1) /* still something playing */ @@ -370,51 +371,51 @@ #define MHDR_PREPARED 0x00000002 /* set if header prepared */ #define MHDR_INQUEUE 0x00000004 /* reserved for driver */ -UINT16 midiOutGetNumDevs(void); -UINT16 midiOutGetDevCaps(UINT16 uDeviceID, +UINT16 WINAPI midiOutGetNumDevs(void); +UINT16 WINAPI midiOutGetDevCaps(UINT16 uDeviceID, MIDIOUTCAPS * lpCaps, UINT16 uSize); -UINT16 midiOutGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume); -UINT16 midiOutSetVolume(UINT16 uDeviceID, DWORD dwVolume); -UINT16 midiOutGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); -UINT16 midiGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); -UINT16 midiOutOpen(HMIDIOUT16 * lphMidiOut, UINT16 uDeviceID, +UINT16 WINAPI midiOutGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume); +UINT16 WINAPI midiOutSetVolume(UINT16 uDeviceID, DWORD dwVolume); +UINT16 WINAPI midiOutGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); +UINT16 WINAPI midiGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); +UINT16 WINAPI midiOutOpen(HMIDIOUT16 * lphMidiOut, UINT16 uDeviceID, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags); -UINT16 midiOutClose(HMIDIOUT16 hMidiOut); -UINT16 midiOutPrepareHeader(HMIDIOUT16 hMidiOut, +UINT16 WINAPI midiOutClose(HMIDIOUT16 hMidiOut); +UINT16 WINAPI midiOutPrepareHeader(HMIDIOUT16 hMidiOut, MIDIHDR * lpMidiOutHdr, UINT16 uSize); -UINT16 midiOutUnprepareHeader(HMIDIOUT16 hMidiOut, +UINT16 WINAPI midiOutUnprepareHeader(HMIDIOUT16 hMidiOut, MIDIHDR * lpMidiOutHdr, UINT16 uSize); -UINT16 midiOutShortMsg(HMIDIOUT16 hMidiOut, DWORD dwMsg); -UINT16 midiOutLongMsg(HMIDIOUT16 hMidiOut, +UINT16 WINAPI midiOutShortMsg(HMIDIOUT16 hMidiOut, DWORD dwMsg); +UINT16 WINAPI midiOutLongMsg(HMIDIOUT16 hMidiOut, MIDIHDR * lpMidiOutHdr, UINT16 uSize); -UINT16 midiOutReset(HMIDIOUT16 hMidiOut); -UINT16 midiOutCachePatches(HMIDIOUT16 hMidiOut, +UINT16 WINAPI midiOutReset(HMIDIOUT16 hMidiOut); +UINT16 WINAPI midiOutCachePatches(HMIDIOUT16 hMidiOut, UINT16 uBank, WORD * lpwPatchArray, UINT16 uFlags); -UINT16 midiOutCacheDrumPatches(HMIDIOUT16 hMidiOut, +UINT16 WINAPI midiOutCacheDrumPatches(HMIDIOUT16 hMidiOut, UINT16 uPatch, WORD * lpwKeyArray, UINT16 uFlags); -UINT16 midiOutGetID(HMIDIOUT16 hMidiOut, UINT16 * lpuDeviceID); +UINT16 WINAPI midiOutGetID(HMIDIOUT16 hMidiOut, UINT16 * lpuDeviceID); -DWORD midiOutMessage(HMIDIOUT16 hMidiOut, UINT16 uMessage, DWORD dw1, DWORD dw2); +DWORD WINAPI midiOutMessage(HMIDIOUT16 hMidiOut, UINT16 uMessage, DWORD dw1, DWORD dw2); -UINT16 midiInGetNumDevs(void); -UINT16 midiInGetDevCaps(UINT16 uDeviceID, +UINT16 WINAPI midiInGetNumDevs(void); +UINT16 WINAPI midiInGetDevCaps(UINT16 uDeviceID, LPMIDIINCAPS lpCaps, UINT16 uSize); -UINT16 midiInGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); -UINT16 midiInOpen(HMIDIIN16 * lphMidiIn, UINT16 uDeviceID, +UINT16 WINAPI midiInGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); +UINT16 WINAPI midiInOpen(HMIDIIN16 * lphMidiIn, UINT16 uDeviceID, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags); -UINT16 midiInClose(HMIDIIN16 hMidiIn); -UINT16 midiInPrepareHeader(HMIDIIN16 hMidiIn, +UINT16 WINAPI midiInClose(HMIDIIN16 hMidiIn); +UINT16 WINAPI midiInPrepareHeader(HMIDIIN16 hMidiIn, MIDIHDR * lpMidiInHdr, UINT16 uSize); -UINT16 midiInUnprepareHeader(HMIDIIN16 hMidiIn, +UINT16 WINAPI midiInUnprepareHeader(HMIDIIN16 hMidiIn, MIDIHDR * lpMidiInHdr, UINT16 uSize); -UINT16 midiInAddBuffer(HMIDIIN16 hMidiIn, +UINT16 WINAPI midiInAddBuffer(HMIDIIN16 hMidiIn, MIDIHDR * lpMidiInHdr, UINT16 uSize); -UINT16 midiInStart(HMIDIIN16 hMidiIn); -UINT16 midiInStop(HMIDIIN16 hMidiIn); -UINT16 midiInReset(HMIDIIN16 hMidiIn); -UINT16 midiInGetID(HMIDIIN16 hMidiIn, UINT16 * lpuDeviceID); +UINT16 WINAPI midiInStart(HMIDIIN16 hMidiIn); +UINT16 WINAPI midiInStop(HMIDIIN16 hMidiIn); +UINT16 WINAPI midiInReset(HMIDIIN16 hMidiIn); +UINT16 WINAPI midiInGetID(HMIDIIN16 hMidiIn, UINT16 * lpuDeviceID); -DWORD midiInMessage(HMIDIIN16 hMidiIn, UINT16 uMessage, DWORD dw1, DWORD dw2); +DWORD WINAPI midiInMessage(HMIDIIN16 hMidiIn, UINT16 uMessage, DWORD dw1, DWORD dw2); #define AUX_MAPPER (-1) @@ -433,12 +434,12 @@ #define AUXCAPS_VOLUME 0x0001 /* supports volume control */ #define AUXCAPS_LRVOLUME 0x0002 /* separate left-right volume control */ -UINT16 auxGetNumDevs(void); -UINT16 auxGetDevCaps(UINT16 uDeviceID, AUXCAPS * lpCaps, UINT16 uSize); -UINT16 auxSetVolume(UINT16 uDeviceID, DWORD dwVolume); -UINT16 auxGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume); +UINT16 WINAPI auxGetNumDevs(void); +UINT16 WINAPI auxGetDevCaps(UINT16 uDeviceID, AUXCAPS * lpCaps, UINT16 uSize); +UINT16 WINAPI auxSetVolume(UINT16 uDeviceID, DWORD dwVolume); +UINT16 WINAPI auxGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume); -DWORD auxOutMessage(UINT16 uDeviceID, UINT16 uMessage, DWORD dw1, DWORD dw2); +DWORD WINAPI auxOutMessage(UINT16 uDeviceID, UINT16 uMessage, DWORD dw1, DWORD dw2); #define TIMERR_NOERROR (0) /* no error */ #define TIMERR_NOCANDO (TIMERR_BASE+1) /* request not completed */ @@ -454,14 +455,14 @@ UINT16 wPeriodMax; /* maximum period supported */ } TIMECAPS, *LPTIMECAPS; -UINT16 timeGetSystemTime(MMTIME * lpTime, UINT16 uSize); -DWORD timeGetTime(void); -UINT16 timeSetEvent(UINT16 uDelay, UINT16 uResolution, +UINT16 WINAPI timeGetSystemTime(MMTIME * lpTime, UINT16 uSize); +DWORD WINAPI timeGetTime(void); +UINT16 WINAPI timeSetEvent(UINT16 uDelay, UINT16 uResolution, LPTIMECALLBACK lpFunction, DWORD dwUser, UINT16 uFlags); -UINT16 timeKillEvent(UINT16 uTimerID); -UINT16 timeGetDevCaps(TIMECAPS * lpTimeCaps, UINT16 uSize); -UINT16 timeBeginPeriod(UINT16 uPeriod); -UINT16 timeEndPeriod(UINT16 uPeriod); +UINT16 WINAPI timeKillEvent(UINT16 uTimerID); +UINT16 WINAPI timeGetDevCaps(TIMECAPS * lpTimeCaps, UINT16 uSize); +UINT16 WINAPI timeBeginPeriod(UINT16 uPeriod); +UINT16 WINAPI timeEndPeriod(UINT16 uPeriod); #define JOYERR_NOERROR (0) /* no error */ #define JOYERR_PARMS (JOYERR_BASE+5) /* bad parameters */ @@ -502,14 +503,14 @@ UINT16 wButtons; /* button states */ } JOYINFO, *LPJOYINFO; -UINT16 joyGetDevCaps(UINT16 uJoyID, JOYCAPS * lpCaps, UINT16 uSize); -UINT16 joyGetNumDevs(void); -UINT16 joyGetPos(UINT16 uJoyID, JOYINFO * lpInfo); -UINT16 joyGetThreshold(UINT16 uJoyID, UINT16 * lpuThreshold); -UINT16 joyReleaseCapture(UINT16 uJoyID); -UINT16 joySetCapture(HWND16 hwnd, UINT16 uJoyID, UINT16 uPeriod, +UINT16 WINAPI joyGetDevCaps(UINT16 uJoyID, JOYCAPS * lpCaps, UINT16 uSize); +UINT16 WINAPI joyGetNumDevs(void); +UINT16 WINAPI joyGetPos(UINT16 uJoyID, JOYINFO * lpInfo); +UINT16 WINAPI joyGetThreshold(UINT16 uJoyID, UINT16 * lpuThreshold); +UINT16 WINAPI joyReleaseCapture(UINT16 uJoyID); +UINT16 WINAPI joySetCapture(HWND16 hwnd, UINT16 uJoyID, UINT16 uPeriod, BOOL16 bChanged); -UINT16 joySetThreshold(UINT16 uJoyID, UINT16 uThreshold); +UINT16 WINAPI joySetThreshold(UINT16 uJoyID, UINT16 uThreshold); #define MMIOERR_BASE 256 #define MMIOERR_FILENOTFOUND (MMIOERR_BASE + 1) /* file not found */ @@ -526,8 +527,8 @@ #define CFSEPCHAR '+' /* compound file name separator char. */ typedef DWORD FOURCC; /* a four character code */ -typedef LONG (*LPMMIOPROC)(LPSTR lpmmioinfo, UINT16 uMessage, - LPARAM lParam1, LPARAM lParam2); +typedef LONG (CALLBACK *LPMMIOPROC)(LPSTR lpmmioinfo, UINT16 uMessage, + LPARAM lParam1, LPARAM lParam2); typedef struct { DWORD dwFlags; /* general status flags */ @@ -622,48 +623,49 @@ ( (DWORD)(BYTE)(ch0) | ( (DWORD)(BYTE)(ch1) << 8 ) | \ ( (DWORD)(BYTE)(ch2) << 16 ) | ( (DWORD)(BYTE)(ch3) << 24 ) ) -FOURCC mmioStringToFOURCC(LPCSTR sz, UINT16 uFlags); -LPMMIOPROC mmioInstallIOProc(FOURCC fccIOProc, LPMMIOPROC pIOProc, +FOURCC WINAPI mmioStringToFOURCC(LPCSTR sz, UINT16 uFlags); +LPMMIOPROC WINAPI mmioInstallIOProc(FOURCC fccIOProc, LPMMIOPROC pIOProc, DWORD dwFlags); -HMMIO16 mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo, +HMMIO16 WINAPI mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo, DWORD dwOpenFlags); -UINT16 mmioRename(LPCSTR szFileName, LPCSTR szNewFileName, +UINT16 WINAPI mmioRename(LPCSTR szFileName, LPCSTR szNewFileName, MMIOINFO * lpmmioinfo, DWORD dwRenameFlags); -UINT16 mmioClose(HMMIO16 hmmio, UINT16 uFlags); -LONG mmioRead(HMMIO16 hmmio, HPSTR pch, LONG cch); -LONG mmioWrite(HMMIO16 hmmio, HPCSTR pch, LONG cch); -LONG mmioSeek(HMMIO16 hmmio, LONG lOffset, int iOrigin); -UINT16 mmioGetInfo(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT16 uFlags); -UINT16 mmioSetInfo(HMMIO16 hmmio, const MMIOINFO * lpmmioinfo, UINT16 uFlags); -UINT16 mmioSetBuffer(HMMIO16 hmmio, LPSTR pchBuffer, LONG cchBuffer, +UINT16 WINAPI mmioClose(HMMIO16 hmmio, UINT16 uFlags); +LONG WINAPI mmioRead(HMMIO16 hmmio, HPSTR pch, LONG cch); +LONG WINAPI mmioWrite(HMMIO16 hmmio, HPCSTR pch, LONG cch); +LONG WINAPI mmioSeek(HMMIO16 hmmio, LONG lOffset, int iOrigin); +UINT16 WINAPI mmioGetInfo(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT16 uFlags); +UINT16 WINAPI mmioSetInfo(HMMIO16 hmmio, const MMIOINFO * lpmmioinfo, UINT16 uFlags); +UINT16 WINAPI mmioSetBuffer(HMMIO16 hmmio, LPSTR pchBuffer, LONG cchBuffer, UINT16 uFlags); -UINT16 mmioFlush(HMMIO16 hmmio, UINT16 uFlags); -UINT16 mmioAdvance(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT16 uFlags); -LONG mmioSendMessage(HMMIO16 hmmio, UINT16 uMessage, +UINT16 WINAPI mmioFlush(HMMIO16 hmmio, UINT16 uFlags); +UINT16 WINAPI mmioAdvance(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT16 uFlags); +LONG WINAPI mmioSendMessage(HMMIO16 hmmio, UINT16 uMessage, LPARAM lParam1, LPARAM lParam2); -UINT16 mmioDescend(HMMIO16 hmmio, MMCKINFO * lpck, +UINT16 WINAPI mmioDescend(HMMIO16 hmmio, MMCKINFO * lpck, const MMCKINFO * lpckParent, UINT16 uFlags); -UINT16 mmioAscend(HMMIO16 hmmio, MMCKINFO * lpck, UINT16 uFlags); -UINT16 mmioCreateChunk(HMMIO16 hmmio, MMCKINFO * lpck, UINT16 uFlags); +UINT16 WINAPI mmioAscend(HMMIO16 hmmio, MMCKINFO * lpck, UINT16 uFlags); +UINT16 WINAPI mmioCreateChunk(HMMIO16 hmmio, MMCKINFO * lpck, UINT16 uFlags); -typedef UINT16 (*YIELDPROC) (UINT16 uDeviceID, DWORD dwYieldData); +typedef UINT16 (CALLBACK *YIELDPROC) (UINT16 uDeviceID, DWORD dwYieldData); -DWORD mciSendCommand (UINT16 uDeviceID, UINT16 uMessage, - DWORD dwParam1, DWORD dwParam2); -DWORD mciSendString (LPCSTR lpstrCommand, - LPSTR lpstrReturnString, UINT16 uReturnLength, HWND16 hwndCallback); -UINT16 mciGetDeviceID (LPCSTR lpstrName); -UINT16 mciGetDeviceIDFromElementID (DWORD dwElementID, - LPCSTR lpstrType); -BOOL16 mciGetErrorString (DWORD wError, LPSTR lpstrBuffer, - UINT16 uLength); -BOOL16 mciSetYieldProc (UINT16 uDeviceID, YIELDPROC fpYieldProc, - DWORD dwYieldData); +DWORD WINAPI mciSendCommand (UINT16 uDeviceID, UINT16 uMessage, + DWORD dwParam1, DWORD dwParam2); +DWORD WINAPI mciSendString (LPCSTR lpstrCommand, + LPSTR lpstrReturnString, UINT16 uReturnLength, + HWND16 hwndCallback); +UINT16 WINAPI mciGetDeviceID (LPCSTR lpstrName); +UINT16 WINAPI mciGetDeviceIDFromElementID (DWORD dwElementID, + LPCSTR lpstrType); +BOOL16 WINAPI mciGetErrorString (DWORD wError, LPSTR lpstrBuffer, + UINT16 uLength); +BOOL16 WINAPI mciSetYieldProc (UINT16 uDeviceID, YIELDPROC fpYieldProc, + DWORD dwYieldData); -HTASK16 mciGetCreatorTask(UINT16 uDeviceID); -YIELDPROC mciGetYieldProc (UINT16 uDeviceID, DWORD * lpdwYieldData); +HTASK16 WINAPI mciGetCreatorTask(UINT16 uDeviceID); +YIELDPROC WINAPI mciGetYieldProc (UINT16 uDeviceID, DWORD * lpdwYieldData); #define MCIERR_INVALID_DEVICE_ID (MCIERR_BASE + 1) #define MCIERR_UNRECOGNIZED_KEYWORD (MCIERR_BASE + 3) @@ -1514,14 +1516,14 @@ /* filled in by the driver */ } MCI_OPEN_DRIVER_PARMS, * LPMCI_OPEN_DRIVER_PARMS; -DWORD mciGetDriverData(UINT16 uDeviceID); -BOOL16 mciSetDriverData(UINT16 uDeviceID, DWORD dwData); -UINT16 mciDriverYield(UINT16 uDeviceID); -BOOL16 mciDriverNotify(HWND16 hwndCallback, UINT16 uDeviceID, - UINT16 uStatus); -UINT16 mciLoadCommandResource(HINSTANCE16 hInstance, - LPCSTR lpResName, UINT16 uType); -BOOL16 mciFreeCommandResource(UINT16 uTable); +DWORD WINAPI mciGetDriverData(UINT16 uDeviceID); +BOOL16 WINAPI mciSetDriverData(UINT16 uDeviceID, DWORD dwData); +UINT16 WINAPI mciDriverYield(UINT16 uDeviceID); +BOOL16 WINAPI mciDriverNotify(HWND16 hwndCallback, UINT16 uDeviceID, + UINT16 uStatus); +UINT16 WINAPI mciLoadCommandResource(HINSTANCE16 hInstance, + LPCSTR lpResName, UINT16 uType); +BOOL16 WINAPI mciFreeCommandResource(UINT16 uTable); #define DCB_NULL 0x0000 #define DCB_WINDOW 0x0001 /* dwCallback is a HWND */ @@ -1530,17 +1532,17 @@ #define DCB_TYPEMASK 0x0007 #define DCB_NOSWITCH 0x0008 /* don't switch stacks for callback */ -BOOL16 DriverCallback(DWORD dwCallBack, UINT16 uFlags, HANDLE16 hDev, - WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2); -DWORD auxMessage(WORD wDevID, WORD wMsg, DWORD dwUser, +BOOL16 WINAPI DriverCallback(DWORD dwCallBack, UINT16 uFlags, HANDLE16 hDev, + WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2); +DWORD WINAPI auxMessage(WORD wDevID, WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2); -DWORD midMessage(WORD wDevID, WORD wMsg, DWORD dwUser, +DWORD WINAPI midMessage(WORD wDevID, WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2); -DWORD modMessage(WORD wDevID, WORD wMsg, DWORD dwUser, +DWORD WINAPI modMessage(WORD wDevID, WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2); -DWORD widMessage(WORD wDevID, WORD wMsg, DWORD dwUser, +DWORD WINAPI widMessage(WORD wDevID, WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2); -DWORD wodMessage(WORD wDevID, WORD wMsg, DWORD dwUser, +DWORD WINAPI wodMessage(WORD wDevID, WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2); #endif /* __WINE_MMSYSTEM_H */
diff --git a/include/msdos.h b/include/msdos.h index 3eb18a6..1cc09b1 100644 --- a/include/msdos.h +++ b/include/msdos.h
@@ -55,8 +55,6 @@ DWORD filesize; /* 1c file size */ } DOS_DIRENTRY_LAYOUT; -#define DOSVERSION 0x1606 /* Major version in low byte: DOS 6.22 */ -#define WINDOSVER 0x0616 /* Windows reports the DOS version reversed */ #define WINVERSION 0x0a03 /* Windows version 3.10 */ #define MAX_DOS_DRIVES 26
diff --git a/include/neexe.h b/include/neexe.h index 757b46f..ead7623 100644 --- a/include/neexe.h +++ b/include/neexe.h
@@ -37,6 +37,7 @@ #define IMAGE_DOS_SIGNATURE 0x5A4D /* MZ */ #define IMAGE_OS2_SIGNATURE 0x454E /* NE */ #define IMAGE_OS2_SIGNATURE_LE 0x454C /* LE */ +#define IMAGE_OS2_SIGNATURE_LX 0x584C /* LX */ #define IMAGE_VXD_SIGNATURE 0x454C /* LE */ #define IMAGE_NT_SIGNATURE 0x00004550 /* PE00 */
diff --git a/include/ole.h b/include/ole.h index 0692ee0..7e08b9d 100644 --- a/include/ole.h +++ b/include/ole.h
@@ -151,8 +151,8 @@ } OLETARGETDEVICE; typedef struct _OLESTREAM* LPOLESTREAM; typedef struct _OLESTREAMVTBL { - DWORD (*Get)(LPOLESTREAM,LPSTR,DWORD); - DWORD (*Put)(LPOLESTREAM,LPSTR,DWORD); + DWORD (CALLBACK *Get)(LPOLESTREAM,LPSTR,DWORD); + DWORD (CALLBACK *Put)(LPOLESTREAM,LPSTR,DWORD); } OLESTREAMVTBL; typedef OLESTREAMVTBL* LPOLESTREAMVTBL; typedef struct _OLESTREAM { @@ -162,15 +162,15 @@ typedef struct _OLEOBJECT* LPOLEOBJECT; typedef struct _OLECLIENT* LPOLECLIENT; typedef struct _OLESERVERDOCVTBL { - OLESTATUS (*Save)(LPOLESERVERDOC); - OLESTATUS (*Close)(LPOLESERVERDOC); - OLESTATUS (*SetHostNames)(LPOLESERVERDOC,OLE_LPCSTR,OLE_LPCSTR); - OLESTATUS (*SetDocDimensions)(LPOLESERVERDOC,LPRECT16); + OLESTATUS (CALLBACK *Save)(LPOLESERVERDOC); + OLESTATUS (CALLBACK *Close)(LPOLESERVERDOC); + OLESTATUS (CALLBACK *SetHostNames)(LPOLESERVERDOC,OLE_LPCSTR,OLE_LPCSTR); + OLESTATUS (CALLBACK *SetDocDimensions)(LPOLESERVERDOC,LPRECT16); #undef GetObject /* FIXME */ - OLESTATUS (*GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT); - OLESTATUS (*Release)(LPOLESERVERDOC); - OLESTATUS (*SetColorScheme)(LPOLESERVERDOC,LPLOGPALETTE); - OLESTATUS (*Execute)(LPOLESERVERDOC,HGLOBAL16); + OLESTATUS (CALLBACK *GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT); + OLESTATUS (CALLBACK *Release)(LPOLESERVERDOC); + OLESTATUS (CALLBACK *SetColorScheme)(LPOLESERVERDOC,LPLOGPALETTE); + OLESTATUS (CALLBACK *Execute)(LPOLESERVERDOC,HGLOBAL16); } OLESERVERDOCVTBL; typedef OLESERVERDOCVTBL* LPOLESERVERDOCVTBL; typedef struct _OLESERVERDOC { @@ -180,13 +180,13 @@ typedef struct _OLESERVER* LPOLESERVER; typedef struct _OLESERVERVTBL { - OLESTATUS (*Open)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,LPOLESERVERDOC *); - OLESTATUS (*Create)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*); - OLESTATUS (*CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC *); - OLESTATUS (*Edit)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC *); - OLESTATUS (*Exit)(LPOLESERVER); - OLESTATUS (*Release)(LPOLESERVER); - OLESTATUS (*Execute)(LPOLESERVER); + OLESTATUS (CALLBACK *Open)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,LPOLESERVERDOC *); + OLESTATUS (CALLBACK *Create)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*); + OLESTATUS (CALLBACK *CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC *); + OLESTATUS (CALLBACK *Edit)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC *); + OLESTATUS (CALLBACK *Exit)(LPOLESERVER); + OLESTATUS (CALLBACK *Release)(LPOLESERVER); + OLESTATUS (CALLBACK *Execute)(LPOLESERVER); } OLESERVERVTBL; typedef OLESERVERVTBL *LPOLESERVERVTBL; typedef struct _OLESERVER { @@ -194,7 +194,7 @@ /* server specific data */ } OLESERVER; typedef struct _OLECLIENTVTBL { - int (*CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT); + int (CALLBACK *CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT); } OLECLIENTVTBL; typedef OLECLIENTVTBL *LPOLECLIENTVTBL; @@ -204,44 +204,44 @@ } OLECLIENT; typedef struct _OLEOBJECTVTBL { - void * (*QueryProtocol)(LPOLEOBJECT,OLE_LPCSTR); - OLESTATUS (*Release)(LPOLEOBJECT); - OLESTATUS (*Show)(LPOLEOBJECT,BOOL16); - OLESTATUS (*DoVerb)(LPOLEOBJECT,UINT16,BOOL16,BOOL16); - OLESTATUS (*GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16 *); - OLESTATUS (*SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16); - OLESTATUS (*SetTargetDevice)(LPOLEOBJECT,HGLOBAL16); - OLESTATUS (*SetBounds)(LPOLEOBJECT,LPRECT16); - OLESTATUS (*EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT); - OLESTATUS (*SetColorScheme)(LPOLEOBJECT,LPLOGPALETTE); - OLESTATUS (*Delete)(LPOLEOBJECT); - OLESTATUS (*SetHostNames)(LPOLEOBJECT,OLE_LPCSTR,OLE_LPCSTR); - OLESTATUS (*SaveToStream)(LPOLEOBJECT,LPOLESTREAM); - OLESTATUS (*Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT *); - OLESTATUS (*CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT *); - OLESTATUS (*Equal)(LPOLEOBJECT,LPOLEOBJECT); - OLESTATUS (*CopyToClipBoard)(LPOLEOBJECT); - OLESTATUS (*Draw)(LPOLEOBJECT,HDC16,LPRECT16,LPRECT16,HDC16); - OLESTATUS (*Activate)(LPOLEOBJECT,UINT16,BOOL16,BOOL16,HWND16,LPRECT16); - OLESTATUS (*Execute)(LPOLEOBJECT,HGLOBAL16,UINT16); - OLESTATUS (*Close)(LPOLEOBJECT); - OLESTATUS (*Update)(LPOLEOBJECT); - OLESTATUS (*Reconnect)(LPOLEOBJECT); - OLESTATUS (*ObjectConvert)(LPOLEOBJECT,OLE_LPCSTR,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*); - OLESTATUS (*GetLinkUpdateOptions)(LPOLEOBJECT,LPOLEOPT_UPDATE); - OLESTATUS (*SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE); - OLESTATUS (*Rename)(LPOLEOBJECT,OLE_LPCSTR); - OLESTATUS (*QueryName)(LPOLEOBJECT,LPSTR,LPUINT16); - OLESTATUS (*QueryType)(LPOLEOBJECT,LPLONG); - OLESTATUS (*QueryBounds)(LPOLEOBJECT,LPRECT16); - OLESTATUS (*QuerySize)(LPOLEOBJECT,LPDWORD); - OLESTATUS (*QueryOpen)(LPOLEOBJECT); - OLESTATUS (*QueryOutOfDate)(LPOLEOBJECT); - OLESTATUS (*QueryReleaseStatus)(LPOLEOBJECT); - OLESTATUS (*QueryReleaseError)(LPOLEOBJECT); - OLE_RELEASE_METHOD (*QueryReleaseMethod)(LPOLEOBJECT); - OLESTATUS (*RequestData)(LPOLEOBJECT,OLECLIPFORMAT); - OLESTATUS (*ObjectLong)(LPOLEOBJECT,UINT16,LPLONG); + void * (CALLBACK *QueryProtocol)(LPOLEOBJECT,OLE_LPCSTR); + OLESTATUS (CALLBACK *Release)(LPOLEOBJECT); + OLESTATUS (CALLBACK *Show)(LPOLEOBJECT,BOOL16); + OLESTATUS (CALLBACK *DoVerb)(LPOLEOBJECT,UINT16,BOOL16,BOOL16); + OLESTATUS (CALLBACK *GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16 *); + OLESTATUS (CALLBACK *SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE16); + OLESTATUS (CALLBACK *SetTargetDevice)(LPOLEOBJECT,HGLOBAL16); + OLESTATUS (CALLBACK *SetBounds)(LPOLEOBJECT,LPRECT16); + OLESTATUS (CALLBACK *EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT); + OLESTATUS (CALLBACK *SetColorScheme)(LPOLEOBJECT,LPLOGPALETTE); + OLESTATUS (CALLBACK *Delete)(LPOLEOBJECT); + OLESTATUS (CALLBACK *SetHostNames)(LPOLEOBJECT,OLE_LPCSTR,OLE_LPCSTR); + OLESTATUS (CALLBACK *SaveToStream)(LPOLEOBJECT,LPOLESTREAM); + OLESTATUS (CALLBACK *Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT *); + OLESTATUS (CALLBACK *CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT *); + OLESTATUS (CALLBACK *Equal)(LPOLEOBJECT,LPOLEOBJECT); + OLESTATUS (CALLBACK *CopyToClipBoard)(LPOLEOBJECT); + OLESTATUS (CALLBACK *Draw)(LPOLEOBJECT,HDC16,LPRECT16,LPRECT16,HDC16); + OLESTATUS (CALLBACK *Activate)(LPOLEOBJECT,UINT16,BOOL16,BOOL16,HWND16,LPRECT16); + OLESTATUS (CALLBACK *Execute)(LPOLEOBJECT,HGLOBAL16,UINT16); + OLESTATUS (CALLBACK *Close)(LPOLEOBJECT); + OLESTATUS (CALLBACK *Update)(LPOLEOBJECT); + OLESTATUS (CALLBACK *Reconnect)(LPOLEOBJECT); + OLESTATUS (CALLBACK *ObjectConvert)(LPOLEOBJECT,OLE_LPCSTR,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*); + OLESTATUS (CALLBACK *GetLinkUpdateOptions)(LPOLEOBJECT,LPOLEOPT_UPDATE); + OLESTATUS (CALLBACK *SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE); + OLESTATUS (CALLBACK *Rename)(LPOLEOBJECT,OLE_LPCSTR); + OLESTATUS (CALLBACK *QueryName)(LPOLEOBJECT,LPSTR,LPUINT16); + OLESTATUS (CALLBACK *QueryType)(LPOLEOBJECT,LPLONG); + OLESTATUS (CALLBACK *QueryBounds)(LPOLEOBJECT,LPRECT16); + OLESTATUS (CALLBACK *QuerySize)(LPOLEOBJECT,LPDWORD); + OLESTATUS (CALLBACK *QueryOpen)(LPOLEOBJECT); + OLESTATUS (CALLBACK *QueryOutOfDate)(LPOLEOBJECT); + OLESTATUS (CALLBACK *QueryReleaseStatus)(LPOLEOBJECT); + OLESTATUS (CALLBACK *QueryReleaseError)(LPOLEOBJECT); + OLE_RELEASE_METHOD (CALLBACK *QueryReleaseMethod)(LPOLEOBJECT); + OLESTATUS (CALLBACK *RequestData)(LPOLEOBJECT,OLECLIPFORMAT); + OLESTATUS (CALLBACK *ObjectLong)(LPOLEOBJECT,UINT16,LPLONG); } OLEOBJECTVTBL; typedef OLEOBJECTVTBL* LPOLEOBJECTVTBL; @@ -250,13 +250,13 @@ } OLEOBJECT; -OLESTATUS OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER *,HINSTANCE16,OLE_SERVER_USE); -OLESTATUS OleUnblockServer(LHSERVER,BOOL16 *); -OLESTATUS OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC *); -OLESTATUS OleRegisterClientDoc(LPCSTR,LPCSTR,LONG,LHCLIENTDOC *); -OLESTATUS OleRenameClientDoc(LHCLIENTDOC,LPCSTR); -OLESTATUS OleRevokeServerDoc(LHSERVERDOC); -OLESTATUS OleRevokeClientDoc(LHCLIENTDOC); -OLESTATUS OleRevokeServer(LHSERVER); +OLESTATUS WINAPI OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER *,HINSTANCE16,OLE_SERVER_USE); +OLESTATUS WINAPI OleUnblockServer(LHSERVER,BOOL16 *); +OLESTATUS WINAPI OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC *); +OLESTATUS WINAPI OleRegisterClientDoc(LPCSTR,LPCSTR,LONG,LHCLIENTDOC *); +OLESTATUS WINAPI OleRenameClientDoc(LHCLIENTDOC,LPCSTR); +OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC); +OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC); +OLESTATUS WINAPI OleRevokeServer(LHSERVER); #endif /* __WINE_OLE_H */
diff --git a/include/peexe.h b/include/peexe.h index c716f61..bc13148 100644 --- a/include/peexe.h +++ b/include/peexe.h
@@ -97,6 +97,10 @@ IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES]; } IMAGE_OPTIONAL_HEADER,*LPIMAGE_OPTIONAL_HEADER; +/* Possible Magic values */ +#define IMAGE_NT_OPTIONAL_HDR_MAGIC 0x10b +#define IMAGE_ROM_OPTIONAL_HDR_MAGIC 0x107 + /* These are indexes into the DataDirectory array */ #define IMAGE_FILE_EXPORT_DIRECTORY 0 #define IMAGE_FILE_IMPORT_DIRECTORY 1
diff --git a/include/scroll.h b/include/scroll.h index 7090245..0a70a6c 100644 --- a/include/scroll.h +++ b/include/scroll.h
@@ -19,8 +19,8 @@ UINT32 flags; /* EnableScrollBar flags */ } SCROLLBAR_INFO; -extern LRESULT ScrollBarWndProc( HWND32 hwnd, UINT32 uMsg, WPARAM32 wParam, - LPARAM lParam ); +extern LRESULT WINAPI ScrollBarWndProc( HWND32 hwnd, UINT32 uMsg, + WPARAM32 wParam, LPARAM lParam ); extern void SCROLL_DrawScrollBar( HWND32 hwnd, HDC32 hdc, INT32 nBar, BOOL32 arrows ); extern void SCROLL_HandleScrollEvent( HWND32 hwnd, INT32 nBar,
diff --git a/include/shell.h b/include/shell.h index daebe80..947ec4d 100644 --- a/include/shell.h +++ b/include/shell.h
@@ -65,10 +65,9 @@ #define SHGFI_SHELLICONSIZE 0x000000004 /* get shell size icon */ #define SHGFI_PIDL 0x000000008 /* pszPath is a pidl */ #define SHGFI_USEFILEATTRIBUTES 0x000000010 /* use passed dwFileAttribute */ - -DWORD SHGetFileInfo32A(LPCSTR,DWORD,SHFILEINFO32A*,UINT32,UINT32); -DWORD SHGetFileInfo32W(LPCWSTR,DWORD,SHFILEINFO32W*,UINT32,UINT32); -#define SHGetFileInfo WINELIB_NAME_AW(SHGetFileInfo) +DWORD WINAPI SHGetFileInfo32A(LPCSTR,DWORD,SHFILEINFO32A*,UINT32,UINT32); +DWORD WINAPI SHGetFileInfo32W(LPCWSTR,DWORD,SHFILEINFO32W*,UINT32,UINT32); +#define SHGetFileInfo WINELIB_NAME_AW(SHGetFileInfo) #define SE_ERR_SHARE 26 #define SE_ERR_ASSOCINCOMPLETE 27 @@ -77,6 +76,4 @@ #define SE_ERR_DDEBUSY 30 #define SE_ERR_NOASSOC 31 -LRESULT AboutDlgProc(HWND32 hWnd,UINT32 msg,WPARAM16 wParam,LPARAM lParam); - #endif /* __WINE_SHELL_H */
diff --git a/include/sigcontext.h b/include/sig_context.h similarity index 98% rename from include/sigcontext.h rename to include/sig_context.h index d47b836..b971b97 100644 --- a/include/sigcontext.h +++ b/include/sig_context.h
@@ -4,8 +4,8 @@ * Copyright 1995 Alexandre Julliard */ -#ifndef __WINE_SIGCONTEXT_H -#define __WINE_SIGCONTEXT_H +#ifndef __WINE_SIG_CONTEXT_H +#define __WINE_SIG_CONTEXT_H #ifdef WINELIB #error This file must not be used in Winelib @@ -202,4 +202,4 @@ #define FL_sig(context) (*(WORD*)&EFL_sig(context)) -#endif /* __WINE_SIGCONTEXT_H */ +#endif /* __WINE_SIG_CONTEXT_H */
diff --git a/include/static.h b/include/static.h index 355359a..f29dd7b 100644 --- a/include/static.h +++ b/include/static.h
@@ -17,7 +17,7 @@ HICON16 hIcon; /* Icon handle for SS_ICON controls */ } STATICINFO; -extern LRESULT StaticWndProc( HWND32 hWnd, UINT32 uMsg, WPARAM32 wParam, - LPARAM lParam ); +extern LRESULT WINAPI StaticWndProc( HWND32 hWnd, UINT32 uMsg, WPARAM32 wParam, + LPARAM lParam ); #endif /* __WINE_STATIC_H */
diff --git a/include/status.h b/include/status.h index 424394f..24a2290 100644 --- a/include/status.h +++ b/include/status.h
@@ -7,8 +7,8 @@ #ifndef __WINE_STATUS_H #define __WINE_STATUS_H -LRESULT StatusWindowProc( HWND32 hwnd, UINT32 msg, - WPARAM32 wParam, LPARAM lParam ); +LRESULT WINAPI StatusWindowProc( HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ); typedef struct {
diff --git a/include/stddebug.h b/include/stddebug.h index 71b0151..819ae53 100644 --- a/include/stddebug.h +++ b/include/stddebug.h
@@ -150,6 +150,7 @@ #undef DEBUG_TIMER #undef DEBUG_TOOLHELP #undef DEBUG_TWEAK +#undef DEBUG_UPDOWN #undef DEBUG_VER #undef DEBUG_VIRTUAL #undef DEBUG_VXD @@ -234,6 +235,7 @@ #define DEBUG_TIMER #define DEBUG_TOOLHELP #define DEBUG_TWEAK +#define DEBUG_UPDOWN #define DEBUG_VER #define DEBUG_VIRTUAL #define DEBUG_VXD
diff --git a/include/stress.h b/include/stress.h index 86f718c..f38857e 100644 --- a/include/stress.h +++ b/include/stress.h
@@ -11,17 +11,17 @@ #define EDS_CUR 2 #define EDS_TEMP 3 -BOOL16 AllocGDIMem(UINT16); -BOOL16 AllocMem(DWORD); -BOOL16 AllocUserMem(UINT16); -int AllocDiskSpace(long, UINT16); -int AllocFileHandles(int); -int GetFreeFileHandles(void); -void FreeAllGDIMem(void); -void FreeAllMem(void); -void FreeAllUserMem(void); -void UnAllocDiskSpace(UINT16); -void UnAllocFileHandles(void); +BOOL16 WINAPI AllocGDIMem(UINT16); +BOOL16 WINAPI AllocMem(DWORD); +BOOL16 WINAPI AllocUserMem(UINT16); +int WINAPI AllocDiskSpace(long, UINT16); +int WINAPI AllocFileHandles(int); +int WINAPI GetFreeFileHandles(void); +void WINAPI FreeAllGDIMem(void); +void WINAPI FreeAllMem(void); +void WINAPI FreeAllUserMem(void); +void WINAPI UnAllocDiskSpace(UINT16); +void WINAPI UnAllocFileHandles(void); #ifdef __cplusplus }
diff --git a/include/task.h b/include/task.h index 62fc59e..5712979 100644 --- a/include/task.h +++ b/include/task.h
@@ -49,8 +49,12 @@ #define THUNK_MAGIC ('P' | ('T' << 8)) struct _THDB; +struct _WSINFO; - /* Task database. See 'Windows Internals' p. 226 */ + /* Task database. See 'Windows Internals' p. 226. + * Note that 16-bit OLE 2 libs like to read it directly + * so we have to keep entry offsets as they are. + */ typedef struct { HTASK16 hNext; /* 00 Selector of next TDB */ @@ -82,8 +86,9 @@ DWORD int75 WINE_PACKED; /* 4a int 75 (80x87 error) handler */ DWORD compat_flags WINE_PACKED; /* 4e Compatibility flags */ BYTE unused4[2]; /* 52 */ - struct _THDB *thdb; /* 54 Pointer to thread database */ - BYTE unused5[8]; /* 58 */ + struct _THDB *thdb; /* 54 Pointer to thread database */ + struct _WSINFO *pwsi; /* 58 Socket control struct */ + BYTE unused5[4]; /* 5B */ HANDLE16 hPDB; /* 60 Selector of PDB (i.e. PSP) */ SEGPTR dta WINE_PACKED; /* 62 Current DTA */ BYTE curdrive; /* 66 Current drive */
diff --git a/include/toolhelp.h b/include/toolhelp.h index eaf30ec..8d1cd81 100644 --- a/include/toolhelp.h +++ b/include/toolhelp.h
@@ -76,11 +76,13 @@ /* wFlags values */ #define GF_PDB_OWNER 0x0100 /* Low byte is KERNEL flags */ -BOOL16 GlobalInfo( GLOBALINFO *pInfo ); -BOOL16 GlobalFirst( GLOBALENTRY *pGlobal, WORD wFlags ); -BOOL16 GlobalNext( GLOBALENTRY *pGlobal, WORD wFlags) ; -BOOL16 GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL16 hItem ); -BOOL16 GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE16 hModule, WORD wSeg ); +WORD WINAPI GlobalHandleToSel( HGLOBAL16 handle ); +BOOL16 WINAPI GlobalInfo( GLOBALINFO *pInfo ); +BOOL16 WINAPI GlobalFirst( GLOBALENTRY *pGlobal, WORD wFlags ); +BOOL16 WINAPI GlobalNext( GLOBALENTRY *pGlobal, WORD wFlags) ; +BOOL16 WINAPI GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL16 hItem ); +BOOL16 WINAPI GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE16 hModule, + WORD wSeg ); /* Local heap */ @@ -154,9 +156,9 @@ #define LT_USER_HANDLETABLE 32 #define LT_USER_MAX LT_USER_HANDLETABLE -BOOL16 LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL16 handle ); -BOOL16 LocalFirst( LOCALENTRY *pLocalEntry, HGLOBAL16 handle ); -BOOL16 LocalNext( LOCALENTRY *pLocalEntry ); +BOOL16 WINAPI LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL16 handle ); +BOOL16 WINAPI LocalFirst( LOCALENTRY *pLocalEntry, HGLOBAL16 handle ); +BOOL16 WINAPI LocalNext( LOCALENTRY *pLocalEntry ); /* modules */ @@ -171,10 +173,10 @@ HANDLE16 wNext; } MODULEENTRY, *LPMODULEENTRY; -BOOL16 ModuleFirst(MODULEENTRY *lpModule); -BOOL16 ModuleNext(MODULEENTRY *lpModule); -BOOL16 ModuleFindName(MODULEENTRY *lpModule, LPCSTR lpstrName); -BOOL16 ModuleFindHandle(MODULEENTRY *lpModule, HMODULE16 hModule); +BOOL16 WINAPI ModuleFirst(MODULEENTRY *lpModule); +BOOL16 WINAPI ModuleNext(MODULEENTRY *lpModule); +BOOL16 WINAPI ModuleFindName(MODULEENTRY *lpModule, LPCSTR lpstrName); +BOOL16 WINAPI ModuleFindHandle(MODULEENTRY *lpModule, HMODULE16 hModule); /* tasks */ @@ -197,12 +199,12 @@ HANDLE16 hNext; } TASKENTRY, *LPTASKENTRY; -BOOL16 TaskFirst(LPTASKENTRY lpTask); -BOOL16 TaskNext(LPTASKENTRY lpTask); -BOOL16 TaskFindHandle(LPTASKENTRY lpTask, HTASK16 hTask); -DWORD TaskSetCSIP(HTASK16 hTask, WORD wCS, WORD wIP); -DWORD TaskGetCSIP(HTASK16 hTask); -BOOL16 TaskSwitch(HTASK16 hTask, DWORD dwNewCSIP); +BOOL16 WINAPI TaskFirst(LPTASKENTRY lpTask); +BOOL16 WINAPI TaskNext(LPTASKENTRY lpTask); +BOOL16 WINAPI TaskFindHandle(LPTASKENTRY lpTask, HTASK16 hTask); +DWORD WINAPI TaskSetCSIP(HTASK16 hTask, WORD wCS, WORD wIP); +DWORD WINAPI TaskGetCSIP(HTASK16 hTask); +BOOL16 WINAPI TaskSwitch(HTASK16 hTask, DWORD dwNewCSIP); /* mem info */ @@ -230,8 +232,8 @@ HGLOBAL16 hGDISegment; } SYSHEAPINFO; -BOOL16 MemManInfo(LPMEMMANINFO lpEnhMode); -BOOL16 SystemHeapInfo( SYSHEAPINFO *pHeapInfo ); +BOOL16 WINAPI MemManInfo(LPMEMMANINFO lpEnhMode); +BOOL16 WINAPI SystemHeapInfo( SYSHEAPINFO *pHeapInfo ); /* timer info */ @@ -241,7 +243,7 @@ DWORD dwmsThisVM; } TIMERINFO; -BOOL16 TimerCount( TIMERINFO *pTimerInfo ); +BOOL16 WINAPI TimerCount( TIMERINFO *pTimerInfo ); /* Window classes */ @@ -253,14 +255,14 @@ HANDLE16 wNext; } CLASSENTRY; -BOOL16 ClassFirst( CLASSENTRY *pClassEntry ); -BOOL16 ClassNext( CLASSENTRY *pClassEntry ); +BOOL16 WINAPI ClassFirst( CLASSENTRY *pClassEntry ); +BOOL16 WINAPI ClassNext( CLASSENTRY *pClassEntry ); /* Memory read/write */ -DWORD MemoryRead( WORD sel, DWORD offset, void *buffer, DWORD count ); -DWORD MemoryWrite( WORD sel, DWORD offset, void *buffer, DWORD count ); +DWORD WINAPI MemoryRead( WORD sel, DWORD offset, void *buffer, DWORD count ); +DWORD WINAPI MemoryWrite( WORD sel, DWORD offset, void *buffer, DWORD count ); /* flags to NotifyRegister() */ #define NF_NORMAL 0 /* everything except taskswitches, debugerrors, @@ -269,7 +271,7 @@ #define NF_TASKSWITCH 1 /* get taskswitch information */ #define NF_RIP 2 /* get debugerrors of system */ -BOOL16 NotifyRegister(HTASK16 htask,FARPROC16 lpfnCallback,WORD wFlags); +BOOL16 WINAPI NotifyRegister(HTASK16 htask,FARPROC16 lpfnCallback,WORD wFlags); #define NFY_UNKNOWN 0 #define NFY_LOADSEG 1
diff --git a/include/updown.h b/include/updown.h new file mode 100644 index 0000000..07b132e --- /dev/null +++ b/include/updown.h
@@ -0,0 +1,28 @@ +/* + * Up-down class extra info + * + * Copyright 1997 Dimitrie O. Paun + */ + +#ifndef __WINE_UPDOWN_H +#define __WINE_UPDOWN_H + +#include "windows.h" +#include "commctrl.h" + +typedef struct +{ + UINT32 AccelCount; /* Number of elements in AccelVect */ + UDACCEL* AccelVect; /* Vector containing AccelCount elements */ + INT32 Base; /* Base to display nr in the buddy window */ + INT32 CurVal; /* Current up-down value */ + INT32 MinVal; /* Minimum up-down value */ + INT32 MaxVal; /* Maximum up-down value */ + HWND32 Buddy; /* Handle to the buddy window */ + INT32 Flags; /* Internal Flags FLAG_* */ +} UPDOWN_INFO; + +LRESULT WINAPI UpDownWindowProc( HWND32 hwnd, UINT32 message, WPARAM32 wParam, + LPARAM lParam); + +#endif /* __WINE_UPDOWN_H */
diff --git a/include/ver.h b/include/ver.h index 05342f2..60d0dee 100644 --- a/include/ver.h +++ b/include/ver.h
@@ -127,15 +127,6 @@ DWORD dwFileDateLS; } VS_FIXEDFILEINFO; -/* following two aren't in version.dll */ -DWORD -GetFileResourceSize(LPCSTR filename,SEGPTR restype,SEGPTR resid,LPDWORD off); - -DWORD -GetFileResource(LPCSTR filename,SEGPTR restype,SEGPTR resid, - DWORD off,DWORD reslen,LPVOID data -); - /* 20 GETFILEVERSIONINFORAW */
diff --git a/include/win.h b/include/win.h index 139e919..c952000 100644 --- a/include/win.h +++ b/include/win.h
@@ -74,7 +74,7 @@ HWND32 hwndLastActive;/* Last active popup hwnd */ DWORD dwStyle; /* Window style (from CreateWindow) */ DWORD dwExStyle; /* Extended style (from CreateWindowEx) */ - UINT16 wIDmenu; /* ID or hmenu (from CreateWindow) */ + UINT32 wIDmenu; /* ID or hmenu (from CreateWindow) */ WORD flags; /* Misc. flags (see below) */ Window window; /* X window (only for top-level windows) */ HMENU16 hSysMenu; /* window's copy of System Menu */ @@ -124,6 +124,7 @@ extern void WIN_ResetQueueWindows( WND* wnd, HQUEUE16 hQueue, HQUEUE16 hNew ); extern BOOL32 WIN_CreateDesktopWindow(void); extern HWND32 WIN_GetTopParent( HWND32 hwnd ); +extern WND* WIN_GetTopParentPtr( WND* pWnd ); extern BOOL32 WIN_IsWindowDrawable(WND*, BOOL32 ); extern HINSTANCE16 WIN_GetWindowInstance( HWND32 hwnd ); extern WND** WIN_BuildWinArray( WND *wndPtr, UINT32 bwa, UINT32* pnum );
diff --git a/include/winbase.h b/include/winbase.h index e860418..46aaa97 100644 --- a/include/winbase.h +++ b/include/winbase.h
@@ -57,7 +57,6 @@ #define FS_CASE_IS_PRESERVED FILE_CASE_PRESERVED_NAMES #define FS_UNICODE_STORED_ON_DISK FILE_UNICODE_ON_DISK -/*WINAPI int SetErrorMode(int);*/ #define STATUS_SUCCESS 0x00000000 #define STATUS_WAIT_0 0x00000000 @@ -156,19 +155,17 @@ #define VER_PLATFORM_WIN32_NT 2 /*DWORD WINAPI GetVersion( void );*/ -BOOL32 GetVersionEx32A(OSVERSIONINFO32A*); -BOOL32 GetVersionEx32W(OSVERSIONINFO32W*); +BOOL32 WINAPI GetVersionEx32A(OSVERSIONINFO32A*); +BOOL32 WINAPI GetVersionEx32W(OSVERSIONINFO32W*); #define GetVersionEx WINELIB_NAME_AW(GetVersionEx) /*int WinMain(HINSTANCE, HINSTANCE prev, char *cmd, int show);*/ -HACCEL32 LoadAcceleratorsA( HINSTANCE32, const char *); - -void DeleteCriticalSection(CRITICAL_SECTION *lpCrit); -void EnterCriticalSection(CRITICAL_SECTION *lpCrit); -void InitializeCriticalSection(CRITICAL_SECTION *lpCrit); -void LeaveCriticalSection(CRITICAL_SECTION *lpCrit); -HANDLE32 OpenProcess(DWORD access, BOOL32 inherit, DWORD id); -int TerminateProcess(HANDLE32 h, int ret); +void WINAPI DeleteCriticalSection(CRITICAL_SECTION *lpCrit); +void WINAPI EnterCriticalSection(CRITICAL_SECTION *lpCrit); +void WINAPI InitializeCriticalSection(CRITICAL_SECTION *lpCrit); +void WINAPI LeaveCriticalSection(CRITICAL_SECTION *lpCrit); +HANDLE32 WINAPI OpenProcess(DWORD access, BOOL32 inherit, DWORD id); +int WINAPI TerminateProcess(HANDLE32 h, int ret); #endif /* __WINE_WINBASE_H */
diff --git a/include/windows.h b/include/windows.h index 06814ac..139c33b 100644 --- a/include/windows.h +++ b/include/windows.h
@@ -1100,6 +1100,14 @@ typedef struct { + UINT32 ciCharset; + UINT32 ciACP; + FONTSIGNATURE fs; +} CHARSETINFO,*LPCHARSETINFO; + + +typedef struct +{ INT16 txfHeight; INT16 txfWidth; INT16 txfEscapement; @@ -2787,6 +2795,7 @@ #define SWP_NOSENDCHANGING 0x0400 #define SWP_DEFERERASE 0x2000 +#define HWND_DESKTOP ((HWND32)0) #define HWND_BROADCAST ((HWND32)0xffff) /* SetWindowPos() hwndInsertAfter field values */ @@ -2840,8 +2849,10 @@ #define MF_BYCOMMAND 0x0000 #define MF_BYPOSITION 0x0400 #define MF_SEPARATOR 0x0800 +#define MF_DEFAULT 0x1000 #define MF_SYSMENU 0x2000 #define MF_HELP 0x4000 +#define MF_RIGHTJUSTIFY 0x4000 #define MF_MOUSESELECT 0x8000 /* Flags for extended menu item types. */ @@ -2865,6 +2876,21 @@ #define MFS_UNHILITE MF_UNHILITE #define MFS_DEFAULT MF_DEFAULT +/* FIXME: not sure this one is correct */ +typedef struct { + UINT16 cbSize; + UINT16 fMask; + UINT16 fType; + UINT16 fState; + UINT16 wID; + HMENU16 hSubMenu; + HBITMAP16 hbmpChecked; + HBITMAP16 hbmpUnchecked; + DWORD dwItemData; + LPSTR dwTypeData; + UINT16 cch; +} MENUITEMINFO16, *LPMENUITEMINFO16; + typedef struct { UINT32 cbSize; UINT32 fMask; @@ -3035,6 +3061,23 @@ #define DFCS_FLAT 0x4000 #define DFCS_MONO 0x8000 +/* DrawState defines ... */ +typedef BOOL32 (CALLBACK *DRAWSTATEPROC)(HDC32,LPARAM,WPARAM32,INT32,INT32); + +/* Image type */ +#define DST_COMPLEX 0x0000 +#define DST_TEXT 0x0001 +#define DST_PREFIXTEXT 0x0002 +#define DST_ICON 0x0003 +#define DST_BITMAP 0x0004 + +/* State type */ +#define DSS_NORMAL 0x0000 +#define DSS_UNION 0x0010 /* Gray string appearance */ +#define DSS_DISABLED 0x0020 +#define DSS_MONO 0x0080 +#define DSS_RIGHT 0x8000 + /* Window Styles */ #define WS_OVERLAPPED 0x00000000L #define WS_POPUP 0x80000000L @@ -5118,2521 +5161,2591 @@ DECL_WINELIB_TYPE_AW(NONCLIENTMETRICS); DECL_WINELIB_TYPE_AW(LPNONCLIENTMETRICS); +typedef struct tagNMHDR +{ + HWND32 hwndFrom; + UINT32 idFrom; + UINT32 code; +} NMHDR, *LPNMHDR; + #pragma pack(4) /* Declarations for functions that exist only in Win16 */ -WORD AllocCStoDSAlias(WORD); -WORD AllocDStoCSAlias(WORD); -WORD AllocSelector(WORD); -WORD AllocSelectorArray(WORD); -VOID CalcChildScroll(HWND16,WORD); -INT16 Catch(LPCATCHBUF); -WORD ChangeSelector(WORD,WORD); -INT16 CloseComm(INT16); -HGLOBAL16 CreateCursorIconIndirect(HINSTANCE16,CURSORICONINFO*,LPCVOID,LPCVOID); -WORD CreateSystemTimer(WORD,FARPROC16); -BOOL16 DCHook(HDC16,WORD,DWORD,LPARAM); -VOID DirectedYield(HTASK16); -HGLOBAL16 DirectResAlloc(HINSTANCE16,WORD,UINT16); -VOID DisableSystemTimers(void); -BOOL16 DlgDirSelect(HWND16,LPSTR,INT16); -BOOL16 DlgDirSelectComboBox(HWND16,LPSTR,INT16); -DWORD DumpIcon(SEGPTR,WORD*,SEGPTR*,SEGPTR*); -BOOL16 EnableCommNotification(INT16,HWND16,INT16,INT16); -BOOL16 EnableHardwareInput(BOOL16); -VOID EnableSystemTimers(void); -INT16 ExcludeVisRect(HDC16,INT16,INT16,INT16,INT16); -HANDLE16 FarGetOwner(HGLOBAL16); -VOID FarSetOwner(HGLOBAL16,HANDLE16); -BOOL16 FastWindowFrame(HDC16,const RECT16*,INT16,INT16,DWORD); -VOID FillWindow(HWND16,HWND16,HDC16,HBRUSH16); -INT16 FlushComm(INT16,INT16); -WORD FreeSelector(WORD); -UINT16 GDIRealizePalette(HDC16); -HPALETTE16 GDISelectPalette(HDC16,HPALETTE16,WORD); -HANDLE16 GetAtomHandle(ATOM); -DWORD GetBitmapDimension(HBITMAP16); -DWORD GetBrushOrg(HDC16); -HANDLE16 GetCodeHandle(FARPROC16); -INT16 GetCommError(INT16,LPCOMSTAT); -UINT16 GetCommEventMask(INT16,UINT16); -HBRUSH16 GetControlBrush(HWND16,HDC16,UINT16); -VOID GetCodeInfo(FARPROC16,LPVOID); -HANDLE16 GetCurrentPDB(void); -DWORD GetCurrentPosition(HDC16); -HTASK16 GetCurrentTask(void); -DWORD GetDCHook(HDC16,FARPROC16*); -DWORD GetDCOrg(HDC16); -HDC16 GetDCState(HDC16); -HWND16 GetDesktopHwnd(void); -SEGPTR GetDOSEnvironment(void); -INT16 GetEnvironment(LPCSTR,LPSTR,UINT16); -HMODULE16 GetExePtr(HANDLE16); -WORD GetExeVersion(void); -DWORD GetHeapSpaces(HMODULE16); -INT16 GetKbCodePage(VOID); -INT16 GetInstanceData(HINSTANCE16,WORD,INT16); -HGLOBAL16 GetMetaFileBits(HMETAFILE16); -BOOL16 GetModuleName(HINSTANCE16,LPSTR,INT16); -INT16 GetModuleUsage(HINSTANCE16); -FARPROC16 GetMouseEventProc(void); -UINT16 GetNumTasks(void); -DWORD GetSelectorBase(WORD); -DWORD GetSelectorLimit(WORD); -HINSTANCE16 GetTaskDS(void); -HQUEUE16 GetTaskQueue(HTASK16); -BYTE GetTempDrive(BYTE); -DWORD GetTextExtent(HDC16,LPCSTR,INT16); -DWORD GetViewportExt(HDC16); -DWORD GetViewportOrg(HDC16); -BOOL16 GetWinDebugInfo(LPWINDEBUGINFO,UINT16); -DWORD GetWindowExt(HDC16); -DWORD GetWindowOrg(HDC16); -DWORD GetWinFlags(void); -DWORD GlobalDOSAlloc(DWORD); -WORD GlobalDOSFree(WORD); -void GlobalFreeAll(HGLOBAL16); -HGLOBAL16 GlobalLRUNewest(HGLOBAL16); -HGLOBAL16 GlobalLRUOldest(HGLOBAL16); -VOID GlobalNotify(FARPROC16); -WORD GlobalPageLock(HGLOBAL16); -WORD GlobalPageUnlock(HGLOBAL16); -INT16 InitApp(HINSTANCE16); -HRGN16 InquireVisRgn(HDC16); -INT16 IntersectVisRect(HDC16,INT16,INT16,INT16,INT16); -BOOL16 IsDCCurrentPalette(HDC16); -BOOL16 IsGDIObject(HGDIOBJ16); -BOOL16 IsSharedSelector(HANDLE16); -BOOL16 IsTask(HTASK16); -HTASK16 IsTaskLocked(void); -BOOL16 IsValidMetaFile(HMETAFILE16); -VOID LogError(UINT16, LPVOID); -VOID LogParamError(UINT16,FARPROC16,LPVOID); -BOOL16 LocalInit(HANDLE16,WORD,WORD); -FARPROC16 LocalNotify(FARPROC16); -HTASK16 LockCurrentTask(BOOL16); -HMENU16 LookupMenuHandle(HMENU16,INT16); -DWORD MoveTo(HDC16,INT16,INT16); -DWORD OffsetViewportOrg(HDC16,INT16,INT16); -INT16 OffsetVisRgn(HDC16,INT16,INT16); -DWORD OffsetWindowOrg(HDC16,INT16,INT16); -VOID OldYield(void); -INT16 OpenComm(LPCSTR,UINT16,UINT16); -VOID PaintRect(HWND16,HWND16,HDC16,HBRUSH16,const RECT16*); -VOID PostEvent(HTASK16); -WORD PrestoChangoSelector(WORD,WORD); -INT16 ReadComm(INT16,LPSTR,INT16); -UINT16 RealizeDefaultPalette(HDC16); -BOOL32 RegisterShellHook(HWND16,UINT16); -INT16 RestoreVisRgn(HDC16); -HRGN16 SaveVisRgn(HDC16); -DWORD ScaleViewportExt(HDC16,INT16,INT16,INT16,INT16); -DWORD ScaleWindowExt(HDC16,INT16,INT16,INT16,INT16); -WORD SelectorAccessRights(WORD,WORD,WORD); -INT16 SelectVisRgn(HDC16,HRGN16); -DWORD SetBitmapDimension(HBITMAP16,INT16,INT16); -DWORD SetBrushOrg(HDC16,INT16,INT16); -UINT16* SetCommEventMask(INT16,UINT16); -BOOL16 SetDCHook(HDC16,FARPROC16,DWORD); -DWORD SetDCOrg(HDC16,INT16,INT16); -VOID SetDCState(HDC16,HDC16); -BOOL16 SetDeskPattern(void); -INT16 SetEnvironment(LPCSTR,LPCSTR,UINT16); -WORD SetHookFlags(HDC16,WORD); -HMETAFILE16 SetMetaFileBits(HGLOBAL16); -VOID SetPriority(HTASK16,INT16); -FARPROC16 SetResourceHandler(HINSTANCE16,SEGPTR,FARPROC16); -WORD SetSelectorBase(WORD,DWORD); -WORD SetSelectorLimit(WORD,DWORD); -LONG SetSwapAreaSize(WORD); -HQUEUE16 SetTaskQueue(HTASK16,HQUEUE16); -FARPROC16 SetTaskSignalProc(HTASK16,FARPROC16); -DWORD SetViewportExt(HDC16,INT16,INT16); -DWORD SetViewportOrg(HDC16,INT16,INT16); -BOOL16 SetWinDebugInfo(LPWINDEBUGINFO); -DWORD SetWindowExt(HDC16,INT16,INT16); -DWORD SetWindowOrg(HDC16,INT16,INT16); -VOID SwitchStackBack(void); -VOID SwitchStackTo(WORD,WORD,WORD); -INT16 Throw(LPCATCHBUF,INT16); -INT16 UngetCommChar(INT16,CHAR); -VOID UserYield(void); -BOOL16 WaitEvent(HTASK16); -INT16 WriteComm(INT16,LPSTR,INT16); -VOID WriteOutProfiles(VOID); -VOID hmemcpy(LPVOID,LPCVOID,LONG); -VOID Yield(void); +WORD WINAPI AllocCStoDSAlias(WORD); +WORD WINAPI AllocDStoCSAlias(WORD); +WORD WINAPI AllocSelector(WORD); +WORD WINAPI AllocSelectorArray(WORD); +VOID WINAPI CalcChildScroll(HWND16,WORD); +INT16 WINAPI Catch(LPCATCHBUF); +VOID WINAPI CascadeChildWindows(HWND16,WORD); +INT16 WINAPI CloseComm(INT16); +HGLOBAL16 WINAPI CreateCursorIconIndirect(HINSTANCE16,CURSORICONINFO*, + LPCVOID,LPCVOID); +WORD WINAPI CreateSystemTimer(WORD,FARPROC16); +BOOL16 WINAPI DCHook(HDC16,WORD,DWORD,LPARAM); +VOID WINAPI DirectedYield(HTASK16); +HGLOBAL16 WINAPI DirectResAlloc(HINSTANCE16,WORD,UINT16); +VOID WINAPI DisableSystemTimers(void); +BOOL16 WINAPI DlgDirSelect(HWND16,LPSTR,INT16); +BOOL16 WINAPI DlgDirSelectComboBox(HWND16,LPSTR,INT16); +DWORD WINAPI DumpIcon(SEGPTR,WORD*,SEGPTR*,SEGPTR*); +BOOL16 WINAPI EnableCommNotification(INT16,HWND16,INT16,INT16); +BOOL16 WINAPI EnableHardwareInput(BOOL16); +VOID WINAPI EnableSystemTimers(void); +INT16 WINAPI ExcludeVisRect(HDC16,INT16,INT16,INT16,INT16); +HANDLE16 WINAPI FarGetOwner(HGLOBAL16); +VOID WINAPI FarSetOwner(HGLOBAL16,HANDLE16); +BOOL16 WINAPI FastWindowFrame(HDC16,const RECT16*,INT16,INT16,DWORD); +VOID WINAPI FileCDR(FARPROC16); +VOID WINAPI FillWindow(HWND16,HWND16,HDC16,HBRUSH16); +INT16 WINAPI FlushComm(INT16,INT16); +WORD WINAPI FreeSelector(WORD); +UINT16 WINAPI GDIRealizePalette(HDC16); +HPALETTE16 WINAPI GDISelectPalette(HDC16,HPALETTE16,WORD); +HANDLE16 WINAPI GetAtomHandle(ATOM); +DWORD WINAPI GetBitmapDimension(HBITMAP16); +DWORD WINAPI GetBrushOrg(HDC16); +HANDLE16 WINAPI GetCodeHandle(FARPROC16); +INT16 WINAPI GetCommError(INT16,LPCOMSTAT); +UINT16 WINAPI GetCommEventMask(INT16,UINT16); +HBRUSH16 WINAPI GetControlBrush(HWND16,HDC16,UINT16); +VOID WINAPI GetCodeInfo(FARPROC16,LPVOID); +HANDLE16 WINAPI GetCurrentPDB(void); +DWORD WINAPI GetCurrentPosition(HDC16); +HTASK16 WINAPI GetCurrentTask(void); +DWORD WINAPI GetDCHook(HDC16,FARPROC16*); +DWORD WINAPI GetDCOrg(HDC16); +HDC16 WINAPI GetDCState(HDC16); +HWND16 WINAPI GetDesktopHwnd(void); +SEGPTR WINAPI GetDOSEnvironment(void); +INT16 WINAPI GetEnvironment(LPCSTR,LPSTR,UINT16); +HMODULE16 WINAPI GetExePtr(HANDLE16); +WORD WINAPI GetExeVersion(void); +WORD WINAPI GetExpWinVer(HMODULE16); +DWORD WINAPI GetFileResourceSize(LPCSTR,SEGPTR,SEGPTR,LPDWORD); +DWORD WINAPI GetFileResource(LPCSTR,SEGPTR,SEGPTR,DWORD,DWORD,LPVOID); +DWORD WINAPI GetHeapSpaces(HMODULE16); +INT16 WINAPI GetInstanceData(HINSTANCE16,WORD,INT16); +HGLOBAL16 WINAPI GetMetaFileBits(HMETAFILE16); +BOOL16 WINAPI GetModuleName(HINSTANCE16,LPSTR,INT16); +INT16 WINAPI GetModuleUsage(HINSTANCE16); +FARPROC16 WINAPI GetMouseEventProc(void); +UINT16 WINAPI GetNumTasks(void); +DWORD WINAPI GetSelectorBase(WORD); +DWORD WINAPI GetSelectorLimit(WORD); +HINSTANCE16 WINAPI GetTaskDS(void); +HQUEUE16 WINAPI GetTaskQueue(HTASK16); +BYTE WINAPI GetTempDrive(BYTE); +DWORD WINAPI GetTextExtent(HDC16,LPCSTR,INT16); +DWORD WINAPI GetViewportExt(HDC16); +DWORD WINAPI GetViewportOrg(HDC16); +BOOL16 WINAPI GetWinDebugInfo(LPWINDEBUGINFO,UINT16); +DWORD WINAPI GetWindowExt(HDC16); +DWORD WINAPI GetWindowOrg(HDC16); +DWORD WINAPI GetWinFlags(void); +DWORD WINAPI GlobalDOSAlloc(DWORD); +WORD WINAPI GlobalDOSFree(WORD); +void WINAPI GlobalFreeAll(HGLOBAL16); +HGLOBAL16 WINAPI GlobalLRUNewest(HGLOBAL16); +HGLOBAL16 WINAPI GlobalLRUOldest(HGLOBAL16); +VOID WINAPI GlobalNotify(FARPROC16); +WORD WINAPI GlobalPageLock(HGLOBAL16); +WORD WINAPI GlobalPageUnlock(HGLOBAL16); +INT16 WINAPI InitApp(HINSTANCE16); +HRGN16 WINAPI InquireVisRgn(HDC16); +INT16 WINAPI IntersectVisRect(HDC16,INT16,INT16,INT16,INT16); +BOOL16 WINAPI IsDCCurrentPalette(HDC16); +BOOL16 WINAPI IsGDIObject(HGDIOBJ16); +BOOL16 WINAPI IsSharedSelector(HANDLE16); +BOOL16 WINAPI IsTask(HTASK16); +HTASK16 WINAPI IsTaskLocked(void); +BOOL16 WINAPI IsValidMetaFile(HMETAFILE16); +VOID WINAPI LogError(UINT16, LPVOID); +VOID WINAPI LogParamError(UINT16,FARPROC16,LPVOID); +WORD WINAPI LocalCountFree(void); +WORD WINAPI LocalHandleDelta(WORD); +WORD WINAPI LocalHeapSize(void); +BOOL16 WINAPI LocalInit(HANDLE16,WORD,WORD); +FARPROC16 WINAPI LocalNotify(FARPROC16); +HTASK16 WINAPI LockCurrentTask(BOOL16); +HMENU16 WINAPI LookupMenuHandle(HMENU16,INT16); +DWORD WINAPI MoveTo(HDC16,INT16,INT16); +DWORD WINAPI OffsetViewportOrg(HDC16,INT16,INT16); +INT16 WINAPI OffsetVisRgn(HDC16,INT16,INT16); +DWORD WINAPI OffsetWindowOrg(HDC16,INT16,INT16); +VOID WINAPI OldYield(void); +INT16 WINAPI OpenComm(LPCSTR,UINT16,UINT16); +VOID WINAPI PaintRect(HWND16,HWND16,HDC16,HBRUSH16,const RECT16*); +VOID WINAPI PostEvent(HTASK16); +WORD WINAPI PrestoChangoSelector(WORD,WORD); +INT16 WINAPI ReadComm(INT16,LPSTR,INT16); +UINT16 WINAPI RealizeDefaultPalette(HDC16); +BOOL32 WINAPI RegisterShellHook(HWND16,UINT16); +INT16 WINAPI RestoreVisRgn(HDC16); +HRGN16 WINAPI SaveVisRgn(HDC16); +DWORD WINAPI ScaleViewportExt(HDC16,INT16,INT16,INT16,INT16); +DWORD WINAPI ScaleWindowExt(HDC16,INT16,INT16,INT16,INT16); +WORD WINAPI SelectorAccessRights(WORD,WORD,WORD); +INT16 WINAPI SelectVisRgn(HDC16,HRGN16); +DWORD WINAPI SetBitmapDimension(HBITMAP16,INT16,INT16); +DWORD WINAPI SetBrushOrg(HDC16,INT16,INT16); +UINT16* WINAPI SetCommEventMask(INT16,UINT16); +BOOL16 WINAPI SetDCHook(HDC16,FARPROC16,DWORD); +DWORD WINAPI SetDCOrg(HDC16,INT16,INT16); +VOID WINAPI SetDCState(HDC16,HDC16); +BOOL16 WINAPI SetDeskPattern(void); +INT16 WINAPI SetEnvironment(LPCSTR,LPCSTR,UINT16); +WORD WINAPI SetHookFlags(HDC16,WORD); +HMETAFILE16 WINAPI SetMetaFileBits(HGLOBAL16); +VOID WINAPI SetPriority(HTASK16,INT16); +FARPROC16 WINAPI SetResourceHandler(HINSTANCE16,SEGPTR,FARPROC16); +WORD WINAPI SetSelectorBase(WORD,DWORD); +WORD WINAPI SetSelectorLimit(WORD,DWORD); +LONG WINAPI SetSwapAreaSize(WORD); +HQUEUE16 WINAPI SetTaskQueue(HTASK16,HQUEUE16); +FARPROC16 WINAPI SetTaskSignalProc(HTASK16,FARPROC16); +DWORD WINAPI SetViewportExt(HDC16,INT16,INT16); +DWORD WINAPI SetViewportOrg(HDC16,INT16,INT16); +BOOL16 WINAPI SetWinDebugInfo(LPWINDEBUGINFO); +DWORD WINAPI SetWindowExt(HDC16,INT16,INT16); +DWORD WINAPI SetWindowOrg(HDC16,INT16,INT16); +VOID WINAPI SwitchStackBack(void); +VOID WINAPI SwitchStackTo(WORD,WORD,WORD); +VOID WINAPI TileChildWindows(HWND16,WORD); +INT16 WINAPI Throw(LPCATCHBUF,INT16); +INT16 WINAPI UngetCommChar(INT16,CHAR); +VOID WINAPI UserYield(void); +BOOL16 WINAPI WaitEvent(HTASK16); +INT16 WINAPI WriteComm(INT16,LPSTR,INT16); +VOID WINAPI WriteOutProfiles(VOID); +VOID WINAPI hmemcpy(LPVOID,LPCVOID,LONG); +VOID WINAPI Yield(void); + /* Declarations for functions that exist only in Win32 */ -BOOL32 Beep(DWORD,DWORD); -BOOL32 ClearCommError(INT32,LPDWORD,LPCOMSTAT); -BOOL32 CloseHandle(HANDLE32); -BOOL32 CopyFile32A(LPCSTR,LPCSTR,BOOL32); -BOOL32 CopyFile32W(LPCWSTR,LPCWSTR,BOOL32); -#define CopyFile WINELIB_NAME_AW(CopyFile) -INT32 CompareFileTime(LPFILETIME,LPFILETIME); -HANDLE32 CreateEvent32A(LPSECURITY_ATTRIBUTES,BOOL32,BOOL32,LPCSTR); -HANDLE32 CreateEvent32W(LPSECURITY_ATTRIBUTES,BOOL32,BOOL32,LPCWSTR); -#define CreateEvent WINELIB_NAME_AW(CreateEvent) -HFILE32 CreateFile32A(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE32); -HFILE32 CreateFile32W(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,DWORD,DWORD,HANDLE32); -#define CreateFile WINELIB_NAME_AW(CreateFile) -HANDLE32 CreateFileMapping32A(HANDLE32,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCSTR); -HANDLE32 CreateFileMapping32W(HANDLE32,LPSECURITY_ATTRIBUTES,DWORD,DWORD,DWORD,LPCWSTR); -#define CreateFileMapping WINELIB_NAME_AW(CreateFileMapping) -HANDLE32 CreateMutex32A(LPSECURITY_ATTRIBUTES,BOOL32,LPCSTR); -HANDLE32 CreateMutex32W(LPSECURITY_ATTRIBUTES,BOOL32,LPCWSTR); -#define CreateMutex WINELIB_NAME_AW(CreateMutex) -HANDLE32 CreateSemaphore32A(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCSTR); -HANDLE32 CreateSemaphore32W(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR); -#define CreateSemaphore WINELIB_NAME_AW(CreateSemaphore) -BOOL32 DosDateTimeToFileTime(WORD,WORD,LPFILETIME); -INT32 EnumPropsEx32A(HWND32,PROPENUMPROCEX32A,LPARAM); -INT32 EnumPropsEx32W(HWND32,PROPENUMPROCEX32W,LPARAM); -#define EnumPropsEx WINELIB_NAME_AW(EnumPropsEx) -BOOL32 EnumResourceLanguages32A(HMODULE32,LPCSTR,LPCSTR,ENUMRESLANGPROC32A,LONG); -BOOL32 EnumResourceLanguages32W(HMODULE32,LPCWSTR,LPCWSTR,ENUMRESLANGPROC32W,LONG); -#define EnumResourceLanguages WINELIB_NAME_AW(EnumResourceLanguages) -BOOL32 EnumResourceNames32A(HMODULE32,LPCSTR,ENUMRESNAMEPROC32A,LONG); -BOOL32 EnumResourceNames32W(HMODULE32,LPCWSTR,ENUMRESNAMEPROC32W,LONG); -#define EnumResourceNames WINELIB_NAME_AW(EnumResourceNames) -BOOL32 EnumResourceTypes32A(HMODULE32,ENUMRESTYPEPROC32A,LONG); -BOOL32 EnumResourceTypes32W(HMODULE32,ENUMRESTYPEPROC32W,LONG); -#define EnumResourceTypes WINELIB_NAME_AW(EnumResourceTypes) -BOOL32 EnumSystemCodePages32A(CODEPAGE_ENUMPROC32A,DWORD); -BOOL32 EnumSystemCodePages32W(CODEPAGE_ENUMPROC32W,DWORD); -#define EnumSystemCodePages WINELIB_NAME_AW(EnumSystemCodePages) -BOOL32 EnumSystemLocales32A(LOCALE_ENUMPROC32A,DWORD); -BOOL32 EnumSystemLocales32W(LOCALE_ENUMPROC32W,DWORD); -#define EnumSystemLocales WINELIB_NAME_AW(EnumSystemLocales) -BOOL32 EnumThreadWindows(DWORD,WNDENUMPROC32,LPARAM); -void ExitProcess(DWORD); -BOOL32 ExitWindowsEx(UINT32,DWORD); -DWORD ExpandEnvironmentStrings32A(LPCSTR,LPSTR,DWORD); -DWORD ExpandEnvironmentStrings32W(LPCWSTR,LPWSTR,DWORD); -#define ExpandEnvironmentStrings WINELIB_NAME_AW(ExpandEnvironmentStrings) -BOOL32 FileTimeToDosDateTime(const FILETIME*,LPWORD,LPWORD); -BOOL32 FileTimeToLocalFileTime(const FILETIME*,LPFILETIME); -BOOL32 FileTimeToSystemTime(const FILETIME*,LPSYSTEMTIME); -HRSRC32 FindResourceEx32A(HINSTANCE32,LPCSTR,LPCSTR,WORD); -HRSRC32 FindResourceEx32W(HINSTANCE32,LPCWSTR,LPCWSTR,WORD); -#define FindResourceEx WINELIB_NAME_AW(FindResourceEx) -BOOL32 FlushFileBuffers(HFILE32); -BOOL32 FreeEnvironmentStrings32A(LPSTR); -BOOL32 FreeEnvironmentStrings32W(LPWSTR); -#define FreeEnvironmentStrings WINELIB_NAME_AW(FreeEnvironmentStrings) -UINT32 GetACP(void); -LPCSTR GetCommandLine32A(); -LPCWSTR GetCommandLine32W(); -#define GetCommandLine WINELIB_NAME_AW(GetCommandLine) -BOOL32 GetCommTimeouts(INT32,LPCOMMTIMEOUTS); -BOOL32 GetCPInfo(UINT32,LPCPINFO); -HANDLE32 GetCurrentProcess(void); -DWORD GetCurrentProcessId(void); -HANDLE32 GetCurrentThread(void); -DWORD GetCurrentThreadId(void); -BOOL32 GetDCOrgEx(HDC32,LPPOINT32); -LPSTR GetEnvironmentStrings32A(void); -LPWSTR GetEnvironmentStrings32W(void); -#define GetEnvironmentStrings WINELIB_NAME_AW(GetEnvironmentStrings) -DWORD GetEnvironmentVariable32A(LPCSTR,LPSTR,DWORD); -DWORD GetEnvironmentVariable32W(LPCWSTR,LPWSTR,DWORD); -#define GetEnvironmentVariable WINELIB_NAME_AW(GetEnvironmentVariable) -DWORD GetFileInformationByHandle(HFILE32,BY_HANDLE_FILE_INFORMATION*); -DWORD GetFileSize(HFILE32,LPDWORD); -BOOL32 GetFileTime(HFILE32,LPFILETIME,LPFILETIME,LPFILETIME); -DWORD GetFileType(HFILE32); -DWORD GetFullPathName32A(LPCSTR,DWORD,LPSTR,LPSTR*); -DWORD GetFullPathName32W(LPCWSTR,DWORD,LPWSTR,LPWSTR*); -#define GetFullPathName WINELIB_NAME_AW(GetFullPathName) -VOID GetLocalTime(LPSYSTEMTIME); -DWORD GetLogicalDrives(void); -BOOL32 GetMenuItemInfo32A(HMENU32,UINT32,BOOL32,MENUITEMINFO32A*); -BOOL32 GetMenuItemInfo32W(HMENU32,UINT32,BOOL32,MENUITEMINFO32W*); -#define GetMenuItemInfo WINELIB_NAME_AW(GetMenuItemInfo) -UINT32 GetOEMCP(void); -DWORD GetPriorityClass(HANDLE32); -HANDLE32 GetProcessHeap(void); -DWORD GetShortPathName32A(LPCSTR,LPSTR,DWORD); -DWORD GetShortPathName32W(LPCWSTR,LPWSTR,DWORD); -#define GetShortPathName WINELIB_NAME_AW(GetShortPathName) -HFILE32 GetStdHandle(DWORD); -BOOL32 GetStringTypeEx32A(LCID,DWORD,LPCSTR,INT32,LPWORD); -BOOL32 GetStringTypeEx32W(LCID,DWORD,LPCWSTR,INT32,LPWORD); -#define GetStringTypeEx WINELIB_NAME_AW(GetStringTypeEx) -VOID GetSystemInfo(LPSYSTEM_INFO); -BOOL32 GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); -VOID GetSystemTime(LPSYSTEMTIME); -LCID GetThreadLocale(); -INT32 GetThreadPriority(HANDLE32); -DWORD GetWindowThreadProcessId(HWND32,LPDWORD); -VOID GlobalMemoryStatus(LPMEMORYSTATUS); -LPVOID HeapAlloc(HANDLE32,DWORD,DWORD); -DWORD HeapCompact(HANDLE32,DWORD); -HANDLE32 HeapCreate(DWORD,DWORD,DWORD); -BOOL32 HeapDestroy(HANDLE32); -BOOL32 HeapFree(HANDLE32,DWORD,LPVOID); -BOOL32 HeapLock(HANDLE32); -LPVOID HeapReAlloc(HANDLE32,DWORD,LPVOID,DWORD); -DWORD HeapSize(HANDLE32,DWORD,LPVOID); -BOOL32 HeapUnlock(HANDLE32); -BOOL32 HeapValidate(HANDLE32,DWORD,LPVOID); -BOOL32 IsDBCSLeadByteEx(UINT32,BYTE); -BOOL32 IsWindowUnicode(HWND32); -BOOL32 IsValidLocale(DWORD,DWORD); -BOOL32 LocalFileTimeToFileTime(const FILETIME*,LPFILETIME); -BOOL32 LockFile(HFILE32,DWORD,DWORD,DWORD,DWORD); -SEGPTR MapLS(LPVOID); -LPVOID MapSL(SEGPTR); -LPVOID MapViewOfFile(HANDLE32,DWORD,DWORD,DWORD,DWORD); -LPVOID MapViewOfFileEx(HANDLE32,DWORD,DWORD,DWORD,DWORD,LPVOID); -INT32 MessageBoxEx32A(HWND32,LPCSTR,LPCSTR,UINT32,WORD); -INT32 MessageBoxEx32W(HWND32,LPCWSTR,LPCWSTR,UINT32,WORD); -#define MessageBoxEx WINELIB_NAME_AW(MessageBoxEx) -BOOL32 MoveFile32A(LPCSTR,LPCSTR); -BOOL32 MoveFile32W(LPCWSTR,LPCWSTR); -#define MoveFile WINELIB_NAME_AW(MoveFile) -HANDLE32 OpenEvent32A(DWORD,BOOL32,LPCSTR); -HANDLE32 OpenEvent32W(DWORD,BOOL32,LPCWSTR); -#define OpenEvent WINELIB_NAME_AW(OpenEvent) -HANDLE32 OpenFileMapping32A(DWORD,BOOL32,LPCSTR); -HANDLE32 OpenFileMapping32W(DWORD,BOOL32,LPCWSTR); -#define OpenFileMapping WINELIB_NAME_AW(OpenFileMapping) -HANDLE32 OpenMutex32A(DWORD,BOOL32,LPCSTR); -HANDLE32 OpenMutex32W(DWORD,BOOL32,LPCWSTR); -#define OpenMutex WINELIB_NAME_AW(OpenMutex) -HANDLE32 OpenSemaphore32A(DWORD,BOOL32,LPCSTR); -HANDLE32 OpenSemaphore32W(DWORD,BOOL32,LPCWSTR); -#define OpenSemaphore WINELIB_NAME_AW(OpenSemaphore) -DWORD QueryDosDevice32A(LPCSTR,LPSTR,DWORD); -DWORD QueryDosDevice32W(LPCWSTR,LPWSTR,DWORD); -#define QueryDosDevice WINELIB_NAME_AW(QueryDosDevice) -BOOL32 QueryPerformanceCounter(LPLARGE_INTEGER); -BOOL32 ReadConsole32A(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID); -BOOL32 ReadConsole32W(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID); -#define ReadConsole WINELIB_NAME_AW(ReadConsole) -BOOL32 ReadFile(HFILE32,LPVOID,DWORD,LPDWORD,LPOVERLAPPED); -DWORD RegCreateKeyEx32A(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM, - LPSECURITY_ATTRIBUTES,LPHKEY,LPDWORD); -DWORD RegCreateKeyEx32W(HKEY,LPCWSTR,DWORD,LPWSTR,DWORD,REGSAM, - LPSECURITY_ATTRIBUTES,LPHKEY,LPDWORD); -#define RegCreateKeyEx WINELIB_NAME_AW(RegCreateKeyEx) -DWORD RegEnumKeyEx32A(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPSTR,LPDWORD,LPFILETIME); -DWORD RegEnumKeyEx32W(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPWSTR,LPDWORD,LPFILETIME); -#define RegEnumKeyEx WINELIB_NAME_AW(RegEnumKeyEx) -DWORD RegOpenKeyEx32W(HKEY,LPCWSTR,DWORD,REGSAM,LPHKEY); -DWORD RegOpenKeyEx32A(HKEY,LPCSTR,DWORD,REGSAM,LPHKEY); -#define RegOpenKeyEx WINELIB_NAME_AW(RegOpenKeyEx) -DWORD RegQueryInfoKey32W(HKEY,LPWSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD, - LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPFILETIME); -DWORD RegQueryInfoKey32A(HKEY,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD, - LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPFILETIME); -#define RegQueryInfoKey WINELIB_NAME_AW(RegQueryInfoKey) -BOOL32 ReleaseSemaphore(HANDLE32,LONG,LPLONG); -VOID RtlFillMemory(LPVOID,UINT32,UINT32); -VOID RtlMoveMemory(LPVOID,LPCVOID,UINT32); -VOID RtlZeroMemory(LPVOID,UINT32); -DWORD SearchPath32A(LPCSTR,LPCSTR,LPCSTR,DWORD,LPSTR,LPSTR*); -DWORD SearchPath32W(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPWSTR,LPWSTR*); -#define SearchPath WINELIB_NAME(SearchPath) -BOOL32 SetBrushOrgEx(HDC32,INT32,INT32,LPPOINT32); -BOOL32 SetCommMask(INT32,DWORD); -BOOL32 SetCommTimeouts(INT32,LPCOMMTIMEOUTS); -BOOL32 SetConsoleTitle32A(LPCSTR); -BOOL32 SetConsoleTitle32W(LPCWSTR); -#define SetConsoleTitle WINELIB_NAME_AW(SetConsoleTitle) -BOOL32 SetEndOfFile(HFILE32); -BOOL32 SetEnvironmentVariable32A(LPCSTR,LPCSTR); -BOOL32 SetEnvironmentVariable32W(LPCWSTR,LPCWSTR); -#define SetEnvironmentVariable WINELIB_NAME_AW(SetEnvironmentVariable) -DWORD SetFilePointer(HFILE32,LONG,LPLONG,DWORD); -BOOL32 SetFileTime(HFILE32,const FILETIME*,const FILETIME*,const FILETIME*); -VOID SetLastErrorEx(DWORD,DWORD); -BOOL32 SetPriorityClass(HANDLE32,DWORD); -BOOL32 SetStdHandle(DWORD,HANDLE32); -BOOL32 SetSystemPowerState(BOOL32,BOOL32); -BOOL32 SetSystemTime(const SYSTEMTIME*); -BOOL32 SetThreadPriority(HANDLE32,INT32); -BOOL32 SetTimeZoneInformation(const LPTIME_ZONE_INFORMATION); -VOID Sleep(DWORD); -BOOL32 SystemTimeToFileTime(const SYSTEMTIME*,LPFILETIME); -BOOL32 TrackPopupMenuEx(HMENU32,UINT32,INT32,INT32,HWND32,LPTPMPARAMS); -DWORD TlsAlloc(void); -BOOL32 TlsFree(DWORD); -LPVOID TlsGetValue(DWORD); -BOOL32 TlsSetValue(DWORD,LPVOID); -VOID UnMapLS(SEGPTR); -BOOL32 UnlockFile(HFILE32,DWORD,DWORD,DWORD,DWORD); -BOOL32 UnmapViewOfFile(LPVOID); -LPVOID VirtualAlloc(LPVOID,DWORD,DWORD,DWORD); -BOOL32 VirtualFree(LPVOID,DWORD,DWORD); -BOOL32 VirtualLock(LPVOID,DWORD); -BOOL32 VirtualProtect(LPVOID,DWORD,DWORD,LPDWORD); -BOOL32 VirtualProtectEx(HANDLE32,LPVOID,DWORD,DWORD,LPDWORD); -BOOL32 VirtualQuery(LPCVOID,LPMEMORY_BASIC_INFORMATION,DWORD); -BOOL32 VirtualQueryEx(HANDLE32,LPCVOID,LPMEMORY_BASIC_INFORMATION,DWORD); -BOOL32 VirtualUnlock(LPVOID,DWORD); -BOOL32 WriteConsole32A(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID); -BOOL32 WriteConsole32W(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID); -#define WriteConsole WINELIB_NAME_AW(WriteConsole) -BOOL32 WriteFile(HFILE32,LPVOID,DWORD,LPDWORD,LPOVERLAPPED); + +BOOL32 WINAPI AreFileApisANSI(void); +BOOL32 WINAPI Beep(DWORD,DWORD); +BOOL32 WINAPI ClearCommError(INT32,LPDWORD,LPCOMSTAT); +BOOL32 WINAPI CloseHandle(HANDLE32); +BOOL32 WINAPI CopyFile32A(LPCSTR,LPCSTR,BOOL32); +BOOL32 WINAPI CopyFile32W(LPCWSTR,LPCWSTR,BOOL32); +#define CopyFile WINELIB_NAME_AW(CopyFile) +INT32 WINAPI CompareFileTime(LPFILETIME,LPFILETIME); +HANDLE32 WINAPI CreateEvent32A(LPSECURITY_ATTRIBUTES,BOOL32,BOOL32,LPCSTR); +HANDLE32 WINAPI CreateEvent32W(LPSECURITY_ATTRIBUTES,BOOL32,BOOL32,LPCWSTR); +#define CreateEvent WINELIB_NAME_AW(CreateEvent) +HFILE32 WINAPI CreateFile32A(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES, + DWORD,DWORD,HANDLE32); +HFILE32 WINAPI CreateFile32W(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES, + DWORD,DWORD,HANDLE32); +#define CreateFile WINELIB_NAME_AW(CreateFile) +HANDLE32 WINAPI CreateFileMapping32A(HANDLE32,LPSECURITY_ATTRIBUTES,DWORD, + DWORD,DWORD,LPCSTR); +HANDLE32 WINAPI CreateFileMapping32W(HANDLE32,LPSECURITY_ATTRIBUTES,DWORD, + DWORD,DWORD,LPCWSTR); +#define CreateFileMapping WINELIB_NAME_AW(CreateFileMapping) +HANDLE32 WINAPI CreateMutex32A(LPSECURITY_ATTRIBUTES,BOOL32,LPCSTR); +HANDLE32 WINAPI CreateMutex32W(LPSECURITY_ATTRIBUTES,BOOL32,LPCWSTR); +#define CreateMutex WINELIB_NAME_AW(CreateMutex) +HANDLE32 WINAPI CreateSemaphore32A(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCSTR); +HANDLE32 WINAPI CreateSemaphore32W(LPSECURITY_ATTRIBUTES,LONG,LONG,LPCWSTR); +#define CreateSemaphore WINELIB_NAME_AW(CreateSemaphore) +BOOL32 WINAPI DisableThreadLibraryCalls(HMODULE32); +BOOL32 WINAPI DosDateTimeToFileTime(WORD,WORD,LPFILETIME); +INT32 WINAPI EnumPropsEx32A(HWND32,PROPENUMPROCEX32A,LPARAM); +INT32 WINAPI EnumPropsEx32W(HWND32,PROPENUMPROCEX32W,LPARAM); +#define EnumPropsEx WINELIB_NAME_AW(EnumPropsEx) +BOOL32 WINAPI EnumResourceLanguages32A(HMODULE32,LPCSTR,LPCSTR, + ENUMRESLANGPROC32A,LONG); +BOOL32 WINAPI EnumResourceLanguages32W(HMODULE32,LPCWSTR,LPCWSTR, + ENUMRESLANGPROC32W,LONG); +#define EnumResourceLanguages WINELIB_NAME_AW(EnumResourceLanguages) +BOOL32 WINAPI EnumResourceNames32A(HMODULE32,LPCSTR,ENUMRESNAMEPROC32A, + LONG); +BOOL32 WINAPI EnumResourceNames32W(HMODULE32,LPCWSTR,ENUMRESNAMEPROC32W, + LONG); +#define EnumResourceNames WINELIB_NAME_AW(EnumResourceNames) +BOOL32 WINAPI EnumResourceTypes32A(HMODULE32,ENUMRESTYPEPROC32A,LONG); +BOOL32 WINAPI EnumResourceTypes32W(HMODULE32,ENUMRESTYPEPROC32W,LONG); +#define EnumResourceTypes WINELIB_NAME_AW(EnumResourceTypes) +BOOL32 WINAPI EnumSystemCodePages32A(CODEPAGE_ENUMPROC32A,DWORD); +BOOL32 WINAPI EnumSystemCodePages32W(CODEPAGE_ENUMPROC32W,DWORD); +#define EnumSystemCodePages WINELIB_NAME_AW(EnumSystemCodePages) +BOOL32 WINAPI EnumSystemLocales32A(LOCALE_ENUMPROC32A,DWORD); +BOOL32 WINAPI EnumSystemLocales32W(LOCALE_ENUMPROC32W,DWORD); +#define EnumSystemLocales WINELIB_NAME_AW(EnumSystemLocales) +BOOL32 WINAPI EnumThreadWindows(DWORD,WNDENUMPROC32,LPARAM); +void WINAPI ExitProcess(DWORD); +BOOL32 WINAPI ExitWindowsEx(UINT32,DWORD); +DWORD WINAPI ExpandEnvironmentStrings32A(LPCSTR,LPSTR,DWORD); +DWORD WINAPI ExpandEnvironmentStrings32W(LPCWSTR,LPWSTR,DWORD); +#define ExpandEnvironmentStrings WINELIB_NAME_AW(ExpandEnvironmentStrings) +BOOL32 WINAPI FileTimeToDosDateTime(const FILETIME*,LPWORD,LPWORD); +BOOL32 WINAPI FileTimeToLocalFileTime(const FILETIME*,LPFILETIME); +BOOL32 WINAPI FileTimeToSystemTime(const FILETIME*,LPSYSTEMTIME); +HRSRC32 WINAPI FindResourceEx32A(HINSTANCE32,LPCSTR,LPCSTR,WORD); +HRSRC32 WINAPI FindResourceEx32W(HINSTANCE32,LPCWSTR,LPCWSTR,WORD); +#define FindResourceEx WINELIB_NAME_AW(FindResourceEx) +BOOL32 WINAPI FlushFileBuffers(HFILE32); +BOOL32 WINAPI FreeEnvironmentStrings32A(LPSTR); +BOOL32 WINAPI FreeEnvironmentStrings32W(LPWSTR); +#define FreeEnvironmentStrings WINELIB_NAME_AW(FreeEnvironmentStrings) +UINT32 WINAPI GetACP(void); +LPCSTR WINAPI GetCommandLine32A(); +LPCWSTR WINAPI GetCommandLine32W(); +#define GetCommandLine WINELIB_NAME_AW(GetCommandLine) +BOOL32 WINAPI GetCommTimeouts(INT32,LPCOMMTIMEOUTS); +BOOL32 WINAPI GetComputerName32A(LPSTR,LPDWORD); +BOOL32 WINAPI GetComputerName32W(LPWSTR,LPDWORD); +#define GetComputerName WINELIB_NAME_AW(GetComputerName) +BOOL32 WINAPI GetCPInfo(UINT32,LPCPINFO); +HANDLE32 WINAPI GetCurrentProcess(void); +DWORD WINAPI GetCurrentProcessId(void); +HANDLE32 WINAPI GetCurrentThread(void); +DWORD WINAPI GetCurrentThreadId(void); +BOOL32 WINAPI GetDCOrgEx(HDC32,LPPOINT32); +LPSTR WINAPI GetEnvironmentStrings32A(void); +LPWSTR WINAPI GetEnvironmentStrings32W(void); +#define GetEnvironmentStrings WINELIB_NAME_AW(GetEnvironmentStrings) +DWORD WINAPI GetEnvironmentVariable32A(LPCSTR,LPSTR,DWORD); +DWORD WINAPI GetEnvironmentVariable32W(LPCWSTR,LPWSTR,DWORD); +#define GetEnvironmentVariable WINELIB_NAME_AW(GetEnvironmentVariable) +DWORD WINAPI GetFileInformationByHandle(HFILE32,BY_HANDLE_FILE_INFORMATION*); +DWORD WINAPI GetFileSize(HFILE32,LPDWORD); +BOOL32 WINAPI GetFileTime(HFILE32,LPFILETIME,LPFILETIME,LPFILETIME); +DWORD WINAPI GetFileType(HFILE32); +DWORD WINAPI GetFullPathName32A(LPCSTR,DWORD,LPSTR,LPSTR*); +DWORD WINAPI GetFullPathName32W(LPCWSTR,DWORD,LPWSTR,LPWSTR*); +#define GetFullPathName WINELIB_NAME_AW(GetFullPathName) +VOID WINAPI GetLocalTime(LPSYSTEMTIME); +DWORD WINAPI GetLogicalDrives(void); +BOOL32 WINAPI GetMenuItemInfo32A(HMENU32,UINT32,BOOL32,MENUITEMINFO32A*); +BOOL32 WINAPI GetMenuItemInfo32W(HMENU32,UINT32,BOOL32,MENUITEMINFO32W*); +#define GetMenuItemInfo WINELIB_NAME_AW(GetMenuItemInfo) +UINT32 WINAPI GetOEMCP(void); +DWORD WINAPI GetPriorityClass(HANDLE32); +HANDLE32 WINAPI GetProcessHeap(void); +DWORD WINAPI GetShortPathName32A(LPCSTR,LPSTR,DWORD); +DWORD WINAPI GetShortPathName32W(LPCWSTR,LPWSTR,DWORD); +#define GetShortPathName WINELIB_NAME_AW(GetShortPathName) +HFILE32 WINAPI GetStdHandle(DWORD); +BOOL32 WINAPI GetStringTypeEx32A(LCID,DWORD,LPCSTR,INT32,LPWORD); +BOOL32 WINAPI GetStringTypeEx32W(LCID,DWORD,LPCWSTR,INT32,LPWORD); +#define GetStringTypeEx WINELIB_NAME_AW(GetStringTypeEx) +VOID WINAPI GetSystemInfo(LPSYSTEM_INFO); +BOOL32 WINAPI GetSystemPowerStatus(LPSYSTEM_POWER_STATUS); +VOID WINAPI GetSystemTime(LPSYSTEMTIME); +BOOL32 WINAPI GetTextExtentExPoint32A(HDC32,LPCSTR,INT32,INT32, + LPINT32,LPINT32,LPSIZE32); +BOOL32 WINAPI GetTextExtentExPoint32W(HDC32,LPCWSTR,INT32,INT32, + LPINT32,LPINT32,LPSIZE32); +#define GetTextExtentExPoint WINELIB_NAME_AW(GetTextExtentExPoint) +LCID WINAPI GetThreadLocale(); +INT32 WINAPI GetThreadPriority(HANDLE32); +BOOL32 WINAPI GetUserName32A(LPSTR,LPDWORD); +BOOL32 WINAPI GetUserName32W(LPWSTR,LPDWORD); +#define GetUserName WINELIB_NAME_AW(GetUserName) +DWORD WINAPI GetWindowThreadProcessId(HWND32,LPDWORD); +VOID WINAPI GlobalMemoryStatus(LPMEMORYSTATUS); +LPVOID WINAPI HeapAlloc(HANDLE32,DWORD,DWORD); +DWORD WINAPI HeapCompact(HANDLE32,DWORD); +HANDLE32 WINAPI HeapCreate(DWORD,DWORD,DWORD); +BOOL32 WINAPI HeapDestroy(HANDLE32); +BOOL32 WINAPI HeapFree(HANDLE32,DWORD,LPVOID); +BOOL32 WINAPI HeapLock(HANDLE32); +LPVOID WINAPI HeapReAlloc(HANDLE32,DWORD,LPVOID,DWORD); +DWORD WINAPI HeapSize(HANDLE32,DWORD,LPVOID); +BOOL32 WINAPI HeapUnlock(HANDLE32); +BOOL32 WINAPI HeapValidate(HANDLE32,DWORD,LPVOID); +BOOL32 WINAPI IsDBCSLeadByteEx(UINT32,BYTE); +BOOL32 WINAPI IsWindowUnicode(HWND32); +BOOL32 WINAPI IsValidLocale(DWORD,DWORD); +BOOL32 WINAPI LocalFileTimeToFileTime(const FILETIME*,LPFILETIME); +BOOL32 WINAPI LockFile(HFILE32,DWORD,DWORD,DWORD,DWORD); +SEGPTR WINAPI MapLS(LPVOID); +LPVOID WINAPI MapSL(SEGPTR); +LPVOID WINAPI MapViewOfFile(HANDLE32,DWORD,DWORD,DWORD,DWORD); +LPVOID WINAPI MapViewOfFileEx(HANDLE32,DWORD,DWORD,DWORD,DWORD,LPVOID); +INT32 WINAPI MessageBoxEx32A(HWND32,LPCSTR,LPCSTR,UINT32,WORD); +INT32 WINAPI MessageBoxEx32W(HWND32,LPCWSTR,LPCWSTR,UINT32,WORD); +#define MessageBoxEx WINELIB_NAME_AW(MessageBoxEx) +BOOL32 WINAPI MoveFile32A(LPCSTR,LPCSTR); +BOOL32 WINAPI MoveFile32W(LPCWSTR,LPCWSTR); +#define MoveFile WINELIB_NAME_AW(MoveFile) +HANDLE32 WINAPI OpenEvent32A(DWORD,BOOL32,LPCSTR); +HANDLE32 WINAPI OpenEvent32W(DWORD,BOOL32,LPCWSTR); +#define OpenEvent WINELIB_NAME_AW(OpenEvent) +HANDLE32 WINAPI OpenFileMapping32A(DWORD,BOOL32,LPCSTR); +HANDLE32 WINAPI OpenFileMapping32W(DWORD,BOOL32,LPCWSTR); +#define OpenFileMapping WINELIB_NAME_AW(OpenFileMapping) +HANDLE32 WINAPI OpenMutex32A(DWORD,BOOL32,LPCSTR); +HANDLE32 WINAPI OpenMutex32W(DWORD,BOOL32,LPCWSTR); +#define OpenMutex WINELIB_NAME_AW(OpenMutex) +HANDLE32 WINAPI OpenSemaphore32A(DWORD,BOOL32,LPCSTR); +HANDLE32 WINAPI OpenSemaphore32W(DWORD,BOOL32,LPCWSTR); +#define OpenSemaphore WINELIB_NAME_AW(OpenSemaphore) +DWORD WINAPI QueryDosDevice32A(LPCSTR,LPSTR,DWORD); +DWORD WINAPI QueryDosDevice32W(LPCWSTR,LPWSTR,DWORD); +#define QueryDosDevice WINELIB_NAME_AW(QueryDosDevice) +BOOL32 WINAPI QueryPerformanceCounter(LPLARGE_INTEGER); +BOOL32 WINAPI ReadConsole32A(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID); +BOOL32 WINAPI ReadConsole32W(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID); +#define ReadConsole WINELIB_NAME_AW(ReadConsole) +BOOL32 WINAPI ReadFile(HFILE32,LPVOID,DWORD,LPDWORD,LPOVERLAPPED); +DWORD WINAPI RegCreateKeyEx32A(HKEY,LPCSTR,DWORD,LPSTR,DWORD,REGSAM, + LPSECURITY_ATTRIBUTES,LPHKEY,LPDWORD); +DWORD WINAPI RegCreateKeyEx32W(HKEY,LPCWSTR,DWORD,LPWSTR,DWORD,REGSAM, + LPSECURITY_ATTRIBUTES,LPHKEY,LPDWORD); +#define RegCreateKeyEx WINELIB_NAME_AW(RegCreateKeyEx) +DWORD WINAPI RegEnumKeyEx32A(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPSTR, + LPDWORD,LPFILETIME); +DWORD WINAPI RegEnumKeyEx32W(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPWSTR, + LPDWORD,LPFILETIME); +#define RegEnumKeyEx WINELIB_NAME_AW(RegEnumKeyEx) +DWORD WINAPI RegOpenKeyEx32W(HKEY,LPCWSTR,DWORD,REGSAM,LPHKEY); +DWORD WINAPI RegOpenKeyEx32A(HKEY,LPCSTR,DWORD,REGSAM,LPHKEY); +#define RegOpenKeyEx WINELIB_NAME_AW(RegOpenKeyEx) +DWORD WINAPI RegQueryInfoKey32W(HKEY,LPWSTR,LPDWORD,LPDWORD,LPDWORD, + LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD, + LPDWORD,LPFILETIME); +DWORD WINAPI RegQueryInfoKey32A(HKEY,LPSTR,LPDWORD,LPDWORD,LPDWORD, + LPDWORD,LPDWORD,LPDWORD,LPDWORD,LPDWORD, + LPDWORD,LPFILETIME); +#define RegQueryInfoKey WINELIB_NAME_AW(RegQueryInfoKey) +BOOL32 WINAPI ReleaseSemaphore(HANDLE32,LONG,LPLONG); +VOID WINAPI RtlFillMemory(LPVOID,UINT32,UINT32); +VOID WINAPI RtlMoveMemory(LPVOID,LPCVOID,UINT32); +VOID WINAPI RtlZeroMemory(LPVOID,UINT32); +DWORD WINAPI SearchPath32A(LPCSTR,LPCSTR,LPCSTR,DWORD,LPSTR,LPSTR*); +DWORD WINAPI SearchPath32W(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPWSTR,LPWSTR*); +#define SearchPath WINELIB_NAME(SearchPath) +BOOL32 WINAPI SetBrushOrgEx(HDC32,INT32,INT32,LPPOINT32); +BOOL32 WINAPI SetCommMask(INT32,DWORD); +BOOL32 WINAPI SetCommTimeouts(INT32,LPCOMMTIMEOUTS); +BOOL32 WINAPI SetConsoleTitle32A(LPCSTR); +BOOL32 WINAPI SetConsoleTitle32W(LPCWSTR); +#define SetConsoleTitle WINELIB_NAME_AW(SetConsoleTitle) +BOOL32 WINAPI SetEndOfFile(HFILE32); +BOOL32 WINAPI SetEnvironmentVariable32A(LPCSTR,LPCSTR); +BOOL32 WINAPI SetEnvironmentVariable32W(LPCWSTR,LPCWSTR); +#define SetEnvironmentVariable WINELIB_NAME_AW(SetEnvironmentVariable) +VOID WINAPI SetFileApisToANSI(void); +VOID WINAPI SetFileApisToOEM(void); +DWORD WINAPI SetFilePointer(HFILE32,LONG,LPLONG,DWORD); +BOOL32 WINAPI SetFileTime(HFILE32,const FILETIME*,const FILETIME*, + const FILETIME*); +VOID WINAPI SetLastErrorEx(DWORD,DWORD); +BOOL32 WINAPI SetMenuItemInfo32A(HMENU32,UINT32,BOOL32,const MENUITEMINFO32A*); +BOOL32 WINAPI SetMenuItemInfo32W(HMENU32,UINT32,BOOL32,const MENUITEMINFO32W*); +#define SetMenuItemInfo WINELIB_NAME_AW(SetMenuItemInfo) +BOOL32 WINAPI SetPriorityClass(HANDLE32,DWORD); +BOOL32 WINAPI SetStdHandle(DWORD,HANDLE32); +BOOL32 WINAPI SetSystemPowerState(BOOL32,BOOL32); +BOOL32 WINAPI SetSystemTime(const SYSTEMTIME*); +BOOL32 WINAPI SetThreadPriority(HANDLE32,INT32); +BOOL32 WINAPI SetTimeZoneInformation(const LPTIME_ZONE_INFORMATION); +VOID WINAPI Sleep(DWORD); +BOOL32 WINAPI SystemTimeToFileTime(const SYSTEMTIME*,LPFILETIME); +BOOL32 WINAPI TrackPopupMenuEx(HMENU32,UINT32,INT32,INT32,HWND32, + LPTPMPARAMS); +DWORD WINAPI TlsAlloc(void); +BOOL32 WINAPI TlsFree(DWORD); +LPVOID WINAPI TlsGetValue(DWORD); +BOOL32 WINAPI TlsSetValue(DWORD,LPVOID); +VOID WINAPI UnMapLS(SEGPTR); +BOOL32 WINAPI UnlockFile(HFILE32,DWORD,DWORD,DWORD,DWORD); +BOOL32 WINAPI UnmapViewOfFile(LPVOID); +LPVOID WINAPI VirtualAlloc(LPVOID,DWORD,DWORD,DWORD); +BOOL32 WINAPI VirtualFree(LPVOID,DWORD,DWORD); +BOOL32 WINAPI VirtualLock(LPVOID,DWORD); +BOOL32 WINAPI VirtualProtect(LPVOID,DWORD,DWORD,LPDWORD); +BOOL32 WINAPI VirtualProtectEx(HANDLE32,LPVOID,DWORD,DWORD,LPDWORD); +BOOL32 WINAPI VirtualQuery(LPCVOID,LPMEMORY_BASIC_INFORMATION,DWORD); +BOOL32 WINAPI VirtualQueryEx(HANDLE32,LPCVOID,LPMEMORY_BASIC_INFORMATION,DWORD); +BOOL32 WINAPI VirtualUnlock(LPVOID,DWORD); +BOOL32 WINAPI WriteConsole32A(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID); +BOOL32 WINAPI WriteConsole32W(HANDLE32,LPVOID,DWORD,LPDWORD,LPVOID); +#define WriteConsole WINELIB_NAME_AW(WriteConsole) +BOOL32 WINAPI WriteFile(HFILE32,LPVOID,DWORD,LPDWORD,LPOVERLAPPED); /* Declarations for functions that are the same in Win16 and Win32 */ -VOID CloseSound(VOID); -DWORD GetDialogBaseUnits(void); -VOID GetKeyboardState(LPBYTE); -DWORD GetLastError(void); -DWORD GetMenuCheckMarkDimensions(void); -LONG GetMessageExtraInfo(void); -DWORD GetMessagePos(void); -LONG GetMessageTime(void); -DWORD GetTickCount(void); -ATOM GlobalDeleteAtom(ATOM); -VOID LZDone(void); -DWORD OemKeyScan(WORD); -DWORD RegCloseKey(HKEY); -DWORD RegFlushKey(HKEY); -VOID ReleaseCapture(void); -VOID SetKeyboardState(LPBYTE); -VOID SetLastError(DWORD); -VOID WaitMessage(VOID); +VOID WINAPI CloseSound(VOID); +VOID WINAPI EndMenu(void); +DWORD WINAPI GetDialogBaseUnits(void); +VOID WINAPI GetKeyboardState(LPBYTE); +DWORD WINAPI GetLastError(void); +DWORD WINAPI GetMenuCheckMarkDimensions(void); +LONG WINAPI GetMessageExtraInfo(void); +DWORD WINAPI GetMessagePos(void); +LONG WINAPI GetMessageTime(void); +DWORD WINAPI GetTickCount(void); +ATOM WINAPI GlobalDeleteAtom(ATOM); +VOID WINAPI LZDone(void); +DWORD WINAPI OemKeyScan(WORD); +DWORD WINAPI RegCloseKey(HKEY); +DWORD WINAPI RegFlushKey(HKEY); +VOID WINAPI ReleaseCapture(void); +VOID WINAPI SetKeyboardState(LPBYTE); +VOID WINAPI SetLastError(DWORD); +VOID WINAPI WaitMessage(VOID); /* Declarations for functions that change between Win16 and Win32 */ -INT16 AccessResource16(HINSTANCE16,HRSRC16); -INT32 AccessResource32(HINSTANCE32,HRSRC32); -#define AccessResource WINELIB_NAME(AccessResource) -ATOM AddAtom16(SEGPTR); -ATOM AddAtom32A(LPCSTR); -ATOM AddAtom32W(LPCWSTR); -#define AddAtom WINELIB_NAME_AW(AddAtom) -INT16 AddFontResource16(LPCSTR); -INT32 AddFontResource32A(LPCSTR); -INT32 AddFontResource32W(LPCWSTR); -#define AddFontResource WINELIB_NAME_AW(AddFontResource) -BOOL16 AdjustWindowRect16(LPRECT16,DWORD,BOOL16); -BOOL32 AdjustWindowRect32(LPRECT32,DWORD,BOOL32); -#define AdjustWindowRect WINELIB_NAME(AdjustWindowRect) -BOOL16 AdjustWindowRectEx16(LPRECT16,DWORD,BOOL16,DWORD); -BOOL32 AdjustWindowRectEx32(LPRECT32,DWORD,BOOL32,DWORD); -#define AdjustWindowRectEx WINELIB_NAME(AdjustWindowRectEx) -HGLOBAL16 AllocResource16(HINSTANCE16,HRSRC16,DWORD); -HGLOBAL32 AllocResource32(HINSTANCE32,HRSRC32,DWORD); -#define AllocResource WINELIB_NAME(AllocResource) -BOOL16 AnimatePalette16(HPALETTE16,UINT16,UINT16,LPPALETTEENTRY); -BOOL32 AnimatePalette32(HPALETTE32,UINT32,UINT32,LPPALETTEENTRY); -#define AnimatePalette WINELIB_NAME(AnimatePalette) -SEGPTR AnsiLower16(SEGPTR); -#define AnsiLower32A CharLower32A -#define AnsiLower32W CharLower32W -#define AnsiLower WINELIB_NAME_AW(AnsiLower) -UINT16 AnsiLowerBuff16(LPSTR,UINT16); -#define AnsiLowerBuff32A CharLowerBuff32A -#define AnsiLowerBuff32W CharLowerBuff32W -#define AnsiLowerBuff WINELIB_NAME_AW(AnsiLowerBuff) -SEGPTR AnsiNext16(SEGPTR); -#define AnsiNext32A CharNext32A -#define AnsiNext32W CharNext32W -#define AnsiNext WINELIB_NAME_AW(AnsiNext) -SEGPTR AnsiPrev16(SEGPTR,SEGPTR); -#define AnsiPrev32A CharPrev32A -#define AnsiPrev32W CharPrev32W -#define AnsiPrev WINELIB_NAME_AW(AnsiPrev) -INT16 AnsiToOem16(LPCSTR,LPSTR); -#define AnsiToOem32A CharToOem32A -#define AnsiToOem32W CharToOem32W -#define AnsiToOem WINELIB_NAME_AW(AnsiToOem) -VOID AnsiToOemBuff16(LPCSTR,LPSTR,UINT16); -#define AnsiToOemBuff32A CharToOemBuff32A -#define AnsiToOemBuff32W CharToOemBuff32W -#define AnsiToOemBuff WINELIB_NAME_AW(AnsiToOemBuff) -SEGPTR AnsiUpper16(SEGPTR); -#define AnsiUpper32A CharUpper32A -#define AnsiUpper32W CharUpper32W -#define AnsiUpper WINELIB_NAME_AW(AnsiUpper) -UINT16 AnsiUpperBuff16(LPSTR,UINT16); -#define AnsiUpperBuff32A CharUpperBuff32A -#define AnsiUpperBuff32W CharUpperBuff32W -#define AnsiUpperBuff WINELIB_NAME_AW(AnsiUpperBuff) -BOOL16 AnyPopup16(void); -BOOL32 AnyPopup32(void); -#define AnyPopup WINELIB_NAME(AnyPopup) -BOOL16 AppendMenu16(HMENU16,UINT16,UINT16,SEGPTR); -BOOL32 AppendMenu32A(HMENU32,UINT32,UINT32,LPCSTR); -BOOL32 AppendMenu32W(HMENU32,UINT32,UINT32,LPCWSTR); -#define AppendMenu WINELIB_NAME_AW(AppendMenu) -BOOL16 Arc16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16); -BOOL32 Arc32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,INT32); -#define Arc WINELIB_NAME(Arc) -UINT16 ArrangeIconicWindows16(HWND16); -UINT32 ArrangeIconicWindows32(HWND32); -#define ArrangeIconicWindows WINELIB_NAME(ArrangeIconicWindows) -HDWP16 BeginDeferWindowPos16(INT16); -HDWP32 BeginDeferWindowPos32(INT32); -#define BeginDeferWindowPos WINELIB_NAME(BeginDeferWindowPos) -HDC16 BeginPaint16(HWND16,LPPAINTSTRUCT16); -HDC32 BeginPaint32(HWND32,LPPAINTSTRUCT32); -#define BeginPaint WINELIB_NAME(BeginPaint) -BOOL16 BitBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,INT16,DWORD); -BOOL32 BitBlt32(HDC32,INT32,INT32,INT32,INT32,HDC32,INT32,INT32,DWORD); -#define BitBlt WINELIB_NAME(BitBlt) -BOOL16 BringWindowToTop16(HWND16); -BOOL32 BringWindowToTop32(HWND32); -#define BringWindowToTop WINELIB_NAME(BringWindowToTop) -BOOL16 BuildCommDCB16(LPCSTR,LPDCB16); -BOOL32 BuildCommDCB32A(LPCSTR,LPDCB32); -BOOL32 BuildCommDCB32W(LPCWSTR,LPDCB32); -#define BuildCommDCB WINELIB_NAME_AW(BuildCommDCB) -BOOL32 BuildCommDCBAndTimeouts32A(LPCSTR,LPDCB32,LPCOMMTIMEOUTS); -BOOL32 BuildCommDCBAndTimeouts32W(LPCWSTR,LPDCB32,LPCOMMTIMEOUTS); -#define BuildCommDCBAndTimeouts WINELIB_NAME_AW(BuildCommDCBAndTimeouts) -BOOL16 CallMsgFilter16(SEGPTR,INT16); -BOOL32 CallMsgFilter32A(LPMSG32,INT32); -BOOL32 CallMsgFilter32W(LPMSG32,INT32); -#define CallMsgFilter WINELIB_NAME_AW(CallMsgFilter) -LRESULT CallNextHookEx16(HHOOK,INT16,WPARAM16,LPARAM); -LRESULT CallNextHookEx32(HHOOK,INT32,WPARAM32,LPARAM); -#define CallNextHookEx WINELIB_NAME(CallNextHookEx) -LRESULT CallWindowProc16(WNDPROC16,HWND16,UINT16,WPARAM16,LPARAM); -LRESULT CallWindowProc32A(WNDPROC32,HWND32,UINT32,WPARAM32,LPARAM); -LRESULT CallWindowProc32W(WNDPROC32,HWND32,UINT32,WPARAM32,LPARAM); -#define CallWindowProc WINELIB_NAME_AW(CallWindowProc) -BOOL16 ChangeClipboardChain16(HWND16,HWND16); -BOOL32 ChangeClipboardChain32(HWND32,HWND32); -#define ChangeClipboardChain WINELIB_NAME(ChangeClipboardChain) -BOOL16 ChangeMenu16(HMENU16,UINT16,SEGPTR,UINT16,UINT16); -BOOL32 ChangeMenu32A(HMENU32,UINT32,LPCSTR,UINT32,UINT32); -BOOL32 ChangeMenu32W(HMENU32,UINT32,LPCWSTR,UINT32,UINT32); -#define ChangeMenu WINELIB_NAME_AW(ChangeMenu) -LPSTR CharLower32A(LPSTR); -LPWSTR CharLower32W(LPWSTR); -#define CharLower WINELIB_NAME_AW(CharLower) -DWORD CharLowerBuff32A(LPSTR,DWORD); -DWORD CharLowerBuff32W(LPWSTR,DWORD); -#define CharLowerBuff WINELIB_NAME_AW(CharLowerBuff) -LPSTR CharNext32A(LPCSTR); -LPWSTR CharNext32W(LPCWSTR); -#define CharNext WINELIB_NAME_AW(CharNext) -LPSTR CharNextEx32A(WORD,LPCSTR,DWORD); -LPWSTR CharNextEx32W(WORD,LPCWSTR,DWORD); -#define CharNextEx WINELIB_NAME_AW(CharNextEx) -LPSTR CharPrev32A(LPCSTR,LPCSTR); -LPWSTR CharPrev32W(LPCWSTR,LPCWSTR); -#define CharPrev WINELIB_NAME_AW(CharPrev) -LPSTR CharPrevEx32A(WORD,LPCSTR,LPCSTR,DWORD); -LPWSTR CharPrevEx32W(WORD,LPCWSTR,LPCWSTR,DWORD); -#define CharPrevEx WINELIB_NAME_AW(CharPrevEx) -LPSTR CharUpper32A(LPSTR); -LPWSTR CharUpper32W(LPWSTR); -#define CharUpper WINELIB_NAME_AW(CharUpper) -DWORD CharUpperBuff32A(LPSTR,DWORD); -DWORD CharUpperBuff32W(LPWSTR,DWORD); -#define CharUpperBuff WINELIB_NAME_AW(CharUpperBuff) -BOOL32 CharToOem32A(LPCSTR,LPSTR); -BOOL32 CharToOem32W(LPCWSTR,LPSTR); -#define CharToOem WINELIB_NAME_AW(CharToOem) -BOOL32 CharToOemBuff32A(LPCSTR,LPSTR,DWORD); -BOOL32 CharToOemBuff32W(LPCWSTR,LPSTR,DWORD); -#define CharToOemBuff WINELIB_NAME_AW(CharToOemBuff) -BOOL16 CheckDlgButton16(HWND16,INT16,UINT16); -BOOL32 CheckDlgButton32(HWND32,INT32,UINT32); -#define CheckDlgButton WINELIB_NAME(CheckDlgButton) -BOOL16 CheckMenuItem16(HMENU16,UINT16,UINT16); -DWORD CheckMenuItem32(HMENU32,UINT32,UINT32); -#define CheckMenuItem WINELIB_NAME(CheckMenuItem) -BOOL16 CheckRadioButton16(HWND16,UINT16,UINT16,UINT16); -BOOL32 CheckRadioButton32(HWND32,UINT32,UINT32,UINT32); -#define CheckRadioButton WINELIB_NAME(CheckRadioButton) -HWND16 ChildWindowFromPoint16(HWND16,POINT16); -HWND32 ChildWindowFromPoint32(HWND32,POINT32); -#define ChildWindowFromPoint WINELIB_NAME(ChildWindowFromPoint) -BOOL16 Chord16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16); -BOOL32 Chord32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,INT32); -#define Chord WINELIB_NAME(Chord) -INT16 ClearCommBreak16(INT16); -BOOL32 ClearCommBreak32(INT32); -#define ClearCommBreak WINELIB_NAME(ClearCommBreak) -BOOL16 ClientToScreen16(HWND16,LPPOINT16); -BOOL32 ClientToScreen32(HWND32,LPPOINT32); -#define ClientToScreen WINELIB_NAME(ClientToScreen) -BOOL16 ClipCursor16(const RECT16*); -BOOL32 ClipCursor32(const RECT32*); -#define ClipCursor WINELIB_NAME(ClipCursor) -BOOL16 CloseClipboard16(void); -BOOL32 CloseClipboard32(void); -#define CloseClipboard WINELIB_NAME(CloseClipboard) -HMETAFILE16 CloseMetaFile16(HDC16); -HMETAFILE32 CloseMetaFile32(HDC32); -#define CloseMetaFile WINELIB_NAME(CloseMetaFile) -BOOL16 CloseWindow16(HWND16); -BOOL32 CloseWindow32(HWND32); -#define CloseWindow WINELIB_NAME(CloseWindow) -INT16 CombineRgn16(HRGN16,HRGN16,HRGN16,INT16); -INT32 CombineRgn32(HRGN32,HRGN32,HRGN32,INT32); -#define CombineRgn WINELIB_NAME(CombineRgn) -UINT16 CompareString16(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD); -UINT32 CompareString32A(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD); -UINT32 CompareString32W(DWORD,DWORD,LPCWSTR,DWORD,LPCWSTR,DWORD); -#define CompareString WINELIB_NAME_AW(CompareString) -HCURSOR16 CopyCursor16(HINSTANCE16,HCURSOR16); -#define CopyCursor32(cur) ((HCURSOR32)CopyIcon32((HICON32)(cur))) -#define CopyCursor WINELIB_NAME(CopyCursor) -HICON16 CopyIcon16(HINSTANCE16,HICON16); -HICON32 CopyIcon32(HICON32); -#define CopyIcon WINELIB_NAME(CopyIcon) -LONG CopyLZFile16(HFILE16,HFILE16); -LONG CopyLZFile32(HFILE32,HFILE32); -#define CopyLZFile WINELIB_NAME(CopyLZFile) -HMETAFILE16 CopyMetaFile16(HMETAFILE16,LPCSTR); -HMETAFILE32 CopyMetaFile32A(HMETAFILE32,LPCSTR); -HMETAFILE32 CopyMetaFile32W(HMETAFILE32,LPCWSTR); -#define CopyMetaFile WINELIB_NAME_AW(CopyMetaFile) -BOOL16 CopyRect16(RECT16*,const RECT16*); -BOOL32 CopyRect32(RECT32*,const RECT32*); -#define CopyRect WINELIB_NAME(CopyRect) -INT16 CountClipboardFormats16(void); -INT32 CountClipboardFormats32(void); -#define CountClipboardFormats WINELIB_NAME(CountClipboardFormats) -INT16 CountVoiceNotes16(INT16); -DWORD CountVoiceNotes32(DWORD); -#define CountVoiceNotes WINELIB_NAME(CountVoiceNotes) -HBITMAP16 CreateBitmap16(INT16,INT16,UINT16,UINT16,LPCVOID); -HBITMAP32 CreateBitmap32(INT32,INT32,UINT32,UINT32,LPCVOID); -#define CreateBitmap WINELIB_NAME(CreateBitmap) -HBITMAP16 CreateBitmapIndirect16(const BITMAP16*); -HBITMAP32 CreateBitmapIndirect32(const BITMAP32*); -#define CreateBitmapIndirect WINELIB_NAME(CreateBitmapIndirect) -HBRUSH16 CreateBrushIndirect16(const LOGBRUSH16*); -HBRUSH32 CreateBrushIndirect32(const LOGBRUSH32*); -#define CreateBrushIndirect WINELIB_NAME(CreateBrushIndirect) -VOID CreateCaret16(HWND16,HBITMAP16,INT16,INT16); -BOOL32 CreateCaret32(HWND32,HBITMAP32,INT32,INT32); -#define CreateCaret WINELIB_NAME(CreateCaret) -HBITMAP16 CreateCompatibleBitmap16(HDC16,INT16,INT16); -HBITMAP32 CreateCompatibleBitmap32(HDC32,INT32,INT32); -#define CreateCompatibleBitmap WINELIB_NAME(CreateCompatibleBitmap) -HDC16 CreateCompatibleDC16(HDC16); -HDC32 CreateCompatibleDC32(HDC32); -#define CreateCompatibleDC WINELIB_NAME(CreateCompatibleDC) -HCURSOR16 CreateCursor16(HINSTANCE16,INT16,INT16,INT16,INT16,LPCVOID,LPCVOID); -HCURSOR32 CreateCursor32(HINSTANCE32,INT32,INT32,INT32,INT32,LPCVOID,LPCVOID); -#define CreateCursor WINELIB_NAME(CreateCursor) -HDC16 CreateDC16(LPCSTR,LPCSTR,LPCSTR,const DEVMODE16*); -HDC32 CreateDC32A(LPCSTR,LPCSTR,LPCSTR,const DEVMODE32A*); -HDC32 CreateDC32W(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODE32W*); -#define CreateDC WINELIB_NAME_AW(CreateDC) -HWND16 CreateDialog16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16); -#define CreateDialog32A(inst,ptr,hwnd,dlg) \ +LRESULT WINAPI AboutDlgProc16(HWND16,UINT16,WPARAM16,LPARAM); +LRESULT WINAPI AboutDlgProc32(HWND32,UINT32,WPARAM32,LPARAM); +#define AboutDlgProc WINELIB_NAME(AboutDlgProc) +INT16 WINAPI AccessResource16(HINSTANCE16,HRSRC16); +INT32 WINAPI AccessResource32(HINSTANCE32,HRSRC32); +#define AccessResource WINELIB_NAME(AccessResource) +ATOM WINAPI AddAtom16(SEGPTR); +ATOM WINAPI AddAtom32A(LPCSTR); +ATOM WINAPI AddAtom32W(LPCWSTR); +#define AddAtom WINELIB_NAME_AW(AddAtom) +INT16 WINAPI AddFontResource16(LPCSTR); +INT32 WINAPI AddFontResource32A(LPCSTR); +INT32 WINAPI AddFontResource32W(LPCWSTR); +#define AddFontResource WINELIB_NAME_AW(AddFontResource) +BOOL16 WINAPI AdjustWindowRect16(LPRECT16,DWORD,BOOL16); +BOOL32 WINAPI AdjustWindowRect32(LPRECT32,DWORD,BOOL32); +#define AdjustWindowRect WINELIB_NAME(AdjustWindowRect) +BOOL16 WINAPI AdjustWindowRectEx16(LPRECT16,DWORD,BOOL16,DWORD); +BOOL32 WINAPI AdjustWindowRectEx32(LPRECT32,DWORD,BOOL32,DWORD); +#define AdjustWindowRectEx WINELIB_NAME(AdjustWindowRectEx) +HGLOBAL16 WINAPI AllocResource16(HINSTANCE16,HRSRC16,DWORD); +HGLOBAL32 WINAPI AllocResource32(HINSTANCE32,HRSRC32,DWORD); +#define AllocResource WINELIB_NAME(AllocResource) +void WINAPI AnimatePalette16(HPALETTE16,UINT16,UINT16,LPPALETTEENTRY); +BOOL32 WINAPI AnimatePalette32(HPALETTE32,UINT32,UINT32,LPPALETTEENTRY); +#define AnimatePalette WINELIB_NAME(AnimatePalette) +SEGPTR WINAPI AnsiLower16(SEGPTR); +#define AnsiLower32A CharLower32A +#define AnsiLower32W CharLower32W +#define AnsiLower WINELIB_NAME_AW(AnsiLower) +UINT16 WINAPI AnsiLowerBuff16(LPSTR,UINT16); +#define AnsiLowerBuff32A CharLowerBuff32A +#define AnsiLowerBuff32W CharLowerBuff32W +#define AnsiLowerBuff WINELIB_NAME_AW(AnsiLowerBuff) +SEGPTR WINAPI AnsiNext16(SEGPTR); +#define AnsiNext32A CharNext32A +#define AnsiNext32W CharNext32W +#define AnsiNext WINELIB_NAME_AW(AnsiNext) +SEGPTR WINAPI AnsiPrev16(SEGPTR,SEGPTR); +#define AnsiPrev32A CharPrev32A +#define AnsiPrev32W CharPrev32W +#define AnsiPrev WINELIB_NAME_AW(AnsiPrev) +INT16 WINAPI AnsiToOem16(LPCSTR,LPSTR); +#define AnsiToOem32A CharToOem32A +#define AnsiToOem32W CharToOem32W +#define AnsiToOem WINELIB_NAME_AW(AnsiToOem) +VOID WINAPI AnsiToOemBuff16(LPCSTR,LPSTR,UINT16); +#define AnsiToOemBuff32A CharToOemBuff32A +#define AnsiToOemBuff32W CharToOemBuff32W +#define AnsiToOemBuff WINELIB_NAME_AW(AnsiToOemBuff) +SEGPTR WINAPI AnsiUpper16(SEGPTR); +#define AnsiUpper32A CharUpper32A +#define AnsiUpper32W CharUpper32W +#define AnsiUpper WINELIB_NAME_AW(AnsiUpper) +UINT16 WINAPI AnsiUpperBuff16(LPSTR,UINT16); +#define AnsiUpperBuff32A CharUpperBuff32A +#define AnsiUpperBuff32W CharUpperBuff32W +#define AnsiUpperBuff WINELIB_NAME_AW(AnsiUpperBuff) +BOOL16 WINAPI AnyPopup16(void); +BOOL32 WINAPI AnyPopup32(void); +#define AnyPopup WINELIB_NAME(AnyPopup) +BOOL16 WINAPI AppendMenu16(HMENU16,UINT16,UINT16,SEGPTR); +BOOL32 WINAPI AppendMenu32A(HMENU32,UINT32,UINT32,LPCSTR); +BOOL32 WINAPI AppendMenu32W(HMENU32,UINT32,UINT32,LPCWSTR); +#define AppendMenu WINELIB_NAME_AW(AppendMenu) +BOOL16 WINAPI Arc16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16); +BOOL32 WINAPI Arc32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,INT32); +#define Arc WINELIB_NAME(Arc) +UINT16 WINAPI ArrangeIconicWindows16(HWND16); +UINT32 WINAPI ArrangeIconicWindows32(HWND32); +#define ArrangeIconicWindows WINELIB_NAME(ArrangeIconicWindows) +HDWP16 WINAPI BeginDeferWindowPos16(INT16); +HDWP32 WINAPI BeginDeferWindowPos32(INT32); +#define BeginDeferWindowPos WINELIB_NAME(BeginDeferWindowPos) +HDC16 WINAPI BeginPaint16(HWND16,LPPAINTSTRUCT16); +HDC32 WINAPI BeginPaint32(HWND32,LPPAINTSTRUCT32); +#define BeginPaint WINELIB_NAME(BeginPaint) +BOOL16 WINAPI BitBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,INT16,DWORD); +BOOL32 WINAPI BitBlt32(HDC32,INT32,INT32,INT32,INT32,HDC32,INT32,INT32,DWORD); +#define BitBlt WINELIB_NAME(BitBlt) +BOOL16 WINAPI BringWindowToTop16(HWND16); +BOOL32 WINAPI BringWindowToTop32(HWND32); +#define BringWindowToTop WINELIB_NAME(BringWindowToTop) +BOOL16 WINAPI BuildCommDCB16(LPCSTR,LPDCB16); +BOOL32 WINAPI BuildCommDCB32A(LPCSTR,LPDCB32); +BOOL32 WINAPI BuildCommDCB32W(LPCWSTR,LPDCB32); +#define BuildCommDCB WINELIB_NAME_AW(BuildCommDCB) +BOOL32 WINAPI BuildCommDCBAndTimeouts32A(LPCSTR,LPDCB32,LPCOMMTIMEOUTS); +BOOL32 WINAPI BuildCommDCBAndTimeouts32W(LPCWSTR,LPDCB32,LPCOMMTIMEOUTS); +#define BuildCommDCBAndTimeouts WINELIB_NAME_AW(BuildCommDCBAndTimeouts) +BOOL16 WINAPI CallMsgFilter16(SEGPTR,INT16); +BOOL32 WINAPI CallMsgFilter32A(LPMSG32,INT32); +BOOL32 WINAPI CallMsgFilter32W(LPMSG32,INT32); +#define CallMsgFilter WINELIB_NAME_AW(CallMsgFilter) +LRESULT WINAPI CallNextHookEx16(HHOOK,INT16,WPARAM16,LPARAM); +LRESULT WINAPI CallNextHookEx32(HHOOK,INT32,WPARAM32,LPARAM); +#define CallNextHookEx WINELIB_NAME(CallNextHookEx) +LRESULT WINAPI CallWindowProc16(WNDPROC16,HWND16,UINT16,WPARAM16,LPARAM); +LRESULT WINAPI CallWindowProc32A(WNDPROC32,HWND32,UINT32,WPARAM32,LPARAM); +LRESULT WINAPI CallWindowProc32W(WNDPROC32,HWND32,UINT32,WPARAM32,LPARAM); +#define CallWindowProc WINELIB_NAME_AW(CallWindowProc) +BOOL16 WINAPI ChangeClipboardChain16(HWND16,HWND16); +BOOL32 WINAPI ChangeClipboardChain32(HWND32,HWND32); +#define ChangeClipboardChain WINELIB_NAME(ChangeClipboardChain) +BOOL16 WINAPI ChangeMenu16(HMENU16,UINT16,SEGPTR,UINT16,UINT16); +BOOL32 WINAPI ChangeMenu32A(HMENU32,UINT32,LPCSTR,UINT32,UINT32); +BOOL32 WINAPI ChangeMenu32W(HMENU32,UINT32,LPCWSTR,UINT32,UINT32); +#define ChangeMenu WINELIB_NAME_AW(ChangeMenu) +LPSTR WINAPI CharLower32A(LPSTR); +LPWSTR WINAPI CharLower32W(LPWSTR); +#define CharLower WINELIB_NAME_AW(CharLower) +DWORD WINAPI CharLowerBuff32A(LPSTR,DWORD); +DWORD WINAPI CharLowerBuff32W(LPWSTR,DWORD); +#define CharLowerBuff WINELIB_NAME_AW(CharLowerBuff) +LPSTR WINAPI CharNext32A(LPCSTR); +LPWSTR WINAPI CharNext32W(LPCWSTR); +#define CharNext WINELIB_NAME_AW(CharNext) +LPSTR WINAPI CharNextEx32A(WORD,LPCSTR,DWORD); +LPWSTR WINAPI CharNextEx32W(WORD,LPCWSTR,DWORD); +#define CharNextEx WINELIB_NAME_AW(CharNextEx) +LPSTR WINAPI CharPrev32A(LPCSTR,LPCSTR); +LPWSTR WINAPI CharPrev32W(LPCWSTR,LPCWSTR); +#define CharPrev WINELIB_NAME_AW(CharPrev) +LPSTR WINAPI CharPrevEx32A(WORD,LPCSTR,LPCSTR,DWORD); +LPWSTR WINAPI CharPrevEx32W(WORD,LPCWSTR,LPCWSTR,DWORD); +#define CharPrevEx WINELIB_NAME_AW(CharPrevEx) +LPSTR WINAPI CharUpper32A(LPSTR); +LPWSTR WINAPI CharUpper32W(LPWSTR); +#define CharUpper WINELIB_NAME_AW(CharUpper) +DWORD WINAPI CharUpperBuff32A(LPSTR,DWORD); +DWORD WINAPI CharUpperBuff32W(LPWSTR,DWORD); +#define CharUpperBuff WINELIB_NAME_AW(CharUpperBuff) +BOOL32 WINAPI CharToOem32A(LPCSTR,LPSTR); +BOOL32 WINAPI CharToOem32W(LPCWSTR,LPSTR); +#define CharToOem WINELIB_NAME_AW(CharToOem) +BOOL32 WINAPI CharToOemBuff32A(LPCSTR,LPSTR,DWORD); +BOOL32 WINAPI CharToOemBuff32W(LPCWSTR,LPSTR,DWORD); +#define CharToOemBuff WINELIB_NAME_AW(CharToOemBuff) +BOOL16 WINAPI CheckDlgButton16(HWND16,INT16,UINT16); +BOOL32 WINAPI CheckDlgButton32(HWND32,INT32,UINT32); +#define CheckDlgButton WINELIB_NAME(CheckDlgButton) +BOOL16 WINAPI CheckMenuItem16(HMENU16,UINT16,UINT16); +DWORD WINAPI CheckMenuItem32(HMENU32,UINT32,UINT32); +#define CheckMenuItem WINELIB_NAME(CheckMenuItem) +BOOL16 WINAPI CheckRadioButton16(HWND16,UINT16,UINT16,UINT16); +BOOL32 WINAPI CheckRadioButton32(HWND32,UINT32,UINT32,UINT32); +#define CheckRadioButton WINELIB_NAME(CheckRadioButton) +HWND16 WINAPI ChildWindowFromPoint16(HWND16,POINT16); +HWND32 WINAPI ChildWindowFromPoint32(HWND32,POINT32); +#define ChildWindowFromPoint WINELIB_NAME(ChildWindowFromPoint) +BOOL16 WINAPI Chord16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16); +BOOL32 WINAPI Chord32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,INT32); +#define Chord WINELIB_NAME(Chord) +INT16 WINAPI ClearCommBreak16(INT16); +BOOL32 WINAPI ClearCommBreak32(INT32); +#define ClearCommBreak WINELIB_NAME(ClearCommBreak) +BOOL16 WINAPI ClientToScreen16(HWND16,LPPOINT16); +BOOL32 WINAPI ClientToScreen32(HWND32,LPPOINT32); +#define ClientToScreen WINELIB_NAME(ClientToScreen) +BOOL16 WINAPI ClipCursor16(const RECT16*); +BOOL32 WINAPI ClipCursor32(const RECT32*); +#define ClipCursor WINELIB_NAME(ClipCursor) +BOOL16 WINAPI CloseClipboard16(void); +BOOL32 WINAPI CloseClipboard32(void); +#define CloseClipboard WINELIB_NAME(CloseClipboard) +HMETAFILE16 WINAPI CloseMetaFile16(HDC16); +HMETAFILE32 WINAPI CloseMetaFile32(HDC32); +#define CloseMetaFile WINELIB_NAME(CloseMetaFile) +BOOL16 WINAPI CloseWindow16(HWND16); +BOOL32 WINAPI CloseWindow32(HWND32); +#define CloseWindow WINELIB_NAME(CloseWindow) +INT16 WINAPI CombineRgn16(HRGN16,HRGN16,HRGN16,INT16); +INT32 WINAPI CombineRgn32(HRGN32,HRGN32,HRGN32,INT32); +#define CombineRgn WINELIB_NAME(CombineRgn) +UINT16 WINAPI CompareString16(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD); +UINT32 WINAPI CompareString32A(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD); +UINT32 WINAPI CompareString32W(DWORD,DWORD,LPCWSTR,DWORD,LPCWSTR,DWORD); +#define CompareString WINELIB_NAME_AW(CompareString) +HCURSOR16 WINAPI CopyCursor16(HINSTANCE16,HCURSOR16); +#define CopyCursor32(cur) ((HCURSOR32)CopyIcon32((HICON32)(cur))) +#define CopyCursor WINELIB_NAME(CopyCursor) +HICON16 WINAPI CopyIcon16(HINSTANCE16,HICON16); +HICON32 WINAPI CopyIcon32(HICON32); +#define CopyIcon WINELIB_NAME(CopyIcon) +LONG WINAPI CopyLZFile16(HFILE16,HFILE16); +LONG WINAPI CopyLZFile32(HFILE32,HFILE32); +#define CopyLZFile WINELIB_NAME(CopyLZFile) +HMETAFILE16 WINAPI CopyMetaFile16(HMETAFILE16,LPCSTR); +HMETAFILE32 WINAPI CopyMetaFile32A(HMETAFILE32,LPCSTR); +HMETAFILE32 WINAPI CopyMetaFile32W(HMETAFILE32,LPCWSTR); +#define CopyMetaFile WINELIB_NAME_AW(CopyMetaFile) +BOOL16 WINAPI CopyRect16(RECT16*,const RECT16*); +BOOL32 WINAPI CopyRect32(RECT32*,const RECT32*); +#define CopyRect WINELIB_NAME(CopyRect) +INT16 WINAPI CountClipboardFormats16(void); +INT32 WINAPI CountClipboardFormats32(void); +#define CountClipboardFormats WINELIB_NAME(CountClipboardFormats) +INT16 WINAPI CountVoiceNotes16(INT16); +DWORD WINAPI CountVoiceNotes32(DWORD); +#define CountVoiceNotes WINELIB_NAME(CountVoiceNotes) +HBITMAP16 WINAPI CreateBitmap16(INT16,INT16,UINT16,UINT16,LPCVOID); +HBITMAP32 WINAPI CreateBitmap32(INT32,INT32,UINT32,UINT32,LPCVOID); +#define CreateBitmap WINELIB_NAME(CreateBitmap) +HBITMAP16 WINAPI CreateBitmapIndirect16(const BITMAP16*); +HBITMAP32 WINAPI CreateBitmapIndirect32(const BITMAP32*); +#define CreateBitmapIndirect WINELIB_NAME(CreateBitmapIndirect) +HBRUSH16 WINAPI CreateBrushIndirect16(const LOGBRUSH16*); +HBRUSH32 WINAPI CreateBrushIndirect32(const LOGBRUSH32*); +#define CreateBrushIndirect WINELIB_NAME(CreateBrushIndirect) +VOID WINAPI CreateCaret16(HWND16,HBITMAP16,INT16,INT16); +BOOL32 WINAPI CreateCaret32(HWND32,HBITMAP32,INT32,INT32); +#define CreateCaret WINELIB_NAME(CreateCaret) +HBITMAP16 WINAPI CreateCompatibleBitmap16(HDC16,INT16,INT16); +HBITMAP32 WINAPI CreateCompatibleBitmap32(HDC32,INT32,INT32); +#define CreateCompatibleBitmap WINELIB_NAME(CreateCompatibleBitmap) +HDC16 WINAPI CreateCompatibleDC16(HDC16); +HDC32 WINAPI CreateCompatibleDC32(HDC32); +#define CreateCompatibleDC WINELIB_NAME(CreateCompatibleDC) +HCURSOR16 WINAPI CreateCursor16(HINSTANCE16,INT16,INT16,INT16,INT16,LPCVOID,LPCVOID); +HCURSOR32 WINAPI CreateCursor32(HINSTANCE32,INT32,INT32,INT32,INT32,LPCVOID,LPCVOID); +#define CreateCursor WINELIB_NAME(CreateCursor) +HDC16 WINAPI CreateDC16(LPCSTR,LPCSTR,LPCSTR,const DEVMODE16*); +HDC32 WINAPI CreateDC32A(LPCSTR,LPCSTR,LPCSTR,const DEVMODE32A*); +HDC32 WINAPI CreateDC32W(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODE32W*); +#define CreateDC WINELIB_NAME_AW(CreateDC) +HWND16 WINAPI CreateDialog16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16); +#define CreateDialog32A(inst,ptr,hwnd,dlg) \ CreateDialogParam32A(inst,ptr,hwnd,dlg,0) -#define CreateDialog32W(inst,ptr,hwnd,dlg) \ +#define CreateDialog32W(inst,ptr,hwnd,dlg) \ CreateDialogParam32W(inst,ptr,hwnd,dlg,0) -#define CreateDialog WINELIB_NAME_AW(CreateDialog) -HWND16 CreateDialogIndirect16(HINSTANCE16,LPCVOID,HWND16,DLGPROC16); -#define CreateDialogIndirect32A(inst,ptr,hwnd,dlg) \ +#define CreateDialog WINELIB_NAME_AW(CreateDialog) +HWND16 WINAPI CreateDialogIndirect16(HINSTANCE16,LPCVOID,HWND16,DLGPROC16); +#define CreateDialogIndirect32A(inst,ptr,hwnd,dlg) \ CreateDialogIndirectParam32A(inst,ptr,hwnd,dlg,0) -#define CreateDialogIndirect32W(inst,ptr,hwnd,dlg) \ +#define CreateDialogIndirect32W(inst,ptr,hwnd,dlg) \ CreateDialogIndirectParam32W(inst,ptr,hwnd,dlg,0) -#define CreateDialogIndirect WINELIB_NAME_AW(CreateDialogIndirect) -HWND16 CreateDialogIndirectParam16(HINSTANCE16,LPCVOID,HWND16,DLGPROC16,LPARAM); -HWND32 CreateDialogIndirectParam32A(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM); -HWND32 CreateDialogIndirectParam32W(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM); -#define CreateDialogIndirectParam WINELIB_NAME_AW(CreateDialogIndirectParam) -HWND16 CreateDialogParam16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16,LPARAM); -HWND32 CreateDialogParam32A(HINSTANCE32,LPCSTR,HWND32,DLGPROC32,LPARAM); -HWND32 CreateDialogParam32W(HINSTANCE32,LPCWSTR,HWND32,DLGPROC32,LPARAM); -#define CreateDialogParam WINELIB_NAME_AW(CreateDialogParam) -HBITMAP16 CreateDIBitmap16(HDC16,const BITMAPINFOHEADER*,DWORD,LPCVOID, - const BITMAPINFO*,UINT16); -HBITMAP32 CreateDIBitmap32(HDC32,const BITMAPINFOHEADER*,DWORD,LPCVOID, - const BITMAPINFO*,UINT32); -#define CreateDIBitmap WINELIB_NAME(CreateDIBitmap) -HBRUSH16 CreateDIBPatternBrush16(HGLOBAL16,UINT16); -HBRUSH32 CreateDIBPatternBrush32(HGLOBAL32,UINT32); -#define CreateDIBPatternBrush WINELIB_NAME(CreateDIBPatternBrush) -BOOL16 CreateDirectory16(LPCSTR,LPVOID); -BOOL32 CreateDirectory32A(LPCSTR,LPSECURITY_ATTRIBUTES); -BOOL32 CreateDirectory32W(LPCWSTR,LPSECURITY_ATTRIBUTES); -#define CreateDirectory WINELIB_NAME_AW(CreateDirectory) -BOOL32 CreateDirectoryEx32A(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES); -BOOL32 CreateDirectoryEx32W(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES); -#define CreateDirectoryEx WINELIB_NAME_AW(CreateDirectoryEx) -HBITMAP16 CreateDiscardableBitmap16(HDC16,INT16,INT16); -HBITMAP32 CreateDiscardableBitmap32(HDC32,INT32,INT32); -#define CreateDiscardableBitmap WINELIB_NAME(CreateDiscardableBitmap) -HRGN16 CreateEllipticRgn16(INT16,INT16,INT16,INT16); -HRGN32 CreateEllipticRgn32(INT32,INT32,INT32,INT32); -#define CreateEllipticRgn WINELIB_NAME(CreateEllipticRgn) -HRGN16 CreateEllipticRgnIndirect16(const RECT16 *); -HRGN32 CreateEllipticRgnIndirect32(const RECT32 *); -#define CreateEllipticRgnIndirect WINELIB_NAME(CreateEllipticRgnIndirect) -HFONT16 CreateFont16(INT16,INT16,INT16,INT16,INT16,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,BYTE,LPCSTR); -HFONT32 CreateFont32A(INT32,INT32,INT32,INT32,INT32,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR); -HFONT32 CreateFont32W(INT32,INT32,INT32,INT32,INT32,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR); -#define CreateFont WINELIB_NAME_AW(CreateFont) -HFONT16 CreateFontIndirect16(const LOGFONT16*); -HFONT32 CreateFontIndirect32A(const LOGFONT32A*); -HFONT32 CreateFontIndirect32W(const LOGFONT32W*); -#define CreateFontIndirect WINELIB_NAME_AW(CreateFontIndirect) -HBRUSH16 CreateHatchBrush16(INT16,COLORREF); -HBRUSH32 CreateHatchBrush32(INT32,COLORREF); -#define CreateHatchBrush WINELIB_NAME(CreateHatchBrush) -HDC16 CreateIC16(LPCSTR,LPCSTR,LPCSTR,const DEVMODE16*); -HDC32 CreateIC32A(LPCSTR,LPCSTR,LPCSTR,const DEVMODE32A*); -HDC32 CreateIC32W(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODE32W*); -#define CreateIC WINELIB_NAME_AW(CreateIC) -HICON16 CreateIcon16(HINSTANCE16,INT16,INT16,BYTE,BYTE,LPCVOID,LPCVOID); -HICON32 CreateIcon32(HINSTANCE32,INT32,INT32,BYTE,BYTE,LPCVOID,LPCVOID); -#define CreateIcon WINELIB_NAME(CreateIcon) -HMENU16 CreateMenu16(void); -HMENU32 CreateMenu32(void); -#define CreateMenu WINELIB_NAME(CreateMenu) -HDC16 CreateMetaFile16(LPCSTR); -HDC32 CreateMetaFile32A(LPCSTR); -HDC32 CreateMetaFile32W(LPCWSTR); -#define CreateMetaFile WINELIB_NAME_AW(CreateMetaFile) -HPALETTE16 CreatePalette16(const LOGPALETTE*); -HPALETTE32 CreatePalette32(const LOGPALETTE*); -#define CreatePalette WINELIB_NAME(CreatePalette) -HBRUSH16 CreatePatternBrush16(HBITMAP16); -HBRUSH32 CreatePatternBrush32(HBITMAP32); -#define CreatePatternBrush WINELIB_NAME(CreatePatternBrush) -HPEN16 CreatePen16(INT16,INT16,COLORREF); -HPEN32 CreatePen32(INT32,INT32,COLORREF); -#define CreatePen WINELIB_NAME(CreatePen) -HPEN16 CreatePenIndirect16(const LOGPEN16*); -HPEN32 CreatePenIndirect32(const LOGPEN32*); -#define CreatePenIndirect WINELIB_NAME(CreatePenIndirect) -HRGN16 CreatePolyPolygonRgn16(const POINT16*,const INT16*,INT16,INT16); -HRGN32 CreatePolyPolygonRgn32(const POINT32*,const INT32*,INT32,INT32); -#define CreatePolyPolygonRgn WINELIB_NAME(CreatePolyPolygonRgn) -HRGN16 CreatePolygonRgn16(const POINT16*,INT16,INT16); -HRGN32 CreatePolygonRgn32(const POINT32*,INT32,INT32); -#define CreatePolygonRgn WINELIB_NAME(CreatePolygonRgn) -HMENU16 CreatePopupMenu16(void); -HMENU32 CreatePopupMenu32(void); -#define CreatePopupMenu WINELIB_NAME(CreatePopupMenu) -HRGN16 CreateRectRgn16(INT16,INT16,INT16,INT16); -HRGN32 CreateRectRgn32(INT32,INT32,INT32,INT32); -#define CreateRectRgn WINELIB_NAME(CreateRectRgn) -HRGN16 CreateRectRgnIndirect16(const RECT16*); -HRGN32 CreateRectRgnIndirect32(const RECT32*); -#define CreateRectRgnIndirect WINELIB_NAME(CreateRectRgnIndirect) -HRGN16 CreateRoundRectRgn16(INT16,INT16,INT16,INT16,INT16,INT16); -HRGN32 CreateRoundRectRgn32(INT32,INT32,INT32,INT32,INT32,INT32); -#define CreateRoundRectRgn WINELIB_NAME(CreateRoundRectRgn) -BOOL16 CreateScalableFontResource16(UINT16,LPCSTR,LPCSTR,LPCSTR); -BOOL32 CreateScalableFontResource32A(DWORD,LPCSTR,LPCSTR,LPCSTR); -BOOL32 CreateScalableFontResource32W(DWORD,LPCWSTR,LPCWSTR,LPCWSTR); -#define CreateScalableFontResource WINELIB_NAME_AW(CreateScalableFontResource) -HBRUSH16 CreateSolidBrush16(COLORREF); -HBRUSH32 CreateSolidBrush32(COLORREF); -#define CreateSolidBrush WINELIB_NAME(CreateSolidBrush) -HWND16 CreateWindow16(LPCSTR,LPCSTR,DWORD,INT16,INT16,INT16,INT16,HWND16,HMENU16,HINSTANCE16,LPVOID); -#define CreateWindow32A(className,titleName,style,x,y,width,height,\ - parent,menu,instance,param) \ - CreateWindowEx32A(0,className,titleName,style,x,y,width,height,\ - parent,menu,instance,param) -#define CreateWindow32W(className,titleName,style,x,y,width,height,\ - parent,menu,instance,param) \ - CreateWindowEx32W(0,className,titleName,style,x,y,width,height,\ - parent,menu,instance,param) -#define CreateWindow WINELIB_NAME_AW(CreateWindow) -HWND16 CreateWindowEx16(DWORD,LPCSTR,LPCSTR,DWORD,INT16,INT16,INT16,INT16,HWND16,HMENU16,HINSTANCE16,LPVOID); -HWND32 CreateWindowEx32A(DWORD,LPCSTR,LPCSTR,DWORD,INT32,INT32,INT32,INT32,HWND32,HMENU32,HINSTANCE32,LPVOID); -HWND32 CreateWindowEx32W(DWORD,LPCWSTR,LPCWSTR,DWORD,INT32,INT32,INT32,INT32,HWND32,HMENU32,HINSTANCE32,LPVOID); -#define CreateWindowEx WINELIB_NAME_AW(CreateWindowEx) -LRESULT DefDlgProc16(HWND16,UINT16,WPARAM16,LPARAM); -LRESULT DefDlgProc32A(HWND32,UINT32,WPARAM32,LPARAM); -LRESULT DefDlgProc32W(HWND32,UINT32,WPARAM32,LPARAM); -#define DefDlgProc WINELIB_NAME_AW(DefDlgProc) -HDWP16 DeferWindowPos16(HDWP16,HWND16,HWND16,INT16,INT16,INT16,INT16,UINT16); -HDWP32 DeferWindowPos32(HDWP32,HWND32,HWND32,INT32,INT32,INT32,INT32,UINT32); -#define DeferWindowPos WINELIB_NAME(DeferWindowPos) -LRESULT DefFrameProc16(HWND16,HWND16,UINT16,WPARAM16,LPARAM); -LRESULT DefFrameProc32A(HWND32,HWND32,UINT32,WPARAM32,LPARAM); -LRESULT DefFrameProc32W(HWND32,HWND32,UINT32,WPARAM32,LPARAM); -#define DefFrameProc WINELIB_NAME_AW(DefFrameProc) -LRESULT DefHookProc16(INT16,WPARAM16,LPARAM,HHOOK*); -#define DefHookProc32(code,wparam,lparam,phhook) \ - CallNextHookEx32(*(phhook),code,wparam,lparam) -#define DefHookProc WINELIB_NAME(DefHookProc) -LRESULT DefMDIChildProc16(HWND16,UINT16,WPARAM16,LPARAM); -LRESULT DefMDIChildProc32A(HWND32,UINT32,WPARAM32,LPARAM); -LRESULT DefMDIChildProc32W(HWND32,UINT32,WPARAM32,LPARAM); -#define DefMDIChildProc WINELIB_NAME_AW(DefMDIChildProc) -LRESULT DefWindowProc16(HWND16,UINT16,WPARAM16,LPARAM); -LRESULT DefWindowProc32A(HWND32,UINT32,WPARAM32,LPARAM); -LRESULT DefWindowProc32W(HWND32,UINT32,WPARAM32,LPARAM); -#define DefWindowProc WINELIB_NAME_AW(DefWindowProc) -ATOM DeleteAtom16(ATOM); -ATOM DeleteAtom32(ATOM); -#define DeleteAtom WINELIB_NAME(DeleteAtom) -BOOL16 DeleteDC16(HDC16); -BOOL32 DeleteDC32(HDC32); -#define DeleteDC WINELIB_NAME(DeleteDC) -BOOL16 DeleteFile16(LPCSTR); -BOOL32 DeleteFile32A(LPCSTR); -BOOL32 DeleteFile32W(LPCWSTR); -#define DeleteFile WINELIB_NAME_AW(DeleteFile) -BOOL16 DeleteMenu16(HMENU16,UINT16,UINT16); -BOOL32 DeleteMenu32(HMENU32,UINT32,UINT32); -#define DeleteMenu WINELIB_NAME(DeleteMenu) -BOOL16 DeleteMetaFile16(HMETAFILE16); -BOOL32 DeleteMetaFile32(HMETAFILE32); -#define DeleteMetaFile WINELIB_NAME(DeleteMetaFile) -BOOL16 DeleteObject16(HGDIOBJ16); -BOOL32 DeleteObject32(HGDIOBJ32); -#define DeleteObject WINELIB_NAME(DeleteObject) -VOID DestroyCaret16(void); -BOOL32 DestroyCaret32(void); -#define DestroyCaret WINELIB_NAME(DestroyCaret) -BOOL16 DestroyCursor16(HCURSOR16); -BOOL32 DestroyCursor32(HCURSOR32); -#define DestroyCursor WINELIB_NAME(DestroyCursor) -BOOL16 DestroyIcon16(HICON16); -BOOL32 DestroyIcon32(HICON32); -#define DestroyIcon WINELIB_NAME(DestroyIcon) -BOOL16 DestroyMenu16(HMENU16); -BOOL32 DestroyMenu32(HMENU32); -#define DestroyMenu WINELIB_NAME(DestroyMenu) -BOOL16 DestroyWindow16(HWND16); -BOOL32 DestroyWindow32(HWND32); -#define DestroyWindow WINELIB_NAME(DestroyWindow) -INT16 DialogBox16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16); -#define DialogBox32A(inst,template,owner,func) \ - DialogBoxParam32A(inst,template,owner,func,0) -#define DialogBox32W(inst,template,owner,func) \ - DialogBoxParam32W(inst,template,owner,func,0) -#define DialogBox WINELIB_NAME_AW(DialogBox) -INT16 DialogBoxIndirect16(HINSTANCE16,HANDLE16,HWND16,DLGPROC16); -#define DialogBoxIndirect32A(inst,template,owner,func) \ - DialogBoxIndirectParam32A(inst,template,owner,func,0) -#define DialogBoxIndirect32W(inst,template,owner,func) \ - DialogBoxIndirectParam32W(inst,template,owner,func,0) -#define DialogBoxIndirect WINELIB_NAME_AW(DialogBoxIndirect) -INT16 DialogBoxIndirectParam16(HINSTANCE16,HANDLE16,HWND16,DLGPROC16,LPARAM); -INT32 DialogBoxIndirectParam32A(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM); -INT32 DialogBoxIndirectParam32W(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM); -#define DialogBoxIndirectParam WINELIB_NAME_AW(DialogBoxIndirectParam) -INT16 DialogBoxParam16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16,LPARAM); -INT32 DialogBoxParam32A(HINSTANCE32,LPCSTR,HWND32,DLGPROC32,LPARAM); -INT32 DialogBoxParam32W(HINSTANCE32,LPCWSTR,HWND32,DLGPROC32,LPARAM); -#define DialogBoxParam WINELIB_NAME_AW(DialogBoxParam) -LONG DispatchMessage16(const MSG16*); -LONG DispatchMessage32A(const MSG32*); -LONG DispatchMessage32W(const MSG32*); -#define DispatchMessage WINELIB_NAME_AW(DispatchMessage) -INT16 DlgDirList16(HWND16,LPSTR,INT16,INT16,UINT16); -INT32 DlgDirList32A(HWND32,LPSTR,INT32,INT32,UINT32); -INT32 DlgDirList32W(HWND32,LPWSTR,INT32,INT32,UINT32); -#define DlgDirList WINELIB_NAME_AW(DlgDirList) -INT16 DlgDirListComboBox16(HWND16,LPSTR,INT16,INT16,UINT16); -INT32 DlgDirListComboBox32A(HWND32,LPSTR,INT32,INT32,UINT32); -INT32 DlgDirListComboBox32W(HWND32,LPWSTR,INT32,INT32,UINT32); -#define DlgDirListComboBox WINELIB_NAME_AW(DlgDirListComboBox) -BOOL16 DlgDirSelectComboBoxEx16(HWND16,LPSTR,INT16,INT16); -BOOL32 DlgDirSelectComboBoxEx32A(HWND32,LPSTR,INT32,INT32); -BOOL32 DlgDirSelectComboBoxEx32W(HWND32,LPWSTR,INT32,INT32); -#define DlgDirSelectComboBoxEx WINELIB_NAME_AW(DlgDirSelectComboBoxEx) -BOOL16 DlgDirSelectEx16(HWND16,LPSTR,INT16,INT16); -BOOL32 DlgDirSelectEx32A(HWND32,LPSTR,INT32,INT32); -BOOL32 DlgDirSelectEx32W(HWND32,LPWSTR,INT32,INT32); -#define DlgDirSelectEx WINELIB_NAME_AW(DlgDirSelectEx) -BOOL16 DPtoLP16(HDC16,LPPOINT16,INT16); -BOOL32 DPtoLP32(HDC32,LPPOINT32,INT32); -#define DPtoLP WINELIB_NAME(DPtoLP) -BOOL16 DragDetect16(HWND16,POINT16); -BOOL32 DragDetect32(HWND32,POINT32); -#define DragDetect WINELIB_NAME(DragDetect) -DWORD DragObject16(HWND16,HWND16,UINT16,HANDLE16,WORD,HCURSOR16); -DWORD DragObject32(HWND32,HWND32,UINT32,DWORD,HCURSOR32); -#define DragObject WINELIB_NAME(DragObject) -BOOL16 DrawEdge16(HDC16,LPRECT16,UINT16,UINT16); -BOOL32 DrawEdge32(HDC32,LPRECT32,UINT32,UINT32); -#define DrawEdge WINELIB_NAME(DrawEdge) -void DrawFocusRect16(HDC16,const RECT16*); -void DrawFocusRect32(HDC32,const RECT32*); -#define DrawFocusRect WINELIB_NAME(DrawFocusRect) -BOOL16 DrawFrameControl16(HDC16,LPRECT16,UINT16,UINT16); -BOOL32 DrawFrameControl32(HDC32,LPRECT32,UINT32,UINT32); -#define DrawFrameControl WINELIB_NAME(DrawFrameControl) -BOOL16 DrawIcon16(HDC16,INT16,INT16,HICON16); -BOOL32 DrawIcon32(HDC32,INT32,INT32,HICON32); -#define DrawIcon WINELIB_NAME(DrawIcon) -VOID DrawMenuBar16(HWND16); -BOOL32 DrawMenuBar32(HWND32); -#define DrawMenuBar WINELIB_NAME(DrawMenuBar) -INT16 DrawText16(HDC16,LPCSTR,INT16,LPRECT16,UINT16); -INT32 DrawText32A(HDC32,LPCSTR,INT32,LPRECT32,UINT32); -INT32 DrawText32W(HDC32,LPCWSTR,INT32,LPRECT32,UINT32); -#define DrawText WINELIB_NAME_AW(DrawText) -BOOL16 Ellipse16(HDC16,INT16,INT16,INT16,INT16); -BOOL32 Ellipse32(HDC32,INT32,INT32,INT32,INT32); -#define Ellipse WINELIB_NAME(Ellipse) -BOOL16 EmptyClipboard16(void); -BOOL32 EmptyClipboard32(void); -#define EmptyClipboard WINELIB_NAME(EmptyClipboard) -BOOL16 EnableMenuItem16(HMENU16,UINT16,UINT16); -BOOL32 EnableMenuItem32(HMENU32,UINT32,UINT32); -#define EnableMenuItem WINELIB_NAME(EnableMenuItem) -BOOL16 EnableScrollBar16(HWND16,INT16,UINT16); -BOOL32 EnableScrollBar32(HWND32,INT32,UINT32); -#define EnableScrollBar WINELIB_NAME(EnableScrollBar) -BOOL16 EnableWindow16(HWND16,BOOL16); -BOOL32 EnableWindow32(HWND32,BOOL32); -#define EnableWindow WINELIB_NAME(EnableWindow) -BOOL16 EndDeferWindowPos16(HDWP16); -BOOL32 EndDeferWindowPos32(HDWP32); -#define EndDeferWindowPos WINELIB_NAME(EndDeferWindowPos) -BOOL16 EndDialog16(HWND16,INT16); -BOOL32 EndDialog32(HWND32,INT32); -#define EndDialog WINELIB_NAME(EndDialog) -INT16 EndDoc16(HDC16); -INT32 EndDoc32(HDC32); -#define EndDoc WINELIB_NAME(EndDoc) -BOOL16 EndPaint16(HWND16,const PAINTSTRUCT16*); -BOOL32 EndPaint32(HWND32,const PAINTSTRUCT32*); -#define EndPaint WINELIB_NAME(EndPaint) -BOOL16 EnumChildWindows16(HWND16,WNDENUMPROC16,LPARAM); -BOOL32 EnumChildWindows32(HWND32,WNDENUMPROC32,LPARAM); -#define EnumChildWindows WINELIB_NAME(EnumChildWindows) -UINT16 EnumClipboardFormats16(UINT16); -UINT32 EnumClipboardFormats32(UINT32); -#define EnumClipboardFormats WINELIB_NAME(EnumClipboardFormats) -INT16 EnumFontFamilies16(HDC16,LPCSTR,FONTENUMPROC16,LPARAM); -INT32 EnumFontFamilies32A(HDC32,LPCSTR,FONTENUMPROC32A,LPARAM); -INT32 EnumFontFamilies32W(HDC32,LPCWSTR,FONTENUMPROC32W,LPARAM); -#define EnumFontFamilies WINELIB_NAME_AW(EnumFontFamilies) -INT16 EnumFontFamiliesEx16(HDC16,LPLOGFONT16,FONTENUMPROCEX16,LPARAM,DWORD); -INT32 EnumFontFamiliesEx32A(HDC32,LPLOGFONT32A,FONTENUMPROCEX32A,LPARAM,DWORD); -INT32 EnumFontFamiliesEx32W(HDC32,LPLOGFONT32W,FONTENUMPROCEX32W,LPARAM,DWORD); -#define EnumFontFamiliesEx WINELIB_NAME_AW(EnumFontFamiliesEx) -INT16 EnumFonts16(HDC16,LPCSTR,FONTENUMPROC16,LPARAM); -INT32 EnumFonts32A(HDC32,LPCSTR,FONTENUMPROC32A,LPARAM); -INT32 EnumFonts32W(HDC32,LPCWSTR,FONTENUMPROC32W,LPARAM); -#define EnumFonts WINELIB_NAME_AW(EnumFonts) -BOOL16 EnumMetaFile16(HDC16,HMETAFILE16,MFENUMPROC16,LPARAM); -BOOL32 EnumMetaFile32(HDC32,HMETAFILE32,MFENUMPROC32,LPARAM); -#define EnumMetaFile WINELIB_NAME(EnumMetaFile) -INT16 EnumObjects16(HDC16,INT16,GOBJENUMPROC16,LPARAM); -INT32 EnumObjects32(HDC32,INT32,GOBJENUMPROC32,LPARAM); -#define EnumObjects WINELIB_NAME(EnumObjects) -INT16 EnumProps16(HWND16,PROPENUMPROC16); -INT32 EnumProps32A(HWND32,PROPENUMPROC32A); -INT32 EnumProps32W(HWND32,PROPENUMPROC32W); -#define EnumProps WINELIB_NAME_AW(EnumProps) -BOOL16 EnumTaskWindows16(HTASK16,WNDENUMPROC16,LPARAM); -#define EnumTaskWindows32(handle,proc,lparam) \ - EnumThreadWindows(handle,proc,lparam) -#define EnumTaskWindows WINELIB_NAME(EnumTaskWindows) -BOOL16 EnumWindows16(WNDENUMPROC16,LPARAM); -BOOL32 EnumWindows32(WNDENUMPROC32,LPARAM); -#define EnumWindows WINELIB_NAME(EnumWindows) -BOOL16 EqualRect16(const RECT16*,const RECT16*); -BOOL32 EqualRect32(const RECT32*,const RECT32*); -#define EqualRect WINELIB_NAME(EqualRect) -BOOL16 EqualRgn16(HRGN16,HRGN16); -BOOL32 EqualRgn32(HRGN32,HRGN32); -#define EqualRgn WINELIB_NAME(EqualRgn) -INT16 Escape16(HDC16,INT16,INT16,SEGPTR,SEGPTR); -INT32 Escape32(HDC32,INT32,INT32,LPVOID,LPVOID); -#define Escape WINELIB_NAME(Escape) -LONG EscapeCommFunction16(UINT16,UINT16); -BOOL32 EscapeCommFunction32(INT32,UINT32); -#define EscapeCommFunction WINELIB_NAME(EscapeCommFunction) -INT16 ExcludeClipRect16(HDC16,INT16,INT16,INT16,INT16); -INT32 ExcludeClipRect32(HDC32,INT32,INT32,INT32,INT32); -#define ExcludeClipRect WINELIB_NAME(ExcludeClipRect) -INT16 ExcludeUpdateRgn16(HDC16,HWND16); -INT32 ExcludeUpdateRgn32(HDC32,HWND32); -#define ExcludeUpdateRgn WINELIB_NAME(ExcludeUpdateRgn) -BOOL16 ExitWindows16(DWORD,UINT16); -#define ExitWindows32(a,b) ExitWindowsEx(EWX_LOGOFF,0xffffffff) -#define ExitWindows WINELIB_NAME(ExitWindows) -BOOL16 ExtFloodFill16(HDC16,INT16,INT16,COLORREF,UINT16); -BOOL32 ExtFloodFill32(HDC32,INT32,INT32,COLORREF,UINT32); -#define ExtFloodFill WINELIB_NAME(ExtFloodFill) -HICON16 ExtractIcon16(HINSTANCE16,LPCSTR,UINT16); -HICON32 ExtractIcon32A(HINSTANCE32,LPCSTR,UINT32); -HICON32 ExtractIcon32W(HINSTANCE32,LPCWSTR,UINT32); -#define ExtractIcon WINELIB_NAME_AW(ExtractIcon) -BOOL16 ExtTextOut16(HDC16,INT16,INT16,UINT16,const RECT16*,LPCSTR,UINT16,const INT16*); -BOOL32 ExtTextOut32A(HDC32,INT32,INT32,UINT32,const RECT32*,LPCSTR,UINT32,const INT32*); -BOOL32 ExtTextOut32W(HDC32,INT32,INT32,UINT32,const RECT32*,LPCWSTR,UINT32,const INT32*); -#define ExtTextOut WINELIB_NAME_AW(ExtTextOut) -void FatalAppExit16(UINT16,LPCSTR); -void FatalAppExit32A(UINT32,LPCSTR); -void FatalAppExit32W(UINT32,LPCWSTR); -#define FatalAppExit WINELIB_NAME_AW(FatalAppExit) -INT16 FillRect16(HDC16,const RECT16*,HBRUSH16); -INT32 FillRect32(HDC32,const RECT32*,HBRUSH32); -#define FillRect WINELIB_NAME(FillRect) -BOOL16 FillRgn16(HDC16,HRGN16,HBRUSH16); -BOOL32 FillRgn32(HDC32,HRGN32,HBRUSH32); -#define FillRgn WINELIB_NAME(FillRgn) -ATOM FindAtom16(SEGPTR); -ATOM FindAtom32A(LPCSTR); -ATOM FindAtom32W(LPCWSTR); -#define FindAtom WINELIB_NAME_AW(FindAtom) -BOOL16 FindClose16(HANDLE16); -BOOL32 FindClose32(HANDLE32); -#define FindClose WINELIB_NAME(FindClose) -HINSTANCE16 FindExecutable16(LPCSTR,LPCSTR,LPSTR); -HINSTANCE32 FindExecutable32A(LPCSTR,LPCSTR,LPSTR); -HINSTANCE32 FindExecutable32W(LPCWSTR,LPCWSTR,LPWSTR); -#define FindExecutable WINELIB_NAME_AW(FindExecutable) -HANDLE16 FindFirstFile16(LPCSTR,LPWIN32_FIND_DATA32A); -HANDLE32 FindFirstFile32A(LPCSTR,LPWIN32_FIND_DATA32A); -HANDLE32 FindFirstFile32W(LPCWSTR,LPWIN32_FIND_DATA32W); -#define FindFirst WINELIB_NAME_AW(FindFirst) -BOOL16 FindNextFile16(HANDLE16,LPWIN32_FIND_DATA32A); -BOOL32 FindNextFile32A(HANDLE32,LPWIN32_FIND_DATA32A); -BOOL32 FindNextFile32W(HANDLE32,LPWIN32_FIND_DATA32W); -#define FindNext WINELIB_NAME_AW(FindNext) -HRSRC16 FindResource16(HINSTANCE16,SEGPTR,SEGPTR); -HRSRC32 FindResource32A(HINSTANCE32,LPCSTR,LPCSTR); -HRSRC32 FindResource32W(HINSTANCE32,LPCWSTR,LPCWSTR); -#define FindResource WINELIB_NAME_AW(FindResource) -HWND16 FindWindow16(SEGPTR,LPCSTR); -HWND32 FindWindow32A(LPCSTR,LPCSTR); -HWND32 FindWindow32W(LPCWSTR,LPCWSTR); -#define FindWindow WINELIB_NAME_AW(FindWindow) -HWND16 FindWindowEx16(HWND16,HWND16,SEGPTR,LPCSTR); -HWND32 FindWindowEx32A(HWND32,HWND32,LPCSTR,LPCSTR); -HWND32 FindWindowEx32W(HWND32,HWND32,LPCWSTR,LPCWSTR); -#define FindWindowEx WINELIB_NAME_AW(FindWindowEx) -BOOL16 FlashWindow16(HWND16,BOOL16); -BOOL32 FlashWindow32(HWND32,BOOL32); -#define FlashWindow WINELIB_NAME(FlashWindow) -BOOL16 FloodFill16(HDC16,INT16,INT16,COLORREF); -BOOL32 FloodFill32(HDC32,INT32,INT32,COLORREF); -#define FloodFill WINELIB_NAME(FloodFill) -INT16 FrameRect16(HDC16,const RECT16*,HBRUSH16); -INT32 FrameRect32(HDC32,const RECT32*,HBRUSH32); -#define FrameRect WINELIB_NAME(FrameRect) -BOOL16 FrameRgn16(HDC16,HRGN16,HBRUSH16,INT16,INT16); -BOOL32 FrameRgn32(HDC32,HRGN32,HBRUSH32,INT32,INT32); -#define FrameRgn WINELIB_NAME(FrameRgn) -VOID FreeLibrary16(HINSTANCE16); -BOOL32 FreeLibrary32(HMODULE32); -#define FreeLibrary WINELIB_NAME(FreeLibrary) -BOOL16 FreeModule16(HMODULE16); -#define FreeModule32(handle) FreeLibrary32(handle) -#define FreeModule WINELIB_NAME(FreeModule) -void FreeProcInstance16(FARPROC16); -#define FreeProcInstance32(proc) /*nothing*/ -#define FreeProcInstance WINELIB_NAME(FreeProcInstance) -BOOL16 FreeResource16(HGLOBAL16); -BOOL32 FreeResource32(HGLOBAL32); -#define FreeResource WINELIB_NAME(FreeResource) -HWND16 GetActiveWindow16(void); -HWND32 GetActiveWindow32(void); -#define GetActiveWindow WINELIB_NAME(GetActiveWindow) -DWORD GetAppCompatFlags16(HTASK16); -DWORD GetAppCompatFlags32(HTASK32); -#define GetAppCompatFlags WINELIB_NAME(GetAppCompatFlags) -WORD GetAsyncKeyState16(INT16); -WORD GetAsyncKeyState32(INT32); -#define GetAsyncKeyState WINELIB_NAME(GetAsyncKeyState) -UINT16 GetAtomName16(ATOM,LPSTR,INT16); -UINT32 GetAtomName32A(ATOM,LPSTR,INT32); -UINT32 GetAtomName32W(ATOM,LPWSTR,INT32); -#define GetAtomName WINELIB_NAME_AW(GetAtomName) -LONG GetBitmapBits16(HBITMAP16,LONG,LPVOID); -LONG GetBitmapBits32(HBITMAP32,LONG,LPVOID); -#define GetBitmapBits WINELIB_NAME(GetBitmapBits) -BOOL16 GetBitmapDimensionEx16(HBITMAP16,LPSIZE16); -BOOL32 GetBitmapDimensionEx32(HBITMAP32,LPSIZE32); -#define GetBitmapDimensionEx WINELIB_NAME(GetBitmapDimensionEx) -BOOL16 GetBrushOrgEx16(HDC16,LPPOINT16); -BOOL32 GetBrushOrgEx32(HDC32,LPPOINT32); -#define GetBrushOrgEx WINELIB_NAME(GetBrushOrgEx) -COLORREF GetBkColor16(HDC16); -COLORREF GetBkColor32(HDC32); -#define GetBkColor WINELIB_NAME(GetBkColor) -INT16 GetBkMode16(HDC16); -INT32 GetBkMode32(HDC32); -#define GetBkMode WINELIB_NAME(GetBkMode) -HWND16 GetCapture16(void); -HWND32 GetCapture32(void); -#define GetCapture WINELIB_NAME(GetCapture) -UINT16 GetCaretBlinkTime16(void); -UINT32 GetCaretBlinkTime32(void); -#define GetCaretBlinkTime WINELIB_NAME(GetCaretBlinkTime) -VOID GetCaretPos16(LPPOINT16); -BOOL32 GetCaretPos32(LPPOINT32); -#define GetCaretPos WINELIB_NAME(GetCaretPos) -BOOL16 GetCharABCWidths16(HDC16,UINT16,UINT16,LPABC16); -BOOL32 GetCharABCWidths32A(HDC32,UINT32,UINT32,LPABC32); -BOOL32 GetCharABCWidths32W(HDC32,UINT32,UINT32,LPABC32); -#define GetCharABCWidths WINELIB_NAME_AW(GetCharABCWidths) -BOOL16 GetCharWidth16(HDC16,UINT16,UINT16,LPINT16); -BOOL32 GetCharWidth32A(HDC32,UINT32,UINT32,LPINT32); -BOOL32 GetCharWidth32W(HDC32,UINT32,UINT32,LPINT32); -#define GetCharWidth WINELIB_NAME_AW(GetCharWidth) -BOOL16 GetClassInfo16(HINSTANCE16,SEGPTR,WNDCLASS16 *); -BOOL32 GetClassInfo32A(HINSTANCE32,LPCSTR,WNDCLASS32A *); -BOOL32 GetClassInfo32W(HINSTANCE32,LPCWSTR,WNDCLASS32W *); -#define GetClassInfo WINELIB_NAME_AW(GetClassInfo) -BOOL16 GetClassInfoEx16(HINSTANCE16,SEGPTR,WNDCLASSEX16 *); -BOOL32 GetClassInfoEx32A(HINSTANCE32,LPCSTR,WNDCLASSEX32A *); -BOOL32 GetClassInfoEx32W(HINSTANCE32,LPCWSTR,WNDCLASSEX32W *); -#define GetClassInfoEx WINELIB_NAME_AW(GetClassInfoEx) -LONG GetClassLong16(HWND16,INT16); -LONG GetClassLong32A(HWND32,INT32); -LONG GetClassLong32W(HWND32,INT32); -#define GetClassLong WINELIB_NAME_AW(GetClassLong) -INT16 GetClassName16(HWND16,LPSTR,INT16); -INT32 GetClassName32A(HWND32,LPSTR,INT32); -INT32 GetClassName32W(HWND32,LPWSTR,INT32); -#define GetClassName WINELIB_NAME_AW(GetClassName) -WORD GetClassWord16(HWND16,INT16); -WORD GetClassWord32(HWND32,INT32); -#define GetClassWord WINELIB_NAME(GetClassWord) -void GetClientRect16(HWND16,LPRECT16); -void GetClientRect32(HWND32,LPRECT32); -#define GetClientRect WINELIB_NAME(GetClientRect) -HANDLE16 GetClipboardData16(UINT16); -HANDLE32 GetClipboardData32(UINT32); -#define GetClipboardData WINELIB_NAME(GetClipboardData) -INT16 GetClipboardFormatName16(UINT16,LPSTR,INT16); -INT32 GetClipboardFormatName32A(UINT32,LPSTR,INT32); -INT32 GetClipboardFormatName32W(UINT32,LPWSTR,INT32); -#define GetClipboardFormatName WINELIB_NAME_AW(GetClipboardFormatName) -HWND16 GetClipboardOwner16(void); -HWND32 GetClipboardOwner32(void); -#define GetClipboardOwner WINELIB_NAME(GetClipboardOwner) -HWND16 GetClipboardViewer16(void); -HWND32 GetClipboardViewer32(void); -#define GetClipboardViewer WINELIB_NAME(GetClipboardViewer) -INT16 GetClipBox16(HDC16,LPRECT16); -INT32 GetClipBox32(HDC32,LPRECT32); -#define GetClipBox WINELIB_NAME(GetClipBox) -void GetClipCursor16(LPRECT16); -void GetClipCursor32(LPRECT32); -#define GetClipCursor WINELIB_NAME(GetClipCursor) -HRGN16 GetClipRgn16(HDC16); -INT32 GetClipRgn32(HDC32,HRGN32); -#define GetClipRgn WINELIB_NAME(GetClipRgn) -INT16 GetCommState16(INT16,LPDCB16); -BOOL32 GetCommState32(INT32,LPDCB32); -#define GetCommState WINELIB_NAME(GetCommState) -UINT16 GetCurrentDirectory16(UINT16,LPSTR); -UINT32 GetCurrentDirectory32A(UINT32,LPSTR); -UINT32 GetCurrentDirectory32W(UINT32,LPWSTR); -#define GetCurrentDirectory WINELIB_NAME_AW(GetCurrentDirectory) -BOOL16 GetCurrentPositionEx16(HDC16,LPPOINT16); -BOOL32 GetCurrentPositionEx32(HDC32,LPPOINT32); -#define GetCurrentPositionEx WINELIB_NAME(GetCurrentPositionEx) -DWORD GetCurrentTime16(void); -#define GetCurrentTime32() GetTickCount() -#define GetCurrentTime WINELIB_NAME(GetCurrentTime) -HCURSOR16 GetCursor16(void); -HCURSOR32 GetCursor32(void); -#define GetCursor WINELIB_NAME(GetCursor) -void GetCursorPos16(LPPOINT16); -void GetCursorPos32(LPPOINT32); -#define GetCursorPos WINELIB_NAME(GetCursorPos) -HDC16 GetDC16(HWND16); -HDC32 GetDC32(HWND32); -#define GetDC WINELIB_NAME(GetDC) -HDC16 GetDCEx16(HWND16,HRGN16,DWORD); -HDC32 GetDCEx32(HWND32,HRGN32,DWORD); -#define GetDCEx WINELIB_NAME(GetDCEx) -HWND16 GetDesktopWindow16(void); -HWND32 GetDesktopWindow32(void); -#define GetDesktopWindow WINELIB_NAME(GetDesktopWindow) -INT16 GetDeviceCaps16(HDC16,INT16); -INT32 GetDeviceCaps32(HDC32,INT32); -#define GetDeviceCaps WINELIB_NAME(GetDeviceCaps) -INT16 GetDIBits16(HDC16,HBITMAP16,UINT16,UINT16,LPSTR,LPBITMAPINFO,UINT16); -INT32 GetDIBits32(HDC32,HBITMAP32,UINT32,UINT32,LPSTR,LPBITMAPINFO,UINT32); -#define GetDIBits WINELIB_NAME(GetDIBits) -BOOL16 GetDiskFreeSpace16(LPCSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD); -BOOL32 GetDiskFreeSpace32A(LPCSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD); -BOOL32 GetDiskFreeSpace32W(LPCWSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD); -#define GetDiskFreeSpace WINELIB_NAME_AW(GetDiskFreeSpace) -INT16 GetDlgCtrlID16(HWND16); -INT32 GetDlgCtrlID32(HWND32); -#define GetDlgCtrlID WINELIB_NAME(GetDlgCtrlID) -HWND16 GetDlgItem16(HWND16,INT16); -HWND32 GetDlgItem32(HWND32,INT32); -#define GetDlgItem WINELIB_NAME(GetDlgItem) -UINT16 GetDlgItemInt16(HWND16,INT16,BOOL16*,BOOL16); -UINT32 GetDlgItemInt32(HWND32,INT32,BOOL32*,BOOL32); -#define GetDlgItemInt WINELIB_NAME(GetDlgItemInt) -INT16 GetDlgItemText16(HWND16,INT16,SEGPTR,UINT16); -INT32 GetDlgItemText32A(HWND32,INT32,LPSTR,UINT32); -INT32 GetDlgItemText32W(HWND32,INT32,LPWSTR,UINT32); -#define GetDlgItemText WINELIB_NAME_AW(GetDlgItemText) -UINT16 GetDoubleClickTime16(void); -UINT32 GetDoubleClickTime32(void); -#define GetDoubleClickTime WINELIB_NAME(GetDoubleClickTime) -UINT16 GetDriveType16(UINT16); /* yes, the arguments differ */ -UINT32 GetDriveType32A(LPCSTR); -UINT32 GetDriveType32W(LPCWSTR); -#define GetDriveType WINELIB_NAME_AW(GetDriveType) -INT16 GetExpandedName16(LPCSTR,LPSTR); -INT32 GetExpandedName32A(LPCSTR,LPSTR); -INT32 GetExpandedName32W(LPCWSTR,LPWSTR); -#define GetExpandedName WINELIB_NAME_AW(GetExpandedName) -DWORD GetFileAttributes16(LPCSTR); -DWORD GetFileAttributes32A(LPCSTR); -DWORD GetFileAttributes32W(LPCWSTR); -#define GetFileAttributes WINELIB_NAME_AW(GetFileAttributes) -DWORD GetFileVersionInfoSize16(LPCSTR,LPDWORD); -DWORD GetFileVersionInfoSize32A(LPCSTR,LPDWORD); -DWORD GetFileVersionInfoSize32W(LPCWSTR,LPDWORD); -#define GetFileVersionInfoSize WINELIB_NAME_AW(GetFileVersionInfoSize) -DWORD GetFileVersionInfo16(LPCSTR,DWORD,DWORD,LPVOID); -DWORD GetFileVersionInfo32A(LPCSTR,DWORD,DWORD,LPVOID); -DWORD GetFileVersionInfo32W(LPCWSTR,DWORD,DWORD,LPVOID); -#define GetFileVersionInfo WINELIB_NAME_AW(GetFileVersionInfo) -HWND16 GetFocus16(void); -HWND32 GetFocus32(void); -#define GetFocus WINELIB_NAME(GetFocus) -DWORD GetFreeSpace16(UINT16); -#define GetFreeSpace32(w) (0x100000L) -#define GetFreeSpace WINELIB_NAME(GetFreeSpace) -DWORD GetGlyphOutLine16(HDC16,UINT16,UINT16,LPGLYPHMETRICS16,DWORD,LPVOID,const MAT2*); -DWORD GetGlyphOutLine32A(HDC32,UINT32,UINT32,LPGLYPHMETRICS32,DWORD,LPVOID,const MAT2*); -DWORD GetGlyphOutLine32W(HDC32,UINT32,UINT32,LPGLYPHMETRICS32,DWORD,LPVOID,const MAT2*); -#define GetGlyphOutLine WINELIB_NAME_AW(GetGlyphOutLine) -BOOL16 GetInputState16(void); -BOOL32 GetInputState32(void); -#define GetInputState WINELIB_NAME(GetInputState) -UINT16 GetInternalWindowPos16(HWND16,LPRECT16,LPPOINT16); -UINT32 GetInternalWindowPos32(HWND32,LPRECT32,LPPOINT32); -#define GetInternalWindowPos WINELIB_NAME(GetInternalWindowPos) -INT16 GetKBCodePage16(void); -UINT32 GetKBCodePage32(void); -#define GetKBCodePage WINELIB_NAME(GetKBCodePage) -INT16 GetKerningPairs16(HDC16,INT16,LPKERNINGPAIR16); -DWORD GetKerningPairs32A(HDC32,DWORD,LPKERNINGPAIR32); -DWORD GetKerningPairs32W(HDC32,DWORD,LPKERNINGPAIR32); -#define GetKerningPairs WINELIB_NAME_AW(GetKerningPairs) -INT16 GetKeyboardType16(INT16); -INT32 GetKeyboardType32(INT32); -#define GetKeyboardType WINELIB_NAME(GetKeyboardType) -INT16 GetKeyNameText16(LONG,LPSTR,INT16); -INT32 GetKeyNameText32A(LONG,LPSTR,INT32); -INT32 GetKeyNameText32W(LONG,LPWSTR,INT32); -#define GetKeyNameText WINELIB_NAME_AW(GetKeyNameText) -WORD GetKeyState16(INT16); -WORD GetKeyState32(INT32); -#define GetKeyState WINELIB_NAME(GetKeyState) -HWND16 GetLastActivePopup16(HWND16); -HWND32 GetLastActivePopup32(HWND32); -#define GetLastActivePopup WINELIB_NAME(GetLastActivePopup) -UINT32 GetLogicalDriveStrings32A(UINT32,LPSTR); -UINT32 GetLogicalDriveStrings32W(UINT32,LPWSTR); -#define GetLogicalDriveStrings WINELIB_NAME_AW(GetLogicalDriveStrings) -INT16 GetLocaleInfo16(LCID,LCTYPE,LPSTR,INT16); -INT32 GetLocaleInfo32A(LCID,LCTYPE,LPSTR,INT32); -INT32 GetLocaleInfo32W(LCID,LCTYPE,LPWSTR,INT32); -#define GetLocaleInfo WINELIB_NAME_AW(GetLocaleInfo) -INT16 GetMapMode16(HDC16); -INT32 GetMapMode32(HDC32); -#define GetMapMode WINELIB_NAME(GetMapMode) -HMENU16 GetMenu16(HWND16); -HMENU32 GetMenu32(HWND32); -#define GetMenu WINELIB_NAME(GetMenu) -INT16 GetMenuItemCount16(HMENU16); -INT32 GetMenuItemCount32(HMENU32); -#define GetMenuItemCount WINELIB_NAME(GetMenuItemCount) -UINT16 GetMenuItemID16(HMENU16,INT16); -UINT32 GetMenuItemID32(HMENU32,INT32); -#define GetMenuItemID WINELIB_NAME(GetMenuItemID) -UINT16 GetMenuState16(HMENU16,UINT16,UINT16); -UINT32 GetMenuState32(HMENU32,UINT32,UINT32); -#define GetMenuState WINELIB_NAME(GetMenuState) -INT16 GetMenuString16(HMENU16,UINT16,LPSTR,INT16,UINT16); -INT32 GetMenuString32A(HMENU32,UINT32,LPSTR,INT32,UINT32); -INT32 GetMenuString32W(HMENU32,UINT32,LPWSTR,INT32,UINT32); -#define GetMenuString WINELIB_NAME_AW(GetMenuString) -BOOL16 GetMessage16(SEGPTR,HWND16,UINT16,UINT16); -BOOL32 GetMessage32A(LPMSG32,HWND32,UINT32,UINT32); -BOOL32 GetMessage32W(LPMSG32,HWND32,UINT32,UINT32); -#define GetMessage WINELIB_NAME_AW(GetMessage) -HMETAFILE16 GetMetaFile16(LPCSTR); -HMETAFILE32 GetMetaFile32A(LPCSTR); -HMETAFILE32 GetMetaFile32W(LPCWSTR); -#define GetMetaFile WINELIB_NAME_AW(GetMetaFile) -INT16 GetModuleFileName16(HINSTANCE16,LPSTR,INT16); -DWORD GetModuleFileName32A(HMODULE32,LPSTR,DWORD); -DWORD GetModuleFileName32W(HMODULE32,LPWSTR,DWORD); -#define GetModuleFileName WINELIB_NAME_AW(GetModuleFileName) -HMODULE16 GetModuleHandle16(LPCSTR); -HMODULE32 GetModuleHandle32A(LPCSTR); -HMODULE32 GetModuleHandle32W(LPCSTR); -#define GetModuleHandle WINELIB_NAME_AW(GetModuleHandle) -DWORD GetNearestColor16(HDC16,DWORD); -DWORD GetNearestColor32(HDC32,DWORD); -#define GetNearestColor WINELIB_NAME(GetNearestColor) -UINT16 GetNearestPaletteIndex16(HPALETTE16,COLORREF); -UINT32 GetNearestPaletteIndex32(HPALETTE32,COLORREF); -#define GetNearestPaletteIndex WINELIB_NAME(GetNearestPaletteIndex) -HWND16 GetNextDlgGroupItem16(HWND16,HWND16,BOOL16); -HWND32 GetNextDlgGroupItem32(HWND32,HWND32,BOOL32); -#define GetNextDlgGroupItem WINELIB_NAME(GetNextDlgGroupItem) -HWND16 GetNextDlgTabItem16(HWND16,HWND16,BOOL16); -HWND32 GetNextDlgTabItem32(HWND32,HWND32,BOOL32); -#define GetNextDlgTabItem WINELIB_NAME(GetNextDlgTabItem) -HWND16 GetNextWindow16(HWND16,WORD); -#define GetNextWindow32 GetWindow32 -#define GetNextWindow WINELIB_NAME(GetNextWindow) -INT16 GetObject16(HANDLE16,INT16,LPVOID); -INT32 GetObject32A(HANDLE32,INT32,LPVOID); -INT32 GetObject32W(HANDLE32,INT32,LPVOID); -#define GetObject WINELIB_NAME_AW(GetObject) -HWND16 GetOpenClipboardWindow16(void); -HWND32 GetOpenClipboardWindow32(void); -#define GetOpenClipboardWindow WINELIB_NAME(GetOpenClipboardWindow) -UINT16 GetPaletteEntries16(HPALETTE16,UINT16,UINT16,LPPALETTEENTRY); -UINT32 GetPaletteEntries32(HPALETTE32,UINT32,UINT32,LPPALETTEENTRY); -#define GetPaletteEntries WINELIB_NAME(GetPaletteEntries) -HWND16 GetParent16(HWND16); -HWND32 GetParent32(HWND32); -#define GetParent WINELIB_NAME(GetParent) -COLORREF GetPixel16(HDC16,INT16,INT16); -COLORREF GetPixel32(HDC32,INT32,INT32); -#define GetPixel WINELIB_NAME(GetPixel) -INT16 GetPolyFillMode16(HDC16); -INT32 GetPolyFillMode32(HDC32); -#define GetPolyFillMode WINELIB_NAME(GetPolyFillMode) -INT16 GetPriorityClipboardFormat16(UINT16*,INT16); -INT32 GetPriorityClipboardFormat32(UINT32*,INT32); -#define GetPriorityClipboardFormat WINELIB_NAME(GetPriorityClipboardFormat) -UINT16 GetPrivateProfileInt16(LPCSTR,LPCSTR,INT16,LPCSTR); -UINT32 GetPrivateProfileInt32A(LPCSTR,LPCSTR,INT32,LPCSTR); -UINT32 GetPrivateProfileInt32W(LPCWSTR,LPCWSTR,INT32,LPCWSTR); -#define GetPrivateProfileInt WINELIB_NAME_AW(GetPrivateProfileInt) -INT16 GetPrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT16,LPCSTR); -INT32 GetPrivateProfileString32A(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT32,LPCSTR); -INT32 GetPrivateProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,INT32,LPCWSTR); -#define GetPrivateProfileString WINELIB_NAME_AW(GetPrivateProfileString) -FARPROC16 GetProcAddress16(HMODULE16,SEGPTR); -FARPROC32 GetProcAddress32(HMODULE32,LPCSTR); -#define GetProcAddress WINELIB_NAME(GetProcAddress) -UINT16 GetProfileInt16(LPCSTR,LPCSTR,INT16); -UINT32 GetProfileInt32A(LPCSTR,LPCSTR,INT32); -UINT32 GetProfileInt32W(LPCWSTR,LPCWSTR,INT32); -#define GetProfileInt WINELIB_NAME_AW(GetProfileInt) -INT16 GetProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT16); -INT32 GetProfileString32A(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT32); -INT32 GetProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,INT32); -#define GetProfileString WINELIB_NAME_AW(GetProfileString) -HANDLE16 GetProp16(HWND16,LPCSTR); -HANDLE32 GetProp32A(HWND32,LPCSTR); -HANDLE32 GetProp32W(HWND32,LPCWSTR); -#define GetProp WINELIB_NAME_AW(GetProp) -DWORD GetQueueStatus16(UINT16); -DWORD GetQueueStatus32(UINT32); -#define GetQueueStatus WINELIB_NAME(GetQueueStatus) -BOOL16 GetRasterizerCaps16(LPRASTERIZER_STATUS,UINT16); -BOOL32 GetRasterizerCaps32(LPRASTERIZER_STATUS,UINT32); -#define GetRasterizerCaps WINELIB_NAME(GetRasterizerCaps) -INT16 GetRelAbs16(HDC16); -INT32 GetRelAbs32(HDC32); -#define GetRelAbs WINELIB_NAME(GetRelAbs) -INT16 GetRgnBox16(HRGN16,LPRECT16); -INT32 GetRgnBox32(HRGN32,LPRECT32); -#define GetRgnBox WINELIB_NAME(GetRgnBox) -INT16 GetROP216(HDC16); -INT32 GetROP232(HDC32); -#define GetROP2 WINELIB_NAME(GetROP2) -BOOL16 GetScrollInfo16(HWND16,INT16,LPSCROLLINFO); -BOOL32 GetScrollInfo32(HWND32,INT32,LPSCROLLINFO); -#define GetScrollInfo WINELIB_NAME(GetScrollInfo) -INT16 GetScrollPos16(HWND16,INT16); -INT32 GetScrollPos32(HWND32,INT32); -#define GetScrollPos WINELIB_NAME(GetScrollPos) -BOOL16 GetScrollRange16(HWND16,INT16,LPINT16,LPINT16); -BOOL32 GetScrollRange32(HWND32,INT32,LPINT32,LPINT32); -#define GetScrollRange WINELIB_NAME(GetScrollRange) -HGDIOBJ16 GetStockObject16(INT16); -HGDIOBJ32 GetStockObject32(INT32); -#define GetStockObject WINELIB_NAME(GetStockObject) -INT16 GetStretchBltMode16(HDC16); -INT32 GetStretchBltMode32(HDC32); -#define GetStretchBltMode WINELIB_NAME(GetStretchBltMode) -BOOL16 GetStringType16(LCID,DWORD,LPCSTR,INT16,LPWORD); -BOOL32 GetStringType32A(LCID,DWORD,LPCSTR,INT32,LPWORD); -BOOL32 GetStringType32W(DWORD,LPCWSTR,INT32,LPWORD); -#define GetStringType WINELIB_NAME_AW(GetStringType) -HMENU16 GetSubMenu16(HMENU16,INT16); -HMENU32 GetSubMenu32(HMENU32,INT32); -#define GetSubMenu WINELIB_NAME(GetSubMenu) -COLORREF GetSysColor16(INT16); -COLORREF GetSysColor32(INT32); -#define GetSysColor WINELIB_NAME(GetSysColor) -HBRUSH16 GetSysColorBrush16(INT16); -HBRUSH32 GetSysColorBrush32(INT32); -#define GetSysColorBrush WINELIB_NAME(GetSysColorBrush) -HWND16 GetSysModalWindow16(void); -#define GetSysModalWindow32() ((HWND32)0) -#define GetSysModalWindow WINELIB_NAME(GetSysModalWindow) -UINT16 GetSystemDirectory16(LPSTR,UINT16); -UINT32 GetSystemDirectory32A(LPSTR,UINT32); -UINT32 GetSystemDirectory32W(LPWSTR,UINT32); -#define GetSystemDirectory WINELIB_NAME_AW(GetSystemDirectory) -HMENU16 GetSystemMenu16(HWND16,BOOL16); -HMENU32 GetSystemMenu32(HWND32,BOOL32); -#define GetSystemMenu WINELIB_NAME(GetSystemMenu) -INT16 GetSystemMetrics16(INT16); -INT32 GetSystemMetrics32(INT32); -#define GetSystemMetrics WINELIB_NAME(GetSystemMetrics) -UINT16 GetSystemPaletteEntries16(HDC16,UINT16,UINT16,LPPALETTEENTRY); -UINT32 GetSystemPaletteEntries32(HDC32,UINT32,UINT32,LPPALETTEENTRY); -#define GetSystemPaletteEntries WINELIB_NAME(GetSystemPaletteEntries) -UINT16 GetSystemPaletteUse16(HDC16); -UINT32 GetSystemPaletteUse32(HDC32); -#define GetSystemPaletteUse WINELIB_NAME(GetSystemPaletteUse) -DWORD GetTabbedTextExtent16(HDC16,LPCSTR,INT16,INT16,const INT16*); -DWORD GetTabbedTextExtent32A(HDC32,LPCSTR,INT32,INT32,const INT32*); -DWORD GetTabbedTextExtent32W(HDC32,LPCWSTR,INT32,INT32,const INT32*); -#define GetTabbedTextExtent WINELIB_NAME_AW(GetTabbedTextExtent) -UINT16 GetTempFileName16(BYTE,LPCSTR,UINT16,LPSTR); -UINT32 GetTempFileName32A(LPCSTR,LPCSTR,UINT32,LPSTR); -UINT32 GetTempFileName32W(LPCWSTR,LPCWSTR,UINT32,LPWSTR); -#define GetTempFileName WINELIB_NAME_AW(GetTempFileName) -UINT32 GetTempPath32A(UINT32,LPSTR); -UINT32 GetTempPath32W(UINT32,LPWSTR); -#define GetTempPath WINELIB_NAME_AW(GetTempPath) -UINT16 GetTextAlign16(HDC16); -UINT32 GetTextAlign32(HDC32); -#define GetTextAlign WINELIB_NAME(GetTextAlign) -INT16 GetTextCharacterExtra16(HDC16); -INT32 GetTextCharacterExtra32(HDC32); -#define GetTextCharacterExtra WINELIB_NAME(GetTextCharacterExtra) -COLORREF GetTextColor16(HDC16); -COLORREF GetTextColor32(HDC32); -#define GetTextColor WINELIB_NAME(GetTextColor) -BOOL16 GetTextExtentPoint16(HDC16,LPCSTR,INT16,LPSIZE16); -BOOL32 GetTextExtentPoint32A(HDC32,LPCSTR,INT32,LPSIZE32); -BOOL32 GetTextExtentPoint32W(HDC32,LPCWSTR,INT32,LPSIZE32); -#define GetTextExtentPoint WINELIB_NAME_AW(GetTextExtentPoint) -INT16 GetTextFace16(HDC16,INT16,LPSTR); -INT32 GetTextFace32A(HDC32,INT32,LPSTR); -INT32 GetTextFace32W(HDC32,INT32,LPWSTR); -#define GetTextFace WINELIB_NAME_AW(GetTextFace) -BOOL16 GetTextMetrics16(HDC16,LPTEXTMETRIC16); -BOOL32 GetTextMetrics32A(HDC32,LPTEXTMETRIC32A); -BOOL32 GetTextMetrics32W(HDC32,LPTEXTMETRIC32W); -#define GetTextMetrics WINELIB_NAME_AW(GetTextMetrics) -LPINT16 GetThresholdEvent16(void); -LPDWORD GetThresholdEvent32(void); -#define GetThresholdEvent WINELIB_NAME(GetThresholdEvent) -INT16 GetThresholdStatus16(void); -DWORD GetThresholdStatus32(void); -#define GetThresholdStatus WINELIB_NAME(GetThresholdStatus) -HWND16 GetTopWindow16(HWND16); -HWND32 GetTopWindow32(HWND32); -#define GetTopWindow WINELIB_NAME(GetTopWindow) -BOOL16 GetUpdateRect16(HWND16,LPRECT16,BOOL16); -BOOL32 GetUpdateRect32(HWND32,LPRECT32,BOOL32); -#define GetUpdateRect WINELIB_NAME(GetUpdateRect) -INT16 GetUpdateRgn16(HWND16,HRGN16,BOOL16); -INT32 GetUpdateRgn32(HWND32,HRGN32,BOOL32); -#define GetUpdateRgn WINELIB_NAME(GetUpdateRgn) -LONG GetVersion16(void); -LONG GetVersion32(void); -#define GetVersion WINELIB_NAME(GetVersion) -BOOL16 GetViewportExtEx16(HDC16,LPPOINT16); -BOOL32 GetViewportExtEx32(HDC32,LPPOINT32); -#define GetViewportExtEx WINELIB_NAME(GetViewportExtEx) -BOOL16 GetViewportOrgEx16(HDC16,LPPOINT16); -BOOL32 GetViewportOrgEx32(HDC32,LPPOINT32); -#define GetViewportOrgEx WINELIB_NAME(GetViewportOrgEx) -BOOL32 GetVolumeInformation32A(LPCSTR,LPSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPSTR,DWORD); -BOOL32 GetVolumeInformation32W(LPCWSTR,LPWSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPWSTR,DWORD); -#define GetVolumeInformation WINELIB_NAME_AW(GetVolumeInformation) -HWND16 GetWindow16(HWND16,WORD); -HWND32 GetWindow32(HWND32,WORD); -#define GetWindow WINELIB_NAME(GetWindow) -HDC16 GetWindowDC16(HWND16); -HDC32 GetWindowDC32(HWND32); -#define GetWindowDC WINELIB_NAME(GetWindowDC) -BOOL16 GetWindowExtEx16(HDC16,LPPOINT16); -BOOL32 GetWindowExtEx32(HDC32,LPPOINT32); -#define GetWindowExtEx WINELIB_NAME(GetWindowExtEx) -LONG GetWindowLong16(HWND16,INT16); -LONG GetWindowLong32A(HWND32,INT32); -LONG GetWindowLong32W(HWND32,INT32); -#define GetWindowLong WINELIB_NAME_AW(GetWindowLong) -BOOL16 GetWindowOrgEx16(HDC16,LPPOINT16); -BOOL32 GetWindowOrgEx32(HDC32,LPPOINT32); -#define GetWindowOrgEx WINELIB_NAME(GetWindowOrgEx) -BOOL16 GetWindowPlacement16(HWND16,LPWINDOWPLACEMENT16); -BOOL32 GetWindowPlacement32(HWND32,LPWINDOWPLACEMENT32); -#define GetWindowPlacement WINELIB_NAME(GetWindowPlacement) -void GetWindowRect16(HWND16,LPRECT16); -void GetWindowRect32(HWND32,LPRECT32); -#define GetWindowRect WINELIB_NAME(GetWindowRect) -UINT16 GetWindowsDirectory16(LPSTR,UINT16); -UINT32 GetWindowsDirectory32A(LPSTR,UINT32); -UINT32 GetWindowsDirectory32W(LPWSTR,UINT32); -#define GetWindowsDirectory WINELIB_NAME_AW(GetWindowsDirectory) -HTASK16 GetWindowTask16(HWND16); -#define GetWindowTask32(hwnd) ((HTASK32)GetWindowThreadProcessId(hwnd,NULL)) -#define GetWindowTask WINELIB_NAME(GetWindowTask) -INT16 GetWindowText16(HWND16,SEGPTR,INT16); -INT32 GetWindowText32A(HWND32,LPSTR,INT32); -INT32 GetWindowText32W(HWND32,LPWSTR,INT32); -#define GetWindowText WINELIB_NAME_AW(GetWindowText) -INT16 GetWindowTextLength16(HWND16); -INT32 GetWindowTextLength32A(HWND32); -INT32 GetWindowTextLength32W(HWND32); -#define GetWindowTextLength WINELIB_NAME_AW(GetWindowTextLength) -WORD GetWindowWord16(HWND16,INT16); -WORD GetWindowWord32(HWND32,INT32); -#define GetWindowWord WINELIB_NAME(GetWindowWord) -ATOM GlobalAddAtom16(SEGPTR); -ATOM GlobalAddAtom32A(LPCSTR); -ATOM GlobalAddAtom32W(LPCWSTR); -#define GlobalAddAtom WINELIB_NAME_AW(GlobalAddAtom) -HGLOBAL16 GlobalAlloc16(UINT16,DWORD); -HGLOBAL32 GlobalAlloc32(UINT32,DWORD); -#define GlobalAlloc WINELIB_NAME(GlobalAlloc) -DWORD GlobalCompact16(DWORD); -DWORD GlobalCompact32(DWORD); -#define GlobalCompact WINELIB_NAME(GlobalCompact) -UINT16 GlobalFlags16(HGLOBAL16); -UINT32 GlobalFlags32(HGLOBAL32); -#define GlobalFlags WINELIB_NAME(GlobalFlags) -ATOM GlobalFindAtom16(SEGPTR); -ATOM GlobalFindAtom32A(LPCSTR); -ATOM GlobalFindAtom32W(LPCWSTR); -#define GlobalFindAtom WINELIB_NAME_AW(GlobalFindAtom) -HGLOBAL16 GlobalFree16(HGLOBAL16); -HGLOBAL32 GlobalFree32(HGLOBAL32); -#define GlobalFree WINELIB_NAME(GlobalFree) -UINT16 GlobalGetAtomName16(ATOM,LPSTR,INT16); -UINT32 GlobalGetAtomName32A(ATOM,LPSTR,INT32); -UINT32 GlobalGetAtomName32W(ATOM,LPWSTR,INT32); -#define GlobalGetAtomName WINELIB_NAME_AW(GlobalGetAtomName) -DWORD GlobalHandle16(WORD); -HGLOBAL32 GlobalHandle32(LPCVOID); -#define GlobalHandle WINELIB_NAME(GlobalHandle) -VOID GlobalFix16(HGLOBAL16); -VOID GlobalFix32(HGLOBAL32); -#define GlobalFix WINELIB_NAME(GlobalFix) -LPVOID GlobalLock16(HGLOBAL16); -LPVOID GlobalLock32(HGLOBAL32); -#define GlobalLock WINELIB_NAME(GlobalLock) -HGLOBAL16 GlobalReAlloc16(HGLOBAL16,DWORD,UINT16); -HGLOBAL32 GlobalReAlloc32(HGLOBAL32,DWORD,UINT32); -#define GlobalReAlloc WINELIB_NAME(GlobalReAlloc) -DWORD GlobalSize16(HGLOBAL16); -DWORD GlobalSize32(HGLOBAL32); -#define GlobalSize WINELIB_NAME(GlobalSize) -VOID GlobalUnfix16(HGLOBAL16); -VOID GlobalUnfix32(HGLOBAL32); -#define GlobalUnfix WINELIB_NAME(GlobalUnfix) -BOOL16 GlobalUnlock16(HGLOBAL16); -BOOL32 GlobalUnlock32(HGLOBAL32); -#define GlobalUnlock WINELIB_NAME(GlobalUnlock) -BOOL16 GlobalUnWire16(HGLOBAL16); -BOOL32 GlobalUnWire32(HGLOBAL32); -#define GlobalUnWire WINELIB_NAME(GlobalUnWire) -SEGPTR GlobalWire16(HGLOBAL16); -LPVOID GlobalWire32(HGLOBAL32); -#define GlobalWire WINELIB_NAME(GlobalWire) -BOOL16 GrayString16(HDC16,HBRUSH16,GRAYSTRINGPROC16,LPARAM, - INT16,INT16,INT16,INT16,INT16); -BOOL32 GrayString32A(HDC32,HBRUSH32,GRAYSTRINGPROC32,LPARAM, - INT32,INT32,INT32,INT32,INT32); -BOOL32 GrayString32W(HDC32,HBRUSH32,GRAYSTRINGPROC32,LPARAM, - INT32,INT32,INT32,INT32,INT32); -#define GrayString WINELIB_NAME_AW(GrayString) -VOID HideCaret16(HWND16); -BOOL32 HideCaret32(HWND32); -#define HideCaret WINELIB_NAME(HideCaret) -BOOL16 HiliteMenuItem16(HWND16,HMENU16,UINT16,UINT16); -BOOL32 HiliteMenuItem32(HWND32,HMENU32,UINT32,UINT32); -#define HiliteMenuItem WINELIB_NAME(HiliteMenuItem) -void InflateRect16(LPRECT16,INT16,INT16); -void InflateRect32(LPRECT32,INT32,INT32); -#define InflateRect WINELIB_NAME(InflateRect) -WORD InitAtomTable16(WORD); -BOOL32 InitAtomTable32(DWORD); -#define InitAtomTable WINELIB_NAME(InitAtomTable) -BOOL16 InSendMessage16(void); -BOOL32 InSendMessage32(void); -#define InSendMessage WINELIB_NAME(InSendMessage) -BOOL16 InsertMenu16(HMENU16,UINT16,UINT16,UINT16,SEGPTR); -BOOL32 InsertMenu32A(HMENU32,UINT32,UINT32,UINT32,LPCSTR); -BOOL32 InsertMenu32W(HMENU32,UINT32,UINT32,UINT32,LPCWSTR); -#define InsertMenu WINELIB_NAME_AW(InsertMenu) -INT16 IntersectClipRect16(HDC16,INT16,INT16,INT16,INT16); -INT32 IntersectClipRect32(HDC32,INT32,INT32,INT32,INT32); -#define IntersectClipRect WINELIB_NAME(IntersectClipRect) -BOOL16 IntersectRect16(LPRECT16,const RECT16*,const RECT16*); -BOOL32 IntersectRect32(LPRECT32,const RECT32*,const RECT32*); -#define IntersectRect WINELIB_NAME(IntersectRect) -void InvalidateRect16(HWND16,const RECT16*,BOOL16); -void InvalidateRect32(HWND32,const RECT32*,BOOL32); -#define InvalidateRect WINELIB_NAME(InvalidateRect) -void InvalidateRgn16(HWND16,HRGN16,BOOL16); -void InvalidateRgn32(HWND32,HRGN32,BOOL32); -#define InvalidateRgn WINELIB_NAME(InvalidateRgn) -void InvertRect16(HDC16,const RECT16*); -void InvertRect32(HDC32,const RECT32*); -#define InvertRect WINELIB_NAME(InvertRect) -BOOL16 InvertRgn16(HDC16,HRGN16); -BOOL32 InvertRgn32(HDC32,HRGN32); -#define InvertRgn WINELIB_NAME(InvertRgn) -BOOL16 IsBadCodePtr16(SEGPTR); -BOOL32 IsBadCodePtr32(FARPROC32); -#define IsBadCodePtr WINELIB_NAME(IsBadCodePtr) -BOOL16 IsBadHugeReadPtr16(SEGPTR,DWORD); -BOOL32 IsBadHugeReadPtr32(LPCVOID,UINT32); -#define IsBadHugeReadPtr WINELIB_NAME(IsBadHugeReadPtr) -BOOL16 IsBadHugeWritePtr16(SEGPTR,DWORD); -BOOL32 IsBadHugeWritePtr32(LPVOID,UINT32); -#define IsBadHugeWritePtr WINELIB_NAME(IsBadHugeWritePtr) -BOOL16 IsBadReadPtr16(SEGPTR,UINT16); -BOOL32 IsBadReadPtr32(LPCVOID,UINT32); -#define IsBadReadPtr WINELIB_NAME(IsBadReadPtr) -BOOL16 IsBadStringPtr16(SEGPTR,UINT16); -BOOL32 IsBadStringPtr32A(LPCSTR,UINT32); -BOOL32 IsBadStringPtr32W(LPCWSTR,UINT32); -#define IsBadStringPtr WINELIB_NAME_AW(IsBadStringPtr) -BOOL16 IsBadWritePtr16(SEGPTR,UINT16); -BOOL32 IsBadWritePtr32(LPVOID,UINT32); -#define IsBadWritePtr WINELIB_NAME(IsBadWritePtr) -BOOL16 IsCharAlpha16(CHAR); -BOOL32 IsCharAlpha32A(CHAR); -BOOL32 IsCharAlpha32W(WCHAR); -#define IsCharAlpha WINELIB_NAME_AW(IsCharAlpha) -BOOL16 IsCharAlphaNumeric16(CHAR); -BOOL32 IsCharAlphaNumeric32A(CHAR); -BOOL32 IsCharAlphaNumeric32W(WCHAR); -#define IsCharAlphaNumeric WINELIB_NAME_AW(IsCharAlphaNumeric) -BOOL16 IsCharLower16(CHAR); -BOOL32 IsCharLower32A(CHAR); -BOOL32 IsCharLower32W(WCHAR); -#define IsCharLower WINELIB_NAME_AW(IsCharLower) -BOOL16 IsCharUpper16(CHAR); -BOOL32 IsCharUpper32A(CHAR); -BOOL32 IsCharUpper32W(WCHAR); -#define IsCharUpper WINELIB_NAME_AW(IsCharUpper) -BOOL16 IsChild16(HWND16,HWND16); -BOOL32 IsChild32(HWND32,HWND32); -#define IsChild WINELIB_NAME(IsChild) -BOOL16 IsClipboardFormatAvailable16(UINT16); -BOOL32 IsClipboardFormatAvailable32(UINT32); -#define IsClipboardFormatAvailable WINELIB_NAME(IsClipboardFormatAvailable) -BOOL16 IsDBCSLeadByte16(BYTE); -BOOL32 IsDBCSLeadByte32(BYTE); -#define IsDBCSLeadByte WINELIB_NAME(IsDBCSLeadByte) -BOOL16 IsDialogMessage16(HWND16,LPMSG16); -BOOL32 IsDialogMessage32A(HWND32,LPMSG32); -BOOL32 IsDialogMessage32W(HWND32,LPMSG32); -#define IsDialogMessage WINELIB_NAME(IsDialogMessage) -UINT16 IsDlgButtonChecked16(HWND16,UINT16); -UINT32 IsDlgButtonChecked32(HWND32,UINT32); -#define IsDlgButtonChecked WINELIB_NAME(IsDlgButtonChecked) -BOOL16 IsIconic16(HWND16); -BOOL32 IsIconic32(HWND32); -#define IsIconic WINELIB_NAME(IsIconic) -BOOL16 IsMenu16(HMENU16); -BOOL32 IsMenu32(HMENU32); -#define IsMenu WINELIB_NAME(IsMenu) -BOOL16 IsRectEmpty16(const RECT16*); -BOOL32 IsRectEmpty32(const RECT32*); -#define IsRectEmpty WINELIB_NAME(IsRectEmpty) -BOOL16 IsWindow16(HWND16); -BOOL32 IsWindow32(HWND32); -#define IsWindow WINELIB_NAME(IsWindow) -BOOL16 IsWindowEnabled16(HWND16); -BOOL32 IsWindowEnabled32(HWND32); -#define IsWindowEnabled WINELIB_NAME(IsWindowEnabled) -BOOL16 IsWindowVisible16(HWND16); -BOOL32 IsWindowVisible32(HWND32); -#define IsWindowVisible WINELIB_NAME(IsWindowVisible) -BOOL16 IsZoomed16(HWND16); -BOOL32 IsZoomed32(HWND32); -#define IsZoomed WINELIB_NAME(IsZoomed) -BOOL16 KillSystemTimer16(HWND16,UINT16); -BOOL32 KillSystemTimer32(HWND32,UINT32); -#define KillSystemTimer WINELIB_NAME(KillSystemTimer) -BOOL16 KillTimer16(HWND16,UINT16); -BOOL32 KillTimer32(HWND32,UINT32); -#define KillTimer WINELIB_NAME(KillTimer) -HFILE16 LZOpenFile16(LPCSTR,LPOFSTRUCT,UINT16); -HFILE32 LZOpenFile32A(LPCSTR,LPOFSTRUCT,UINT32); -HFILE32 LZOpenFile32W(LPCWSTR,LPOFSTRUCT,UINT32); -#define LZOpenFile WINELIB_NAME_AW(LZOpenFile) -INT16 LZRead16(HFILE16,LPVOID,UINT16); -INT32 LZRead32(HFILE32,LPVOID,UINT32); -#define LZRead WINELIB_NAME(LZRead) -INT16 LZStart16(void); -INT32 LZStart32(void); -#define LZStart WINELIB_NAME(LZStart) -VOID LineDDA16(INT16,INT16,INT16,INT16,LINEDDAPROC16,LPARAM); -BOOL32 LineDDA32(INT32,INT32,INT32,INT32,LINEDDAPROC32,LPARAM); -#define LineDDA WINELIB_NAME(LineDDA) -BOOL16 LineTo16(HDC16,INT16,INT16); -BOOL32 LineTo32(HDC32,INT32,INT32); -#define LineTo WINELIB_NAME(LineTo) -HACCEL16 LoadAccelerators16(HINSTANCE16,SEGPTR); -HACCEL32 LoadAccelerators32A(HINSTANCE32,LPCSTR); -HACCEL32 LoadAccelerators32W(HINSTANCE32,LPCWSTR); -#define LoadAccelerators WINELIB_NAME_AW(LoadAccelerators) -HBITMAP16 LoadBitmap16(HANDLE16,SEGPTR); -HBITMAP32 LoadBitmap32A(HANDLE32,LPCSTR); -HBITMAP32 LoadBitmap32W(HANDLE32,LPCWSTR); -#define LoadBitmap WINELIB_NAME(LoadBitmap) -HCURSOR16 LoadCursor16(HINSTANCE16,SEGPTR); -HCURSOR32 LoadCursor32A(HINSTANCE32,LPCSTR); -HCURSOR32 LoadCursor32W(HINSTANCE32,LPCWSTR); -#define LoadCursor WINELIB_NAME_AW(LoadCursor) -HICON16 LoadIcon16(HINSTANCE16,SEGPTR); -HICON32 LoadIcon32A(HINSTANCE32,LPCSTR); -HICON32 LoadIcon32W(HINSTANCE32,LPCWSTR); -#define LoadIcon WINELIB_NAME_AW(LoadIcon) -HINSTANCE16 LoadLibrary16(LPCSTR); -HINSTANCE32 LoadLibrary32A(LPCSTR); -HINSTANCE32 LoadLibrary32W(LPCWSTR); -#define LoadLibrary WINELIB_NAME_AW(LoadLibrary) -HMENU16 LoadMenu16(HINSTANCE16,SEGPTR); -HMENU32 LoadMenu32A(HINSTANCE32,LPCSTR); -HMENU32 LoadMenu32W(HINSTANCE32,LPCWSTR); -#define LoadMenu WINELIB_NAME_AW(LoadMenu) -HMENU16 LoadMenuIndirect16(LPCVOID); -HMENU32 LoadMenuIndirect32A(LPCVOID); -HMENU32 LoadMenuIndirect32W(LPCVOID); -#define LoadMenuIndirect WINELIB_NAME_AW(LoadMenuIndirect) -HINSTANCE16 LoadModule16(LPCSTR,LPVOID); -DWORD LoadModule32(LPCSTR,LPVOID); -#define LoadModule WINELIB_NAME(LoadModule) -HGLOBAL16 LoadResource16(HINSTANCE16,HRSRC16); -HGLOBAL32 LoadResource32(HINSTANCE32,HRSRC32); -#define LoadResource WINELIB_NAME(LoadResource) -INT16 LoadString16(HINSTANCE16,UINT16,LPSTR,INT16); -INT32 LoadString32A(HINSTANCE32,UINT32,LPSTR,INT32); -INT32 LoadString32W(HINSTANCE32,UINT32,LPWSTR,INT32); -#define LoadString WINELIB_NAME_AW(LoadString) -HLOCAL16 LocalAlloc16(UINT16,WORD); -HLOCAL32 LocalAlloc32(UINT32,DWORD); -#define LocalAlloc WINELIB_NAME(LocalAlloc) -UINT16 LocalCompact16(UINT16); -UINT32 LocalCompact32(UINT32); -#define LocalCompact WINELIB_NAME(LocalCompact) -UINT16 LocalFlags16(HLOCAL16); -UINT32 LocalFlags32(HLOCAL32); -#define LocalFlags WINELIB_NAME(LocalFlags) -HLOCAL16 LocalFree16(HLOCAL16); -HLOCAL32 LocalFree32(HLOCAL32); -#define LocalFree WINELIB_NAME(LocalFree) -HLOCAL16 LocalHandle16(WORD); -HLOCAL32 LocalHandle32(LPCVOID); -#define LocalHandle WINELIB_NAME(LocalHandle) -SEGPTR LocalLock16(HLOCAL16); -LPVOID LocalLock32(HLOCAL32); -#define LocalLock WINELIB_NAME(LocalLock) -HLOCAL16 LocalReAlloc16(HLOCAL16,WORD,UINT16); -HLOCAL32 LocalReAlloc32(HLOCAL32,DWORD,UINT32); -#define LocalReAlloc WINELIB_NAME(LocalReAlloc) -UINT16 LocalShrink16(HGLOBAL16,UINT16); -UINT32 LocalShrink32(HGLOBAL32,UINT32); -#define LocalShrink WINELIB_NAME(LocalShrink) -UINT16 LocalSize16(HLOCAL16); -UINT32 LocalSize32(HLOCAL32); -#define LocalSize WINELIB_NAME(LocalSize) -BOOL16 LocalUnlock16(HLOCAL16); -BOOL32 LocalUnlock32(HLOCAL32); -#define LocalUnlock WINELIB_NAME(LocalUnlock) -LPVOID LockResource16(HGLOBAL16); -LPVOID LockResource32(HGLOBAL32); -#define LockResource WINELIB_NAME(LockResource) -HGLOBAL16 LockSegment16(HGLOBAL16); -#define LockSegment32(handle) GlobalFix32((HANDLE32)(handle)) -#define LockSegment WINELIB_NAME(LockSegment) -BOOL16 LockWindowUpdate16(HWND16); -BOOL32 LockWindowUpdate32(HWND32); -#define LockWindowUpdate WINELIB_NAME(LockWindowUpdate) -BOOL16 LPtoDP16(HDC16,LPPOINT16,INT16); -BOOL32 LPtoDP32(HDC32,LPPOINT32,INT32); -#define LPtoDP WINELIB_NAME(LPtoDP) -void LZClose16(HFILE16); -void LZClose32(HFILE32); -#define LZClose WINELIB_NAME(LZClose) -LONG LZCopy16(HFILE16,HFILE16); -LONG LZCopy32(HFILE32,HFILE32); -#define LZCopy WINELIB_NAME(LZCopy) -HFILE16 LZInit16(HFILE16); -HFILE32 LZInit32(HFILE32); -#define LZInit WINELIB_NAME(LZInit) -LONG LZSeek16(HFILE16,LONG,INT16); -LONG LZSeek32(HFILE32,LONG,INT32); -#define LZSeek WINELIB_NAME(LZSeek) -UINT16 MapVirtualKey16(UINT16,UINT16); -UINT32 MapVirtualKey32A(UINT32,UINT32); -UINT32 MapVirtualKey32W(UINT32,UINT32); -#define MapVirtualKey WINELIB_NAME_AW(MapVirtualKey) -FARPROC16 MakeProcInstance16(FARPROC16,HANDLE16); -#define MakeProcInstance32(proc,inst) (proc) -#define MakeProcInstance WINELIB_NAME(MakeProcInstance) -void MapDialogRect16(HWND16,LPRECT16); -void MapDialogRect32(HWND32,LPRECT32); -#define MapDialogRect WINELIB_NAME(MapDialogRect) -void MapWindowPoints16(HWND16,HWND16,LPPOINT16,UINT16); -void MapWindowPoints32(HWND32,HWND32,LPPOINT32,UINT32); -#define MapWindowPoints WINELIB_NAME(MapWindowPoints) -VOID MessageBeep16(UINT16); -BOOL32 MessageBeep32(UINT32); -#define MessageBeep WINELIB_NAME(MessageBeep) -INT16 MessageBox16(HWND16,LPCSTR,LPCSTR,UINT16); -INT32 MessageBox32A(HWND32,LPCSTR,LPCSTR,UINT32); -INT32 MessageBox32W(HWND32,LPCWSTR,LPCWSTR,UINT32); -#define MessageBox WINELIB_NAME_AW(MessageBox) -BOOL16 ModifyMenu16(HMENU16,UINT16,UINT16,UINT16,SEGPTR); -BOOL32 ModifyMenu32A(HMENU32,UINT32,UINT32,UINT32,LPCSTR); -BOOL32 ModifyMenu32W(HMENU32,UINT32,UINT32,UINT32,LPCWSTR); -#define ModifyMenu WINELIB_NAME_AW(ModifyMenu) -BOOL16 MoveToEx16(HDC16,INT16,INT16,LPPOINT16); -BOOL32 MoveToEx32(HDC32,INT32,INT32,LPPOINT32); -#define MoveToEx WINELIB_NAME(MoveToEx) -BOOL16 MoveWindow16(HWND16,INT16,INT16,INT16,INT16,BOOL16); -BOOL32 MoveWindow32(HWND32,INT32,INT32,INT32,INT32,BOOL32); -#define MoveWindow WINELIB_NAME(MoveWindow) -INT16 MulDiv16(INT16,INT16,INT16); -INT32 MulDiv32(INT32,INT32,INT32); -#define MulDiv WINELIB_NAME(MulDiv) -INT16 OemToAnsi16(LPCSTR,LPSTR); -#define OemToAnsi32A OemToChar32A -#define OemToAnsi32W OemToChar32W -#define OemToAnsi WINELIB_NAME_AW(OemToAnsi) -VOID OemToAnsiBuff16(LPCSTR,LPSTR,UINT16); -#define OemToAnsiBuff32A OemToCharBuff32A -#define OemToAnsiBuff32W OemToCharBuff32W -#define OemToAnsiBuff WINELIB_NAME_AW(OemToAnsiBuff) -BOOL32 OemToChar32A(LPCSTR,LPSTR); -BOOL32 OemToChar32W(LPCSTR,LPWSTR); -#define OemToChar WINELIB_NAME_AW(OemToChar) -BOOL32 OemToCharBuff32A(LPCSTR,LPSTR,DWORD); -BOOL32 OemToCharBuff32W(LPCSTR,LPWSTR,DWORD); -#define OemToCharBuff WINELIB_NAME_AW(OemToCharBuff) -INT16 OffsetClipRgn16(HDC16,INT16,INT16); -INT32 OffsetClipRgn32(HDC32,INT32,INT32); -#define OffsetClipRgn WINELIB_NAME(OffsetClipRgn) -void OffsetRect16(LPRECT16,INT16,INT16); -void OffsetRect32(LPRECT32,INT32,INT32); -#define OffsetRect WINELIB_NAME(OffsetRect) -INT16 OffsetRgn16(HRGN16,INT16,INT16); -INT32 OffsetRgn32(HRGN32,INT32,INT32); -#define OffsetRgn WINELIB_NAME(OffsetRgn) -BOOL16 OffsetViewportOrgEx16(HDC16,INT16,INT16,LPPOINT16); -BOOL32 OffsetViewportOrgEx32(HDC32,INT32,INT32,LPPOINT32); -#define OffsetViewportOrgEx WINELIB_NAME(OffsetViewportOrgEx) -BOOL16 OffsetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16); -BOOL32 OffsetWindowOrgEx32(HDC32,INT32,INT32,LPPOINT32); -#define OffsetWindowOrgEx WINELIB_NAME(OffsetWindowOrgEx) -BOOL16 OpenClipboard16(HWND16); -BOOL32 OpenClipboard32(HWND32); -#define OpenClipboard WINELIB_NAME(OpenClipboard) -HFILE16 OpenFile16(LPCSTR,OFSTRUCT*,UINT16); -HFILE32 OpenFile32(LPCSTR,OFSTRUCT*,UINT32); -#define OpenFile WINELIB_NAME(OpenFile) -BOOL16 OpenIcon16(HWND16); -BOOL32 OpenIcon32(HWND32); -#define OpenIcon WINELIB_NAME(OpenIcon) -INT16 OpenSound16(void); -VOID OpenSound32(void); -#define OpenSound WINELIB_NAME(OpenSound) -VOID OutputDebugString16(LPCSTR); -VOID OutputDebugString32A(LPCSTR); -VOID OutputDebugString32W(LPCWSTR); -#define OutputDebugString WINELIB_NAME_AW(OutputDebugString) -BOOL16 PaintRgn16(HDC16,HRGN16); -BOOL32 PaintRgn32(HDC32,HRGN32); -#define PaintRgn WINELIB_NAME(PaintRgn) -BOOL16 PatBlt16(HDC16,INT16,INT16,INT16,INT16,DWORD); -BOOL32 PatBlt32(HDC32,INT32,INT32,INT32,INT32,DWORD); -#define PatBlt WINELIB_NAME(PatBlt) -BOOL16 PeekMessage16(LPMSG16,HWND16,UINT16,UINT16,UINT16); -BOOL32 PeekMessage32A(LPMSG32,HWND32,UINT32,UINT32,UINT32); -BOOL32 PeekMessage32W(LPMSG32,HWND32,UINT32,UINT32,UINT32); -#define PeekMessage WINELIB_NAME_AW(PeekMessage) -BOOL16 Pie16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16); -BOOL32 Pie32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,INT32); -#define Pie WINELIB_NAME(Pie) -BOOL16 PlayMetaFile16(HDC16,HMETAFILE16); -BOOL32 PlayMetaFile32(HDC32,HMETAFILE32); -#define PlayMetaFile WINELIB_NAME(PlayMetaFile) -VOID PlayMetaFileRecord16(HDC16,LPHANDLETABLE16,LPMETARECORD,UINT16); -BOOL32 PlayMetaFileRecord32(HDC32,LPHANDLETABLE32,LPMETARECORD,UINT32); -#define PlayMetaFileRecord WINELIB_NAME(PlayMetaFileRecord) -BOOL16 PolyPolygon16(HDC16,LPPOINT16,LPINT16,UINT16); -BOOL32 PolyPolygon32(HDC32,LPPOINT32,LPINT32,UINT32); -#define PolyPolygon WINELIB_NAME(PolyPolygon) -BOOL16 Polygon16(HDC16,LPPOINT16,INT16); -BOOL32 Polygon32(HDC32,LPPOINT32,INT32); -#define Polygon WINELIB_NAME(Polygon) -BOOL16 Polyline16(HDC16,LPPOINT16,INT16); -BOOL32 Polyline32(HDC32,LPPOINT32,INT32); -#define Polyline WINELIB_NAME(Polyline) -BOOL16 PostAppMessage16(HTASK16,UINT16,WPARAM16,LPARAM); -#define PostAppMessage32A(thread,msg,wparam,lparam) \ - PostThreadMessage32A((DWORD)(thread),msg,wparam,lparam) -#define PostAppMessage32W(thread,msg,wparam,lparam) \ - PostThreadMessage32W((DWORD)(thread),msg,wparam,lparam) -#define PostAppMessage WINELIB_NAME_AW(PostAppMessage) -BOOL16 PostMessage16(HWND16,UINT16,WPARAM16,LPARAM); -BOOL32 PostMessage32A(HWND32,UINT32,WPARAM32,LPARAM); -BOOL32 PostMessage32W(HWND32,UINT32,WPARAM32,LPARAM); -#define PostMessage WINELIB_NAME_AW(PostMessage) -void PostQuitMessage16(INT16); -void PostQuitMessage32(INT32); -#define PostQuitMessage WINELIB_NAME(PostQuitMessage) -BOOL16 PtInRect16(const RECT16*,POINT16); -BOOL32 PtInRect32(const RECT32*,POINT32); -#define PtInRect WINELIB_NAME(PtInRect) -BOOL16 PtInRegion16(HRGN16,INT16,INT16); -BOOL32 PtInRegion32(HRGN32,INT32,INT32); -#define PtInRegion WINELIB_NAME(PtInRegion) -BOOL16 PtVisible16(HDC16,INT16,INT16); -BOOL32 PtVisible32(HDC32,INT32,INT32); -#define PtVisible WINELIB_NAME(PtVisible) -UINT16 RealizePalette16(HDC16); -UINT32 RealizePalette32(HDC32); -#define RealizePalette WINELIB_NAME(RealizePalette) -BOOL16 Rectangle16(HDC16,INT16,INT16,INT16,INT16); -BOOL32 Rectangle32(HDC32,INT32,INT32,INT32,INT32); -#define Rectangle WINELIB_NAME(Rectangle) -BOOL16 RectInRegion16(HRGN16,const RECT16 *); -BOOL32 RectInRegion32(HRGN32,const RECT32 *); -#define RectInRegion WINELIB_NAME(RectInRegion) -BOOL16 RectVisible16(HDC16,LPRECT16); -BOOL32 RectVisible32(HDC32,LPRECT32); -#define RectVisible WINELIB_NAME(RectVisible) -BOOL16 RedrawWindow16(HWND16,const RECT16*,HRGN16,UINT16); -BOOL32 RedrawWindow32(HWND32,const RECT32*,HRGN32,UINT32); -#define RedrawWindow WINELIB_NAME(RedrawWindow) -DWORD RegCreateKey16(HKEY,LPCSTR,LPHKEY); -DWORD RegCreateKey32A(HKEY,LPCSTR,LPHKEY); -DWORD RegCreateKey32W(HKEY,LPCWSTR,LPHKEY); -#define RegCreateKey WINELIB_NAME_AW(RegCreateKey) -DWORD RegDeleteKey16(HKEY,LPCSTR); -DWORD RegDeleteKey32A(HKEY,LPCSTR); -DWORD RegDeleteKey32W(HKEY,LPWSTR); -#define RegDeleteKey WINELIB_NAME_AW(RegDeleteKey) -DWORD RegDeleteValue16(HKEY,LPSTR); -DWORD RegDeleteValue32A(HKEY,LPSTR); -DWORD RegDeleteValue32W(HKEY,LPWSTR); -#define RegDeleteValue WINELIB_NAME_AW(RegDeleteValue) -DWORD RegEnumKey16(HKEY,DWORD,LPSTR,DWORD); -DWORD RegEnumKey32A(HKEY,DWORD,LPSTR,DWORD); -DWORD RegEnumKey32W(HKEY,DWORD,LPWSTR,DWORD); -#define RegEnumKey WINELIB_NAME_AW(RegEnumKey) -DWORD RegEnumValue16(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD); -DWORD RegEnumValue32A(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD); -DWORD RegEnumValue32W(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD); -#define RegEnumValue WINELIB_NAME_AW(RegEnumValue) -ATOM RegisterClass16(const WNDCLASS16*); -ATOM RegisterClass32A(const WNDCLASS32A *); -ATOM RegisterClass32W(const WNDCLASS32W *); -#define RegisterClass WINELIB_NAME_AW(RegisterClass) -ATOM RegisterClassEx16(const WNDCLASSEX16*); -ATOM RegisterClassEx32A(const WNDCLASSEX32A *); -ATOM RegisterClassEx32W(const WNDCLASSEX32W *); -#define RegisterClassEx WINELIB_NAME_AW(RegisterClassEx) -UINT16 RegisterClipboardFormat16(LPCSTR); -UINT32 RegisterClipboardFormat32A(LPCSTR); -UINT32 RegisterClipboardFormat32W(LPCWSTR); -#define RegisterClipboardFormat WINELIB_NAME_AW(RegisterClipboardFormat) -WORD RegisterWindowMessage16(SEGPTR); -WORD RegisterWindowMessage32A(LPCSTR); -WORD RegisterWindowMessage32W(LPCWSTR); -#define RegisterWindowMessage WINELIB_NAME_AW(RegisterWindowMessage) -DWORD RegOpenKey16(HKEY,LPCSTR,LPHKEY); -DWORD RegOpenKey32A(HKEY,LPCSTR,LPHKEY); -DWORD RegOpenKey32W(HKEY,LPCWSTR,LPHKEY); -#define RegOpenKey WINELIB_NAME_AW(RegOpenKey) -DWORD RegQueryValue16(HKEY,LPSTR,LPSTR,LPDWORD); -DWORD RegQueryValue32A(HKEY,LPSTR,LPSTR,LPDWORD); -DWORD RegQueryValue32W(HKEY,LPWSTR,LPWSTR,LPDWORD); -#define RegQueryValue WINELIB_NAME_AW(RegQueryValue) -DWORD RegQueryValueEx16(HKEY,LPSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); -DWORD RegQueryValueEx32A(HKEY,LPSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); -DWORD RegQueryValueEx32W(HKEY,LPWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); -#define RegQueryValueEx WINELIB_NAME_AW(RegQueryValueEx) -DWORD RegSetValue16(HKEY,LPCSTR,DWORD,LPCSTR,DWORD); -DWORD RegSetValue32A(HKEY,LPCSTR,DWORD,LPCSTR,DWORD); -DWORD RegSetValue32W(HKEY,LPCWSTR,DWORD,LPCWSTR,DWORD); -#define RegSetValue WINELIB_NAME_AW(RegSetValue) -DWORD RegSetValueEx16(HKEY,LPSTR,DWORD,DWORD,LPBYTE,DWORD); -DWORD RegSetValueEx32A(HKEY,LPSTR,DWORD,DWORD,LPBYTE,DWORD); -DWORD RegSetValueEx32W(HKEY,LPWSTR,DWORD,DWORD,LPBYTE,DWORD); -#define RegSetValueEx WINELIB_NAME_AW(RegSetValueEx) -INT16 ReleaseDC16(HWND16,HDC16); -INT32 ReleaseDC32(HWND32,HDC32); -#define ReleaseDC WINELIB_NAME(ReleaseDC) -BOOL16 RemoveDirectory16(LPCSTR); -BOOL32 RemoveDirectory32A(LPCSTR); -BOOL32 RemoveDirectory32W(LPCWSTR); -#define RemoveDirectory WINELIB_NAME_AW(RemoveDirectory) -BOOL16 RemoveFontResource16(SEGPTR); -BOOL32 RemoveFontResource32A(LPCSTR); -BOOL32 RemoveFontResource32W(LPCWSTR); -#define RemoveFontResource WINELIB_NAME_AW(RemoveFontResource) -BOOL16 RemoveMenu16(HMENU16,UINT16,UINT16); -BOOL32 RemoveMenu32(HMENU32,UINT32,UINT32); -#define RemoveMenu WINELIB_NAME(RemoveMenu) -HANDLE16 RemoveProp16(HWND16,LPCSTR); -HANDLE32 RemoveProp32A(HWND32,LPCSTR); -HANDLE32 RemoveProp32W(HWND32,LPCWSTR); -#define RemoveProp WINELIB_NAME_AW(RemoveProp) -VOID ReplyMessage16(LRESULT); -BOOL32 ReplyMessage32(LRESULT); -#define ReplyMessage WINELIB_NAME(ReplyMessage) -HDC16 ResetDC16(HDC16,const DEVMODE16 *); -HDC32 ResetDC32A(HDC32,const DEVMODE32A *); -HDC32 ResetDC32W(HDC32,const DEVMODE32W *); -#define ResetDC WINELIB_NAME_AW(ResetDC) -BOOL16 ResizePalette16(HPALETTE16,UINT16); -BOOL32 ResizePalette32(HPALETTE32,UINT32); -#define ResizePalette WINELIB_NAME(ResizePalette) -BOOL16 RestoreDC16(HDC16,INT16); -BOOL32 RestoreDC32(HDC32,INT32); -#define RestoreDC WINELIB_NAME(RestoreDC) -BOOL16 RoundRect16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16); -BOOL32 RoundRect32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32); -#define RoundRect WINELIB_NAME(RoundRect) -INT16 SaveDC16(HDC16); -INT32 SaveDC32(HDC32); -#define SaveDC WINELIB_NAME(SaveDC) -BOOL16 ScaleViewportExtEx16(HDC16,INT16,INT16,INT16,INT16,LPSIZE16); -BOOL32 ScaleViewportExtEx32(HDC32,INT32,INT32,INT32,INT32,LPSIZE32); -#define ScaleViewportExtEx WINELIB_NAME(ScaleViewportExtEx) -BOOL16 ScaleWindowExtEx16(HDC16,INT16,INT16,INT16,INT16,LPSIZE16); -BOOL32 ScaleWindowExtEx32(HDC32,INT32,INT32,INT32,INT32,LPSIZE32); -#define ScaleWindowExtEx WINELIB_NAME(ScaleWindowExtEx) -void ScreenToClient16(HWND16,LPPOINT16); -void ScreenToClient32(HWND32,LPPOINT32); -#define ScreenToClient WINELIB_NAME(ScreenToClient) -VOID ScrollChildren16(HWND16,UINT16,WPARAM16,LPARAM); -VOID ScrollChildren32(HWND32,UINT32,WPARAM32,LPARAM); -#define ScrollChildren WINELIB_NAME(ScrollChildren) -BOOL16 ScrollDC16(HDC16,INT16,INT16,const RECT16*,const RECT16*, +#define CreateDialogIndirect WINELIB_NAME_AW(CreateDialogIndirect) +HWND16 WINAPI CreateDialogIndirectParam16(HINSTANCE16,LPCVOID,HWND16, + DLGPROC16,LPARAM); +HWND32 WINAPI CreateDialogIndirectParam32A(HINSTANCE32,LPCVOID,HWND32, + DLGPROC32,LPARAM); +HWND32 WINAPI CreateDialogIndirectParam32W(HINSTANCE32,LPCVOID,HWND32, + DLGPROC32,LPARAM); +#define CreateDialogIndirectParam WINELIB_NAME_AW(CreateDialogIndirectParam) +HWND16 WINAPI CreateDialogParam16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16,LPARAM); +HWND32 WINAPI CreateDialogParam32A(HINSTANCE32,LPCSTR,HWND32,DLGPROC32,LPARAM); +HWND32 WINAPI CreateDialogParam32W(HINSTANCE32,LPCWSTR,HWND32,DLGPROC32,LPARAM); +#define CreateDialogParam WINELIB_NAME_AW(CreateDialogParam) +HBITMAP16 WINAPI CreateDIBitmap16(HDC16,const BITMAPINFOHEADER*,DWORD, + LPCVOID,const BITMAPINFO*,UINT16); +HBITMAP32 WINAPI CreateDIBitmap32(HDC32,const BITMAPINFOHEADER*,DWORD, + LPCVOID,const BITMAPINFO*,UINT32); +#define CreateDIBitmap WINELIB_NAME(CreateDIBitmap) +HBRUSH16 WINAPI CreateDIBPatternBrush16(HGLOBAL16,UINT16); +HBRUSH32 WINAPI CreateDIBPatternBrush32(HGLOBAL32,UINT32); +#define CreateDIBPatternBrush WINELIB_NAME(CreateDIBPatternBrush) +BOOL16 WINAPI CreateDirectory16(LPCSTR,LPVOID); +BOOL32 WINAPI CreateDirectory32A(LPCSTR,LPSECURITY_ATTRIBUTES); +BOOL32 WINAPI CreateDirectory32W(LPCWSTR,LPSECURITY_ATTRIBUTES); +#define CreateDirectory WINELIB_NAME_AW(CreateDirectory) +BOOL32 WINAPI CreateDirectoryEx32A(LPCSTR,LPCSTR,LPSECURITY_ATTRIBUTES); +BOOL32 WINAPI CreateDirectoryEx32W(LPCWSTR,LPCWSTR,LPSECURITY_ATTRIBUTES); +#define CreateDirectoryEx WINELIB_NAME_AW(CreateDirectoryEx) +HBITMAP16 WINAPI CreateDiscardableBitmap16(HDC16,INT16,INT16); +HBITMAP32 WINAPI CreateDiscardableBitmap32(HDC32,INT32,INT32); +#define CreateDiscardableBitmap WINELIB_NAME(CreateDiscardableBitmap) +HRGN16 WINAPI CreateEllipticRgn16(INT16,INT16,INT16,INT16); +HRGN32 WINAPI CreateEllipticRgn32(INT32,INT32,INT32,INT32); +#define CreateEllipticRgn WINELIB_NAME(CreateEllipticRgn) +HRGN16 WINAPI CreateEllipticRgnIndirect16(const RECT16 *); +HRGN32 WINAPI CreateEllipticRgnIndirect32(const RECT32 *); +#define CreateEllipticRgnIndirect WINELIB_NAME(CreateEllipticRgnIndirect) +HFONT16 WINAPI CreateFont16(INT16,INT16,INT16,INT16,INT16,BYTE,BYTE,BYTE, + BYTE,BYTE,BYTE,BYTE,BYTE,LPCSTR); +HFONT32 WINAPI CreateFont32A(INT32,INT32,INT32,INT32,INT32,DWORD,DWORD, + DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCSTR); +HFONT32 WINAPI CreateFont32W(INT32,INT32,INT32,INT32,INT32,DWORD,DWORD, + DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,LPCWSTR); +#define CreateFont WINELIB_NAME_AW(CreateFont) +HFONT16 WINAPI CreateFontIndirect16(const LOGFONT16*); +HFONT32 WINAPI CreateFontIndirect32A(const LOGFONT32A*); +HFONT32 WINAPI CreateFontIndirect32W(const LOGFONT32W*); +#define CreateFontIndirect WINELIB_NAME_AW(CreateFontIndirect) +HBRUSH16 WINAPI CreateHatchBrush16(INT16,COLORREF); +HBRUSH32 WINAPI CreateHatchBrush32(INT32,COLORREF); +#define CreateHatchBrush WINELIB_NAME(CreateHatchBrush) +HDC16 WINAPI CreateIC16(LPCSTR,LPCSTR,LPCSTR,const DEVMODE16*); +HDC32 WINAPI CreateIC32A(LPCSTR,LPCSTR,LPCSTR,const DEVMODE32A*); +HDC32 WINAPI CreateIC32W(LPCWSTR,LPCWSTR,LPCWSTR,const DEVMODE32W*); +#define CreateIC WINELIB_NAME_AW(CreateIC) +HICON16 WINAPI CreateIcon16(HINSTANCE16,INT16,INT16,BYTE,BYTE,LPCVOID,LPCVOID); +HICON32 WINAPI CreateIcon32(HINSTANCE32,INT32,INT32,BYTE,BYTE,LPCVOID,LPCVOID); +#define CreateIcon WINELIB_NAME(CreateIcon) +HMENU16 WINAPI CreateMenu16(void); +HMENU32 WINAPI CreateMenu32(void); +#define CreateMenu WINELIB_NAME(CreateMenu) +HDC16 WINAPI CreateMetaFile16(LPCSTR); +HDC32 WINAPI CreateMetaFile32A(LPCSTR); +HDC32 WINAPI CreateMetaFile32W(LPCWSTR); +#define CreateMetaFile WINELIB_NAME_AW(CreateMetaFile) +HPALETTE16 WINAPI CreatePalette16(const LOGPALETTE*); +HPALETTE32 WINAPI CreatePalette32(const LOGPALETTE*); +#define CreatePalette WINELIB_NAME(CreatePalette) +HBRUSH16 WINAPI CreatePatternBrush16(HBITMAP16); +HBRUSH32 WINAPI CreatePatternBrush32(HBITMAP32); +#define CreatePatternBrush WINELIB_NAME(CreatePatternBrush) +HPEN16 WINAPI CreatePen16(INT16,INT16,COLORREF); +HPEN32 WINAPI CreatePen32(INT32,INT32,COLORREF); +#define CreatePen WINELIB_NAME(CreatePen) +HPEN16 WINAPI CreatePenIndirect16(const LOGPEN16*); +HPEN32 WINAPI CreatePenIndirect32(const LOGPEN32*); +#define CreatePenIndirect WINELIB_NAME(CreatePenIndirect) +HRGN16 WINAPI CreatePolyPolygonRgn16(const POINT16*,const INT16*,INT16,INT16); +HRGN32 WINAPI CreatePolyPolygonRgn32(const POINT32*,const INT32*,INT32,INT32); +#define CreatePolyPolygonRgn WINELIB_NAME(CreatePolyPolygonRgn) +HRGN16 WINAPI CreatePolygonRgn16(const POINT16*,INT16,INT16); +HRGN32 WINAPI CreatePolygonRgn32(const POINT32*,INT32,INT32); +#define CreatePolygonRgn WINELIB_NAME(CreatePolygonRgn) +HMENU16 WINAPI CreatePopupMenu16(void); +HMENU32 WINAPI CreatePopupMenu32(void); +#define CreatePopupMenu WINELIB_NAME(CreatePopupMenu) +HRGN16 WINAPI CreateRectRgn16(INT16,INT16,INT16,INT16); +HRGN32 WINAPI CreateRectRgn32(INT32,INT32,INT32,INT32); +#define CreateRectRgn WINELIB_NAME(CreateRectRgn) +HRGN16 WINAPI CreateRectRgnIndirect16(const RECT16*); +HRGN32 WINAPI CreateRectRgnIndirect32(const RECT32*); +#define CreateRectRgnIndirect WINELIB_NAME(CreateRectRgnIndirect) +HRGN16 WINAPI CreateRoundRectRgn16(INT16,INT16,INT16,INT16,INT16,INT16); +HRGN32 WINAPI CreateRoundRectRgn32(INT32,INT32,INT32,INT32,INT32,INT32); +#define CreateRoundRectRgn WINELIB_NAME(CreateRoundRectRgn) +BOOL16 WINAPI CreateScalableFontResource16(UINT16,LPCSTR,LPCSTR,LPCSTR); +BOOL32 WINAPI CreateScalableFontResource32A(DWORD,LPCSTR,LPCSTR,LPCSTR); +BOOL32 WINAPI CreateScalableFontResource32W(DWORD,LPCWSTR,LPCWSTR,LPCWSTR); +#define CreateScalableFontResource WINELIB_NAME_AW(CreateScalableFontResource) +HBRUSH16 WINAPI CreateSolidBrush16(COLORREF); +HBRUSH32 WINAPI CreateSolidBrush32(COLORREF); +#define CreateSolidBrush WINELIB_NAME(CreateSolidBrush) +HWND16 WINAPI CreateWindow16(LPCSTR,LPCSTR,DWORD,INT16,INT16,INT16,INT16, + HWND16,HMENU16,HINSTANCE16,LPVOID); +#define CreateWindow32A(className,titleName,style,x,y,width,height,\ + parent,menu,instance,param) \ + CreateWindowEx32A(0,className,titleName,style,x,y,width,height,\ + parent,menu,instance,param) +#define CreateWindow32W(className,titleName,style,x,y,width,height,\ + parent,menu,instance,param) \ + CreateWindowEx32W(0,className,titleName,style,x,y,width,height,\ + parent,menu,instance,param) +#define CreateWindow WINELIB_NAME_AW(CreateWindow) +HWND16 WINAPI CreateWindowEx16(DWORD,LPCSTR,LPCSTR,DWORD,INT16,INT16, + INT16,INT16,HWND16,HMENU16,HINSTANCE16,LPVOID); +HWND32 WINAPI CreateWindowEx32A(DWORD,LPCSTR,LPCSTR,DWORD,INT32,INT32, + INT32,INT32,HWND32,HMENU32,HINSTANCE32,LPVOID); +HWND32 WINAPI CreateWindowEx32W(DWORD,LPCWSTR,LPCWSTR,DWORD,INT32,INT32, + INT32,INT32,HWND32,HMENU32,HINSTANCE32,LPVOID); +#define CreateWindowEx WINELIB_NAME_AW(CreateWindowEx) +LRESULT WINAPI DefDlgProc16(HWND16,UINT16,WPARAM16,LPARAM); +LRESULT WINAPI DefDlgProc32A(HWND32,UINT32,WPARAM32,LPARAM); +LRESULT WINAPI DefDlgProc32W(HWND32,UINT32,WPARAM32,LPARAM); +#define DefDlgProc WINELIB_NAME_AW(DefDlgProc) +HDWP16 WINAPI DeferWindowPos16(HDWP16,HWND16,HWND16,INT16,INT16,INT16,INT16,UINT16); +HDWP32 WINAPI DeferWindowPos32(HDWP32,HWND32,HWND32,INT32,INT32,INT32,INT32,UINT32); +#define DeferWindowPos WINELIB_NAME(DeferWindowPos) +LRESULT WINAPI DefFrameProc16(HWND16,HWND16,UINT16,WPARAM16,LPARAM); +LRESULT WINAPI DefFrameProc32A(HWND32,HWND32,UINT32,WPARAM32,LPARAM); +LRESULT WINAPI DefFrameProc32W(HWND32,HWND32,UINT32,WPARAM32,LPARAM); +#define DefFrameProc WINELIB_NAME_AW(DefFrameProc) +LRESULT WINAPI DefHookProc16(INT16,WPARAM16,LPARAM,HHOOK*); +#define DefHookProc32(code,wparam,lparam,phhook) \ + CallNextHookEx32(*(phhook),code,wparam,lparam) +#define DefHookProc WINELIB_NAME(DefHookProc) +LRESULT WINAPI DefMDIChildProc16(HWND16,UINT16,WPARAM16,LPARAM); +LRESULT WINAPI DefMDIChildProc32A(HWND32,UINT32,WPARAM32,LPARAM); +LRESULT WINAPI DefMDIChildProc32W(HWND32,UINT32,WPARAM32,LPARAM); +#define DefMDIChildProc WINELIB_NAME_AW(DefMDIChildProc) +LRESULT WINAPI DefWindowProc16(HWND16,UINT16,WPARAM16,LPARAM); +LRESULT WINAPI DefWindowProc32A(HWND32,UINT32,WPARAM32,LPARAM); +LRESULT WINAPI DefWindowProc32W(HWND32,UINT32,WPARAM32,LPARAM); +#define DefWindowProc WINELIB_NAME_AW(DefWindowProc) +ATOM WINAPI DeleteAtom16(ATOM); +ATOM WINAPI DeleteAtom32(ATOM); +#define DeleteAtom WINELIB_NAME(DeleteAtom) +BOOL16 WINAPI DeleteDC16(HDC16); +BOOL32 WINAPI DeleteDC32(HDC32); +#define DeleteDC WINELIB_NAME(DeleteDC) +BOOL16 WINAPI DeleteFile16(LPCSTR); +BOOL32 WINAPI DeleteFile32A(LPCSTR); +BOOL32 WINAPI DeleteFile32W(LPCWSTR); +#define DeleteFile WINELIB_NAME_AW(DeleteFile) +BOOL16 WINAPI DeleteMenu16(HMENU16,UINT16,UINT16); +BOOL32 WINAPI DeleteMenu32(HMENU32,UINT32,UINT32); +#define DeleteMenu WINELIB_NAME(DeleteMenu) +BOOL16 WINAPI DeleteMetaFile16(HMETAFILE16); +BOOL32 WINAPI DeleteMetaFile32(HMETAFILE32); +#define DeleteMetaFile WINELIB_NAME(DeleteMetaFile) +BOOL16 WINAPI DeleteObject16(HGDIOBJ16); +BOOL32 WINAPI DeleteObject32(HGDIOBJ32); +#define DeleteObject WINELIB_NAME(DeleteObject) +VOID WINAPI DestroyCaret16(void); +BOOL32 WINAPI DestroyCaret32(void); +#define DestroyCaret WINELIB_NAME(DestroyCaret) +BOOL16 WINAPI DestroyCursor16(HCURSOR16); +BOOL32 WINAPI DestroyCursor32(HCURSOR32); +#define DestroyCursor WINELIB_NAME(DestroyCursor) +BOOL16 WINAPI DestroyIcon16(HICON16); +BOOL32 WINAPI DestroyIcon32(HICON32); +#define DestroyIcon WINELIB_NAME(DestroyIcon) +BOOL16 WINAPI DestroyMenu16(HMENU16); +BOOL32 WINAPI DestroyMenu32(HMENU32); +#define DestroyMenu WINELIB_NAME(DestroyMenu) +BOOL16 WINAPI DestroyWindow16(HWND16); +BOOL32 WINAPI DestroyWindow32(HWND32); +#define DestroyWindow WINELIB_NAME(DestroyWindow) +INT16 WINAPI DialogBox16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16); +#define DialogBox32A(inst,template,owner,func) \ + DialogBoxParam32A(inst,template,owner,func,0) +#define DialogBox32W(inst,template,owner,func) \ + DialogBoxParam32W(inst,template,owner,func,0) +#define DialogBox WINELIB_NAME_AW(DialogBox) +INT16 WINAPI DialogBoxIndirect16(HINSTANCE16,HANDLE16,HWND16,DLGPROC16); +#define DialogBoxIndirect32A(inst,template,owner,func) \ + DialogBoxIndirectParam32A(inst,template,owner,func,0) +#define DialogBoxIndirect32W(inst,template,owner,func) \ + DialogBoxIndirectParam32W(inst,template,owner,func,0) +#define DialogBoxIndirect WINELIB_NAME_AW(DialogBoxIndirect) +INT16 WINAPI DialogBoxIndirectParam16(HINSTANCE16,HANDLE16,HWND16,DLGPROC16,LPARAM); +INT32 WINAPI DialogBoxIndirectParam32A(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM); +INT32 WINAPI DialogBoxIndirectParam32W(HINSTANCE32,LPCVOID,HWND32,DLGPROC32,LPARAM); +#define DialogBoxIndirectParam WINELIB_NAME_AW(DialogBoxIndirectParam) +INT16 WINAPI DialogBoxParam16(HINSTANCE16,SEGPTR,HWND16,DLGPROC16,LPARAM); +INT32 WINAPI DialogBoxParam32A(HINSTANCE32,LPCSTR,HWND32,DLGPROC32,LPARAM); +INT32 WINAPI DialogBoxParam32W(HINSTANCE32,LPCWSTR,HWND32,DLGPROC32,LPARAM); +#define DialogBoxParam WINELIB_NAME_AW(DialogBoxParam) +LONG WINAPI DispatchMessage16(const MSG16*); +LONG WINAPI DispatchMessage32A(const MSG32*); +LONG WINAPI DispatchMessage32W(const MSG32*); +#define DispatchMessage WINELIB_NAME_AW(DispatchMessage) +INT16 WINAPI DlgDirList16(HWND16,LPSTR,INT16,INT16,UINT16); +INT32 WINAPI DlgDirList32A(HWND32,LPSTR,INT32,INT32,UINT32); +INT32 WINAPI DlgDirList32W(HWND32,LPWSTR,INT32,INT32,UINT32); +#define DlgDirList WINELIB_NAME_AW(DlgDirList) +INT16 WINAPI DlgDirListComboBox16(HWND16,LPSTR,INT16,INT16,UINT16); +INT32 WINAPI DlgDirListComboBox32A(HWND32,LPSTR,INT32,INT32,UINT32); +INT32 WINAPI DlgDirListComboBox32W(HWND32,LPWSTR,INT32,INT32,UINT32); +#define DlgDirListComboBox WINELIB_NAME_AW(DlgDirListComboBox) +BOOL16 WINAPI DlgDirSelectComboBoxEx16(HWND16,LPSTR,INT16,INT16); +BOOL32 WINAPI DlgDirSelectComboBoxEx32A(HWND32,LPSTR,INT32,INT32); +BOOL32 WINAPI DlgDirSelectComboBoxEx32W(HWND32,LPWSTR,INT32,INT32); +#define DlgDirSelectComboBoxEx WINELIB_NAME_AW(DlgDirSelectComboBoxEx) +BOOL16 WINAPI DlgDirSelectEx16(HWND16,LPSTR,INT16,INT16); +BOOL32 WINAPI DlgDirSelectEx32A(HWND32,LPSTR,INT32,INT32); +BOOL32 WINAPI DlgDirSelectEx32W(HWND32,LPWSTR,INT32,INT32); +#define DlgDirSelectEx WINELIB_NAME_AW(DlgDirSelectEx) +BOOL16 WINAPI DPtoLP16(HDC16,LPPOINT16,INT16); +BOOL32 WINAPI DPtoLP32(HDC32,LPPOINT32,INT32); +#define DPtoLP WINELIB_NAME(DPtoLP) +BOOL16 WINAPI DragDetect16(HWND16,POINT16); +BOOL32 WINAPI DragDetect32(HWND32,POINT32); +#define DragDetect WINELIB_NAME(DragDetect) +DWORD WINAPI DragObject16(HWND16,HWND16,UINT16,HANDLE16,WORD,HCURSOR16); +DWORD WINAPI DragObject32(HWND32,HWND32,UINT32,DWORD,HCURSOR32); +#define DragObject WINELIB_NAME(DragObject) +BOOL16 WINAPI DrawEdge16(HDC16,LPRECT16,UINT16,UINT16); +BOOL32 WINAPI DrawEdge32(HDC32,LPRECT32,UINT32,UINT32); +#define DrawEdge WINELIB_NAME(DrawEdge) +void WINAPI DrawFocusRect16(HDC16,const RECT16*); +void WINAPI DrawFocusRect32(HDC32,const RECT32*); +#define DrawFocusRect WINELIB_NAME(DrawFocusRect) +BOOL16 WINAPI DrawFrameControl16(HDC16,LPRECT16,UINT16,UINT16); +BOOL32 WINAPI DrawFrameControl32(HDC32,LPRECT32,UINT32,UINT32); +#define DrawFrameControl WINELIB_NAME(DrawFrameControl) +BOOL16 WINAPI DrawIcon16(HDC16,INT16,INT16,HICON16); +BOOL32 WINAPI DrawIcon32(HDC32,INT32,INT32,HICON32); +#define DrawIcon WINELIB_NAME(DrawIcon) +VOID WINAPI DrawMenuBar16(HWND16); +BOOL32 WINAPI DrawMenuBar32(HWND32); +#define DrawMenuBar WINELIB_NAME(DrawMenuBar) +INT16 WINAPI DrawText16(HDC16,LPCSTR,INT16,LPRECT16,UINT16); +INT32 WINAPI DrawText32A(HDC32,LPCSTR,INT32,LPRECT32,UINT32); +INT32 WINAPI DrawText32W(HDC32,LPCWSTR,INT32,LPRECT32,UINT32); +#define DrawText WINELIB_NAME_AW(DrawText) +BOOL16 WINAPI Ellipse16(HDC16,INT16,INT16,INT16,INT16); +BOOL32 WINAPI Ellipse32(HDC32,INT32,INT32,INT32,INT32); +#define Ellipse WINELIB_NAME(Ellipse) +BOOL16 WINAPI EmptyClipboard16(void); +BOOL32 WINAPI EmptyClipboard32(void); +#define EmptyClipboard WINELIB_NAME(EmptyClipboard) +BOOL16 WINAPI EnableMenuItem16(HMENU16,UINT16,UINT16); +BOOL32 WINAPI EnableMenuItem32(HMENU32,UINT32,UINT32); +#define EnableMenuItem WINELIB_NAME(EnableMenuItem) +BOOL16 WINAPI EnableScrollBar16(HWND16,INT16,UINT16); +BOOL32 WINAPI EnableScrollBar32(HWND32,INT32,UINT32); +#define EnableScrollBar WINELIB_NAME(EnableScrollBar) +BOOL16 WINAPI EnableWindow16(HWND16,BOOL16); +BOOL32 WINAPI EnableWindow32(HWND32,BOOL32); +#define EnableWindow WINELIB_NAME(EnableWindow) +BOOL16 WINAPI EndDeferWindowPos16(HDWP16); +BOOL32 WINAPI EndDeferWindowPos32(HDWP32); +#define EndDeferWindowPos WINELIB_NAME(EndDeferWindowPos) +BOOL16 WINAPI EndDialog16(HWND16,INT16); +BOOL32 WINAPI EndDialog32(HWND32,INT32); +#define EndDialog WINELIB_NAME(EndDialog) +INT16 WINAPI EndDoc16(HDC16); +INT32 WINAPI EndDoc32(HDC32); +#define EndDoc WINELIB_NAME(EndDoc) +BOOL16 WINAPI EndPaint16(HWND16,const PAINTSTRUCT16*); +BOOL32 WINAPI EndPaint32(HWND32,const PAINTSTRUCT32*); +#define EndPaint WINELIB_NAME(EndPaint) +BOOL16 WINAPI EnumChildWindows16(HWND16,WNDENUMPROC16,LPARAM); +BOOL32 WINAPI EnumChildWindows32(HWND32,WNDENUMPROC32,LPARAM); +#define EnumChildWindows WINELIB_NAME(EnumChildWindows) +UINT16 WINAPI EnumClipboardFormats16(UINT16); +UINT32 WINAPI EnumClipboardFormats32(UINT32); +#define EnumClipboardFormats WINELIB_NAME(EnumClipboardFormats) +INT16 WINAPI EnumFontFamilies16(HDC16,LPCSTR,FONTENUMPROC16,LPARAM); +INT32 WINAPI EnumFontFamilies32A(HDC32,LPCSTR,FONTENUMPROC32A,LPARAM); +INT32 WINAPI EnumFontFamilies32W(HDC32,LPCWSTR,FONTENUMPROC32W,LPARAM); +#define EnumFontFamilies WINELIB_NAME_AW(EnumFontFamilies) +INT16 WINAPI EnumFontFamiliesEx16(HDC16,LPLOGFONT16,FONTENUMPROCEX16,LPARAM,DWORD); +INT32 WINAPI EnumFontFamiliesEx32A(HDC32,LPLOGFONT32A,FONTENUMPROCEX32A,LPARAM,DWORD); +INT32 WINAPI EnumFontFamiliesEx32W(HDC32,LPLOGFONT32W,FONTENUMPROCEX32W,LPARAM,DWORD); +#define EnumFontFamiliesEx WINELIB_NAME_AW(EnumFontFamiliesEx) +INT16 WINAPI EnumFonts16(HDC16,LPCSTR,FONTENUMPROC16,LPARAM); +INT32 WINAPI EnumFonts32A(HDC32,LPCSTR,FONTENUMPROC32A,LPARAM); +INT32 WINAPI EnumFonts32W(HDC32,LPCWSTR,FONTENUMPROC32W,LPARAM); +#define EnumFonts WINELIB_NAME_AW(EnumFonts) +BOOL16 WINAPI EnumMetaFile16(HDC16,HMETAFILE16,MFENUMPROC16,LPARAM); +BOOL32 WINAPI EnumMetaFile32(HDC32,HMETAFILE32,MFENUMPROC32,LPARAM); +#define EnumMetaFile WINELIB_NAME(EnumMetaFile) +INT16 WINAPI EnumObjects16(HDC16,INT16,GOBJENUMPROC16,LPARAM); +INT32 WINAPI EnumObjects32(HDC32,INT32,GOBJENUMPROC32,LPARAM); +#define EnumObjects WINELIB_NAME(EnumObjects) +INT16 WINAPI EnumProps16(HWND16,PROPENUMPROC16); +INT32 WINAPI EnumProps32A(HWND32,PROPENUMPROC32A); +INT32 WINAPI EnumProps32W(HWND32,PROPENUMPROC32W); +#define EnumProps WINELIB_NAME_AW(EnumProps) +BOOL16 WINAPI EnumTaskWindows16(HTASK16,WNDENUMPROC16,LPARAM); +#define EnumTaskWindows32(handle,proc,lparam) \ + EnumThreadWindows(handle,proc,lparam) +#define EnumTaskWindows WINELIB_NAME(EnumTaskWindows) +BOOL16 WINAPI EnumWindows16(WNDENUMPROC16,LPARAM); +BOOL32 WINAPI EnumWindows32(WNDENUMPROC32,LPARAM); +#define EnumWindows WINELIB_NAME(EnumWindows) +BOOL16 WINAPI EqualRect16(const RECT16*,const RECT16*); +BOOL32 WINAPI EqualRect32(const RECT32*,const RECT32*); +#define EqualRect WINELIB_NAME(EqualRect) +BOOL16 WINAPI EqualRgn16(HRGN16,HRGN16); +BOOL32 WINAPI EqualRgn32(HRGN32,HRGN32); +#define EqualRgn WINELIB_NAME(EqualRgn) +INT16 WINAPI Escape16(HDC16,INT16,INT16,SEGPTR,SEGPTR); +INT32 WINAPI Escape32(HDC32,INT32,INT32,LPVOID,LPVOID); +#define Escape WINELIB_NAME(Escape) +LONG WINAPI EscapeCommFunction16(UINT16,UINT16); +BOOL32 WINAPI EscapeCommFunction32(INT32,UINT32); +#define EscapeCommFunction WINELIB_NAME(EscapeCommFunction) +INT16 WINAPI ExcludeClipRect16(HDC16,INT16,INT16,INT16,INT16); +INT32 WINAPI ExcludeClipRect32(HDC32,INT32,INT32,INT32,INT32); +#define ExcludeClipRect WINELIB_NAME(ExcludeClipRect) +INT16 WINAPI ExcludeUpdateRgn16(HDC16,HWND16); +INT32 WINAPI ExcludeUpdateRgn32(HDC32,HWND32); +#define ExcludeUpdateRgn WINELIB_NAME(ExcludeUpdateRgn) +BOOL16 WINAPI ExitWindows16(DWORD,UINT16); +#define ExitWindows32(a,b) ExitWindowsEx(EWX_LOGOFF,0xffffffff) +#define ExitWindows WINELIB_NAME(ExitWindows) +BOOL16 WINAPI ExtFloodFill16(HDC16,INT16,INT16,COLORREF,UINT16); +BOOL32 WINAPI ExtFloodFill32(HDC32,INT32,INT32,COLORREF,UINT32); +#define ExtFloodFill WINELIB_NAME(ExtFloodFill) +HICON16 WINAPI ExtractIcon16(HINSTANCE16,LPCSTR,UINT16); +HICON32 WINAPI ExtractIcon32A(HINSTANCE32,LPCSTR,UINT32); +HICON32 WINAPI ExtractIcon32W(HINSTANCE32,LPCWSTR,UINT32); +#define ExtractIcon WINELIB_NAME_AW(ExtractIcon) +BOOL16 WINAPI ExtTextOut16(HDC16,INT16,INT16,UINT16,const RECT16*, + LPCSTR,UINT16,const INT16*); +BOOL32 WINAPI ExtTextOut32A(HDC32,INT32,INT32,UINT32,const RECT32*, + LPCSTR,UINT32,const INT32*); +BOOL32 WINAPI ExtTextOut32W(HDC32,INT32,INT32,UINT32,const RECT32*, + LPCWSTR,UINT32,const INT32*); +#define ExtTextOut WINELIB_NAME_AW(ExtTextOut) +void WINAPI FatalAppExit16(UINT16,LPCSTR); +void WINAPI FatalAppExit32A(UINT32,LPCSTR); +void WINAPI FatalAppExit32W(UINT32,LPCWSTR); +#define FatalAppExit WINELIB_NAME_AW(FatalAppExit) +INT16 WINAPI FillRect16(HDC16,const RECT16*,HBRUSH16); +INT32 WINAPI FillRect32(HDC32,const RECT32*,HBRUSH32); +#define FillRect WINELIB_NAME(FillRect) +BOOL16 WINAPI FillRgn16(HDC16,HRGN16,HBRUSH16); +BOOL32 WINAPI FillRgn32(HDC32,HRGN32,HBRUSH32); +#define FillRgn WINELIB_NAME(FillRgn) +ATOM WINAPI FindAtom16(SEGPTR); +ATOM WINAPI FindAtom32A(LPCSTR); +ATOM WINAPI FindAtom32W(LPCWSTR); +#define FindAtom WINELIB_NAME_AW(FindAtom) +BOOL16 WINAPI FindClose16(HANDLE16); +BOOL32 WINAPI FindClose32(HANDLE32); +#define FindClose WINELIB_NAME(FindClose) +HINSTANCE16 WINAPI FindExecutable16(LPCSTR,LPCSTR,LPSTR); +HINSTANCE32 WINAPI FindExecutable32A(LPCSTR,LPCSTR,LPSTR); +HINSTANCE32 WINAPI FindExecutable32W(LPCWSTR,LPCWSTR,LPWSTR); +#define FindExecutable WINELIB_NAME_AW(FindExecutable) +HANDLE16 WINAPI FindFirstFile16(LPCSTR,LPWIN32_FIND_DATA32A); +HANDLE32 WINAPI FindFirstFile32A(LPCSTR,LPWIN32_FIND_DATA32A); +HANDLE32 WINAPI FindFirstFile32W(LPCWSTR,LPWIN32_FIND_DATA32W); +#define FindFirst WINELIB_NAME_AW(FindFirst) +BOOL16 WINAPI FindNextFile16(HANDLE16,LPWIN32_FIND_DATA32A); +BOOL32 WINAPI FindNextFile32A(HANDLE32,LPWIN32_FIND_DATA32A); +BOOL32 WINAPI FindNextFile32W(HANDLE32,LPWIN32_FIND_DATA32W); +#define FindNext WINELIB_NAME_AW(FindNext) +HRSRC16 WINAPI FindResource16(HINSTANCE16,SEGPTR,SEGPTR); +HRSRC32 WINAPI FindResource32A(HINSTANCE32,LPCSTR,LPCSTR); +HRSRC32 WINAPI FindResource32W(HINSTANCE32,LPCWSTR,LPCWSTR); +#define FindResource WINELIB_NAME_AW(FindResource) +HWND16 WINAPI FindWindow16(SEGPTR,LPCSTR); +HWND32 WINAPI FindWindow32A(LPCSTR,LPCSTR); +HWND32 WINAPI FindWindow32W(LPCWSTR,LPCWSTR); +#define FindWindow WINELIB_NAME_AW(FindWindow) +HWND16 WINAPI FindWindowEx16(HWND16,HWND16,SEGPTR,LPCSTR); +HWND32 WINAPI FindWindowEx32A(HWND32,HWND32,LPCSTR,LPCSTR); +HWND32 WINAPI FindWindowEx32W(HWND32,HWND32,LPCWSTR,LPCWSTR); +#define FindWindowEx WINELIB_NAME_AW(FindWindowEx) +BOOL16 WINAPI FlashWindow16(HWND16,BOOL16); +BOOL32 WINAPI FlashWindow32(HWND32,BOOL32); +#define FlashWindow WINELIB_NAME(FlashWindow) +BOOL16 WINAPI FloodFill16(HDC16,INT16,INT16,COLORREF); +BOOL32 WINAPI FloodFill32(HDC32,INT32,INT32,COLORREF); +#define FloodFill WINELIB_NAME(FloodFill) +INT16 WINAPI FrameRect16(HDC16,const RECT16*,HBRUSH16); +INT32 WINAPI FrameRect32(HDC32,const RECT32*,HBRUSH32); +#define FrameRect WINELIB_NAME(FrameRect) +BOOL16 WINAPI FrameRgn16(HDC16,HRGN16,HBRUSH16,INT16,INT16); +BOOL32 WINAPI FrameRgn32(HDC32,HRGN32,HBRUSH32,INT32,INT32); +#define FrameRgn WINELIB_NAME(FrameRgn) +VOID WINAPI FreeLibrary16(HINSTANCE16); +BOOL32 WINAPI FreeLibrary32(HMODULE32); +#define FreeLibrary WINELIB_NAME(FreeLibrary) +BOOL16 WINAPI FreeModule16(HMODULE16); +#define FreeModule32(handle) FreeLibrary32(handle) +#define FreeModule WINELIB_NAME(FreeModule) +void WINAPI FreeProcInstance16(FARPROC16); +#define FreeProcInstance32(proc) /*nothing*/ +#define FreeProcInstance WINELIB_NAME(FreeProcInstance) +BOOL16 WINAPI FreeResource16(HGLOBAL16); +BOOL32 WINAPI FreeResource32(HGLOBAL32); +#define FreeResource WINELIB_NAME(FreeResource) +HWND16 WINAPI GetActiveWindow16(void); +HWND32 WINAPI GetActiveWindow32(void); +#define GetActiveWindow WINELIB_NAME(GetActiveWindow) +DWORD WINAPI GetAppCompatFlags16(HTASK16); +DWORD WINAPI GetAppCompatFlags32(HTASK32); +#define GetAppCompatFlags WINELIB_NAME(GetAppCompatFlags) +WORD WINAPI GetAsyncKeyState16(INT16); +WORD WINAPI GetAsyncKeyState32(INT32); +#define GetAsyncKeyState WINELIB_NAME(GetAsyncKeyState) +UINT16 WINAPI GetAtomName16(ATOM,LPSTR,INT16); +UINT32 WINAPI GetAtomName32A(ATOM,LPSTR,INT32); +UINT32 WINAPI GetAtomName32W(ATOM,LPWSTR,INT32); +#define GetAtomName WINELIB_NAME_AW(GetAtomName) +LONG WINAPI GetBitmapBits16(HBITMAP16,LONG,LPVOID); +LONG WINAPI GetBitmapBits32(HBITMAP32,LONG,LPVOID); +#define GetBitmapBits WINELIB_NAME(GetBitmapBits) +BOOL16 WINAPI GetBitmapDimensionEx16(HBITMAP16,LPSIZE16); +BOOL32 WINAPI GetBitmapDimensionEx32(HBITMAP32,LPSIZE32); +#define GetBitmapDimensionEx WINELIB_NAME(GetBitmapDimensionEx) +BOOL16 WINAPI GetBrushOrgEx16(HDC16,LPPOINT16); +BOOL32 WINAPI GetBrushOrgEx32(HDC32,LPPOINT32); +#define GetBrushOrgEx WINELIB_NAME(GetBrushOrgEx) +COLORREF WINAPI GetBkColor16(HDC16); +COLORREF WINAPI GetBkColor32(HDC32); +#define GetBkColor WINELIB_NAME(GetBkColor) +INT16 WINAPI GetBkMode16(HDC16); +INT32 WINAPI GetBkMode32(HDC32); +#define GetBkMode WINELIB_NAME(GetBkMode) +HWND16 WINAPI GetCapture16(void); +HWND32 WINAPI GetCapture32(void); +#define GetCapture WINELIB_NAME(GetCapture) +UINT16 WINAPI GetCaretBlinkTime16(void); +UINT32 WINAPI GetCaretBlinkTime32(void); +#define GetCaretBlinkTime WINELIB_NAME(GetCaretBlinkTime) +VOID WINAPI GetCaretPos16(LPPOINT16); +BOOL32 WINAPI GetCaretPos32(LPPOINT32); +#define GetCaretPos WINELIB_NAME(GetCaretPos) +BOOL16 WINAPI GetCharABCWidths16(HDC16,UINT16,UINT16,LPABC16); +BOOL32 WINAPI GetCharABCWidths32A(HDC32,UINT32,UINT32,LPABC32); +BOOL32 WINAPI GetCharABCWidths32W(HDC32,UINT32,UINT32,LPABC32); +#define GetCharABCWidths WINELIB_NAME_AW(GetCharABCWidths) +BOOL16 WINAPI GetCharWidth16(HDC16,UINT16,UINT16,LPINT16); +BOOL32 WINAPI GetCharWidth32A(HDC32,UINT32,UINT32,LPINT32); +BOOL32 WINAPI GetCharWidth32W(HDC32,UINT32,UINT32,LPINT32); +#define GetCharWidth WINELIB_NAME_AW(GetCharWidth) +BOOL16 WINAPI GetClassInfo16(HINSTANCE16,SEGPTR,WNDCLASS16 *); +BOOL32 WINAPI GetClassInfo32A(HINSTANCE32,LPCSTR,WNDCLASS32A *); +BOOL32 WINAPI GetClassInfo32W(HINSTANCE32,LPCWSTR,WNDCLASS32W *); +#define GetClassInfo WINELIB_NAME_AW(GetClassInfo) +BOOL16 WINAPI GetClassInfoEx16(HINSTANCE16,SEGPTR,WNDCLASSEX16 *); +BOOL32 WINAPI GetClassInfoEx32A(HINSTANCE32,LPCSTR,WNDCLASSEX32A *); +BOOL32 WINAPI GetClassInfoEx32W(HINSTANCE32,LPCWSTR,WNDCLASSEX32W *); +#define GetClassInfoEx WINELIB_NAME_AW(GetClassInfoEx) +LONG WINAPI GetClassLong16(HWND16,INT16); +LONG WINAPI GetClassLong32A(HWND32,INT32); +LONG WINAPI GetClassLong32W(HWND32,INT32); +#define GetClassLong WINELIB_NAME_AW(GetClassLong) +INT16 WINAPI GetClassName16(HWND16,LPSTR,INT16); +INT32 WINAPI GetClassName32A(HWND32,LPSTR,INT32); +INT32 WINAPI GetClassName32W(HWND32,LPWSTR,INT32); +#define GetClassName WINELIB_NAME_AW(GetClassName) +WORD WINAPI GetClassWord16(HWND16,INT16); +WORD WINAPI GetClassWord32(HWND32,INT32); +#define GetClassWord WINELIB_NAME(GetClassWord) +void WINAPI GetClientRect16(HWND16,LPRECT16); +void WINAPI GetClientRect32(HWND32,LPRECT32); +#define GetClientRect WINELIB_NAME(GetClientRect) +HANDLE16 WINAPI GetClipboardData16(UINT16); +HANDLE32 WINAPI GetClipboardData32(UINT32); +#define GetClipboardData WINELIB_NAME(GetClipboardData) +INT16 WINAPI GetClipboardFormatName16(UINT16,LPSTR,INT16); +INT32 WINAPI GetClipboardFormatName32A(UINT32,LPSTR,INT32); +INT32 WINAPI GetClipboardFormatName32W(UINT32,LPWSTR,INT32); +#define GetClipboardFormatName WINELIB_NAME_AW(GetClipboardFormatName) +HWND16 WINAPI GetClipboardOwner16(void); +HWND32 WINAPI GetClipboardOwner32(void); +#define GetClipboardOwner WINELIB_NAME(GetClipboardOwner) +HWND16 WINAPI GetClipboardViewer16(void); +HWND32 WINAPI GetClipboardViewer32(void); +#define GetClipboardViewer WINELIB_NAME(GetClipboardViewer) +INT16 WINAPI GetClipBox16(HDC16,LPRECT16); +INT32 WINAPI GetClipBox32(HDC32,LPRECT32); +#define GetClipBox WINELIB_NAME(GetClipBox) +void WINAPI GetClipCursor16(LPRECT16); +void WINAPI GetClipCursor32(LPRECT32); +#define GetClipCursor WINELIB_NAME(GetClipCursor) +HRGN16 WINAPI GetClipRgn16(HDC16); +INT32 WINAPI GetClipRgn32(HDC32,HRGN32); +#define GetClipRgn WINELIB_NAME(GetClipRgn) +INT16 WINAPI GetCommState16(INT16,LPDCB16); +BOOL32 WINAPI GetCommState32(INT32,LPDCB32); +#define GetCommState WINELIB_NAME(GetCommState) +UINT16 WINAPI GetCurrentDirectory16(UINT16,LPSTR); +UINT32 WINAPI GetCurrentDirectory32A(UINT32,LPSTR); +UINT32 WINAPI GetCurrentDirectory32W(UINT32,LPWSTR); +#define GetCurrentDirectory WINELIB_NAME_AW(GetCurrentDirectory) +BOOL16 WINAPI GetCurrentPositionEx16(HDC16,LPPOINT16); +BOOL32 WINAPI GetCurrentPositionEx32(HDC32,LPPOINT32); +#define GetCurrentPositionEx WINELIB_NAME(GetCurrentPositionEx) +DWORD WINAPI GetCurrentTime16(void); +#define GetCurrentTime32() GetTickCount() +#define GetCurrentTime WINELIB_NAME(GetCurrentTime) +HCURSOR16 WINAPI GetCursor16(void); +HCURSOR32 WINAPI GetCursor32(void); +#define GetCursor WINELIB_NAME(GetCursor) +void WINAPI GetCursorPos16(LPPOINT16); +void WINAPI GetCursorPos32(LPPOINT32); +#define GetCursorPos WINELIB_NAME(GetCursorPos) +HDC16 WINAPI GetDC16(HWND16); +HDC32 WINAPI GetDC32(HWND32); +#define GetDC WINELIB_NAME(GetDC) +HDC16 WINAPI GetDCEx16(HWND16,HRGN16,DWORD); +HDC32 WINAPI GetDCEx32(HWND32,HRGN32,DWORD); +#define GetDCEx WINELIB_NAME(GetDCEx) +HWND16 WINAPI GetDesktopWindow16(void); +HWND32 WINAPI GetDesktopWindow32(void); +#define GetDesktopWindow WINELIB_NAME(GetDesktopWindow) +INT16 WINAPI GetDeviceCaps16(HDC16,INT16); +INT32 WINAPI GetDeviceCaps32(HDC32,INT32); +#define GetDeviceCaps WINELIB_NAME(GetDeviceCaps) +INT16 WINAPI GetDIBits16(HDC16,HBITMAP16,UINT16,UINT16,LPSTR,LPBITMAPINFO,UINT16); +INT32 WINAPI GetDIBits32(HDC32,HBITMAP32,UINT32,UINT32,LPSTR,LPBITMAPINFO,UINT32); +#define GetDIBits WINELIB_NAME(GetDIBits) +BOOL16 WINAPI GetDiskFreeSpace16(LPCSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD); +BOOL32 WINAPI GetDiskFreeSpace32A(LPCSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD); +BOOL32 WINAPI GetDiskFreeSpace32W(LPCWSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD); +#define GetDiskFreeSpace WINELIB_NAME_AW(GetDiskFreeSpace) +INT16 WINAPI GetDlgCtrlID16(HWND16); +INT32 WINAPI GetDlgCtrlID32(HWND32); +#define GetDlgCtrlID WINELIB_NAME(GetDlgCtrlID) +HWND16 WINAPI GetDlgItem16(HWND16,INT16); +HWND32 WINAPI GetDlgItem32(HWND32,INT32); +#define GetDlgItem WINELIB_NAME(GetDlgItem) +UINT16 WINAPI GetDlgItemInt16(HWND16,INT16,BOOL16*,BOOL16); +UINT32 WINAPI GetDlgItemInt32(HWND32,INT32,BOOL32*,BOOL32); +#define GetDlgItemInt WINELIB_NAME(GetDlgItemInt) +INT16 WINAPI GetDlgItemText16(HWND16,INT16,SEGPTR,UINT16); +INT32 WINAPI GetDlgItemText32A(HWND32,INT32,LPSTR,UINT32); +INT32 WINAPI GetDlgItemText32W(HWND32,INT32,LPWSTR,UINT32); +#define GetDlgItemText WINELIB_NAME_AW(GetDlgItemText) +UINT16 WINAPI GetDoubleClickTime16(void); +UINT32 WINAPI GetDoubleClickTime32(void); +#define GetDoubleClickTime WINELIB_NAME(GetDoubleClickTime) +UINT16 WINAPI GetDriveType16(UINT16); /* yes, the arguments differ */ +UINT32 WINAPI GetDriveType32A(LPCSTR); +UINT32 WINAPI GetDriveType32W(LPCWSTR); +#define GetDriveType WINELIB_NAME_AW(GetDriveType) +INT16 WINAPI GetExpandedName16(LPCSTR,LPSTR); +INT32 WINAPI GetExpandedName32A(LPCSTR,LPSTR); +INT32 WINAPI GetExpandedName32W(LPCWSTR,LPWSTR); +#define GetExpandedName WINELIB_NAME_AW(GetExpandedName) +DWORD WINAPI GetFileAttributes16(LPCSTR); +DWORD WINAPI GetFileAttributes32A(LPCSTR); +DWORD WINAPI GetFileAttributes32W(LPCWSTR); +#define GetFileAttributes WINELIB_NAME_AW(GetFileAttributes) +DWORD WINAPI GetFileVersionInfoSize16(LPCSTR,LPDWORD); +DWORD WINAPI GetFileVersionInfoSize32A(LPCSTR,LPDWORD); +DWORD WINAPI GetFileVersionInfoSize32W(LPCWSTR,LPDWORD); +#define GetFileVersionInfoSize WINELIB_NAME_AW(GetFileVersionInfoSize) +DWORD WINAPI GetFileVersionInfo16(LPCSTR,DWORD,DWORD,LPVOID); +DWORD WINAPI GetFileVersionInfo32A(LPCSTR,DWORD,DWORD,LPVOID); +DWORD WINAPI GetFileVersionInfo32W(LPCWSTR,DWORD,DWORD,LPVOID); +#define GetFileVersionInfo WINELIB_NAME_AW(GetFileVersionInfo) +HWND16 WINAPI GetFocus16(void); +HWND32 WINAPI GetFocus32(void); +#define GetFocus WINELIB_NAME(GetFocus) +DWORD WINAPI GetFreeSpace16(UINT16); +#define GetFreeSpace32(w) (0x100000L) +#define GetFreeSpace WINELIB_NAME(GetFreeSpace) +DWORD WINAPI GetGlyphOutline16(HDC16,UINT16,UINT16,LPGLYPHMETRICS16,DWORD,LPVOID,const MAT2*); +DWORD WINAPI GetGlyphOutline32A(HDC32,UINT32,UINT32,LPGLYPHMETRICS32,DWORD,LPVOID,const MAT2*); +DWORD WINAPI GetGlyphOutline32W(HDC32,UINT32,UINT32,LPGLYPHMETRICS32,DWORD,LPVOID,const MAT2*); +#define GetGlyphOutline WINELIB_NAME_AW(GetGlyphOutline) +BOOL16 WINAPI GetInputState16(void); +BOOL32 WINAPI GetInputState32(void); +#define GetInputState WINELIB_NAME(GetInputState) +UINT16 WINAPI GetInternalWindowPos16(HWND16,LPRECT16,LPPOINT16); +UINT32 WINAPI GetInternalWindowPos32(HWND32,LPRECT32,LPPOINT32); +#define GetInternalWindowPos WINELIB_NAME(GetInternalWindowPos) +INT16 WINAPI GetKBCodePage16(void); +UINT32 WINAPI GetKBCodePage32(void); +#define GetKBCodePage WINELIB_NAME(GetKBCodePage) +INT16 WINAPI GetKerningPairs16(HDC16,INT16,LPKERNINGPAIR16); +DWORD WINAPI GetKerningPairs32A(HDC32,DWORD,LPKERNINGPAIR32); +DWORD WINAPI GetKerningPairs32W(HDC32,DWORD,LPKERNINGPAIR32); +#define GetKerningPairs WINELIB_NAME_AW(GetKerningPairs) +INT16 WINAPI GetKeyboardType16(INT16); +INT32 WINAPI GetKeyboardType32(INT32); +#define GetKeyboardType WINELIB_NAME(GetKeyboardType) +INT16 WINAPI GetKeyNameText16(LONG,LPSTR,INT16); +INT32 WINAPI GetKeyNameText32A(LONG,LPSTR,INT32); +INT32 WINAPI GetKeyNameText32W(LONG,LPWSTR,INT32); +#define GetKeyNameText WINELIB_NAME_AW(GetKeyNameText) +WORD WINAPI GetKeyState16(INT16); +WORD WINAPI GetKeyState32(INT32); +#define GetKeyState WINELIB_NAME(GetKeyState) +HWND16 WINAPI GetLastActivePopup16(HWND16); +HWND32 WINAPI GetLastActivePopup32(HWND32); +#define GetLastActivePopup WINELIB_NAME(GetLastActivePopup) +UINT32 WINAPI GetLogicalDriveStrings32A(UINT32,LPSTR); +UINT32 WINAPI GetLogicalDriveStrings32W(UINT32,LPWSTR); +#define GetLogicalDriveStrings WINELIB_NAME_AW(GetLogicalDriveStrings) +INT16 WINAPI GetLocaleInfo16(LCID,LCTYPE,LPSTR,INT16); +INT32 WINAPI GetLocaleInfo32A(LCID,LCTYPE,LPSTR,INT32); +INT32 WINAPI GetLocaleInfo32W(LCID,LCTYPE,LPWSTR,INT32); +#define GetLocaleInfo WINELIB_NAME_AW(GetLocaleInfo) +INT16 WINAPI GetMapMode16(HDC16); +INT32 WINAPI GetMapMode32(HDC32); +#define GetMapMode WINELIB_NAME(GetMapMode) +HMENU16 WINAPI GetMenu16(HWND16); +HMENU32 WINAPI GetMenu32(HWND32); +#define GetMenu WINELIB_NAME(GetMenu) +INT16 WINAPI GetMenuItemCount16(HMENU16); +INT32 WINAPI GetMenuItemCount32(HMENU32); +#define GetMenuItemCount WINELIB_NAME(GetMenuItemCount) +UINT16 WINAPI GetMenuItemID16(HMENU16,INT16); +UINT32 WINAPI GetMenuItemID32(HMENU32,INT32); +#define GetMenuItemID WINELIB_NAME(GetMenuItemID) +UINT16 WINAPI GetMenuState16(HMENU16,UINT16,UINT16); +UINT32 WINAPI GetMenuState32(HMENU32,UINT32,UINT32); +#define GetMenuState WINELIB_NAME(GetMenuState) +INT16 WINAPI GetMenuString16(HMENU16,UINT16,LPSTR,INT16,UINT16); +INT32 WINAPI GetMenuString32A(HMENU32,UINT32,LPSTR,INT32,UINT32); +INT32 WINAPI GetMenuString32W(HMENU32,UINT32,LPWSTR,INT32,UINT32); +#define GetMenuString WINELIB_NAME_AW(GetMenuString) +BOOL16 WINAPI GetMessage16(SEGPTR,HWND16,UINT16,UINT16); +BOOL32 WINAPI GetMessage32A(LPMSG32,HWND32,UINT32,UINT32); +BOOL32 WINAPI GetMessage32W(LPMSG32,HWND32,UINT32,UINT32); +#define GetMessage WINELIB_NAME_AW(GetMessage) +HMETAFILE16 WINAPI GetMetaFile16(LPCSTR); +HMETAFILE32 WINAPI GetMetaFile32A(LPCSTR); +HMETAFILE32 WINAPI GetMetaFile32W(LPCWSTR); +#define GetMetaFile WINELIB_NAME_AW(GetMetaFile) +INT16 WINAPI GetModuleFileName16(HINSTANCE16,LPSTR,INT16); +DWORD WINAPI GetModuleFileName32A(HMODULE32,LPSTR,DWORD); +DWORD WINAPI GetModuleFileName32W(HMODULE32,LPWSTR,DWORD); +#define GetModuleFileName WINELIB_NAME_AW(GetModuleFileName) +HMODULE16 WINAPI GetModuleHandle16(LPCSTR); +HMODULE32 WINAPI GetModuleHandle32A(LPCSTR); +HMODULE32 WINAPI GetModuleHandle32W(LPCSTR); +#define GetModuleHandle WINELIB_NAME_AW(GetModuleHandle) +DWORD WINAPI GetNearestColor16(HDC16,DWORD); +DWORD WINAPI GetNearestColor32(HDC32,DWORD); +#define GetNearestColor WINELIB_NAME(GetNearestColor) +UINT16 WINAPI GetNearestPaletteIndex16(HPALETTE16,COLORREF); +UINT32 WINAPI GetNearestPaletteIndex32(HPALETTE32,COLORREF); +#define GetNearestPaletteIndex WINELIB_NAME(GetNearestPaletteIndex) +HWND16 WINAPI GetNextDlgGroupItem16(HWND16,HWND16,BOOL16); +HWND32 WINAPI GetNextDlgGroupItem32(HWND32,HWND32,BOOL32); +#define GetNextDlgGroupItem WINELIB_NAME(GetNextDlgGroupItem) +HWND16 WINAPI GetNextDlgTabItem16(HWND16,HWND16,BOOL16); +HWND32 WINAPI GetNextDlgTabItem32(HWND32,HWND32,BOOL32); +#define GetNextDlgTabItem WINELIB_NAME(GetNextDlgTabItem) +HWND16 WINAPI GetNextWindow16(HWND16,WORD); +#define GetNextWindow32 GetWindow32 +#define GetNextWindow WINELIB_NAME(GetNextWindow) +INT16 WINAPI GetObject16(HANDLE16,INT16,LPVOID); +INT32 WINAPI GetObject32A(HANDLE32,INT32,LPVOID); +INT32 WINAPI GetObject32W(HANDLE32,INT32,LPVOID); +#define GetObject WINELIB_NAME_AW(GetObject) +HWND16 WINAPI GetOpenClipboardWindow16(void); +HWND32 WINAPI GetOpenClipboardWindow32(void); +#define GetOpenClipboardWindow WINELIB_NAME(GetOpenClipboardWindow) +UINT16 WINAPI GetPaletteEntries16(HPALETTE16,UINT16,UINT16,LPPALETTEENTRY); +UINT32 WINAPI GetPaletteEntries32(HPALETTE32,UINT32,UINT32,LPPALETTEENTRY); +#define GetPaletteEntries WINELIB_NAME(GetPaletteEntries) +HWND16 WINAPI GetParent16(HWND16); +HWND32 WINAPI GetParent32(HWND32); +#define GetParent WINELIB_NAME(GetParent) +COLORREF WINAPI GetPixel16(HDC16,INT16,INT16); +COLORREF WINAPI GetPixel32(HDC32,INT32,INT32); +#define GetPixel WINELIB_NAME(GetPixel) +INT16 WINAPI GetPolyFillMode16(HDC16); +INT32 WINAPI GetPolyFillMode32(HDC32); +#define GetPolyFillMode WINELIB_NAME(GetPolyFillMode) +INT16 WINAPI GetPriorityClipboardFormat16(UINT16*,INT16); +INT32 WINAPI GetPriorityClipboardFormat32(UINT32*,INT32); +#define GetPriorityClipboardFormat WINELIB_NAME(GetPriorityClipboardFormat) +UINT16 WINAPI GetPrivateProfileInt16(LPCSTR,LPCSTR,INT16,LPCSTR); +UINT32 WINAPI GetPrivateProfileInt32A(LPCSTR,LPCSTR,INT32,LPCSTR); +UINT32 WINAPI GetPrivateProfileInt32W(LPCWSTR,LPCWSTR,INT32,LPCWSTR); +#define GetPrivateProfileInt WINELIB_NAME_AW(GetPrivateProfileInt) +INT16 WINAPI GetPrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT16,LPCSTR); +INT32 WINAPI GetPrivateProfileString32A(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT32,LPCSTR); +INT32 WINAPI GetPrivateProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,INT32,LPCWSTR); +#define GetPrivateProfileString WINELIB_NAME_AW(GetPrivateProfileString) +FARPROC16 WINAPI GetProcAddress16(HMODULE16,SEGPTR); +FARPROC32 WINAPI GetProcAddress32(HMODULE32,LPCSTR); +#define GetProcAddress WINELIB_NAME(GetProcAddress) +UINT16 WINAPI GetProfileInt16(LPCSTR,LPCSTR,INT16); +UINT32 WINAPI GetProfileInt32A(LPCSTR,LPCSTR,INT32); +UINT32 WINAPI GetProfileInt32W(LPCWSTR,LPCWSTR,INT32); +#define GetProfileInt WINELIB_NAME_AW(GetProfileInt) +INT16 WINAPI GetProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT16); +INT32 WINAPI GetProfileString32A(LPCSTR,LPCSTR,LPCSTR,LPSTR,INT32); +INT32 WINAPI GetProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,INT32); +#define GetProfileString WINELIB_NAME_AW(GetProfileString) +HANDLE16 WINAPI GetProp16(HWND16,LPCSTR); +HANDLE32 WINAPI GetProp32A(HWND32,LPCSTR); +HANDLE32 WINAPI GetProp32W(HWND32,LPCWSTR); +#define GetProp WINELIB_NAME_AW(GetProp) +DWORD WINAPI GetQueueStatus16(UINT16); +DWORD WINAPI GetQueueStatus32(UINT32); +#define GetQueueStatus WINELIB_NAME(GetQueueStatus) +BOOL16 WINAPI GetRasterizerCaps16(LPRASTERIZER_STATUS,UINT16); +BOOL32 WINAPI GetRasterizerCaps32(LPRASTERIZER_STATUS,UINT32); +#define GetRasterizerCaps WINELIB_NAME(GetRasterizerCaps) +INT16 WINAPI GetRelAbs16(HDC16); +INT32 WINAPI GetRelAbs32(HDC32); +#define GetRelAbs WINELIB_NAME(GetRelAbs) +INT16 WINAPI GetRgnBox16(HRGN16,LPRECT16); +INT32 WINAPI GetRgnBox32(HRGN32,LPRECT32); +#define GetRgnBox WINELIB_NAME(GetRgnBox) +INT16 WINAPI GetROP216(HDC16); +INT32 WINAPI GetROP232(HDC32); +#define GetROP2 WINELIB_NAME(GetROP2) +BOOL16 WINAPI GetScrollInfo16(HWND16,INT16,LPSCROLLINFO); +BOOL32 WINAPI GetScrollInfo32(HWND32,INT32,LPSCROLLINFO); +#define GetScrollInfo WINELIB_NAME(GetScrollInfo) +INT16 WINAPI GetScrollPos16(HWND16,INT16); +INT32 WINAPI GetScrollPos32(HWND32,INT32); +#define GetScrollPos WINELIB_NAME(GetScrollPos) +BOOL16 WINAPI GetScrollRange16(HWND16,INT16,LPINT16,LPINT16); +BOOL32 WINAPI GetScrollRange32(HWND32,INT32,LPINT32,LPINT32); +#define GetScrollRange WINELIB_NAME(GetScrollRange) +HGDIOBJ16 WINAPI GetStockObject16(INT16); +HGDIOBJ32 WINAPI GetStockObject32(INT32); +#define GetStockObject WINELIB_NAME(GetStockObject) +INT16 WINAPI GetStretchBltMode16(HDC16); +INT32 WINAPI GetStretchBltMode32(HDC32); +#define GetStretchBltMode WINELIB_NAME(GetStretchBltMode) +BOOL16 WINAPI GetStringType16(LCID,DWORD,LPCSTR,INT16,LPWORD); +BOOL32 WINAPI GetStringType32A(LCID,DWORD,LPCSTR,INT32,LPWORD); +BOOL32 WINAPI GetStringType32W(DWORD,LPCWSTR,INT32,LPWORD); +#define GetStringType WINELIB_NAME_AW(GetStringType) +HMENU16 WINAPI GetSubMenu16(HMENU16,INT16); +HMENU32 WINAPI GetSubMenu32(HMENU32,INT32); +#define GetSubMenu WINELIB_NAME(GetSubMenu) +COLORREF WINAPI GetSysColor16(INT16); +COLORREF WINAPI GetSysColor32(INT32); +#define GetSysColor WINELIB_NAME(GetSysColor) +HBRUSH16 WINAPI GetSysColorBrush16(INT16); +HBRUSH32 WINAPI GetSysColorBrush32(INT32); +#define GetSysColorBrush WINELIB_NAME(GetSysColorBrush) +HWND16 WINAPI GetSysModalWindow16(void); +#define GetSysModalWindow32() ((HWND32)0) +#define GetSysModalWindow WINELIB_NAME(GetSysModalWindow) +UINT16 WINAPI GetSystemDirectory16(LPSTR,UINT16); +UINT32 WINAPI GetSystemDirectory32A(LPSTR,UINT32); +UINT32 WINAPI GetSystemDirectory32W(LPWSTR,UINT32); +#define GetSystemDirectory WINELIB_NAME_AW(GetSystemDirectory) +HMENU16 WINAPI GetSystemMenu16(HWND16,BOOL16); +HMENU32 WINAPI GetSystemMenu32(HWND32,BOOL32); +#define GetSystemMenu WINELIB_NAME(GetSystemMenu) +INT16 WINAPI GetSystemMetrics16(INT16); +INT32 WINAPI GetSystemMetrics32(INT32); +#define GetSystemMetrics WINELIB_NAME(GetSystemMetrics) +UINT16 WINAPI GetSystemPaletteEntries16(HDC16,UINT16,UINT16,LPPALETTEENTRY); +UINT32 WINAPI GetSystemPaletteEntries32(HDC32,UINT32,UINT32,LPPALETTEENTRY); +#define GetSystemPaletteEntries WINELIB_NAME(GetSystemPaletteEntries) +UINT16 WINAPI GetSystemPaletteUse16(HDC16); +UINT32 WINAPI GetSystemPaletteUse32(HDC32); +#define GetSystemPaletteUse WINELIB_NAME(GetSystemPaletteUse) +DWORD WINAPI GetTabbedTextExtent16(HDC16,LPCSTR,INT16,INT16,const INT16*); +DWORD WINAPI GetTabbedTextExtent32A(HDC32,LPCSTR,INT32,INT32,const INT32*); +DWORD WINAPI GetTabbedTextExtent32W(HDC32,LPCWSTR,INT32,INT32,const INT32*); +#define GetTabbedTextExtent WINELIB_NAME_AW(GetTabbedTextExtent) +UINT16 WINAPI GetTempFileName16(BYTE,LPCSTR,UINT16,LPSTR); +UINT32 WINAPI GetTempFileName32A(LPCSTR,LPCSTR,UINT32,LPSTR); +UINT32 WINAPI GetTempFileName32W(LPCWSTR,LPCWSTR,UINT32,LPWSTR); +#define GetTempFileName WINELIB_NAME_AW(GetTempFileName) +UINT32 WINAPI GetTempPath32A(UINT32,LPSTR); +UINT32 WINAPI GetTempPath32W(UINT32,LPWSTR); +#define GetTempPath WINELIB_NAME_AW(GetTempPath) +UINT16 WINAPI GetTextAlign16(HDC16); +UINT32 WINAPI GetTextAlign32(HDC32); +#define GetTextAlign WINELIB_NAME(GetTextAlign) +INT16 WINAPI GetTextCharacterExtra16(HDC16); +INT32 WINAPI GetTextCharacterExtra32(HDC32); +#define GetTextCharacterExtra WINELIB_NAME(GetTextCharacterExtra) +COLORREF WINAPI GetTextColor16(HDC16); +COLORREF WINAPI GetTextColor32(HDC32); +#define GetTextColor WINELIB_NAME(GetTextColor) +BOOL16 WINAPI GetTextExtentPoint16(HDC16,LPCSTR,INT16,LPSIZE16); +BOOL32 WINAPI GetTextExtentPoint32A(HDC32,LPCSTR,INT32,LPSIZE32); +BOOL32 WINAPI GetTextExtentPoint32W(HDC32,LPCWSTR,INT32,LPSIZE32); +#define GetTextExtentPoint WINELIB_NAME_AW(GetTextExtentPoint) +INT16 WINAPI GetTextFace16(HDC16,INT16,LPSTR); +INT32 WINAPI GetTextFace32A(HDC32,INT32,LPSTR); +INT32 WINAPI GetTextFace32W(HDC32,INT32,LPWSTR); +#define GetTextFace WINELIB_NAME_AW(GetTextFace) +BOOL16 WINAPI GetTextMetrics16(HDC16,LPTEXTMETRIC16); +BOOL32 WINAPI GetTextMetrics32A(HDC32,LPTEXTMETRIC32A); +BOOL32 WINAPI GetTextMetrics32W(HDC32,LPTEXTMETRIC32W); +#define GetTextMetrics WINELIB_NAME_AW(GetTextMetrics) +LPINT16 WINAPI GetThresholdEvent16(void); +LPDWORD WINAPI GetThresholdEvent32(void); +#define GetThresholdEvent WINELIB_NAME(GetThresholdEvent) +INT16 WINAPI GetThresholdStatus16(void); +DWORD WINAPI GetThresholdStatus32(void); +#define GetThresholdStatus WINELIB_NAME(GetThresholdStatus) +HWND16 WINAPI GetTopWindow16(HWND16); +HWND32 WINAPI GetTopWindow32(HWND32); +#define GetTopWindow WINELIB_NAME(GetTopWindow) +BOOL16 WINAPI GetUpdateRect16(HWND16,LPRECT16,BOOL16); +BOOL32 WINAPI GetUpdateRect32(HWND32,LPRECT32,BOOL32); +#define GetUpdateRect WINELIB_NAME(GetUpdateRect) +INT16 WINAPI GetUpdateRgn16(HWND16,HRGN16,BOOL16); +INT32 WINAPI GetUpdateRgn32(HWND32,HRGN32,BOOL32); +#define GetUpdateRgn WINELIB_NAME(GetUpdateRgn) +LONG WINAPI GetVersion16(void); +LONG WINAPI GetVersion32(void); +#define GetVersion WINELIB_NAME(GetVersion) +BOOL16 WINAPI GetViewportExtEx16(HDC16,LPPOINT16); +BOOL32 WINAPI GetViewportExtEx32(HDC32,LPPOINT32); +#define GetViewportExtEx WINELIB_NAME(GetViewportExtEx) +BOOL16 WINAPI GetViewportOrgEx16(HDC16,LPPOINT16); +BOOL32 WINAPI GetViewportOrgEx32(HDC32,LPPOINT32); +#define GetViewportOrgEx WINELIB_NAME(GetViewportOrgEx) +BOOL32 WINAPI GetVolumeInformation32A(LPCSTR,LPSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPSTR,DWORD); +BOOL32 WINAPI GetVolumeInformation32W(LPCWSTR,LPWSTR,DWORD,LPDWORD,LPDWORD,LPDWORD,LPWSTR,DWORD); +#define GetVolumeInformation WINELIB_NAME_AW(GetVolumeInformation) +HWND16 WINAPI GetWindow16(HWND16,WORD); +HWND32 WINAPI GetWindow32(HWND32,WORD); +#define GetWindow WINELIB_NAME(GetWindow) +HDC16 WINAPI GetWindowDC16(HWND16); +HDC32 WINAPI GetWindowDC32(HWND32); +#define GetWindowDC WINELIB_NAME(GetWindowDC) +BOOL16 WINAPI GetWindowExtEx16(HDC16,LPPOINT16); +BOOL32 WINAPI GetWindowExtEx32(HDC32,LPPOINT32); +#define GetWindowExtEx WINELIB_NAME(GetWindowExtEx) +LONG WINAPI GetWindowLong16(HWND16,INT16); +LONG WINAPI GetWindowLong32A(HWND32,INT32); +LONG WINAPI GetWindowLong32W(HWND32,INT32); +#define GetWindowLong WINELIB_NAME_AW(GetWindowLong) +BOOL16 WINAPI GetWindowOrgEx16(HDC16,LPPOINT16); +BOOL32 WINAPI GetWindowOrgEx32(HDC32,LPPOINT32); +#define GetWindowOrgEx WINELIB_NAME(GetWindowOrgEx) +BOOL16 WINAPI GetWindowPlacement16(HWND16,LPWINDOWPLACEMENT16); +BOOL32 WINAPI GetWindowPlacement32(HWND32,LPWINDOWPLACEMENT32); +#define GetWindowPlacement WINELIB_NAME(GetWindowPlacement) +void WINAPI GetWindowRect16(HWND16,LPRECT16); +void WINAPI GetWindowRect32(HWND32,LPRECT32); +#define GetWindowRect WINELIB_NAME(GetWindowRect) +UINT16 WINAPI GetWindowsDirectory16(LPSTR,UINT16); +UINT32 WINAPI GetWindowsDirectory32A(LPSTR,UINT32); +UINT32 WINAPI GetWindowsDirectory32W(LPWSTR,UINT32); +#define GetWindowsDirectory WINELIB_NAME_AW(GetWindowsDirectory) +HTASK16 WINAPI GetWindowTask16(HWND16); +#define GetWindowTask32(hwnd) ((HTASK32)GetWindowThreadProcessId(hwnd,NULL)) +#define GetWindowTask WINELIB_NAME(GetWindowTask) +INT16 WINAPI GetWindowText16(HWND16,SEGPTR,INT16); +INT32 WINAPI GetWindowText32A(HWND32,LPSTR,INT32); +INT32 WINAPI GetWindowText32W(HWND32,LPWSTR,INT32); +#define GetWindowText WINELIB_NAME_AW(GetWindowText) +INT16 WINAPI GetWindowTextLength16(HWND16); +INT32 WINAPI GetWindowTextLength32A(HWND32); +INT32 WINAPI GetWindowTextLength32W(HWND32); +#define GetWindowTextLength WINELIB_NAME_AW(GetWindowTextLength) +WORD WINAPI GetWindowWord16(HWND16,INT16); +WORD WINAPI GetWindowWord32(HWND32,INT32); +#define GetWindowWord WINELIB_NAME(GetWindowWord) +ATOM WINAPI GlobalAddAtom16(SEGPTR); +ATOM WINAPI GlobalAddAtom32A(LPCSTR); +ATOM WINAPI GlobalAddAtom32W(LPCWSTR); +#define GlobalAddAtom WINELIB_NAME_AW(GlobalAddAtom) +HGLOBAL16 WINAPI GlobalAlloc16(UINT16,DWORD); +HGLOBAL32 WINAPI GlobalAlloc32(UINT32,DWORD); +#define GlobalAlloc WINELIB_NAME(GlobalAlloc) +DWORD WINAPI GlobalCompact16(DWORD); +DWORD WINAPI GlobalCompact32(DWORD); +#define GlobalCompact WINELIB_NAME(GlobalCompact) +UINT16 WINAPI GlobalFlags16(HGLOBAL16); +UINT32 WINAPI GlobalFlags32(HGLOBAL32); +#define GlobalFlags WINELIB_NAME(GlobalFlags) +ATOM WINAPI GlobalFindAtom16(SEGPTR); +ATOM WINAPI GlobalFindAtom32A(LPCSTR); +ATOM WINAPI GlobalFindAtom32W(LPCWSTR); +#define GlobalFindAtom WINELIB_NAME_AW(GlobalFindAtom) +HGLOBAL16 WINAPI GlobalFree16(HGLOBAL16); +HGLOBAL32 WINAPI GlobalFree32(HGLOBAL32); +#define GlobalFree WINELIB_NAME(GlobalFree) +UINT16 WINAPI GlobalGetAtomName16(ATOM,LPSTR,INT16); +UINT32 WINAPI GlobalGetAtomName32A(ATOM,LPSTR,INT32); +UINT32 WINAPI GlobalGetAtomName32W(ATOM,LPWSTR,INT32); +#define GlobalGetAtomName WINELIB_NAME_AW(GlobalGetAtomName) +DWORD WINAPI GlobalHandle16(WORD); +HGLOBAL32 WINAPI GlobalHandle32(LPCVOID); +#define GlobalHandle WINELIB_NAME(GlobalHandle) +VOID WINAPI GlobalFix16(HGLOBAL16); +VOID WINAPI GlobalFix32(HGLOBAL32); +#define GlobalFix WINELIB_NAME(GlobalFix) +LPVOID WINAPI GlobalLock16(HGLOBAL16); +LPVOID WINAPI GlobalLock32(HGLOBAL32); +#define GlobalLock WINELIB_NAME(GlobalLock) +HGLOBAL16 WINAPI GlobalReAlloc16(HGLOBAL16,DWORD,UINT16); +HGLOBAL32 WINAPI GlobalReAlloc32(HGLOBAL32,DWORD,UINT32); +#define GlobalReAlloc WINELIB_NAME(GlobalReAlloc) +DWORD WINAPI GlobalSize16(HGLOBAL16); +DWORD WINAPI GlobalSize32(HGLOBAL32); +#define GlobalSize WINELIB_NAME(GlobalSize) +VOID WINAPI GlobalUnfix16(HGLOBAL16); +VOID WINAPI GlobalUnfix32(HGLOBAL32); +#define GlobalUnfix WINELIB_NAME(GlobalUnfix) +BOOL16 WINAPI GlobalUnlock16(HGLOBAL16); +BOOL32 WINAPI GlobalUnlock32(HGLOBAL32); +#define GlobalUnlock WINELIB_NAME(GlobalUnlock) +BOOL16 WINAPI GlobalUnWire16(HGLOBAL16); +BOOL32 WINAPI GlobalUnWire32(HGLOBAL32); +#define GlobalUnWire WINELIB_NAME(GlobalUnWire) +SEGPTR WINAPI GlobalWire16(HGLOBAL16); +LPVOID WINAPI GlobalWire32(HGLOBAL32); +#define GlobalWire WINELIB_NAME(GlobalWire) +BOOL16 WINAPI GrayString16(HDC16,HBRUSH16,GRAYSTRINGPROC16,LPARAM, + INT16,INT16,INT16,INT16,INT16); +BOOL32 WINAPI GrayString32A(HDC32,HBRUSH32,GRAYSTRINGPROC32,LPARAM, + INT32,INT32,INT32,INT32,INT32); +BOOL32 WINAPI GrayString32W(HDC32,HBRUSH32,GRAYSTRINGPROC32,LPARAM, + INT32,INT32,INT32,INT32,INT32); +#define GrayString WINELIB_NAME_AW(GrayString) +VOID WINAPI HideCaret16(HWND16); +BOOL32 WINAPI HideCaret32(HWND32); +#define HideCaret WINELIB_NAME(HideCaret) +BOOL16 WINAPI HiliteMenuItem16(HWND16,HMENU16,UINT16,UINT16); +BOOL32 WINAPI HiliteMenuItem32(HWND32,HMENU32,UINT32,UINT32); +#define HiliteMenuItem WINELIB_NAME(HiliteMenuItem) +void WINAPI InflateRect16(LPRECT16,INT16,INT16); +void WINAPI InflateRect32(LPRECT32,INT32,INT32); +#define InflateRect WINELIB_NAME(InflateRect) +WORD WINAPI InitAtomTable16(WORD); +BOOL32 WINAPI InitAtomTable32(DWORD); +#define InitAtomTable WINELIB_NAME(InitAtomTable) +BOOL16 WINAPI InSendMessage16(void); +BOOL32 WINAPI InSendMessage32(void); +#define InSendMessage WINELIB_NAME(InSendMessage) +BOOL16 WINAPI InsertMenu16(HMENU16,UINT16,UINT16,UINT16,SEGPTR); +BOOL32 WINAPI InsertMenu32A(HMENU32,UINT32,UINT32,UINT32,LPCSTR); +BOOL32 WINAPI InsertMenu32W(HMENU32,UINT32,UINT32,UINT32,LPCWSTR); +#define InsertMenu WINELIB_NAME_AW(InsertMenu) +BOOL16 WINAPI InsertMenuItem16(HMENU16,UINT16,BOOL16,const MENUITEMINFO16*); +BOOL32 WINAPI InsertMenuItem32A(HMENU32,UINT32,BOOL32,const MENUITEMINFO32A*); +BOOL32 WINAPI InsertMenuItem32W(HMENU32,UINT32,BOOL32,const MENUITEMINFO32W*); +#define InsertMenuItem WINELIB_NAME_AW(InsertMenuItem) +INT16 WINAPI IntersectClipRect16(HDC16,INT16,INT16,INT16,INT16); +INT32 WINAPI IntersectClipRect32(HDC32,INT32,INT32,INT32,INT32); +#define IntersectClipRect WINELIB_NAME(IntersectClipRect) +BOOL16 WINAPI IntersectRect16(LPRECT16,const RECT16*,const RECT16*); +BOOL32 WINAPI IntersectRect32(LPRECT32,const RECT32*,const RECT32*); +#define IntersectRect WINELIB_NAME(IntersectRect) +void WINAPI InvalidateRect16(HWND16,const RECT16*,BOOL16); +void WINAPI InvalidateRect32(HWND32,const RECT32*,BOOL32); +#define InvalidateRect WINELIB_NAME(InvalidateRect) +void WINAPI InvalidateRgn16(HWND16,HRGN16,BOOL16); +void WINAPI InvalidateRgn32(HWND32,HRGN32,BOOL32); +#define InvalidateRgn WINELIB_NAME(InvalidateRgn) +void WINAPI InvertRect16(HDC16,const RECT16*); +void WINAPI InvertRect32(HDC32,const RECT32*); +#define InvertRect WINELIB_NAME(InvertRect) +BOOL16 WINAPI InvertRgn16(HDC16,HRGN16); +BOOL32 WINAPI InvertRgn32(HDC32,HRGN32); +#define InvertRgn WINELIB_NAME(InvertRgn) +BOOL16 WINAPI IsBadCodePtr16(SEGPTR); +BOOL32 WINAPI IsBadCodePtr32(FARPROC32); +#define IsBadCodePtr WINELIB_NAME(IsBadCodePtr) +BOOL16 WINAPI IsBadHugeReadPtr16(SEGPTR,DWORD); +BOOL32 WINAPI IsBadHugeReadPtr32(LPCVOID,UINT32); +#define IsBadHugeReadPtr WINELIB_NAME(IsBadHugeReadPtr) +BOOL16 WINAPI IsBadHugeWritePtr16(SEGPTR,DWORD); +BOOL32 WINAPI IsBadHugeWritePtr32(LPVOID,UINT32); +#define IsBadHugeWritePtr WINELIB_NAME(IsBadHugeWritePtr) +BOOL16 WINAPI IsBadReadPtr16(SEGPTR,UINT16); +BOOL32 WINAPI IsBadReadPtr32(LPCVOID,UINT32); +#define IsBadReadPtr WINELIB_NAME(IsBadReadPtr) +BOOL16 WINAPI IsBadStringPtr16(SEGPTR,UINT16); +BOOL32 WINAPI IsBadStringPtr32A(LPCSTR,UINT32); +BOOL32 WINAPI IsBadStringPtr32W(LPCWSTR,UINT32); +#define IsBadStringPtr WINELIB_NAME_AW(IsBadStringPtr) +BOOL16 WINAPI IsBadWritePtr16(SEGPTR,UINT16); +BOOL32 WINAPI IsBadWritePtr32(LPVOID,UINT32); +#define IsBadWritePtr WINELIB_NAME(IsBadWritePtr) +BOOL16 WINAPI IsCharAlpha16(CHAR); +BOOL32 WINAPI IsCharAlpha32A(CHAR); +BOOL32 WINAPI IsCharAlpha32W(WCHAR); +#define IsCharAlpha WINELIB_NAME_AW(IsCharAlpha) +BOOL16 WINAPI IsCharAlphaNumeric16(CHAR); +BOOL32 WINAPI IsCharAlphaNumeric32A(CHAR); +BOOL32 WINAPI IsCharAlphaNumeric32W(WCHAR); +#define IsCharAlphaNumeric WINELIB_NAME_AW(IsCharAlphaNumeric) +BOOL16 WINAPI IsCharLower16(CHAR); +BOOL32 WINAPI IsCharLower32A(CHAR); +BOOL32 WINAPI IsCharLower32W(WCHAR); +#define IsCharLower WINELIB_NAME_AW(IsCharLower) +BOOL16 WINAPI IsCharUpper16(CHAR); +BOOL32 WINAPI IsCharUpper32A(CHAR); +BOOL32 WINAPI IsCharUpper32W(WCHAR); +#define IsCharUpper WINELIB_NAME_AW(IsCharUpper) +BOOL16 WINAPI IsChild16(HWND16,HWND16); +BOOL32 WINAPI IsChild32(HWND32,HWND32); +#define IsChild WINELIB_NAME(IsChild) +BOOL16 WINAPI IsClipboardFormatAvailable16(UINT16); +BOOL32 WINAPI IsClipboardFormatAvailable32(UINT32); +#define IsClipboardFormatAvailable WINELIB_NAME(IsClipboardFormatAvailable) +BOOL16 WINAPI IsDBCSLeadByte16(BYTE); +BOOL32 WINAPI IsDBCSLeadByte32(BYTE); +#define IsDBCSLeadByte WINELIB_NAME(IsDBCSLeadByte) +BOOL16 WINAPI IsDialogMessage16(HWND16,LPMSG16); +BOOL32 WINAPI IsDialogMessage32A(HWND32,LPMSG32); +BOOL32 WINAPI IsDialogMessage32W(HWND32,LPMSG32); +#define IsDialogMessage WINELIB_NAME(IsDialogMessage) +UINT16 WINAPI IsDlgButtonChecked16(HWND16,UINT16); +UINT32 WINAPI IsDlgButtonChecked32(HWND32,UINT32); +#define IsDlgButtonChecked WINELIB_NAME(IsDlgButtonChecked) +BOOL16 WINAPI IsIconic16(HWND16); +BOOL32 WINAPI IsIconic32(HWND32); +#define IsIconic WINELIB_NAME(IsIconic) +BOOL16 WINAPI IsMenu16(HMENU16); +BOOL32 WINAPI IsMenu32(HMENU32); +#define IsMenu WINELIB_NAME(IsMenu) +BOOL16 WINAPI IsRectEmpty16(const RECT16*); +BOOL32 WINAPI IsRectEmpty32(const RECT32*); +#define IsRectEmpty WINELIB_NAME(IsRectEmpty) +BOOL16 WINAPI IsWindow16(HWND16); +BOOL32 WINAPI IsWindow32(HWND32); +#define IsWindow WINELIB_NAME(IsWindow) +BOOL16 WINAPI IsWindowEnabled16(HWND16); +BOOL32 WINAPI IsWindowEnabled32(HWND32); +#define IsWindowEnabled WINELIB_NAME(IsWindowEnabled) +BOOL16 WINAPI IsWindowVisible16(HWND16); +BOOL32 WINAPI IsWindowVisible32(HWND32); +#define IsWindowVisible WINELIB_NAME(IsWindowVisible) +BOOL16 WINAPI IsZoomed16(HWND16); +BOOL32 WINAPI IsZoomed32(HWND32); +#define IsZoomed WINELIB_NAME(IsZoomed) +BOOL16 WINAPI KillSystemTimer16(HWND16,UINT16); +BOOL32 WINAPI KillSystemTimer32(HWND32,UINT32); +#define KillSystemTimer WINELIB_NAME(KillSystemTimer) +BOOL16 WINAPI KillTimer16(HWND16,UINT16); +BOOL32 WINAPI KillTimer32(HWND32,UINT32); +#define KillTimer WINELIB_NAME(KillTimer) +HFILE16 WINAPI LZOpenFile16(LPCSTR,LPOFSTRUCT,UINT16); +HFILE32 WINAPI LZOpenFile32A(LPCSTR,LPOFSTRUCT,UINT32); +HFILE32 WINAPI LZOpenFile32W(LPCWSTR,LPOFSTRUCT,UINT32); +#define LZOpenFile WINELIB_NAME_AW(LZOpenFile) +INT16 WINAPI LZRead16(HFILE16,LPVOID,UINT16); +INT32 WINAPI LZRead32(HFILE32,LPVOID,UINT32); +#define LZRead WINELIB_NAME(LZRead) +INT16 WINAPI LZStart16(void); +INT32 WINAPI LZStart32(void); +#define LZStart WINELIB_NAME(LZStart) +VOID WINAPI LineDDA16(INT16,INT16,INT16,INT16,LINEDDAPROC16,LPARAM); +BOOL32 WINAPI LineDDA32(INT32,INT32,INT32,INT32,LINEDDAPROC32,LPARAM); +#define LineDDA WINELIB_NAME(LineDDA) +BOOL16 WINAPI LineTo16(HDC16,INT16,INT16); +BOOL32 WINAPI LineTo32(HDC32,INT32,INT32); +#define LineTo WINELIB_NAME(LineTo) +HACCEL16 WINAPI LoadAccelerators16(HINSTANCE16,SEGPTR); +HACCEL32 WINAPI LoadAccelerators32A(HINSTANCE32,LPCSTR); +HACCEL32 WINAPI LoadAccelerators32W(HINSTANCE32,LPCWSTR); +#define LoadAccelerators WINELIB_NAME_AW(LoadAccelerators) +HBITMAP16 WINAPI LoadBitmap16(HANDLE16,SEGPTR); +HBITMAP32 WINAPI LoadBitmap32A(HANDLE32,LPCSTR); +HBITMAP32 WINAPI LoadBitmap32W(HANDLE32,LPCWSTR); +#define LoadBitmap WINELIB_NAME(LoadBitmap) +HCURSOR16 WINAPI LoadCursor16(HINSTANCE16,SEGPTR); +HCURSOR32 WINAPI LoadCursor32A(HINSTANCE32,LPCSTR); +HCURSOR32 WINAPI LoadCursor32W(HINSTANCE32,LPCWSTR); +#define LoadCursor WINELIB_NAME_AW(LoadCursor) +HICON16 WINAPI LoadIcon16(HINSTANCE16,SEGPTR); +HICON32 WINAPI LoadIcon32A(HINSTANCE32,LPCSTR); +HICON32 WINAPI LoadIcon32W(HINSTANCE32,LPCWSTR); +#define LoadIcon WINELIB_NAME_AW(LoadIcon) +HINSTANCE16 WINAPI LoadLibrary16(LPCSTR); +HINSTANCE32 WINAPI LoadLibrary32A(LPCSTR); +HINSTANCE32 WINAPI LoadLibrary32W(LPCWSTR); +#define LoadLibrary WINELIB_NAME_AW(LoadLibrary) +HMENU16 WINAPI LoadMenu16(HINSTANCE16,SEGPTR); +HMENU32 WINAPI LoadMenu32A(HINSTANCE32,LPCSTR); +HMENU32 WINAPI LoadMenu32W(HINSTANCE32,LPCWSTR); +#define LoadMenu WINELIB_NAME_AW(LoadMenu) +HMENU16 WINAPI LoadMenuIndirect16(LPCVOID); +HMENU32 WINAPI LoadMenuIndirect32A(LPCVOID); +HMENU32 WINAPI LoadMenuIndirect32W(LPCVOID); +#define LoadMenuIndirect WINELIB_NAME_AW(LoadMenuIndirect) +HINSTANCE16 WINAPI LoadModule16(LPCSTR,LPVOID); +DWORD WINAPI LoadModule32(LPCSTR,LPVOID); +#define LoadModule WINELIB_NAME(LoadModule) +HGLOBAL16 WINAPI LoadResource16(HINSTANCE16,HRSRC16); +HGLOBAL32 WINAPI LoadResource32(HINSTANCE32,HRSRC32); +#define LoadResource WINELIB_NAME(LoadResource) +INT16 WINAPI LoadString16(HINSTANCE16,UINT16,LPSTR,INT16); +INT32 WINAPI LoadString32A(HINSTANCE32,UINT32,LPSTR,INT32); +INT32 WINAPI LoadString32W(HINSTANCE32,UINT32,LPWSTR,INT32); +#define LoadString WINELIB_NAME_AW(LoadString) +HLOCAL16 WINAPI LocalAlloc16(UINT16,WORD); +HLOCAL32 WINAPI LocalAlloc32(UINT32,DWORD); +#define LocalAlloc WINELIB_NAME(LocalAlloc) +UINT16 WINAPI LocalCompact16(UINT16); +UINT32 WINAPI LocalCompact32(UINT32); +#define LocalCompact WINELIB_NAME(LocalCompact) +UINT16 WINAPI LocalFlags16(HLOCAL16); +UINT32 WINAPI LocalFlags32(HLOCAL32); +#define LocalFlags WINELIB_NAME(LocalFlags) +HLOCAL16 WINAPI LocalFree16(HLOCAL16); +HLOCAL32 WINAPI LocalFree32(HLOCAL32); +#define LocalFree WINELIB_NAME(LocalFree) +HLOCAL16 WINAPI LocalHandle16(WORD); +HLOCAL32 WINAPI LocalHandle32(LPCVOID); +#define LocalHandle WINELIB_NAME(LocalHandle) +SEGPTR WINAPI LocalLock16(HLOCAL16); +LPVOID WINAPI LocalLock32(HLOCAL32); +#define LocalLock WINELIB_NAME(LocalLock) +HLOCAL16 WINAPI LocalReAlloc16(HLOCAL16,WORD,UINT16); +HLOCAL32 WINAPI LocalReAlloc32(HLOCAL32,DWORD,UINT32); +#define LocalReAlloc WINELIB_NAME(LocalReAlloc) +UINT16 WINAPI LocalShrink16(HGLOBAL16,UINT16); +UINT32 WINAPI LocalShrink32(HGLOBAL32,UINT32); +#define LocalShrink WINELIB_NAME(LocalShrink) +UINT16 WINAPI LocalSize16(HLOCAL16); +UINT32 WINAPI LocalSize32(HLOCAL32); +#define LocalSize WINELIB_NAME(LocalSize) +BOOL16 WINAPI LocalUnlock16(HLOCAL16); +BOOL32 WINAPI LocalUnlock32(HLOCAL32); +#define LocalUnlock WINELIB_NAME(LocalUnlock) +LPVOID WINAPI LockResource16(HGLOBAL16); +LPVOID WINAPI LockResource32(HGLOBAL32); +#define LockResource WINELIB_NAME(LockResource) +HGLOBAL16 WINAPI LockSegment16(HGLOBAL16); +#define LockSegment32(handle) GlobalFix32((HANDLE32)(handle)) +#define LockSegment WINELIB_NAME(LockSegment) +BOOL16 WINAPI LockWindowUpdate16(HWND16); +BOOL32 WINAPI LockWindowUpdate32(HWND32); +#define LockWindowUpdate WINELIB_NAME(LockWindowUpdate) +BOOL16 WINAPI LPtoDP16(HDC16,LPPOINT16,INT16); +BOOL32 WINAPI LPtoDP32(HDC32,LPPOINT32,INT32); +#define LPtoDP WINELIB_NAME(LPtoDP) +void WINAPI LZClose16(HFILE16); +void WINAPI LZClose32(HFILE32); +#define LZClose WINELIB_NAME(LZClose) +LONG WINAPI LZCopy16(HFILE16,HFILE16); +LONG WINAPI LZCopy32(HFILE32,HFILE32); +#define LZCopy WINELIB_NAME(LZCopy) +HFILE16 WINAPI LZInit16(HFILE16); +HFILE32 WINAPI LZInit32(HFILE32); +#define LZInit WINELIB_NAME(LZInit) +LONG WINAPI LZSeek16(HFILE16,LONG,INT16); +LONG WINAPI LZSeek32(HFILE32,LONG,INT32); +#define LZSeek WINELIB_NAME(LZSeek) +UINT16 WINAPI MapVirtualKey16(UINT16,UINT16); +UINT32 WINAPI MapVirtualKey32A(UINT32,UINT32); +UINT32 WINAPI MapVirtualKey32W(UINT32,UINT32); +#define MapVirtualKey WINELIB_NAME_AW(MapVirtualKey) +FARPROC16 WINAPI MakeProcInstance16(FARPROC16,HANDLE16); +#define MakeProcInstance32(proc,inst) (proc) +#define MakeProcInstance WINELIB_NAME(MakeProcInstance) +void WINAPI MapDialogRect16(HWND16,LPRECT16); +void WINAPI MapDialogRect32(HWND32,LPRECT32); +#define MapDialogRect WINELIB_NAME(MapDialogRect) +void WINAPI MapWindowPoints16(HWND16,HWND16,LPPOINT16,UINT16); +void WINAPI MapWindowPoints32(HWND32,HWND32,LPPOINT32,UINT32); +#define MapWindowPoints WINELIB_NAME(MapWindowPoints) +VOID WINAPI MessageBeep16(UINT16); +BOOL32 WINAPI MessageBeep32(UINT32); +#define MessageBeep WINELIB_NAME(MessageBeep) +INT16 WINAPI MessageBox16(HWND16,LPCSTR,LPCSTR,UINT16); +INT32 WINAPI MessageBox32A(HWND32,LPCSTR,LPCSTR,UINT32); +INT32 WINAPI MessageBox32W(HWND32,LPCWSTR,LPCWSTR,UINT32); +#define MessageBox WINELIB_NAME_AW(MessageBox) +BOOL16 WINAPI ModifyMenu16(HMENU16,UINT16,UINT16,UINT16,SEGPTR); +BOOL32 WINAPI ModifyMenu32A(HMENU32,UINT32,UINT32,UINT32,LPCSTR); +BOOL32 WINAPI ModifyMenu32W(HMENU32,UINT32,UINT32,UINT32,LPCWSTR); +#define ModifyMenu WINELIB_NAME_AW(ModifyMenu) +BOOL16 WINAPI MoveToEx16(HDC16,INT16,INT16,LPPOINT16); +BOOL32 WINAPI MoveToEx32(HDC32,INT32,INT32,LPPOINT32); +#define MoveToEx WINELIB_NAME(MoveToEx) +BOOL16 WINAPI MoveWindow16(HWND16,INT16,INT16,INT16,INT16,BOOL16); +BOOL32 WINAPI MoveWindow32(HWND32,INT32,INT32,INT32,INT32,BOOL32); +#define MoveWindow WINELIB_NAME(MoveWindow) +INT16 WINAPI MulDiv16(INT16,INT16,INT16); +INT32 WINAPI MulDiv32(INT32,INT32,INT32); +#define MulDiv WINELIB_NAME(MulDiv) +INT16 WINAPI OemToAnsi16(LPCSTR,LPSTR); +#define OemToAnsi32A OemToChar32A +#define OemToAnsi32W OemToChar32W +#define OemToAnsi WINELIB_NAME_AW(OemToAnsi) +VOID WINAPI OemToAnsiBuff16(LPCSTR,LPSTR,UINT16); +#define OemToAnsiBuff32A OemToCharBuff32A +#define OemToAnsiBuff32W OemToCharBuff32W +#define OemToAnsiBuff WINELIB_NAME_AW(OemToAnsiBuff) +BOOL32 WINAPI OemToChar32A(LPCSTR,LPSTR); +BOOL32 WINAPI OemToChar32W(LPCSTR,LPWSTR); +#define OemToChar WINELIB_NAME_AW(OemToChar) +BOOL32 WINAPI OemToCharBuff32A(LPCSTR,LPSTR,DWORD); +BOOL32 WINAPI OemToCharBuff32W(LPCSTR,LPWSTR,DWORD); +#define OemToCharBuff WINELIB_NAME_AW(OemToCharBuff) +INT16 WINAPI OffsetClipRgn16(HDC16,INT16,INT16); +INT32 WINAPI OffsetClipRgn32(HDC32,INT32,INT32); +#define OffsetClipRgn WINELIB_NAME(OffsetClipRgn) +void WINAPI OffsetRect16(LPRECT16,INT16,INT16); +void WINAPI OffsetRect32(LPRECT32,INT32,INT32); +#define OffsetRect WINELIB_NAME(OffsetRect) +INT16 WINAPI OffsetRgn16(HRGN16,INT16,INT16); +INT32 WINAPI OffsetRgn32(HRGN32,INT32,INT32); +#define OffsetRgn WINELIB_NAME(OffsetRgn) +BOOL16 WINAPI OffsetViewportOrgEx16(HDC16,INT16,INT16,LPPOINT16); +BOOL32 WINAPI OffsetViewportOrgEx32(HDC32,INT32,INT32,LPPOINT32); +#define OffsetViewportOrgEx WINELIB_NAME(OffsetViewportOrgEx) +BOOL16 WINAPI OffsetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16); +BOOL32 WINAPI OffsetWindowOrgEx32(HDC32,INT32,INT32,LPPOINT32); +#define OffsetWindowOrgEx WINELIB_NAME(OffsetWindowOrgEx) +BOOL16 WINAPI OpenClipboard16(HWND16); +BOOL32 WINAPI OpenClipboard32(HWND32); +#define OpenClipboard WINELIB_NAME(OpenClipboard) +HFILE16 WINAPI OpenFile16(LPCSTR,OFSTRUCT*,UINT16); +HFILE32 WINAPI OpenFile32(LPCSTR,OFSTRUCT*,UINT32); +#define OpenFile WINELIB_NAME(OpenFile) +BOOL16 WINAPI OpenIcon16(HWND16); +BOOL32 WINAPI OpenIcon32(HWND32); +#define OpenIcon WINELIB_NAME(OpenIcon) +INT16 WINAPI OpenSound16(void); +VOID WINAPI OpenSound32(void); +#define OpenSound WINELIB_NAME(OpenSound) +VOID WINAPI OutputDebugString16(LPCSTR); +VOID WINAPI OutputDebugString32A(LPCSTR); +VOID WINAPI OutputDebugString32W(LPCWSTR); +#define OutputDebugString WINELIB_NAME_AW(OutputDebugString) +BOOL16 WINAPI PaintRgn16(HDC16,HRGN16); +BOOL32 WINAPI PaintRgn32(HDC32,HRGN32); +#define PaintRgn WINELIB_NAME(PaintRgn) +BOOL16 WINAPI PatBlt16(HDC16,INT16,INT16,INT16,INT16,DWORD); +BOOL32 WINAPI PatBlt32(HDC32,INT32,INT32,INT32,INT32,DWORD); +#define PatBlt WINELIB_NAME(PatBlt) +BOOL16 WINAPI PeekMessage16(LPMSG16,HWND16,UINT16,UINT16,UINT16); +BOOL32 WINAPI PeekMessage32A(LPMSG32,HWND32,UINT32,UINT32,UINT32); +BOOL32 WINAPI PeekMessage32W(LPMSG32,HWND32,UINT32,UINT32,UINT32); +#define PeekMessage WINELIB_NAME_AW(PeekMessage) +BOOL16 WINAPI Pie16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16,INT16); +BOOL32 WINAPI Pie32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32,INT32); +#define Pie WINELIB_NAME(Pie) +BOOL16 WINAPI PlayMetaFile16(HDC16,HMETAFILE16); +BOOL32 WINAPI PlayMetaFile32(HDC32,HMETAFILE32); +#define PlayMetaFile WINELIB_NAME(PlayMetaFile) +VOID WINAPI PlayMetaFileRecord16(HDC16,LPHANDLETABLE16,LPMETARECORD,UINT16); +BOOL32 WINAPI PlayMetaFileRecord32(HDC32,LPHANDLETABLE32,LPMETARECORD,UINT32); +#define PlayMetaFileRecord WINELIB_NAME(PlayMetaFileRecord) +BOOL16 WINAPI PolyPolygon16(HDC16,LPPOINT16,LPINT16,UINT16); +BOOL32 WINAPI PolyPolygon32(HDC32,LPPOINT32,LPINT32,UINT32); +#define PolyPolygon WINELIB_NAME(PolyPolygon) +BOOL16 WINAPI Polygon16(HDC16,LPPOINT16,INT16); +BOOL32 WINAPI Polygon32(HDC32,LPPOINT32,INT32); +#define Polygon WINELIB_NAME(Polygon) +BOOL16 WINAPI Polyline16(HDC16,LPPOINT16,INT16); +BOOL32 WINAPI Polyline32(HDC32,LPPOINT32,INT32); +#define Polyline WINELIB_NAME(Polyline) +BOOL16 WINAPI PostAppMessage16(HTASK16,UINT16,WPARAM16,LPARAM); +#define PostAppMessage32A(thread,msg,wparam,lparam) \ + PostThreadMessage32A((DWORD)(thread),msg,wparam,lparam) +#define PostAppMessage32W(thread,msg,wparam,lparam) \ + PostThreadMessage32W((DWORD)(thread),msg,wparam,lparam) +#define PostAppMessage WINELIB_NAME_AW(PostAppMessage) +BOOL16 WINAPI PostMessage16(HWND16,UINT16,WPARAM16,LPARAM); +BOOL32 WINAPI PostMessage32A(HWND32,UINT32,WPARAM32,LPARAM); +BOOL32 WINAPI PostMessage32W(HWND32,UINT32,WPARAM32,LPARAM); +#define PostMessage WINELIB_NAME_AW(PostMessage) +void WINAPI PostQuitMessage16(INT16); +void WINAPI PostQuitMessage32(INT32); +#define PostQuitMessage WINELIB_NAME(PostQuitMessage) +BOOL16 WINAPI PtInRect16(const RECT16*,POINT16); +BOOL32 WINAPI PtInRect32(const RECT32*,POINT32); +#define PtInRect WINELIB_NAME(PtInRect) +BOOL16 WINAPI PtInRegion16(HRGN16,INT16,INT16); +BOOL32 WINAPI PtInRegion32(HRGN32,INT32,INT32); +#define PtInRegion WINELIB_NAME(PtInRegion) +BOOL16 WINAPI PtVisible16(HDC16,INT16,INT16); +BOOL32 WINAPI PtVisible32(HDC32,INT32,INT32); +#define PtVisible WINELIB_NAME(PtVisible) +UINT16 WINAPI RealizePalette16(HDC16); +UINT32 WINAPI RealizePalette32(HDC32); +#define RealizePalette WINELIB_NAME(RealizePalette) +BOOL16 WINAPI Rectangle16(HDC16,INT16,INT16,INT16,INT16); +BOOL32 WINAPI Rectangle32(HDC32,INT32,INT32,INT32,INT32); +#define Rectangle WINELIB_NAME(Rectangle) +BOOL16 WINAPI RectInRegion16(HRGN16,const RECT16 *); +BOOL32 WINAPI RectInRegion32(HRGN32,const RECT32 *); +#define RectInRegion WINELIB_NAME(RectInRegion) +BOOL16 WINAPI RectVisible16(HDC16,LPRECT16); +BOOL32 WINAPI RectVisible32(HDC32,LPRECT32); +#define RectVisible WINELIB_NAME(RectVisible) +BOOL16 WINAPI RedrawWindow16(HWND16,const RECT16*,HRGN16,UINT16); +BOOL32 WINAPI RedrawWindow32(HWND32,const RECT32*,HRGN32,UINT32); +#define RedrawWindow WINELIB_NAME(RedrawWindow) +DWORD WINAPI RegCreateKey16(HKEY,LPCSTR,LPHKEY); +DWORD WINAPI RegCreateKey32A(HKEY,LPCSTR,LPHKEY); +DWORD WINAPI RegCreateKey32W(HKEY,LPCWSTR,LPHKEY); +#define RegCreateKey WINELIB_NAME_AW(RegCreateKey) +DWORD WINAPI RegDeleteKey16(HKEY,LPCSTR); +DWORD WINAPI RegDeleteKey32A(HKEY,LPCSTR); +DWORD WINAPI RegDeleteKey32W(HKEY,LPWSTR); +#define RegDeleteKey WINELIB_NAME_AW(RegDeleteKey) +DWORD WINAPI RegDeleteValue16(HKEY,LPSTR); +DWORD WINAPI RegDeleteValue32A(HKEY,LPSTR); +DWORD WINAPI RegDeleteValue32W(HKEY,LPWSTR); +#define RegDeleteValue WINELIB_NAME_AW(RegDeleteValue) +DWORD WINAPI RegEnumKey16(HKEY,DWORD,LPSTR,DWORD); +DWORD WINAPI RegEnumKey32A(HKEY,DWORD,LPSTR,DWORD); +DWORD WINAPI RegEnumKey32W(HKEY,DWORD,LPWSTR,DWORD); +#define RegEnumKey WINELIB_NAME_AW(RegEnumKey) +DWORD WINAPI RegEnumValue16(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD); +DWORD WINAPI RegEnumValue32A(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD); +DWORD WINAPI RegEnumValue32W(HKEY,DWORD,LPWSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD); +#define RegEnumValue WINELIB_NAME_AW(RegEnumValue) +ATOM WINAPI RegisterClass16(const WNDCLASS16*); +ATOM WINAPI RegisterClass32A(const WNDCLASS32A *); +ATOM WINAPI RegisterClass32W(const WNDCLASS32W *); +#define RegisterClass WINELIB_NAME_AW(RegisterClass) +ATOM WINAPI RegisterClassEx16(const WNDCLASSEX16*); +ATOM WINAPI RegisterClassEx32A(const WNDCLASSEX32A *); +ATOM WINAPI RegisterClassEx32W(const WNDCLASSEX32W *); +#define RegisterClassEx WINELIB_NAME_AW(RegisterClassEx) +UINT16 WINAPI RegisterClipboardFormat16(LPCSTR); +UINT32 WINAPI RegisterClipboardFormat32A(LPCSTR); +UINT32 WINAPI RegisterClipboardFormat32W(LPCWSTR); +#define RegisterClipboardFormat WINELIB_NAME_AW(RegisterClipboardFormat) +WORD WINAPI RegisterWindowMessage16(SEGPTR); +WORD WINAPI RegisterWindowMessage32A(LPCSTR); +WORD WINAPI RegisterWindowMessage32W(LPCWSTR); +#define RegisterWindowMessage WINELIB_NAME_AW(RegisterWindowMessage) +DWORD WINAPI RegOpenKey16(HKEY,LPCSTR,LPHKEY); +DWORD WINAPI RegOpenKey32A(HKEY,LPCSTR,LPHKEY); +DWORD WINAPI RegOpenKey32W(HKEY,LPCWSTR,LPHKEY); +#define RegOpenKey WINELIB_NAME_AW(RegOpenKey) +DWORD WINAPI RegQueryValue16(HKEY,LPSTR,LPSTR,LPDWORD); +DWORD WINAPI RegQueryValue32A(HKEY,LPSTR,LPSTR,LPDWORD); +DWORD WINAPI RegQueryValue32W(HKEY,LPWSTR,LPWSTR,LPDWORD); +#define RegQueryValue WINELIB_NAME_AW(RegQueryValue) +DWORD WINAPI RegQueryValueEx16(HKEY,LPSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); +DWORD WINAPI RegQueryValueEx32A(HKEY,LPSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); +DWORD WINAPI RegQueryValueEx32W(HKEY,LPWSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD); +#define RegQueryValueEx WINELIB_NAME_AW(RegQueryValueEx) +DWORD WINAPI RegSetValue16(HKEY,LPCSTR,DWORD,LPCSTR,DWORD); +DWORD WINAPI RegSetValue32A(HKEY,LPCSTR,DWORD,LPCSTR,DWORD); +DWORD WINAPI RegSetValue32W(HKEY,LPCWSTR,DWORD,LPCWSTR,DWORD); +#define RegSetValue WINELIB_NAME_AW(RegSetValue) +DWORD WINAPI RegSetValueEx16(HKEY,LPSTR,DWORD,DWORD,LPBYTE,DWORD); +DWORD WINAPI RegSetValueEx32A(HKEY,LPSTR,DWORD,DWORD,LPBYTE,DWORD); +DWORD WINAPI RegSetValueEx32W(HKEY,LPWSTR,DWORD,DWORD,LPBYTE,DWORD); +#define RegSetValueEx WINELIB_NAME_AW(RegSetValueEx) +INT16 WINAPI ReleaseDC16(HWND16,HDC16); +INT32 WINAPI ReleaseDC32(HWND32,HDC32); +#define ReleaseDC WINELIB_NAME(ReleaseDC) +BOOL16 WINAPI RemoveDirectory16(LPCSTR); +BOOL32 WINAPI RemoveDirectory32A(LPCSTR); +BOOL32 WINAPI RemoveDirectory32W(LPCWSTR); +#define RemoveDirectory WINELIB_NAME_AW(RemoveDirectory) +BOOL16 WINAPI RemoveFontResource16(SEGPTR); +BOOL32 WINAPI RemoveFontResource32A(LPCSTR); +BOOL32 WINAPI RemoveFontResource32W(LPCWSTR); +#define RemoveFontResource WINELIB_NAME_AW(RemoveFontResource) +BOOL16 WINAPI RemoveMenu16(HMENU16,UINT16,UINT16); +BOOL32 WINAPI RemoveMenu32(HMENU32,UINT32,UINT32); +#define RemoveMenu WINELIB_NAME(RemoveMenu) +HANDLE16 WINAPI RemoveProp16(HWND16,LPCSTR); +HANDLE32 WINAPI RemoveProp32A(HWND32,LPCSTR); +HANDLE32 WINAPI RemoveProp32W(HWND32,LPCWSTR); +#define RemoveProp WINELIB_NAME_AW(RemoveProp) +VOID WINAPI ReplyMessage16(LRESULT); +BOOL32 WINAPI ReplyMessage32(LRESULT); +#define ReplyMessage WINELIB_NAME(ReplyMessage) +HDC16 WINAPI ResetDC16(HDC16,const DEVMODE16 *); +HDC32 WINAPI ResetDC32A(HDC32,const DEVMODE32A *); +HDC32 WINAPI ResetDC32W(HDC32,const DEVMODE32W *); +#define ResetDC WINELIB_NAME_AW(ResetDC) +BOOL16 WINAPI ResizePalette16(HPALETTE16,UINT16); +BOOL32 WINAPI ResizePalette32(HPALETTE32,UINT32); +#define ResizePalette WINELIB_NAME(ResizePalette) +BOOL16 WINAPI RestoreDC16(HDC16,INT16); +BOOL32 WINAPI RestoreDC32(HDC32,INT32); +#define RestoreDC WINELIB_NAME(RestoreDC) +BOOL16 WINAPI RoundRect16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16); +BOOL32 WINAPI RoundRect32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32); +#define RoundRect WINELIB_NAME(RoundRect) +INT16 WINAPI SaveDC16(HDC16); +INT32 WINAPI SaveDC32(HDC32); +#define SaveDC WINELIB_NAME(SaveDC) +BOOL16 WINAPI ScaleViewportExtEx16(HDC16,INT16,INT16,INT16,INT16,LPSIZE16); +BOOL32 WINAPI ScaleViewportExtEx32(HDC32,INT32,INT32,INT32,INT32,LPSIZE32); +#define ScaleViewportExtEx WINELIB_NAME(ScaleViewportExtEx) +BOOL16 WINAPI ScaleWindowExtEx16(HDC16,INT16,INT16,INT16,INT16,LPSIZE16); +BOOL32 WINAPI ScaleWindowExtEx32(HDC32,INT32,INT32,INT32,INT32,LPSIZE32); +#define ScaleWindowExtEx WINELIB_NAME(ScaleWindowExtEx) +void WINAPI ScreenToClient16(HWND16,LPPOINT16); +void WINAPI ScreenToClient32(HWND32,LPPOINT32); +#define ScreenToClient WINELIB_NAME(ScreenToClient) +VOID WINAPI ScrollChildren16(HWND16,UINT16,WPARAM16,LPARAM); +VOID WINAPI ScrollChildren32(HWND32,UINT32,WPARAM32,LPARAM); +#define ScrollChildren WINELIB_NAME(ScrollChildren) +BOOL16 WINAPI ScrollDC16(HDC16,INT16,INT16,const RECT16*,const RECT16*, HRGN16,LPRECT16); -BOOL32 ScrollDC32(HDC32,INT32,INT32,const RECT32*,const RECT32*, +BOOL32 WINAPI ScrollDC32(HDC32,INT32,INT32,const RECT32*,const RECT32*, HRGN32,LPRECT32); -#define ScrollDC WINELIB_NAME(ScrollDC) -void ScrollWindow16(HWND16,INT16,INT16,const RECT16*,const RECT16*); -BOOL32 ScrollWindow32(HWND32,INT32,INT32,const RECT32*,const RECT32*); -#define ScrollWindow WINELIB_NAME(ScrollWindow) -INT16 ScrollWindowEx16(HWND16,INT16,INT16,const RECT16*,const RECT16*, - HRGN16,LPRECT16,UINT16); -INT32 ScrollWindowEx32(HWND32,INT32,INT32,const RECT32*,const RECT32*, - HRGN32,LPRECT32,UINT32); -#define ScrollWindowEx WINELIB_NAME(ScrollWindowEx) -INT16 SelectClipRgn16(HDC16,HRGN16); -INT32 SelectClipRgn32(HDC32,HRGN32); -#define SelectClipRgn WINELIB_NAME(SelectClipRgn) -HGDIOBJ16 SelectObject16(HDC16,HGDIOBJ16); -HGDIOBJ32 SelectObject32(HDC32,HGDIOBJ32); -#define SelectObject WINELIB_NAME(SelectObject) -HPALETTE16 SelectPalette16(HDC16,HPALETTE16,BOOL16); -HPALETTE32 SelectPalette32(HDC32,HPALETTE32,BOOL32); -#define SelectPalette WINELIB_NAME(SelectPalette) -LRESULT SendDlgItemMessage16(HWND16,INT16,UINT16,WPARAM16,LPARAM); -LRESULT SendDlgItemMessage32A(HWND32,INT32,UINT32,WPARAM32,LPARAM); -LRESULT SendDlgItemMessage32W(HWND32,INT32,UINT32,WPARAM32,LPARAM); -#define SendDlgItemMessage WINELIB_NAME_AW(SendDlgItemMessage) -LRESULT SendMessage16(HWND16,UINT16,WPARAM16,LPARAM); -LRESULT SendMessage32A(HWND32,UINT32,WPARAM32,LPARAM); -LRESULT SendMessage32W(HWND32,UINT32,WPARAM32,LPARAM); -#define SendMessage WINELIB_NAME_AW(SendMessage) -HWND16 SetActiveWindow16(HWND16); -HWND32 SetActiveWindow32(HWND32); -#define SetActiveWindow WINELIB_NAME(SetActiveWindow) -LONG SetBitmapBits16(HBITMAP16,LONG,LPCVOID); -LONG SetBitmapBits32(HBITMAP32,LONG,LPCVOID); -#define SetBitmapBits WINELIB_NAME(SetBitmapBits) -BOOL16 SetBitmapDimensionEx16(HBITMAP16,INT16,INT16,LPSIZE16); -BOOL32 SetBitmapDimensionEx32(HBITMAP32,INT32,INT32,LPSIZE32); -#define SetBitmapDimensionEx WINELIB_NAME(SetBitmapDimensionEx) -COLORREF SetBkColor16(HDC16,COLORREF); -COLORREF SetBkColor32(HDC32,COLORREF); -#define SetBkColor WINELIB_NAME(SetBkColor) -INT16 SetBkMode16(HDC16,INT16); -INT32 SetBkMode32(HDC32,INT32); -#define SetBkMode WINELIB_NAME(SetBkMode) -HWND16 SetCapture16(HWND16); -HWND32 SetCapture32(HWND32); -#define SetCapture WINELIB_NAME(SetCapture) -VOID SetCaretBlinkTime16(UINT16); -BOOL32 SetCaretBlinkTime32(UINT32); -#define SetCaretBlinkTime WINELIB_NAME(SetCaretBlinkTime) -VOID SetCaretPos16(INT16,INT16); -BOOL32 SetCaretPos32(INT32,INT32); -#define SetCaretPos WINELIB_NAME(SetCaretPos) -LONG SetClassLong16(HWND16,INT16,LONG); -LONG SetClassLong32A(HWND32,INT32,LONG); -LONG SetClassLong32W(HWND32,INT32,LONG); -#define SetClassLong WINELIB_NAME_AW(SetClassLong) -WORD SetClassWord16(HWND16,INT16,WORD); -WORD SetClassWord32(HWND32,INT32,WORD); -#define SetClassWord WINELIB_NAME(SetClassWord) -HANDLE16 SetClipboardData16(UINT16,HANDLE16); -HANDLE32 SetClipboardData32(UINT32,HANDLE32); -#define SetClipboardData WINELIB_NAME(SetClipboardData) -HWND16 SetClipboardViewer16(HWND16); -HWND32 SetClipboardViewer32(HWND32); -#define SetClipboardViewer WINELIB_NAME(SetClipboardViewer) -INT16 SetCommBreak16(INT16); -BOOL32 SetCommBreak32(INT32); -#define SetCommBreak WINELIB_NAME(SetCommBreak) -INT16 SetCommState16(LPDCB16); -BOOL32 SetCommState32(INT32,LPDCB32); -#define SetCommState WINELIB_NAME(SetCommState) -BOOL16 SetCurrentDirectory16(LPCSTR); -BOOL32 SetCurrentDirectory32A(LPCSTR); -BOOL32 SetCurrentDirectory32W(LPCWSTR); -#define SetCurrentDirectory WINELIB_NAME_AW(SetCurrentDirectory) -HCURSOR16 SetCursor16(HCURSOR16); -HCURSOR32 SetCursor32(HCURSOR32); -#define SetCursor WINELIB_NAME(SetCursor) -void SetCursorPos16(INT16,INT16); -BOOL32 SetCursorPos32(INT32,INT32); -#define SetCursorPos WINELIB_NAME(SetCursorPos) -BOOL16 SetDeskWallPaper16(LPCSTR); -BOOL32 SetDeskWallPaper32(LPCSTR); -#define SetDeskWallPaper WINELIB_NAME(SetDeskWallPaper) -INT16 SetDIBits16(HDC16,HBITMAP16,UINT16,UINT16,LPCVOID,const BITMAPINFO*,UINT16); -INT32 SetDIBits32(HDC32,HBITMAP32,UINT32,UINT32,LPCVOID,const BITMAPINFO*,UINT32); -#define SetDIBits WINELIB_NAME(SetDIBits) -INT16 SetDIBitsToDevice16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16, - UINT16,UINT16,LPCVOID,const BITMAPINFO*,UINT16); -INT32 SetDIBitsToDevice32(HDC32,INT32,INT32,DWORD,DWORD,INT32,INT32, - UINT32,UINT32,LPCVOID,const BITMAPINFO*,UINT32); -#define SetDIBitsToDevice WINELIB_NAME(SetDIBitsToDevice) -void SetDlgItemInt16(HWND16,INT16,UINT16,BOOL16); -void SetDlgItemInt32(HWND32,INT32,UINT32,BOOL32); -#define SetDlgItemInt WINELIB_NAME(SetDlgItemInt) -void SetDlgItemText16(HWND16,INT16,SEGPTR); -void SetDlgItemText32A(HWND32,INT32,LPCSTR); -void SetDlgItemText32W(HWND32,INT32,LPCWSTR); -#define SetDlgItemText WINELIB_NAME_AW(SetDlgItemText) -VOID SetDoubleClickTime16(UINT16); -BOOL32 SetDoubleClickTime32(UINT32); -#define SetDoubleClickTime WINELIB_NAME(SetDoubleClickTime) -UINT16 SetErrorMode16(UINT16); -UINT32 SetErrorMode32(UINT32); -#define SetErrorMode WINELIB_NAME(SetErrorMode) -BOOL16 SetFileAttributes16(LPCSTR,DWORD); -BOOL32 SetFileAttributes32A(LPCSTR,DWORD); -BOOL32 SetFileAttributes32W(LPCWSTR,DWORD); -#define SetFileAttributes WINELIB_NAME_AW(SetFileAttributes) -HWND16 SetFocus16(HWND16); -HWND32 SetFocus32(HWND32); -#define SetFocus WINELIB_NAME(SetFocus) -UINT16 SetHandleCount16(UINT16); -UINT32 SetHandleCount32(UINT32); -#define SetHandleCount WINELIB_NAME(SetHandleCount) -void SetInternalWindowPos16(HWND16,UINT16,LPRECT16,LPPOINT16); -void SetInternalWindowPos32(HWND32,UINT32,LPRECT32,LPPOINT32); -#define SetInternalWindowPos WINELIB_NAME(SetInternalWindowPos) -INT16 SetMapMode16(HDC16,INT16); -INT32 SetMapMode32(HDC32,INT32); -#define SetMapMode WINELIB_NAME(SetMapMode) -DWORD SetMapperFlags16(HDC16,DWORD); -DWORD SetMapperFlags32(HDC32,DWORD); -#define SetMapperFlags WINELIB_NAME(SetMapperFlags) -BOOL16 SetMenu16(HWND16,HMENU16); -BOOL32 SetMenu32(HWND32,HMENU32); -#define SetMenu WINELIB_NAME(SetMenu) -BOOL16 SetMenuItemBitmaps16(HMENU16,UINT16,UINT16,HBITMAP16,HBITMAP16); -BOOL32 SetMenuItemBitmaps32(HMENU32,UINT32,UINT32,HBITMAP32,HBITMAP32); -#define SetMenuItemBitmaps WINELIB_NAME(SetMenuItemBitmaps) -BOOL16 SetMessageQueue16(INT16); -BOOL32 SetMessageQueue32(INT32); -#define SetMessageQueue WINELIB_NAME(SetMessageQueue) -UINT16 SetPaletteEntries16(HPALETTE16,UINT16,UINT16,LPPALETTEENTRY); -UINT32 SetPaletteEntries32(HPALETTE32,UINT32,UINT32,LPPALETTEENTRY); -#define SetPaletteEntries WINELIB_NAME(SetPaletteEntries) -HWND16 SetParent16(HWND16,HWND16); -HWND32 SetParent32(HWND32,HWND32); -#define SetParent WINELIB_NAME(SetParent) -COLORREF SetPixel16(HDC16,INT16,INT16,COLORREF); -COLORREF SetPixel32(HDC32,INT32,INT32,COLORREF); -#define SetPixel WINELIB_NAME(SetPixel) -INT16 SetPolyFillMode16(HDC16,INT16); -INT32 SetPolyFillMode32(HDC32,INT32); -#define SetPolyFillMode WINELIB_NAME(SetPolyFillMode) -BOOL16 SetProp16(HWND16,LPCSTR,HANDLE16); -BOOL32 SetProp32A(HWND32,LPCSTR,HANDLE32); -BOOL32 SetProp32W(HWND32,LPCWSTR,HANDLE32); -#define SetProp WINELIB_NAME_AW(SetProp) -void SetRect16(LPRECT16,INT16,INT16,INT16,INT16); -void SetRect32(LPRECT32,INT32,INT32,INT32,INT32); -#define SetRect WINELIB_NAME(SetRect) -void SetRectEmpty16(LPRECT16); -void SetRectEmpty32(LPRECT32); -#define SetRectEmpty WINELIB_NAME(SetRectEmpty) -VOID SetRectRgn16(HRGN16,INT16,INT16,INT16,INT16); -VOID SetRectRgn32(HRGN32,INT32,INT32,INT32,INT32); -#define SetRectRgn WINELIB_NAME(SetRectRgn) -INT16 SetRelAbs16(HDC16,INT16); -INT32 SetRelAbs32(HDC32,INT32); -#define SetRelAbs WINELIB_NAME(SetRelAbs) -INT16 SetROP216(HDC16,INT16); -INT32 SetROP232(HDC32,INT32); -#define SetROP2 WINELIB_NAME(SetROP2) -INT16 SetScrollInfo16(HWND16,INT16,const SCROLLINFO*,BOOL16); -INT32 SetScrollInfo32(HWND32,INT32,const SCROLLINFO*,BOOL32); -#define SetScrollInfo WINELIB_NAME(SetScrollInfo) -INT16 SetScrollPos16(HWND16,INT16,INT16,BOOL16); -INT32 SetScrollPos32(HWND32,INT32,INT32,BOOL32); -#define SetScrollPos WINELIB_NAME(SetScrollPos) -void SetScrollRange16(HWND16,INT16,INT16,INT16,BOOL16); -BOOL32 SetScrollRange32(HWND32,INT32,INT32,INT32,BOOL32); -#define SetScrollRange WINELIB_NAME(SetScrollRange) -INT16 SetSoundNoise16(INT16,INT16); -DWORD SetSoundNoise32(DWORD,DWORD); -#define SetSoundNoise WINELIB_NAME(SetSoundNoise) -INT16 SetStretchBltMode16(HDC16,INT16); -INT32 SetStretchBltMode32(HDC32,INT32); -#define SetStretchBltMode WINELIB_NAME(SetStretchBltMode) -VOID SetSysColors16(INT16,const INT16*,const COLORREF*); -BOOL32 SetSysColors32(INT32,const INT32*,const COLORREF*); -#define SetSysColors WINELIB_NAME(SetSysColors) -HWND16 SetSysModalWindow16(HWND16); -#define SetSysModalWindow32(hwnd) ((HWND32)0) -#define SetSysModalWindow WINELIB_NAME(SetSysModalWindow) -BOOL16 SetSystemMenu16(HWND16,HMENU16); -BOOL32 SetSystemMenu32(HWND32,HMENU32); -#define SetSystemMenu WINELIB_NAME(SetSystemMenu) -UINT16 SetSystemPaletteUse16(HDC16,UINT16); -UINT32 SetSystemPaletteUse32(HDC32,UINT32); -#define SetSystemPaletteUse WINELIB_NAME(SetSystemPaletteUse) -UINT16 SetSystemTimer16(HWND16,UINT16,UINT16,TIMERPROC16); -UINT32 SetSystemTimer32(HWND32,UINT32,UINT32,TIMERPROC32); -#define SetSystemTimer WINELIB_NAME(SetSystemTimer) -UINT16 SetTextAlign16(HDC16,UINT16); -UINT32 SetTextAlign32(HDC32,UINT32); -#define SetTextAlign WINELIB_NAME(SetTextAlign) -INT16 SetTextCharacterExtra16(HDC16,INT16); -INT32 SetTextCharacterExtra32(HDC32,INT32); -#define SetTextCharacterExtra WINELIB_NAME(SetTextCharacterExtra) -COLORREF SetTextColor16(HDC16,COLORREF); -COLORREF SetTextColor32(HDC32,COLORREF); -#define SetTextColor WINELIB_NAME(SetTextColor) -INT16 SetTextJustification16(HDC16,INT16,INT16); -BOOL32 SetTextJustification32(HDC32,INT32,INT32); -#define SetTextJustification WINELIB_NAME(SetTextJustification) -UINT16 SetTimer16(HWND16,UINT16,UINT16,TIMERPROC16); -UINT32 SetTimer32(HWND32,UINT32,UINT32,TIMERPROC32); -#define SetTimer WINELIB_NAME(SetTimer) -BOOL16 SetViewportExtEx16(HDC16,INT16,INT16,LPSIZE16); -BOOL32 SetViewportExtEx32(HDC32,INT32,INT32,LPSIZE32); -#define SetViewportExtEx WINELIB_NAME(SetViewportExtEx) -BOOL16 SetViewportOrgEx16(HDC16,INT16,INT16,LPPOINT16); -BOOL32 SetViewportOrgEx32(HDC32,INT32,INT32,LPPOINT32); -#define SetViewportOrgEx WINELIB_NAME(SetViewportOrgEx) -INT16 SetVoiceAccent16(INT16,INT16,INT16,INT16,INT16); -DWORD SetVoiceAccent32(DWORD,DWORD,DWORD,DWORD,DWORD); -#define SetVoiceAccent WINELIB_NAME(SetVoiceAccent) -INT16 SetVoiceEnvelope16(INT16,INT16,INT16); -DWORD SetVoiceEnvelope32(DWORD,DWORD,DWORD); -#define SetVoiceEnvelope WINELIB_NAME(SetVoiceEnvelope) -INT16 SetVoiceNote16(INT16,INT16,INT16,INT16); -DWORD SetVoiceNote32(DWORD,DWORD,DWORD,DWORD); -#define SetVoiceNote WINELIB_NAME(SetVoiceNote) -INT16 SetVoiceQueueSize16(INT16,INT16); -DWORD SetVoiceQueueSize32(DWORD,DWORD); -#define SetVoiceQueueSize WINELIB_NAME(SetVoiceQueueSize) -INT16 SetVoiceSound16(INT16,DWORD,INT16); -DWORD SetVoiceSound32(DWORD,DWORD,DWORD); -#define SetVoiceSound WINELIB_NAME(SetVoiceSound) -INT16 SetVoiceThreshold16(INT16,INT16); -DWORD SetVoiceThreshold32(DWORD,DWORD); -#define SetVoiceThreshold WINELIB_NAME(SetVoiceThreshold) -BOOL16 SetWindowExtEx16(HDC16,INT16,INT16,LPSIZE16); -BOOL32 SetWindowExtEx32(HDC32,INT32,INT32,LPSIZE32); -#define SetWindowExtEx WINELIB_NAME(SetWindowExtEx) -LONG SetWindowLong16(HWND16,INT16,LONG); -LONG SetWindowLong32A(HWND32,INT32,LONG); -LONG SetWindowLong32W(HWND32,INT32,LONG); -#define SetWindowLong WINELIB_NAME_AW(SetWindowLong) -BOOL16 SetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16); -BOOL32 SetWindowOrgEx32(HDC32,INT32,INT32,LPPOINT32); -#define SetWindowOrgEx WINELIB_NAME(SetWindowOrgEx) -BOOL16 SetWindowPlacement16(HWND16,const WINDOWPLACEMENT16*); -BOOL32 SetWindowPlacement32(HWND32,const WINDOWPLACEMENT32*); -#define SetWindowPlacement WINELIB_NAME(SetWindowPlacement) -FARPROC16 SetWindowsHook16(INT16,HOOKPROC16); -HHOOK SetWindowsHook32A(INT32,HOOKPROC32); -HHOOK SetWindowsHook32W(INT32,HOOKPROC32); -#define SetWindowsHook WINELIB_NAME_AW(SetWindowsHook) -HHOOK SetWindowsHookEx16(INT16,HOOKPROC16,HINSTANCE16,HTASK16); -HHOOK SetWindowsHookEx32A(INT32,HOOKPROC32,HINSTANCE32,DWORD); -HHOOK SetWindowsHookEx32W(INT32,HOOKPROC32,HINSTANCE32,DWORD); -#define SetWindowsHookEx WINELIB_NAME_AW(SetWindowsHookEx) -BOOL16 SetWindowPos16(HWND16,HWND16,INT16,INT16,INT16,INT16,WORD); -BOOL32 SetWindowPos32(HWND32,HWND32,INT32,INT32,INT32,INT32,WORD); -#define SetWindowPos WINELIB_NAME(SetWindowPos) -void SetWindowText16(HWND16,SEGPTR); -void SetWindowText32A(HWND32,LPCSTR); -void SetWindowText32W(HWND32,LPCWSTR); -#define SetWindowText WINELIB_NAME_AW(SetWindowText) -WORD SetWindowWord16(HWND16,INT16,WORD); -WORD SetWindowWord32(HWND32,INT32,WORD); -#define SetWindowWord WINELIB_NAME(SetWindowWord) -BOOL16 ShellAbout16(HWND16,LPCSTR,LPCSTR,HICON16); -BOOL32 ShellAbout32A(HWND32,LPCSTR,LPCSTR,HICON32); -BOOL32 ShellAbout32W(HWND32,LPCWSTR,LPCWSTR,HICON32); -#define ShellAbout WINELIB_NAME_AW(ShellAbout) -HINSTANCE16 ShellExecute16(HWND16,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT16); -HINSTANCE32 ShellExecute32A(HWND32,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT32); -HINSTANCE32 ShellExecute32W(HWND32,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,INT32); -#define ShellExecute WINELIB_NAME_AW(ShellExecute) -VOID ShowCaret16(HWND16); -BOOL32 ShowCaret32(HWND32); -#define ShowCaret WINELIB_NAME(ShowCaret) -INT16 ShowCursor16(BOOL16); -INT32 ShowCursor32(BOOL32); -#define ShowCursor WINELIB_NAME(ShowCursor) -void ShowScrollBar16(HWND16,INT16,BOOL16); -BOOL32 ShowScrollBar32(HWND32,INT32,BOOL32); -#define ShowScrollBar WINELIB_NAME(ShowScrollBar) -VOID ShowOwnedPopups16(HWND16,BOOL16); -BOOL32 ShowOwnedPopups32(HWND32,BOOL32); -#define ShowOwnedPopups WINELIB_NAME(ShowOwnedPopups) -BOOL16 ShowWindow16(HWND16,INT16); -BOOL32 ShowWindow32(HWND32,INT32); -#define ShowWindow WINELIB_NAME(ShowWindow) -DWORD SizeofResource16(HMODULE16,HRSRC16); -DWORD SizeofResource32(HMODULE32,HRSRC32); -#define SizeofResource WINELIB_NAME(SizeofResource) -INT16 StartDoc16(HDC16,const DOCINFO16*); -INT32 StartDoc32A(HDC32,const DOCINFO32A*); -INT32 StartDoc32W(HDC32,const DOCINFO32W*); -#define StartDoc WINELIB_NAME_AW(StartDoc) -INT16 StartSound16(void); -VOID StartSound32(void); -#define StartSound WINELIB_NAME(StartSound) -INT16 StopSound16(void); -VOID StopSound32(void); -#define StopSound WINELIB_NAME(StopSound) -BOOL16 StretchBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16,INT16, - INT16,INT16,DWORD); -BOOL32 StretchBlt32(HDC32,INT32,INT32,INT32,INT32,HDC32,INT32,INT32, - INT32,INT32,DWORD); -#define StretchBlt WINELIB_NAME(StretchBlt) -INT16 StretchDIBits16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16,INT16, - INT16,const VOID*,const BITMAPINFO*,UINT16,DWORD); -INT32 StretchDIBits32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32,INT32, - INT32,const VOID*,const BITMAPINFO*,UINT32,DWORD); -#define StretchDIBits WINELIB_NAME(StretchDIBits) -BOOL16 SubtractRect16(LPRECT16,const RECT16*,const RECT16*); -BOOL32 SubtractRect32(LPRECT32,const RECT32*,const RECT32*); -#define SubtractRect WINELIB_NAME(SubtractRect) -BOOL16 SwapMouseButton16(BOOL16); -BOOL32 SwapMouseButton32(BOOL32); -#define SwapMouseButton WINELIB_NAME(SwapMouseButton) -VOID SwitchToThisWindow16(HWND16,BOOL16); -VOID SwitchToThisWindow32(HWND32,BOOL32); -#define SwitchToThisWindow WINELIB_NAME(SwitchToThisWindow) -INT16 SyncAllVoices16(void); -DWORD SyncAllVoices32(void); -#define SyncAllVoices WINELIB_NAME(SyncAllVoices) -BOOL16 SystemParametersInfo16(UINT16,UINT16,LPVOID,UINT16); -BOOL32 SystemParametersInfo32A(UINT32,UINT32,LPVOID,UINT32); -BOOL32 SystemParametersInfo32W(UINT32,UINT32,LPVOID,UINT32); -#define SystemParametersInfo WINELIB_NAME_AW(SystemParametersInfo) -LONG TabbedTextOut16(HDC16,INT16,INT16,LPCSTR,INT16,INT16,const INT16*,INT16); -LONG TabbedTextOut32A(HDC32,INT32,INT32,LPCSTR,INT32,INT32,const INT32*,INT32); -LONG TabbedTextOut32W(HDC32,INT32,INT32,LPCWSTR,INT32,INT32,const INT32*,INT32); -#define TabbedTextOut WINELIB_NAME_AW(TabbedTextOut) -BOOL16 TextOut16(HDC16,INT16,INT16,LPCSTR,INT16); -BOOL32 TextOut32A(HDC32,INT32,INT32,LPCSTR,INT32); -BOOL32 TextOut32W(HDC32,INT32,INT32,LPCWSTR,INT32); -#define TextOut WINELIB_NAME_AW(TextOut) -INT16 ToAscii16(UINT16,UINT16,LPBYTE,LPVOID,UINT16); -INT32 ToAscii32(UINT32,UINT32,LPBYTE,LPWORD,UINT32); -#define ToAscii WINELIB_NAME(ToAscii) -BOOL16 TrackPopupMenu16(HMENU16,UINT16,INT16,INT16,INT16,HWND16,const RECT16*); -BOOL32 TrackPopupMenu32(HMENU32,UINT32,INT32,INT32,INT32,HWND32,const RECT32*); -#define TrackPopupMenu WINELIB_NAME(TrackPopupMenu) -INT16 TranslateAccelerator16(HWND16,HACCEL16,LPMSG16); -INT32 TranslateAccelerator32(HWND32,HACCEL32,LPMSG32); -#define TranslateAccelerator WINELIB_NAME(TranslateAccelerator) -BOOL16 TranslateMDISysAccel16(HWND16,LPMSG16); -BOOL32 TranslateMDISysAccel32(HWND32,LPMSG32); -#define TranslateMDISysAccel WINELIB_NAME(TranslateMDISysAccel) -BOOL16 TranslateMessage16(const MSG16*); -BOOL32 TranslateMessage32(const MSG32*); -#define TranslateMessage WINELIB_NAME(TranslateMessage) -INT16 TransmitCommChar16(INT16,CHAR); -BOOL32 TransmitCommChar32(INT32,CHAR); -#define TransmitCommChar WINELIB_NAME(TransmitCommChar) -BOOL16 UnhookWindowsHook16(INT16,HOOKPROC16); -BOOL32 UnhookWindowsHook32(INT32,HOOKPROC32); -#define UnhookWindowsHook WINELIB_NAME(UnhookWindowsHook) -BOOL16 UnhookWindowsHookEx16(HHOOK); -BOOL32 UnhookWindowsHookEx32(HHOOK); -#define UnhookWindowsHookEx WINELIB_NAME(UnhookWindowsHookEx) -BOOL16 UnionRect16(LPRECT16,const RECT16*,const RECT16*); -BOOL32 UnionRect32(LPRECT32,const RECT32*,const RECT32*); -#define UnionRect WINELIB_NAME(UnionRect) -void UnlockSegment16(HGLOBAL16); -#define UnlockSegment32(handle) GlobalUnfix((HANDLE32)(handle)) -#define UnlockSegment WINELIB_NAME(UnlockSegment) -BOOL16 UnrealizeObject16(HGDIOBJ16); -BOOL32 UnrealizeObject32(HGDIOBJ32); -#define UnrealizeObject WINELIB_NAME(UnrealizeObject) -BOOL16 UnregisterClass16(SEGPTR,HINSTANCE16); -BOOL32 UnregisterClass32A(LPCSTR,HINSTANCE32); -BOOL32 UnregisterClass32W(LPCWSTR,HINSTANCE32); -#define UnregisterClass WINELIB_NAME_AW(UnregisterClass) -INT16 UpdateColors16(HDC16); -BOOL32 UpdateColors32(HDC32); -#define UpdateColors WINELIB_NAME(UpdateColors) -VOID UpdateWindow16(HWND16); -VOID UpdateWindow32(HWND32); -#define UpdateWindow WINELIB_NAME(UpdateWindow) -VOID ValidateRect16(HWND16,const RECT16*); -VOID ValidateRect32(HWND32,const RECT32*); -#define ValidateRect WINELIB_NAME(ValidateRect) -VOID ValidateRgn16(HWND16,HRGN16); -VOID ValidateRgn32(HWND32,HRGN32); -#define ValidateRgn WINELIB_NAME(ValidateRgn) -DWORD VerFindFile16(UINT16,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16*,LPSTR,UINT16*); -DWORD VerFindFile32A(UINT32,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT32*,LPSTR,UINT32*); -DWORD VerFindFile32W(UINT32,LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT32*,LPWSTR,UINT32*); -#define VerFindFile WINELIB_NAME_AW(VerFindFile) -DWORD VerInstallFile16(UINT16,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16*); -DWORD VerInstallFile32A(UINT32,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT32*); -DWORD VerInstallFile32W(UINT32,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT32*); -#define VerInstallFile WINELIB_NAME_AW(VerInstallFile) -DWORD VerLanguageName16(UINT16,LPSTR,UINT16); -DWORD VerLanguageName32A(UINT32,LPSTR,UINT32); -DWORD VerLanguageName32W(UINT32,LPWSTR,UINT32); -#define VerLanguageName WINELIB_NAME_AW(VerLanguageName) -DWORD VerQueryValue16(SEGPTR,LPCSTR,SEGPTR*,UINT16*); -DWORD VerQueryValue32A(LPVOID,LPCSTR,LPVOID*,UINT32*); -DWORD VerQueryValue32W(LPVOID,LPCWSTR,LPVOID*,UINT32*); -#define VerQueryValue WINELIB_NAME_AW(VerQueryValue) -WORD VkKeyScan16(CHAR); -WORD VkKeyScan32A(CHAR); -WORD VkKeyScan32W(WCHAR); -#define VkKeyScan WINELIB_NAME_AW(VkKeyScan) -INT16 WaitSoundState16(INT16); -DWORD WaitSoundState32(DWORD); -#define WaitSoundState WINELIB_NAME(WaitSoundState) -HWND16 WindowFromDC16(HDC16); -HWND32 WindowFromDC32(HDC32); -#define WindowFromDC WINELIB_NAME(WindowFromDC) -HWND16 WindowFromPoint16(POINT16); -HWND32 WindowFromPoint32(POINT32); -#define WindowFromPoint WINELIB_NAME(WindowFromPoint) -BOOL16 WritePrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPCSTR); -BOOL32 WritePrivateProfileString32A(LPCSTR,LPCSTR,LPCSTR,LPCSTR); -BOOL32 WritePrivateProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); -#define WritePrivateProfileString WINELIB_NAME_AW(WritePrivateProfileString) -BOOL16 WriteProfileString16(LPCSTR,LPCSTR,LPCSTR); -BOOL32 WriteProfileString32A(LPCSTR,LPCSTR,LPCSTR); -BOOL32 WriteProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR); -#define WriteProfileString WINELIB_NAME_AW(WriteProfileString) -SEGPTR lstrcat16(SEGPTR,LPCSTR); -LPSTR lstrcat32A(LPSTR,LPCSTR); -LPWSTR lstrcat32W(LPWSTR,LPCWSTR); -#define lstrcat WINELIB_NAME_AW(lstrcat) -SEGPTR lstrcatn16(SEGPTR,LPCSTR,INT16); -LPSTR lstrcatn32A(LPSTR,LPCSTR,INT32); -LPWSTR lstrcatn32W(LPWSTR,LPCWSTR,INT32); -#define lstrcatn WINELIB_NAME_AW(lstrcatn) -INT16 lstrcmp16(LPCSTR,LPCSTR); -INT32 lstrcmp32A(LPCSTR,LPCSTR); -INT32 lstrcmp32W(LPCWSTR,LPCWSTR); -#define lstrcmp WINELIB_NAME_AW(lstrcmp) -INT16 lstrcmpi16(LPCSTR,LPCSTR); -INT32 lstrcmpi32A(LPCSTR,LPCSTR); -INT32 lstrcmpi32W(LPCWSTR,LPCWSTR); -#define lstrcmpi WINELIB_NAME_AW(lstrcmpi) -SEGPTR lstrcpy16(SEGPTR,LPCSTR); -LPSTR lstrcpy32A(LPSTR,LPCSTR); -LPWSTR lstrcpy32W(LPWSTR,LPCWSTR); -#define lstrcpy WINELIB_NAME_AW(lstrcpy) -SEGPTR lstrcpyn16(SEGPTR,LPCSTR,INT16); -LPSTR lstrcpyn32A(LPSTR,LPCSTR,INT32); -LPWSTR lstrcpyn32W(LPWSTR,LPCWSTR,INT32); -#define lstrcpyn WINELIB_NAME_AW(lstrcpyn) -INT16 lstrlen16(LPCSTR); -INT32 lstrlen32A(LPCSTR); -INT32 lstrlen32W(LPCWSTR); -#define lstrlen WINELIB_NAME_AW(lstrlen) -HINSTANCE16 WinExec16(LPCSTR,UINT16); -HINSTANCE32 WinExec32(LPCSTR,UINT32); -#define WinExec WINELIB_NAME(WinExec) -BOOL16 WinHelp16(HWND16,LPCSTR,UINT16,DWORD); -BOOL32 WinHelp32A(HWND32,LPCSTR,UINT32,DWORD); -BOOL32 WinHelp32W(HWND32,LPCWSTR,UINT32,DWORD); -#define WinHelp WINELIB_NAME_AW(WinHelp) -INT16 wsnprintf16(LPSTR,UINT16,LPCSTR,...); -INT32 wsnprintf32A(LPSTR,UINT32,LPCSTR,...); -INT32 wsnprintf32W(LPWSTR,UINT32,LPCWSTR,...); -#define wsnprintf WINELIB_NAME_AW(wsnprintf) -INT16 wsprintf16(LPSTR,LPCSTR,...); -INT32 wsprintf32A(LPSTR,LPCSTR,...); -INT32 wsprintf32W(LPWSTR,LPCWSTR,...); -#define wsprintf WINELIB_NAME_AW(wsprintf) -INT16 wvsnprintf16(LPSTR,UINT16,LPCSTR,LPCVOID); -INT32 wvsnprintf32A(LPSTR,UINT32,LPCSTR,LPCVOID); -INT32 wvsnprintf32W(LPWSTR,UINT32,LPCWSTR,LPCVOID); -#define wvsnprintf WINELIB_NAME_AW(wvsnprintf) -INT16 wvsprintf16(LPSTR,LPCSTR,LPCVOID); -INT32 wvsprintf32A(LPSTR,LPCSTR,LPCVOID); -INT32 wvsprintf32W(LPWSTR,LPCWSTR,LPCVOID); -#define wvsprintf WINELIB_NAME_AW(wvsprintf) -LONG _hread16(HFILE16,LPVOID,LONG); -LONG _hread32(HFILE32,LPVOID,LONG); -#define _hread WINELIB_NAME(_hread) -LONG _hwrite16(HFILE16,LPCSTR,LONG); -LONG _hwrite32(HFILE32,LPCSTR,LONG); -#define _hwrite WINELIB_NAME(_hwrite) -HFILE16 _lcreat16(LPCSTR,INT16); -HFILE32 _lcreat32(LPCSTR,INT32); -#define _lcreat WINELIB_NAME(_lcreat) -HFILE16 _lclose16(HFILE16); -HFILE32 _lclose32(HFILE32); -#define _lclose WINELIB_NAME(_lclose) -LONG _llseek16(HFILE16,LONG,INT16); -LONG _llseek32(HFILE32,LONG,INT32); -#define _llseek WINELIB_NAME(_llseek) -HFILE16 _lopen16(LPCSTR,INT16); -HFILE32 _lopen32(LPCSTR,INT32); -#define _lopen WINELIB_NAME(_lopen) -UINT16 _lread16(HFILE16,LPVOID,UINT16); -UINT32 _lread32(HFILE32,LPVOID,UINT32); -#define _lread WINELIB_NAME(_lread) -UINT16 _lwrite16(HFILE16,LPCSTR,UINT16); -UINT32 _lwrite32(HFILE32,LPCSTR,UINT32); -#define _lwrite WINELIB_NAME(_lwrite) +#define ScrollDC WINELIB_NAME(ScrollDC) +void WINAPI ScrollWindow16(HWND16,INT16,INT16,const RECT16*,const RECT16*); +BOOL32 WINAPI ScrollWindow32(HWND32,INT32,INT32,const RECT32*,const RECT32*); +#define ScrollWindow WINELIB_NAME(ScrollWindow) +INT16 WINAPI ScrollWindowEx16(HWND16,INT16,INT16,const RECT16*, + const RECT16*,HRGN16,LPRECT16,UINT16); +INT32 WINAPI ScrollWindowEx32(HWND32,INT32,INT32,const RECT32*, + const RECT32*,HRGN32,LPRECT32,UINT32); +#define ScrollWindowEx WINELIB_NAME(ScrollWindowEx) +INT16 WINAPI SelectClipRgn16(HDC16,HRGN16); +INT32 WINAPI SelectClipRgn32(HDC32,HRGN32); +#define SelectClipRgn WINELIB_NAME(SelectClipRgn) +HGDIOBJ16 WINAPI SelectObject16(HDC16,HGDIOBJ16); +HGDIOBJ32 WINAPI SelectObject32(HDC32,HGDIOBJ32); +#define SelectObject WINELIB_NAME(SelectObject) +HPALETTE16 WINAPI SelectPalette16(HDC16,HPALETTE16,BOOL16); +HPALETTE32 WINAPI SelectPalette32(HDC32,HPALETTE32,BOOL32); +#define SelectPalette WINELIB_NAME(SelectPalette) +LRESULT WINAPI SendDlgItemMessage16(HWND16,INT16,UINT16,WPARAM16,LPARAM); +LRESULT WINAPI SendDlgItemMessage32A(HWND32,INT32,UINT32,WPARAM32,LPARAM); +LRESULT WINAPI SendDlgItemMessage32W(HWND32,INT32,UINT32,WPARAM32,LPARAM); +#define SendDlgItemMessage WINELIB_NAME_AW(SendDlgItemMessage) +LRESULT WINAPI SendMessage16(HWND16,UINT16,WPARAM16,LPARAM); +LRESULT WINAPI SendMessage32A(HWND32,UINT32,WPARAM32,LPARAM); +LRESULT WINAPI SendMessage32W(HWND32,UINT32,WPARAM32,LPARAM); +#define SendMessage WINELIB_NAME_AW(SendMessage) +HWND16 WINAPI SetActiveWindow16(HWND16); +HWND32 WINAPI SetActiveWindow32(HWND32); +#define SetActiveWindow WINELIB_NAME(SetActiveWindow) +LONG WINAPI SetBitmapBits16(HBITMAP16,LONG,LPCVOID); +LONG WINAPI SetBitmapBits32(HBITMAP32,LONG,LPCVOID); +#define SetBitmapBits WINELIB_NAME(SetBitmapBits) +BOOL16 WINAPI SetBitmapDimensionEx16(HBITMAP16,INT16,INT16,LPSIZE16); +BOOL32 WINAPI SetBitmapDimensionEx32(HBITMAP32,INT32,INT32,LPSIZE32); +#define SetBitmapDimensionEx WINELIB_NAME(SetBitmapDimensionEx) +COLORREF WINAPI SetBkColor16(HDC16,COLORREF); +COLORREF WINAPI SetBkColor32(HDC32,COLORREF); +#define SetBkColor WINELIB_NAME(SetBkColor) +INT16 WINAPI SetBkMode16(HDC16,INT16); +INT32 WINAPI SetBkMode32(HDC32,INT32); +#define SetBkMode WINELIB_NAME(SetBkMode) +HWND16 WINAPI SetCapture16(HWND16); +HWND32 WINAPI SetCapture32(HWND32); +#define SetCapture WINELIB_NAME(SetCapture) +VOID WINAPI SetCaretBlinkTime16(UINT16); +BOOL32 WINAPI SetCaretBlinkTime32(UINT32); +#define SetCaretBlinkTime WINELIB_NAME(SetCaretBlinkTime) +VOID WINAPI SetCaretPos16(INT16,INT16); +BOOL32 WINAPI SetCaretPos32(INT32,INT32); +#define SetCaretPos WINELIB_NAME(SetCaretPos) +LONG WINAPI SetClassLong16(HWND16,INT16,LONG); +LONG WINAPI SetClassLong32A(HWND32,INT32,LONG); +LONG WINAPI SetClassLong32W(HWND32,INT32,LONG); +#define SetClassLong WINELIB_NAME_AW(SetClassLong) +WORD WINAPI SetClassWord16(HWND16,INT16,WORD); +WORD WINAPI SetClassWord32(HWND32,INT32,WORD); +#define SetClassWord WINELIB_NAME(SetClassWord) +HANDLE16 WINAPI SetClipboardData16(UINT16,HANDLE16); +HANDLE32 WINAPI SetClipboardData32(UINT32,HANDLE32); +#define SetClipboardData WINELIB_NAME(SetClipboardData) +HWND16 WINAPI SetClipboardViewer16(HWND16); +HWND32 WINAPI SetClipboardViewer32(HWND32); +#define SetClipboardViewer WINELIB_NAME(SetClipboardViewer) +INT16 WINAPI SetCommBreak16(INT16); +BOOL32 WINAPI SetCommBreak32(INT32); +#define SetCommBreak WINELIB_NAME(SetCommBreak) +INT16 WINAPI SetCommState16(LPDCB16); +BOOL32 WINAPI SetCommState32(INT32,LPDCB32); +#define SetCommState WINELIB_NAME(SetCommState) +BOOL16 WINAPI SetCurrentDirectory16(LPCSTR); +BOOL32 WINAPI SetCurrentDirectory32A(LPCSTR); +BOOL32 WINAPI SetCurrentDirectory32W(LPCWSTR); +#define SetCurrentDirectory WINELIB_NAME_AW(SetCurrentDirectory) +HCURSOR16 WINAPI SetCursor16(HCURSOR16); +HCURSOR32 WINAPI SetCursor32(HCURSOR32); +#define SetCursor WINELIB_NAME(SetCursor) +void WINAPI SetCursorPos16(INT16,INT16); +BOOL32 WINAPI SetCursorPos32(INT32,INT32); +#define SetCursorPos WINELIB_NAME(SetCursorPos) +BOOL16 WINAPI SetDeskWallPaper16(LPCSTR); +BOOL32 WINAPI SetDeskWallPaper32(LPCSTR); +#define SetDeskWallPaper WINELIB_NAME(SetDeskWallPaper) +INT16 WINAPI SetDIBits16(HDC16,HBITMAP16,UINT16,UINT16,LPCVOID,const BITMAPINFO*,UINT16); +INT32 WINAPI SetDIBits32(HDC32,HBITMAP32,UINT32,UINT32,LPCVOID,const BITMAPINFO*,UINT32); +#define SetDIBits WINELIB_NAME(SetDIBits) +INT16 WINAPI SetDIBitsToDevice16(HDC16,INT16,INT16,INT16,INT16,INT16, + INT16,UINT16,UINT16,LPCVOID,const BITMAPINFO*,UINT16); +INT32 WINAPI SetDIBitsToDevice32(HDC32,INT32,INT32,DWORD,DWORD,INT32, + INT32,UINT32,UINT32,LPCVOID,const BITMAPINFO*,UINT32); +#define SetDIBitsToDevice WINELIB_NAME(SetDIBitsToDevice) +void WINAPI SetDlgItemInt16(HWND16,INT16,UINT16,BOOL16); +void WINAPI SetDlgItemInt32(HWND32,INT32,UINT32,BOOL32); +#define SetDlgItemInt WINELIB_NAME(SetDlgItemInt) +void WINAPI SetDlgItemText16(HWND16,INT16,SEGPTR); +void WINAPI SetDlgItemText32A(HWND32,INT32,LPCSTR); +void WINAPI SetDlgItemText32W(HWND32,INT32,LPCWSTR); +#define SetDlgItemText WINELIB_NAME_AW(SetDlgItemText) +VOID WINAPI SetDoubleClickTime16(UINT16); +BOOL32 WINAPI SetDoubleClickTime32(UINT32); +#define SetDoubleClickTime WINELIB_NAME(SetDoubleClickTime) +UINT16 WINAPI SetErrorMode16(UINT16); +UINT32 WINAPI SetErrorMode32(UINT32); +#define SetErrorMode WINELIB_NAME(SetErrorMode) +BOOL16 WINAPI SetFileAttributes16(LPCSTR,DWORD); +BOOL32 WINAPI SetFileAttributes32A(LPCSTR,DWORD); +BOOL32 WINAPI SetFileAttributes32W(LPCWSTR,DWORD); +#define SetFileAttributes WINELIB_NAME_AW(SetFileAttributes) +HWND16 WINAPI SetFocus16(HWND16); +HWND32 WINAPI SetFocus32(HWND32); +#define SetFocus WINELIB_NAME(SetFocus) +UINT16 WINAPI SetHandleCount16(UINT16); +UINT32 WINAPI SetHandleCount32(UINT32); +#define SetHandleCount WINELIB_NAME(SetHandleCount) +void WINAPI SetInternalWindowPos16(HWND16,UINT16,LPRECT16,LPPOINT16); +void WINAPI SetInternalWindowPos32(HWND32,UINT32,LPRECT32,LPPOINT32); +#define SetInternalWindowPos WINELIB_NAME(SetInternalWindowPos) +INT16 WINAPI SetMapMode16(HDC16,INT16); +INT32 WINAPI SetMapMode32(HDC32,INT32); +#define SetMapMode WINELIB_NAME(SetMapMode) +DWORD WINAPI SetMapperFlags16(HDC16,DWORD); +DWORD WINAPI SetMapperFlags32(HDC32,DWORD); +#define SetMapperFlags WINELIB_NAME(SetMapperFlags) +BOOL16 WINAPI SetMenu16(HWND16,HMENU16); +BOOL32 WINAPI SetMenu32(HWND32,HMENU32); +#define SetMenu WINELIB_NAME(SetMenu) +BOOL16 WINAPI SetMenuItemBitmaps16(HMENU16,UINT16,UINT16,HBITMAP16,HBITMAP16); +BOOL32 WINAPI SetMenuItemBitmaps32(HMENU32,UINT32,UINT32,HBITMAP32,HBITMAP32); +#define SetMenuItemBitmaps WINELIB_NAME(SetMenuItemBitmaps) +BOOL16 WINAPI SetMessageQueue16(INT16); +BOOL32 WINAPI SetMessageQueue32(INT32); +#define SetMessageQueue WINELIB_NAME(SetMessageQueue) +UINT16 WINAPI SetPaletteEntries16(HPALETTE16,UINT16,UINT16,LPPALETTEENTRY); +UINT32 WINAPI SetPaletteEntries32(HPALETTE32,UINT32,UINT32,LPPALETTEENTRY); +#define SetPaletteEntries WINELIB_NAME(SetPaletteEntries) +HWND16 WINAPI SetParent16(HWND16,HWND16); +HWND32 WINAPI SetParent32(HWND32,HWND32); +#define SetParent WINELIB_NAME(SetParent) +COLORREF WINAPI SetPixel16(HDC16,INT16,INT16,COLORREF); +COLORREF WINAPI SetPixel32(HDC32,INT32,INT32,COLORREF); +#define SetPixel WINELIB_NAME(SetPixel) +INT16 WINAPI SetPolyFillMode16(HDC16,INT16); +INT32 WINAPI SetPolyFillMode32(HDC32,INT32); +#define SetPolyFillMode WINELIB_NAME(SetPolyFillMode) +BOOL16 WINAPI SetProp16(HWND16,LPCSTR,HANDLE16); +BOOL32 WINAPI SetProp32A(HWND32,LPCSTR,HANDLE32); +BOOL32 WINAPI SetProp32W(HWND32,LPCWSTR,HANDLE32); +#define SetProp WINELIB_NAME_AW(SetProp) +void WINAPI SetRect16(LPRECT16,INT16,INT16,INT16,INT16); +void WINAPI SetRect32(LPRECT32,INT32,INT32,INT32,INT32); +#define SetRect WINELIB_NAME(SetRect) +void WINAPI SetRectEmpty16(LPRECT16); +void WINAPI SetRectEmpty32(LPRECT32); +#define SetRectEmpty WINELIB_NAME(SetRectEmpty) +VOID WINAPI SetRectRgn16(HRGN16,INT16,INT16,INT16,INT16); +VOID WINAPI SetRectRgn32(HRGN32,INT32,INT32,INT32,INT32); +#define SetRectRgn WINELIB_NAME(SetRectRgn) +INT16 WINAPI SetRelAbs16(HDC16,INT16); +INT32 WINAPI SetRelAbs32(HDC32,INT32); +#define SetRelAbs WINELIB_NAME(SetRelAbs) +INT16 WINAPI SetROP216(HDC16,INT16); +INT32 WINAPI SetROP232(HDC32,INT32); +#define SetROP2 WINELIB_NAME(SetROP2) +INT16 WINAPI SetScrollInfo16(HWND16,INT16,const SCROLLINFO*,BOOL16); +INT32 WINAPI SetScrollInfo32(HWND32,INT32,const SCROLLINFO*,BOOL32); +#define SetScrollInfo WINELIB_NAME(SetScrollInfo) +INT16 WINAPI SetScrollPos16(HWND16,INT16,INT16,BOOL16); +INT32 WINAPI SetScrollPos32(HWND32,INT32,INT32,BOOL32); +#define SetScrollPos WINELIB_NAME(SetScrollPos) +void WINAPI SetScrollRange16(HWND16,INT16,INT16,INT16,BOOL16); +BOOL32 WINAPI SetScrollRange32(HWND32,INT32,INT32,INT32,BOOL32); +#define SetScrollRange WINELIB_NAME(SetScrollRange) +INT16 WINAPI SetSoundNoise16(INT16,INT16); +DWORD WINAPI SetSoundNoise32(DWORD,DWORD); +#define SetSoundNoise WINELIB_NAME(SetSoundNoise) +INT16 WINAPI SetStretchBltMode16(HDC16,INT16); +INT32 WINAPI SetStretchBltMode32(HDC32,INT32); +#define SetStretchBltMode WINELIB_NAME(SetStretchBltMode) +VOID WINAPI SetSysColors16(INT16,const INT16*,const COLORREF*); +BOOL32 WINAPI SetSysColors32(INT32,const INT32*,const COLORREF*); +#define SetSysColors WINELIB_NAME(SetSysColors) +HWND16 WINAPI SetSysModalWindow16(HWND16); +#define SetSysModalWindow32(hwnd) ((HWND32)0) +#define SetSysModalWindow WINELIB_NAME(SetSysModalWindow) +BOOL16 WINAPI SetSystemMenu16(HWND16,HMENU16); +BOOL32 WINAPI SetSystemMenu32(HWND32,HMENU32); +#define SetSystemMenu WINELIB_NAME(SetSystemMenu) +UINT16 WINAPI SetSystemPaletteUse16(HDC16,UINT16); +UINT32 WINAPI SetSystemPaletteUse32(HDC32,UINT32); +#define SetSystemPaletteUse WINELIB_NAME(SetSystemPaletteUse) +UINT16 WINAPI SetSystemTimer16(HWND16,UINT16,UINT16,TIMERPROC16); +UINT32 WINAPI SetSystemTimer32(HWND32,UINT32,UINT32,TIMERPROC32); +#define SetSystemTimer WINELIB_NAME(SetSystemTimer) +UINT16 WINAPI SetTextAlign16(HDC16,UINT16); +UINT32 WINAPI SetTextAlign32(HDC32,UINT32); +#define SetTextAlign WINELIB_NAME(SetTextAlign) +INT16 WINAPI SetTextCharacterExtra16(HDC16,INT16); +INT32 WINAPI SetTextCharacterExtra32(HDC32,INT32); +#define SetTextCharacterExtra WINELIB_NAME(SetTextCharacterExtra) +COLORREF WINAPI SetTextColor16(HDC16,COLORREF); +COLORREF WINAPI SetTextColor32(HDC32,COLORREF); +#define SetTextColor WINELIB_NAME(SetTextColor) +INT16 WINAPI SetTextJustification16(HDC16,INT16,INT16); +BOOL32 WINAPI SetTextJustification32(HDC32,INT32,INT32); +#define SetTextJustification WINELIB_NAME(SetTextJustification) +UINT16 WINAPI SetTimer16(HWND16,UINT16,UINT16,TIMERPROC16); +UINT32 WINAPI SetTimer32(HWND32,UINT32,UINT32,TIMERPROC32); +#define SetTimer WINELIB_NAME(SetTimer) +BOOL16 WINAPI SetViewportExtEx16(HDC16,INT16,INT16,LPSIZE16); +BOOL32 WINAPI SetViewportExtEx32(HDC32,INT32,INT32,LPSIZE32); +#define SetViewportExtEx WINELIB_NAME(SetViewportExtEx) +BOOL16 WINAPI SetViewportOrgEx16(HDC16,INT16,INT16,LPPOINT16); +BOOL32 WINAPI SetViewportOrgEx32(HDC32,INT32,INT32,LPPOINT32); +#define SetViewportOrgEx WINELIB_NAME(SetViewportOrgEx) +INT16 WINAPI SetVoiceAccent16(INT16,INT16,INT16,INT16,INT16); +DWORD WINAPI SetVoiceAccent32(DWORD,DWORD,DWORD,DWORD,DWORD); +#define SetVoiceAccent WINELIB_NAME(SetVoiceAccent) +INT16 WINAPI SetVoiceEnvelope16(INT16,INT16,INT16); +DWORD WINAPI SetVoiceEnvelope32(DWORD,DWORD,DWORD); +#define SetVoiceEnvelope WINELIB_NAME(SetVoiceEnvelope) +INT16 WINAPI SetVoiceNote16(INT16,INT16,INT16,INT16); +DWORD WINAPI SetVoiceNote32(DWORD,DWORD,DWORD,DWORD); +#define SetVoiceNote WINELIB_NAME(SetVoiceNote) +INT16 WINAPI SetVoiceQueueSize16(INT16,INT16); +DWORD WINAPI SetVoiceQueueSize32(DWORD,DWORD); +#define SetVoiceQueueSize WINELIB_NAME(SetVoiceQueueSize) +INT16 WINAPI SetVoiceSound16(INT16,DWORD,INT16); +DWORD WINAPI SetVoiceSound32(DWORD,DWORD,DWORD); +#define SetVoiceSound WINELIB_NAME(SetVoiceSound) +INT16 WINAPI SetVoiceThreshold16(INT16,INT16); +DWORD WINAPI SetVoiceThreshold32(DWORD,DWORD); +#define SetVoiceThreshold WINELIB_NAME(SetVoiceThreshold) +BOOL16 WINAPI SetWindowExtEx16(HDC16,INT16,INT16,LPSIZE16); +BOOL32 WINAPI SetWindowExtEx32(HDC32,INT32,INT32,LPSIZE32); +#define SetWindowExtEx WINELIB_NAME(SetWindowExtEx) +LONG WINAPI SetWindowLong16(HWND16,INT16,LONG); +LONG WINAPI SetWindowLong32A(HWND32,INT32,LONG); +LONG WINAPI SetWindowLong32W(HWND32,INT32,LONG); +#define SetWindowLong WINELIB_NAME_AW(SetWindowLong) +BOOL16 WINAPI SetWindowOrgEx16(HDC16,INT16,INT16,LPPOINT16); +BOOL32 WINAPI SetWindowOrgEx32(HDC32,INT32,INT32,LPPOINT32); +#define SetWindowOrgEx WINELIB_NAME(SetWindowOrgEx) +BOOL16 WINAPI SetWindowPlacement16(HWND16,const WINDOWPLACEMENT16*); +BOOL32 WINAPI SetWindowPlacement32(HWND32,const WINDOWPLACEMENT32*); +#define SetWindowPlacement WINELIB_NAME(SetWindowPlacement) +FARPROC16 WINAPI SetWindowsHook16(INT16,HOOKPROC16); +HHOOK WINAPI SetWindowsHook32A(INT32,HOOKPROC32); +HHOOK WINAPI SetWindowsHook32W(INT32,HOOKPROC32); +#define SetWindowsHook WINELIB_NAME_AW(SetWindowsHook) +HHOOK WINAPI SetWindowsHookEx16(INT16,HOOKPROC16,HINSTANCE16,HTASK16); +HHOOK WINAPI SetWindowsHookEx32A(INT32,HOOKPROC32,HINSTANCE32,DWORD); +HHOOK WINAPI SetWindowsHookEx32W(INT32,HOOKPROC32,HINSTANCE32,DWORD); +#define SetWindowsHookEx WINELIB_NAME_AW(SetWindowsHookEx) +BOOL16 WINAPI SetWindowPos16(HWND16,HWND16,INT16,INT16,INT16,INT16,WORD); +BOOL32 WINAPI SetWindowPos32(HWND32,HWND32,INT32,INT32,INT32,INT32,WORD); +#define SetWindowPos WINELIB_NAME(SetWindowPos) +void WINAPI SetWindowText16(HWND16,SEGPTR); +void WINAPI SetWindowText32A(HWND32,LPCSTR); +void WINAPI SetWindowText32W(HWND32,LPCWSTR); +#define SetWindowText WINELIB_NAME_AW(SetWindowText) +WORD WINAPI SetWindowWord16(HWND16,INT16,WORD); +WORD WINAPI SetWindowWord32(HWND32,INT32,WORD); +#define SetWindowWord WINELIB_NAME(SetWindowWord) +BOOL16 WINAPI ShellAbout16(HWND16,LPCSTR,LPCSTR,HICON16); +BOOL32 WINAPI ShellAbout32A(HWND32,LPCSTR,LPCSTR,HICON32); +BOOL32 WINAPI ShellAbout32W(HWND32,LPCWSTR,LPCWSTR,HICON32); +#define ShellAbout WINELIB_NAME_AW(ShellAbout) +HINSTANCE16 WINAPI ShellExecute16(HWND16,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT16); +HINSTANCE32 WINAPI ShellExecute32A(HWND32,LPCSTR,LPCSTR,LPCSTR,LPCSTR,INT32); +HINSTANCE32 WINAPI ShellExecute32W(HWND32,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,INT32); +#define ShellExecute WINELIB_NAME_AW(ShellExecute) +VOID WINAPI ShowCaret16(HWND16); +BOOL32 WINAPI ShowCaret32(HWND32); +#define ShowCaret WINELIB_NAME(ShowCaret) +INT16 WINAPI ShowCursor16(BOOL16); +INT32 WINAPI ShowCursor32(BOOL32); +#define ShowCursor WINELIB_NAME(ShowCursor) +void WINAPI ShowScrollBar16(HWND16,INT16,BOOL16); +BOOL32 WINAPI ShowScrollBar32(HWND32,INT32,BOOL32); +#define ShowScrollBar WINELIB_NAME(ShowScrollBar) +VOID WINAPI ShowOwnedPopups16(HWND16,BOOL16); +BOOL32 WINAPI ShowOwnedPopups32(HWND32,BOOL32); +#define ShowOwnedPopups WINELIB_NAME(ShowOwnedPopups) +BOOL16 WINAPI ShowWindow16(HWND16,INT16); +BOOL32 WINAPI ShowWindow32(HWND32,INT32); +#define ShowWindow WINELIB_NAME(ShowWindow) +DWORD WINAPI SizeofResource16(HMODULE16,HRSRC16); +DWORD WINAPI SizeofResource32(HMODULE32,HRSRC32); +#define SizeofResource WINELIB_NAME(SizeofResource) +INT16 WINAPI StartDoc16(HDC16,const DOCINFO16*); +INT32 WINAPI StartDoc32A(HDC32,const DOCINFO32A*); +INT32 WINAPI StartDoc32W(HDC32,const DOCINFO32W*); +#define StartDoc WINELIB_NAME_AW(StartDoc) +INT16 WINAPI StartSound16(void); +VOID WINAPI StartSound32(void); +#define StartSound WINELIB_NAME(StartSound) +INT16 WINAPI StopSound16(void); +VOID WINAPI StopSound32(void); +#define StopSound WINELIB_NAME(StopSound) +BOOL16 WINAPI StretchBlt16(HDC16,INT16,INT16,INT16,INT16,HDC16,INT16, + INT16,INT16,INT16,DWORD); +BOOL32 WINAPI StretchBlt32(HDC32,INT32,INT32,INT32,INT32,HDC32,INT32, + INT32,INT32,INT32,DWORD); +#define StretchBlt WINELIB_NAME(StretchBlt) +INT16 WINAPI StretchDIBits16(HDC16,INT16,INT16,INT16,INT16,INT16,INT16, + INT16,INT16,const VOID*,const BITMAPINFO*,UINT16,DWORD); +INT32 WINAPI StretchDIBits32(HDC32,INT32,INT32,INT32,INT32,INT32,INT32, + INT32,INT32,const VOID*,const BITMAPINFO*,UINT32,DWORD); +#define StretchDIBits WINELIB_NAME(StretchDIBits) +BOOL16 WINAPI SubtractRect16(LPRECT16,const RECT16*,const RECT16*); +BOOL32 WINAPI SubtractRect32(LPRECT32,const RECT32*,const RECT32*); +#define SubtractRect WINELIB_NAME(SubtractRect) +BOOL16 WINAPI SwapMouseButton16(BOOL16); +BOOL32 WINAPI SwapMouseButton32(BOOL32); +#define SwapMouseButton WINELIB_NAME(SwapMouseButton) +VOID WINAPI SwitchToThisWindow16(HWND16,BOOL16); +VOID WINAPI SwitchToThisWindow32(HWND32,BOOL32); +#define SwitchToThisWindow WINELIB_NAME(SwitchToThisWindow) +INT16 WINAPI SyncAllVoices16(void); +DWORD WINAPI SyncAllVoices32(void); +#define SyncAllVoices WINELIB_NAME(SyncAllVoices) +BOOL16 WINAPI SystemParametersInfo16(UINT16,UINT16,LPVOID,UINT16); +BOOL32 WINAPI SystemParametersInfo32A(UINT32,UINT32,LPVOID,UINT32); +BOOL32 WINAPI SystemParametersInfo32W(UINT32,UINT32,LPVOID,UINT32); +#define SystemParametersInfo WINELIB_NAME_AW(SystemParametersInfo) +LONG WINAPI TabbedTextOut16(HDC16,INT16,INT16,LPCSTR,INT16,INT16,const INT16*,INT16); +LONG WINAPI TabbedTextOut32A(HDC32,INT32,INT32,LPCSTR,INT32,INT32,const INT32*,INT32); +LONG WINAPI TabbedTextOut32W(HDC32,INT32,INT32,LPCWSTR,INT32,INT32,const INT32*,INT32); +#define TabbedTextOut WINELIB_NAME_AW(TabbedTextOut) +BOOL16 WINAPI TextOut16(HDC16,INT16,INT16,LPCSTR,INT16); +BOOL32 WINAPI TextOut32A(HDC32,INT32,INT32,LPCSTR,INT32); +BOOL32 WINAPI TextOut32W(HDC32,INT32,INT32,LPCWSTR,INT32); +#define TextOut WINELIB_NAME_AW(TextOut) +INT16 WINAPI ToAscii16(UINT16,UINT16,LPBYTE,LPVOID,UINT16); +INT32 WINAPI ToAscii32(UINT32,UINT32,LPBYTE,LPWORD,UINT32); +#define ToAscii WINELIB_NAME(ToAscii) +BOOL16 WINAPI TrackPopupMenu16(HMENU16,UINT16,INT16,INT16,INT16,HWND16,const RECT16*); +BOOL32 WINAPI TrackPopupMenu32(HMENU32,UINT32,INT32,INT32,INT32,HWND32,const RECT32*); +#define TrackPopupMenu WINELIB_NAME(TrackPopupMenu) +INT16 WINAPI TranslateAccelerator16(HWND16,HACCEL16,LPMSG16); +INT32 WINAPI TranslateAccelerator32(HWND32,HACCEL32,LPMSG32); +#define TranslateAccelerator WINELIB_NAME(TranslateAccelerator) +BOOL16 WINAPI TranslateMDISysAccel16(HWND16,LPMSG16); +BOOL32 WINAPI TranslateMDISysAccel32(HWND32,LPMSG32); +#define TranslateMDISysAccel WINELIB_NAME(TranslateMDISysAccel) +BOOL16 WINAPI TranslateMessage16(const MSG16*); +BOOL32 WINAPI TranslateMessage32(const MSG32*); +#define TranslateMessage WINELIB_NAME(TranslateMessage) +INT16 WINAPI TransmitCommChar16(INT16,CHAR); +BOOL32 WINAPI TransmitCommChar32(INT32,CHAR); +#define TransmitCommChar WINELIB_NAME(TransmitCommChar) +BOOL16 WINAPI UnhookWindowsHook16(INT16,HOOKPROC16); +BOOL32 WINAPI UnhookWindowsHook32(INT32,HOOKPROC32); +#define UnhookWindowsHook WINELIB_NAME(UnhookWindowsHook) +BOOL16 WINAPI UnhookWindowsHookEx16(HHOOK); +BOOL32 WINAPI UnhookWindowsHookEx32(HHOOK); +#define UnhookWindowsHookEx WINELIB_NAME(UnhookWindowsHookEx) +BOOL16 WINAPI UnionRect16(LPRECT16,const RECT16*,const RECT16*); +BOOL32 WINAPI UnionRect32(LPRECT32,const RECT32*,const RECT32*); +#define UnionRect WINELIB_NAME(UnionRect) +void WINAPI UnlockSegment16(HGLOBAL16); +#define UnlockSegment32(handle) GlobalUnfix((HANDLE32)(handle)) +#define UnlockSegment WINELIB_NAME(UnlockSegment) +BOOL16 WINAPI UnrealizeObject16(HGDIOBJ16); +BOOL32 WINAPI UnrealizeObject32(HGDIOBJ32); +#define UnrealizeObject WINELIB_NAME(UnrealizeObject) +BOOL16 WINAPI UnregisterClass16(SEGPTR,HINSTANCE16); +BOOL32 WINAPI UnregisterClass32A(LPCSTR,HINSTANCE32); +BOOL32 WINAPI UnregisterClass32W(LPCWSTR,HINSTANCE32); +#define UnregisterClass WINELIB_NAME_AW(UnregisterClass) +INT16 WINAPI UpdateColors16(HDC16); +BOOL32 WINAPI UpdateColors32(HDC32); +#define UpdateColors WINELIB_NAME(UpdateColors) +VOID WINAPI UpdateWindow16(HWND16); +VOID WINAPI UpdateWindow32(HWND32); +#define UpdateWindow WINELIB_NAME(UpdateWindow) +VOID WINAPI ValidateRect16(HWND16,const RECT16*); +VOID WINAPI ValidateRect32(HWND32,const RECT32*); +#define ValidateRect WINELIB_NAME(ValidateRect) +VOID WINAPI ValidateRgn16(HWND16,HRGN16); +VOID WINAPI ValidateRgn32(HWND32,HRGN32); +#define ValidateRgn WINELIB_NAME(ValidateRgn) +DWORD WINAPI VerFindFile16(UINT16,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16*,LPSTR,UINT16*); +DWORD WINAPI VerFindFile32A(UINT32,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT32*,LPSTR,UINT32*); +DWORD WINAPI VerFindFile32W(UINT32,LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT32*,LPWSTR,UINT32*); +#define VerFindFile WINELIB_NAME_AW(VerFindFile) +DWORD WINAPI VerInstallFile16(UINT16,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16*); +DWORD WINAPI VerInstallFile32A(UINT32,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT32*); +DWORD WINAPI VerInstallFile32W(UINT32,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR,LPWSTR,UINT32*); +#define VerInstallFile WINELIB_NAME_AW(VerInstallFile) +DWORD WINAPI VerLanguageName16(UINT16,LPSTR,UINT16); +DWORD WINAPI VerLanguageName32A(UINT32,LPSTR,UINT32); +DWORD WINAPI VerLanguageName32W(UINT32,LPWSTR,UINT32); +#define VerLanguageName WINELIB_NAME_AW(VerLanguageName) +DWORD WINAPI VerQueryValue16(SEGPTR,LPCSTR,SEGPTR*,UINT16*); +DWORD WINAPI VerQueryValue32A(LPVOID,LPCSTR,LPVOID*,UINT32*); +DWORD WINAPI VerQueryValue32W(LPVOID,LPCWSTR,LPVOID*,UINT32*); +#define VerQueryValue WINELIB_NAME_AW(VerQueryValue) +WORD WINAPI VkKeyScan16(CHAR); +WORD WINAPI VkKeyScan32A(CHAR); +WORD WINAPI VkKeyScan32W(WCHAR); +#define VkKeyScan WINELIB_NAME_AW(VkKeyScan) +INT16 WINAPI WaitSoundState16(INT16); +DWORD WINAPI WaitSoundState32(DWORD); +#define WaitSoundState WINELIB_NAME(WaitSoundState) +HWND16 WINAPI WindowFromDC16(HDC16); +HWND32 WINAPI WindowFromDC32(HDC32); +#define WindowFromDC WINELIB_NAME(WindowFromDC) +HWND16 WINAPI WindowFromPoint16(POINT16); +HWND32 WINAPI WindowFromPoint32(POINT32); +#define WindowFromPoint WINELIB_NAME(WindowFromPoint) +BOOL16 WINAPI WritePrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPCSTR); +BOOL32 WINAPI WritePrivateProfileString32A(LPCSTR,LPCSTR,LPCSTR,LPCSTR); +BOOL32 WINAPI WritePrivateProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR,LPCWSTR); +#define WritePrivateProfileString WINELIB_NAME_AW(WritePrivateProfileString) +BOOL16 WINAPI WriteProfileString16(LPCSTR,LPCSTR,LPCSTR); +BOOL32 WINAPI WriteProfileString32A(LPCSTR,LPCSTR,LPCSTR); +BOOL32 WINAPI WriteProfileString32W(LPCWSTR,LPCWSTR,LPCWSTR); +#define WriteProfileString WINELIB_NAME_AW(WriteProfileString) +SEGPTR WINAPI lstrcat16(SEGPTR,LPCSTR); +LPSTR WINAPI lstrcat32A(LPSTR,LPCSTR); +LPWSTR WINAPI lstrcat32W(LPWSTR,LPCWSTR); +#define lstrcat WINELIB_NAME_AW(lstrcat) +SEGPTR WINAPI lstrcatn16(SEGPTR,LPCSTR,INT16); +LPSTR WINAPI lstrcatn32A(LPSTR,LPCSTR,INT32); +LPWSTR WINAPI lstrcatn32W(LPWSTR,LPCWSTR,INT32); +#define lstrcatn WINELIB_NAME_AW(lstrcatn) +INT16 WINAPI lstrcmp16(LPCSTR,LPCSTR); +INT32 WINAPI lstrcmp32A(LPCSTR,LPCSTR); +INT32 WINAPI lstrcmp32W(LPCWSTR,LPCWSTR); +#define lstrcmp WINELIB_NAME_AW(lstrcmp) +INT16 WINAPI lstrcmpi16(LPCSTR,LPCSTR); +INT32 WINAPI lstrcmpi32A(LPCSTR,LPCSTR); +INT32 WINAPI lstrcmpi32W(LPCWSTR,LPCWSTR); +#define lstrcmpi WINELIB_NAME_AW(lstrcmpi) +SEGPTR WINAPI lstrcpy16(SEGPTR,LPCSTR); +LPSTR WINAPI lstrcpy32A(LPSTR,LPCSTR); +LPWSTR WINAPI lstrcpy32W(LPWSTR,LPCWSTR); +#define lstrcpy WINELIB_NAME_AW(lstrcpy) +SEGPTR WINAPI lstrcpyn16(SEGPTR,LPCSTR,INT16); +LPSTR WINAPI lstrcpyn32A(LPSTR,LPCSTR,INT32); +LPWSTR WINAPI lstrcpyn32W(LPWSTR,LPCWSTR,INT32); +#define lstrcpyn WINELIB_NAME_AW(lstrcpyn) +INT16 WINAPI lstrlen16(LPCSTR); +INT32 WINAPI lstrlen32A(LPCSTR); +INT32 WINAPI lstrlen32W(LPCWSTR); +#define lstrlen WINELIB_NAME_AW(lstrlen) +HINSTANCE16 WINAPI WinExec16(LPCSTR,UINT16); +HINSTANCE32 WINAPI WinExec32(LPCSTR,UINT32); +#define WinExec WINELIB_NAME(WinExec) +BOOL16 WINAPI WinHelp16(HWND16,LPCSTR,UINT16,DWORD); +BOOL32 WINAPI WinHelp32A(HWND32,LPCSTR,UINT32,DWORD); +BOOL32 WINAPI WinHelp32W(HWND32,LPCWSTR,UINT32,DWORD); +#define WinHelp WINELIB_NAME_AW(WinHelp) +INT16 WINAPIV wsnprintf16(LPSTR,UINT16,LPCSTR,...); +INT32 WINAPIV wsnprintf32A(LPSTR,UINT32,LPCSTR,...); +INT32 WINAPIV wsnprintf32W(LPWSTR,UINT32,LPCWSTR,...); +#define wsnprintf WINELIB_NAME_AW(wsnprintf) +INT16 WINAPIV wsprintf16(LPSTR,LPCSTR,...); +INT32 WINAPIV wsprintf32A(LPSTR,LPCSTR,...); +INT32 WINAPIV wsprintf32W(LPWSTR,LPCWSTR,...); +#define wsprintf WINELIB_NAME_AW(wsprintf) +INT16 WINAPI wvsnprintf16(LPSTR,UINT16,LPCSTR,LPCVOID); +INT32 WINAPI wvsnprintf32A(LPSTR,UINT32,LPCSTR,LPCVOID); +INT32 WINAPI wvsnprintf32W(LPWSTR,UINT32,LPCWSTR,LPCVOID); +#define wvsnprintf WINELIB_NAME_AW(wvsnprintf) +INT16 WINAPI wvsprintf16(LPSTR,LPCSTR,LPCVOID); +INT32 WINAPI wvsprintf32A(LPSTR,LPCSTR,LPCVOID); +INT32 WINAPI wvsprintf32W(LPWSTR,LPCWSTR,LPCVOID); +#define wvsprintf WINELIB_NAME_AW(wvsprintf) +LONG WINAPI _hread16(HFILE16,LPVOID,LONG); +LONG WINAPI _hread32(HFILE32,LPVOID,LONG); +#define _hread WINELIB_NAME(_hread) +LONG WINAPI _hwrite16(HFILE16,LPCSTR,LONG); +LONG WINAPI _hwrite32(HFILE32,LPCSTR,LONG); +#define _hwrite WINELIB_NAME(_hwrite) +HFILE16 WINAPI _lcreat16(LPCSTR,INT16); +HFILE32 WINAPI _lcreat32(LPCSTR,INT32); +#define _lcreat WINELIB_NAME(_lcreat) +HFILE16 WINAPI _lclose16(HFILE16); +HFILE32 WINAPI _lclose32(HFILE32); +#define _lclose WINELIB_NAME(_lclose) +LONG WINAPI _llseek16(HFILE16,LONG,INT16); +LONG WINAPI _llseek32(HFILE32,LONG,INT32); +#define _llseek WINELIB_NAME(_llseek) +HFILE16 WINAPI _lopen16(LPCSTR,INT16); +HFILE32 WINAPI _lopen32(LPCSTR,INT32); +#define _lopen WINELIB_NAME(_lopen) +UINT16 WINAPI _lread16(HFILE16,LPVOID,UINT16); +UINT32 WINAPI _lread32(HFILE32,LPVOID,UINT32); +#define _lread WINELIB_NAME(_lread) +UINT16 WINAPI _lwrite16(HFILE16,LPCSTR,UINT16); +UINT32 WINAPI _lwrite32(HFILE32,LPCSTR,UINT32); +#define _lwrite WINELIB_NAME(_lwrite) /* Extra functions that don't exist in the Windows API */ -INT32 LoadMessage32A(HINSTANCE32,UINT32,WORD,LPSTR,INT32); -INT32 LoadMessage32W(HINSTANCE32,UINT32,WORD,LPWSTR,INT32); -SEGPTR WIN16_GlobalLock16(HGLOBAL16); -SEGPTR WIN16_LockResource(HGLOBAL16); -LONG WIN16_hread(HFILE16,SEGPTR,LONG); -INT32 lstrncmp32A(LPCSTR,LPCSTR,INT32); -INT32 lstrncmp32W(LPCWSTR,LPCWSTR,INT32); -INT32 lstrncmpi32A(LPCSTR,LPCSTR,INT32); -INT32 lstrncmpi32W(LPCWSTR,LPCWSTR,INT32); -LPWSTR lstrcpyAtoW(LPWSTR,LPCSTR); -LPSTR lstrcpyWtoA(LPSTR,LPCWSTR); -LPWSTR lstrcpynAtoW(LPWSTR,LPCSTR,INT32); -LPSTR lstrcpynWtoA(LPSTR,LPCWSTR,INT32); +INT32 WINAPI LoadMessage32A(HINSTANCE32,UINT32,WORD,LPSTR,INT32); +INT32 WINAPI LoadMessage32W(HINSTANCE32,UINT32,WORD,LPWSTR,INT32); +SEGPTR WINAPI WIN16_GlobalLock16(HGLOBAL16); +SEGPTR WINAPI WIN16_LockResource(HGLOBAL16); +LONG WINAPI WIN16_hread(HFILE16,SEGPTR,LONG); +INT32 WINAPI lstrncmp32A(LPCSTR,LPCSTR,INT32); +INT32 WINAPI lstrncmp32W(LPCWSTR,LPCWSTR,INT32); +INT32 WINAPI lstrncmpi32A(LPCSTR,LPCSTR,INT32); +INT32 WINAPI lstrncmpi32W(LPCWSTR,LPCWSTR,INT32); +LPWSTR WINAPI lstrcpyAtoW(LPWSTR,LPCSTR); +LPSTR WINAPI lstrcpyWtoA(LPSTR,LPCWSTR); +LPWSTR WINAPI lstrcpynAtoW(LPWSTR,LPCSTR,INT32); +LPSTR WINAPI lstrcpynWtoA(LPSTR,LPCWSTR,INT32); #ifdef __cplusplus }
diff --git a/include/winnls.h b/include/winnls.h index 04c92d4..b0bb86b 100644 --- a/include/winnls.h +++ b/include/winnls.h
@@ -118,4 +118,15 @@ #define WC_SEPCHARS 0x00000020 #define WC_DEFAULTCHAR 0x00000040 +#define MAKELCID(l, s) (MAKELONG(l, s)) +#define MAKELANGID(p, s) ((((WORD)(s))<<10) | (WORD)(p)) + +#define SORT_DEFAULT 0 +#define SUBLANG_DEFAULT 1 + +#define LANG_SYSTEM_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_SYS_DEFAULT)) +#define LANG_USER_DEFAULT (MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT)) +#define LOCALE_SYSTEM_DEFAULT (MAKELCID(LANG_SYSTEM_DEFAULT, SORT_DEFAULT)) +#define LOCALE_USER_DEFAULT (MAKELCID(LANG_USER_DEFAULT, SORT_DEFAULT)) + #endif /* __WINE_WINNLS_H */
diff --git a/include/winnt.h b/include/winnt.h index 4bd7387..dc6b7cd 100644 --- a/include/winnt.h +++ b/include/winnt.h
@@ -139,6 +139,32 @@ #endif /* __WINE__ */ +/* ifdef _x86_ ... */ +typedef struct _LDT_ENTRY { + WORD LimitLow; + WORD BaseLow; + union { + struct { + BYTE BaseMid; + BYTE Flags1;/*Declare as bytes to avoid alignment problems */ + BYTE Flags2; + BYTE BaseHi; + } Bytes; + struct { + DWORD BaseMid : 8; + DWORD Type : 5; + DWORD Dpl : 2; + DWORD Pres : 1; + DWORD LimitHi : 4; + DWORD Sys : 1; + DWORD Reserved_0 : 1; + DWORD Default_Big : 1; + DWORD Granularity : 1; + DWORD BaseHi : 8; + } Bits; + } HighWord; +} LDT_ENTRY, *LPLDT_ENTRY; + /* * Exception codes */ @@ -255,9 +281,9 @@ typedef LONG (*PTOP_LEVEL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS ExceptionInfo); typedef PTOP_LEVEL_EXCEPTION_FILTER LPTOP_LEVEL_EXCEPTION_FILTER; -DWORD UnhandledExceptionFilter( PEXCEPTION_POINTERS epointers ); +DWORD WINAPI UnhandledExceptionFilter( PEXCEPTION_POINTERS epointers ); LPTOP_LEVEL_EXCEPTION_FILTER -SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER filter ); +WINAPI SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER filter ); /* Language IDs */
diff --git a/include/winsock.h b/include/winsock.h index ed813b7..cfd1ce5 100644 --- a/include/winsock.h +++ b/include/winsock.h
@@ -21,6 +21,7 @@ /* Win16 socket-related types */ typedef UINT16 SOCKET16; +typedef UINT32 SOCKET32; typedef struct ws_hostent { @@ -64,7 +65,9 @@ /* ws_fd_set operations */ -INT16 __WSAFDIsSet( SOCKET16, ws_fd_set * ); +INT16 WINAPI __WSAFDIsSet16( SOCKET16, ws_fd_set * ); +INT32 WINAPI __WSAFDIsSet32( SOCKET32, ws_fd_set * ); +#define __WSAFDIsSet WINELIB_NAME(__WSAFDIsSet); #define WS_FD_CLR(fd, set) do { \ UINT16 __i; \ @@ -141,8 +144,12 @@ * This is used instead of -1, since the * SOCKET type is unsigned. */ -#define INVALID_SOCKET (SOCKET16)(~0) -#define SOCKET_ERROR (-1) +#define INVALID_SOCKET16 (~0) +#define INVALID_SOCKET32 (~0) +#define SOCKET_ERROR (-1) + +DECL_WINELIB_TYPE(INVALID_SOCKET); +DECL_WINELIB_TYPE(SOCKET); /* * Types @@ -221,16 +228,17 @@ /* * Define flags to be used with the WSAAsyncSelect() call. */ -#define WS_FD_READ 0x01 -#define WS_FD_WRITE 0x02 -#define WS_FD_OOB 0x04 -#define WS_FD_ACCEPT 0x08 -#define WS_FD_CONNECT 0x10 -#define WS_FD_CLOSE 0x20 +#define WS_FD_READ 0x0001 +#define WS_FD_WRITE 0x0002 +#define WS_FD_OOB 0x0004 +#define WS_FD_ACCEPT 0x0008 +#define WS_FD_CONNECT 0x0010 +#define WS_FD_CLOSE 0x0020 #define WS_FD_NONBLOCK 0x10000000 /* internal per-socket flags */ #define WS_FD_INACTIVE 0x20000000 #define WS_FD_CONNECTED 0x40000000 +#define WS_FD_RAW 0x80000000 #define WS_FD_INTERNAL 0xFFFF0000 /* @@ -332,35 +340,43 @@ /* Microsoft Windows Extension function prototypes */ -INT16 WSAStartup(UINT16 wVersionRequired, LPWSADATA lpWSAData); -INT16 WSACleanup(void); -void WSASetLastError(INT16 iError); -INT16 WSAGetLastError(void); -BOOL16 WSAIsBlocking(void); -INT16 WSAUnhookBlockingHook(void); -FARPROC16 WSASetBlockingHook(FARPROC16 lpBlockFunc); -INT16 WSACancelBlockingCall(void); -HANDLE16 WSAAsyncGetServByName(HWND16 hWnd, UINT16 wMsg, - LPCSTR name, LPCSTR proto, - SEGPTR buf, INT16 buflen); +INT16 WINAPI WSAStartup16(UINT16 wVersionRequired, LPWSADATA lpWSAData); +INT32 WINAPI WSAStartup32(UINT32 wVersionRequired, LPWSADATA lpWSAData); +#define WSAStartup WINELIB_NAME(WSAStartup); +void WINAPI WSASetLastError16(INT16 iError); +void WINAPI WSASetLastError32(INT32 iError); +#define WSASetLastError WINELIB_NAME(WSASetLastError); +INT32 WINAPI WSACleanup(void); +INT32 WINAPI WSAGetLastError(void); +BOOL32 WINAPI WSAIsBlocking(void); +INT32 WINAPI WSACancelBlockingCall(void); +INT16 WINAPI WSAUnhookBlockingHook16(void); +INT32 WINAPI WSAUnhookBlockingHook32(void); +#define WSAUnhookBlockingHook WINELIB_NAME(WSAUnhookBlockingHook) +FARPROC16 WINAPI WSASetBlockingHook16(FARPROC16 lpBlockFunc); +FARPROC32 WINAPI WSASetBlockingHook32(FARPROC32 lpBlockFunc); +#define WSASetBlockingHook WINELIB_NAME(WSASetBlockingHook) +HANDLE16 WINAPI WSAAsyncGetServByName(HWND16 hWnd, UINT16 wMsg, + LPCSTR name, LPCSTR proto, + SEGPTR buf, INT16 buflen); -HANDLE16 WSAAsyncGetServByPort(HWND16 hWnd, UINT16 wMsg, INT16 port, - LPCSTR proto, SEGPTR buf, INT16 buflen); +HANDLE16 WINAPI WSAAsyncGetServByPort(HWND16 hWnd, UINT16 wMsg, INT16 port, + LPCSTR proto, SEGPTR buf, INT16 buflen); -HANDLE16 WSAAsyncGetProtoByName(HWND16 hWnd, UINT16 wMsg, - LPCSTR name, SEGPTR buf, INT16 buflen); +HANDLE16 WINAPI WSAAsyncGetProtoByName(HWND16 hWnd, UINT16 wMsg, + LPCSTR name, SEGPTR buf, INT16 buflen); -HANDLE16 WSAAsyncGetProtoByNumber(HWND16 hWnd, UINT16 wMsg, - INT16 number, SEGPTR buf, INT16 buflen); +HANDLE16 WINAPI WSAAsyncGetProtoByNumber(HWND16 hWnd, UINT16 wMsg, + INT16 number, SEGPTR buf, INT16 buflen); -HANDLE16 WSAAsyncGetHostByName(HWND16 hWnd, UINT16 wMsg, - LPCSTR name, SEGPTR buf, INT16 buflen); +HANDLE16 WINAPI WSAAsyncGetHostByName(HWND16 hWnd, UINT16 wMsg, + LPCSTR name, SEGPTR buf, INT16 buflen); -HANDLE16 WSAAsyncGetHostByAddr(HWND16 hWnd, UINT16 wMsg, LPCSTR addr, INT16 len, - INT16 type, SEGPTR buf, INT16 buflen); - -INT16 WSACancelAsyncRequest(HANDLE16 hAsyncTaskHandle); -INT16 WSAAsyncSelect(SOCKET16 s, HWND16 hWnd, UINT16 wMsg, UINT32 lEvent); +HANDLE16 WINAPI WSAAsyncGetHostByAddr(HWND16 hWnd, UINT16 wMsg, LPCSTR addr, + INT16 len, INT16 type, SEGPTR buf, INT16 buflen); +INT16 WINAPI WSACancelAsyncRequest(HANDLE16 hAsyncTaskHandle); +INT16 WINAPI WSAAsyncSelect(SOCKET16 s, HWND16 hWnd, UINT16 wMsg, + UINT32 lEvent); #ifdef __cplusplus } @@ -417,9 +433,13 @@ /* ----------------------------------- internal structures */ -#define WS_DUP_NATIVE 0x0 -#define WS_DUP_OFFSET 0x2 -#define WS_DUP_SEGPTR 0x4 +/* ws_... struct conversion flags */ + +#define WS_DUP_NATIVE 0x0001 /* native structure format (not ws_..) */ +#define WS_DUP_OFFSET 0x0002 /* internal pointers are offsets */ +#define WS_DUP_SEGPTR 0x0004 /* internal pointers are SEGPTRs */ + /* by default, internal pointers are linear */ +/* async DNS op flags */ #define AOP_IO 0x0000001 /* aop_control paramaters */ @@ -437,80 +457,60 @@ /* custom data */ - HWND16 hWnd; - UINT16 uMsg; + HWND16 hWnd; /* hWnd to post */ + UINT16 uMsg; /* uMsg message to. */ - unsigned flags; - SEGPTR buffer_base; - int buflen; + SEGPTR buffer_base; /* buffer to copy result to */ + UINT16 buflen; + UINT16 flags; /* WSMSG_ASYNC_... */ } ws_async_op; -#define WSMSG_ASYNC_SELECT 0x0000001 -#define WSMSG_ASYNC_HOSTBYNAME 0x0000010 -#define WSMSG_ASYNC_HOSTBYADDR 0x0000020 -#define WSMSG_ASYNC_PROTOBYNAME 0x0000100 -#define WSMSG_ASYNC_PROTOBYNUM 0x0000200 -#define WSMSG_ASYNC_SERVBYNAME 0x0001000 -#define WSMSG_ASYNC_SERVBYPORT 0x0002000 +#define WSMSG_ASYNC_HOSTBYNAME 0x0001 +#define WSMSG_ASYNC_HOSTBYADDR 0x0002 +#define WSMSG_ASYNC_PROTOBYNAME 0x0010 +#define WSMSG_ASYNC_PROTOBYNUM 0x0020 +#define WSMSG_ASYNC_SERVBYNAME 0x0100 +#define WSMSG_ASYNC_SERVBYPORT 0x0200 +#define WSMSG_DEAD_AOP 0x8000 -#define MTYPE_PARENT 0x50505357 -#define MTYPE_CLIENT 0x50435357 - -#pragma pack(1) -typedef struct +typedef struct __sop /* WSAAsyncSelect() control struct */ { - long mtype; /* WSMSG_... */ + struct __sop *next, *prev; - UINT32 lParam; /* WS_FD_... event */ - UINT16 wParam; /* socket handle - used only for MTYPE_CLIENT messages */ -} ipc_packet; + struct __ws* pws; + HWND16 hWnd; + UINT16 uMsg; +} ws_select_op; -#define MTYPE_PARENT_SIZE \ - (sizeof(UINT32)) -#define MTYPE_CLIENT_SIZE \ - (sizeof(ipc_packet) - sizeof(long)) -#pragma pack(4) - -typedef struct +typedef struct __ws /* socket */ { - int fd; - unsigned flags; - ws_async_op* p_aop; /* AsyncSelect() handler */ + int fd; + unsigned flags; + ws_select_op* psop; } ws_socket; -typedef struct -{ - ws_async_op* ws_aop; /* init'ed for getXbyY */ - ws_socket* ws_sock; /* init'ed for AsyncSelect */ - int lEvent; - int lLength; - char* buffer; - char* init; - ipc_packet ip; -} ws_async_ctl; - #define WS_MAX_SOCKETS_PER_THREAD 16 #define WS_MAX_UDP_DATAGRAM 1024 #define WSI_BLOCKINGCALL 0x00000001 /* per-thread info flags */ +#define WSI_BLOCKINGHOOK32 0x00000002 /* 32-bit callback */ -typedef struct __WSINFO +typedef struct _WSINFO { - struct __WSINFO* prev,*next; + struct _WSINFO* prev,*next; unsigned flags; - int err; - INT16 num_startup; + INT32 err; /* WSAGetLastError() return value */ + INT16 num_startup; /* reference counter */ INT16 num_async_rq; - INT16 last_free; + INT16 last_free; /* entry in the socket table */ UINT16 buflen; char* buffer; /* allocated from SEGPTR heap */ char* dbuffer; /* buffer for dummies (32 bytes) */ ws_socket sock[WS_MAX_SOCKETS_PER_THREAD]; - FARPROC16 blocking_hook; - HTASK16 tid; /* owning thread id - better switch - * to TLS when it gets fixed */ + DWORD blocking_hook; + HTASK16 tid; /* owning task id - process might be better */ } WSINFO, *LPWSINFO; int WS_dup_he(LPWSINFO pwsi, struct hostent* p_he, int flag); @@ -527,10 +527,12 @@ int WINSOCK_check_async_op(ws_async_op* p_aop); void WINSOCK_link_async_op(ws_async_op* p_aop); void WINSOCK_unlink_async_op(ws_async_op* p_aop); -void WINSOCK_cancel_async_op(HTASK16 tid); -void WINSOCK_do_async_select(void); -void WINSOCK_Shutdown(void); +int WINSOCK_cancel_async_op(ws_async_op* p_aop); +void WINSOCK_cancel_task_aops(HTASK16, void (*__memfree)(void*) ); + +BOOL32 WINSOCK_HandleIO(int* fd_max, int num_pending, fd_set io_set[3] ); +void WINSOCK_Shutdown(void); UINT16 wsaErrno(void); UINT16 wsaHerrno(void);
diff --git a/include/wintypes.h b/include/wintypes.h index 05d3869..2626921 100644 --- a/include/wintypes.h +++ b/include/wintypes.h
@@ -63,6 +63,40 @@ # define DECL_WINELIB_TYPE_AW(type) typedef WINELIB_NAME_AW(type) type #endif /* __WINE__ */ + +/* Calling conventions definitions */ + +#ifdef not_used_yet + +#ifdef __i386__ +# if defined(__GNUC__) && (__GNUC__ == 2) && (__GNUC_MINOR__ >= 7) +# define __stdcall __attribute__((__stdcall__)) +# define __cdecl __attribute__((__cdecl__)) +# else +# error You need gcc >= 2.7 to build Wine on a 386 +# endif /* __GNUC__ */ +#else /* __i386__ */ +# define __stdcall /* nothing */ +# define __cdecl /* nothing */ +#endif /* __i386__ */ + +#else /* not_used_yet */ + +# define __stdcall /* nothing */ +# define __cdecl /* nothing */ + +#endif /* not_used_yet */ + +#define CALLBACK __stdcall +#define WINAPI __stdcall +#define APIPRIVATE __stdcall +#define PASCAL __stdcall +#define _pascal __stdcall +#define __export __stdcall +#define WINAPIV __cdecl +#define APIENTRY WINAPI + + /* Standard data types. These are the same for emulator and library. */ typedef void VOID; @@ -165,46 +199,46 @@ /* Callback function pointers types */ -typedef LRESULT (*DLGPROC16)(HWND16,UINT16,WPARAM16,LPARAM); -typedef LRESULT (*DLGPROC32)(HWND32,UINT32,WPARAM32,LPARAM); +typedef LRESULT (CALLBACK *DLGPROC16)(HWND16,UINT16,WPARAM16,LPARAM); +typedef LRESULT (CALLBACK *DLGPROC32)(HWND32,UINT32,WPARAM32,LPARAM); DECL_WINELIB_TYPE(DLGPROC); -typedef LRESULT (*DRIVERPROC16)(DWORD,HDRVR16,UINT16,LPARAM,LPARAM); -typedef LRESULT (*DRIVERPROC32)(DWORD,HDRVR32,UINT32,LPARAM,LPARAM); +typedef LRESULT (CALLBACK *DRIVERPROC16)(DWORD,HDRVR16,UINT16,LPARAM,LPARAM); +typedef LRESULT (CALLBACK *DRIVERPROC32)(DWORD,HDRVR32,UINT32,LPARAM,LPARAM); DECL_WINELIB_TYPE(DRIVERPROC); -typedef INT16 (*EDITWORDBREAKPROC16)(LPSTR,INT16,INT16,INT16); -typedef INT32 (*EDITWORDBREAKPROC32A)(LPSTR,INT32,INT32,INT32); -typedef INT32 (*EDITWORDBREAKPROC32W)(LPWSTR,INT32,INT32,INT32); +typedef INT16 (CALLBACK *EDITWORDBREAKPROC16)(LPSTR,INT16,INT16,INT16); +typedef INT32 (CALLBACK *EDITWORDBREAKPROC32A)(LPSTR,INT32,INT32,INT32); +typedef INT32 (CALLBACK *EDITWORDBREAKPROC32W)(LPWSTR,INT32,INT32,INT32); DECL_WINELIB_TYPE_AW(EDITWORDBREAKPROC); -typedef LRESULT (*FARPROC16)(); -typedef LRESULT (*FARPROC32)(); +typedef LRESULT (CALLBACK *FARPROC16)(); +typedef LRESULT (CALLBACK *FARPROC32)(); DECL_WINELIB_TYPE(FARPROC); -typedef INT16 (*GOBJENUMPROC16)(SEGPTR,LPARAM); -typedef INT32 (*GOBJENUMPROC32)(LPVOID,LPARAM); +typedef INT16 (CALLBACK *GOBJENUMPROC16)(SEGPTR,LPARAM); +typedef INT32 (CALLBACK *GOBJENUMPROC32)(LPVOID,LPARAM); DECL_WINELIB_TYPE(GOBJENUMPROC); -typedef BOOL16 (*GRAYSTRINGPROC16)(HDC16,LPARAM,INT16); -typedef BOOL32 (*GRAYSTRINGPROC32)(HDC32,LPARAM,INT32); +typedef BOOL16 (CALLBACK *GRAYSTRINGPROC16)(HDC16,LPARAM,INT16); +typedef BOOL32 (CALLBACK *GRAYSTRINGPROC32)(HDC32,LPARAM,INT32); DECL_WINELIB_TYPE(GRAYSTRINGPROC); -typedef LRESULT (*HOOKPROC16)(INT16,WPARAM16,LPARAM); -typedef LRESULT (*HOOKPROC32)(INT32,WPARAM32,LPARAM); +typedef LRESULT (CALLBACK *HOOKPROC16)(INT16,WPARAM16,LPARAM); +typedef LRESULT (CALLBACK *HOOKPROC32)(INT32,WPARAM32,LPARAM); DECL_WINELIB_TYPE(HOOKPROC); -typedef VOID (*LINEDDAPROC16)(INT16,INT16,LPARAM); -typedef VOID (*LINEDDAPROC32)(INT32,INT32,LPARAM); +typedef VOID (CALLBACK *LINEDDAPROC16)(INT16,INT16,LPARAM); +typedef VOID (CALLBACK *LINEDDAPROC32)(INT32,INT32,LPARAM); DECL_WINELIB_TYPE(LINEDDAPROC); -typedef BOOL16 (*PROPENUMPROC16)(HWND16,SEGPTR,HANDLE16); -typedef BOOL32 (*PROPENUMPROC32A)(HWND32,LPCSTR,HANDLE32); -typedef BOOL32 (*PROPENUMPROC32W)(HWND32,LPCWSTR,HANDLE32); +typedef BOOL16 (CALLBACK *PROPENUMPROC16)(HWND16,SEGPTR,HANDLE16); +typedef BOOL32 (CALLBACK *PROPENUMPROC32A)(HWND32,LPCSTR,HANDLE32); +typedef BOOL32 (CALLBACK *PROPENUMPROC32W)(HWND32,LPCWSTR,HANDLE32); DECL_WINELIB_TYPE_AW(PROPENUMPROC); -typedef BOOL32 (*PROPENUMPROCEX32A)(HWND32,LPCSTR,HANDLE32,LPARAM); -typedef BOOL32 (*PROPENUMPROCEX32W)(HWND32,LPCWSTR,HANDLE32,LPARAM); +typedef BOOL32 (CALLBACK *PROPENUMPROCEX32A)(HWND32,LPCSTR,HANDLE32,LPARAM); +typedef BOOL32 (CALLBACK *PROPENUMPROCEX32W)(HWND32,LPCWSTR,HANDLE32,LPARAM); DECL_WINELIB_TYPE_AW(PROPENUMPROCEX); -typedef VOID (*TIMERPROC16)(HWND16,UINT16,UINT16,DWORD); -typedef VOID (*TIMERPROC32)(HWND32,UINT32,UINT32,DWORD); +typedef VOID (CALLBACK *TIMERPROC16)(HWND16,UINT16,UINT16,DWORD); +typedef VOID (CALLBACK *TIMERPROC32)(HWND32,UINT32,UINT32,DWORD); DECL_WINELIB_TYPE(TIMERPROC); -typedef LRESULT (*WNDENUMPROC16)(HWND16,LPARAM); -typedef LRESULT (*WNDENUMPROC32)(HWND32,LPARAM); +typedef LRESULT (CALLBACK *WNDENUMPROC16)(HWND16,LPARAM); +typedef LRESULT (CALLBACK *WNDENUMPROC32)(HWND32,LPARAM); DECL_WINELIB_TYPE(WNDENUMPROC); -typedef LRESULT (*WNDPROC16)(HWND16,UINT16,WPARAM16,LPARAM); -typedef LRESULT (*WNDPROC32)(HWND32,UINT32,WPARAM32,LPARAM); +typedef LRESULT (CALLBACK *WNDPROC16)(HWND16,UINT16,WPARAM16,LPARAM); +typedef LRESULT (CALLBACK *WNDPROC32)(HWND32,UINT32,WPARAM32,LPARAM); DECL_WINELIB_TYPE(WNDPROC); /* TCHAR data types definitions for Winelib. */ @@ -286,15 +320,10 @@ /* Define some empty macros for compatibility with Windows code. */ #ifndef __WINE__ -#define CALLBACK #define NEAR #define FAR -#define PASCAL -#define WINAPI #define _far #define _near -#define _pascal -#define __export #endif /* __WINE__ */ /* Macro for structure packing. */
diff --git a/include/x11font.h b/include/x11font.h index c87064e..aed042c 100644 --- a/include/x11font.h +++ b/include/x11font.h
@@ -55,9 +55,10 @@ #define FI_VARIABLEPITCH 0x0040 #define FI_FIXEDPITCH 0x0080 -#define FI_ENC_ISO8859 0x0100 -#define FI_ENC_ISO646 0x0200 -#define FI_ENC_ANSI 0x0400 +#define FI_ENC_ISO8859 0x0100 /* iso8859-* */ +#define FI_ENC_ISO646 0x0200 /* iso646* */ +#define FI_ENC_ANSI 0x0400 /* ansi-0 */ +#define FI_ENC_MSCODEPAGE 0x0800 /* cp125-* */ #define FI_FIXEDEX 0x1000 #define FI_NORMAL 0x2000
diff --git a/library/miscstubs.c b/library/miscstubs.c index 045f25a..c472441 100644 --- a/library/miscstubs.c +++ b/library/miscstubs.c
@@ -17,34 +17,6 @@ void CallFrom16_long_wwwll(void) {} void CallFrom32_stdcall_5(void) {} -int CallTo32_LargeStack( int (*func)(), int nbargs, ...) -{ - va_list arglist; - int i,a[32]; - - va_start(arglist,nbargs); - - for(i=0; i<nbargs; i++) a[i]=va_arg(arglist,int); - - switch(nbargs) /* Ewww... Icky. But what can I do? */ - { - case 5: return func(a[0],a[1],a[2],a[3],a[4]); - case 6: return func(a[0],a[1],a[2],a[3],a[4],a[5]); - case 8: return func(a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]); - case 10: return func(a[0],a[1],a[2],a[3],a[4],a[5],a[6], - a[7],a[8],a[9]); - case 11: return func(a[0],a[1],a[2],a[3],a[4],a[5],a[6], - a[7],a[8],a[9],a[10]); - case 14: return func(a[0],a[1],a[2],a[3],a[4],a[5],a[6], - a[7],a[8],a[9],a[10],a[11],a[12],a[13]); - case 16: return func(a[0],a[1],a[2],a[3],a[4],a[5],a[6], - a[7],a[8],a[9],a[10],a[11],a[12],a[13],a[14],a[15]); - default: fprintf(stderr,"JBP: CallTo32_LargeStack called with unsupported " - "number of arguments (%d). Ignored.\n",nbargs); - return 0; - } -} - extern LRESULT ColorDlgProc(HWND16,UINT16,WPARAM16,LPARAM); extern LRESULT FileOpenDlgProc(HWND16,UINT16,WPARAM16,LPARAM); extern LRESULT FileSaveDlgProc(HWND16,UINT16,WPARAM16,LPARAM);
diff --git a/library/winestub.c b/library/winestub.c index d1c53e6..39946b3 100644 --- a/library/winestub.c +++ b/library/winestub.c
@@ -4,16 +4,23 @@ #include "windows.h" #include "xmalloc.h" -extern int WinMain(HINSTANCE32,HINSTANCE32,LPSTR,int); +extern int PASCAL WinMain(HINSTANCE32,HINSTANCE32,LPSTR,int); extern int MAIN_Init(void); extern BOOL32 MAIN_WineInit( int *argc, char *argv[] ); extern void TASK_Reschedule(void); +/* Most Windows C/C++ compilers use something like this to */ +/* access argc and argv globally: */ +int _ARGC; +char **_ARGV; + int main( int argc, char *argv [] ) { HINSTANCE16 hInstance; LPSTR lpszCmdParam; int i, len = 0; + _ARGC = argc; + _ARGV = (char **)argv; MAIN_WineInit( &argc, argv ); @@ -35,51 +42,3 @@ lpszCmdParam, /* lpszCmdParam */ SW_NORMAL); /* nCmdShow */ } - -#if 0 - -extern int WinMain(HINSTANCE32,HINSTANCE32,LPSTR,int); -/* This is the renamed main() subroutine in misc/main.c. */ -/* Note that the libdll `init()' won't work: */ -extern HINSTANCE32 _wine_main(int, char *[]); - -int main (int argc, char *argv []) -{ - HINSTANCE32 hInstance; - char szCmdParam[256] = {0}; - int index, buffer_pos; - char *arg_holder; - /* "Wired-in" command-line options for Wine: */ - /*char *wine_argv[] = {argv[0], "-managed", "-dll", "+commdlg", - "-dll", "+shell", ""};*/ - char *wine_argv[] = {argv[0], ""}; - - /* Initialize the library dll: */ - hInstance = (HINSTANCE32)_wine_main((sizeof(wine_argv)/sizeof(char *))-1, wine_argv); - -#ifdef WIN_DEBUG - fprintf(stderr,"In winestub, reporting hInstance = %d\n", hInstance); -#endif - - /* Move things from argv to the szCmdParam that WinMain expects: */ - for (index = 1, buffer_pos = 0; - (index < argc) && (buffer_pos < 255); - index++, buffer_pos++) - { - for (arg_holder = argv[index]; ; buffer_pos++, arg_holder++) - if ((szCmdParam[buffer_pos] = *arg_holder) == '\0') break; - szCmdParam[buffer_pos] = ' '; - }; - szCmdParam[buffer_pos] = '\0'; - -#ifdef WIN_DEBUG - fprintf(stderr,"In winestub, Program Name: %s, Parameters: %s\n", - progname, szCmdParam); -#endif - - return WinMain (hInstance, /* hInstance */ - 0, /* hPrevInstance */ - (LPSTR)szCmdParam, /* lpszCmdParam */ - SW_NORMAL); /* nCmdShow */ -} -#endif
diff --git a/libtest/expand.c b/libtest/expand.c index 656a3d6..cb2e31a 100644 --- a/libtest/expand.c +++ b/libtest/expand.c
@@ -11,34 +11,29 @@ { OFSTRUCT SourceOpenStruct1, SourceOpenStruct2; char OriginalName[256], WriteBuf[256]; - char FAR *lpzDestFile, - FAR *lpzHolder = lpCmdLine, - FAR *arrgv[2] = {0}; - int wargs; + char FAR *lpzDestFile; DWORD dwreturn; HFILE hSourceFile, hDestFile; + /* Most Windows compilers have something like this: */ + extern int _ARGC; + extern char **_ARGV; - for (wargs = 1; wargs < 3; wargs++) - {arrgv[wargs] = lpzHolder; - for (; *lpzHolder != '\0'; lpzHolder++) - if (*lpzHolder == ' ') {*lpzHolder++ = '\0'; break;}; - }; -MessageBox((HWND)NULL, (LPCSTR)arrgv[1], (LPCSTR)"arrgv[1]:", MB_OK); -MessageBox((HWND)NULL, (LPCSTR)arrgv[2], (LPCSTR)"arrgv[2]:", MB_OK); +MessageBox((HWND)NULL, (LPCSTR)_ARGV[1], (LPCSTR)"_ARGV[1]:", MB_OK); +MessageBox((HWND)NULL, (LPCSTR)_ARGV[2], (LPCSTR)"_ARGV[2]:", MB_OK); - hSourceFile = LZOpenFile(arrgv[1], (LPOFSTRUCT) &SourceOpenStruct1, + hSourceFile = LZOpenFile(_ARGV[1], (LPOFSTRUCT) &SourceOpenStruct1, OF_READ); wsprintf(WriteBuf, "Source File Handle: %d\nNo. of args: %d", - hSourceFile, wargs); + hSourceFile, _ARGC); MessageBox((HWND)NULL, (LPCSTR)WriteBuf, (LPCSTR)NULL, MB_OK); - if ((wargs == 3) && (arrgv[2] != NULL)) lpzDestFile = arrgv[2]; + if ((_ARGC == 3) && (_ARGV[2] != NULL)) lpzDestFile = _ARGV[2]; else { lpzDestFile = OriginalName; - GetExpandedName(arrgv[1], lpzDestFile); + GetExpandedName(_ARGV[1], lpzDestFile); }; MessageBox((HWND)NULL, (LPCSTR)lpzDestFile, (LPCSTR)"Destination File", @@ -47,7 +42,7 @@ hDestFile = LZOpenFile(lpzDestFile, (LPOFSTRUCT) &SourceOpenStruct2, OF_CREATE | OF_WRITE); wsprintf(WriteBuf, "Destination File Handle: %d\nNo. of args: %d", - hDestFile, wargs-1); + hDestFile, _ARGC-1); MessageBox((HWND)NULL, (LPCSTR)WriteBuf, (LPCSTR)NULL, MB_OK); dwreturn = LZCopy(hSourceFile, hDestFile); @@ -68,7 +63,7 @@ MessageBox((HWND)NULL, (LPCSTR)"LZERROR_WRITE\n", (LPCSTR)NULL, MB_OK); if ((long)dwreturn > 0L) {wsprintf((LPSTR)WriteBuf, (LPCSTR)"Successful decompression from %s to %s\n", - arrgv[1], lpzDestFile); + _ARGV[1], lpzDestFile); MessageBox((HWND)NULL, (LPSTR)WriteBuf, (LPCSTR)NULL, MB_OK); }; LZClose(hSourceFile); LZClose(hDestFile);
diff --git a/loader/main.c b/loader/main.c index 4ac8026..b3e4f8b 100644 --- a/loader/main.c +++ b/loader/main.c
@@ -54,6 +54,7 @@ */ int MAIN_Init(void) { + extern BOOL32 EVENT_Init(void); extern BOOL32 RELAY_Init(void); extern BOOL32 WIN16DRV_Init(void); extern BOOL32 VIRTUAL_Init(void); @@ -77,6 +78,9 @@ /* Initialize signal handling */ if (!SIGNAL_Init()) return 0; + /* Initialize event handling */ + if (!EVENT_Init()) return 0; + #ifdef WINELIB /* Create USER and GDI heap */ USER_HeapSel = GlobalAlloc16( GMEM_FIXED, 0x10000 );
diff --git a/loader/module.c b/loader/module.c index bd12830..a41ce37 100644 --- a/loader/module.c +++ b/loader/module.c
@@ -265,7 +265,7 @@ * MODULE_AllocateSegment (WPROCS.26) */ -DWORD MODULE_AllocateSegment(WORD wFlags, WORD wSize, WORD wElem) +DWORD WINAPI MODULE_AllocateSegment(WORD wFlags, WORD wSize, WORD wElem) { WORD size = wSize << wElem; HANDLE16 hMem = GlobalAlloc16( MODULE_Ne2MemFlags(wFlags), size); @@ -478,6 +478,10 @@ if (ne_header.ne_magic == IMAGE_NT_SIGNATURE) return (HMODULE16)21; /* win32 exe */ if (ne_header.ne_magic != IMAGE_OS2_SIGNATURE) return (HMODULE16)11; /* invalid exe */ + if (ne_header.ne_magic == IMAGE_OS2_SIGNATURE_LX) { + fprintf(stderr, "Sorry, this is an OS/2 linear executable (LX) file !\n"); + return (HMODULE16)11; + } /* We now have a valid NE header */ size = sizeof(NE_MODULE) + @@ -805,6 +809,15 @@ /*********************************************************************** + * EntryAddrProc (WPROCS.27) + */ +FARPROC16 WINAPI EntryAddrProc( HMODULE16 hModule, WORD ordinal ) +{ + return MODULE_GetEntryPoint( hModule, ordinal ); +} + + +/*********************************************************************** * MODULE_SetEntryPoint * * Change the value of an entry point. Use with caution! @@ -1286,7 +1299,7 @@ /********************************************************************** * FreeModule16 (KERNEL.46) */ -BOOL16 FreeModule16( HMODULE16 hModule ) +BOOL16 WINAPI FreeModule16( HMODULE16 hModule ) { NE_MODULE *pModule; @@ -1303,13 +1316,13 @@ /********************************************************************** * GetModuleHandle16 (KERNEL.47) */ -HMODULE16 WIN16_GetModuleHandle( SEGPTR name ) +HMODULE16 WINAPI WIN16_GetModuleHandle( SEGPTR name ) { if (HIWORD(name) == 0) return GetExePtr( (HINSTANCE16)name ); return MODULE_FindModule( PTR_SEG_TO_LIN(name) ); } -HMODULE16 GetModuleHandle16( LPCSTR name ) +HMODULE16 WINAPI GetModuleHandle16( LPCSTR name ) { return MODULE_FindModule( name ); } @@ -1318,7 +1331,7 @@ /********************************************************************** * GetModuleUsage (KERNEL.48) */ -INT16 GetModuleUsage( HINSTANCE16 hModule ) +INT16 WINAPI GetModuleUsage( HINSTANCE16 hModule ) { NE_MODULE *pModule; @@ -1333,7 +1346,8 @@ /********************************************************************** * GetModuleFileName16 (KERNEL.49) */ -INT16 GetModuleFileName16( HINSTANCE16 hModule, LPSTR lpFileName, INT16 nSize ) +INT16 WINAPI GetModuleFileName16( HINSTANCE16 hModule, LPSTR lpFileName, + INT16 nSize ) { NE_MODULE *pModule; @@ -1349,7 +1363,8 @@ /*********************************************************************** * GetModuleFileName32A (KERNEL32.235) */ -DWORD GetModuleFileName32A( HMODULE32 hModule, LPSTR lpFileName, DWORD size ) +DWORD WINAPI GetModuleFileName32A( HMODULE32 hModule, LPSTR lpFileName, + DWORD size ) { NE_MODULE *pModule; @@ -1369,7 +1384,8 @@ /*********************************************************************** * GetModuleFileName32W (KERNEL32.236) */ -DWORD GetModuleFileName32W( HMODULE32 hModule, LPWSTR lpFileName, DWORD size ) +DWORD WINAPI GetModuleFileName32W( HMODULE32 hModule, LPWSTR lpFileName, + DWORD size ) { LPSTR fnA = (char*)HeapAlloc( GetProcessHeap(), 0, size ); DWORD res = GetModuleFileName32A( hModule, fnA, size ); @@ -1382,7 +1398,7 @@ /********************************************************************** * GetModuleName (KERNEL.27) */ -BOOL16 GetModuleName( HINSTANCE16 hinst, LPSTR buf, INT16 nSize ) +BOOL16 WINAPI GetModuleName( HINSTANCE16 hinst, LPSTR buf, INT16 nSize ) { LPSTR name = MODULE_GetModuleName(hinst); @@ -1395,7 +1411,8 @@ /*********************************************************************** * LoadLibraryEx32W (KERNEL.513) */ -HINSTANCE16 LoadLibraryEx32W16( LPCSTR libname, HANDLE16 hf, DWORD flags ) +HINSTANCE16 WINAPI LoadLibraryEx32W16( LPCSTR libname, HANDLE16 hf, + DWORD flags ) { fprintf(stderr,"LoadLibraryEx32W(%s,%d,%08lx)\n",libname,hf,flags); if (!flags && !hf) @@ -1406,7 +1423,7 @@ /*********************************************************************** * LoadLibrary (KERNEL.95) */ -HINSTANCE16 LoadLibrary16( LPCSTR libname ) +HINSTANCE16 WINAPI LoadLibrary16( LPCSTR libname ) { HINSTANCE16 handle; @@ -1436,7 +1453,7 @@ /*********************************************************************** * FreeLibrary16 (KERNEL.96) */ -void FreeLibrary16( HINSTANCE16 handle ) +void WINAPI FreeLibrary16( HINSTANCE16 handle ) { dprintf_module( stddeb,"FreeLibrary: %04x\n", handle ); FreeModule16( handle ); @@ -1446,7 +1463,7 @@ /*********************************************************************** * WinExec16 (KERNEL.166) */ -HINSTANCE16 WinExec16( LPCSTR lpCmdLine, UINT16 nCmdShow ) +HINSTANCE16 WINAPI WinExec16( LPCSTR lpCmdLine, UINT16 nCmdShow ) { return WinExec32( lpCmdLine, nCmdShow ); } @@ -1455,7 +1472,7 @@ /*********************************************************************** * WinExec32 (KERNEL32.566) */ -HINSTANCE32 WinExec32( LPCSTR lpCmdLine, UINT32 nCmdShow ) +HINSTANCE32 WINAPI WinExec32( LPCSTR lpCmdLine, UINT32 nCmdShow ) { LOADPARAMS params; HGLOBAL16 cmdShowHandle, cmdLineHandle; @@ -1581,7 +1598,7 @@ argptr = argv; if (iconic) *argptr++ = "-iconic"; *argptr++ = unixfilename; - p = cmdline; + p = cmdline + 1; while (1) { while (*p && (*p == ' ' || *p == '\t')) *p++ = '\0'; @@ -1628,7 +1645,7 @@ * WIN32_GetProcAddress16 (KERNEL32.36) * Get procaddress in 16bit module from win32... (kernel32 undoc. ordinal func) */ -FARPROC16 WIN32_GetProcAddress16( HMODULE16 hModule, LPSTR name ) +FARPROC16 WINAPI WIN32_GetProcAddress16( HMODULE16 hModule, LPSTR name ) { WORD ordinal; FARPROC16 ret; @@ -1656,7 +1673,7 @@ /*********************************************************************** * GetProcAddress16 (KERNEL.50) */ -FARPROC16 GetProcAddress16( HMODULE16 hModule, SEGPTR name ) +FARPROC16 WINAPI GetProcAddress16( HMODULE16 hModule, SEGPTR name ) { WORD ordinal; FARPROC16 ret; @@ -1688,7 +1705,7 @@ /*********************************************************************** * GetProcAddress32 (KERNEL32.257) */ -FARPROC32 GetProcAddress32( HMODULE32 hModule, LPCSTR function ) +FARPROC32 WINAPI GetProcAddress32( HMODULE32 hModule, LPCSTR function ) { #ifndef WINELIB NE_MODULE *pModule; @@ -1713,8 +1730,7 @@ /*********************************************************************** * RtlImageNtHeaders (NTDLL) */ -LPIMAGE_NT_HEADERS -RtlImageNtHeader(HMODULE32 hModule) +LPIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE32 hModule) { #ifndef WINELIB NE_MODULE *pModule; @@ -1734,7 +1750,7 @@ /********************************************************************** * GetExpWinVer (KERNEL.167) */ -WORD GetExpWinVer( HMODULE16 hModule ) +WORD WINAPI GetExpWinVer( HMODULE16 hModule ) { NE_MODULE *pModule = MODULE_GetPtr( hModule ); return pModule ? pModule->expected_version : 0; @@ -1744,7 +1760,7 @@ /********************************************************************** * IsSharedSelector (KERNEL.345) */ -BOOL16 IsSharedSelector( HANDLE16 selector ) +BOOL16 WINAPI IsSharedSelector( HANDLE16 selector ) { /* Check whether the selector belongs to a DLL */ NE_MODULE *pModule = MODULE_GetPtr( GetExePtr( selector )); @@ -1756,7 +1772,7 @@ /********************************************************************** * ModuleFirst (TOOLHELP.59) */ -BOOL16 ModuleFirst( MODULEENTRY *lpme ) +BOOL16 WINAPI ModuleFirst( MODULEENTRY *lpme ) { lpme->wNext = hFirstModule; return ModuleNext( lpme ); @@ -1766,7 +1782,7 @@ /********************************************************************** * ModuleNext (TOOLHELP.60) */ -BOOL16 ModuleNext( MODULEENTRY *lpme ) +BOOL16 WINAPI ModuleNext( MODULEENTRY *lpme ) { NE_MODULE *pModule; @@ -1787,7 +1803,7 @@ /********************************************************************** * ModuleFindName (TOOLHELP.61) */ -BOOL16 ModuleFindName( MODULEENTRY *lpme, LPCSTR name ) +BOOL16 WINAPI ModuleFindName( MODULEENTRY *lpme, LPCSTR name ) { lpme->wNext = GetModuleHandle16( name ); return ModuleNext( lpme ); @@ -1797,7 +1813,7 @@ /********************************************************************** * ModuleFindHandle (TOOLHELP.62) */ -BOOL16 ModuleFindHandle( MODULEENTRY *lpme, HMODULE16 hModule ) +BOOL16 WINAPI ModuleFindHandle( MODULEENTRY *lpme, HMODULE16 hModule ) { hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */ lpme->wNext = hModule;
diff --git a/loader/ne_image.c b/loader/ne_image.c index 3536206..dd0ff09 100644 --- a/loader/ne_image.c +++ b/loader/ne_image.c
@@ -550,7 +550,7 @@ */ /* It does nothing */ -void PatchCodeHandle(HANDLE16 hSel) +void WINAPI PatchCodeHandle(HANDLE16 hSel) { } #endif /* WINELIB */
diff --git a/loader/pe_image.c b/loader/pe_image.c index 5f7660b..223348b 100644 --- a/loader/pe_image.c +++ b/loader/pe_image.c
@@ -27,6 +27,7 @@ #include "global.h" #include "task.h" #include "ldt.h" +#include "options.h" #include "stddebug.h" #include "debug.h" #include "debugger.h" @@ -189,6 +190,8 @@ Module = (char *) RVA(pe_imp->Name); dprintf_win32 (stddeb, "%s\n", Module); + /* FIXME: forwarder entries ... */ + if (pe_imp->u.OriginalFirstThunk != 0) { /* original MS style */ dprintf_win32 (stddeb, "Microsoft style imports used\n"); import_list =(LPIMAGE_THUNK_DATA) RVA(pe_imp->u.OriginalFirstThunk); @@ -402,16 +405,14 @@ fprintf(stderr,")\n"); return; } - /* FIXME: this is a *horrible* hack to make COMDLG32.DLL load OK. The -problem needs to be fixed properly at some stage */ - + * problem needs to be fixed properly at some stage + */ if (pe->pe_header->OptionalHeader.NumberOfRvaAndSizes != 16) { printf("Short PE Header!!!\n"); lseek( fd, -(16 - pe->pe_header->OptionalHeader.NumberOfRvaAndSizes) * sizeof(IMAGE_DATA_DIRECTORY), SEEK_CUR); } -/* horrible hack ends !!! */ /* read sections */ pe->pe_seg = xmalloc(sizeof(IMAGE_SECTION_HEADER) * pe->pe_header->FileHeader.NumberOfSections); @@ -423,19 +424,8 @@ pe->vma_size=0; dprintf_win32(stddeb, "Load addr is %x\n",load_addr); calc_vma_size(pe); - -#if 0 - /* We use malloc here, while a huge part of that address space does - not be supported by actual memory. It has to be contiguous, though. - I don't know if mmap("/dev/null"); would do any better. - What I'd really like to do is a Win32 style VirtualAlloc/MapViewOfFile - sequence */ - load_addr = pe->load_addr = (int)xmalloc(pe->vma_size); - memset( load_addr, 0, pe->vma_size); -#else load_addr = (int) VirtualAlloc( (void*)pe->base_addr, pe->vma_size, MEM_RESERVE|MEM_COMMIT, PAGE_EXECUTE_READWRITE ); pe->load_addr = load_addr; -#endif dprintf_win32(stddeb, "Load addr is really %x, range %x\n", pe->load_addr, pe->vma_size); @@ -476,7 +466,6 @@ if(strcmp(pe->pe_seg[i].Name, ".reloc") == 0) pe->pe_reloc = (LPIMAGE_BASE_RELOCATION) result; - } /* There is word that the actual loader does not care about the @@ -538,11 +527,9 @@ [IMAGE_DIRECTORY_ENTRY_GLOBALPTR].Size) dprintf_win32(stdnimp,"Global Pointer (MIPS) ignored\n"); -#ifdef NOT /* we initialize this later */ if(pe->pe_header->OptionalHeader.DataDirectory [IMAGE_DIRECTORY_ENTRY_TLS].Size) - dprintf_win32(stdnimp,"Thread local storage ignored\n"); -#endif + fprintf(stdnimp,"Thread local storage ignored\n"); if(pe->pe_header->OptionalHeader.DataDirectory [IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG].Size) @@ -658,6 +645,16 @@ if (!(pModule->flags & NE_FFLAGS_WIN32) || !(pe = pModule->pe_module)) return; + load_addr = pe->load_addr; + +#ifndef WINELIB + if (Options.debug) { + DBG_ADDR addr = { NULL, 0, RVA(pe->pe_header->OptionalHeader.AddressOfEntryPoint) }; + DEBUG_AddBreakpoint( &addr ); + DEBUG_SetBreakpoints(TRUE); + } +#endif + /* DLL_ATTACH_PROCESS: * lpreserved is NULL for dynamic loads, not-NULL for static loads * DLL_DETACH_PROCESS: @@ -669,7 +666,6 @@ if ( (pe->pe_header->FileHeader.Characteristics & IMAGE_FILE_DLL) && (pe->pe_header->OptionalHeader.AddressOfEntryPoint) ) { - load_addr = pe->load_addr; printf("InitPEDLL() called!\n"); CallDLLEntryProc32( (FARPROC32)RVA(pe->pe_header->OptionalHeader.AddressOfEntryPoint),
diff --git a/loader/resource.c b/loader/resource.c index 6e4ac03..31c6453 100644 --- a/loader/resource.c +++ b/loader/resource.c
@@ -36,7 +36,7 @@ /********************************************************************** * FindResource16 (KERNEL.60) */ -HRSRC16 FindResource16( HMODULE16 hModule, SEGPTR name, SEGPTR type ) +HRSRC16 WINAPI FindResource16( HMODULE16 hModule, SEGPTR name, SEGPTR type ) { NE_MODULE *pModule; @@ -70,7 +70,7 @@ /********************************************************************** * FindResource32A (KERNEL32.128) */ -HANDLE32 FindResource32A( HINSTANCE32 hModule, LPCSTR name, LPCSTR type ) +HANDLE32 WINAPI FindResource32A( HINSTANCE32 hModule, LPCSTR name, LPCSTR type) { return FindResourceEx32A(hModule,name,type,WINE_LanguageId); } @@ -78,9 +78,9 @@ /********************************************************************** * FindResourceEx32A (KERNEL32.129) */ -HANDLE32 FindResourceEx32A( - HINSTANCE32 hModule,LPCSTR name,LPCSTR type,WORD lang -) { +HANDLE32 WINAPI FindResourceEx32A( HINSTANCE32 hModule, LPCSTR name, + LPCSTR type, WORD lang ) +{ LPWSTR xname,xtype; HANDLE32 ret; @@ -102,9 +102,9 @@ /********************************************************************** * FindResourceEx32W (KERNEL32.130) */ -HRSRC32 FindResourceEx32W( - HINSTANCE32 hModule, LPCWSTR name, LPCWSTR type, WORD lang -) { +HRSRC32 WINAPI FindResourceEx32W( HINSTANCE32 hModule, LPCWSTR name, + LPCWSTR type, WORD lang ) +{ #ifndef WINELIB NE_MODULE *pModule; @@ -132,7 +132,7 @@ /********************************************************************** * FindResource32W (KERNEL32.131) */ -HRSRC32 FindResource32W( HINSTANCE32 hModule, LPCWSTR name, LPCWSTR type ) +HRSRC32 WINAPI FindResource32W(HINSTANCE32 hModule, LPCWSTR name, LPCWSTR type) { return FindResourceEx32W(hModule,name,type,WINE_LanguageId); } @@ -141,7 +141,7 @@ /********************************************************************** * LoadResource16 (KERNEL.61) */ -HGLOBAL16 LoadResource16( HMODULE16 hModule, HRSRC16 hRsrc ) +HGLOBAL16 WINAPI LoadResource16( HMODULE16 hModule, HRSRC16 hRsrc ) { NE_MODULE *pModule; @@ -165,7 +165,7 @@ /********************************************************************** * LoadResource32 (KERNEL32.370) */ -HGLOBAL32 LoadResource32( HINSTANCE32 hModule, HRSRC32 hRsrc ) +HGLOBAL32 WINAPI LoadResource32( HINSTANCE32 hModule, HRSRC32 hRsrc ) { #ifndef WINELIB NE_MODULE *pModule; @@ -193,7 +193,7 @@ * LockResource (KERNEL.62) */ /* 16-bit version */ -SEGPTR WIN16_LockResource16(HGLOBAL16 handle) +SEGPTR WINAPI WIN16_LockResource16(HGLOBAL16 handle) { #ifndef WINELIB HMODULE16 hModule; @@ -215,7 +215,7 @@ } /* WINELIB 16-bit version */ -LPVOID LockResource16( HGLOBAL16 handle ) +LPVOID WINAPI LockResource16( HGLOBAL16 handle ) { #ifndef WINELIB HMODULE16 hModule; @@ -240,7 +240,7 @@ /********************************************************************** * LockResource32 (KERNEL32.384) */ -LPVOID LockResource32( HGLOBAL32 handle ) +LPVOID WINAPI LockResource32( HGLOBAL32 handle ) { return (LPVOID)handle; } @@ -249,7 +249,7 @@ /********************************************************************** * FreeResource16 (KERNEL.63) */ -BOOL16 FreeResource16( HGLOBAL16 handle ) +BOOL16 WINAPI FreeResource16( HGLOBAL16 handle ) { #ifndef WINELIB HMODULE16 hModule; @@ -273,7 +273,7 @@ /********************************************************************** * FreeResource32 (KERNEL32.145) */ -BOOL32 FreeResource32( HGLOBAL32 handle ) +BOOL32 WINAPI FreeResource32( HGLOBAL32 handle ) { /* no longer used in Win32 */ return TRUE; @@ -283,7 +283,7 @@ /********************************************************************** * AccessResource16 (KERNEL.64) */ -INT16 AccessResource16( HINSTANCE16 hModule, HRSRC16 hRsrc ) +INT16 WINAPI AccessResource16( HINSTANCE16 hModule, HRSRC16 hRsrc ) { NE_MODULE *pModule; @@ -308,7 +308,7 @@ /********************************************************************** * AccessResource32 (KERNEL32.64) */ -INT32 AccessResource32( HINSTANCE32 hModule, HRSRC32 hRsrc ) +INT32 WINAPI AccessResource32( HINSTANCE32 hModule, HRSRC32 hRsrc ) { hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */ dprintf_resource(stddeb, "AccessResource: module=%04x res=%04x\n", @@ -322,7 +322,7 @@ /********************************************************************** * SizeofResource16 (KERNEL.65) */ -DWORD SizeofResource16( HMODULE16 hModule, HRSRC16 hRsrc ) +DWORD WINAPI SizeofResource16( HMODULE16 hModule, HRSRC16 hRsrc ) { NE_MODULE *pModule; @@ -346,7 +346,7 @@ /********************************************************************** * SizeofResource32 (KERNEL32.522) */ -DWORD SizeofResource32( HINSTANCE32 hModule, HRSRC32 hRsrc ) +DWORD WINAPI SizeofResource32( HINSTANCE32 hModule, HRSRC32 hRsrc ) { hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */ dprintf_resource(stddeb, "SizeofResource32: module=%04x res=%04x\n", @@ -363,7 +363,7 @@ /********************************************************************** * AllocResource16 (KERNEL.66) */ -HGLOBAL16 AllocResource16( HMODULE16 hModule, HRSRC16 hRsrc, DWORD size ) +HGLOBAL16 WINAPI AllocResource16( HMODULE16 hModule, HRSRC16 hRsrc, DWORD size) { NE_MODULE *pModule; @@ -389,7 +389,8 @@ * * Check Schulman, p. 232 for details */ -HGLOBAL16 DirectResAlloc( HINSTANCE16 hInstance, WORD wType, UINT16 wSize ) +HGLOBAL16 WINAPI DirectResAlloc( HINSTANCE16 hInstance, WORD wType, + UINT16 wSize ) { dprintf_resource(stddeb,"DirectResAlloc(%04x,%04x,%04x)\n", hInstance, wType, wSize ); @@ -405,7 +406,7 @@ /********************************************************************** * LoadAccelerators16 [USER.177] */ -HACCEL16 LoadAccelerators16(HINSTANCE16 instance, SEGPTR lpTableName) +HACCEL16 WINAPI LoadAccelerators16(HINSTANCE16 instance, SEGPTR lpTableName) { HACCEL16 hAccel; HGLOBAL16 rsc_mem; @@ -458,7 +459,7 @@ * 04: WORD IDval * 06: WORD pad (to DWORD boundary) */ -HACCEL32 LoadAccelerators32W(HINSTANCE32 instance,LPCWSTR lpTableName) +HACCEL32 WINAPI LoadAccelerators32W(HINSTANCE32 instance,LPCWSTR lpTableName) { HACCEL32 hAccel; HGLOBAL32 rsc_mem; @@ -504,7 +505,7 @@ return hAccel; } -HACCEL32 LoadAccelerators32A(HINSTANCE32 instance,LPCSTR lpTableName) +HACCEL32 WINAPI LoadAccelerators32A(HINSTANCE32 instance,LPCSTR lpTableName) { LPWSTR uni; HACCEL32 result; @@ -521,8 +522,8 @@ /********************************************************************** * LoadString16 */ -INT16 -LoadString16(HINSTANCE16 instance,UINT16 resource_id,LPSTR buffer,INT16 buflen) +INT16 WINAPI LoadString16( HINSTANCE16 instance, UINT16 resource_id, + LPSTR buffer, INT16 buflen ) { HGLOBAL16 hmem; HRSRC16 hrsrc; @@ -568,8 +569,8 @@ /********************************************************************** * LoadString32W (USER32.375) */ -INT32 -LoadString32W(HINSTANCE32 instance,UINT32 resource_id,LPWSTR buffer,int buflen) +INT32 WINAPI LoadString32W( HINSTANCE32 instance, UINT32 resource_id, + LPWSTR buffer, int buflen ) { HGLOBAL32 hmem; HRSRC32 hrsrc; @@ -618,8 +619,8 @@ /********************************************************************** * LoadString32A (USER32.374) */ -INT32 -LoadString32A(HINSTANCE32 instance,UINT32 resource_id,LPSTR buffer,int buflen) +INT32 WINAPI LoadString32A( HINSTANCE32 instance, UINT32 resource_id, + LPSTR buffer,int buflen ) { INT32 retval; LPWSTR buffer2 = NULL; @@ -659,10 +660,9 @@ /********************************************************************** * LoadMessage32A (internal) */ -INT32 -LoadMessage32A( - HINSTANCE32 instance,UINT32 id,WORD lang,LPSTR buffer,int buflen -) { +INT32 LoadMessage32A( HINSTANCE32 instance, UINT32 id, WORD lang, + LPSTR buffer, int buflen ) +{ HGLOBAL32 hmem; HRSRC32 hrsrc; BYTE *p; @@ -747,8 +747,8 @@ /********************************************************************** * SetResourceHandler (KERNEL.43) */ -FARPROC16 -SetResourceHandler(HINSTANCE16 instance,SEGPTR s,FARPROC16 farproc) +FARPROC16 WINAPI SetResourceHandler( HINSTANCE16 instance, SEGPTR s, + FARPROC16 farproc ) { if (HIWORD(s)) fprintf(stderr,"SetResourceHandler(%04x,%s,%p), empty STUB!\n", @@ -763,46 +763,54 @@ /********************************************************************** * EnumResourceTypesA (KERNEL32.90) */ -BOOL32 -EnumResourceTypes32A(HMODULE32 hmodule,ENUMRESTYPEPROC32A lpfun,LONG lParam) { +BOOL32 WINAPI EnumResourceTypes32A( HMODULE32 hmodule,ENUMRESTYPEPROC32A lpfun, + LONG lParam) +{ return PE_EnumResourceTypes32A(hmodule,lpfun,lParam); } /********************************************************************** * EnumResourceTypesW (KERNEL32.91) */ -BOOL32 -EnumResourceTypes32W(HMODULE32 hmodule,ENUMRESTYPEPROC32W lpfun,LONG lParam) { +BOOL32 WINAPI EnumResourceTypes32W( HMODULE32 hmodule,ENUMRESTYPEPROC32W lpfun, + LONG lParam) +{ return PE_EnumResourceTypes32W(hmodule,lpfun,lParam); } /********************************************************************** * EnumResourceNamesA (KERNEL32.88) */ -BOOL32 -EnumResourceNames32A(HMODULE32 hmodule,LPCSTR type,ENUMRESNAMEPROC32A lpfun,LONG lParam) { +BOOL32 WINAPI EnumResourceNames32A( HMODULE32 hmodule, LPCSTR type, + ENUMRESNAMEPROC32A lpfun, LONG lParam ) +{ return PE_EnumResourceNames32A(hmodule,type,lpfun,lParam); } /********************************************************************** * EnumResourceNamesW (KERNEL32.89) */ -BOOL32 -EnumResourceNames32W(HMODULE32 hmodule,LPCWSTR type,ENUMRESNAMEPROC32W lpfun,LONG lParam) { +BOOL32 WINAPI EnumResourceNames32W( HMODULE32 hmodule, LPCWSTR type, + ENUMRESNAMEPROC32W lpfun, LONG lParam ) +{ return PE_EnumResourceNames32W(hmodule,type,lpfun,lParam); } /********************************************************************** * EnumResourceLanguagesA (KERNEL32.86) */ -BOOL32 -EnumResourceLanguages32A(HMODULE32 hmodule,LPCSTR type,LPCSTR name,ENUMRESLANGPROC32A lpfun,LONG lParam) { +BOOL32 WINAPI EnumResourceLanguages32A( HMODULE32 hmodule, LPCSTR type, + LPCSTR name, ENUMRESLANGPROC32A lpfun, + LONG lParam) +{ return PE_EnumResourceLanguages32A(hmodule,type,name,lpfun,lParam); } /********************************************************************** * EnumResourceLanguagesW (KERNEL32.87) */ -BOOL32 -EnumResourceLanguages32W(HMODULE32 hmodule,LPCWSTR type,LPCWSTR name,ENUMRESLANGPROC32W lpfun,LONG lParam) { +BOOL32 WINAPI EnumResourceLanguages32W( HMODULE32 hmodule, LPCWSTR type, + LPCWSTR name, ENUMRESLANGPROC32W lpfun, + LONG lParam) +{ return PE_EnumResourceLanguages32W(hmodule,type,name,lpfun,lParam); } #endif /* WINELIB */
diff --git a/loader/signal.c b/loader/signal.c index 1257e33..d99dedc 100644 --- a/loader/signal.c +++ b/loader/signal.c
@@ -46,12 +46,24 @@ static __inline__ int wine_sigaction( int sig, struct kernel_sigaction *new, struct kernel_sigaction *old ) { +#ifdef __PIC__ + __asm__ __volatile__( "pushl %%ebx\n\t" + "movl %2,%%ebx\n\t" + "int $0x80\n\t" + "popl %%ebx" + : "=a" (sig) + : "0" (SYS_sigaction), + "g" (sig), + "c" (new), + "d" (old) ); +#else __asm__ __volatile__( "int $0x80" : "=a" (sig) : "0" (SYS_sigaction), "b" (sig), "c" (new), "d" (old) ); +#endif /* __PIC__ */ if (sig>=0) return 0; errno = -sig; @@ -62,15 +74,7 @@ /* Signal stack */ -#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) -# define SIGNAL_STACK_SIZE MINSIGSTKSZ -#elif defined (__svr4__) || defined(_SCO_DS) -# define SIGNAL_STACK_SIZE SIGSTKSZ -#else -# define SIGNAL_STACK_SIZE 4096 -#endif - -static char SIGNAL_Stack[SIGNAL_STACK_SIZE]; +static char SIGNAL_Stack[16384]; /********************************************************************** @@ -102,7 +106,8 @@ struct kernel_sigaction sig_act; sig_act.sa_handler = func; - sig_act.sa_flags = SA_RESTART | (flags) ? SA_NOMASK : 0; + sig_act.sa_flags = SA_RESTART | (flags) ? SA_NOMASK : 0; + sig_act.sa_mask = 0; /* Point to the top of the stack, minus 4 just in case, and make it aligned */ sig_act.sa_restorer = @@ -112,10 +117,8 @@ #else /* linux && __i386__ */ struct sigaction sig_act; - sigset_t sig_mask; - sigemptyset(&sig_mask); sig_act.sa_handler = func; - sig_act.sa_mask = sig_mask; + sigemptyset( &sig_act.sa_mask ); # if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) sig_act.sa_flags = SA_ONSTACK; @@ -179,7 +182,6 @@ #ifdef SIGIO sigaddset(&set, SIGIO); #endif - sigaddset(&set, SIGUSR1); #ifdef CONFIG_IPC sigaddset(&set, SIGUSR2); #endif
diff --git a/loader/task.c b/loader/task.c index 4094ee9..467548c 100644 --- a/loader/task.c +++ b/loader/task.c
@@ -40,8 +40,9 @@ /* Min. number of thunks allocated when creating a new segment */ #define MIN_THUNKS 32 -extern void USER_AppExit( HTASK16, HINSTANCE16, HQUEUE16 ); -extern void PE_InitTls( PE_MODULE *module ); +extern INT32 WINSOCK_DeleteTaskWSI( TDB* pTask, struct _WSINFO* pwsi ); +extern void USER_AppExit( HTASK16, HINSTANCE16, HQUEUE16 ); +extern void PE_InitTls( PE_MODULE *module ); /* Saved 16-bit stack for current process (Win16 only) */ DWORD IF1632_Saved16_ss_sp = 0; @@ -50,7 +51,10 @@ DWORD IF1632_Saved32_esp = 0; /* Original Unix stack */ -DWORD IF1632_Original32_esp; +DWORD IF1632_Original32_esp = 0; + + /* Pointer to function to switch to a larger stack */ +int (*IF1632_CallLargeStack)( int (*func)(), void *arg ) = NULL; static HTASK16 hFirstTask = 0; static HTASK16 hCurrentTask = 0; @@ -685,6 +689,16 @@ TDB* pTask = (TDB*) GlobalLock16( hCurrentTask ); if (!pTask) USER_ExitWindows(); /* No current task yet */ + dprintf_task(stddeb, "Killing task %04x\n", hCurrentTask ); + + /* Clean up sockets */ + + if( pTask->pwsi ) + { + dprintf_task(stddeb, "\tremoving socket table\n"); + WINSOCK_DeleteTaskWSI( pTask, pTask->pwsi ); + } + /* Perform USER cleanup */ USER_AppExit( hCurrentTask, pTask->hInstance, pTask->hQueue ); @@ -698,7 +712,7 @@ if (nTaskCount <= 1) { - dprintf_task( stddeb, "Killing the last task, exiting\n" ); + dprintf_task( stddeb, "\nthis is the last task, exiting\n" ); USER_ExitWindows(); } @@ -767,7 +781,7 @@ /* extract hardware events only! */ - if (!hTask) EVENT_WaitXEvent( FALSE, TRUE ); + if (!hTask) EVENT_WaitNetEvent( FALSE, TRUE ); while (!hTask) { @@ -788,7 +802,7 @@ /* No task found, wait for some events to come in */ - EVENT_WaitXEvent( TRUE, TRUE ); + EVENT_WaitNetEvent( TRUE, TRUE ); } if (hTask == hCurrentTask) @@ -845,7 +859,7 @@ !(pQ->wakeBits & (QS_SENDMESSAGE | QS_SMRESULT)) ) { pQ->flags &= ~QUEUE_FLAG_XEVENT; - EVENT_WaitXEvent( FALSE, FALSE ); + EVENT_WaitNetEvent( FALSE, FALSE ); } } } @@ -854,7 +868,7 @@ /*********************************************************************** * InitTask (KERNEL.91) */ -void InitTask( CONTEXT *context ) +void WINAPI InitTask( CONTEXT *context ) { TDB *pTask; NE_MODULE *pModule; @@ -912,7 +926,7 @@ /*********************************************************************** * WaitEvent (KERNEL.30) */ -BOOL16 WaitEvent( HTASK16 hTask ) +BOOL16 WINAPI WaitEvent( HTASK16 hTask ) { TDB *pTask; @@ -935,7 +949,7 @@ /*********************************************************************** * PostEvent (KERNEL.31) */ -void PostEvent( HTASK16 hTask ) +void WINAPI PostEvent( HTASK16 hTask ) { TDB *pTask; @@ -948,7 +962,7 @@ /*********************************************************************** * SetPriority (KERNEL.32) */ -void SetPriority( HTASK16 hTask, INT16 delta ) +void WINAPI SetPriority( HTASK16 hTask, INT16 delta ) { TDB *pTask; INT16 newpriority; @@ -969,7 +983,7 @@ /*********************************************************************** * LockCurrentTask (KERNEL.33) */ -HTASK16 LockCurrentTask( BOOL16 bLock ) +HTASK16 WINAPI LockCurrentTask( BOOL16 bLock ) { if (bLock) hLockedTask = hCurrentTask; else hLockedTask = 0; @@ -980,7 +994,7 @@ /*********************************************************************** * IsTaskLocked (KERNEL.122) */ -HTASK16 IsTaskLocked(void) +HTASK16 WINAPI IsTaskLocked(void) { return hLockedTask; } @@ -989,7 +1003,7 @@ /*********************************************************************** * OldYield (KERNEL.117) */ -void OldYield(void) +void WINAPI OldYield(void) { TDB *pCurTask; @@ -1003,7 +1017,7 @@ /*********************************************************************** * DirectedYield (KERNEL.150) */ -void DirectedYield( HTASK16 hTask ) +void WINAPI DirectedYield( HTASK16 hTask ) { TDB *pCurTask = (TDB *)GlobalLock16( hCurrentTask ); pCurTask->hYieldTo = hTask; @@ -1014,7 +1028,7 @@ /*********************************************************************** * UserYield (USER.332) */ -void UserYield(void) +void WINAPI UserYield(void) { TDB *pCurTask = (TDB *)GlobalLock16( hCurrentTask ); MESSAGEQUEUE *queue = (MESSAGEQUEUE *)GlobalLock16( pCurTask->hQueue ); @@ -1033,7 +1047,7 @@ /*********************************************************************** * Yield (KERNEL.29) */ -void Yield(void) +void WINAPI Yield(void) { TDB *pCurTask = (TDB *)GlobalLock16( hCurrentTask ); if (pCurTask) pCurTask->hYieldTo = 0; @@ -1045,7 +1059,7 @@ /*********************************************************************** * MakeProcInstance16 (KERNEL.51) */ -FARPROC16 MakeProcInstance16( FARPROC16 func, HANDLE16 hInstance ) +FARPROC16 WINAPI MakeProcInstance16( FARPROC16 func, HANDLE16 hInstance ) { BYTE *thunk; SEGPTR thunkaddr; @@ -1070,7 +1084,7 @@ /*********************************************************************** * FreeProcInstance16 (KERNEL.52) */ -void FreeProcInstance16( FARPROC16 func ) +void WINAPI FreeProcInstance16( FARPROC16 func ) { dprintf_task( stddeb, "FreeProcInstance(%08lx)\n", (DWORD)func ); if (!__winelib) TASK_FreeThunk( hCurrentTask, (SEGPTR)func ); @@ -1080,7 +1094,7 @@ /********************************************************************** * GetCodeHandle (KERNEL.93) */ -HANDLE16 GetCodeHandle( FARPROC16 proc ) +HANDLE16 WINAPI GetCodeHandle( FARPROC16 proc ) { HANDLE16 handle; BYTE *thunk = (BYTE *)PTR_SEG_TO_LIN( proc ); @@ -1103,7 +1117,7 @@ /*********************************************************************** * SetTaskQueue (KERNEL.34) */ -HQUEUE16 SetTaskQueue( HTASK16 hTask, HQUEUE16 hQueue ) +HQUEUE16 WINAPI SetTaskQueue( HTASK16 hTask, HQUEUE16 hQueue ) { HQUEUE16 hPrev; TDB *pTask; @@ -1123,7 +1137,7 @@ /*********************************************************************** * GetTaskQueue (KERNEL.35) */ -HQUEUE16 GetTaskQueue( HTASK16 hTask ) +HQUEUE16 WINAPI GetTaskQueue( HTASK16 hTask ) { TDB *pTask; @@ -1136,7 +1150,7 @@ /*********************************************************************** * SwitchStackTo (KERNEL.108) */ -void SwitchStackTo( WORD seg, WORD ptr, WORD top ) +void WINAPI SwitchStackTo( WORD seg, WORD ptr, WORD top ) { TDB *pTask; STACK16FRAME *oldFrame, *newFrame; @@ -1177,7 +1191,7 @@ * to make sure all registers are preserved, but we don't use them in any * way, so we don't need a CONTEXT* argument. */ -void SwitchStackBack(void) +void WINAPI SwitchStackBack(void) { TDB *pTask; STACK16FRAME *oldFrame, *newFrame; @@ -1216,7 +1230,7 @@ /*********************************************************************** * GetTaskQueueDS (KERNEL.118) */ -void GetTaskQueueDS( CONTEXT *context ) +void WINAPI GetTaskQueueDS( CONTEXT *context ) { DS_reg(context) = GlobalHandleToSel( GetTaskQueue(0) ); } @@ -1225,7 +1239,7 @@ /*********************************************************************** * GetTaskQueueES (KERNEL.119) */ -void GetTaskQueueES( CONTEXT *context ) +void WINAPI GetTaskQueueES( CONTEXT *context ) { ES_reg(context) = GlobalHandleToSel( GetTaskQueue(0) ); } @@ -1234,12 +1248,12 @@ /*********************************************************************** * GetCurrentTask (KERNEL.36) */ -HTASK16 GetCurrentTask(void) +HTASK16 WINAPI GetCurrentTask(void) { return hCurrentTask; } -DWORD WIN16_GetCurrentTask(void) +DWORD WINAPI WIN16_GetCurrentTask(void) { /* This is the version used by relay code; the first task is */ /* returned in the high word of the result */ @@ -1250,7 +1264,7 @@ /*********************************************************************** * GetCurrentPDB (KERNEL.37) */ -HANDLE16 GetCurrentPDB(void) +HANDLE16 WINAPI GetCurrentPDB(void) { TDB *pTask; @@ -1262,7 +1276,7 @@ /*********************************************************************** * GetInstanceData (KERNEL.54) */ -INT16 GetInstanceData( HINSTANCE16 instance, WORD buffer, INT16 len ) +INT16 WINAPI GetInstanceData( HINSTANCE16 instance, WORD buffer, INT16 len ) { char *ptr = (char *)GlobalLock16( instance ); if (!ptr || !len) return 0; @@ -1275,7 +1289,7 @@ /*********************************************************************** * GetExeVersion (KERNEL.105) */ -WORD GetExeVersion(void) +WORD WINAPI GetExeVersion(void) { TDB *pTask; @@ -1287,7 +1301,7 @@ /*********************************************************************** * SetErrorMode16 (KERNEL.107) */ -UINT16 SetErrorMode16( UINT16 mode ) +UINT16 WINAPI SetErrorMode16( UINT16 mode ) { TDB *pTask; UINT16 oldMode; @@ -1303,7 +1317,7 @@ /*********************************************************************** * SetErrorMode32 (KERNEL32.486) */ -UINT32 SetErrorMode32( UINT32 mode ) +UINT32 WINAPI SetErrorMode32( UINT32 mode ) { return SetErrorMode16( (UINT16)mode ); } @@ -1312,7 +1326,7 @@ /*********************************************************************** * GetDOSEnvironment (KERNEL.131) */ -SEGPTR GetDOSEnvironment(void) +SEGPTR WINAPI GetDOSEnvironment(void) { TDB *pTask; @@ -1324,7 +1338,7 @@ /*********************************************************************** * GetNumTasks (KERNEL.152) */ -UINT16 GetNumTasks(void) +UINT16 WINAPI GetNumTasks(void) { return nTaskCount; } @@ -1336,7 +1350,7 @@ * Note: this function apparently returns a DWORD with LOWORD == HIWORD. * I don't think we need to bother with this. */ -HINSTANCE16 GetTaskDS(void) +HINSTANCE16 WINAPI GetTaskDS(void) { TDB *pTask; @@ -1348,7 +1362,7 @@ /*********************************************************************** * IsTask (KERNEL.320) */ -BOOL16 IsTask( HTASK16 hTask ) +BOOL16 WINAPI IsTask( HTASK16 hTask ) { TDB *pTask; @@ -1361,7 +1375,7 @@ /*********************************************************************** * SetTaskSignalProc (KERNEL.38) */ -FARPROC16 SetTaskSignalProc( HTASK16 hTask, FARPROC16 proc ) +FARPROC16 WINAPI SetTaskSignalProc( HTASK16 hTask, FARPROC16 proc ) { TDB *pTask; FARPROC16 oldProc; @@ -1377,8 +1391,8 @@ /*********************************************************************** * SetSigHandler (KERNEL.140) */ -WORD SetSigHandler( FARPROC16 newhandler, FARPROC16* oldhandler, - UINT16 *oldmode, UINT16 newmode, UINT16 flag ) +WORD WINAPI SetSigHandler( FARPROC16 newhandler, FARPROC16* oldhandler, + UINT16 *oldmode, UINT16 newmode, UINT16 flag ) { fprintf(stdnimp,"SetSigHandler(%p,%p,%p,%d,%d), unimplemented.\n", newhandler,oldhandler,oldmode,newmode,flag ); @@ -1402,7 +1416,7 @@ /*********************************************************************** * GlobalNotify (KERNEL.154) */ -VOID GlobalNotify( FARPROC16 proc ) +VOID WINAPI GlobalNotify( FARPROC16 proc ) { TDB *pTask; @@ -1414,7 +1428,7 @@ /*********************************************************************** * GetExePtr (KERNEL.133) */ -HMODULE16 GetExePtr( HANDLE16 handle ) +HMODULE16 WINAPI GetExePtr( HANDLE16 handle ) { char *ptr; HTASK16 hTask; @@ -1454,7 +1468,7 @@ /*********************************************************************** * TaskFirst (TOOLHELP.63) */ -BOOL16 TaskFirst( TASKENTRY *lpte ) +BOOL16 WINAPI TaskFirst( TASKENTRY *lpte ) { lpte->hNext = hFirstTask; return TaskNext( lpte ); @@ -1464,7 +1478,7 @@ /*********************************************************************** * TaskNext (TOOLHELP.64) */ -BOOL16 TaskNext( TASKENTRY *lpte ) +BOOL16 WINAPI TaskNext( TASKENTRY *lpte ) { TDB *pTask; INSTANCEDATA *pInstData; @@ -1496,7 +1510,7 @@ /*********************************************************************** * TaskFindHandle (TOOLHELP.65) */ -BOOL16 TaskFindHandle( TASKENTRY *lpte, HTASK16 hTask ) +BOOL16 WINAPI TaskFindHandle( TASKENTRY *lpte, HTASK16 hTask ) { lpte->hNext = hTask; return TaskNext( lpte ); @@ -1506,7 +1520,7 @@ /*********************************************************************** * GetAppCompatFlags16 (KERNEL.354) */ -DWORD GetAppCompatFlags16( HTASK16 hTask ) +DWORD WINAPI GetAppCompatFlags16( HTASK16 hTask ) { return GetAppCompatFlags32( hTask ); } @@ -1515,7 +1529,7 @@ /*********************************************************************** * GetAppCompatFlags32 (USER32.205) */ -DWORD GetAppCompatFlags32( HTASK32 hTask ) +DWORD WINAPI GetAppCompatFlags32( HTASK32 hTask ) { TDB *pTask;
diff --git a/memory/atom.c b/memory/atom.c index 598c267..83d7a4c 100644 --- a/memory/atom.c +++ b/memory/atom.c
@@ -263,7 +263,7 @@ /*********************************************************************** * InitAtomTable16 (KERNEL.68) */ -WORD InitAtomTable16( WORD entries ) +WORD WINAPI InitAtomTable16( WORD entries ) { return ATOM_InitTable( CURRENT_DS, entries ); } @@ -272,7 +272,7 @@ /*********************************************************************** * GetAtomHandle (KERNEL.73) */ -HANDLE16 GetAtomHandle( ATOM atom ) +HANDLE16 WINAPI GetAtomHandle( ATOM atom ) { if (atom < MIN_STR_ATOM) return 0; return ATOMTOHANDLE( atom ); @@ -282,7 +282,7 @@ /*********************************************************************** * AddAtom16 (KERNEL.70) */ -ATOM AddAtom16( SEGPTR str ) +ATOM WINAPI AddAtom16( SEGPTR str ) { ATOM atom; HANDLE16 ds = CURRENT_DS; @@ -304,7 +304,7 @@ /*********************************************************************** * AddAtom32A (KERNEL32.0) */ -ATOM AddAtom32A( LPCSTR str ) +ATOM WINAPI AddAtom32A( LPCSTR str ) { return GlobalAddAtom32A( str ); /* FIXME */ } @@ -313,7 +313,7 @@ /*********************************************************************** * AddAtom32W (KERNEL32.1) */ -ATOM AddAtom32W( LPCWSTR str ) +ATOM WINAPI AddAtom32W( LPCWSTR str ) { return GlobalAddAtom32W( str ); /* FIXME */ } @@ -322,7 +322,7 @@ /*********************************************************************** * DeleteAtom16 (KERNEL.71) */ -ATOM DeleteAtom16( ATOM atom ) +ATOM WINAPI DeleteAtom16( ATOM atom ) { return ATOM_DeleteAtom( CURRENT_DS, atom ); } @@ -331,7 +331,7 @@ /*********************************************************************** * DeleteAtom32 (KERNEL32.69) */ -ATOM DeleteAtom32( ATOM atom ) +ATOM WINAPI DeleteAtom32( ATOM atom ) { return GlobalDeleteAtom( atom ); /* FIXME */ } @@ -340,7 +340,7 @@ /*********************************************************************** * FindAtom16 (KERNEL.69) */ -ATOM FindAtom16( SEGPTR str ) +ATOM WINAPI FindAtom16( SEGPTR str ) { if (!HIWORD(str)) return (ATOM)LOWORD(str); /* Integer atom */ return ATOM_FindAtom( CURRENT_DS, (LPCSTR)PTR_SEG_TO_LIN(str) ); @@ -350,7 +350,7 @@ /*********************************************************************** * FindAtom32A (KERNEL32.117) */ -ATOM FindAtom32A( LPCSTR str ) +ATOM WINAPI FindAtom32A( LPCSTR str ) { return GlobalFindAtom32A( str ); /* FIXME */ } @@ -359,7 +359,7 @@ /*********************************************************************** * FindAtom32W (KERNEL32.118) */ -ATOM FindAtom32W( LPCWSTR str ) +ATOM WINAPI FindAtom32W( LPCWSTR str ) { return GlobalFindAtom32W( str ); /* FIXME */ } @@ -368,7 +368,7 @@ /*********************************************************************** * GetAtomName16 (KERNEL.72) */ -UINT16 GetAtomName16( ATOM atom, LPSTR buffer, INT16 count ) +UINT16 WINAPI GetAtomName16( ATOM atom, LPSTR buffer, INT16 count ) { return (UINT16)ATOM_GetAtomName( CURRENT_DS, atom, buffer, count ); } @@ -377,7 +377,7 @@ /*********************************************************************** * GetAtomName32A (KERNEL32.149) */ -UINT32 GetAtomName32A( ATOM atom, LPSTR buffer, INT32 count ) +UINT32 WINAPI GetAtomName32A( ATOM atom, LPSTR buffer, INT32 count ) { return GlobalGetAtomName32A( atom, buffer, count ); /* FIXME */ } @@ -386,7 +386,7 @@ /*********************************************************************** * GetAtomName32W (KERNEL32.150) */ -UINT32 GetAtomName32W( ATOM atom, LPWSTR buffer, INT32 count ) +UINT32 WINAPI GetAtomName32W( ATOM atom, LPWSTR buffer, INT32 count ) { return GlobalGetAtomName32W( atom, buffer, count ); /* FIXME */ } @@ -395,7 +395,7 @@ /*********************************************************************** * GlobalAddAtom16 (USER.268) */ -ATOM GlobalAddAtom16( SEGPTR str ) +ATOM WINAPI GlobalAddAtom16( SEGPTR str ) { if (!HIWORD(str)) return (ATOM)LOWORD(str); /* Integer atom */ #ifdef CONFIG_IPC @@ -408,7 +408,7 @@ /*********************************************************************** * GlobalAddAtom32A (KERNEL32.313) */ -ATOM GlobalAddAtom32A( LPCSTR str ) +ATOM WINAPI GlobalAddAtom32A( LPCSTR str ) { if (!HIWORD(str)) return (ATOM)LOWORD(str); /* Integer atom */ return ATOM_AddAtom( USER_HeapSel, str ); @@ -418,7 +418,7 @@ /*********************************************************************** * GlobalAddAtom32W (KERNEL32.314) */ -ATOM GlobalAddAtom32W( LPCWSTR str ) +ATOM WINAPI GlobalAddAtom32W( LPCWSTR str ) { char buffer[MAX_ATOM_LEN+1]; if (!HIWORD(str)) return (ATOM)LOWORD(str); /* Integer atom */ @@ -430,7 +430,7 @@ /*********************************************************************** * GlobalDeleteAtom (USER.269) (KERNEL32.317) */ -ATOM GlobalDeleteAtom( ATOM atom ) +ATOM WINAPI GlobalDeleteAtom( ATOM atom ) { #ifdef CONFIG_IPC if (Options.ipc) return DDE_GlobalDeleteAtom( atom ); @@ -442,7 +442,7 @@ /*********************************************************************** * GlobalFindAtom16 (USER.270) */ -ATOM GlobalFindAtom16( SEGPTR str ) +ATOM WINAPI GlobalFindAtom16( SEGPTR str ) { if (!HIWORD(str)) return (ATOM)LOWORD(str); /* Integer atom */ #ifdef CONFIG_IPC @@ -455,7 +455,7 @@ /*********************************************************************** * GlobalFindAtom32A (KERNEL32.318) */ -ATOM GlobalFindAtom32A( LPCSTR str ) +ATOM WINAPI GlobalFindAtom32A( LPCSTR str ) { if (!HIWORD(str)) return (ATOM)LOWORD(str); /* Integer atom */ return ATOM_FindAtom( USER_HeapSel, str ); @@ -465,7 +465,7 @@ /*********************************************************************** * GlobalFindAtom32W (KERNEL32.319) */ -ATOM GlobalFindAtom32W( LPCWSTR str ) +ATOM WINAPI GlobalFindAtom32W( LPCWSTR str ) { char buffer[MAX_ATOM_LEN+1]; if (!HIWORD(str)) return (ATOM)LOWORD(str); /* Integer atom */ @@ -477,7 +477,7 @@ /*********************************************************************** * GlobalGetAtomName16 (USER.271) */ -UINT16 GlobalGetAtomName16( ATOM atom, LPSTR buffer, INT16 count ) +UINT16 WINAPI GlobalGetAtomName16( ATOM atom, LPSTR buffer, INT16 count ) { #ifdef CONFIG_IPC if (Options.ipc) return DDE_GlobalGetAtomName( atom, buffer, count ); @@ -489,7 +489,7 @@ /*********************************************************************** * GlobalGetAtomName32A (KERNEL32.323) */ -UINT32 GlobalGetAtomName32A( ATOM atom, LPSTR buffer, INT32 count ) +UINT32 WINAPI GlobalGetAtomName32A( ATOM atom, LPSTR buffer, INT32 count ) { return ATOM_GetAtomName( USER_HeapSel, atom, buffer, count ); } @@ -497,7 +497,7 @@ /*********************************************************************** * GlobalGetAtomName32W (KERNEL32.324) */ -UINT32 GlobalGetAtomName32W( ATOM atom, LPWSTR buffer, INT32 count ) +UINT32 WINAPI GlobalGetAtomName32W( ATOM atom, LPWSTR buffer, INT32 count ) { char tmp[MAX_ATOM_LEN+1]; ATOM_GetAtomName( USER_HeapSel, atom, tmp, sizeof(tmp) );
diff --git a/memory/global.c b/memory/global.c index 749d284..45088c2 100644 --- a/memory/global.c +++ b/memory/global.c
@@ -269,7 +269,7 @@ /*********************************************************************** * GlobalAlloc16 (KERNEL.15) */ -HGLOBAL16 GlobalAlloc16( UINT16 flags, DWORD size ) +HGLOBAL16 WINAPI GlobalAlloc16( UINT16 flags, DWORD size ) { HANDLE16 owner = GetCurrentPDB(); @@ -282,7 +282,7 @@ /*********************************************************************** * GlobalReAlloc16 (KERNEL.16) */ -HGLOBAL16 GlobalReAlloc16( HGLOBAL16 handle, DWORD size, UINT16 flags ) +HGLOBAL16 WINAPI GlobalReAlloc16( HGLOBAL16 handle, DWORD size, UINT16 flags ) { WORD selcount; DWORD oldsize; @@ -388,7 +388,7 @@ /*********************************************************************** * GlobalFree16 (KERNEL.17) */ -HGLOBAL16 GlobalFree16( HGLOBAL16 handle ) +HGLOBAL16 WINAPI GlobalFree16( HGLOBAL16 handle ) { void *ptr = GlobalLock16( handle ); @@ -407,7 +407,7 @@ * * This is the GlobalLock16() function used by 16-bit code. */ -SEGPTR WIN16_GlobalLock16( HGLOBAL16 handle ) +SEGPTR WINAPI WIN16_GlobalLock16( HGLOBAL16 handle ) { dprintf_global( stddeb, "WIN16_GlobalLock16(%04x) -> %08lx\n", handle, MAKELONG( 0, GlobalHandleToSel(handle)) ); @@ -428,7 +428,7 @@ * * This is the GlobalLock16() function used by 32-bit code. */ -LPVOID GlobalLock16( HGLOBAL16 handle ) +LPVOID WINAPI GlobalLock16( HGLOBAL16 handle ) { if (!handle) return 0; #ifdef CONFIG_IPC @@ -441,7 +441,7 @@ /*********************************************************************** * GlobalUnlock16 (KERNEL.19) */ -BOOL16 GlobalUnlock16( HGLOBAL16 handle ) +BOOL16 WINAPI GlobalUnlock16( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalUnlock16: %04x\n", handle ); return 0; @@ -451,7 +451,7 @@ /*********************************************************************** * GlobalSize16 (KERNEL.20) */ -DWORD GlobalSize16( HGLOBAL16 handle ) +DWORD WINAPI GlobalSize16( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalSize16: %04x\n", handle ); if (!handle) return 0; @@ -462,7 +462,7 @@ /*********************************************************************** * GlobalHandle16 (KERNEL.21) */ -DWORD GlobalHandle16( WORD sel ) +DWORD WINAPI GlobalHandle16( WORD sel ) { dprintf_global( stddeb, "GlobalHandle16: %04x\n", sel ); return MAKELONG( GET_ARENA_PTR(sel)->handle, GlobalHandleToSel(sel) ); @@ -472,7 +472,7 @@ /*********************************************************************** * GlobalFlags16 (KERNEL.22) */ -UINT16 GlobalFlags16( HGLOBAL16 handle ) +UINT16 WINAPI GlobalFlags16( HGLOBAL16 handle ) { GLOBALARENA *pArena; @@ -487,7 +487,7 @@ /*********************************************************************** * LockSegment16 (KERNEL.23) */ -HGLOBAL16 LockSegment16( HGLOBAL16 handle ) +HGLOBAL16 WINAPI LockSegment16( HGLOBAL16 handle ) { dprintf_global( stddeb, "LockSegment: %04x\n", handle ); if (handle == (HGLOBAL16)-1) handle = CURRENT_DS; @@ -499,7 +499,7 @@ /*********************************************************************** * UnlockSegment16 (KERNEL.24) */ -void UnlockSegment16( HGLOBAL16 handle ) +void WINAPI UnlockSegment16( HGLOBAL16 handle ) { dprintf_global( stddeb, "UnlockSegment: %04x\n", handle ); if (handle == (HGLOBAL16)-1) handle = CURRENT_DS; @@ -511,7 +511,7 @@ /*********************************************************************** * GlobalCompact16 (KERNEL.25) */ -DWORD GlobalCompact16( DWORD desired ) +DWORD WINAPI GlobalCompact16( DWORD desired ) { return GLOBAL_MAX_ALLOC_SIZE; } @@ -520,7 +520,7 @@ /*********************************************************************** * GlobalFreeAll (KERNEL.26) */ -void GlobalFreeAll( HGLOBAL16 owner ) +void WINAPI GlobalFreeAll( HGLOBAL16 owner ) { DWORD i; GLOBALARENA *pArena; @@ -537,7 +537,7 @@ /*********************************************************************** * GlobalWire16 (KERNEL.111) */ -SEGPTR GlobalWire16( HGLOBAL16 handle ) +SEGPTR WINAPI GlobalWire16( HGLOBAL16 handle ) { return WIN16_GlobalLock16( handle ); } @@ -546,7 +546,7 @@ /*********************************************************************** * GlobalUnWire16 (KERNEL.112) */ -BOOL16 GlobalUnWire16( HGLOBAL16 handle ) +BOOL16 WINAPI GlobalUnWire16( HGLOBAL16 handle ) { return GlobalUnlock16( handle ); } @@ -555,7 +555,7 @@ /*********************************************************************** * SetSwapAreaSize (KERNEL.106) */ -LONG SetSwapAreaSize( WORD size ) +LONG WINAPI SetSwapAreaSize( WORD size ) { dprintf_global(stdnimp, "STUB: SetSwapAreaSize(%d)\n", size ); return MAKELONG( size, 0xffff ); @@ -565,7 +565,7 @@ /*********************************************************************** * GlobalLRUOldest (KERNEL.163) */ -HGLOBAL16 GlobalLRUOldest( HGLOBAL16 handle ) +HGLOBAL16 WINAPI GlobalLRUOldest( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalLRUOldest: %04x\n", handle ); if (handle == (HGLOBAL16)-1) handle = CURRENT_DS; @@ -576,7 +576,7 @@ /*********************************************************************** * GlobalLRUNewest (KERNEL.164) */ -HGLOBAL16 GlobalLRUNewest( HGLOBAL16 handle ) +HGLOBAL16 WINAPI GlobalLRUNewest( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalLRUNewest: %04x\n", handle ); if (handle == (HGLOBAL16)-1) handle = CURRENT_DS; @@ -587,7 +587,7 @@ /*********************************************************************** * GetFreeSpace16 (KERNEL.169) */ -DWORD GetFreeSpace16( UINT16 wFlags ) +DWORD WINAPI GetFreeSpace16( UINT16 wFlags ) { MEMORYSTATUS ms; GlobalMemoryStatus( &ms ); @@ -597,7 +597,7 @@ /*********************************************************************** * GlobalDOSAlloc (KERNEL.184) */ -DWORD GlobalDOSAlloc(DWORD size) +DWORD WINAPI GlobalDOSAlloc(DWORD size) { UINT16 uParagraph; LPVOID lpBlock = DOSMEM_GetBlock( size, &uParagraph ); @@ -617,7 +617,7 @@ /*********************************************************************** * GlobalDOSFree (KERNEL.185) */ -WORD GlobalDOSFree(WORD sel) +WORD WINAPI GlobalDOSFree(WORD sel) { DWORD block = GetSelectorBase(sel); @@ -634,7 +634,7 @@ /*********************************************************************** * GlobalPageLock (KERNEL.191) */ -WORD GlobalPageLock( HGLOBAL16 handle ) +WORD WINAPI GlobalPageLock( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalPageLock: %04x\n", handle ); return ++(GET_ARENA_PTR(handle)->pageLockCount); @@ -644,7 +644,7 @@ /*********************************************************************** * GlobalPageUnlock (KERNEL.192) */ -WORD GlobalPageUnlock( HGLOBAL16 handle ) +WORD WINAPI GlobalPageUnlock( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalPageUnlock: %04x\n", handle ); return --(GET_ARENA_PTR(handle)->pageLockCount); @@ -654,7 +654,7 @@ /*********************************************************************** * GlobalFix16 (KERNEL.197) */ -void GlobalFix16( HGLOBAL16 handle ) +void WINAPI GlobalFix16( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalFix16: %04x\n", handle ); GET_ARENA_PTR(handle)->lockCount++; @@ -664,7 +664,7 @@ /*********************************************************************** * GlobalUnfix16 (KERNEL.198) */ -void GlobalUnfix16( HGLOBAL16 handle ) +void WINAPI GlobalUnfix16( HGLOBAL16 handle ) { dprintf_global( stddeb, "GlobalUnfix16: %04x\n", handle ); GET_ARENA_PTR(handle)->lockCount--; @@ -674,7 +674,7 @@ /*********************************************************************** * FarSetOwner (KERNEL.403) */ -void FarSetOwner( HGLOBAL16 handle, HANDLE16 hOwner ) +void WINAPI FarSetOwner( HGLOBAL16 handle, HANDLE16 hOwner ) { GET_ARENA_PTR(handle)->hOwner = hOwner; } @@ -683,7 +683,7 @@ /*********************************************************************** * FarGetOwner (KERNEL.404) */ -HANDLE16 FarGetOwner( HGLOBAL16 handle ) +HANDLE16 WINAPI FarGetOwner( HGLOBAL16 handle ) { return GET_ARENA_PTR(handle)->hOwner; } @@ -692,7 +692,7 @@ /*********************************************************************** * GlobalHandleToSel (TOOLHELP.50) */ -WORD GlobalHandleToSel( HGLOBAL16 handle ) +WORD WINAPI GlobalHandleToSel( HGLOBAL16 handle ) { dprintf_toolhelp( stddeb, "GlobalHandleToSel: %04x\n", handle ); if (!handle) return 0; @@ -711,7 +711,7 @@ /*********************************************************************** * GlobalFirst (TOOLHELP.51) */ -BOOL16 GlobalFirst( GLOBALENTRY *pGlobal, WORD wFlags ) +BOOL16 WINAPI GlobalFirst( GLOBALENTRY *pGlobal, WORD wFlags ) { if (wFlags == GLOBAL_LRU) return FALSE; pGlobal->dwNext = 0; @@ -722,7 +722,7 @@ /*********************************************************************** * GlobalNext (TOOLHELP.52) */ -BOOL16 GlobalNext( GLOBALENTRY *pGlobal, WORD wFlags) +BOOL16 WINAPI GlobalNext( GLOBALENTRY *pGlobal, WORD wFlags) { GLOBALARENA *pArena; @@ -755,7 +755,7 @@ /*********************************************************************** * GlobalInfo (TOOLHELP.53) */ -BOOL16 GlobalInfo( GLOBALINFO *pInfo ) +BOOL16 WINAPI GlobalInfo( GLOBALINFO *pInfo ) { int i; GLOBALARENA *pArena; @@ -772,7 +772,7 @@ /*********************************************************************** * GlobalEntryHandle (TOOLHELP.54) */ -BOOL16 GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL16 hItem ) +BOOL16 WINAPI GlobalEntryHandle( GLOBALENTRY *pGlobal, HGLOBAL16 hItem ) { return FALSE; } @@ -781,7 +781,8 @@ /*********************************************************************** * GlobalEntryModule (TOOLHELP.55) */ -BOOL16 GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE16 hModule, WORD wSeg ) +BOOL16 WINAPI GlobalEntryModule( GLOBALENTRY *pGlobal, HMODULE16 hModule, + WORD wSeg ) { return FALSE; } @@ -790,7 +791,7 @@ /*********************************************************************** * MemManInfo (TOOLHELP.72) */ -BOOL16 MemManInfo( MEMMANINFO *info ) +BOOL16 WINAPI MemManInfo( MEMMANINFO *info ) { MEMORYSTATUS status; @@ -849,7 +850,7 @@ /*********************************************************************** * GlobalAlloc32 (KERNEL32.315) */ -HGLOBAL32 GlobalAlloc32(UINT32 flags, DWORD size) +HGLOBAL32 WINAPI GlobalAlloc32(UINT32 flags, DWORD size) { PGLOBAL32_INTERN pintern; DWORD hpflags; @@ -892,7 +893,7 @@ /*********************************************************************** * GlobalLock32 (KERNEL32.326) */ -LPVOID GlobalLock32(HGLOBAL32 hmem) +LPVOID WINAPI GlobalLock32(HGLOBAL32 hmem) { PGLOBAL32_INTERN pintern; LPVOID palloc; @@ -922,7 +923,7 @@ /*********************************************************************** * GlobalUnlock32 (KERNEL32.332) */ -BOOL32 GlobalUnlock32(HGLOBAL32 hmem) +BOOL32 WINAPI GlobalUnlock32(HGLOBAL32 hmem) { PGLOBAL32_INTERN pintern; BOOL32 locked; @@ -953,7 +954,7 @@ /*********************************************************************** * GlobalHandle32 (KERNEL32.325) */ -HGLOBAL32 GlobalHandle32(LPCVOID pmem) +HGLOBAL32 WINAPI GlobalHandle32(LPCVOID pmem) { return (HGLOBAL32) POINTER_TO_HANDLE(pmem); } @@ -962,7 +963,7 @@ /*********************************************************************** * GlobalReAlloc32 (KERNEL32.328) */ -HGLOBAL32 GlobalReAlloc32(HGLOBAL32 hmem, DWORD size, UINT32 flags) +HGLOBAL32 WINAPI GlobalReAlloc32(HGLOBAL32 hmem, DWORD size, UINT32 flags) { LPVOID palloc; HGLOBAL32 hnew; @@ -1045,7 +1046,7 @@ /*********************************************************************** * GlobalFree32 (KERNEL32.322) */ -HGLOBAL32 GlobalFree32(HGLOBAL32 hmem) +HGLOBAL32 WINAPI GlobalFree32(HGLOBAL32 hmem) { PGLOBAL32_INTERN pintern; HGLOBAL32 hreturned=NULL; @@ -1080,7 +1081,7 @@ /*********************************************************************** * GlobalSize32 (KERNEL32.329) */ -DWORD GlobalSize32(HGLOBAL32 hmem) +DWORD WINAPI GlobalSize32(HGLOBAL32 hmem) { DWORD retval; PGLOBAL32_INTERN pintern; @@ -1113,7 +1114,7 @@ /*********************************************************************** * GlobalWire32 (KERNEL32.333) */ -LPVOID GlobalWire32(HGLOBAL32 hmem) +LPVOID WINAPI GlobalWire32(HGLOBAL32 hmem) { return GlobalLock32( hmem ); } @@ -1122,7 +1123,7 @@ /*********************************************************************** * GlobalUnWire32 (KERNEL32.330) */ -BOOL32 GlobalUnWire32(HGLOBAL32 hmem) +BOOL32 WINAPI GlobalUnWire32(HGLOBAL32 hmem) { return GlobalUnlock32( hmem); } @@ -1131,7 +1132,7 @@ /*********************************************************************** * GlobalFix32 (KERNEL32.320) */ -VOID GlobalFix32(HGLOBAL32 hmem) +VOID WINAPI GlobalFix32(HGLOBAL32 hmem) { GlobalLock32( hmem ); } @@ -1140,7 +1141,7 @@ /*********************************************************************** * GlobalUnfix32 (KERNEL32.331) */ -VOID GlobalUnfix32(HGLOBAL32 hmem) +VOID WINAPI GlobalUnfix32(HGLOBAL32 hmem) { GlobalUnlock32( hmem); } @@ -1149,7 +1150,7 @@ /*********************************************************************** * GlobalFlags32 (KERNEL32.321) */ -UINT32 GlobalFlags32(HGLOBAL32 hmem) +UINT32 WINAPI GlobalFlags32(HGLOBAL32 hmem) { DWORD retval; PGLOBAL32_INTERN pintern; @@ -1182,7 +1183,7 @@ /*********************************************************************** * GlobalCompact32 (KERNEL32.316) */ -DWORD GlobalCompact32( DWORD minfree ) +DWORD WINAPI GlobalCompact32( DWORD minfree ) { return 0; /* GlobalCompact does nothing in Win32 */ } @@ -1191,7 +1192,7 @@ /*********************************************************************** * GlobalMemoryStatus (KERNEL32.327) */ -VOID GlobalMemoryStatus( LPMEMORYSTATUS lpmem ) +VOID WINAPI GlobalMemoryStatus( LPMEMORYSTATUS lpmem ) { #ifdef linux FILE *f = fopen( "/proc/meminfo", "r" ); @@ -1204,16 +1205,27 @@ lpmem->dwTotalPageFile = lpmem->dwAvailPageFile = 0; while (fgets( buffer, sizeof(buffer), f )) { + /* old style /proc/meminfo ... */ if (sscanf( buffer, "Mem: %d %d %d", &total, &used, &free )) { lpmem->dwTotalPhys += total; lpmem->dwAvailPhys += free; } - else if (sscanf( buffer, "Swap: %d %d %d", &total, &used, &free )) + if (sscanf( buffer, "Swap: %d %d %d", &total, &used, &free )) { lpmem->dwTotalPageFile += total; lpmem->dwAvailPageFile += free; } + + /* new style /proc/meminfo ... */ + if (sscanf(buffer, "MemTotal: %d", &total)) + lpmem->dwTotalPhys = total*1024; + if (sscanf(buffer, "MemFree: %d", &free)) + lpmem->dwAvailPhys = free*1024; + if (sscanf(buffer, "SwapTotal: %d", &total)) + lpmem->dwTotalPageFile = total*1024; + if (sscanf(buffer, "SwapFree: %d", &free)) + lpmem->dwAvailPageFile = free*1024; } fclose( f ); @@ -1236,3 +1248,16 @@ lpmem->dwTotalVirtual = 32*1024*1024; lpmem->dwAvailVirtual = 32*1024*1024; } + +/********************************************************************** + * WOWGlobalAllocLock (KERNEL32.62) + * + * Combined GlobalAlloc and GlobalLock. + */ +SEGPTR WINAPI WOWGlobalAllocLock16(DWORD flags,DWORD cb,HGLOBAL16 *hmem) +{ + HGLOBAL16 xhmem; + xhmem = GlobalAlloc16(flags,cb); + if (hmem) *hmem = xhmem; + return WIN16_GlobalLock16(xhmem); +}
diff --git a/memory/heap.c b/memory/heap.c index 75e5adc..990ebb9 100644 --- a/memory/heap.c +++ b/memory/heap.c
@@ -780,7 +780,7 @@ /*********************************************************************** * HeapCreate (KERNEL32.336) */ -HANDLE32 HeapCreate( DWORD flags, DWORD initialSize, DWORD maxSize ) +HANDLE32 WINAPI HeapCreate( DWORD flags, DWORD initialSize, DWORD maxSize ) { int i; HEAP *heap; @@ -838,7 +838,7 @@ /*********************************************************************** * HeapDestroy (KERNEL32.337) */ -BOOL32 HeapDestroy( HANDLE32 heap ) +BOOL32 WINAPI HeapDestroy( HANDLE32 heap ) { HEAP *heapPtr = HEAP_GetPtr( heap ); SUBHEAP *subheap; @@ -862,7 +862,7 @@ /*********************************************************************** * HeapAlloc (KERNEL32.334) */ -LPVOID HeapAlloc( HANDLE32 heap, DWORD flags, DWORD size ) +LPVOID WINAPI HeapAlloc( HANDLE32 heap, DWORD flags, DWORD size ) { ARENA_FREE *pArena; ARENA_INUSE *pInUse; @@ -922,7 +922,7 @@ /*********************************************************************** * HeapFree (KERNEL32.338) */ -BOOL32 HeapFree( HANDLE32 heap, DWORD flags, LPVOID ptr ) +BOOL32 WINAPI HeapFree( HANDLE32 heap, DWORD flags, LPVOID ptr ) { ARENA_INUSE *pInUse; SUBHEAP *subheap; @@ -961,7 +961,7 @@ /*********************************************************************** * HeapReAlloc (KERNEL32.340) */ -LPVOID HeapReAlloc( HANDLE32 heap, DWORD flags, LPVOID ptr, DWORD size ) +LPVOID WINAPI HeapReAlloc( HANDLE32 heap, DWORD flags, LPVOID ptr, DWORD size ) { ARENA_INUSE *pArena; DWORD oldSize; @@ -1077,7 +1077,7 @@ /*********************************************************************** * HeapCompact (KERNEL32.335) */ -DWORD HeapCompact( HANDLE32 heap, DWORD flags ) +DWORD WINAPI HeapCompact( HANDLE32 heap, DWORD flags ) { return 0; } @@ -1086,7 +1086,7 @@ /*********************************************************************** * HeapLock (KERNEL32.339) */ -BOOL32 HeapLock( HANDLE32 heap ) +BOOL32 WINAPI HeapLock( HANDLE32 heap ) { HEAP *heapPtr = HEAP_GetPtr( heap ); @@ -1099,7 +1099,7 @@ /*********************************************************************** * HeapUnlock (KERNEL32.342) */ -BOOL32 HeapUnlock( HANDLE32 heap ) +BOOL32 WINAPI HeapUnlock( HANDLE32 heap ) { HEAP *heapPtr = HEAP_GetPtr( heap ); @@ -1112,7 +1112,7 @@ /*********************************************************************** * HeapSize (KERNEL32.341) */ -DWORD HeapSize( HANDLE32 heap, DWORD flags, LPVOID ptr ) +DWORD WINAPI HeapSize( HANDLE32 heap, DWORD flags, LPVOID ptr ) { DWORD ret; HEAP *heapPtr = HEAP_GetPtr( heap ); @@ -1142,7 +1142,7 @@ /*********************************************************************** * HeapValidate (KERNEL32.343) */ -BOOL32 HeapValidate( HANDLE32 heap, DWORD flags, LPVOID block ) +BOOL32 WINAPI HeapValidate( HANDLE32 heap, DWORD flags, LPVOID block ) { SUBHEAP *subheap; HEAP *heapPtr = (HEAP *)heap; @@ -1194,7 +1194,7 @@ /*********************************************************************** * HeapWalk (KERNEL32.344) */ -BOOL32 HeapWalk( HANDLE32 heap, void *entry ) +BOOL32 WINAPI HeapWalk( HANDLE32 heap, void *entry ) { fprintf( stderr, "HeapWalk(%08x): not implemented\n", heap ); return FALSE;
diff --git a/memory/ldt.c b/memory/ldt.c index de1cad0..36da4e1 100644 --- a/memory/ldt.c +++ b/memory/ldt.c
@@ -34,12 +34,24 @@ unsigned long count ) { int res; +#ifdef __PIC__ + __asm__ __volatile__( "pushl %%ebx\n\t" + "movl %2,%%ebx\n\t" + "int $0x80\n\t" + "popl %%ebx" + : "=a" (res) + : "0" (SYS_modify_ldt), + "g" (func), + "c" (ptr), + "d" (count) ); +#else __asm__ __volatile__("int $0x80" : "=a" (res) : "0" (SYS_modify_ldt), "b" (func), "c" (ptr), "d" (count) ); +#endif /* __PIC__ */ if (res >= 0) return res; errno = -res; return -1;
diff --git a/memory/local.c b/memory/local.c index e54c03a..894beba 100644 --- a/memory/local.c +++ b/memory/local.c
@@ -302,7 +302,7 @@ /*********************************************************************** * LocalInit (KERNEL.4) */ -BOOL16 LocalInit( HANDLE16 selector, WORD start, WORD end ) +BOOL16 WINAPI LocalInit( HANDLE16 selector, WORD start, WORD end ) { char *ptr; WORD heapInfoArena, freeArena, lastArena; @@ -1460,7 +1460,7 @@ /*********************************************************************** * LocalAlloc16 (KERNEL.5) */ -HLOCAL16 LocalAlloc16( UINT16 flags, WORD size ) +HLOCAL16 WINAPI LocalAlloc16( UINT16 flags, WORD size ) { return LOCAL_Alloc( CURRENT_DS, flags, size ); } @@ -1469,7 +1469,7 @@ /*********************************************************************** * LocalReAlloc16 (KERNEL.6) */ -HLOCAL16 LocalReAlloc16( HLOCAL16 handle, WORD size, UINT16 flags ) +HLOCAL16 WINAPI LocalReAlloc16( HLOCAL16 handle, WORD size, UINT16 flags ) { return LOCAL_ReAlloc( CURRENT_DS, handle, size, flags ); } @@ -1478,7 +1478,7 @@ /*********************************************************************** * LocalFree16 (KERNEL.7) */ -HLOCAL16 LocalFree16( HLOCAL16 handle ) +HLOCAL16 WINAPI LocalFree16( HLOCAL16 handle ) { return LOCAL_Free( CURRENT_DS, handle ); } @@ -1489,7 +1489,7 @@ * * Note: only the offset part of the pointer is returned by the relay code. */ -SEGPTR LocalLock16( HLOCAL16 handle ) +SEGPTR WINAPI LocalLock16( HLOCAL16 handle ) { return LOCAL_LockSegptr( CURRENT_DS, handle ); } @@ -1498,7 +1498,7 @@ /*********************************************************************** * LocalUnlock16 (KERNEL.9) */ -BOOL16 LocalUnlock16( HLOCAL16 handle ) +BOOL16 WINAPI LocalUnlock16( HLOCAL16 handle ) { return LOCAL_Unlock( CURRENT_DS, handle ); } @@ -1507,7 +1507,7 @@ /*********************************************************************** * LocalSize16 (KERNEL.10) */ -UINT16 LocalSize16( HLOCAL16 handle ) +UINT16 WINAPI LocalSize16( HLOCAL16 handle ) { return LOCAL_Size( CURRENT_DS, handle ); } @@ -1516,7 +1516,7 @@ /*********************************************************************** * LocalHandle16 (KERNEL.11) */ -HLOCAL16 LocalHandle16( WORD addr ) +HLOCAL16 WINAPI LocalHandle16( WORD addr ) { return LOCAL_Handle( CURRENT_DS, addr ); } @@ -1525,7 +1525,7 @@ /*********************************************************************** * LocalFlags16 (KERNEL.12) */ -UINT16 LocalFlags16( HLOCAL16 handle ) +UINT16 WINAPI LocalFlags16( HLOCAL16 handle ) { return LOCAL_Flags( CURRENT_DS, handle ); } @@ -1534,7 +1534,7 @@ /*********************************************************************** * LocalCompact16 (KERNEL.13) */ -UINT16 LocalCompact16( UINT16 minfree ) +UINT16 WINAPI LocalCompact16( UINT16 minfree ) { dprintf_local( stddeb, "LocalCompact: %04x\n", minfree ); return LOCAL_Compact( CURRENT_DS, minfree, 0 ); @@ -1544,7 +1544,7 @@ /*********************************************************************** * LocalNotify (KERNEL.14) */ -FARPROC16 LocalNotify( FARPROC16 func ) +FARPROC16 WINAPI LocalNotify( FARPROC16 func ) { LOCALHEAPINFO *pInfo; FARPROC16 oldNotify; @@ -1567,7 +1567,7 @@ /*********************************************************************** * LocalShrink16 (KERNEL.121) */ -UINT16 LocalShrink16( HGLOBAL16 handle, UINT16 newsize ) +UINT16 WINAPI LocalShrink16( HGLOBAL16 handle, UINT16 newsize ) { dprintf_local( stddeb, "LocalShrink: %04x %04x\n", handle, newsize ); return 0; @@ -1577,7 +1577,7 @@ /*********************************************************************** * GetHeapSpaces (KERNEL.138) */ -DWORD GetHeapSpaces( HMODULE16 module ) +DWORD WINAPI GetHeapSpaces( HMODULE16 module ) { NE_MODULE *pModule; WORD ds; @@ -1592,7 +1592,7 @@ /*********************************************************************** * LocalCountFree (KERNEL.161) */ -WORD LocalCountFree(void) +WORD WINAPI LocalCountFree(void) { return LOCAL_CountFree( CURRENT_DS ); } @@ -1601,7 +1601,7 @@ /*********************************************************************** * LocalHeapSize (KERNEL.162) */ -WORD LocalHeapSize() +WORD WINAPI LocalHeapSize(void) { dprintf_local( stddeb, "LocalHeapSize:\n" ); return LOCAL_HeapSize( CURRENT_DS ); @@ -1611,7 +1611,7 @@ /*********************************************************************** * LocalHandleDelta (KERNEL.310) */ -WORD LocalHandleDelta( WORD delta ) +WORD WINAPI LocalHandleDelta( WORD delta ) { LOCALHEAPINFO *pInfo; @@ -1630,7 +1630,7 @@ /*********************************************************************** * LocalInfo (TOOLHELP.56) */ -BOOL16 LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL16 handle ) +BOOL16 WINAPI LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL16 handle ) { LOCALHEAPINFO *pInfo = LOCAL_GetHeap(SELECTOROF(WIN16_GlobalLock16(handle))); if (!pInfo) return FALSE; @@ -1642,7 +1642,7 @@ /*********************************************************************** * LocalFirst (TOOLHELP.57) */ -BOOL16 LocalFirst( LOCALENTRY *pLocalEntry, HGLOBAL16 handle ) +BOOL16 WINAPI LocalFirst( LOCALENTRY *pLocalEntry, HGLOBAL16 handle ) { WORD ds = GlobalHandleToSel( handle ); char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); @@ -1665,7 +1665,7 @@ /*********************************************************************** * LocalNext (TOOLHELP.58) */ -BOOL16 LocalNext( LOCALENTRY *pLocalEntry ) +BOOL16 WINAPI LocalNext( LOCALENTRY *pLocalEntry ) { WORD ds = GlobalHandleToSel( pLocalEntry->hHeap ); char *ptr = PTR_SEG_OFF_TO_LIN( ds, 0 ); @@ -1692,7 +1692,7 @@ /*********************************************************************** * LocalAlloc32 (KERNEL32.371) */ -HLOCAL32 LocalAlloc32( UINT32 flags, DWORD size ) +HLOCAL32 WINAPI LocalAlloc32( UINT32 flags, DWORD size ) { return (HLOCAL32)GlobalAlloc32( flags, size ); } @@ -1701,7 +1701,7 @@ /*********************************************************************** * LocalCompact32 (KERNEL32.372) */ -UINT32 LocalCompact32( UINT32 minfree ) +UINT32 WINAPI LocalCompact32( UINT32 minfree ) { return 0; /* LocalCompact does nothing in Win32 */ } @@ -1710,7 +1710,7 @@ /*********************************************************************** * LocalFlags32 (KERNEL32.374) */ -UINT32 LocalFlags32( HLOCAL32 handle ) +UINT32 WINAPI LocalFlags32( HLOCAL32 handle ) { return GlobalFlags32( (HGLOBAL32)handle ); } @@ -1719,7 +1719,7 @@ /*********************************************************************** * LocalFree32 (KERNEL32.375) */ -HLOCAL32 LocalFree32( HLOCAL32 handle ) +HLOCAL32 WINAPI LocalFree32( HLOCAL32 handle ) { return (HLOCAL32)GlobalFree32( (HGLOBAL32)handle ); } @@ -1728,7 +1728,7 @@ /*********************************************************************** * LocalHandle32 (KERNEL32.376) */ -HLOCAL32 LocalHandle32( LPCVOID ptr ) +HLOCAL32 WINAPI LocalHandle32( LPCVOID ptr ) { return (HLOCAL32)GlobalHandle32( ptr ); } @@ -1737,7 +1737,7 @@ /*********************************************************************** * LocalLock32 (KERNEL32.377) */ -LPVOID LocalLock32( HLOCAL32 handle ) +LPVOID WINAPI LocalLock32( HLOCAL32 handle ) { return GlobalLock32( (HGLOBAL32)handle ); } @@ -1746,7 +1746,7 @@ /*********************************************************************** * LocalReAlloc32 (KERNEL32.378) */ -HLOCAL32 LocalReAlloc32( HLOCAL32 handle, DWORD size, UINT32 flags ) +HLOCAL32 WINAPI LocalReAlloc32( HLOCAL32 handle, DWORD size, UINT32 flags ) { return (HLOCAL32)GlobalReAlloc32( (HGLOBAL32)handle, size, flags ); } @@ -1755,7 +1755,7 @@ /*********************************************************************** * LocalShrink32 (KERNEL32.379) */ -UINT32 LocalShrink32( HGLOBAL32 handle, UINT32 newsize ) +UINT32 WINAPI LocalShrink32( HGLOBAL32 handle, UINT32 newsize ) { return 0; /* LocalShrink does nothing in Win32 */ } @@ -1764,7 +1764,7 @@ /*********************************************************************** * LocalSize32 (KERNEL32.380) */ -UINT32 LocalSize32( HLOCAL32 handle ) +UINT32 WINAPI LocalSize32( HLOCAL32 handle ) { return GlobalSize32( (HGLOBAL32)handle ); } @@ -1773,7 +1773,7 @@ /*********************************************************************** * LocalUnlock32 (KERNEL32.381) */ -BOOL32 LocalUnlock32( HLOCAL32 handle ) +BOOL32 WINAPI LocalUnlock32( HLOCAL32 handle ) { return GlobalUnlock32( (HGLOBAL32)handle ); }
diff --git a/memory/selector.c b/memory/selector.c index 06ed3ef..421cd99 100644 --- a/memory/selector.c +++ b/memory/selector.c
@@ -20,7 +20,7 @@ /*********************************************************************** * AllocSelectorArray (KERNEL.206) */ -WORD AllocSelectorArray( WORD count ) +WORD WINAPI AllocSelectorArray( WORD count ) { WORD i, size = 0; @@ -40,7 +40,7 @@ /*********************************************************************** * AllocSelector (KERNEL.175) */ -WORD AllocSelector( WORD sel ) +WORD WINAPI AllocSelector( WORD sel ) { WORD newsel, count, i; @@ -63,7 +63,7 @@ /*********************************************************************** * FreeSelector (KERNEL.176) */ -WORD FreeSelector( WORD sel ) +WORD WINAPI FreeSelector( WORD sel ) { if (IS_SELECTOR_FREE(sel)) return sel; /* error */ SELECTOR_FreeBlock( sel, 1 ); @@ -202,7 +202,7 @@ /*********************************************************************** * PrestoChangoSelector (KERNEL.177) */ -WORD PrestoChangoSelector( WORD selSrc, WORD selDst ) +WORD WINAPI PrestoChangoSelector( WORD selSrc, WORD selDst ) { ldt_entry entry; LDT_GetEntry( SELECTOR_TO_ENTRY( selSrc ), &entry ); @@ -215,7 +215,7 @@ /*********************************************************************** * AllocCStoDSAlias (KERNEL.170) */ -WORD AllocCStoDSAlias( WORD sel ) +WORD WINAPI AllocCStoDSAlias( WORD sel ) { WORD newsel; ldt_entry entry; @@ -234,7 +234,7 @@ /*********************************************************************** * AllocDStoCSAlias (KERNEL.171) */ -WORD AllocDStoCSAlias( WORD sel ) +WORD WINAPI AllocDStoCSAlias( WORD sel ) { WORD newsel; ldt_entry entry; @@ -253,7 +253,7 @@ /*********************************************************************** * LongPtrAdd (KERNEL.180) */ -void LongPtrAdd( DWORD ptr, DWORD add ) +void WINAPI LongPtrAdd( DWORD ptr, DWORD add ) { ldt_entry entry; LDT_GetEntry( SELECTOR_TO_ENTRY(SELECTOROF(ptr)), &entry ); @@ -265,7 +265,7 @@ /*********************************************************************** * GetSelectorBase (KERNEL.186) */ -DWORD GetSelectorBase( WORD sel ) +DWORD WINAPI GetSelectorBase( WORD sel ) { DWORD base = GET_SEL_BASE(sel); @@ -279,7 +279,7 @@ /*********************************************************************** * SetSelectorBase (KERNEL.187) */ -WORD SetSelectorBase( WORD sel, DWORD base ) +WORD WINAPI SetSelectorBase( WORD sel, DWORD base ) { ldt_entry entry; @@ -295,7 +295,7 @@ /*********************************************************************** * GetSelectorLimit (KERNEL.188) */ -DWORD GetSelectorLimit( WORD sel ) +DWORD WINAPI GetSelectorLimit( WORD sel ) { return GET_SEL_LIMIT(sel); } @@ -304,7 +304,7 @@ /*********************************************************************** * SetSelectorLimit (KERNEL.189) */ -WORD SetSelectorLimit( WORD sel, DWORD limit ) +WORD WINAPI SetSelectorLimit( WORD sel, DWORD limit ) { ldt_entry entry; LDT_GetEntry( SELECTOR_TO_ENTRY(sel), &entry ); @@ -319,7 +319,7 @@ /*********************************************************************** * SelectorAccessRights (KERNEL.196) */ -WORD SelectorAccessRights( WORD sel, WORD op, WORD val ) +WORD WINAPI SelectorAccessRights( WORD sel, WORD op, WORD val ) { ldt_entry entry; LDT_GetEntry( SELECTOR_TO_ENTRY(sel), &entry ); @@ -349,7 +349,7 @@ /*********************************************************************** * IsBadCodePtr16 (KERNEL.336) */ -BOOL16 IsBadCodePtr16( SEGPTR lpfn ) +BOOL16 WINAPI IsBadCodePtr16( SEGPTR lpfn ) { WORD sel; ldt_entry entry; @@ -367,7 +367,7 @@ /*********************************************************************** * IsBadStringPtr16 (KERNEL.337) */ -BOOL16 IsBadStringPtr16( SEGPTR ptr, UINT16 size ) +BOOL16 WINAPI IsBadStringPtr16( SEGPTR ptr, UINT16 size ) { WORD sel; ldt_entry entry; @@ -386,7 +386,7 @@ /*********************************************************************** * IsBadHugeReadPtr16 (KERNEL.346) */ -BOOL16 IsBadHugeReadPtr16( SEGPTR ptr, DWORD size ) +BOOL16 WINAPI IsBadHugeReadPtr16( SEGPTR ptr, DWORD size ) { WORD sel; ldt_entry entry; @@ -404,7 +404,7 @@ /*********************************************************************** * IsBadHugeWritePtr16 (KERNEL.347) */ -BOOL16 IsBadHugeWritePtr16( SEGPTR ptr, DWORD size ) +BOOL16 WINAPI IsBadHugeWritePtr16( SEGPTR ptr, DWORD size ) { WORD sel; ldt_entry entry; @@ -421,7 +421,7 @@ /*********************************************************************** * IsBadReadPtr16 (KERNEL.334) */ -BOOL16 IsBadReadPtr16( SEGPTR ptr, UINT16 size ) +BOOL16 WINAPI IsBadReadPtr16( SEGPTR ptr, UINT16 size ) { return IsBadHugeReadPtr16( ptr, size ); } @@ -430,7 +430,7 @@ /*********************************************************************** * IsBadWritePtr16 (KERNEL.335) */ -BOOL16 IsBadWritePtr16( SEGPTR ptr, UINT16 size ) +BOOL16 WINAPI IsBadWritePtr16( SEGPTR ptr, UINT16 size ) { return IsBadHugeWritePtr16( ptr, size ); } @@ -439,7 +439,7 @@ /*********************************************************************** * MemoryRead (TOOLHELP.78) */ -DWORD MemoryRead( WORD sel, DWORD offset, void *buffer, DWORD count ) +DWORD WINAPI MemoryRead( WORD sel, DWORD offset, void *buffer, DWORD count ) { if (IS_SELECTOR_FREE(sel)) return 0; if (offset > GET_SEL_LIMIT(sel)) return 0; @@ -453,7 +453,7 @@ /*********************************************************************** * MemoryWrite (TOOLHELP.79) */ -DWORD MemoryWrite( WORD sel, DWORD offset, void *buffer, DWORD count ) +DWORD WINAPI MemoryWrite( WORD sel, DWORD offset, void *buffer, DWORD count ) { if (IS_SELECTOR_FREE(sel)) return 0; if (offset > GET_SEL_LIMIT(sel)) return 0; @@ -475,7 +475,7 @@ * * Maps fixed segmented pointer to linear. */ -LPVOID MapSL( SEGPTR sptr ) +LPVOID WINAPI MapSL( SEGPTR sptr ) { return (LPVOID)PTR_SEG_TO_LIN(sptr); } @@ -486,7 +486,7 @@ * * Maps linear pointer to segmented. */ -SEGPTR MapLS( LPVOID ptr ) +SEGPTR WINAPI MapLS( LPVOID ptr ) { WORD sel = SELECTOR_AllocBlock( ptr, 0x10000, SEGMENT_DATA, FALSE, FALSE ); return PTR_SEG_OFF_TO_SEGPTR( sel, 0 ); @@ -498,7 +498,120 @@ * * Free mapped selector. */ -void UnMapLS( SEGPTR sptr ) +void WINAPI UnMapLS( SEGPTR sptr ) { if (!__winelib) SELECTOR_FreeBlock( SELECTOROF(sptr), 1 ); } + +/*********************************************************************** + * GetThreadSelectorEntry (KERNEL32) + * FIXME: add #ifdef i386 for non x86 + */ +BOOL32 WINAPI GetThreadSelectorEntry( HANDLE32 hthread, DWORD sel, + LPLDT_ENTRY ldtent) +{ + ldt_entry ldtentry; + + LDT_GetEntry(SELECTOR_TO_ENTRY(sel),&ldtentry); + ldtent->BaseLow = ldtentry.base & 0x0000ffff; + ldtent->HighWord.Bits.BaseMid = (ldtentry.base & 0x00ff0000) >> 16; + ldtent->HighWord.Bits.BaseHi = (ldtentry.base & 0xff000000) >> 24; + ldtent->LimitLow = ldtentry.limit & 0x0000ffff; + ldtent->HighWord.Bits.LimitHi = (ldtentry.limit & 0x00ff0000) >> 16; + ldtent->HighWord.Bits.Dpl = 3; + ldtent->HighWord.Bits.Sys = 0; + ldtent->HighWord.Bits.Pres = 1; + ldtent->HighWord.Bits.Type = 0x10|(ldtentry.type << 2); + if (ldtentry.read_only) + ldtent->HighWord.Bits.Type|=0x2; + ldtent->HighWord.Bits.Granularity = ldtentry.limit_in_pages; + ldtent->HighWord.Bits.Default_Big = ldtentry.seg_32bit; + return TRUE; +} + + +/********************************************************************** + * SMapLS* (KERNEL32) + * These functions map linear pointers at [EBP+xxx] to segmented pointers + * and return them. + * Win95 uses some kind of alias structs, which it stores in [EBP+x] to + * unravel them at SUnMapLS. We just store the segmented pointer there. + */ +static void +x_SMapLS_IP_EBP_x(CONTEXT *context,int argoff) { + DWORD val,ptr; + + val =*(DWORD*)(EBP_reg(context)+argoff); + if (val<0x10000) { + ptr=val; + *(DWORD*)(EBP_reg(context)+argoff) = 0; + } else { + ptr = MapLS((LPVOID)val); + *(DWORD*)(EBP_reg(context)+argoff) = ptr; + } + fprintf(stderr,"[EBP+%d] %08lx => %08lx\n",argoff,val,ptr); + EAX_reg(context) = ptr; +} + +void WINAPI SMapLS_IP_EBP_8(CONTEXT *context) {x_SMapLS_IP_EBP_x(context,8);} +void WINAPI SMapLS_IP_EBP_12(CONTEXT *context) {x_SMapLS_IP_EBP_x(context,12);} +void WINAPI SMapLS_IP_EBP_16(CONTEXT *context) {x_SMapLS_IP_EBP_x(context,16);} +void WINAPI SMapLS_IP_EBP_20(CONTEXT *context) {x_SMapLS_IP_EBP_x(context,20);} +void WINAPI SMapLS_IP_EBP_24(CONTEXT *context) {x_SMapLS_IP_EBP_x(context,24);} +void WINAPI SMapLS_IP_EBP_28(CONTEXT *context) {x_SMapLS_IP_EBP_x(context,28);} +void WINAPI SMapLS_IP_EBP_32(CONTEXT *context) {x_SMapLS_IP_EBP_x(context,32);} +void WINAPI SMapLS_IP_EBP_36(CONTEXT *context) {x_SMapLS_IP_EBP_x(context,36);} +void WINAPI SMapLS_IP_EBP_40(CONTEXT *context) {x_SMapLS_IP_EBP_x(context,40);} + +void WINAPI SMapLS(CONTEXT *context,int argoff) +{ + if (EAX_reg(context)>=0x10000) { + EAX_reg(context) = MapLS((LPVOID)EAX_reg(context)); + EDX_reg(context) = EAX_reg(context); + } else { + EDX_reg(context) = 0; + } +} + +/********************************************************************** + * WOWGetVDMPointer (KERNEL32.55) + * Get linear from segmented pointer. (MSDN lib) + */ +LPVOID WINAPI WOWGetVDMPointer(DWORD vp,DWORD nrofbytes,BOOL32 protected) +{ + /* FIXME: add size check too */ + fprintf(stdnimp,"WOWGetVDMPointer(%08lx,%ld,%d)\n",vp,nrofbytes,protected); + if (protected) + return PTR_SEG_TO_LIN(vp); + else + return DOSMEM_MapRealToLinear(vp); +} + +/********************************************************************** + * GetVDMPointer32W (KERNEL.516) + */ +LPVOID WINAPI GetVDMPointer32W(DWORD vp,DWORD mode) +{ + return WOWGetVDMPointer(vp,0,mode); +} + +/********************************************************************** + * WOWGetVDMPointerFix (KERNEL32.55) + * Dito, but fix heapsegment (MSDN lib) + */ +LPVOID WINAPI WOWGetVDMPointerFix(DWORD vp,DWORD nrofbytes,BOOL32 protected) +{ + /* FIXME: fix heapsegment */ + fprintf(stdnimp,"WOWGetVDMPointerFix(%08lx,%ld,%d)\n",vp,nrofbytes,protected); + return WOWGetVDMPointer(vp,nrofbytes,protected); +} + +/********************************************************************** + * WOWGetVDMPointerUnFix (KERNEL32.56) + */ +void WINAPI WOWGetVDMPointerUnfix(DWORD vp) +{ + fprintf(stdnimp,"WOWGetVDMPointerUnfix(%08lx), STUB\n",vp); + /* FIXME: unfix heapsegment */ +} +
diff --git a/memory/string.c b/memory/string.c index 05beae1..72efb86 100644 --- a/memory/string.c +++ b/memory/string.c
@@ -55,7 +55,7 @@ /*********************************************************************** * hmemcpy (KERNEL.348) */ -void hmemcpy( LPVOID dst, LPCVOID src, LONG count ) +void WINAPI hmemcpy( LPVOID dst, LPCVOID src, LONG count ) { memcpy( dst, src, count ); } @@ -64,7 +64,7 @@ /*********************************************************************** * lstrcat16 (KERNEL.89) */ -SEGPTR lstrcat16( SEGPTR dst, LPCSTR src ) +SEGPTR WINAPI lstrcat16( SEGPTR dst, LPCSTR src ) { lstrcat32A( (LPSTR)PTR_SEG_TO_LIN(dst), src ); return dst; @@ -74,7 +74,7 @@ /*********************************************************************** * lstrcat32A (KERNEL32.599) */ -LPSTR lstrcat32A( LPSTR dst, LPCSTR src ) +LPSTR WINAPI lstrcat32A( LPSTR dst, LPCSTR src ) { dprintf_string(stddeb,"strcat: Append '%s' to '%s'\n", (src)?src:"NULL",(dst)?dst:"NULL"); @@ -86,7 +86,7 @@ /*********************************************************************** * lstrcat32W (KERNEL32.600) */ -LPWSTR lstrcat32W( LPWSTR dst, LPCWSTR src ) +LPWSTR WINAPI lstrcat32W( LPWSTR dst, LPCWSTR src ) { register LPWSTR p = dst; while (*p) p++; @@ -98,7 +98,7 @@ /*********************************************************************** * lstrcatn16 (KERNEL.352) */ -SEGPTR lstrcatn16( SEGPTR dst, LPCSTR src, INT16 n ) +SEGPTR WINAPI lstrcatn16( SEGPTR dst, LPCSTR src, INT16 n ) { lstrcatn32A( (LPSTR)PTR_SEG_TO_LIN(dst), src, n ); return dst; @@ -108,7 +108,7 @@ /*********************************************************************** * lstrcatn32A (Not a Windows API) */ -LPSTR lstrcatn32A( LPSTR dst, LPCSTR src, INT32 n ) +LPSTR WINAPI lstrcatn32A( LPSTR dst, LPCSTR src, INT32 n ) { register LPSTR p = dst; dprintf_string(stddeb,"strcatn add %d chars from '%s' to '%s'\n", @@ -123,7 +123,7 @@ /*********************************************************************** * lstrcatn32W (Not a Windows API) */ -LPWSTR lstrcatn32W( LPWSTR dst, LPCWSTR src, INT32 n ) +LPWSTR WINAPI lstrcatn32W( LPWSTR dst, LPCWSTR src, INT32 n ) { register LPWSTR p = dst; while (*p) p++; @@ -136,7 +136,7 @@ /*********************************************************************** * lstrcmp16 (USER.430) */ -INT16 lstrcmp16( LPCSTR str1, LPCSTR str2 ) +INT16 WINAPI lstrcmp16( LPCSTR str1, LPCSTR str2 ) { return (INT16)lstrcmp32A( str1, str2 ); } @@ -145,7 +145,7 @@ /*********************************************************************** * lstrcmp32A (KERNEL.602) */ -INT32 lstrcmp32A( LPCSTR str1, LPCSTR str2 ) +INT32 WINAPI lstrcmp32A( LPCSTR str1, LPCSTR str2 ) { dprintf_string(stddeb,"strcmp: '%s' and '%s'\n", (str1)?str1:"NULL",(str2)?str2:"NULL"); @@ -156,7 +156,7 @@ /*********************************************************************** * lstrcmp32W (KERNEL.603) */ -INT32 lstrcmp32W( LPCWSTR str1, LPCWSTR str2 ) +INT32 WINAPI lstrcmp32W( LPCWSTR str1, LPCWSTR str2 ) { while (*str1 && (*str1 == *str2)) { str1++; str2++; } return (INT32)(*str1 - *str2); @@ -166,7 +166,7 @@ /*********************************************************************** * lstrcmpi16 (USER.471) */ -INT16 lstrcmpi16( LPCSTR str1, LPCSTR str2 ) +INT16 WINAPI lstrcmpi16( LPCSTR str1, LPCSTR str2 ) { return (INT16)lstrcmpi32A( str1, str2 ); } @@ -175,7 +175,7 @@ /*********************************************************************** * lstrcmpi32A (KERNEL32.605) */ -INT32 lstrcmpi32A( LPCSTR str1, LPCSTR str2 ) +INT32 WINAPI lstrcmpi32A( LPCSTR str1, LPCSTR str2 ) { INT32 res; @@ -194,7 +194,7 @@ /*********************************************************************** * lstrcmpi32W (KERNEL32.606) */ -INT32 lstrcmpi32W( LPCWSTR str1, LPCWSTR str2 ) +INT32 WINAPI lstrcmpi32W( LPCWSTR str1, LPCWSTR str2 ) { INT32 res; @@ -212,7 +212,7 @@ /*********************************************************************** * lstrcpy16 (KERNEL.88) */ -SEGPTR lstrcpy16( SEGPTR dst, LPCSTR src ) +SEGPTR WINAPI lstrcpy16( SEGPTR dst, LPCSTR src ) { lstrcpy32A( (LPSTR)PTR_SEG_TO_LIN(dst), src ); return dst; @@ -222,7 +222,7 @@ /*********************************************************************** * lstrcpy32A (KERNEL32.608) */ -LPSTR lstrcpy32A( LPSTR dst, LPCSTR src ) +LPSTR WINAPI lstrcpy32A( LPSTR dst, LPCSTR src ) { dprintf_string(stddeb,"strcpy '%s'\n", (src)?src:"NULL"); @@ -235,7 +235,7 @@ /*********************************************************************** * lstrcpy32W (KERNEL32.609) */ -LPWSTR lstrcpy32W( LPWSTR dst, LPCWSTR src ) +LPWSTR WINAPI lstrcpy32W( LPWSTR dst, LPCWSTR src ) { register LPWSTR p = dst; while ((*p++ = *src++)); @@ -246,7 +246,7 @@ /*********************************************************************** * lstrcpyn16 (KERNEL.353) */ -SEGPTR lstrcpyn16( SEGPTR dst, LPCSTR src, INT16 n ) +SEGPTR WINAPI lstrcpyn16( SEGPTR dst, LPCSTR src, INT16 n ) { lstrcpyn32A( (LPSTR)PTR_SEG_TO_LIN(dst), src, n ); return dst; @@ -256,7 +256,7 @@ /*********************************************************************** * lstrcpyn32A (KERNEL32.611) */ -LPSTR lstrcpyn32A( LPSTR dst, LPCSTR src, INT32 n ) +LPSTR WINAPI lstrcpyn32A( LPSTR dst, LPCSTR src, INT32 n ) { LPSTR p = dst; dprintf_string(stddeb,"strcpyn '%s' for %d chars\n", @@ -270,7 +270,7 @@ /*********************************************************************** * lstrcpyn32W (KERNEL32.612) */ -LPWSTR lstrcpyn32W( LPWSTR dst, LPCWSTR src, INT32 n ) +LPWSTR WINAPI lstrcpyn32W( LPWSTR dst, LPCWSTR src, INT32 n ) { LPWSTR p = dst; while ((n-- > 1) && *src) *p++ = *src++; @@ -282,7 +282,7 @@ /*********************************************************************** * lstrlen16 (KERNEL.90) */ -INT16 lstrlen16( LPCSTR str ) +INT16 WINAPI lstrlen16( LPCSTR str ) { return (INT16)lstrlen32A( str ); } @@ -291,7 +291,7 @@ /*********************************************************************** * lstrlen32A (KERNEL32.614) */ -INT32 lstrlen32A( LPCSTR str ) +INT32 WINAPI lstrlen32A( LPCSTR str ) { /* looks weird, but win3.1 KERNEL got a GeneralProtection handler * in lstrlen() ... we check only for NULL pointer reference. @@ -306,7 +306,7 @@ /*********************************************************************** * lstrlen32W (KERNEL32.615) */ -INT32 lstrlen32W( LPCWSTR str ) +INT32 WINAPI lstrlen32W( LPCWSTR str ) { INT32 len = 0; if (!str) return 0; @@ -318,7 +318,7 @@ /*********************************************************************** * lstrncmp32A (Not a Windows API) */ -INT32 lstrncmp32A( LPCSTR str1, LPCSTR str2, INT32 n ) +INT32 WINAPI lstrncmp32A( LPCSTR str1, LPCSTR str2, INT32 n ) { dprintf_string(stddeb,"strncmp '%s' and '%s' for %d chars\n", (str1)?str1:"NULL",(str2)?str2:"NULL",n); @@ -329,7 +329,7 @@ /*********************************************************************** * lstrncmp32W (Not a Windows API) */ -INT32 lstrncmp32W( LPCWSTR str1, LPCWSTR str2, INT32 n ) +INT32 WINAPI lstrncmp32W( LPCWSTR str1, LPCWSTR str2, INT32 n ) { if (!n) return 0; while ((--n > 0) && *str1 && (*str1 == *str2)) { str1++; str2++; } @@ -340,7 +340,7 @@ /*********************************************************************** * lstrncmpi32A (Not a Windows API) */ -INT32 lstrncmpi32A( LPCSTR str1, LPCSTR str2, INT32 n ) +INT32 WINAPI lstrncmpi32A( LPCSTR str1, LPCSTR str2, INT32 n ) { INT32 res; @@ -357,7 +357,7 @@ /*********************************************************************** * lstrncmpi32W (Not a Windows API) */ -INT32 lstrncmpi32W( LPCWSTR str1, LPCWSTR str2, INT32 n ) +INT32 WINAPI lstrncmpi32W( LPCWSTR str1, LPCWSTR str2, INT32 n ) { INT32 res; @@ -376,7 +376,7 @@ /*********************************************************************** * lstrcpyAtoW (Not a Windows API) */ -LPWSTR lstrcpyAtoW( LPWSTR dst, LPCSTR src ) +LPWSTR WINAPI lstrcpyAtoW( LPWSTR dst, LPCSTR src ) { register LPWSTR p = dst; while ((*p++ = (WCHAR)(unsigned char)*src++)); @@ -387,7 +387,7 @@ /*********************************************************************** * lstrcpyWtoA (Not a Windows API) */ -LPSTR lstrcpyWtoA( LPSTR dst, LPCWSTR src ) +LPSTR WINAPI lstrcpyWtoA( LPSTR dst, LPCWSTR src ) { register LPSTR p = dst; while ((*p++ = (CHAR)*src++)); @@ -398,7 +398,7 @@ /*********************************************************************** * lstrcpynAtoW (Not a Windows API) */ -LPWSTR lstrcpynAtoW( LPWSTR dst, LPCSTR src, INT32 n ) +LPWSTR WINAPI lstrcpynAtoW( LPWSTR dst, LPCSTR src, INT32 n ) { LPWSTR p = dst; while ((n-- > 1) && *src) *p++ = (WCHAR)(unsigned char)*src++; @@ -410,7 +410,7 @@ /*********************************************************************** * lstrcpynWtoA (Not a Windows API) */ -LPSTR lstrcpynWtoA( LPSTR dst, LPCWSTR src, INT32 n ) +LPSTR WINAPI lstrcpynWtoA( LPSTR dst, LPCWSTR src, INT32 n ) { LPSTR p = dst; while ((n-- > 1) && *src) *p++ = (CHAR)*src++; @@ -422,7 +422,7 @@ /*********************************************************************** * Copy (GDI.250) */ -void Copy( LPVOID src, LPVOID dst, WORD size ) +void WINAPI Copy( LPVOID src, LPVOID dst, WORD size ) { memcpy( dst, src, size ); } @@ -431,7 +431,7 @@ /*********************************************************************** * RtlFillMemory (KERNEL32.441) */ -VOID RtlFillMemory( LPVOID ptr, UINT32 len, UINT32 fill ) +VOID WINAPI RtlFillMemory( LPVOID ptr, UINT32 len, UINT32 fill ) { memset( ptr, fill, len ); } @@ -440,7 +440,7 @@ /*********************************************************************** * RtlMoveMemory (KERNEL32.442) */ -VOID RtlMoveMemory( LPVOID dst, LPCVOID src, UINT32 len ) +VOID WINAPI RtlMoveMemory( LPVOID dst, LPCVOID src, UINT32 len ) { memmove( dst, src, len ); } @@ -449,7 +449,7 @@ /*********************************************************************** * RtlZeroMemory (KERNEL32.444) */ -VOID RtlZeroMemory( LPVOID ptr, UINT32 len ) +VOID WINAPI RtlZeroMemory( LPVOID ptr, UINT32 len ) { memset( ptr, 0, len ); } @@ -458,7 +458,7 @@ /*********************************************************************** * AnsiToOem16 (KEYBOARD.5) */ -INT16 AnsiToOem16( LPCSTR s, LPSTR d ) +INT16 WINAPI AnsiToOem16( LPCSTR s, LPSTR d ) { CharToOem32A( s, d ); return -1; @@ -468,7 +468,7 @@ /*********************************************************************** * OemToAnsi16 (KEYBOARD.6) */ -INT16 OemToAnsi16( LPCSTR s, LPSTR d ) +INT16 WINAPI OemToAnsi16( LPCSTR s, LPSTR d ) { OemToChar32A( s, d ); return -1; @@ -478,7 +478,7 @@ /*********************************************************************** * AnsiToOemBuff16 (KEYBOARD.134) */ -void AnsiToOemBuff16( LPCSTR s, LPSTR d, UINT16 len ) +void WINAPI AnsiToOemBuff16( LPCSTR s, LPSTR d, UINT16 len ) { CharToOemBuff32A( s, d, len ? len : 65536 ); } @@ -487,7 +487,7 @@ /*********************************************************************** * OemToAnsiBuff16 (KEYBOARD.135) */ -void OemToAnsiBuff16( LPCSTR s, LPSTR d, UINT16 len ) +void WINAPI OemToAnsiBuff16( LPCSTR s, LPSTR d, UINT16 len ) { OemToCharBuff32A( s, d, len ? len : 65536 ); } @@ -496,7 +496,7 @@ /*********************************************************************** * CharToOem32A (USER32.36) */ -BOOL32 CharToOem32A( LPCSTR s, LPSTR d ) +BOOL32 WINAPI CharToOem32A( LPCSTR s, LPSTR d ) { if (!s || !d) return TRUE; dprintf_string(stddeb,"CharToOem '%s'\n", (s)?s:"NULL"); @@ -509,7 +509,7 @@ /*********************************************************************** * CharToOemBuff32A (USER32.37) */ -BOOL32 CharToOemBuff32A( LPCSTR s, LPSTR d, DWORD len ) +BOOL32 WINAPI CharToOemBuff32A( LPCSTR s, LPSTR d, DWORD len ) { while (len--) *d++ = ANSI_TO_OEM(*s++); return TRUE; @@ -519,7 +519,7 @@ /*********************************************************************** * CharToOemBuff32W (USER32.38) */ -BOOL32 CharToOemBuff32W( LPCWSTR s, LPSTR d, DWORD len ) +BOOL32 WINAPI CharToOemBuff32W( LPCWSTR s, LPSTR d, DWORD len ) { while (len--) *d++ = ANSI_TO_OEM(*s++); return TRUE; @@ -529,7 +529,7 @@ /*********************************************************************** * CharToOem32W (USER32.39) */ -BOOL32 CharToOem32W( LPCWSTR s, LPSTR d ) +BOOL32 WINAPI CharToOem32W( LPCWSTR s, LPSTR d ) { while ((*d++ = ANSI_TO_OEM(*s++))); return TRUE; @@ -539,7 +539,7 @@ /*********************************************************************** * OemToChar32A (USER32.401) */ -BOOL32 OemToChar32A( LPCSTR s, LPSTR d ) +BOOL32 WINAPI OemToChar32A( LPCSTR s, LPSTR d ) { dprintf_string(stddeb,"OemToChar '%s'\n", (s)?s:"NULL"); while ((*d++ = OEM_TO_ANSI(*s++))); @@ -551,7 +551,7 @@ /*********************************************************************** * OemToCharBuff32A (USER32.402) */ -BOOL32 OemToCharBuff32A( LPCSTR s, LPSTR d, DWORD len ) +BOOL32 WINAPI OemToCharBuff32A( LPCSTR s, LPSTR d, DWORD len ) { dprintf_string(stddeb,"OemToCharBuff '%s' for %ld chars\n", (s)?s:"NULL",len); while (len--) *d++ = OEM_TO_ANSI(*s++); @@ -562,7 +562,7 @@ /*********************************************************************** * OemToCharBuff32W (USER32.403) */ -BOOL32 OemToCharBuff32W( LPCSTR s, LPWSTR d, DWORD len ) +BOOL32 WINAPI OemToCharBuff32W( LPCSTR s, LPWSTR d, DWORD len ) { while (len--) *d++ = (WCHAR)OEM_TO_ANSI(*s++); return TRUE; @@ -572,7 +572,7 @@ /*********************************************************************** * OemToChar32W (USER32.404) */ -BOOL32 OemToChar32W( LPCSTR s, LPWSTR d ) +BOOL32 WINAPI OemToChar32W( LPCSTR s, LPWSTR d ) { while ((*d++ = (WCHAR)OEM_TO_ANSI(*s++))); return TRUE;
diff --git a/memory/virtual.c b/memory/virtual.c index 2aa42ba..f3765b2 100644 --- a/memory/virtual.c +++ b/memory/virtual.c
@@ -416,7 +416,7 @@ /*********************************************************************** * VirtualAlloc (KERNEL32.548) */ -LPVOID VirtualAlloc( LPVOID addr, DWORD size, DWORD type, DWORD protect ) +LPVOID WINAPI VirtualAlloc( LPVOID addr, DWORD size, DWORD type, DWORD protect) { FILE_VIEW *view; UINT32 base, ptr, view_size; @@ -517,7 +517,7 @@ /*********************************************************************** * VirtualFree (KERNEL32.550) */ -BOOL32 VirtualFree( LPVOID addr, DWORD size, DWORD type ) +BOOL32 WINAPI VirtualFree( LPVOID addr, DWORD size, DWORD type ) { FILE_VIEW *view; UINT32 base; @@ -567,7 +567,7 @@ /*********************************************************************** * VirtualLock (KERNEL32.551) */ -BOOL32 VirtualLock( LPVOID addr, DWORD size ) +BOOL32 WINAPI VirtualLock( LPVOID addr, DWORD size ) { return TRUE; } @@ -576,7 +576,7 @@ /*********************************************************************** * VirtualUnlock (KERNEL32.556) */ -BOOL32 VirtualUnlock( LPVOID addr, DWORD size ) +BOOL32 WINAPI VirtualUnlock( LPVOID addr, DWORD size ) { return TRUE; } @@ -585,8 +585,8 @@ /*********************************************************************** * VirtualProtect (KERNEL32.552) */ -BOOL32 VirtualProtect( LPVOID addr, DWORD size, DWORD new_prot, - LPDWORD old_prot ) +BOOL32 WINAPI VirtualProtect( LPVOID addr, DWORD size, DWORD new_prot, + LPDWORD old_prot ) { FILE_VIEW *view; UINT32 base, i; @@ -628,8 +628,8 @@ /*********************************************************************** * VirtualProtectEx (KERNEL32.553) */ -BOOL32 VirtualProtectEx( HANDLE32 handle, LPVOID addr, DWORD size, - DWORD new_prot, LPDWORD old_prot ) +BOOL32 WINAPI VirtualProtectEx( HANDLE32 handle, LPVOID addr, DWORD size, + DWORD new_prot, LPDWORD old_prot ) { BOOL32 ret = FALSE; @@ -649,7 +649,8 @@ /*********************************************************************** * VirtualQuery (KERNEL32.554) */ -BOOL32 VirtualQuery( LPCVOID addr, LPMEMORY_BASIC_INFORMATION info, DWORD len ) +BOOL32 WINAPI VirtualQuery( LPCVOID addr, LPMEMORY_BASIC_INFORMATION info, + DWORD len ) { FILE_VIEW *view = VIRTUAL_FirstView; UINT32 base = ROUND_ADDR( addr ); @@ -710,8 +711,8 @@ /*********************************************************************** * VirtualQueryEx (KERNEL32.555) */ -BOOL32 VirtualQueryEx( HANDLE32 handle, LPCVOID addr, - LPMEMORY_BASIC_INFORMATION info, DWORD len ) +BOOL32 WINAPI VirtualQueryEx( HANDLE32 handle, LPCVOID addr, + LPMEMORY_BASIC_INFORMATION info, DWORD len ) { BOOL32 ret = FALSE; @@ -731,7 +732,7 @@ /*********************************************************************** * IsBadReadPtr32 (KERNEL32.354) */ -BOOL32 IsBadReadPtr32( LPCVOID ptr, UINT32 size ) +BOOL32 WINAPI IsBadReadPtr32( LPCVOID ptr, UINT32 size ) { return !VIRTUAL_CheckFlags( (UINT32)ptr, size, VPROT_READ | VPROT_COMMITTED ); @@ -741,7 +742,7 @@ /*********************************************************************** * IsBadWritePtr32 (KERNEL32.357) */ -BOOL32 IsBadWritePtr32( LPVOID ptr, UINT32 size ) +BOOL32 WINAPI IsBadWritePtr32( LPVOID ptr, UINT32 size ) { return !VIRTUAL_CheckFlags( (UINT32)ptr, size, VPROT_WRITE | VPROT_COMMITTED ); @@ -751,7 +752,7 @@ /*********************************************************************** * IsBadHugeReadPtr32 (KERNEL32.352) */ -BOOL32 IsBadHugeReadPtr32( LPCVOID ptr, UINT32 size ) +BOOL32 WINAPI IsBadHugeReadPtr32( LPCVOID ptr, UINT32 size ) { return IsBadReadPtr32( ptr, size ); } @@ -760,7 +761,7 @@ /*********************************************************************** * IsBadHugeWritePtr32 (KERNEL32.353) */ -BOOL32 IsBadHugeWritePtr32( LPVOID ptr, UINT32 size ) +BOOL32 WINAPI IsBadHugeWritePtr32( LPVOID ptr, UINT32 size ) { return IsBadWritePtr32( ptr, size ); } @@ -769,7 +770,7 @@ /*********************************************************************** * IsBadCodePtr32 (KERNEL32.351) */ -BOOL32 IsBadCodePtr32( FARPROC32 ptr ) +BOOL32 WINAPI IsBadCodePtr32( FARPROC32 ptr ) { return !VIRTUAL_CheckFlags( (UINT32)ptr, 1, VPROT_EXEC | VPROT_COMMITTED ); } @@ -778,7 +779,7 @@ /*********************************************************************** * IsBadStringPtr32A (KERNEL32.355) */ -BOOL32 IsBadStringPtr32A( LPCSTR str, UINT32 max ) +BOOL32 WINAPI IsBadStringPtr32A( LPCSTR str, UINT32 max ) { FILE_VIEW *view; UINT32 page, count; @@ -806,7 +807,7 @@ /*********************************************************************** * IsBadStringPtr32W (KERNEL32.356) */ -BOOL32 IsBadStringPtr32W( LPCWSTR str, UINT32 max ) +BOOL32 WINAPI IsBadStringPtr32W( LPCWSTR str, UINT32 max ) { FILE_VIEW *view; UINT32 page, count; @@ -834,9 +835,9 @@ /*********************************************************************** * CreateFileMapping32A (KERNEL32.46) */ -HANDLE32 CreateFileMapping32A( HFILE32 hFile, LPSECURITY_ATTRIBUTES attr, - DWORD protect, DWORD size_high, DWORD size_low, - LPCSTR name ) +HANDLE32 WINAPI CreateFileMapping32A(HFILE32 hFile, LPSECURITY_ATTRIBUTES attr, + DWORD protect, DWORD size_high, + DWORD size_low, LPCSTR name ) { FILE_MAPPING *mapping = NULL; HANDLE32 handle; @@ -930,9 +931,9 @@ /*********************************************************************** * CreateFileMapping32W (KERNEL32.47) */ -HANDLE32 CreateFileMapping32W( HFILE32 hFile, LPSECURITY_ATTRIBUTES attr, - DWORD protect, DWORD size_high, DWORD size_low, - LPCWSTR name ) +HANDLE32 WINAPI CreateFileMapping32W(HFILE32 hFile, LPSECURITY_ATTRIBUTES attr, + DWORD protect, DWORD size_high, + DWORD size_low, LPCWSTR name ) { LPSTR nameA = HEAP_strdupWtoA( GetProcessHeap(), 0, name ); HANDLE32 ret = CreateFileMapping32A( hFile, attr, protect, @@ -945,7 +946,7 @@ /*********************************************************************** * OpenFileMapping32A (KERNEL32.397) */ -HANDLE32 OpenFileMapping32A( DWORD access, BOOL32 inherit, LPCSTR name ) +HANDLE32 WINAPI OpenFileMapping32A( DWORD access, BOOL32 inherit, LPCSTR name ) { K32OBJ *obj = K32OBJ_FindNameType( name, K32OBJ_MEM_MAPPED_FILE ); if (!obj) return 0; @@ -956,7 +957,7 @@ /*********************************************************************** * OpenFileMapping32W (KERNEL32.398) */ -HANDLE32 OpenFileMapping32W( DWORD access, BOOL32 inherit, LPCWSTR name ) +HANDLE32 WINAPI OpenFileMapping32W( DWORD access, BOOL32 inherit, LPCWSTR name) { LPSTR nameA = HEAP_strdupWtoA( GetProcessHeap(), 0, name ); HANDLE32 ret = OpenFileMapping32A( access, inherit, nameA ); @@ -984,8 +985,8 @@ /*********************************************************************** * MapViewOfFile (KERNEL32.385) */ -LPVOID MapViewOfFile( HANDLE32 mapping, DWORD access, DWORD offset_high, - DWORD offset_low, DWORD count ) +LPVOID WINAPI MapViewOfFile( HANDLE32 mapping, DWORD access, DWORD offset_high, + DWORD offset_low, DWORD count ) { return MapViewOfFileEx( mapping, access, offset_high, offset_low, count, NULL ); @@ -995,8 +996,8 @@ /*********************************************************************** * MapViewOfFileEx (KERNEL32.386) */ -LPVOID MapViewOfFileEx( HANDLE32 handle, DWORD access, DWORD offset_high, - DWORD offset_low, DWORD count, LPVOID addr ) +LPVOID WINAPI MapViewOfFileEx(HANDLE32 handle, DWORD access, DWORD offset_high, + DWORD offset_low, DWORD count, LPVOID addr ) { FILE_MAPPING *mapping; FILE_VIEW *view; @@ -1082,7 +1083,7 @@ /*********************************************************************** * UnmapViewOfFile (KERNEL32.540) */ -BOOL32 UnmapViewOfFile( LPVOID addr ) +BOOL32 WINAPI UnmapViewOfFile( LPVOID addr ) { FILE_VIEW *view; UINT32 base = ROUND_ADDR( addr );
diff --git a/misc/Makefile.in b/misc/Makefile.in index 8677044..92dc1c3 100644 --- a/misc/Makefile.in +++ b/misc/Makefile.in
@@ -36,7 +36,7 @@ ver.c \ w32sys.c \ winsock.c \ - winsock_async.c \ + winsock_dns.c \ wsprintf.c \ xmalloc.c
diff --git a/misc/comm.c b/misc/comm.c index d119200..f23666f 100644 --- a/misc/comm.c +++ b/misc/comm.c
@@ -21,7 +21,7 @@ #include <errno.h> #include <ctype.h> #include <sys/stat.h> -#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) +#if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__svr4__) #include <sys/filio.h> #endif #include <sys/ioctl.h> @@ -148,7 +148,7 @@ /************************************************************************** * BuildCommDCB (USER.213) */ -BOOL16 BuildCommDCB16(LPCSTR device, LPDCB16 lpdcb) +BOOL16 WINAPI BuildCommDCB16(LPCSTR device, LPDCB16 lpdcb) { /* "COM1:9600,n,8,1" */ /* 012345 */ @@ -173,6 +173,8 @@ return -1; } + memset(lpdcb, 0, sizeof(DCB16)); /* initialize */ + if (!COM[port].fd) { OpenComm(device, 0, 0); } @@ -243,14 +245,17 @@ /************************************************************************** * BuildCommDCBA (KERNEL32.14) */ -BOOL32 BuildCommDCB32A(LPCSTR device,LPDCB32 lpdcb) { +BOOL32 WINAPI BuildCommDCB32A(LPCSTR device,LPDCB32 lpdcb) +{ return BuildCommDCBAndTimeouts32A(device,lpdcb,NULL); } /************************************************************************** * BuildCommDCBAndTimeoutsA (KERNEL32.15) */ -BOOL32 BuildCommDCBAndTimeouts32A(LPCSTR device, LPDCB32 lpdcb,LPCOMMTIMEOUTS lptimeouts) { +BOOL32 WINAPI BuildCommDCBAndTimeouts32A(LPCSTR device, LPDCB32 lpdcb, + LPCOMMTIMEOUTS lptimeouts) +{ int port; char *ptr,*temp; @@ -270,6 +275,9 @@ temp=(LPSTR)(device+5); } else temp=(LPSTR)device; + + memset(lpdcb, 0, sizeof(DCB32)); /* initialize */ + lpdcb->DCBlength = sizeof(DCB32); if (strchr(temp,',')) { /* old style */ DCB16 dcb16; @@ -372,9 +380,9 @@ /************************************************************************** * BuildCommDCBAndTimeoutsW (KERNEL32.16) */ -BOOL32 BuildCommDCBAndTimeouts32W( - LPCWSTR devid,LPDCB32 lpdcb,LPCOMMTIMEOUTS lptimeouts -) { +BOOL32 WINAPI BuildCommDCBAndTimeouts32W( LPCWSTR devid, LPDCB32 lpdcb, + LPCOMMTIMEOUTS lptimeouts ) +{ LPSTR devidA; BOOL32 ret; @@ -388,14 +396,15 @@ /************************************************************************** * BuildCommDCBW (KERNEL32.17) */ -BOOL32 BuildCommDCB32W(LPCWSTR devid,LPDCB32 lpdcb) { +BOOL32 WINAPI BuildCommDCB32W(LPCWSTR devid,LPDCB32 lpdcb) +{ return BuildCommDCBAndTimeouts32W(devid,lpdcb,NULL); } /***************************************************************************** * OpenComm (USER.200) */ -INT16 OpenComm(LPCSTR device,UINT16 cbInQueue,UINT16 cbOutQueue) +INT16 WINAPI OpenComm(LPCSTR device,UINT16 cbInQueue,UINT16 cbOutQueue) { int port,fd; @@ -459,7 +468,7 @@ /***************************************************************************** * CloseComm (USER.207) */ -INT16 CloseComm(INT16 fd) +INT16 WINAPI CloseComm(INT16 fd) { struct DosDeviceStruct *ptr; @@ -483,7 +492,7 @@ /***************************************************************************** * SetCommBreak (USER.210) */ -INT16 SetCommBreak16(INT16 fd) +INT16 WINAPI SetCommBreak16(INT16 fd) { struct DosDeviceStruct *ptr; @@ -501,7 +510,7 @@ /***************************************************************************** * SetCommBreak (KERNEL32.449) */ -BOOL32 SetCommBreak32(INT32 fd) +BOOL32 WINAPI SetCommBreak32(INT32 fd) { struct DosDeviceStruct *ptr; @@ -520,7 +529,7 @@ /***************************************************************************** * ClearCommBreak (USER.211) */ -INT16 ClearCommBreak16(INT16 fd) +INT16 WINAPI ClearCommBreak16(INT16 fd) { struct DosDeviceStruct *ptr; @@ -538,7 +547,7 @@ /***************************************************************************** * ClearCommBreak (KERNEL32.20) */ -BOOL32 ClearCommBreak32(INT32 fd) +BOOL32 WINAPI ClearCommBreak32(INT32 fd) { struct DosDeviceStruct *ptr; @@ -556,7 +565,7 @@ /***************************************************************************** * EscapeCommFunction (USER.214) */ -LONG EscapeCommFunction16(UINT16 fd,UINT16 nFunction) +LONG WINAPI EscapeCommFunction16(UINT16 fd,UINT16 nFunction) { int max; struct termios port; @@ -632,7 +641,7 @@ /***************************************************************************** * EscapeCommFunction (KERNEL32.214) */ -BOOL32 EscapeCommFunction32(INT32 fd,UINT32 nFunction) +BOOL32 WINAPI EscapeCommFunction32(INT32 fd,UINT32 nFunction) { struct termios port; struct DosDeviceStruct *ptr; @@ -705,7 +714,7 @@ /***************************************************************************** * FlushComm (USER.215) */ -INT16 FlushComm(INT16 fd,INT16 fnQueue) +INT16 WINAPI FlushComm(INT16 fd,INT16 fnQueue) { int queue; @@ -720,7 +729,7 @@ fd, fnQueue); return -1; } - if (tcflush(fd, fnQueue)) { + if (tcflush(fd, queue)) { commerror = WinError(); return -1; } else { @@ -732,7 +741,7 @@ /***************************************************************************** * GetCommError (USER.203) */ -INT16 GetCommError(INT16 fd,LPCOMSTAT lpStat) +INT16 WINAPI GetCommError(INT16 fd,LPCOMSTAT lpStat) { int temperror; unsigned long cnt; @@ -771,7 +780,7 @@ /***************************************************************************** * ClearCommError (KERNEL32.21) */ -BOOL32 ClearCommError(INT32 fd,LPDWORD errors,LPCOMSTAT lpStat) +BOOL32 WINAPI ClearCommError(INT32 fd,LPDWORD errors,LPCOMSTAT lpStat) { int temperror; @@ -785,7 +794,7 @@ /***************************************************************************** * SetCommEventMask (USER.208) */ -UINT16 *SetCommEventMask(INT16 fd,UINT16 fuEvtMask) +UINT16* WINAPI SetCommEventMask(INT16 fd,UINT16 fuEvtMask) { dprintf_comm(stddeb,"SetCommEventMask:fd %d,mask %d\n",fd,fuEvtMask); eventmask |= fuEvtMask; @@ -795,7 +804,7 @@ /***************************************************************************** * GetCommEventMask (USER.209) */ -UINT16 GetCommEventMask(INT16 fd,UINT16 fnEvtClear) +UINT16 WINAPI GetCommEventMask(INT16 fd,UINT16 fnEvtClear) { int events = 0; @@ -839,7 +848,7 @@ /***************************************************************************** * GetCommMask (KERNEL32.156) */ -BOOL32 GetCommMask(INT32 fd,LPDWORD evtmask) +BOOL32 WINAPI GetCommMask(INT32 fd,LPDWORD evtmask) { dprintf_comm(stddeb, "GetCommMask: fd %d, mask %p\n", fd, evtmask); @@ -850,7 +859,7 @@ /***************************************************************************** * SetCommMask (KERNEL32.451) */ -BOOL32 SetCommMask(INT32 fd,DWORD evtmask) +BOOL32 WINAPI SetCommMask(INT32 fd,DWORD evtmask) { dprintf_comm(stddeb, "SetCommMask: fd %d, mask %lx\n", fd, evtmask); @@ -861,7 +870,7 @@ /***************************************************************************** * SetCommState16 (USER.201) */ -INT16 SetCommState16(LPDCB16 lpdcb) +INT16 WINAPI SetCommState16(LPDCB16 lpdcb) { struct termios port; struct DosDeviceStruct *ptr; @@ -1048,8 +1057,12 @@ #endif if (lpdcb->fInX) port.c_iflag |= IXON; + else + port.c_iflag &= ~IXON; if (lpdcb->fOutX) port.c_iflag |= IXOFF; + else + port.c_iflag &= ~IXOFF; if (tcsetattr(lpdcb->Id, TCSADRAIN, &port) == -1) { commerror = WinError(); @@ -1063,7 +1076,7 @@ /***************************************************************************** * SetCommState32 (KERNEL32.452) */ -BOOL32 SetCommState32(INT32 fd,LPDCB32 lpdcb) +BOOL32 WINAPI SetCommState32(INT32 fd,LPDCB32 lpdcb) { struct termios port; struct DosDeviceStruct *ptr; @@ -1251,8 +1264,12 @@ #endif if (lpdcb->fInX) port.c_iflag |= IXON; + else + port.c_iflag &= ~IXON; if (lpdcb->fOutX) port.c_iflag |= IXOFF; + else + port.c_iflag &= ~IXOFF; if (tcsetattr(fd,TCSADRAIN,&port)==-1) { commerror = WinError(); @@ -1267,7 +1284,7 @@ /***************************************************************************** * GetCommState (USER.202) */ -INT16 GetCommState16(INT16 fd, LPDCB16 lpdcb) +INT16 WINAPI GetCommState16(INT16 fd, LPDCB16 lpdcb) { struct termios port; @@ -1386,7 +1403,7 @@ /***************************************************************************** * GetCommState (KERNEL32.159) */ -BOOL32 GetCommState32(INT32 fd, LPDCB32 lpdcb) +BOOL32 WINAPI GetCommState32(INT32 fd, LPDCB32 lpdcb) { struct termios port; @@ -1502,7 +1519,7 @@ /***************************************************************************** * TransmitCommChar (USER.206) */ -INT16 TransmitCommChar16(INT16 fd,CHAR chTransmit) +INT16 WINAPI TransmitCommChar16(INT16 fd,CHAR chTransmit) { struct DosDeviceStruct *ptr; @@ -1530,7 +1547,7 @@ /***************************************************************************** * TransmitCommChar (KERNEL32.535) */ -BOOL32 TransmitCommChar32(INT32 fd,CHAR chTransmit) +BOOL32 WINAPI TransmitCommChar32(INT32 fd,CHAR chTransmit) { struct DosDeviceStruct *ptr; @@ -1556,7 +1573,7 @@ /***************************************************************************** * UngetCommChar (USER.212) */ -INT16 UngetCommChar(INT16 fd,CHAR chUnget) +INT16 WINAPI UngetCommChar(INT16 fd,CHAR chUnget) { struct DosDeviceStruct *ptr; @@ -1580,7 +1597,7 @@ /***************************************************************************** * ReadComm (USER.204) */ -INT16 ReadComm(INT16 fd,LPSTR lpvBuf,INT16 cbRead) +INT16 WINAPI ReadComm(INT16 fd,LPSTR lpvBuf,INT16 cbRead) { int status, length; struct DosDeviceStruct *ptr; @@ -1625,7 +1642,7 @@ /***************************************************************************** * WriteComm (USER.205) */ -INT16 WriteComm(INT16 fd, LPSTR lpvBuf, INT16 cbWrite) +INT16 WINAPI WriteComm(INT16 fd, LPSTR lpvBuf, INT16 cbWrite) { int x, length; struct DosDeviceStruct *ptr; @@ -1660,7 +1677,8 @@ /***************************************************************************** * GetCommTimeouts (KERNEL32.160) */ -BOOL32 GetCommTimeouts(INT32 fd,LPCOMMTIMEOUTS lptimeouts) { +BOOL32 WINAPI GetCommTimeouts(INT32 fd,LPCOMMTIMEOUTS lptimeouts) +{ fprintf(stderr,"GetCommTimeouts(%x,%p), empty stub.\n", fd,lptimeouts ); @@ -1670,7 +1688,7 @@ /***************************************************************************** * SetCommTimeouts (KERNEL32.453) */ -BOOL32 SetCommTimeouts(INT32 fd,LPCOMMTIMEOUTS lptimeouts) { +BOOL32 WINAPI SetCommTimeouts(INT32 fd,LPCOMMTIMEOUTS lptimeouts) { fprintf(stderr,"SetCommTimeouts(%x,%p), empty stub.\n", fd,lptimeouts ); @@ -1680,8 +1698,8 @@ /*********************************************************************** * EnableCommNotification (USER.246) */ -BOOL16 EnableCommNotification( INT16 fd, HWND16 hwnd, INT16 cbWriteNotify, - INT16 cbOutQueue ) +BOOL16 WINAPI EnableCommNotification( INT16 fd, HWND16 hwnd, + INT16 cbWriteNotify, INT16 cbOutQueue ) { fprintf(stderr, "EnableCommNotification(%d, %x, %d, %d), empty stub.\n", fd, hwnd, cbWriteNotify, cbOutQueue); return TRUE;
diff --git a/misc/commdlg.c b/misc/commdlg.c index 4a4af0b..34f91a7 100644 --- a/misc/commdlg.c +++ b/misc/commdlg.c
@@ -56,7 +56,7 @@ /*********************************************************************** * GetOpenFileName (COMMDLG.1) */ -BOOL16 GetOpenFileName16( SEGPTR ofn ) +BOOL16 WINAPI GetOpenFileName16( SEGPTR ofn ) { HINSTANCE16 hInst; HANDLE32 hDlgTmpl = 0, hResInfo; @@ -146,7 +146,7 @@ /*********************************************************************** * GetSaveFileName (COMMDLG.2) */ -BOOL16 GetSaveFileName16( SEGPTR ofn) +BOOL16 WINAPI GetSaveFileName16( SEGPTR ofn) { HINSTANCE16 hInst; HANDLE32 hDlgTmpl = 0; @@ -296,7 +296,7 @@ return fptr; fptr += strlen(fptr) + 1; } - return NULL; + return "*.*"; /* FIXME */ } /*********************************************************************** @@ -417,22 +417,51 @@ return 0; } +/*********************************************************************** + * FILEDLG_CallWindowProc [internal] + * + * Adapt the structures back for win32 calls so the callee can read lpCustData + */ static BOOL32 FILEDLG_CallWindowProc(LPOPENFILENAME16 lpofn,HWND32 hwnd, UINT32 wMsg,WPARAM32 wParam,LPARAM lParam + ) { + BOOL32 needstruct; + + needstruct = (PTR_SEG_TO_LIN(lParam) == lpofn); + if (!(lpofn->Flags & OFN_WINE32)) return (BOOL32)CallWindowProc16( lpofn->lpfnHook,hwnd,(UINT16)wMsg,(WPARAM16)wParam,lParam ); /* |OFN_WINE32 */ - if (lpofn->Flags & OFN_UNICODE) - return (BOOL32)CallWindowProc32W( + if (lpofn->Flags & OFN_UNICODE) { + if (needstruct) { + OPENFILENAME32W ofnw; + + /* FIXME: probably needs more converted */ + ofnw.lCustData = lpofn->lCustData; + return (BOOL32)CallWindowProc32W( + (WNDPROC32)lpofn->lpfnHook,hwnd,wMsg,wParam,(LPARAM)&ofnw + ); + } else + return (BOOL32)CallWindowProc32W( + (WNDPROC32)lpofn->lpfnHook,hwnd,wMsg,wParam,lParam + ); + } + /* ! |OFN_UNICODE */ + if (needstruct) { + OPENFILENAME32A ofna; + + /* FIXME: probably needs more converted */ + ofna.lCustData = lpofn->lCustData; + return (BOOL32)CallWindowProc32A( + (WNDPROC32)lpofn->lpfnHook,hwnd,wMsg,wParam,(LPARAM)&ofna + ); + } else + return (BOOL32)CallWindowProc32A( (WNDPROC32)lpofn->lpfnHook,hwnd,wMsg,wParam,lParam ); - /* ! |OFN_UNICODE */ - return (BOOL32)CallWindowProc32A( - (WNDPROC32)lpofn->lpfnHook,hwnd,wMsg,wParam,lParam - ); } @@ -718,7 +747,8 @@ /*********************************************************************** * FileOpenDlgProc (COMMDLG.6) */ -LRESULT FileOpenDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam) +LRESULT WINAPI FileOpenDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, + LPARAM lParam) { LPOPENFILENAME16 lpofn = (LPOPENFILENAME16)PTR_SEG_TO_LIN(GetWindowLong32A(hWnd, DWL_USER)); @@ -761,7 +791,8 @@ /*********************************************************************** * FileSaveDlgProc (COMMDLG.7) */ -LRESULT FileSaveDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam) +LRESULT WINAPI FileSaveDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, + LPARAM lParam) { LPOPENFILENAME16 lpofn = (LPOPENFILENAME16)PTR_SEG_TO_LIN(GetWindowLong32A(hWnd, DWL_USER)); @@ -808,7 +839,7 @@ /*********************************************************************** * FindTextDlg (COMMDLG.11) */ -HWND16 FindText( SEGPTR find ) +HWND16 WINAPI FindText( SEGPTR find ) { HANDLE16 hInst; LPCVOID ptr; @@ -833,7 +864,7 @@ /*********************************************************************** * ReplaceText (COMMDLG.12) */ -HWND16 ReplaceText( SEGPTR find ) +HWND16 WINAPI ReplaceText( SEGPTR find ) { HANDLE16 hInst; LPCVOID ptr; @@ -946,7 +977,8 @@ /*********************************************************************** * FindTextDlgProc (COMMDLG.13) */ -LRESULT FindTextDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam) +LRESULT WINAPI FindTextDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, + LPARAM lParam) { switch (wMsg) { case WM_INITDIALOG: @@ -1066,7 +1098,8 @@ /*********************************************************************** * ReplaceTextDlgProc (COMMDLG.14) */ -LRESULT ReplaceTextDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam) +LRESULT WINAPI ReplaceTextDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, + LPARAM lParam) { switch (wMsg) { case WM_INITDIALOG: @@ -1081,7 +1114,7 @@ /*********************************************************************** * PrintDlg (COMMDLG.20) */ -BOOL16 PrintDlg( SEGPTR printdlg ) +BOOL16 WINAPI PrintDlg( SEGPTR printdlg ) { HANDLE16 hInst; BOOL16 bRet = FALSE; @@ -1115,7 +1148,8 @@ /*********************************************************************** * PrintDlgProc (COMMDLG.21) */ -LRESULT PrintDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam) +LRESULT WINAPI PrintDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, + LPARAM lParam) { switch (wMsg) { @@ -1142,7 +1176,8 @@ /*********************************************************************** * PrintSetupDlgProc (COMMDLG.22) */ -LRESULT PrintSetupDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, LPARAM lParam) +LRESULT WINAPI PrintSetupDlgProc(HWND16 hWnd, UINT16 wMsg, WPARAM16 wParam, + LPARAM lParam) { switch (wMsg) { @@ -1168,7 +1203,7 @@ /*********************************************************************** * CommDlgExtendedError (COMMDLG.26) */ -DWORD CommDlgExtendedError(void) +DWORD WINAPI CommDlgExtendedError(void) { return CommDlgLastError; } @@ -1176,7 +1211,7 @@ /*********************************************************************** * GetFileTitleA (COMDLG32.8) */ -short GetFileTitle32A(LPCSTR lpFile, LPSTR lpTitle, UINT32 cbBuf) +short WINAPI GetFileTitle32A(LPCSTR lpFile, LPSTR lpTitle, UINT32 cbBuf) { int i, len; dprintf_commdlg(stddeb,"GetFileTitle(%p %p %d); \n", lpFile, lpTitle, cbBuf); @@ -1210,7 +1245,7 @@ /*********************************************************************** * GetFileTitleA (COMDLG32.8) */ -short GetFileTitle32W(LPCWSTR lpFile, LPWSTR lpTitle, UINT32 cbBuf) +short WINAPI GetFileTitle32W(LPCWSTR lpFile, LPWSTR lpTitle, UINT32 cbBuf) { LPSTR file = HEAP_strdupWtoA(GetProcessHeap(),0,lpFile); LPSTR title = HeapAlloc(GetProcessHeap(),0,cbBuf); @@ -1226,7 +1261,8 @@ /*********************************************************************** * GetFileTitle (COMMDLG.27) */ -short GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf) { +short WINAPI GetFileTitle16(LPCSTR lpFile, LPSTR lpTitle, UINT16 cbBuf) +{ return GetFileTitle32A(lpFile,lpTitle,cbBuf); } @@ -1236,7 +1272,7 @@ /*********************************************************************** * ChooseColor (COMMDLG.5) */ -BOOL16 ChooseColor(LPCHOOSECOLOR lpChCol) +BOOL16 WINAPI ChooseColor(LPCHOOSECOLOR lpChCol) { HINSTANCE16 hInst; HANDLE16 hDlgTmpl = 0; @@ -2272,8 +2308,8 @@ /*********************************************************************** * ColorDlgProc (COMMDLG.8) */ -LRESULT ColorDlgProc(HWND16 hDlg, UINT16 message, - WPARAM16 wParam, LONG lParam) +LRESULT WINAPI ColorDlgProc(HWND16 hDlg, UINT16 message, + WPARAM16 wParam, LONG lParam) { int res; struct CCPRIVATE * lpp=(struct CCPRIVATE *)GetWindowLong32A(hDlg, DWL_USER); @@ -2331,7 +2367,7 @@ /*********************************************************************** * ChooseFont (COMMDLG.15) */ -BOOL16 ChooseFont(LPCHOOSEFONT lpChFont) +BOOL16 WINAPI ChooseFont(LPCHOOSEFONT lpChFont) { HINSTANCE16 hInst; HANDLE16 hDlgTmpl = 0; @@ -2411,8 +2447,8 @@ /*********************************************************************** * FontFamilyEnumProc (COMMDLG.19) */ -INT16 FontFamilyEnumProc( SEGPTR logfont, SEGPTR metrics, - UINT16 nFontType, LPARAM lParam ) +INT16 WINAPI FontFamilyEnumProc( SEGPTR logfont, SEGPTR metrics, + UINT16 nFontType, LPARAM lParam ) { int i; WORD w; @@ -2529,8 +2565,8 @@ /*********************************************************************** * FontStyleEnumProc (COMMDLG.18) */ -INT16 FontStyleEnumProc( SEGPTR logfont, SEGPTR metrics, - UINT16 nFontType, LPARAM lParam ) +INT16 WINAPI FontStyleEnumProc( SEGPTR logfont, SEGPTR metrics, + UINT16 nFontType, LPARAM lParam ) { HWND16 hcmb2=LOWORD(lParam); HWND16 hcmb3=HIWORD(lParam); @@ -2947,7 +2983,8 @@ 2. some CF_.. flags are not supported 3. some TType extensions */ -LRESULT FormatCharDlgProc(HWND16 hDlg, UINT16 message, WPARAM16 wParam, LPARAM lParam) +LRESULT WINAPI FormatCharDlgProc(HWND16 hDlg, UINT16 message, WPARAM16 wParam, + LPARAM lParam) { LPCHOOSEFONT lpcf=(LPCHOOSEFONT)GetWindowLong32A(hDlg, DWL_USER); if (message!=WM_INITDIALOG) @@ -2983,7 +3020,7 @@ #define GET_XXX_FILENAME(xxx) \ -BOOL32 xxx##32A( LPOPENFILENAME32A ofn ) \ +BOOL32 WINAPI xxx##32A( LPOPENFILENAME32A ofn ) \ { \ BOOL16 ret; \ LPOPENFILENAME16 ofn16 = SEGPTR_ALLOC(sizeof(OPENFILENAME16)); \ @@ -3062,7 +3099,7 @@ return ret; \ } \ \ -BOOL32 xxx##32W( LPOPENFILENAME32W ofn ) \ +BOOL32 WINAPI xxx##32W( LPOPENFILENAME32W ofn ) \ { \ BOOL16 ret; \ LPOPENFILENAME16 ofn16 = SEGPTR_ALLOC(sizeof(OPENFILENAME16)); \
diff --git a/misc/compobj.c b/misc/compobj.c index 45decf8..6fa4010 100644 --- a/misc/compobj.c +++ b/misc/compobj.c
@@ -21,7 +21,7 @@ /*********************************************************************** * CoBuildVersion [COMPOBJ.1] */ -DWORD CoBuildVersion() +DWORD WINAPI CoBuildVersion() { dprintf_ole(stddeb,"CoBuildVersion()\n"); return (rmm<<16)+rup; @@ -31,7 +31,7 @@ * CoInitialize [COMPOBJ.2] * lpReserved is an IMalloc pointer in 16bit OLE. We just stored it as-is. */ -HRESULT CoInitialize(DWORD lpReserved) +HRESULT WINAPI CoInitialize(DWORD lpReserved) { dprintf_ole(stdnimp,"CoInitialize\n"); /* remember the LPMALLOC, maybe somebody wants to read it later on */ @@ -42,7 +42,7 @@ /*********************************************************************** * CoUnitialize [COMPOBJ.3] */ -void CoUnitialize() +void WINAPI CoUnitialize() { dprintf_ole(stdnimp,"CoUnitialize()\n"); } @@ -50,7 +50,7 @@ /*********************************************************************** * CoGetMalloc [COMPOBJ.4] */ -HRESULT CoGetMalloc(DWORD dwMemContext, DWORD * lpMalloc) +HRESULT WINAPI CoGetMalloc(DWORD dwMemContext, DWORD * lpMalloc) { if(currentMalloc) { @@ -65,7 +65,7 @@ /*********************************************************************** * CoDisconnectObject */ -OLESTATUS CoDisconnectObject( LPUNKNOWN lpUnk, DWORD reserved ) +OLESTATUS WINAPI CoDisconnectObject( LPUNKNOWN lpUnk, DWORD reserved ) { dprintf_ole(stdnimp,"CoDisconnectObject:%p %lx\n",lpUnk,reserved); return OLE_OK; @@ -77,8 +77,7 @@ /* Class id: DWORD-WORD-WORD-BYTES[2]-BYTES[6] */ -OLESTATUS -CLSIDFromString(const LPCSTR idstr, CLSID *id) +OLESTATUS WINAPI CLSIDFromString(const LPCSTR idstr, CLSID *id) { BYTE *s = (BYTE *) idstr; BYTE *p; @@ -146,8 +145,7 @@ * CLSIDFromString [COMPOBJ.19] */ -OLESTATUS -StringFromCLSID(const CLSID *id, LPSTR idstr) +OLESTATUS WINAPI StringFromCLSID(const CLSID *id, LPSTR idstr) { static const char *hex = "0123456789ABCDEF"; char *s;
diff --git a/misc/cpu.c b/misc/cpu.c index d30032f..9fd96cb 100644 --- a/misc/cpu.c +++ b/misc/cpu.c
@@ -10,8 +10,7 @@ #include <string.h> #include "windows.h" -VOID -GetSystemInfo(LPSYSTEM_INFO si) +VOID WINAPI GetSystemInfo(LPSYSTEM_INFO si) { static int cache = 0; static SYSTEM_INFO cachedsi;
diff --git a/misc/crtdll.c b/misc/crtdll.c index 0015d92..707e479 100644 --- a/misc/crtdll.c +++ b/misc/crtdll.c
@@ -284,6 +284,7 @@ */ INT32 CRTDLL_atoi(LPCSTR x) { + if (!x) return 0; return atoi(x); } @@ -293,6 +294,7 @@ */ LONG CRTDLL_atol(LPCSTR x) { + if (!x) return 0; return atol(x); } @@ -498,7 +500,7 @@ /********************************************************************* * sqrt (CRTDLL.459) */ -float CRTDLL_sqrt(float x) +double CRTDLL_sqrt(double x) { return sqrt(x); }
diff --git a/misc/error.c b/misc/error.c index f4f2837..fc2e124 100644 --- a/misc/error.c +++ b/misc/error.c
@@ -147,7 +147,8 @@ /*********************************************************************** * LogError (KERNEL.324) */ -VOID LogError(UINT16 uErr, LPVOID lpvInfo) { +VOID WINAPI LogError(UINT16 uErr, LPVOID lpvInfo) +{ fprintf(stddeb, "LogError(%s, %p)\n", GetErrorString(uErr), lpvInfo); } @@ -156,7 +157,8 @@ /*********************************************************************** * LogParamError (KERNEL.325) */ -void LogParamError(UINT16 uErr, FARPROC16 lpfn, LPVOID lpvParam) { +void WINAPI LogParamError(UINT16 uErr, FARPROC16 lpfn, LPVOID lpvParam) +{ /* FIXME: is it possible to get the module name/function * from the lpfn param? */
diff --git a/misc/lstr.c b/misc/lstr.c index 7228e67..64190c3 100644 --- a/misc/lstr.c +++ b/misc/lstr.c
@@ -26,25 +26,25 @@ /* Funny to divide them between user and kernel. */ /* IsCharAlpha USER 433 */ -BOOL16 IsCharAlpha16(CHAR ch) +BOOL16 WINAPI IsCharAlpha16(CHAR ch) { return isalpha(ch); /* This is probably not right for NLS */ } /* IsCharAlphanumeric USER 434 */ -BOOL16 IsCharAlphanumeric16(CHAR ch) +BOOL16 WINAPI IsCharAlphaNumeric16(CHAR ch) { return isalnum(ch); } /* IsCharUpper USER 435 */ -BOOL16 IsCharUpper16(CHAR ch) +BOOL16 WINAPI IsCharUpper16(CHAR ch) { return isupper(ch); } /* IsCharLower USER 436 */ -BOOL16 IsCharLower16(CHAR ch) +BOOL16 WINAPI IsCharLower16(CHAR ch) { return islower(ch); } @@ -52,7 +52,7 @@ /*********************************************************************** * AnsiUpper16 (USER.431) */ -SEGPTR AnsiUpper16( SEGPTR strOrChar ) +SEGPTR WINAPI AnsiUpper16( SEGPTR strOrChar ) { /* I am not sure if the locale stuff works with toupper, but then again I am not sure if the Linux libc locale stuffs works at all */ @@ -71,7 +71,7 @@ /*********************************************************************** * AnsiUpperBuff16 (USER.437) */ -UINT16 AnsiUpperBuff16( LPSTR str, UINT16 len ) +UINT16 WINAPI AnsiUpperBuff16( LPSTR str, UINT16 len ) { UINT32 count = len ? len : 65536; for (; count; count--, str++) *str = toupper(*str); @@ -81,7 +81,7 @@ /*********************************************************************** * AnsiLower16 (USER.432) */ -SEGPTR AnsiLower16( SEGPTR strOrChar ) +SEGPTR WINAPI AnsiLower16( SEGPTR strOrChar ) { /* I am not sure if the locale stuff works with toupper, but then again I am not sure if the Linux libc locale stuffs works at all */ @@ -100,7 +100,7 @@ /*********************************************************************** * AnsiLowerBuff16 (USER.438) */ -UINT16 AnsiLowerBuff16( LPSTR str, UINT16 len ) +UINT16 WINAPI AnsiLowerBuff16( LPSTR str, UINT16 len ) { UINT32 count = len ? len : 65536; for (; count; count--, str++) *str = tolower(*str); @@ -111,7 +111,7 @@ /*********************************************************************** * AnsiNext16 (USER.472) */ -SEGPTR AnsiNext16(SEGPTR current) +SEGPTR WINAPI AnsiNext16(SEGPTR current) { return (*(char *)PTR_SEG_TO_LIN(current)) ? current + 1 : current; } @@ -120,7 +120,7 @@ /*********************************************************************** * AnsiPrev16 (USER.473) */ -SEGPTR AnsiPrev16( SEGPTR start, SEGPTR current ) +SEGPTR WINAPI AnsiPrev16( SEGPTR start, SEGPTR current ) { return (current == start) ? start : current - 1; } @@ -129,7 +129,7 @@ /*********************************************************************** * OutputDebugString16 (KERNEL.115) */ -void OutputDebugString16( LPCSTR str ) +void WINAPI OutputDebugString16( LPCSTR str ) { char *module; char *p, *buffer = HeapAlloc( GetProcessHeap(), 0, strlen(str)+1 ); @@ -147,7 +147,7 @@ /*********************************************************************** * OutputDebugString32A (KERNEL32 */ -void OutputDebugString32A( LPCSTR str ) +void WINAPI OutputDebugString32A( LPCSTR str ) { OutputDebugString16( str ); } @@ -157,7 +157,7 @@ /*********************************************************************** * OutputDebugString32W (KERNEL32 */ -void OutputDebugString32W( LPCWSTR str ) +void WINAPI OutputDebugString32W( LPCWSTR str ) { LPSTR p = HEAP_strdupWtoA( GetProcessHeap(), 0, str ); OutputDebugString32A( p ); @@ -169,7 +169,7 @@ /*********************************************************************** * CharNext32A (USER32.28) */ -LPSTR CharNext32A( LPCSTR ptr ) +LPSTR WINAPI CharNext32A( LPCSTR ptr ) { if (!*ptr) return (LPSTR)ptr; if (IsDBCSLeadByte32( *ptr )) return (LPSTR)(ptr + 2); @@ -180,7 +180,7 @@ /*********************************************************************** * CharNextEx32A (USER32.29) */ -LPSTR CharNextEx32A( WORD codepage, LPCSTR ptr, DWORD flags ) +LPSTR WINAPI CharNextEx32A( WORD codepage, LPCSTR ptr, DWORD flags ) { if (!*ptr) return (LPSTR)ptr; if (IsDBCSLeadByteEx( codepage, *ptr )) return (LPSTR)(ptr + 2); @@ -191,7 +191,7 @@ /*********************************************************************** * CharNextExW (USER32.30) */ -LPWSTR CharNextEx32W(WORD codepage,LPCWSTR x,DWORD flags) +LPWSTR WINAPI CharNextEx32W(WORD codepage,LPCWSTR x,DWORD flags) { /* FIXME: add DBCS / codepage stuff */ if (*x) return (LPWSTR)(x+1); @@ -201,7 +201,7 @@ /*********************************************************************** * CharNextW (USER32.31) */ -LPWSTR CharNext32W(LPCWSTR x) +LPWSTR WINAPI CharNext32W(LPCWSTR x) { if (*x) return (LPWSTR)(x+1); else return (LPWSTR)x; @@ -210,7 +210,7 @@ /*********************************************************************** * CharPrev32A (USER32.32) */ -LPSTR CharPrev32A( LPCSTR start, LPCSTR ptr ) +LPSTR WINAPI CharPrev32A( LPCSTR start, LPCSTR ptr ) { while (*start && (start < ptr)) { @@ -225,7 +225,7 @@ /*********************************************************************** * CharPrevEx32A (USER32.33) */ -LPSTR CharPrevEx32A( WORD codepage, LPCSTR start, LPCSTR ptr, DWORD flags ) +LPSTR WINAPI CharPrevEx32A( WORD codepage, LPCSTR start, LPCSTR ptr, DWORD flags ) { while (*start && (start < ptr)) { @@ -240,7 +240,7 @@ /*********************************************************************** * CharPrevExW (USER32.34) */ -LPWSTR CharPrevEx32W(WORD codepage,LPCWSTR start,LPCWSTR x,DWORD flags) +LPWSTR WINAPI CharPrevEx32W(WORD codepage,LPCWSTR start,LPCWSTR x,DWORD flags) { /* FIXME: add DBCS / codepage stuff */ if (x>start) return (LPWSTR)(x-1); @@ -250,7 +250,7 @@ /*********************************************************************** * CharPrevW (USER32.35) */ -LPWSTR CharPrev32W(LPCWSTR start,LPCWSTR x) +LPWSTR WINAPI CharPrev32W(LPCWSTR start,LPCWSTR x) { if (x>start) return (LPWSTR)(x-1); else return (LPWSTR)x; @@ -260,7 +260,7 @@ * CharLowerA (USER32.24) * FIXME: handle current locale */ -LPSTR CharLower32A(LPSTR x) +LPSTR WINAPI CharLower32A(LPSTR x) { LPSTR s; @@ -281,7 +281,7 @@ * CharLowerBuffA (USER32.25) * FIXME: handle current locale */ -DWORD CharLowerBuff32A(LPSTR x,DWORD buflen) +DWORD WINAPI CharLowerBuff32A(LPSTR x,DWORD buflen) { DWORD done=0; @@ -298,7 +298,7 @@ * CharLowerBuffW (USER32.26) * FIXME: handle current locale */ -DWORD CharLowerBuff32W(LPWSTR x,DWORD buflen) +DWORD WINAPI CharLowerBuff32W(LPWSTR x,DWORD buflen) { DWORD done=0; @@ -315,7 +315,7 @@ * CharLowerW (USER32.27) * FIXME: handle current locale */ -LPWSTR CharLower32W(LPWSTR x) +LPWSTR WINAPI CharLower32W(LPWSTR x) { if (HIWORD(x)) { @@ -334,7 +334,7 @@ * CharUpper32A (USER32.40) * FIXME: handle current locale */ -LPSTR CharUpper32A(LPSTR x) +LPSTR WINAPI CharUpper32A(LPSTR x) { if (HIWORD(x)) { @@ -353,7 +353,7 @@ * CharUpperBuffA (USER32.41) * FIXME: handle current locale */ -DWORD CharUpperBuff32A(LPSTR x,DWORD buflen) +DWORD WINAPI CharUpperBuff32A(LPSTR x,DWORD buflen) { DWORD done=0; @@ -370,7 +370,7 @@ * CharUpperBuffW (USER32.42) * FIXME: handle current locale */ -DWORD CharUpperBuff32W(LPWSTR x,DWORD buflen) +DWORD WINAPI CharUpperBuff32W(LPWSTR x,DWORD buflen) { DWORD done=0; @@ -387,7 +387,7 @@ * CharUpperW (USER32.43) * FIXME: handle current locale */ -LPWSTR CharUpper32W(LPWSTR x) +LPWSTR WINAPI CharUpper32W(LPWSTR x) { if (HIWORD(x)) { @@ -406,7 +406,7 @@ * IsCharAlphaA (USER32.330) * FIXME: handle current locale */ -BOOL32 IsCharAlpha32A(CHAR x) +BOOL32 WINAPI IsCharAlpha32A(CHAR x) { return isalpha(x); } @@ -415,7 +415,7 @@ * IsCharAlphaNumericA (USER32.331) * FIXME: handle current locale */ -BOOL32 IsCharAlphaNumeric32A(CHAR x) +BOOL32 WINAPI IsCharAlphaNumeric32A(CHAR x) { return isalnum(x); } @@ -424,7 +424,7 @@ * IsCharAlphaNumericW (USER32.332) * FIXME: handle current locale */ -BOOL32 IsCharAlphaNumeric32W(WCHAR x) +BOOL32 WINAPI IsCharAlphaNumeric32W(WCHAR x) { return isalnum(x); } @@ -433,7 +433,7 @@ * IsCharAlphaW (USER32.333) * FIXME: handle current locale */ -BOOL32 IsCharAlpha32W(WCHAR x) +BOOL32 WINAPI IsCharAlpha32W(WCHAR x) { return isalpha(x); } @@ -442,7 +442,7 @@ * IsCharLower32A (USER32.334) * FIXME: handle current locale */ -BOOL32 IsCharLower32A(CHAR x) +BOOL32 WINAPI IsCharLower32A(CHAR x) { return islower(x); } @@ -451,7 +451,7 @@ * IsCharLower32W (USER32.335) * FIXME: handle current locale */ -BOOL32 IsCharLower32W(WCHAR x) +BOOL32 WINAPI IsCharLower32W(WCHAR x) { return islower(x); } @@ -460,7 +460,7 @@ * IsCharUpper32A (USER32.336) * FIXME: handle current locale */ -BOOL32 IsCharUpper32A(CHAR x) +BOOL32 WINAPI IsCharUpper32A(CHAR x) { return isupper(x); } @@ -469,7 +469,7 @@ * IsCharUpper32W (USER32.337) * FIXME: handle current locale */ -BOOL32 IsCharUpper32W(WCHAR x) +BOOL32 WINAPI IsCharUpper32W(WCHAR x) { return isupper(x); } @@ -478,8 +478,7 @@ * FormatMessageA (KERNEL32.138) Library Version * FIXME: missing wrap,FROM_SYSTEM message-loading, */ -DWORD -FormatMessage32A( +DWORD WINAPI FormatMessage32A( DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, @@ -647,8 +646,8 @@ /*********************************************************************** * FormatMessageA (KERNEL32.138) Emulator Version */ -DWORD -WIN32_FormatMessage32A(DWORD *args) { +DWORD WINAPI WIN32_FormatMessage32A(DWORD *args) +{ DWORD dwFlags = args[0]; LPCVOID lpSource = (LPCVOID)args[1]; DWORD dwMessageId = args[2]; @@ -682,8 +681,7 @@ ); } -DWORD -FormatMessage32W( +DWORD WINAPI FormatMessage32W( DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, @@ -851,10 +849,10 @@ #undef ADD_TO_T /*********************************************************************** - * FormatMessageA (KERNEL32.138) Emulator Version + * FormatMessageW (KERNEL32.138) Emulator Version */ -DWORD -WIN32_FormatMessage32W(DWORD *args) { +DWORD WINAPI WIN32_FormatMessage32W(DWORD *args) +{ DWORD dwFlags = args[0]; LPCVOID lpSource = (LPCVOID)args[1]; DWORD dwMessageId = args[2];
diff --git a/misc/lzexpand.c b/misc/lzexpand.c index 384096e..ba2b02d 100644 --- a/misc/lzexpand.c +++ b/misc/lzexpand.c
@@ -118,7 +118,7 @@ /*********************************************************************** * LZStart16 (LZEXPAND.7) */ -INT16 LZStart16(void) +INT16 WINAPI LZStart16(void) { dprintf_file(stddeb,"LZStart16(void)\n"); return 1; @@ -128,7 +128,7 @@ /*********************************************************************** * LZStart32 (LZ32.6) */ -INT32 LZStart32(void) +INT32 WINAPI LZStart32(void) { dprintf_file(stddeb,"LZStart32(void)\n"); return 1; @@ -138,7 +138,7 @@ /*********************************************************************** * LZInit16 (LZEXPAND.3) */ -HFILE16 LZInit16( HFILE16 hfSrc ) +HFILE16 WINAPI LZInit16( HFILE16 hfSrc ) { return LZInit32( hfSrc ); } @@ -156,7 +156,7 @@ * since _llseek uses the same types as libc.lseek, we just use the macros of * libc */ -HFILE32 LZInit32( HFILE32 hfSrc ) +HFILE32 WINAPI LZInit32( HFILE32 hfSrc ) { struct lzfileheader head; @@ -193,7 +193,7 @@ /*********************************************************************** * LZDone (LZEXPAND.9) (LZ32.8) */ -void LZDone(void) +void WINAPI LZDone(void) { dprintf_file(stddeb,"LZDone()\n"); } @@ -202,7 +202,7 @@ /*********************************************************************** * GetExpandedName16 (LZEXPAND.10) */ -INT16 GetExpandedName16( LPCSTR in, LPSTR out ) +INT16 WINAPI GetExpandedName16( LPCSTR in, LPSTR out ) { return (INT16)GetExpandedName32A( in, out ); } @@ -219,7 +219,7 @@ * "FILE.BL_" (with lastchar 'a') is being translated to "FILE.BLA" */ -INT32 GetExpandedName32A( LPCSTR in, LPSTR out ) +INT32 WINAPI GetExpandedName32A( LPCSTR in, LPSTR out ) { struct lzfileheader head; HFILE32 fd; @@ -289,7 +289,7 @@ /*********************************************************************** * GetExpandedName32W (LZ32.11) */ -INT32 GetExpandedName32W( LPCWSTR in, LPWSTR out ) +INT32 WINAPI GetExpandedName32W( LPCWSTR in, LPWSTR out ) { char *xin,*xout; INT32 ret; @@ -307,7 +307,7 @@ /*********************************************************************** * LZRead16 (LZEXPAND.5) */ -INT16 LZRead16( HFILE16 fd, LPVOID buf, UINT16 toread ) +INT16 WINAPI LZRead16( HFILE16 fd, LPVOID buf, UINT16 toread ) { return LZRead32(fd,buf,toread); } @@ -316,7 +316,7 @@ /*********************************************************************** * LZRead32 (LZ32.4) */ -INT32 LZRead32( HFILE32 fd, LPVOID vbuf, UINT32 toread ) +INT32 WINAPI LZRead32( HFILE32 fd, LPVOID vbuf, UINT32 toread ) { int i,howmuch; BYTE b,*buf; @@ -412,7 +412,7 @@ /*********************************************************************** * LZSeek16 (LZEXPAND.4) */ -LONG LZSeek16( HFILE16 fd, LONG off, INT16 type ) +LONG WINAPI LZSeek16( HFILE16 fd, LONG off, INT16 type ) { return LZSeek32( fd, off, type ); } @@ -421,7 +421,7 @@ /*********************************************************************** * LZSeek32 (LZ32.3) */ -LONG LZSeek32( HFILE32 fd, LONG off, INT32 type ) +LONG WINAPI LZSeek32( HFILE32 fd, LONG off, INT32 type ) { int i; struct lzstate *lzs; @@ -459,7 +459,7 @@ /*********************************************************************** * LZCopy16 (LZEXPAND.1) */ -LONG LZCopy16( HFILE16 src, HFILE16 dest ) +LONG WINAPI LZCopy16( HFILE16 src, HFILE16 dest ) { return LZCopy32( src, dest ); } @@ -472,7 +472,7 @@ * if src is a LZ compressed file, it will be uncompressed. * will return the number of bytes written to dest or errors. */ -LONG LZCopy32( HFILE32 src, HFILE32 dest ) +LONG WINAPI LZCopy32( HFILE32 src, HFILE32 dest ) { int i,ret,wret; LONG len; @@ -530,7 +530,7 @@ /*********************************************************************** * LZOpenFile16 (LZEXPAND.2) */ -HFILE16 LZOpenFile16( LPCSTR fn, LPOFSTRUCT ofs, UINT16 mode ) +HFILE16 WINAPI LZOpenFile16( LPCSTR fn, LPOFSTRUCT ofs, UINT16 mode ) { return LZOpenFile32A( fn, ofs, mode ); } @@ -541,7 +541,7 @@ * * Opens a file. If not compressed, open it as a normal file. */ -HFILE32 LZOpenFile32A( LPCSTR fn, LPOFSTRUCT ofs, UINT32 mode ) +HFILE32 WINAPI LZOpenFile32A( LPCSTR fn, LPOFSTRUCT ofs, UINT32 mode ) { HFILE32 fd,cfd; @@ -568,7 +568,7 @@ /*********************************************************************** * LZOpenFile32W (LZ32.10) */ -HFILE32 LZOpenFile32W( LPCWSTR fn, LPOFSTRUCT ofs, UINT32 mode ) +HFILE32 WINAPI LZOpenFile32W( LPCWSTR fn, LPOFSTRUCT ofs, UINT32 mode ) { LPSTR xfn; LPWSTR yfn; @@ -590,7 +590,7 @@ /*********************************************************************** * LZClose16 (LZEXPAND.6) */ -void LZClose16( HFILE16 fd ) +void WINAPI LZClose16( HFILE16 fd ) { return LZClose32( fd ); } @@ -599,7 +599,7 @@ /*********************************************************************** * LZClose32 (LZ32.5) */ -void LZClose32( HFILE32 fd ) +void WINAPI LZClose32( HFILE32 fd ) { int i; @@ -622,7 +622,7 @@ /*********************************************************************** * CopyLZFile16 (LZEXPAND.8) */ -LONG CopyLZFile16( HFILE16 src, HFILE16 dest ) +LONG WINAPI CopyLZFile16( HFILE16 src, HFILE16 dest ) { dprintf_file(stddeb,"CopyLZFile16(%d,%d)\n",src,dest); return LZCopy32(src,dest); @@ -635,7 +635,7 @@ * Copy src to dest (including uncompressing src). * NOTE: Yes. This is exactly the same function as LZCopy. */ -LONG CopyLZFile32( HFILE32 src, HFILE32 dest ) +LONG WINAPI CopyLZFile32( HFILE32 src, HFILE32 dest ) { dprintf_file(stddeb,"CopyLZFile32(%d,%d)\n",src,dest); return LZCopy32(src,dest);
diff --git a/misc/main.c b/misc/main.c index 01cc321..3ef3384 100644 --- a/misc/main.c +++ b/misc/main.c
@@ -102,9 +102,12 @@ int screenWidth = 0, screenHeight = 0; /* Desktop window dimensions */ int screenDepth = 0; /* Screen depth to use */ int desktopX = 0, desktopY = 0; /* Desktop window position (if any) */ -int getVersion16 = 0; -int getVersion32 = 0; -OSVERSIONINFO32A getVersionEx; + +/* Default version is the same as -winver win31 */ +static LONG getVersion16 = MAKELONG( WINVERSION, 0x0616 ); /* DOS 6.22 */ +static LONG getVersion32 = MAKELONG( 4, 0x1606 ); /* DOS 6.22 */ +static OSVERSIONINFO32A getVersionEx = { sizeof(OSVERSIONINFO32A), 3, 10, 0, + VER_PLATFORM_WIN32s, "Win32s 1.3" }; struct options Options = { /* default options */ @@ -692,7 +695,7 @@ /*********************************************************************** * MessageBeep16 (USER.104) */ -void MessageBeep16( UINT16 i ) +void WINAPI MessageBeep16( UINT16 i ) { MessageBeep32( i ); } @@ -701,7 +704,7 @@ /*********************************************************************** * MessageBeep32 (USER32.389) */ -BOOL32 MessageBeep32( UINT32 i ) +BOOL32 WINAPI MessageBeep32( UINT32 i ) { XBell( display, 100 ); return TRUE; @@ -711,7 +714,7 @@ /*********************************************************************** * Beep (KERNEL32.11) */ -BOOL32 Beep( DWORD dwFreq, DWORD dwDur ) +BOOL32 WINAPI Beep( DWORD dwFreq, DWORD dwDur ) { /* dwFreq and dwDur are ignored by Win95 */ XBell(display, 100); @@ -722,43 +725,31 @@ /*********************************************************************** * GetVersion16 (KERNEL.3) */ -LONG GetVersion16(void) +LONG WINAPI GetVersion16(void) { - if (getVersion16) return getVersion16; - return MAKELONG( WINVERSION, WINDOSVER ); + return getVersion16; } /*********************************************************************** * GetVersion32 */ -LONG GetVersion32(void) +LONG WINAPI GetVersion32(void) { - if (getVersion32) return getVersion32; - return MAKELONG( 4, DOSVERSION); + return getVersion32; } /*********************************************************************** * GetVersionExA */ -BOOL32 GetVersionEx32A(OSVERSIONINFO32A *v) +BOOL32 WINAPI GetVersionEx32A(OSVERSIONINFO32A *v) { if(v->dwOSVersionInfoSize!=sizeof(OSVERSIONINFO32A)) { fprintf(stddeb,"wrong OSVERSIONINFO size from app"); return FALSE; } - if(!getVersion32) - { - /* Return something like NT 3.5 */ - v->dwMajorVersion = 3; - v->dwMinorVersion = 5; - v->dwBuildNumber = 42; - v->dwPlatformId = VER_PLATFORM_WIN32_NT; - strcpy(v->szCSDVersion, "Wine is not an emulator"); - return TRUE; - } v->dwMajorVersion = getVersionEx.dwMajorVersion; v->dwMinorVersion = getVersionEx.dwMinorVersion; v->dwBuildNumber = getVersionEx.dwBuildNumber; @@ -771,7 +762,7 @@ /*********************************************************************** * GetVersionExW */ -BOOL32 GetVersionEx32W(OSVERSIONINFO32W *v) +BOOL32 WINAPI GetVersionEx32W(OSVERSIONINFO32W *v) { OSVERSIONINFO32A v1; if(v->dwOSVersionInfoSize!=sizeof(OSVERSIONINFO32W)) @@ -792,7 +783,7 @@ /*********************************************************************** * GetWinFlags (KERNEL.132) */ -DWORD GetWinFlags(void) +DWORD WINAPI GetWinFlags(void) { static const long cpuflags[5] = { WF_CPU086, WF_CPU186, WF_CPU286, WF_CPU386, WF_CPU486 }; @@ -827,7 +818,7 @@ /*********************************************************************** * SetEnvironment (GDI.132) */ -INT16 SetEnvironment( LPCSTR lpPortName, LPCSTR lpEnviron, UINT16 nCount ) +INT16 WINAPI SetEnvironment(LPCSTR lpPortName, LPCSTR lpEnviron, UINT16 nCount) { LPENVENTRY lpNewEnv; LPENVENTRY lpEnv = lpEnvList; @@ -896,7 +887,7 @@ /*********************************************************************** * GetEnvironment (GDI.134) */ -INT16 GetEnvironment( LPCSTR lpPortName, LPSTR lpEnviron, UINT16 nMaxSiz ) +INT16 WINAPI GetEnvironment(LPCSTR lpPortName, LPSTR lpEnviron, UINT16 nMaxSiz) { WORD nCount; LPENVENTRY lpEnv = lpEnvList; @@ -921,7 +912,7 @@ /*********************************************************************** * GetTimerResolution (USER.14) */ -LONG GetTimerResolution(void) +LONG WINAPI GetTimerResolution(void) { return (1000); } @@ -929,8 +920,8 @@ /*********************************************************************** * SystemParametersInfo32A (USER32.539) */ -BOOL32 SystemParametersInfo32A( UINT32 uAction, UINT32 uParam, - LPVOID lpvParam, UINT32 fuWinIni ) +BOOL32 WINAPI SystemParametersInfo32A( UINT32 uAction, UINT32 uParam, + LPVOID lpvParam, UINT32 fuWinIni ) { int timeout, temp; XKeyboardState keyboard_state; @@ -1007,7 +998,9 @@ case SPI_GETICONTITLELOGFONT: { LPLOGFONT32A lpLogFont = (LPLOGFONT32A)lpvParam; - GetProfileString32A("Desktop", "IconTitleFaceName", "Helvetica", + /* from now on we always have an alias for MS Sans Serif */ + + GetProfileString32A("Desktop", "IconTitleFaceName", "MS Sans Serif", lpLogFont->lfFaceName, LF_FACESIZE ); lpLogFont->lfHeight = -GetProfileInt32A("Desktop","IconTitleSize", 8); @@ -1029,16 +1022,26 @@ GetSystemMetrics32( SM_CYSCREEN ) ); break; - case SPI_GETNONCLIENTMETRICS: { - /* FIXME: implement correctly */ - LPNONCLIENTMETRICS32A lpnm=(LPNONCLIENTMETRICS32A)lpvParam; + case SPI_GETNONCLIENTMETRICS: - SystemParametersInfo32A(SPI_GETICONTITLELOGFONT,0,(LPVOID)&(lpnm->lfCaptionFont),0); - SystemParametersInfo32A(SPI_GETICONTITLELOGFONT,0,(LPVOID)&(lpnm->lfMenuFont),0); - SystemParametersInfo32A(SPI_GETICONTITLELOGFONT,0,(LPVOID)&(lpnm->lfStatusFont),0); - SystemParametersInfo32A(SPI_GETICONTITLELOGFONT,0,(LPVOID)&(lpnm->lfMessageFont),0); +#define lpnm ((LPNONCLIENTMETRICS32A)lpvParam) + + if( lpnm->cbSize == sizeof(NONCLIENTMETRICS32A) ) + { + /* FIXME: initialize geometry entries */ + + SystemParametersInfo32A(SPI_GETICONTITLELOGFONT, 0, + (LPVOID)&(lpnm->lfCaptionFont),0); + SystemParametersInfo32A(SPI_GETICONTITLELOGFONT, 0, + (LPVOID)&(lpnm->lfMenuFont),0); + SystemParametersInfo32A(SPI_GETICONTITLELOGFONT, 0, + (LPVOID)&(lpnm->lfStatusFont),0); + SystemParametersInfo32A(SPI_GETICONTITLELOGFONT, 0, + (LPVOID)&(lpnm->lfMessageFont),0); + } +#undef lpnm break; - } + default: return SystemParametersInfo16(uAction,uParam,lpvParam,fuWinIni); } @@ -1049,8 +1052,8 @@ /*********************************************************************** * SystemParametersInfo16 (USER.483) */ -BOOL16 SystemParametersInfo16( UINT16 uAction, UINT16 uParam, - LPVOID lpvParam, UINT16 fuWinIni ) +BOOL16 WINAPI SystemParametersInfo16( UINT16 uAction, UINT16 uParam, + LPVOID lpvParam, UINT16 fuWinIni ) { int timeout, temp; char buffer[256]; @@ -1174,7 +1177,7 @@ { LPLOGFONT16 lpLogFont = (LPLOGFONT16)lpvParam; - GetProfileString32A("Desktop", "IconTitleFaceName", "Helvetica", + GetProfileString32A("Desktop", "IconTitleFaceName", "MS Sans Serif", lpLogFont->lfFaceName, LF_FACESIZE ); lpLogFont->lfHeight = -GetProfileInt32A("Desktop","IconTitleSize", 8); @@ -1190,16 +1193,25 @@ lpLogFont->lfPitchAndFamily = DEFAULT_PITCH | FF_SWISS; break; } - case SPI_GETNONCLIENTMETRICS: { - /* FIXME: implement correctly */ - LPNONCLIENTMETRICS16 lpnm=(LPNONCLIENTMETRICS16)lpvParam; + case SPI_GETNONCLIENTMETRICS: - SystemParametersInfo16(SPI_GETICONTITLELOGFONT,0,(LPVOID)&(lpnm->lfCaptionFont),0); - SystemParametersInfo16(SPI_GETICONTITLELOGFONT,0,(LPVOID)&(lpnm->lfMenuFont),0); - SystemParametersInfo16(SPI_GETICONTITLELOGFONT,0,(LPVOID)&(lpnm->lfStatusFont),0); - SystemParametersInfo16(SPI_GETICONTITLELOGFONT,0,(LPVOID)&(lpnm->lfMessageFont),0); - break; - } +#define lpnm ((LPNONCLIENTMETRICS16)lpvParam) + if( lpnm->cbSize == sizeof(NONCLIENTMETRICS16) ) + { + /* FIXME: initialize geometry entries */ + SystemParametersInfo16( SPI_GETICONTITLELOGFONT, 0, + (LPVOID)&(lpnm->lfCaptionFont),0); + SystemParametersInfo16( SPI_GETICONTITLELOGFONT, 0, + (LPVOID)&(lpnm->lfMenuFont),0); + SystemParametersInfo16( SPI_GETICONTITLELOGFONT, 0, + (LPVOID)&(lpnm->lfStatusFont),0); + SystemParametersInfo16( SPI_GETICONTITLELOGFONT, 0, + (LPVOID)&(lpnm->lfMessageFont),0); + } + else /* winfile 95 sets sbSize to 340 */ + SystemParametersInfo32A( uAction, uParam, lpvParam, fuWinIni ); +#undef lpnm + break; case SPI_LANGDRIVER: case SPI_SETBORDER: @@ -1228,8 +1240,8 @@ /*********************************************************************** * SystemParametersInfo32W (USER32.540) */ -BOOL32 SystemParametersInfo32W( UINT32 uAction, UINT32 uParam, - LPVOID lpvParam, UINT32 fuWinIni ) +BOOL32 WINAPI SystemParametersInfo32W( UINT32 uAction, UINT32 uParam, + LPVOID lpvParam, UINT32 fuWinIni ) { char buffer[256]; @@ -1295,7 +1307,7 @@ /*********************************************************************** * FileCDR (KERNEL.130) */ -void FileCDR(FARPROC16 x) +void WINAPI FileCDR(FARPROC16 x) { printf("FileCDR(%8x)\n", (int) x); } @@ -1303,7 +1315,7 @@ /*********************************************************************** * GetWinDebugInfo (KERNEL.355) */ -BOOL16 GetWinDebugInfo(WINDEBUGINFO *lpwdi, UINT16 flags) +BOOL16 WINAPI GetWinDebugInfo(WINDEBUGINFO *lpwdi, UINT16 flags) { printf("GetWinDebugInfo(%8lx,%d) stub returning 0\n", (unsigned long)lpwdi, flags); /* 0 means not in debugging mode/version */ @@ -1315,7 +1327,7 @@ /*********************************************************************** * GetWinDebugInfo (KERNEL.355) */ -BOOL16 SetWinDebugInfo(WINDEBUGINFO *lpwdi) +BOOL16 WINAPI SetWinDebugInfo(WINDEBUGINFO *lpwdi) { printf("SetWinDebugInfo(%8lx) stub returning 0\n", (unsigned long)lpwdi); /* 0 means not in debugging mode/version */
diff --git a/misc/mpr.c b/misc/mpr.c index 6c7b674..3679aff 100644 --- a/misc/mpr.c +++ b/misc/mpr.c
@@ -8,8 +8,7 @@ #include "stddebug.h" #include "debug.h" -DWORD -WNetGetCachedPassword( +DWORD WINAPI WNetGetCachedPassword( LPSTR pbResource, WORD cbResource, LPSTR pbPassword, @@ -22,8 +21,7 @@ return 0; } -DWORD -MultinetGetConnectionPerformance32A( +DWORD WINAPI MultinetGetConnectionPerformance32A( LPNETRESOURCE32A lpNetResource, LPNETCONNECTINFOSTRUCT lpNetConnectInfoStruct ) {
diff --git a/misc/network.c b/misc/network.c index 5c1eace..3768fc9 100644 --- a/misc/network.c +++ b/misc/network.c
@@ -35,7 +35,7 @@ /************************************************************************** * WNetErrorText [USER.499] */ -int WNetErrorText(WORD nError,LPSTR lpszText,WORD cbText) +int WINAPI WNetErrorText(WORD nError,LPSTR lpszText,WORD cbText) { printf("EMPTY STUB !!! WNetErrorText(%x,%p,%x)\n", nError,lpszText,cbText); @@ -45,7 +45,7 @@ /************************************************************************** * WNetOpenJob [USER.501] */ -int WNetOpenJob(LPSTR szQueue,LPSTR szJobTitle,WORD nCopies,LPWORD pfh) +int WINAPI WNetOpenJob(LPSTR szQueue,LPSTR szJobTitle,WORD nCopies,LPWORD pfh) { printf("EMPTY STUB !!! WNetOpenJob('%s','%s',%x,%p)\n", szQueue,szJobTitle,nCopies,pfh); @@ -55,7 +55,7 @@ /************************************************************************** * WNetCloseJob [USER.502] */ -int WNetCloseJob(WORD fh,LPWORD pidJob,LPSTR szQueue) +int WINAPI WNetCloseJob(WORD fh,LPWORD pidJob,LPSTR szQueue) { printf("EMPTY STUB !!! WNetCloseJob(%x,%p,'%s')\n", fh,pidJob,szQueue); @@ -65,7 +65,7 @@ /************************************************************************** * WNetAbortJob [USER.503] */ -int WNetAbortJob(LPSTR szQueue,WORD wJobId) +int WINAPI WNetAbortJob(LPSTR szQueue,WORD wJobId) { printf("EMPTY STUB !!! WNetAbortJob('%s',%x)\n", szQueue,wJobId); @@ -75,7 +75,7 @@ /************************************************************************** * WNetHoldJob [USER.504] */ -int WNetHoldJob(LPSTR szQueue,WORD wJobId) +int WINAPI WNetHoldJob(LPSTR szQueue,WORD wJobId) { printf("EMPTY STUB !!! WNetHoldJob('%s',%x)\n", szQueue,wJobId); @@ -85,7 +85,7 @@ /************************************************************************** * WNetReleaseJob [USER.505] */ -int WNetReleaseJob(LPSTR szQueue,WORD wJobId) +int WINAPI WNetReleaseJob(LPSTR szQueue,WORD wJobId) { printf("EMPTY STUB !!! WNetReleaseJob('%s',%x)\n", szQueue,wJobId); @@ -95,7 +95,7 @@ /************************************************************************** * WNetCancelJob [USER.506] */ -int WNetCancelJob(LPSTR szQueue,WORD wJobId) +int WINAPI WNetCancelJob(LPSTR szQueue,WORD wJobId) { printf("EMPTY STUB !!! WNetCancelJob('%s',%x)\n", szQueue,wJobId); @@ -105,7 +105,7 @@ /************************************************************************** * WNetSetJobCopies [USER.507] */ -int WNetSetJobCopies(LPSTR szQueue,WORD wJobId,WORD nCopies) +int WINAPI WNetSetJobCopies(LPSTR szQueue,WORD wJobId,WORD nCopies) { printf("EMPTY STUB !!! WNetSetJobCopies('%s',%x,%x)\n", szQueue,wJobId,nCopies); @@ -115,7 +115,7 @@ /************************************************************************** * WNetWatchQueue [USER.508] */ -int WNetWatchQueue(HWND16 hWnd,LPSTR szLocal,LPSTR szUser,WORD nQueue) +int WINAPI WNetWatchQueue(HWND16 hWnd,LPSTR szLocal,LPSTR szUser,WORD nQueue) { printf("EMPTY STUB !!! WNetWatchQueue(%04x,'%s','%s',%x)\n", hWnd,szLocal,szUser,nQueue); @@ -125,7 +125,7 @@ /************************************************************************** * WNetUnwatchQueue [USER.509] */ -int WNetUnwatchQueue(LPSTR szQueue) +int WINAPI WNetUnwatchQueue(LPSTR szQueue) { printf("EMPTY STUB !!! WNetUnwatchQueue('%s')\n", szQueue); return WN_NET_ERROR; @@ -134,7 +134,7 @@ /************************************************************************** * WNetLockQueueData [USER.510] */ -int WNetLockQueueData(LPSTR szQueue,LPSTR szUser,void *lplpQueueStruct) +int WINAPI WNetLockQueueData(LPSTR szQueue,LPSTR szUser,void *lplpQueueStruct) { printf("EMPTY STUB !!! WNetLockQueueData('%s','%s',%p)\n", szQueue,szUser,lplpQueueStruct); @@ -144,7 +144,7 @@ /************************************************************************** * WNetUnlockQueueData [USER.511] */ -int WNetUnlockQueueData(LPSTR szQueue) +int WINAPI WNetUnlockQueueData(LPSTR szQueue) { printf("EMPTY STUB !!! WNetUnlockQueueData('%s')\n",szQueue); return WN_NET_ERROR; @@ -153,8 +153,8 @@ /************************************************************************** * WNetGetConnection [USER.512] */ -int WNetGetConnection(LPSTR lpLocalName, - LPSTR lpRemoteName, UINT16 *cbRemoteName) +int WINAPI WNetGetConnection(LPSTR lpLocalName, + LPSTR lpRemoteName, UINT16 *cbRemoteName) { const char *path; @@ -183,7 +183,7 @@ /************************************************************************** * WNetGetCaps [USER.513] */ -int WNetGetCaps(WORD capability) +int WINAPI WNetGetCaps(WORD capability) { return 0; } @@ -191,7 +191,7 @@ /************************************************************************** * WNetDeviceMode [USER.514] */ -int WNetDeviceMode(HWND16 hWndOwner) +int WINAPI WNetDeviceMode(HWND16 hWndOwner) { printf("EMPTY STUB !!! WNetDeviceMode(%04x)\n",hWndOwner); return WN_NET_ERROR; @@ -200,7 +200,7 @@ /************************************************************************** * WNetBrowseDialog [USER.515] */ -int WNetBrowseDialog(HWND16 hParent,WORD nType,LPSTR szPath) +int WINAPI WNetBrowseDialog(HWND16 hParent,WORD nType,LPSTR szPath) { printf("EMPTY STUB !!! WNetBrowseDialog(%04x,%x,'%s')\n", hParent,nType,szPath); @@ -210,7 +210,7 @@ /************************************************************************** * WNetGetUser [USER.516] */ -UINT16 WNetGetUser(LPSTR lpLocalName, LPSTR lpUserName, DWORD *lpSize) +UINT16 WINAPI WNetGetUser(LPSTR lpLocalName, LPSTR lpUserName, DWORD *lpSize) { printf("EMPTY STUB !!! WNetGetUser(%p, %p, %p);\n", lpLocalName, lpUserName, lpSize); @@ -220,7 +220,8 @@ /************************************************************************** * WNetAddConnection [USER.517] */ -UINT16 WNetAddConnection(LPSTR lpNetPath, LPSTR lpPassWord, LPSTR lpLocalName) +UINT16 WINAPI WNetAddConnection(LPSTR lpNetPath, LPSTR lpPassWord, + LPSTR lpLocalName) { printf("EMPTY STUB !!! WNetAddConnection('%s', %p, '%s');\n", lpNetPath, lpPassWord, lpLocalName); @@ -231,7 +232,7 @@ /************************************************************************** * WNetCancelConnection [USER.518] */ -UINT16 WNetCancelConnection(LPSTR lpName, BOOL16 bForce) +UINT16 WINAPI WNetCancelConnection(LPSTR lpName, BOOL16 bForce) { printf("EMPTY STUB !!! WNetCancelConnection('%s', %04X);\n", lpName, bForce); @@ -241,7 +242,7 @@ /************************************************************************** * WNetGetError [USER.519] */ -int WNetGetError(LPWORD nError) +int WINAPI WNetGetError(LPWORD nError) { printf("EMPTY STUB !!! WNetGetError(%p)\n",nError); return WN_NET_ERROR; @@ -250,7 +251,7 @@ /************************************************************************** * WNetGetErrorText [USER.520] */ -int WNetGetErrorText(WORD nError, LPSTR lpBuffer, LPWORD nBufferSize) +int WINAPI WNetGetErrorText(WORD nError, LPSTR lpBuffer, LPWORD nBufferSize) { printf("EMPTY STUB !!! WNetGetErrorText(%x,%p,%p)\n", nError,lpBuffer,nBufferSize); @@ -260,7 +261,7 @@ /************************************************************************** * WNetRestoreConnection [USER.523] */ -int WNetRestoreConnection(HWND16 hwndOwner,LPSTR lpszDevice) +int WINAPI WNetRestoreConnection(HWND16 hwndOwner,LPSTR lpszDevice) { printf("EMPTY STUB !!! WNetRestoreConnection(%04x,'%s')\n", hwndOwner,lpszDevice); @@ -270,7 +271,7 @@ /************************************************************************** * WNetWriteJob [USER.524] */ -int WNetWriteJob(HANDLE16 hJob,void *lpData,LPWORD lpcbData) +int WINAPI WNetWriteJob(HANDLE16 hJob,void *lpData,LPWORD lpcbData) { printf("EMPTY STUB !!! WNetWriteJob(%04x,%p,%p)\n", hJob,lpData,lpcbData); @@ -280,7 +281,7 @@ /************************************************************************** * WnetConnectDialog [USER.525] */ -UINT16 WNetConnectDialog(HWND16 hWndParent, WORD iType) +UINT16 WINAPI WNetConnectDialog(HWND16 hWndParent, WORD iType) { printf("EMPTY STUB !!! WNetConnectDialog(%04x, %4X)\n", hWndParent, iType); return WN_SUCCESS; @@ -289,7 +290,7 @@ /************************************************************************** * WNetDisconnectDialog [USER.526] */ -int WNetDisconnectDialog(HWND16 hwndOwner, WORD iType) +int WINAPI WNetDisconnectDialog(HWND16 hwndOwner, WORD iType) { printf("EMPTY STUB !!! WNetDisconnectDialog(%04x,%x)\n", hwndOwner,iType); @@ -299,7 +300,7 @@ /************************************************************************** * WnetConnectionDialog [USER.527] */ -UINT16 WNetConnectionDialog(HWND16 hWndParent, WORD iType) +UINT16 WINAPI WNetConnectionDialog(HWND16 hWndParent, WORD iType) { printf("EMPTY STUB !!! WNetConnectionDialog(%04x, %4X)\n", hWndParent, iType); @@ -309,7 +310,7 @@ /************************************************************************** * WNetViewQueueDialog [USER.528] */ -int WNetViewQueueDialog(HWND16 hwndOwner,LPSTR lpszQueue) +int WINAPI WNetViewQueueDialog(HWND16 hwndOwner,LPSTR lpszQueue) { printf("EMPTY STUB !!! WNetViewQueueDialog(%04x,'%s')\n", hwndOwner,lpszQueue); @@ -319,8 +320,8 @@ /************************************************************************** * WNetPropertyDialog [USER.529] */ -int WNetPropertyDialog(HWND16 hwndParent,WORD iButton, - WORD nPropSel,LPSTR lpszName,WORD nType) +int WINAPI WNetPropertyDialog(HWND16 hwndParent,WORD iButton, + WORD nPropSel,LPSTR lpszName,WORD nType) { printf("EMPTY STUB !!! WNetPropertyDialog(%04x,%x,%x,'%s',%x)\n", hwndParent,iButton,nPropSel,lpszName,nType); @@ -330,7 +331,7 @@ /************************************************************************** * WNetGetDirectoryType [USER.530] */ -int WNetGetDirectoryType(LPSTR lpName,void *lpType) +int WINAPI WNetGetDirectoryType(LPSTR lpName,void *lpType) { printf("EMPTY STUB !!! WNetGetDirectoryType('%s',%p)\n", lpName,lpType); @@ -340,7 +341,7 @@ /************************************************************************** * WNetDirectoryNotify [USER.531] */ -int WNetDirectoryNotify(HWND16 hwndOwner,void *lpDir,WORD wOper) +int WINAPI WNetDirectoryNotify(HWND16 hwndOwner,void *lpDir,WORD wOper) { printf("EMPTY STUB !!! WNetDirectoryNotify(%04x,%p,%x)\n", hwndOwner,lpDir,wOper); @@ -350,8 +351,8 @@ /************************************************************************** * WNetGetPropertyText [USER.532] */ -int WNetGetPropertyText(HWND16 hwndParent,WORD iButton,WORD nPropSel, - LPSTR lpszName,WORD nType) +int WINAPI WNetGetPropertyText(HWND16 hwndParent,WORD iButton,WORD nPropSel, + LPSTR lpszName,WORD nType) { printf("EMPTY STUB !!! WNetGetPropertyText(%04x,%x,%x,'%s',%x)\n", hwndParent,iButton,nPropSel,lpszName,nType); @@ -361,8 +362,8 @@ /************************************************************************** * WNetAddConnection2 [USER.???] */ -UINT16 WNetAddConnection2(LPSTR lpNetPath, LPSTR lpPassWord, - LPSTR lpLocalName, LPSTR lpUserName) +UINT16 WINAPI WNetAddConnection2(LPSTR lpNetPath, LPSTR lpPassWord, + LPSTR lpLocalName, LPSTR lpUserName) { printf("EMPTY STUB !!! WNetAddConnection2('%s', %p, '%s', '%s');\n", lpNetPath, lpPassWord, lpLocalName, lpUserName); @@ -372,7 +373,7 @@ /************************************************************************** * WNetCloseEnum [USER.???] */ -UINT16 WNetCloseEnum(HANDLE16 hEnum) +UINT16 WINAPI WNetCloseEnum(HANDLE16 hEnum) { printf("EMPTY STUB !!! WNetCloseEnum(%04x);\n", hEnum); return WN_NET_ERROR; @@ -381,8 +382,8 @@ /************************************************************************** * WNetEnumResource [USER.???] */ -UINT16 WNetEnumResource(HANDLE16 hEnum, DWORD cRequ, - DWORD *lpCount, LPVOID lpBuf) +UINT16 WINAPI WNetEnumResource(HANDLE16 hEnum, DWORD cRequ, + DWORD *lpCount, LPVOID lpBuf) { printf("EMPTY STUB !!! WNetEnumResource(%04x, %08lX, %p, %p);\n", hEnum, cRequ, lpCount, lpBuf); @@ -392,8 +393,8 @@ /************************************************************************** * WNetOpenEnum [USER.???] */ -UINT16 WNetOpenEnum(DWORD dwScope, DWORD dwType, - LPNETRESOURCE lpNet, HANDLE16 *lphEnum) +UINT16 WINAPI WNetOpenEnum(DWORD dwScope, DWORD dwType, + LPNETRESOURCE lpNet, HANDLE16 *lphEnum) { printf("EMPTY STUB !!! WNetOpenEnum(%08lX, %08lX, %p, %p);\n", dwScope, dwType, lpNet, lphEnum);
diff --git a/misc/ntdll.c b/misc/ntdll.c index cd430dc..43b6a5d 100644 --- a/misc/ntdll.c +++ b/misc/ntdll.c
@@ -22,24 +22,24 @@ /************************************************************************** * RtlLengthRequiredSid [NTDLL] */ -DWORD -RtlLengthRequiredSid(DWORD nrofsubauths) { +DWORD WINAPI RtlLengthRequiredSid(DWORD nrofsubauths) +{ return sizeof(DWORD)*nrofsubauths+sizeof(SID); } /************************************************************************** * RtlLengthSid [NTDLL] */ -DWORD -RtlLengthSid(LPSID sid) { +DWORD WINAPI RtlLengthSid(LPSID sid) +{ return sizeof(DWORD)*sid->SubAuthorityCount+sizeof(SID); } /************************************************************************** * RtlCreateAcl [NTDLL] */ -DWORD /* NTSTATUS */ -RtlCreateAcl(LPACL acl,DWORD size,DWORD rev) { +DWORD /* NTSTATUS */ WINAPI RtlCreateAcl(LPACL acl,DWORD size,DWORD rev) +{ if (rev!=ACL_REVISION) return STATUS_INVALID_PARAMETER; if (size<sizeof(ACL)) @@ -59,8 +59,8 @@ * looks for the AceCount+1 ACE, and if it is still within the alloced * ACL, return a pointer to it */ -BOOL32 -RtlFirstFreeAce(LPACL acl,LPACE_HEADER *x) { +BOOL32 WINAPI RtlFirstFreeAce(LPACL acl,LPACE_HEADER *x) +{ LPACE_HEADER ace; int i; @@ -80,8 +80,9 @@ /************************************************************************** * RtlAddAce [NTDLL] */ -DWORD /* NTSTATUS */ -RtlAddAce(LPACL acl,DWORD rev,DWORD xnrofaces,LPACE_HEADER acestart,DWORD acelen){ +DWORD /* NTSTATUS */ WINAPI RtlAddAce(LPACL acl,DWORD rev,DWORD xnrofaces, + LPACE_HEADER acestart,DWORD acelen) +{ LPACE_HEADER ace,targetace; int nrofaces; @@ -104,8 +105,8 @@ /************************************************************************** * RtlCreateSecurityDescriptor [NTDLL] */ -DWORD /* NTSTATUS */ -RtlCreateSecurityDescriptor(LPSECURITY_DESCRIPTOR lpsd,DWORD rev) { +DWORD /* NTSTATUS */ WINAPI RtlCreateSecurityDescriptor(LPSECURITY_DESCRIPTOR lpsd,DWORD rev) +{ if (rev!=SECURITY_DESCRIPTOR_REVISION) return STATUS_UNKNOWN_REVISION; memset(lpsd,'\0',sizeof(*lpsd)); @@ -116,10 +117,8 @@ /************************************************************************** * RtlSetDaclSecurityDescriptor [NTDLL] */ -DWORD /* NTSTATUS */ -RtlSetDaclSecurityDescriptor ( -LPSECURITY_DESCRIPTOR lpsd,BOOL32 daclpresent,LPACL dacl,BOOL32 dacldefaulted -) { +DWORD /* NTSTATUS */ WINAPI RtlSetDaclSecurityDescriptor ( LPSECURITY_DESCRIPTOR lpsd,BOOL32 daclpresent,LPACL dacl,BOOL32 dacldefaulted ) +{ if (lpsd->Revision!=SECURITY_DESCRIPTOR_REVISION) return STATUS_UNKNOWN_REVISION; if (lpsd->Control & SE_SELF_RELATIVE) @@ -140,10 +139,10 @@ /************************************************************************** * RtlSetSaclSecurityDescriptor [NTDLL] */ -DWORD /* NTSTATUS */ -RtlSetSaclSecurityDescriptor ( +DWORD /* NTSTATUS */ WINAPI RtlSetSaclSecurityDescriptor ( LPSECURITY_DESCRIPTOR lpsd,BOOL32 saclpresent,LPACL sacl,BOOL32 sacldefaulted -) { +) +{ if (lpsd->Revision!=SECURITY_DESCRIPTOR_REVISION) return STATUS_UNKNOWN_REVISION; if (lpsd->Control & SE_SELF_RELATIVE) @@ -164,8 +163,8 @@ /************************************************************************** * RtlSetOwnerSecurityDescriptor [NTDLL] */ -DWORD /* NTSTATUS */ -RtlSetOwnerSecurityDescriptor (LPSECURITY_DESCRIPTOR lpsd,LPSID owner,BOOL32 ownerdefaulted) { +DWORD /* NTSTATUS */ WINAPI RtlSetOwnerSecurityDescriptor (LPSECURITY_DESCRIPTOR lpsd,LPSID owner,BOOL32 ownerdefaulted) +{ if (lpsd->Revision!=SECURITY_DESCRIPTOR_REVISION) return STATUS_UNKNOWN_REVISION; if (lpsd->Control & SE_SELF_RELATIVE) @@ -182,8 +181,8 @@ /************************************************************************** * RtlSetOwnerSecurityDescriptor [NTDLL] */ -DWORD /* NTSTATUS */ -RtlSetGroupSecurityDescriptor (LPSECURITY_DESCRIPTOR lpsd,LPSID group,BOOL32 groupdefaulted) { +DWORD /* NTSTATUS */ WINAPI RtlSetGroupSecurityDescriptor (LPSECURITY_DESCRIPTOR lpsd,LPSID group,BOOL32 groupdefaulted) +{ if (lpsd->Revision!=SECURITY_DESCRIPTOR_REVISION) return STATUS_UNKNOWN_REVISION; if (lpsd->Control & SE_SELF_RELATIVE) @@ -201,8 +200,7 @@ /************************************************************************** * RtlNormalizeProcessParams [NTDLL] */ -LPVOID -RtlNormalizeProcessParams(LPVOID x) +LPVOID WINAPI RtlNormalizeProcessParams(LPVOID x) { fprintf(stdnimp,"RtlNormalizeProcessParams(%p), stub.\n",x); return x; @@ -211,8 +209,9 @@ /************************************************************************** * RtlInitializeSid [NTDLL] */ -DWORD -RtlInitializeSid(LPSID lpsid,LPSID_IDENTIFIER_AUTHORITY lpsidauth,DWORD c) { +DWORD WINAPI RtlInitializeSid(LPSID lpsid,LPSID_IDENTIFIER_AUTHORITY lpsidauth, + DWORD c) +{ BYTE a = c&0xff; if (a>=SID_MAX_SUB_AUTHORITIES) @@ -226,24 +225,24 @@ /************************************************************************** * RtlSubAuthoritySid [NTDLL] */ -LPDWORD -RtlSubAuthoritySid(LPSID lpsid,DWORD nr) { +LPDWORD WINAPI RtlSubAuthoritySid(LPSID lpsid,DWORD nr) +{ return &(lpsid->SubAuthority[nr]); } /************************************************************************** * RtlSubAuthorityCountSid [NTDLL] */ -LPBYTE -RtlSubAuthorityCountSid(LPSID lpsid) { +LPBYTE WINAPI RtlSubAuthorityCountSid(LPSID lpsid) +{ return ((LPBYTE)lpsid)+1; } /************************************************************************** * RtlCopySid [NTDLL] */ -DWORD -RtlCopySid(DWORD len,LPSID to,LPSID from) { +DWORD WINAPI RtlCopySid(DWORD len,LPSID to,LPSID from) +{ if (len<(from->SubAuthorityCount*4+8)) return STATUS_BUFFER_TOO_SMALL; memmove(to,from,from->SubAuthorityCount*4+8); @@ -253,8 +252,8 @@ /************************************************************************** * RtlAnsiStringToUnicodeString [NTDLL] */ -DWORD /* NTSTATUS */ -RtlAnsiStringToUnicodeString(LPUNICODE_STRING uni,LPANSI_STRING ansi,BOOL32 doalloc) { +DWORD /* NTSTATUS */ WINAPI RtlAnsiStringToUnicodeString(LPUNICODE_STRING uni,LPANSI_STRING ansi,BOOL32 doalloc) +{ DWORD unilen = (ansi->Length+1)*sizeof(WCHAR); if (unilen>0xFFFF) @@ -275,8 +274,8 @@ /************************************************************************** * RtlOemStringToUnicodeString [NTDLL] */ -DWORD /* NTSTATUS */ -RtlOemStringToUnicodeString(LPUNICODE_STRING uni,LPSTRING ansi,BOOL32 doalloc) { +DWORD /* NTSTATUS */ WINAPI RtlOemStringToUnicodeString(LPUNICODE_STRING uni,LPSTRING ansi,BOOL32 doalloc) +{ DWORD unilen = (ansi->Length+1)*sizeof(WCHAR); if (unilen>0xFFFF) @@ -297,8 +296,8 @@ * RtlMultiByteToUnicodeN [NTDLL] * FIXME: multibyte support */ -DWORD /* NTSTATUS */ -RtlMultiByteToUnicodeN(LPWSTR unistr,DWORD unilen,LPDWORD reslen,LPSTR oemstr,DWORD oemlen) { +DWORD /* NTSTATUS */ WINAPI RtlMultiByteToUnicodeN(LPWSTR unistr,DWORD unilen,LPDWORD reslen,LPSTR oemstr,DWORD oemlen) +{ DWORD len; LPWSTR x; @@ -315,8 +314,8 @@ /************************************************************************** * RtlOemToUnicodeN [NTDLL] */ -DWORD /* NTSTATUS */ -RtlOemToUnicodeN(LPWSTR unistr,DWORD unilen,LPDWORD reslen,LPSTR oemstr,DWORD oemlen) { +DWORD /* NTSTATUS */ WINAPI RtlOemToUnicodeN(LPWSTR unistr,DWORD unilen,LPDWORD reslen,LPSTR oemstr,DWORD oemlen) +{ DWORD len; LPWSTR x; @@ -333,8 +332,8 @@ /************************************************************************** * RtlInitString [NTDLL] */ -VOID -RtlInitAnsiString(LPANSI_STRING target,LPCSTR source) { +VOID WINAPI RtlInitAnsiString(LPANSI_STRING target,LPCSTR source) +{ target->Length = target->MaximumLength = 0; target->Buffer = (LPSTR)source; if (!source) @@ -345,8 +344,8 @@ /************************************************************************** * RtlInitString [NTDLL] */ -VOID -RtlInitString(LPSTRING target,LPCSTR source) { +VOID WINAPI RtlInitString(LPSTRING target,LPCSTR source) +{ target->Length = target->MaximumLength = 0; target->Buffer = (LPSTR)source; if (!source) @@ -358,8 +357,8 @@ /************************************************************************** * RtlInitUnicodeString [NTDLL] */ -VOID -RtlInitUnicodeString(LPUNICODE_STRING target,LPCWSTR source) { +VOID WINAPI RtlInitUnicodeString(LPUNICODE_STRING target,LPCWSTR source) +{ target->Length = target->MaximumLength = 0; target->Buffer = (LPWSTR)source; if (!source) @@ -371,8 +370,8 @@ /************************************************************************** * RtlFreeUnicodeString [NTDLL] */ -VOID -RtlFreeUnicodeString(LPUNICODE_STRING str) { +VOID WINAPI RtlFreeUnicodeString(LPUNICODE_STRING str) +{ if (str->Buffer) HeapFree(GetProcessHeap(),0,str->Buffer); } @@ -380,8 +379,8 @@ /************************************************************************** * RtlUnicodeToOemN [NTDLL] */ -DWORD /* NTSTATUS */ -RtlUnicodeToOemN(LPSTR oemstr,DWORD oemlen,LPDWORD reslen,LPWSTR unistr,DWORD unilen) { +DWORD /* NTSTATUS */ WINAPI RtlUnicodeToOemN(LPSTR oemstr,DWORD oemlen,LPDWORD reslen,LPWSTR unistr,DWORD unilen) +{ DWORD len; LPSTR x; @@ -398,8 +397,7 @@ /************************************************************************** * RtlUnicodeStringToOemString [NTDLL] */ -DWORD /* NTSTATUS */ -RtlUnicodeStringToOemString(LPANSI_STRING oem,LPUNICODE_STRING uni,BOOL32 alloc) +DWORD /* NTSTATUS */ WINAPI RtlUnicodeStringToOemString(LPANSI_STRING oem,LPUNICODE_STRING uni,BOOL32 alloc) { if (alloc) { oem->Buffer = (LPSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,uni->Length/2)+1; @@ -413,8 +411,7 @@ /************************************************************************** * RtlUnicodeStringToAnsiString [NTDLL] */ -DWORD /* NTSTATUS */ -RtlUnicodeStringToAnsiString(LPUNICODE_STRING uni,LPANSI_STRING oem,BOOL32 alloc) +DWORD /* NTSTATUS */ WINAPI RtlUnicodeStringToAnsiString(LPUNICODE_STRING uni,LPANSI_STRING oem,BOOL32 alloc) { if (alloc) { oem->Buffer = (LPSTR)HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,uni->Length/2)+1; @@ -428,8 +425,8 @@ /************************************************************************** * RtlNtStatusToDosErro [NTDLL] */ -DWORD -RtlNtStatusToDosError(DWORD error) { +DWORD WINAPI RtlNtStatusToDosError(DWORD error) +{ /* FIXME: map STATUS_ to ERROR_ */ return error; } @@ -437,8 +434,8 @@ /************************************************************************** * RtlGetNtProductType [NTDLL] */ -DWORD -RtlGetNtProductType(LPVOID x) { +DWORD WINAPI RtlGetNtProductType(LPVOID x) +{ /* FIXME : find documentation for this one */ return 0; } @@ -446,8 +443,8 @@ /************************************************************************** * RtlUpcaseUnicodeString [NTDLL] */ -DWORD -RtlUpcaseUnicodeString(LPUNICODE_STRING dest,LPUNICODE_STRING src,BOOL32 doalloc) { +DWORD WINAPI RtlUpcaseUnicodeString(LPUNICODE_STRING dest,LPUNICODE_STRING src,BOOL32 doalloc) +{ LPWSTR s,t; DWORD i,len; @@ -471,16 +468,16 @@ /************************************************************************** * RtlxOemStringToUnicodeSize [NTDLL] */ -UINT32 -RtlxOemStringToUnicodeSize(LPSTRING str) { +UINT32 WINAPI RtlxOemStringToUnicodeSize(LPSTRING str) +{ return str->Length*2+2; } /************************************************************************** * RtlxAnsiStringToUnicodeSize [NTDLL] */ -UINT32 -RtlxAnsiStringToUnicodeSize(LPANSI_STRING str) { +UINT32 WINAPI RtlxAnsiStringToUnicodeSize(LPANSI_STRING str) +{ return str->Length*2+2; } @@ -489,10 +486,9 @@ * * FIXME: convert to UNC or whatever is expected here */ -BOOL32 -RtlDosPathNameToNtPathName_U( - LPWSTR from,LPUNICODE_STRING us,DWORD x2,DWORD x3 -) { +BOOL32 WINAPI RtlDosPathNameToNtPathName_U( + LPWSTR from,LPUNICODE_STRING us,DWORD x2,DWORD x3) +{ LPSTR fromA = HEAP_strdupWtoA(GetProcessHeap(),0,from); fprintf(stderr,"RtlDosPathNameToNtPathName_U(%s,%p,%08lx,%08lx)\n", @@ -506,8 +502,8 @@ /************************************************************************** * NtOpenFile [NTDLL] */ -DWORD -NtOpenFile(DWORD x1,DWORD flags,DWORD x3,DWORD x4,DWORD alignment,DWORD x6) { +DWORD WINAPI NtOpenFile(DWORD x1,DWORD flags,DWORD x3,DWORD x4,DWORD alignment,DWORD x6) +{ fprintf(stderr,"NtOpenFile(%08lx,%08lx,%08lx,%08lx,%08lx,%08lx)\n", x1,flags,x3,x4,alignment,x6 );
diff --git a/misc/ole2.c b/misc/ole2.c index 3ca5010..5f65195 100644 --- a/misc/ole2.c +++ b/misc/ole2.c
@@ -15,7 +15,7 @@ /*********************************************************************** * OleBuildVersion [OLE.1] */ -DWORD OleBuildVersion() +DWORD WINAPI OleBuildVersion() { dprintf_ole(stddeb,"OleBuildVersion()\n"); return (rmm<<16)+rup; @@ -24,7 +24,7 @@ /*********************************************************************** * OleInitialize [OLE2.2] */ -HRESULT OleInitialize(LPVOID reserved) +HRESULT WINAPI OleInitialize(LPVOID reserved) { dprintf_ole(stdnimp,"OleInitialize\n"); return S_OK; @@ -33,7 +33,7 @@ /*********************************************************************** * OleUnitialize [OLE2.3] */ -void OleUninitialize() +void WINAPI OleUninitialize() { dprintf_ole(stdnimp,"OleUninitialize()\n"); }
diff --git a/misc/ole2disp.c b/misc/ole2disp.c index 69a08bf..76f6181 100644 --- a/misc/ole2disp.c +++ b/misc/ole2disp.c
@@ -36,7 +36,7 @@ /*********************************************************************** * SysAllocString [OLE2DISP.2] */ -BSTR SysAllocString(char *in) +BSTR WINAPI SysAllocString(char *in) { BSTR out=BSTR_AllocBytes(strlen(in)+1); if(!out)return 0; @@ -47,7 +47,7 @@ /*********************************************************************** * SysReAllocString [OLE2DISP.3] */ -int SysReAllocString(BSTR *old,char *in) +int WINAPI SysReAllocString(BSTR *old,char *in) { BSTR new=SysAllocString(in); BSTR_Free(*old); @@ -58,7 +58,7 @@ /*********************************************************************** * SysAllocStringLen [OLE2DISP.4] */ -BSTR SysAllocStringLen(char *in, int len) +BSTR WINAPI SysAllocStringLen(char *in, int len) { BSTR out=BSTR_AllocBytes(len+1); if(!out)return 0; @@ -69,7 +69,7 @@ /*********************************************************************** * SysReAllocStringLen [OLE2DISP.5] */ -int SysReAllocStringLen(BSTR *old,char *in,int len) +int WINAPI SysReAllocStringLen(BSTR *old,char *in,int len) { BSTR new=SysAllocStringLen(in,len); BSTR_Free(*old); @@ -80,7 +80,7 @@ /*********************************************************************** * SysFreeString [OLE2DISP.6] */ -void SysFreeString(BSTR in) +void WINAPI SysFreeString(BSTR in) { BSTR_Free(in); } @@ -88,7 +88,7 @@ /*********************************************************************** * SysStringLen [OLE2DISP.7] */ -int SysStringLen(BSTR str) +int WINAPI SysStringLen(BSTR str) { return strlen(BSTR_GetAddr(str)); }
diff --git a/misc/ole2nls.c b/misc/ole2nls.c index 53ad95ee..df08c93 100644 --- a/misc/ole2nls.c +++ b/misc/ole2nls.c
@@ -183,7 +183,7 @@ /*********************************************************************** * GetUserDefaultLCID (OLE2NLS.1) */ -DWORD GetUserDefaultLCID() +DWORD WINAPI GetUserDefaultLCID() { /* Default sorting, neutral sublanguage */ switch(Options.language) @@ -224,7 +224,7 @@ /*********************************************************************** * GetSystemDefaultLCID (OLE2NLS.2) */ -DWORD GetSystemDefaultLCID() +DWORD WINAPI GetSystemDefaultLCID() { return GetUserDefaultLCID(); } @@ -232,7 +232,7 @@ /*********************************************************************** * GetUserDefaultLangID (OLE2NLS.3) */ -WORD GetUserDefaultLangID() +WORD WINAPI GetUserDefaultLangID() { return (WORD)GetUserDefaultLCID(); } @@ -240,7 +240,7 @@ /*********************************************************************** * GetSystemDefaultLangID (OLE2NLS.4) */ -WORD GetSystemDefaultLangID() +WORD WINAPI GetSystemDefaultLangID() { return GetUserDefaultLangID(); } @@ -249,12 +249,12 @@ * GetLocaleInfoA (OLE2NLS.5) * Is the last parameter really WORD for Win16? */ -INT16 GetLocaleInfo16(LCID lcid,LCTYPE LCType,LPSTR buf,INT16 len) +INT16 WINAPI GetLocaleInfo16(LCID lcid,LCTYPE LCType,LPSTR buf,INT16 len) { return GetLocaleInfo32A(lcid,LCType,buf,len); } -INT32 GetLocaleInfo32A(LCID lcid,LCTYPE LCType,LPSTR buf,INT32 len) +INT32 WINAPI GetLocaleInfo32A(LCID lcid,LCTYPE LCType,LPSTR buf,INT32 len) { char *retString; int found,i; @@ -1696,7 +1696,7 @@ * GetLocaleInfo32W (KERNEL32.230) * Is the last parameter really WORD for Win16? */ -INT32 GetLocaleInfo32W(LCID lcid,LCTYPE LCType,LPWSTR wbuf,INT32 len) +INT32 WINAPI GetLocaleInfo32W(LCID lcid,LCTYPE LCType,LPWSTR wbuf,INT32 len) { LPSTR abuf = (LPSTR)HeapAlloc(GetProcessHeap(),0,len); @@ -1710,8 +1710,8 @@ /*********************************************************************** * CompareString16 (OLE2NLS.8) */ -UINT16 CompareString16(DWORD lcid,DWORD fdwStyle, - LPCSTR s1,DWORD l1,LPCSTR s2,DWORD l2) +UINT16 WINAPI CompareString16(DWORD lcid,DWORD fdwStyle, + LPCSTR s1,DWORD l1,LPCSTR s2,DWORD l2) { return (UINT16)CompareString32A(lcid,fdwStyle,s1,l1,s2,l2); } @@ -1721,8 +1721,8 @@ * This implementation ignores the locale * FIXME */ -UINT32 CompareString32A(DWORD lcid, DWORD fdwStyle, - LPCSTR s1, DWORD l1, LPCSTR s2,DWORD l2) +UINT32 WINAPI CompareString32A(DWORD lcid, DWORD fdwStyle, + LPCSTR s1, DWORD l1, LPCSTR s2,DWORD l2) { int len,ret; if(fdwStyle & NORM_IGNORENONSPACE) @@ -1751,8 +1751,8 @@ * This implementation ignores the locale * FIXME */ -UINT32 CompareString32W(DWORD lcid, DWORD fdwStyle, - LPCWSTR s1, DWORD l1, LPCWSTR s2,DWORD l2) +UINT32 WINAPI CompareString32W(DWORD lcid, DWORD fdwStyle, + LPCWSTR s1, DWORD l1, LPCWSTR s2,DWORD l2) { int len,ret; if(fdwStyle & NORM_IGNORENONSPACE) @@ -1778,7 +1778,7 @@ /*********************************************************************** * SetLocalInfoA (KERNEL32.499) */ -BOOL16 SetLocaleInfoA(DWORD lcid, DWORD lctype, LPCSTR data) +BOOL16 WINAPI SetLocaleInfoA(DWORD lcid, DWORD lctype, LPCSTR data) { fprintf(stdnimp,"SetLocaleInfoA(%ld,%ld,%s)\n",lcid,lctype,data); return TRUE; @@ -1787,7 +1787,8 @@ /*********************************************************************** * IsValidLocale (KERNEL32.361) */ -BOOL32 IsValidLocale(LCID lcid,DWORD flags) { +BOOL32 WINAPI IsValidLocale(LCID lcid,DWORD flags) +{ /* we support ANY language. Well, at least say that...*/ return TRUE; } @@ -1795,7 +1796,8 @@ /*********************************************************************** * EnumSystemLocales32W (KERNEL32.93) */ -BOOL32 EnumSystemLocales32W( LOCALE_ENUMPROC32W lpfnLocaleEnum, DWORD flags ) +BOOL32 WINAPI EnumSystemLocales32W( LOCALE_ENUMPROC32W lpfnLocaleEnum, + DWORD flags ) { int i; BOOL32 ret; @@ -1838,8 +1840,9 @@ /*********************************************************************** * EnumSystemLocales32A (KERNEL32.92) */ -BOOL32 -EnumSystemLocales32A(LOCALE_ENUMPROC32A lpfnLocaleEnum,DWORD flags) { +BOOL32 WINAPI EnumSystemLocales32A(LOCALE_ENUMPROC32A lpfnLocaleEnum, + DWORD flags) +{ int i; CHAR buffer[200]; HKEY xhkey; @@ -1872,22 +1875,25 @@ /*********************************************************************** * GetStringTypeA (OLE2NLS.7) */ -BOOL16 -GetStringType16(LCID locale,DWORD dwInfoType,LPCSTR src,INT16 cchSrc,LPWORD chartype) { +BOOL16 WINAPI GetStringType16(LCID locale,DWORD dwInfoType,LPCSTR src, + INT16 cchSrc,LPWORD chartype) +{ return GetStringTypeEx32A(locale,dwInfoType,src,cchSrc,chartype); } /*********************************************************************** * GetStringTypeA (KERNEL32.277) */ -BOOL32 -GetStringType32A(LCID locale,DWORD dwInfoType,LPCSTR src,INT32 cchSrc,LPWORD chartype) { +BOOL32 WINAPI GetStringType32A(LCID locale,DWORD dwInfoType,LPCSTR src, + INT32 cchSrc,LPWORD chartype) +{ return GetStringTypeEx32A(locale,dwInfoType,src,cchSrc,chartype); } /*********************************************************************** * GetStringTypeExA (KERNEL32.276) */ -BOOL32 -GetStringTypeEx32A(LCID locale,DWORD dwInfoType,LPCSTR src,INT32 cchSrc,LPWORD chartype) { +BOOL32 WINAPI GetStringTypeEx32A(LCID locale,DWORD dwInfoType,LPCSTR src, + INT32 cchSrc,LPWORD chartype) +{ int i; switch (dwInfoType) { @@ -1922,8 +1928,9 @@ * GetStringTypeW (KERNEL32.279) * Yes, this is missing LCID locale. MS fault. */ -BOOL32 -GetStringType32W(DWORD dwInfoType,LPCWSTR src,INT32 cchSrc,LPWORD chartype) { +BOOL32 WINAPI GetStringType32W(DWORD dwInfoType,LPCWSTR src,INT32 cchSrc, + LPWORD chartype) +{ return GetStringTypeEx32W(0/*defaultlocale*/,dwInfoType,src,cchSrc,chartype); } @@ -1931,8 +1938,9 @@ * GetStringTypeW (KERNEL32.278) * FIXME: unicode chars are assumed chars */ -BOOL32 -GetStringTypeEx32W(LCID locale,DWORD dwInfoType,LPCWSTR src,INT32 cchSrc,LPWORD chartype) { +BOOL32 WINAPI GetStringTypeEx32W(LCID locale,DWORD dwInfoType,LPCWSTR src, + INT32 cchSrc,LPWORD chartype) +{ int i; switch (dwInfoType) { @@ -1955,15 +1963,17 @@ if (isspace(src[i])) chartype[i]|=C1_SPACE; if (ispunct(src[i])) chartype[i]|=C1_PUNCT; if (iscntrl(src[i])) chartype[i]|=C1_CNTRL; - if (isblank(src[i])) chartype[i]|=C1_BLANK; +/* FIXME: isblank() is a GNU extension */ +/* if (isblank(src[i])) chartype[i]|=C1_BLANK; */ + if ((src[i] == ' ') || (src[i] == '\t')) chartype[i]|=C1_BLANK; /* C1_XDIGIT */ } return TRUE; } /* VerLanguageName [VER.10] */ -DWORD -VerLanguageName16(UINT16 langid,LPSTR langname,UINT16 langnamelen) { +DWORD WINAPI VerLanguageName16(UINT16 langid,LPSTR langname,UINT16 langnamelen) +{ int i; char *buf; @@ -1987,14 +1997,16 @@ } /* VerLanguageNameA [VERSION.9] */ -DWORD -VerLanguageName32A(UINT32 langid,LPSTR langname,UINT32 langnamelen) { +DWORD WINAPI VerLanguageName32A(UINT32 langid,LPSTR langname, + UINT32 langnamelen) +{ return VerLanguageName16(langid,langname,langnamelen); } /* VerLanguageNameW [VERSION.10] */ -DWORD -VerLanguageName32W(UINT32 langid,LPWSTR langname,UINT32 langnamelen) { +DWORD WINAPI VerLanguageName32W(UINT32 langid,LPWSTR langname, + UINT32 langnamelen) +{ int i; char buffer[80]; LPWSTR keyname;
diff --git a/misc/olecli.c b/misc/olecli.c index 2c7ab88..bdc2aae 100644 --- a/misc/olecli.c +++ b/misc/olecli.c
@@ -18,8 +18,8 @@ /*********************************************************************** * OleRegisterClientDoc */ -OLESTATUS OleRegisterClientDoc( LPCSTR classname, LPCSTR docname, - LONG reserved, LHCLIENTDOC *hRet ) +OLESTATUS WINAPI OleRegisterClientDoc( LPCSTR classname, LPCSTR docname, + LONG reserved, LHCLIENTDOC *hRet ) { dprintf_ole(stdnimp,"OleRegisterClientDoc:%s %s\n",classname,docname); *hRet=++OLE_current_handle; @@ -29,7 +29,7 @@ /*********************************************************************** * OleRenameClientDoc */ -OLESTATUS OleRenameClientDoc(LHCLIENTDOC hDoc, LPCSTR newName) +OLESTATUS WINAPI OleRenameClientDoc(LHCLIENTDOC hDoc, LPCSTR newName) { dprintf_ole(stdnimp,"OleRenameClientDoc: %ld %s\n",hDoc, newName); return OLE_OK; @@ -38,7 +38,7 @@ /*********************************************************************** * OleRevokeClientDoc */ -OLESTATUS OleRevokeClientDoc(LHCLIENTDOC hServerDoc) +OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC hServerDoc) { dprintf_ole(stdnimp,"OleRevokeClientDoc:%ld\n",hServerDoc); return OLE_OK; @@ -47,7 +47,7 @@ /*********************************************************************** * OleIsDcMeta */ -BOOL16 OleIsDcMeta(HDC16 hdc) +BOOL16 WINAPI OleIsDcMeta(HDC16 hdc) { dprintf_ole(stddeb,"OleIsDCMeta(%04x)\n",hdc); return GDI_GetObjPtr( hdc, METAFILE_DC_MAGIC ) != 0;
diff --git a/misc/olesvr.c b/misc/olesvr.c index b9e41ff..0ebc3e2 100644 --- a/misc/olesvr.c +++ b/misc/olesvr.c
@@ -17,9 +17,9 @@ /*********************************************************************** * OleRegisterServer */ -OLESTATUS OleRegisterServer( LPCSTR name, LPOLESERVER serverStruct, - LHSERVER *hRet, HINSTANCE16 hServer, - OLE_SERVER_USE use ) +OLESTATUS WINAPI OleRegisterServer( LPCSTR name, LPOLESERVER serverStruct, + LHSERVER *hRet, HINSTANCE16 hServer, + OLE_SERVER_USE use ) { dprintf_ole(stdnimp,"OleRegisterServer:%s\n",name); *hRet=++OLE_current_handle; @@ -30,7 +30,7 @@ /*********************************************************************** * OleBlockServer */ -OLESTATUS OleBlockServer(LHSERVER hServer) +OLESTATUS WINAPI OleBlockServer(LHSERVER hServer) { fprintf(stdnimp,"OleBlockServer:%ld\n",hServer); return OLE_OK; @@ -39,7 +39,7 @@ /*********************************************************************** * OleUnblockServer */ -OLESTATUS OleUnblockServer(LHSERVER hServer, BOOL16 *block) +OLESTATUS WINAPI OleUnblockServer(LHSERVER hServer, BOOL16 *block) { fprintf(stdnimp,"OleUnblockServer:%ld\n",hServer); /* no more blocked messages :) */ @@ -50,8 +50,9 @@ /*********************************************************************** * OleRegisterServerDoc */ -OLESTATUS OleRegisterServerDoc( LHSERVER hServer, LPCSTR docname, - LPOLESERVERDOC document, LHSERVERDOC *hRet) +OLESTATUS WINAPI OleRegisterServerDoc( LHSERVER hServer, LPCSTR docname, + LPOLESERVERDOC document, + LHSERVERDOC *hRet) { dprintf_ole(stdnimp,"OleRegisterServerDoc:%ld,%s\n", hServer, docname); *hRet=++OLE_current_handle; @@ -61,7 +62,7 @@ /*********************************************************************** * OleRevokeServerDoc */ -OLESTATUS OleRevokeServerDoc(LHSERVERDOC hServerDoc) +OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC hServerDoc) { dprintf_ole(stdnimp,"OleRevokeServerDoc:%ld\n",hServerDoc); return OLE_OK; @@ -70,7 +71,7 @@ /*********************************************************************** * OleRevokeServer */ -OLESTATUS OleRevokeServer(LHSERVER hServer) +OLESTATUS WINAPI OleRevokeServer(LHSERVER hServer) { dprintf_ole(stdnimp,"OleRevokeServer:%ld\n",hServer); return OLE_OK;
diff --git a/misc/printdrv.c b/misc/printdrv.c index df0bb96..2a6cc30 100644 --- a/misc/printdrv.c +++ b/misc/printdrv.c
@@ -13,7 +13,7 @@ #include "winerror.h" -INT16 StartDoc16( HDC16 hdc, const DOCINFO16 *lpdoc ) +INT16 WINAPI StartDoc16( HDC16 hdc, const DOCINFO16 *lpdoc ) { INT16 retVal; printf("In startdoc16(%p)\n", lpdoc ); @@ -28,17 +28,16 @@ return retVal; } -INT16 -EndDoc16(HDC16 hdc) +INT16 WINAPI EndDoc16(HDC16 hdc) { return Escape16(hdc, ENDDOC, 0, 0, 0); } -DWORD -DrvGetPrinterData(LPSTR lpPrinter, LPSTR lpProfile, LPDWORD lpType, - LPBYTE lpPrinterData, int cbData, LPDWORD lpNeeded) +DWORD WINAPI DrvGetPrinterData(LPSTR lpPrinter, LPSTR lpProfile, + LPDWORD lpType, LPBYTE lpPrinterData, + int cbData, LPDWORD lpNeeded) { fprintf(stderr,"In DrvGetPrinterData "); if (HIWORD(lpPrinter)) @@ -55,9 +54,9 @@ -DWORD -DrvSetPrinterData(LPSTR lpPrinter, LPSTR lpProfile, LPDWORD lpType, - LPBYTE lpPrinterData, DWORD dwSize) +DWORD WINAPI DrvSetPrinterData(LPSTR lpPrinter, LPSTR lpProfile, + LPDWORD lpType, LPBYTE lpPrinterData, + DWORD dwSize) { fprintf(stderr,"In DrvSetPrinterData "); if (HIWORD(lpPrinter)) @@ -73,4 +72,20 @@ } +INT32 WINAPI DeviceCapabilities32A(LPCSTR printer,LPCSTR target,WORD z, + LPSTR a,LPDEVMODE32A b) +{ + fprintf(stderr,"DeviceCapabilitiesA(%s,%s,%d,%p,%p)\n",printer,target,z,a,b); + return 1; +} + +LONG WINAPI DocumentProperties32A(HWND32 hWnd,HANDLE32 hPrinter, + LPSTR pDeviceName, LPDEVMODE32A pDevModeOutput, + LPDEVMODE32A pDevModeInput,DWORD fMode ) +{ + fprintf(stderr,"DocumentPropertiesA(%d,%d,%s,%p,%p,%d)\n", + hWnd,hPrinter,pDeviceName,pDevModeOutput,pDevModeInput,fMode + ); + return 1; +}
diff --git a/misc/registry.c b/misc/registry.c index 791e5db..56dea7d 100644 --- a/misc/registry.c +++ b/misc/registry.c
@@ -543,7 +543,7 @@ lplpkey= &(lpkey->nextsub); lpxkey = *lplpkey; while (lpxkey) { - if (!lstrcmp32W(lpxkey->keyname,keyname)) + if (!lstrcmpi32W(lpxkey->keyname,keyname)) break; lplpkey = &(lpxkey->next); lpxkey = *lplpkey; @@ -573,7 +573,7 @@ break; } else { if ( val->name!=NULL && - !lstrcmp32W(val->name,name) + !lstrcmpi32W(val->name,name) ) break; } @@ -1625,7 +1625,7 @@ */ /* RegOpenKeyExW [ADVAPI32.150] */ -DWORD RegOpenKeyEx32W( +DWORD WINAPI RegOpenKeyEx32W( HKEY hkey, LPCWSTR lpszSubKey, DWORD dwReserved, @@ -1654,7 +1654,7 @@ while (wps[i]) { lpxkey=lpNextKey->nextsub; while (lpxkey) { - if (!lstrcmp32W(wps[i],lpxkey->keyname)) + if (!lstrcmpi32W(wps[i],lpxkey->keyname)) break; lpxkey=lpxkey->next; } @@ -1672,7 +1672,7 @@ } /* RegOpenKeyW [ADVAPI32.151] */ -DWORD RegOpenKey32W( +DWORD WINAPI RegOpenKey32W( HKEY hkey, LPCWSTR lpszSubKey, LPHKEY retkey @@ -1685,7 +1685,7 @@ /* RegOpenKeyExA [ADVAPI32.149] */ -DWORD RegOpenKeyEx32A( +DWORD WINAPI RegOpenKeyEx32A( HKEY hkey, LPCSTR lpszSubKey, DWORD dwReserved, @@ -1709,7 +1709,7 @@ } /* RegOpenKeyA [ADVAPI32.148] */ -DWORD RegOpenKey32A( +DWORD WINAPI RegOpenKey32A( HKEY hkey, LPCSTR lpszSubKey, LPHKEY retkey @@ -1721,7 +1721,7 @@ } /* RegOpenKey [SHELL.1] [KERNEL.217] */ -DWORD RegOpenKey16( +DWORD WINAPI RegOpenKey16( HKEY hkey, LPCSTR lpszSubKey, LPHKEY retkey @@ -1746,7 +1746,7 @@ */ /* RegCreateKeyExW [ADVAPI32.131] */ -DWORD RegCreateKeyEx32W( +DWORD WINAPI RegCreateKeyEx32W( HKEY hkey, LPCWSTR lpszSubKey, DWORD dwReserved, @@ -1790,7 +1790,7 @@ while (wps[i]) { lpxkey=lpNextKey->nextsub; while (lpxkey) { - if (!lstrcmp32W(wps[i],lpxkey->keyname)) + if (!lstrcmpi32W(wps[i],lpxkey->keyname)) break; lpxkey=lpxkey->next; } @@ -1851,7 +1851,7 @@ } /* RegCreateKeyW [ADVAPI32.132] */ -DWORD RegCreateKey32W( +DWORD WINAPI RegCreateKey32W( HKEY hkey, LPCWSTR lpszSubKey, LPHKEY retkey @@ -1876,7 +1876,7 @@ } /* RegCreateKeyExA [ADVAPI32.130] */ -DWORD RegCreateKeyEx32A( +DWORD WINAPI RegCreateKeyEx32A( HKEY hkey, LPCSTR lpszSubKey, DWORD dwReserved, @@ -1928,7 +1928,7 @@ } /* RegCreateKeyA [ADVAPI32.129] */ -DWORD RegCreateKey32A( +DWORD WINAPI RegCreateKey32A( HKEY hkey, LPCSTR lpszSubKey, LPHKEY retkey @@ -1952,7 +1952,7 @@ } /* RegCreateKey [SHELL.2] [KERNEL.218] */ -DWORD RegCreateKey16( +DWORD WINAPI RegCreateKey16( HKEY hkey, LPCSTR lpszSubKey, LPHKEY retkey @@ -1976,7 +1976,7 @@ */ /* RegQueryValueExW [ADVAPI32.158] */ -DWORD RegQueryValueEx32W( +DWORD WINAPI RegQueryValueEx32W( HKEY hkey, LPWSTR lpszValueName, LPDWORD lpdwReserved, @@ -2002,7 +2002,7 @@ } else { for (i=0;i<lpkey->nrofvalues;i++) if ( lpkey->values[i].name && - !lstrcmp32W(lpszValueName,lpkey->values[i].name) + !lstrcmpi32W(lpszValueName,lpkey->values[i].name) ) break; } @@ -2038,7 +2038,7 @@ } /* RegQueryValueW [ADVAPI32.159] */ -DWORD RegQueryValue32W( +DWORD WINAPI RegQueryValue32W( HKEY hkey, LPWSTR lpszSubKey, LPWSTR lpszData, @@ -2075,7 +2075,7 @@ } /* RegQueryValueExA [ADVAPI32.157] */ -DWORD RegQueryValueEx32A( +DWORD WINAPI RegQueryValueEx32A( HKEY hkey, LPSTR lpszValueName, LPDWORD lpdwReserved, @@ -2151,7 +2151,7 @@ } /* RegQueryValueEx [KERNEL.225] */ -DWORD RegQueryValueEx16( +DWORD WINAPI RegQueryValueEx16( HKEY hkey, LPSTR lpszValueName, LPDWORD lpdwReserved, @@ -2174,7 +2174,7 @@ } /* RegQueryValueA [ADVAPI32.156] */ -DWORD RegQueryValue32A( +DWORD WINAPI RegQueryValue32A( HKEY hkey, LPSTR lpszSubKey, LPSTR lpszData, @@ -2211,7 +2211,7 @@ } /* RegQueryValue [SHELL.6] [KERNEL.224] */ -DWORD RegQueryValue16( +DWORD WINAPI RegQueryValue16( HKEY hkey, LPSTR lpszSubKey, LPSTR lpszData, @@ -2238,7 +2238,7 @@ */ /* RegSetValueExW [ADVAPI32.170] */ -DWORD RegSetValueEx32W( +DWORD WINAPI RegSetValueEx32W( HKEY hkey, LPWSTR lpszValueName, DWORD dwReserved, @@ -2266,7 +2266,7 @@ } else { for (i=0;i<lpkey->nrofvalues;i++) if ( lpkey->values[i].name && - !lstrcmp32W(lpszValueName,lpkey->values[i].name) + !lstrcmpi32W(lpszValueName,lpkey->values[i].name) ) break; } @@ -2294,7 +2294,7 @@ } /* RegSetValueExA [ADVAPI32.169] */ -DWORD RegSetValueEx32A( +DWORD WINAPI RegSetValueEx32A( HKEY hkey, LPSTR lpszValueName, DWORD dwReserved, @@ -2327,7 +2327,7 @@ } /* RegSetValueEx [KERNEL.226] */ -DWORD RegSetValueEx16( +DWORD WINAPI RegSetValueEx16( HKEY hkey, LPSTR lpszValueName, DWORD dwReserved, @@ -2342,7 +2342,7 @@ } /* RegSetValueW [ADVAPI32.171] */ -DWORD RegSetValue32W( +DWORD WINAPI RegSetValue32W( HKEY hkey, LPCWSTR lpszSubKey, DWORD dwType, @@ -2378,7 +2378,7 @@ } /* RegSetValueA [ADVAPI32.168] */ -DWORD RegSetValue32A( +DWORD WINAPI RegSetValue32A( HKEY hkey, LPCSTR lpszSubKey, DWORD dwType, @@ -2411,7 +2411,7 @@ } /* RegSetValue [KERNEL.221] [SHELL.5] */ -DWORD RegSetValue16( +DWORD WINAPI RegSetValue16( HKEY hkey, LPCSTR lpszSubKey, DWORD dwType, @@ -2435,7 +2435,7 @@ */ /* RegEnumKeyExW [ADVAPI32.139] */ -DWORD RegEnumKeyEx32W( +DWORD WINAPI RegEnumKeyEx32W( HKEY hkey, DWORD iSubkey, LPWSTR lpszName, @@ -2475,7 +2475,7 @@ } /* RegEnumKeyW [ADVAPI32.140] */ -DWORD RegEnumKey32W( +DWORD WINAPI RegEnumKey32W( HKEY hkey, DWORD iSubkey, LPWSTR lpszName, @@ -2489,7 +2489,7 @@ return RegEnumKeyEx32W(hkey,iSubkey,lpszName,&lpcchName,NULL,NULL,NULL,&ft); } /* RegEnumKeyExA [ADVAPI32.138] */ -DWORD RegEnumKeyEx32A( +DWORD WINAPI RegEnumKeyEx32A( HKEY hkey, DWORD iSubkey, LPSTR lpszName, @@ -2546,7 +2546,7 @@ } /* RegEnumKeyA [ADVAPI32.137] */ -DWORD RegEnumKey32A( +DWORD WINAPI RegEnumKey32A( HKEY hkey, DWORD iSubkey, LPSTR lpszName, @@ -2570,7 +2570,7 @@ } /* RegEnumKey [SHELL.7] [KERNEL.216] */ -DWORD RegEnumKey16( +DWORD WINAPI RegEnumKey16( HKEY hkey, DWORD iSubkey, LPSTR lpszName, @@ -2590,7 +2590,7 @@ */ /* RegEnumValueW [ADVAPI32.142] */ -DWORD RegEnumValue32W( +DWORD WINAPI RegEnumValue32W( HKEY hkey, DWORD iValue, LPWSTR lpszValue, @@ -2636,7 +2636,7 @@ } /* RegEnumValueA [ADVAPI32.141] */ -DWORD RegEnumValue32A( +DWORD WINAPI RegEnumValue32A( HKEY hkey, DWORD iValue, LPSTR lpszValue, @@ -2693,7 +2693,7 @@ } /* RegEnumValue [KERNEL.223] */ -DWORD RegEnumValue16( +DWORD WINAPI RegEnumValue16( HKEY hkey, DWORD iValue, LPSTR lpszValue, @@ -2722,7 +2722,7 @@ * Close registry key */ /* RegCloseKey [SHELL.3] [KERNEL.220] [ADVAPI32.126] */ -DWORD RegCloseKey(HKEY hkey) { +DWORD WINAPI RegCloseKey(HKEY hkey) { dprintf_reg(stddeb,"RegCloseKey(%x)\n",hkey); remove_handle(hkey); return ERROR_SUCCESS; @@ -2734,7 +2734,7 @@ * RegDeleteKey16 -> RegDeleteKey32A -> RegDeleteKey32W */ /* RegDeleteKeyW [ADVAPI32.134] */ -DWORD RegDeleteKey32W(HKEY hkey,LPWSTR lpszSubKey) { +DWORD WINAPI RegDeleteKey32W(HKEY hkey,LPWSTR lpszSubKey) { LPKEYSTRUCT *lplpPrevKey,lpNextKey,lpxkey; LPWSTR *wps; int wpc,i; @@ -2754,7 +2754,7 @@ while (i<wpc-1) { lpxkey=lpNextKey->nextsub; while (lpxkey) { - if (!lstrcmp32W(wps[i],lpxkey->keyname)) + if (!lstrcmpi32W(wps[i],lpxkey->keyname)) break; lpxkey=lpxkey->next; } @@ -2769,7 +2769,7 @@ lpxkey = lpNextKey->nextsub; lplpPrevKey = &(lpNextKey->nextsub); while (lpxkey) { - if (!lstrcmp32W(wps[i],lpxkey->keyname)) + if (!lstrcmpi32W(wps[i],lpxkey->keyname)) break; lplpPrevKey = &(lpxkey->next); lpxkey = lpxkey->next; @@ -2790,7 +2790,7 @@ } /* RegDeleteKeyA [ADVAPI32.133] */ -DWORD RegDeleteKey32A(HKEY hkey,LPCSTR lpszSubKey) { +DWORD WINAPI RegDeleteKey32A(HKEY hkey,LPCSTR lpszSubKey) { LPWSTR lpszSubKeyW; DWORD ret; @@ -2804,7 +2804,7 @@ } /* RegDeleteKey [SHELL.4] [KERNEL.219] */ -DWORD RegDeleteKey16(HKEY hkey,LPCSTR lpszSubKey) { +DWORD WINAPI RegDeleteKey16(HKEY hkey,LPCSTR lpszSubKey) { dprintf_reg(stddeb,"RegDeleteKey16(%x,%s)\n", hkey,lpszSubKey ); @@ -2818,7 +2818,8 @@ * RegDeleteValue16 -> RegDeleteValue32A -> RegDeleteValue32W */ /* RegDeleteValueW [ADVAPI32.136] */ -DWORD RegDeleteValue32W(HKEY hkey,LPWSTR lpszValue) { +DWORD WINAPI RegDeleteValue32W(HKEY hkey,LPWSTR lpszValue) +{ DWORD i; LPKEYSTRUCT lpkey; LPKEYVALUE val; @@ -2832,7 +2833,7 @@ if (lpszValue) { for (i=0;i<lpkey->nrofvalues;i++) if ( lpkey->values[i].name && - !lstrcmp32W(lpkey->values[i].name,lpszValue) + !lstrcmpi32W(lpkey->values[i].name,lpszValue) ) break; } else { @@ -2859,7 +2860,8 @@ } /* RegDeleteValueA [ADVAPI32.135] */ -DWORD RegDeleteValue32A(HKEY hkey,LPSTR lpszValue) { +DWORD WINAPI RegDeleteValue32A(HKEY hkey,LPSTR lpszValue) +{ LPWSTR lpszValueW; DWORD ret; @@ -2871,13 +2873,15 @@ } /* RegDeleteValue [KERNEL.222] */ -DWORD RegDeleteValue16(HKEY hkey,LPSTR lpszValue) { +DWORD WINAPI RegDeleteValue16(HKEY hkey,LPSTR lpszValue) +{ dprintf_reg( stddeb,"RegDeleteValue16(%x,%s)\n", hkey,lpszValue ); return RegDeleteValue32A(hkey,lpszValue); } /* RegFlushKey [ADVAPI32.143] [KERNEL.227] */ -DWORD RegFlushKey(HKEY hkey) { +DWORD WINAPI RegFlushKey(HKEY hkey) +{ dprintf_reg(stddeb,"RegFlushKey(%x), STUB.\n",hkey); return SHELL_ERROR_SUCCESS; } @@ -2885,7 +2889,7 @@ /* FIXME: lpcchXXXX ... is this counting in WCHARS or in BYTEs ?? */ /* RegQueryInfoKeyW [ADVAPI32.153] */ -DWORD RegQueryInfoKey32W( +DWORD WINAPI RegQueryInfoKey32W( HKEY hkey, LPWSTR lpszClass, LPDWORD lpcchClass, @@ -2961,7 +2965,7 @@ } /* RegQueryInfoKeyA [ADVAPI32.152] */ -DWORD RegQueryInfoKey32A( +DWORD WINAPI RegQueryInfoKey32A( HKEY hkey, LPSTR lpszClass, LPDWORD lpcchClass, @@ -3014,7 +3018,8 @@ return ret; } /* RegConnectRegistryA [ADVAPI32.127] */ -DWORD RegConnectRegistry32A(LPCSTR machine,HKEY hkey,LPHKEY reskey) { +DWORD WINAPI RegConnectRegistry32A(LPCSTR machine,HKEY hkey,LPHKEY reskey) +{ fprintf(stderr,"RegConnectRegistry32A(%s,%08x,%p), STUB.\n", machine,hkey,reskey );
diff --git a/misc/shell.c b/misc/shell.c index 041fc8b..b3a9ffe 100644 --- a/misc/shell.c +++ b/misc/shell.c
@@ -62,7 +62,7 @@ /************************************************************************* * DragAcceptFiles [SHELL.9] */ -void DragAcceptFiles(HWND16 hWnd, BOOL16 b) +void WINAPI DragAcceptFiles(HWND16 hWnd, BOOL16 b) { WND* wnd = WIN_FindWndPtr(hWnd); @@ -75,7 +75,8 @@ /************************************************************************* * DragQueryFile [SHELL.11] */ -UINT16 DragQueryFile(HDROP16 hDrop, WORD wFile, LPSTR lpszFile, WORD wLength) +UINT16 WINAPI DragQueryFile(HDROP16 hDrop, WORD wFile, LPSTR lpszFile, + WORD wLength) { /* hDrop is a global memory block allocated with GMEM_SHARE * with DROPFILESTRUCT as a header and filenames following @@ -116,7 +117,7 @@ /************************************************************************* * DragFinish [SHELL.12] */ -void DragFinish(HDROP16 h) +void WINAPI DragFinish(HDROP16 h) { GlobalFree16((HGLOBAL16)h); } @@ -125,7 +126,7 @@ /************************************************************************* * DragQueryPoint [SHELL.13] */ -BOOL16 DragQueryPoint(HDROP16 hDrop, POINT16 *p) +BOOL16 WINAPI DragQueryPoint(HDROP16 hDrop, POINT16 *p) { LPDROPFILESTRUCT lpDropFileStruct; BOOL16 bRet; @@ -143,8 +144,7 @@ * SHELL_FindExecutable * Utility for code sharing between FindExecutable and ShellExecute */ -static HINSTANCE16 SHELL_FindExecutable( LPCSTR lpFile, - LPCSTR lpDirectory, +static HINSTANCE32 SHELL_FindExecutable( LPCSTR lpFile, LPCSTR lpOperation, LPSTR lpResult) { @@ -155,15 +155,13 @@ char command[256]; /* command from registry */ LONG commandlen=256; /* This is the most DOS can handle :) */ char buffer[256]; /* Used to GetProfileString */ - HINSTANCE16 retval=31; /* default - 'No association was found' */ + HINSTANCE32 retval=31; /* default - 'No association was found' */ char *tok; /* token pointer */ int i; /* random counter */ char xlpFile[256]; /* result of SearchPath */ - dprintf_exec(stddeb, "SHELL_FindExecutable: File %s, Dir %s\n", - (lpFile != NULL?lpFile:"-"), - (lpDirectory != NULL?lpDirectory:"-")); - + dprintf_exec(stddeb, "SHELL_FindExecutable: %s\n", + (lpFile != NULL?lpFile:"-") ); lpResult[0]='\0'; /* Start off with an empty return string */ /* trap NULL parameters on entry */ @@ -172,7 +170,8 @@ /* FIXME - should throw a warning, perhaps! */ return 2; /* File not found. Close enough, I guess. */ } - if (SearchPath32A(lpDirectory,lpFile,".exe",sizeof(xlpFile),xlpFile,NULL)) + + if (SearchPath32A( NULL, lpFile,".exe",sizeof(xlpFile),xlpFile,NULL)) lpFile = xlpFile; /* First thing we need is the file's extension */ @@ -215,7 +214,7 @@ * attached */ dprintf_exec(stddeb, "SHELL_FindExecutable: found %s\n", lpResult); - return 33; + return 33; /* Greater than 32 to indicate success FIXME According to the * docs, I should be returning a handle for the @@ -292,11 +291,12 @@ /************************************************************************* * ShellExecute16 [SHELL.20] */ -HINSTANCE16 ShellExecute16( HWND16 hWnd, LPCSTR lpOperation, LPCSTR lpFile, - LPCSTR lpParameters, LPCSTR lpDirectory, - INT16 iShowCmd ) +HINSTANCE16 WINAPI ShellExecute16( HWND16 hWnd, LPCSTR lpOperation, + LPCSTR lpFile, LPCSTR lpParameters, + LPCSTR lpDirectory, INT16 iShowCmd ) { HINSTANCE16 retval=31; + char old_dir[1024]; char cmd[256]; dprintf_exec(stddeb, "ShellExecute(%04x,'%s','%s','%s','%s',%x)\n", @@ -308,30 +308,36 @@ if (lpOperation==NULL) /* default is open */ lpOperation="open"; - retval = SHELL_FindExecutable( lpFile, lpDirectory, lpOperation, cmd ); - - if ( retval <= 32 ) + if (lpDirectory) { - return retval; + GetCurrentDirectory32A( sizeof(old_dir), old_dir ); + SetCurrentDirectory32A( lpDirectory ); } - if (lpParameters) - { - strcat(cmd," "); - strcat(cmd,lpParameters); - } + retval = SHELL_FindExecutable( lpFile, lpOperation, cmd ); - dprintf_exec(stddeb,"ShellExecute:starting %s\n",cmd); - return WinExec32(cmd,iShowCmd); + if (retval > 32) /* Found */ + { + if (lpParameters) + { + strcat(cmd," "); + strcat(cmd,lpParameters); + } + + dprintf_exec(stddeb,"ShellExecute:starting %s\n",cmd); + retval = WinExec32( cmd, iShowCmd ); + } + if (lpDirectory) SetCurrentDirectory32A( old_dir ); + return retval; } /************************************************************************* * ShellExecute32A (SHELL32.84) */ -HINSTANCE32 ShellExecute32A( HWND32 hWnd, LPCSTR lpOperation, LPCSTR lpFile, - LPCSTR lpParameters, LPCSTR lpDirectory, - INT32 iShowCmd ) +HINSTANCE32 WINAPI ShellExecute32A( HWND32 hWnd, LPCSTR lpOperation, + LPCSTR lpFile, LPCSTR lpParameters, + LPCSTR lpDirectory, INT32 iShowCmd ) { return ShellExecute16( hWnd, lpOperation, lpFile, lpParameters, lpDirectory, iShowCmd ); @@ -341,10 +347,20 @@ /************************************************************************* * FindExecutable16 (SHELL.21) */ -HINSTANCE16 FindExecutable16( LPCSTR lpFile, LPCSTR lpDirectory, - LPSTR lpResult ) +HINSTANCE16 WINAPI FindExecutable16( LPCSTR lpFile, LPCSTR lpDirectory, + LPSTR lpResult ) { - HINSTANCE16 retval=31; /* default - 'No association was found' */ + return (HINSTANCE16)FindExecutable32A( lpFile, lpDirectory, lpResult ); +} + +/************************************************************************* + * FindExecutable32A (SHELL32.184) + */ +HINSTANCE32 WINAPI FindExecutable32A( LPCSTR lpFile, LPCSTR lpDirectory, + LPSTR lpResult ) +{ + HINSTANCE32 retval=31; /* default - 'No association was found' */ + char old_dir[1024]; dprintf_exec(stddeb, "FindExecutable: File %s, Dir %s\n", (lpFile != NULL?lpFile:"-"), @@ -359,10 +375,16 @@ return 2; /* File not found. Close enough, I guess. */ } - retval = SHELL_FindExecutable( lpFile, lpDirectory, "open", - lpResult ); + if (lpDirectory) + { + GetCurrentDirectory32A( sizeof(old_dir), old_dir ); + SetCurrentDirectory32A( lpDirectory ); + } + + retval = SHELL_FindExecutable( lpFile, "open", lpResult ); dprintf_exec(stddeb, "FindExecutable: returning %s\n", lpResult); + if (lpDirectory) SetCurrentDirectory32A( old_dir ); return retval; } @@ -377,8 +399,8 @@ /************************************************************************* * AboutDlgProc32 (not an exported API function) */ -LRESULT AboutDlgProc32( HWND32 hWnd, UINT32 msg, WPARAM32 wParam, - LPARAM lParam ) +LRESULT WINAPI AboutDlgProc32( HWND32 hWnd, UINT32 msg, WPARAM32 wParam, + LPARAM lParam ) { char Template[512], AppTitle[512]; @@ -413,8 +435,8 @@ /************************************************************************* * AboutDlgProc16 (SHELL.33) */ -LRESULT AboutDlgProc16( HWND16 hWnd, UINT16 msg, WPARAM16 wParam, - LPARAM lParam ) +LRESULT WINAPI AboutDlgProc16( HWND16 hWnd, UINT16 msg, WPARAM16 wParam, + LPARAM lParam ) { return AboutDlgProc32( hWnd, msg, wParam, lParam ); } @@ -423,8 +445,8 @@ /************************************************************************* * ShellAbout16 (SHELL.22) */ -BOOL16 ShellAbout16( HWND16 hWnd, LPCSTR szApp, LPCSTR szOtherStuff, - HICON16 hIcon ) +BOOL16 WINAPI ShellAbout16( HWND16 hWnd, LPCSTR szApp, LPCSTR szOtherStuff, + HICON16 hIcon ) { return ShellAbout32A( hWnd, szApp, szOtherStuff, hIcon ); } @@ -432,8 +454,8 @@ /************************************************************************* * ShellAbout32A (SHELL32.82) */ -BOOL32 ShellAbout32A( HWND32 hWnd, LPCSTR szApp, LPCSTR szOtherStuff, - HICON32 hIcon ) +BOOL32 WINAPI ShellAbout32A( HWND32 hWnd, LPCSTR szApp, LPCSTR szOtherStuff, + HICON32 hIcon ) { ABOUT_INFO info; info.szApp = szApp; @@ -449,8 +471,8 @@ /************************************************************************* * ShellAbout32W (SHELL32.83) */ -BOOL32 ShellAbout32W( HWND32 hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, - HICON32 hIcon ) +BOOL32 WINAPI ShellAbout32W( HWND32 hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff, + HICON32 hIcon ) { BOOL32 ret; ABOUT_INFO info; @@ -604,7 +626,9 @@ * * This abortion is called directly by Progman */ -HGLOBAL16 InternalExtractIcon(HINSTANCE16 hInstance, LPCSTR lpszExeFileName, UINT16 nIconIndex, WORD n ) +HGLOBAL16 WINAPI InternalExtractIcon(HINSTANCE16 hInstance, + LPCSTR lpszExeFileName, UINT16 nIconIndex, + WORD n ) { HGLOBAL16 hRet = 0; HGLOBAL16* RetPtr = NULL; @@ -706,8 +730,8 @@ /************************************************************************* * ExtractIcon16 (SHELL.34) */ -HICON16 ExtractIcon16( HINSTANCE16 hInstance, LPCSTR lpszExeFileName, - UINT16 nIconIndex ) +HICON16 WINAPI ExtractIcon16( HINSTANCE16 hInstance, LPCSTR lpszExeFileName, + UINT16 nIconIndex ) { HGLOBAL16 handle = InternalExtractIcon(hInstance,lpszExeFileName,nIconIndex, 1); @@ -726,8 +750,8 @@ /************************************************************************* * ExtractIcon32A (SHELL32.20) */ -HICON32 ExtractIcon32A( HINSTANCE32 hInstance, LPCSTR lpszExeFileName, - UINT32 nIconIndex ) +HICON32 WINAPI ExtractIcon32A( HINSTANCE32 hInstance, LPCSTR lpszExeFileName, + UINT32 nIconIndex ) { /* FIXME */ return ExtractIcon16( hInstance, lpszExeFileName, nIconIndex ); @@ -740,7 +764,8 @@ * Return icon for given file (either from file itself or from associated * executable) and patch parameters if needed. */ -HICON16 ExtractAssociatedIcon(HINSTANCE16 hInst,LPSTR lpIconPath,LPWORD lpiIcon) +HICON16 WINAPI ExtractAssociatedIcon(HINSTANCE16 hInst,LPSTR lpIconPath, + LPWORD lpiIcon) { HICON16 hIcon = ExtractIcon16(hInst, lpIconPath, *lpiIcon); @@ -794,7 +819,7 @@ return NULL; } -SEGPTR FindEnvironmentString(LPSTR str) +SEGPTR WINAPI FindEnvironmentString(LPSTR str) { SEGPTR spEnv = GetDOSEnvironment(); LPSTR lpEnv = (LPSTR)PTR_SEG_TO_LIN(spEnv); @@ -813,7 +838,7 @@ * Replace %KEYWORD% in the str with the value of variable KEYWORD * from "DOS" environment. */ -DWORD DoEnvironmentSubst(LPSTR str,WORD length) +DWORD WINAPI DoEnvironmentSubst(LPSTR str,WORD length) { LPSTR lpEnv = (LPSTR)PTR_SEG_TO_LIN(GetDOSEnvironment()); LPSTR lpBuffer = (LPSTR)HeapAlloc( GetProcessHeap(), 0, length); @@ -886,7 +911,7 @@ * ShellHookProc [SHELL.103] * System-wide WH_SHELL hook. */ -LRESULT ShellHookProc(INT16 code, WPARAM16 wParam, LPARAM lParam) +LRESULT WINAPI ShellHookProc(INT16 code, WPARAM16 wParam, LPARAM lParam) { dprintf_reg(stddeb,"ShellHookProc: %i, %04x, %08x\n", code, wParam, (unsigned)lParam ); @@ -907,7 +932,7 @@ /************************************************************************* * RegisterShellHook [SHELL.102] */ -BOOL32 RegisterShellHook(HWND16 hWnd, UINT16 uAction) +BOOL32 WINAPI RegisterShellHook(HWND16 hWnd, UINT16 uAction) { dprintf_reg(stddeb,"RegisterShellHook: %04x [%u]\n", hWnd, uAction ); @@ -948,10 +973,10 @@ /************************************************************************* * SHGetFileInfoA [SHELL32.54] */ -DWORD -SHGetFileInfo32A(LPCSTR path,DWORD dwFileAttributes,SHFILEINFO32A *psfi, - UINT32 sizeofpsfi,UINT32 flags -) { +DWORD WINAPI SHGetFileInfo32A(LPCSTR path,DWORD dwFileAttributes, + SHFILEINFO32A *psfi, UINT32 sizeofpsfi, + UINT32 flags ) +{ fprintf(stdnimp,"SHGetFileInfo32A(%s,0x%08lx,%p,%d,0x%08x)\n", path,dwFileAttributes,psfi,sizeofpsfi,flags ); @@ -961,8 +986,8 @@ /************************************************************************* * CommandLineToArgvW [SHELL32.2] */ -LPWSTR* -CommandLineToArgvW(LPWSTR cmdline,LPDWORD numargs) { +LPWSTR* WINAPI CommandLineToArgvW(LPWSTR cmdline,LPDWORD numargs) +{ LPWSTR *argv,s,t; int i;
diff --git a/misc/sound.c b/misc/sound.c index 7c06aea..452a6f7 100644 --- a/misc/sound.c +++ b/misc/sound.c
@@ -7,181 +7,183 @@ #include <stdio.h> #include "windows.h" -INT16 OpenSound16(void) +INT16 WINAPI OpenSound16(void) { printf("OpenSound16()\n"); return -1; } -void OpenSound32(void) +void WINAPI OpenSound32(void) { printf("OpenSound32()\n"); } -void CloseSound(void) +void WINAPI CloseSound(void) { printf("CloseSound()\n"); } -INT16 SetVoiceQueueSize16(INT16 nVoice, INT16 nBytes) +INT16 WINAPI SetVoiceQueueSize16(INT16 nVoice, INT16 nBytes) { printf("SetVoiceQueueSize16 (%d,%d)\n",nVoice,nBytes); return 0; } -DWORD SetVoiceQueueSize32(DWORD nVoice, DWORD nBytes) +DWORD WINAPI SetVoiceQueueSize32(DWORD nVoice, DWORD nBytes) { printf("SetVoiceQueueSize32 (%ld,%ld)\n",nVoice,nBytes); return 0; } -INT16 SetVoiceNote16(INT16 nVoice, INT16 nValue, INT16 nLength, INT16 nCdots) +INT16 WINAPI SetVoiceNote16(INT16 nVoice, INT16 nValue, INT16 nLength, + INT16 nCdots) { printf("SetVoiceNote16 (%d,%d,%d,%d)\n",nVoice,nValue,nLength,nCdots); return 0; } -DWORD SetVoiceNote32(DWORD nVoice, DWORD nValue, DWORD nLength, DWORD nCdots) +DWORD WINAPI SetVoiceNote32(DWORD nVoice, DWORD nValue, DWORD nLength, + DWORD nCdots) { printf("SetVoiceNote32 (%ld,%ld,%ld,%ld)\n",nVoice,nValue,nLength,nCdots); return 0; } -INT16 SetVoiceAccent16(INT16 nVoice, INT16 nTempo, INT16 nVolume, - INT16 nMode, INT16 nPitch) +INT16 WINAPI SetVoiceAccent16(INT16 nVoice, INT16 nTempo, INT16 nVolume, + INT16 nMode, INT16 nPitch) { printf("SetVoiceAccent16(%d,%d,%d,%d,%d)\n", nVoice, nTempo, nVolume, nMode, nPitch); return 0; } -DWORD SetVoiceAccent32(DWORD nVoice, DWORD nTempo, DWORD nVolume, - DWORD nMode, DWORD nPitch) +DWORD WINAPI SetVoiceAccent32(DWORD nVoice, DWORD nTempo, DWORD nVolume, + DWORD nMode, DWORD nPitch) { printf("SetVoiceAccent32(%ld,%ld,%ld,%ld,%ld)\n", nVoice, nTempo, nVolume, nMode, nPitch); return 0; } -INT16 SetVoiceEnvelope16(INT16 nVoice, INT16 nShape, INT16 nRepeat) +INT16 WINAPI SetVoiceEnvelope16(INT16 nVoice, INT16 nShape, INT16 nRepeat) { printf("SetVoiceEnvelope16(%d,%d,%d)\n",nVoice,nShape,nRepeat); return 0; } -DWORD SetVoiceEnvelope32(DWORD nVoice, DWORD nShape, DWORD nRepeat) +DWORD WINAPI SetVoiceEnvelope32(DWORD nVoice, DWORD nShape, DWORD nRepeat) { printf("SetVoiceEnvelope32(%ld,%ld,%ld)\n",nVoice,nShape,nRepeat); return 0; } -INT16 SetSoundNoise16(INT16 nSource, INT16 nDuration) +INT16 WINAPI SetSoundNoise16(INT16 nSource, INT16 nDuration) { printf("SetSoundNoise16(%d,%d)\n",nSource,nDuration); return 0; } -DWORD SetSoundNoise32(DWORD nSource, DWORD nDuration) +DWORD WINAPI SetSoundNoise32(DWORD nSource, DWORD nDuration) { printf("SetSoundNoise32(%ld,%ld)\n",nSource,nDuration); return 0; } -INT16 SetVoiceSound16(INT16 nVoice, DWORD lFrequency, INT16 nDuration) +INT16 WINAPI SetVoiceSound16(INT16 nVoice, DWORD lFrequency, INT16 nDuration) { printf("SetVoiceSound16(%d, %ld, %d)\n",nVoice,lFrequency, nDuration); return 0; } -DWORD SetVoiceSound32(DWORD nVoice, DWORD lFrequency, DWORD nDuration) +DWORD WINAPI SetVoiceSound32(DWORD nVoice, DWORD lFrequency, DWORD nDuration) { printf("SetVoiceSound32(%ld, %ld, %ld)\n",nVoice,lFrequency, nDuration); return 0; } -INT16 StartSound16(void) +INT16 WINAPI StartSound16(void) { return 0; } -INT16 StopSound16(void) +INT16 WINAPI StopSound16(void) { return 0; } -INT16 WaitSoundState16(INT16 x) +INT16 WINAPI WaitSoundState16(INT16 x) { fprintf(stderr, "WaitSoundState16(%d)\n", x); return 0; } -DWORD WaitSoundState32(DWORD x) +DWORD WINAPI WaitSoundState32(DWORD x) { fprintf(stderr, "WaitSoundState32(%ld)\n", x); return 0; } -INT16 SyncAllVoices16(void) +INT16 WINAPI SyncAllVoices16(void) { fprintf(stderr, "SyncAllVoices16()\n"); return 0; } -DWORD SyncAllVoices32(void) +DWORD WINAPI SyncAllVoices32(void) { fprintf(stderr, "SyncAllVoices32()\n"); return 0; } -INT16 CountVoiceNotes16(INT16 x) +INT16 WINAPI CountVoiceNotes16(INT16 x) { fprintf(stderr, "CountVoiceNotes16(%d)\n", x); return 0; } -DWORD CountVoiceNotes32(DWORD x) +DWORD WINAPI CountVoiceNotes32(DWORD x) { fprintf(stderr, "CountVoiceNotes32(%ld)\n", x); return 0; } -LPINT16 GetThresholdEvent16(void) +LPINT16 WINAPI GetThresholdEvent16(void) { fprintf(stderr, "GetThresholdEvent16()\n"); return NULL; } -LPDWORD GetThresholdEvent32(void) +LPDWORD WINAPI GetThresholdEvent32(void) { fprintf(stderr, "GetThresholdEvent32()\n"); return NULL; } -INT16 GetThresholdStatus16(void) +INT16 WINAPI GetThresholdStatus16(void) { fprintf(stderr, "GetThresholdStatus16()\n"); return 0; } -DWORD GetThresholdStatus32(void) +DWORD WINAPI GetThresholdStatus32(void) { fprintf(stderr, "GetThresholdStatus32()\n"); return 0; } -INT16 SetVoiceThreshold16(INT16 a, INT16 b) +INT16 WINAPI SetVoiceThreshold16(INT16 a, INT16 b) { fprintf(stderr, "SetVoiceThreshold16(%d,%d)\n", a, b); return 0; } -DWORD SetVoiceThreshold32(DWORD a, DWORD b) +DWORD WINAPI SetVoiceThreshold32(DWORD a, DWORD b) { fprintf(stderr, "SetVoiceThreshold32(%ld,%ld)\n", a, b); return 0; } -void DoBeep(void) +void WINAPI DoBeep(void) { fprintf(stderr, "BEEP!\n"); }
diff --git a/misc/stress.c b/misc/stress.c index d800323..6b4e2fe 100644 --- a/misc/stress.c +++ b/misc/stress.c
@@ -8,14 +8,14 @@ #include "debug.h" -int AllocDiskSpace(long lLeft, UINT16 uDrive) +int WINAPI AllocDiskSpace(long lLeft, UINT16 uDrive) { dprintf_stress(stdnimp, "stress.dll: AllocDiskSpace %d, %ld\n", uDrive, lLeft); return 1; } -int AllocFileHandles(int Left) +int WINAPI AllocFileHandles(int Left) { dprintf_stress(stddeb, "stress.dll: AllocFileHandles %d\n", Left); @@ -25,48 +25,48 @@ return 1; } -BOOL16 AllocGDIMem(UINT16 uLeft) +BOOL16 WINAPI AllocGDIMem(UINT16 uLeft) { dprintf_stress(stddeb, "stress.dll: AllocGDIMem %d\n", uLeft); return 1; } -BOOL16 AllocMem(DWORD dwLeft) +BOOL16 WINAPI AllocMem(DWORD dwLeft) { dprintf_stress(stdnimp, "stress.dll: AllocMem %ld\n", dwLeft); return 1; } -BOOL16 AllocUserMem(UINT16 uContig) +BOOL16 WINAPI AllocUserMem(UINT16 uContig) { dprintf_stress(stddeb, "stress.dll: AllocUserMem %d\n", uContig); return 1; } -void FreeAllMem(void) +void WINAPI FreeAllMem(void) { dprintf_stress(stddeb, "stress.dll: FreeAllMem\n"); } -void FreeAllGDIMem(void) +void WINAPI FreeAllGDIMem(void) { dprintf_stress(stddeb, "stress.dll: FreeAllGDIMem\n"); } -void FreeAllUserMem(void) +void WINAPI FreeAllUserMem(void) { dprintf_stress(stddeb, "stress.dll: FreeAllUserMem\n"); } -void GetFreeAllUserMem(void) +void WINAPI GetFreeAllUserMem(void) { dprintf_stress(stddeb, "stress.dll: GetFreeAllUserMem\n"); } -int GetFreeFileHandles(void) +int WINAPI GetFreeFileHandles(void) { dprintf_stress(stddeb, "stress.dll: GetFreeFileHandles\n"); @@ -77,12 +77,12 @@ #endif } -void UnAllocDiskSpace(UINT16 drive) +void WINAPI UnAllocDiskSpace(UINT16 drive) { dprintf_stress(stddeb, "stress.dll: UnAllocDiskSpace %d\n", drive); } -void UnAllocFileHandles(void) +void WINAPI UnAllocFileHandles(void) { dprintf_stress(stddeb, "stress.dll: GetFreeAllUserMem\n"); }
diff --git a/misc/system.c b/misc/system.c index dee79bd..1c34729 100644 --- a/misc/system.c +++ b/misc/system.c
@@ -100,7 +100,7 @@ * Note: the function always takes 2 WORD arguments, contrary to what * "Undocumented Windows" says. */ -DWORD InquireSystem( WORD code, WORD arg ) +DWORD WINAPI InquireSystem( WORD code, WORD arg ) { WORD drivetype; @@ -125,7 +125,7 @@ /*********************************************************************** * CreateSystemTimer (SYSTEM.2) */ -WORD CreateSystemTimer( WORD rate, FARPROC16 callback ) +WORD WINAPI CreateSystemTimer( WORD rate, FARPROC16 callback ) { int i; @@ -150,7 +150,7 @@ * * Note: do not confuse this function with USER.182 */ -WORD SYSTEM_KillSystemTimer( WORD timer ) +WORD WINAPI SYSTEM_KillSystemTimer( WORD timer ) { if (!timer || (timer > NB_SYS_TIMERS)) return timer; /* Error */ SYS_Timers[timer-1].callback = NULL; @@ -162,7 +162,7 @@ /*********************************************************************** * EnableSystemTimers (SYSTEM.4) */ -void EnableSystemTimers(void) +void WINAPI EnableSystemTimers(void) { SYS_TimersDisabled = FALSE; if (SYS_NbTimers) SYSTEM_StartTicks(); @@ -172,7 +172,7 @@ /*********************************************************************** * DisableSystemTimers (SYSTEM.5) */ -void DisableSystemTimers(void) +void WINAPI DisableSystemTimers(void) { SYS_TimersDisabled = TRUE; if (SYS_NbTimers) SYSTEM_StopTicks();
diff --git a/misc/toolhelp.c b/misc/toolhelp.c index f5f73db..cba7996 100644 --- a/misc/toolhelp.c +++ b/misc/toolhelp.c
@@ -29,7 +29,8 @@ static int nrofnotifys = 0; -BOOL16 NotifyRegister( HTASK16 htask, FARPROC16 lpfnCallback, WORD wFlags ) +BOOL16 WINAPI NotifyRegister( HTASK16 htask, FARPROC16 lpfnCallback, + WORD wFlags ) { int i; @@ -51,7 +52,7 @@ return TRUE; } -BOOL16 NotifyUnregister( HTASK16 htask ) +BOOL16 WINAPI NotifyUnregister( HTASK16 htask ) { int i;
diff --git a/misc/tweak.c b/misc/tweak.c index e8f0095..0d88d0b 100644 --- a/misc/tweak.c +++ b/misc/tweak.c
@@ -241,80 +241,6 @@ /****************************************************************************** * - * int TWEAK_CheckOldFonts() - * - * Examines wine.conf for old/invalid font entries and recommend changes to - * the user. - * - * Revision history - * 05-Jul-1997 Dave Cuthbert (dacut@ece.cmu.edu) - * Original implementation. - * - *****************************************************************************/ - -static void TWEAK_CheckOldFontsCallback(char const *, char const *, void *); - -static char const *fontmsgprologue = -"Wine warning:\n" -" The following entries in the [fonts] section of the wine.conf file are\n" -" obsolete or invalid:\n"; - -static char const *fontmsgepilogue = -" These entries should be eliminated or updated.\n" -" See the documentation/fonts file for more information.\n"; - -static int TWEAK_CheckOldFonts() -{ - int found = 0; - - PROFILE_EnumerateWineIniSection("Fonts", &TWEAK_CheckOldFontsCallback, - (void *)&found); - if(found) - fprintf(stderr, fontmsgepilogue); - - return 1; -} - -static void TWEAK_CheckOldFontsCallback( - char const *key, - char const *value, - void *found) -{ - /* Ignore any keys that start with potential comment characters "'", '#', - or ';'. */ - if(key[0] == '\'' || key[0] == '#' || key[0] == ';' || key[0] == '\0') - return; - - /* Make sure this is a valid key */ - if(strncasecmp(key, "Alias", 5) == 0 || - strcasecmp(key, "Default") == 0) { - - /* Valid key; make sure the value doesn't contain a wildcard */ - if(strchr(value, '*')) { - if(*(int *)found == 0) { - fprintf(stderr, fontmsgprologue); - ++*(int *)found; - } - - fprintf(stderr, " %s=%s [no wildcards allowed]\n", key, value); - } - } - else { - /* Not a valid key */ - if(*(int *)found == 0) { - fprintf(stderr, fontmsgprologue); - ++*(int *)found; - } - - fprintf(stderr, " %s=%s [obsolete]\n", key, value); - } - - return; -} - - -/****************************************************************************** - * * int TWEAK_CheckConfiguration() * * Examines wine.conf for old/bad entries and recommends changes to the user. @@ -327,12 +253,10 @@ int TWEAK_CheckConfiguration() { - TWEAK_CheckOldFonts(); return 1; } - /****************************************************************************** * * Tweak graphic subsystem.
diff --git a/misc/ver.c b/misc/ver.c index 0a747bf..89426ca 100644 --- a/misc/ver.c +++ b/misc/ver.c
@@ -303,8 +303,9 @@ } /* GetFileResourceSize [VER.2] */ -DWORD -GetFileResourceSize(LPCSTR filename,SEGPTR restype,SEGPTR resid,LPDWORD off) { +DWORD WINAPI GetFileResourceSize(LPCSTR filename,SEGPTR restype,SEGPTR resid, + LPDWORD off) +{ HFILE32 lzfd; OFSTRUCT ofs; BYTE *resdata; @@ -331,10 +332,9 @@ } /* GetFileResource [VER.3] */ -DWORD -GetFileResource(LPCSTR filename,SEGPTR restype,SEGPTR resid, - DWORD off,DWORD datalen,LPVOID data -) { +DWORD WINAPI GetFileResource(LPCSTR filename,SEGPTR restype,SEGPTR resid, + DWORD off,DWORD datalen,LPVOID data ) +{ HFILE32 lzfd; OFSTRUCT ofs; BYTE *resdata; @@ -367,8 +367,8 @@ } /* GetFileVersionInfoSize [VER.6] */ -DWORD -GetFileVersionInfoSize16(LPCSTR filename,LPDWORD handle) { +DWORD WINAPI GetFileVersionInfoSize16(LPCSTR filename,LPDWORD handle) +{ DWORD len,ret; BYTE buf[72]; VS_FIXEDFILEINFO *vffi; @@ -479,14 +479,14 @@ } /* GetFileVersionInfoSize32A [VERSION.1] */ -DWORD -GetFileVersionInfoSize32A(LPCSTR filename,LPDWORD handle) { +DWORD WINAPI GetFileVersionInfoSize32A(LPCSTR filename,LPDWORD handle) +{ dprintf_ver(stddeb,"GetFileVersionInfoSize32A(%s,%p)\n",filename,handle); return GetFileVersionInfoSize16(filename,handle); } /* GetFileVersionInfoSize32W [VERSION.2] */ -DWORD GetFileVersionInfoSize32W( LPCWSTR filename, LPDWORD handle ) +DWORD WINAPI GetFileVersionInfoSize32W( LPCWSTR filename, LPDWORD handle ) { LPSTR xfn = HEAP_strdupWtoA( GetProcessHeap(), 0, filename ); DWORD ret = GetFileVersionInfoSize16( xfn, handle ); @@ -495,8 +495,9 @@ } /* GetFileVersionInfo [VER.7] */ -DWORD -GetFileVersionInfo16(LPCSTR filename,DWORD handle,DWORD datasize,LPVOID data) { +DWORD WINAPI GetFileVersionInfo16(LPCSTR filename,DWORD handle,DWORD datasize, + LPVOID data) +{ dprintf_ver(stddeb,"GetFileVersionInfo16(%s,%ld,%ld,%p)\n->", filename,handle,datasize,data ); @@ -506,14 +507,15 @@ } /* GetFileVersionInfoA [VERSION.0] */ -DWORD -GetFileVersionInfo32A(LPCSTR filename,DWORD handle,DWORD datasize,LPVOID data) { +DWORD WINAPI GetFileVersionInfo32A(LPCSTR filename,DWORD handle, + DWORD datasize,LPVOID data) +{ return GetFileVersionInfo16(filename,handle,datasize,data); } /* GetFileVersionInfoW [VERSION.3] */ -DWORD GetFileVersionInfo32W( LPCWSTR filename, DWORD handle, DWORD datasize, - LPVOID data) +DWORD WINAPI GetFileVersionInfo32W( LPCWSTR filename, DWORD handle, + DWORD datasize, LPVOID data) { LPSTR fn = HEAP_strdupWtoA( GetProcessHeap(), 0, filename ); DWORD ret = GetFileVersionInfo16( fn, handle, datasize, data ); @@ -534,7 +536,7 @@ * ****************************************************************************/ -DWORD VerFindFile16( +DWORD WINAPI VerFindFile16( UINT16 flags, LPCSTR lpszFilename, LPCSTR lpszWinDir, @@ -693,8 +695,7 @@ } /* VerFindFileA [VERSION.5] */ -DWORD -VerFindFile32A( +DWORD WINAPI VerFindFile32A( UINT32 flags,LPCSTR filename,LPCSTR windir,LPCSTR appdir, LPSTR curdir,UINT32 *pcurdirlen,LPSTR destdir,UINT32 *pdestdirlen ) { @@ -707,8 +708,7 @@ } /* VerFindFileW [VERSION.6] */ -DWORD -VerFindFile32W( +DWORD WINAPI VerFindFile32W( UINT32 flags,LPCWSTR filename,LPCWSTR windir,LPCWSTR appdir, LPWSTR curdir,UINT32 *pcurdirlen,LPWSTR destdir,UINT32 *pdestdirlen ) { @@ -735,8 +735,7 @@ } /* VerInstallFile [VER.9] */ -DWORD -VerInstallFile16( +DWORD WINAPI VerInstallFile16( UINT16 flags,LPCSTR srcfilename,LPCSTR destfilename,LPCSTR srcdir, LPCSTR destdir,LPCSTR curdir,LPSTR tmpfile,UINT16 *tmpfilelen ) { @@ -784,8 +783,7 @@ } } -DWORD -VerInstallFile32A( +DWORD WINAPI VerInstallFile32A( UINT32 flags,LPCSTR srcfilename,LPCSTR destfilename,LPCSTR srcdir, LPCSTR destdir,LPCSTR curdir,LPSTR tmpfile,UINT32 *tmpfilelen ) { @@ -948,8 +946,7 @@ } /* VerInstallFileW [VERSION.8] */ -DWORD -VerInstallFile32W( +DWORD WINAPI VerInstallFile32W( UINT32 flags,LPCWSTR srcfilename,LPCWSTR destfilename,LPCWSTR srcdir, LPCWSTR destdir,LPCWSTR curdir,LPWSTR tmpfile,UINT32 *tmpfilelen ) { @@ -1035,8 +1032,8 @@ /* VerQueryValue [VER.11] */ /* take care, 'buffer' is NOT a SEGPTR, it just points to one */ -DWORD -VerQueryValue16(SEGPTR segblock,LPCSTR subblock,SEGPTR *buffer,UINT16 *buflen) +DWORD WINAPI VerQueryValue16(SEGPTR segblock,LPCSTR subblock,SEGPTR *buffer, + UINT16 *buflen) { BYTE *block=PTR_SEG_TO_LIN(segblock),*b; struct db *db; @@ -1062,8 +1059,8 @@ return 1; } -DWORD -VerQueryValue32A(LPVOID vblock,LPCSTR subblock,LPVOID *vbuffer,UINT32 *buflen) +DWORD WINAPI VerQueryValue32A(LPVOID vblock,LPCSTR subblock, + LPVOID *vbuffer,UINT32 *buflen) { BYTE *b,*block=(LPBYTE)vblock,**buffer=(LPBYTE*)vbuffer; struct db *db; @@ -1088,8 +1085,8 @@ return 1; } -DWORD -VerQueryValue32W(LPVOID vblock,LPCWSTR subblock,LPVOID *vbuffer,UINT32 *buflen) +DWORD WINAPI VerQueryValue32W(LPVOID vblock,LPCWSTR subblock,LPVOID *vbuffer, + UINT32 *buflen) { /* FIXME: hmm, we not only need to convert subblock, but also * the content...or?
diff --git a/misc/w32sys.c b/misc/w32sys.c index 8fae50d..427b47e 100644 --- a/misc/w32sys.c +++ b/misc/w32sys.c
@@ -12,7 +12,7 @@ /*********************************************************************** * GetWin32sInfo (W32SYS.12) */ -WORD GetWin32sInfo( LPWIN32SINFO lpInfo) +WORD WINAPI GetWin32sInfo( LPWIN32SINFO lpInfo) { lpInfo->bMajor = 1; lpInfo->bMinor = 3;
diff --git a/misc/winsock.c b/misc/winsock.c index 159ed1c..3246b41 100644 --- a/misc/winsock.c +++ b/misc/winsock.c
@@ -2,14 +2,9 @@ * based on Windows Sockets 1.1 specs * (ftp.microsoft.com:/Advsys/winsock/spec11/WINSOCK.TXT) * - * (C) 1993,1994,1996 John Brezak, Erik Bos, Alex Korobka. + * (C) 1993,1994,1996,1997 John Brezak, Erik Bos, Alex Korobka. * - * TODO: Merge Async...() handling with X event loop by adding - * thread/task fdset to select(2) in windows/event.c. - * Also fork dns lookup helper during the startup (with a pipe - * for communication) and make it fork for a database request - * instead of forking the main process (i.e. something like - * Netscape 4.0). + * TODO: 32-bit asynchronous services. */ #include <stdio.h> @@ -41,6 +36,8 @@ #include "winnt.h" #include "heap.h" #include "ldt.h" +#include "task.h" +#include "message.h" #include "winsock.h" #include "miscemu.h" #include "stddebug.h" @@ -57,10 +54,6 @@ /* ----------------------------------- internal data */ extern int h_errno; -extern void __sigio(int); - -ws_async_ctl async_ctl; -int async_qid = -1; static HANDLE32 _WSHeap = 0; static unsigned char* _ws_stub = NULL; @@ -74,13 +67,13 @@ #define WS_PTR2HANDLE(ptr) \ ((short)((int)(ptr) - (int)_ws_stub)) #define WS_HANDLE2PTR(handle) \ - ((unsigned)((int)_ws_stub + (int)handle)) + ((unsigned)((int)_ws_stub + (int)(handle))) #define WSI_CHECK_RANGE(pwsi, pws) \ ( ((unsigned)(pws) > (unsigned)(pwsi)) && \ ((unsigned)(pws) < ((unsigned)(pwsi) + sizeof(WSINFO))) ) -static INT16 _ws_sock_ops[] = +static INT32 _ws_sock_ops[] = { WS_SO_DEBUG, WS_SO_REUSEADDR, WS_SO_KEEPALIVE, WS_SO_DONTROUTE, WS_SO_BROADCAST, WS_SO_LINGER, WS_SO_OOBINLINE, WS_SO_SNDBUF, WS_SO_RCVBUF, WS_SO_ERROR, WS_SO_TYPE, WS_SO_DONTLINGER, 0 }; @@ -89,28 +82,27 @@ SO_LINGER, SO_OOBINLINE, SO_SNDBUF, SO_RCVBUF, SO_ERROR, SO_TYPE, SO_LINGER }; -static INT16 init_async_select(ws_socket* pws, HWND16 hWnd, UINT16 uMsg, UINT32 lEvent); -static int notify_client(ws_socket* pws, unsigned flag); - static int _check_ws(LPWSINFO pwsi, ws_socket* pws); static int _check_buffer(LPWSINFO pwsi, int size); -static void fixup_wshe(struct ws_hostent* p_wshe, SEGPTR base); -static void fixup_wspe(struct ws_protoent* p_wspe, SEGPTR base); -static void fixup_wsse(struct ws_servent* p_wsse, SEGPTR base); +extern void EVENT_AddIO( int fd, unsigned flag ); +extern void EVENT_DeleteIO( int fd, unsigned flag ); -static int cancel_async_select(ws_socket*); - -static void convert_sockopt(INT16 *level, INT16 *optname) +/*********************************************************************** + * convert_sockopt() + * + * Converts socket flags from Windows format. + */ +static void convert_sockopt(INT32 *level, INT32 *optname) { - int i; + int i; switch (*level) { case WS_SOL_SOCKET: *level = SOL_SOCKET; for(i=0; _ws_sock_ops[i]; i++) if( _ws_sock_ops[i] == *optname ) break; - if( _ws_sock_ops[i] ) *optname = (INT16)_px_sock_ops[i]; + if( _ws_sock_ops[i] ) *optname = _px_sock_ops[i]; else fprintf(stderr, "convert_sockopt() unknown optname %d\n", *optname); break; case WS_IPPROTO_TCP: @@ -118,71 +110,63 @@ } } -static void _ws_global_init() -{ - if( !_ws_stub ) - { - _WSHeap = HeapCreate(HEAP_ZERO_MEMORY, 8120, 32768); - if( !(_ws_stub = WS_ALLOC(0x10)) ) - fprintf(stderr,"Fatal: failed to create WinSock heap\n"); - } - if( async_qid == -1 ) - if( (async_qid = msgget(IPC_PRIVATE, IPC_CREAT | 0x1FF)) == -1 ) - fprintf(stderr,"Fatal: failed to create WinSock resource\n"); -} - -/* ----------------------------------- Per-thread info */ - -static void wsi_link(LPWSINFO pwsi) -{ if( _wsi_list ) _wsi_list->prev = pwsi; - pwsi->next = _wsi_list; _wsi_list = pwsi; -} - -static void wsi_unlink(LPWSINFO pwsi) -{ - if( pwsi == _wsi_list ) _wsi_list = pwsi->next; - else - { pwsi->prev->next = pwsi->next; - if( pwsi->next ) pwsi->next->prev = pwsi->prev; } -} +/* ----------------------------------- Per-thread info (or per-process?) */ static LPWSINFO wsi_find(HTASK16 hTask) -{ LPWSINFO pwsi = _wsi_list; - while( pwsi && pwsi->tid != hTask ) pwsi = pwsi->next; - return pwsi; +{ + TDB* pTask = (TDB*)GlobalLock16(hTask); + if( pTask ) + { + if( pTask->pwsi ) return pTask->pwsi; + else + { + LPWSINFO pwsi = _wsi_list; + while( pwsi && pwsi->tid != hTask ) pwsi = pwsi->next; + if( pwsi ) + fprintf(stderr,"loose wsi struct! pwsi=0x%08x, task=0x%04x\n", + (unsigned)pwsi, hTask ); + return pwsi; + } + } + return NULL; } static ws_socket* wsi_alloc_socket(LPWSINFO pwsi, int fd) { - if( pwsi->last_free >= 0 ) - { - int i = pwsi->last_free; + /* Initialize a new entry in the socket table */ - pwsi->last_free = pwsi->sock[i].flags; - pwsi->sock[i].fd = fd; - pwsi->sock[i].flags = 0; - return &pwsi->sock[i]; - } - return NULL; + if( pwsi->last_free >= 0 ) + { + int i = pwsi->last_free; + + pwsi->last_free = pwsi->sock[i].flags; /* free list */ + pwsi->sock[i].fd = fd; + pwsi->sock[i].flags = 0; + return &pwsi->sock[i]; + } + return NULL; } static void fd_set_normalize(fd_set* fds, LPWSINFO pwsi, ws_fd_set* ws, int* highfd) { - FD_ZERO(fds); - if(ws) - { - int i; - ws_socket* pws; - for(i=0;i<(ws->fd_count);i++) - { - pws = (ws_socket*)WS_HANDLE2PTR(ws->fd_array[i]); - if( _check_ws(pwsi, pws) ) - { - if( pws->fd > *highfd ) *highfd = pws->fd; - FD_SET(pws->fd, fds); - } + /* translate Winsock fd set into the normal fd set */ + + FD_ZERO(fds); + if( ws ) + { + int i; + ws_socket* pws; + + for( i = 0; i < (ws->fd_count) ; i++ ) + { + pws = (ws_socket*)WS_HANDLE2PTR(ws->fd_array[i]); + if( _check_ws(pwsi, pws) ) + { + if( pws->fd > *highfd ) *highfd = pws->fd; + FD_SET(pws->fd, fds); + } + } } - } } /* @@ -229,24 +213,19 @@ return; } -static void fd_set_update_except(LPWSINFO pwsi, fd_set *fds, ws_fd_set *ws, - fd_set *errorfds) +HANDLE16 __ws_gethandle( void* ptr ) { - if (ws) - { - int i, j, count = ws->fd_count; + return (HANDLE16)WS_PTR2HANDLE(ptr); +} - for (i=j=0; i < count; i++) - { - ws_socket *pws = (ws_socket *)WS_HANDLE2PTR(ws->fd_array[i]); +void* __ws_memalloc( int size ) +{ + return WS_ALLOC(size); +} - if (_check_ws(pwsi, pws) && (FD_ISSET(pws->fd, fds) - || FD_ISSET(pws->fd, errorfds))) - ws->fd_array[j++] = ws->fd_array[i]; - } - ws->fd_count = j; - } - return; +void __ws_memfree(void* ptr) +{ + WS_FREE(ptr); } /* ----------------------------------- API ----- @@ -254,9 +233,15 @@ * Init / cleanup / error checking. */ -INT16 WSAStartup(UINT16 wVersionRequested, LPWSADATA lpWSAData) +/*********************************************************************** + * WSAStartup16() (WINSOCK.115) + * + * Create socket control struct, attach it to the global list and + * update a pointer in the task struct. + */ +INT16 WINAPI WSAStartup16(UINT16 wVersionRequested, LPWSADATA lpWSAData) { - WSADATA WINSOCK_data = { 0x0101, 0x0101, + WSADATA WINSOCK_data = { 0x0101, 0x0101, "WINE Sockets 1.1", #ifdef linux "Linux/i386", @@ -272,191 +257,288 @@ "Unknown", #endif WS_MAX_SOCKETS_PER_THREAD, - WS_MAX_UDP_DATAGRAM, NULL }; - HTASK16 tid = GetCurrentTask(); - LPWSINFO pwsi; + WS_MAX_UDP_DATAGRAM, (SEGPTR)NULL }; + HTASK16 tid = GetCurrentTask(); + LPWSINFO pwsi; - dprintf_winsock(stddeb, "WSAStartup: verReq=%x\n", wVersionRequested); + dprintf_winsock(stddeb, "WSAStartup: verReq=%x\n", wVersionRequested); - if (LOBYTE(wVersionRequested) < 1 || (LOBYTE(wVersionRequested) == 1 && - HIBYTE(wVersionRequested) < 1)) return WSAVERNOTSUPPORTED; + if (LOBYTE(wVersionRequested) < 1 || (LOBYTE(wVersionRequested) == 1 && + HIBYTE(wVersionRequested) < 1)) return WSAVERNOTSUPPORTED; - if (!lpWSAData) return WSAEINVAL; + if (!lpWSAData) return WSAEINVAL; - _ws_global_init(); - if( _WSHeap == 0 ) return WSASYSNOTREADY; - - pwsi = wsi_find(GetCurrentTask()); - if( pwsi == NULL ) - { - if( (pwsi = (LPWSINFO)WS_ALLOC( sizeof(WSINFO))) ) + /* initialize socket heap */ + + if( !_ws_stub ) { - int i = 0; - pwsi->tid = tid; - for( i = 0; i < WS_MAX_SOCKETS_PER_THREAD; i++ ) - { - pwsi->sock[i].fd = -1; - pwsi->sock[i].flags = i + 1; - } - pwsi->sock[WS_MAX_SOCKETS_PER_THREAD - 1].flags = -1; - } - else return WSASYSNOTREADY; - wsi_link(pwsi); - } else pwsi->num_startup++; + _WSHeap = HeapCreate(HEAP_ZERO_MEMORY, 8120, 32768); + if( !(_ws_stub = WS_ALLOC(0x10)) ) + { + fprintf(stderr,"Fatal: failed to create WinSock heap\n"); + return 0; + } + } + if( _WSHeap == 0 ) return WSASYSNOTREADY; - /* return winsock information */ - memcpy(lpWSAData, &WINSOCK_data, sizeof(WINSOCK_data)); + /* create socket array for this task */ + + pwsi = wsi_find(GetCurrentTask()); + if( pwsi == NULL ) + { + TDB* pTask = (TDB*)GlobalLock16( tid ); - dprintf_winsock(stddeb, "WSAStartup: succeeded\n"); - return(0); + if( (pwsi = (LPWSINFO)WS_ALLOC( sizeof(WSINFO))) ) + { + int i = 0; + pwsi->tid = tid; + for( i = 0; i < WS_MAX_SOCKETS_PER_THREAD; i++ ) + { + pwsi->sock[i].fd = -1; + pwsi->sock[i].flags = i + 1; + } + pwsi->sock[WS_MAX_SOCKETS_PER_THREAD - 1].flags = -1; + } + else return WSASYSNOTREADY; + + /* add this control struct to the global list */ + + pwsi->prev = NULL; + if( _wsi_list ) + _wsi_list->prev = pwsi; + pwsi->next = _wsi_list; + _wsi_list = pwsi; + pTask->pwsi = pwsi; + } + else pwsi->num_startup++; + + /* return winsock information */ + + memcpy(lpWSAData, &WINSOCK_data, sizeof(WINSOCK_data)); + + dprintf_winsock(stddeb, "WSAStartup: succeeded\n"); + return 0; } +/*********************************************************************** + * WSAStartup32() (WSOCK32.115) + */ +INT32 WINAPI WSAStartup32(UINT32 wVersionRequested, LPWSADATA lpWSAData) +{ + return WSAStartup16( wVersionRequested, lpWSAData ); +} + +/*********************************************************************** + * WSACleanup() (WINSOCK.116) + * + * Cleanup functions of varying impact. + */ void WINSOCK_Shutdown() { - if( async_qid != -1 ) - if( msgctl(async_qid, IPC_RMID, NULL) == -1 ) - fprintf(stderr,"failed to delete WS message queue.\n"); - else async_qid = -1; + /* Called on exit(), has to remove all outstanding async DNS processes. */ + + WINSOCK_cancel_task_aops( 0, __ws_memfree ); } -INT16 WSACleanup(void) +INT32 WINSOCK_DeleteTaskWSI( TDB* pTask, LPWSINFO pwsi ) { - LPWSINFO pwsi = wsi_find(GetCurrentTask()); + /* WSACleanup() backend, called on task termination as well. */ - /* FIXME: do global cleanup if no current task */ + int i, j, n; - dprintf_winsock(stddeb, "WSACleanup(%08x)\n", (unsigned)pwsi); - if( pwsi ) - { - int i, j, n; + if( --pwsi->num_startup > 0 ) return 0; - if( pwsi->num_startup-- ) return 0; + SIGNAL_MaskAsyncEvents( TRUE ); + if( pTask ) + pTask->pwsi = NULL; + WINSOCK_cancel_task_aops( pTask->hSelf, __ws_memfree ); + SIGNAL_MaskAsyncEvents( FALSE ); - SIGNAL_MaskAsyncEvents( TRUE ); - WINSOCK_cancel_async_op(GetCurrentTask()); - SIGNAL_MaskAsyncEvents( FALSE ); + /* unlink socket control struct */ - wsi_unlink(pwsi); - if( _wsi_list == NULL ) WINSOCK_Shutdown(); + if( pwsi == _wsi_list ) + _wsi_list = pwsi->next; + else + pwsi->prev->next = pwsi->next; + if( pwsi->next ) pwsi->next->prev = pwsi->prev; - if( pwsi->flags & WSI_BLOCKINGCALL ) - dprintf_winsock(stddeb,"\tinside blocking call!\n"); - if( pwsi->num_async_rq ) - dprintf_winsock(stddeb,"\thave %i outstanding async ops!\n", pwsi->num_async_rq ); + if( _wsi_list == NULL ) + WINSOCK_Shutdown(); /* just in case */ - for(i = 0, j = 0, n = 0; i < WS_MAX_SOCKETS_PER_THREAD; i++) + if( pwsi->flags & WSI_BLOCKINGCALL ) + dprintf_winsock(stddeb,"\tinside blocking call!\n"); + +/* FIXME: aop_control() doesn't decrement pwsi->num_async_rq + * + * if( pwsi->num_async_rq ) + * dprintf_winsock(stddeb,"\thave %i outstanding async ops!\n", pwsi->num_async_rq ); + */ + + for(i = 0, j = 0, n = 0; i < WS_MAX_SOCKETS_PER_THREAD; i++) if( pwsi->sock[i].fd != -1 ) - { - n += cancel_async_select(&pwsi->sock[i]); - close(pwsi->sock[i].fd); j++; + { + if( pwsi->sock[i].psop ) + { + n++; + WSAAsyncSelect( (SOCKET16)WS_PTR2HANDLE(pwsi->sock + i), 0, 0, 0 ); + } + close(pwsi->sock[i].fd); j++; } - if( j ) + if( j ) dprintf_winsock(stddeb,"\tclosed %i sockets, killed %i async selects!\n", j, n); - if( pwsi->buffer ) SEGPTR_FREE(pwsi->buffer); - if( pwsi->dbuffer ) SEGPTR_FREE(pwsi->dbuffer); - WS_FREE(pwsi); - return 0; - } - return SOCKET_ERROR; + /* delete scratch buffers */ + + if( pwsi->buffer ) SEGPTR_FREE(pwsi->buffer); + if( pwsi->dbuffer ) SEGPTR_FREE(pwsi->dbuffer); + + memset( pwsi, 0, sizeof(WSINFO) ); + WS_FREE(pwsi); + return 0; } -INT16 WSAGetLastError(void) +INT32 WINAPI WSACleanup(void) { - LPWSINFO pwsi = wsi_find(GetCurrentTask()); - INT16 ret; + HTASK16 hTask = GetCurrentTask(); - dprintf_winsock(stddeb, "WSAGetLastError(%08x)", (unsigned)pwsi); - - ret = (pwsi) ? pwsi->err : WSANOTINITIALISED; - - dprintf_winsock(stddeb, " = %i\n", (int)ret); - return ret; + dprintf_winsock(stddeb, "WSACleanup(%04x)\n", hTask ); + if( hTask ) + { + LPWSINFO pwsi = wsi_find(hTask); + if( pwsi ) + return WINSOCK_DeleteTaskWSI( (TDB*)GlobalLock16(hTask), pwsi ); + return SOCKET_ERROR; + } + else + WINSOCK_Shutdown(); /* remove all outstanding DNS requests */ + return 0; } -void WSASetLastError(INT16 iError) + +/*********************************************************************** + * WSAGetLastError() (WSOCK32.111)(WINSOCK.111) + */ +INT32 WINAPI WSAGetLastError(void) { - LPWSINFO pwsi = wsi_find(GetCurrentTask()); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + INT16 ret; - dprintf_winsock(stddeb, "WSASetLastError(%08x): %d\n", (unsigned)pwsi, (int)iError); + dprintf_winsock(stddeb, "WSAGetLastError(%08x)", (unsigned)pwsi); - if( pwsi ) pwsi->err = iError; + ret = (pwsi) ? pwsi->err : WSANOTINITIALISED; + + dprintf_winsock(stddeb, " = %i\n", (int)ret); + return ret; +} + +/*********************************************************************** + * WSASetLastError32() (WSOCK32.112) + */ +void WINAPI WSASetLastError32(INT32 iError) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WSASetLastError(%08x): %d\n", (unsigned)pwsi, (int)iError); + if( pwsi ) pwsi->err = iError; +} + +/*********************************************************************** + * WSASetLastError16() (WINSOCK.112) + */ +void WINAPI WSASetLastError16(INT16 iError) +{ + WSASetLastError32(iError); } int _check_ws(LPWSINFO pwsi, ws_socket* pws) { - if( pwsi ) - if( pwsi->flags & WSI_BLOCKINGCALL ) pwsi->err = WSAEINPROGRESS; - else if( WSI_CHECK_RANGE(pwsi, pws) ) return 1; - else pwsi->err = WSAENOTSOCK; - return 0; + if( pwsi ) + if( pwsi->flags & WSI_BLOCKINGCALL ) pwsi->err = WSAEINPROGRESS; + else if( WSI_CHECK_RANGE(pwsi, pws) ) return 1; + else pwsi->err = WSAENOTSOCK; + return 0; } int _check_buffer(LPWSINFO pwsi, int size) { - if( pwsi->buffer && pwsi->buflen >= size ) return 1; - else SEGPTR_FREE(pwsi->buffer); - pwsi->buffer = (char*)SEGPTR_ALLOC((pwsi->buflen = size)); - return (pwsi->buffer != NULL); + if( pwsi->buffer && pwsi->buflen >= size ) return 1; + else SEGPTR_FREE(pwsi->buffer); + + pwsi->buffer = (char*)SEGPTR_ALLOC((pwsi->buflen = size)); + return (pwsi->buffer != NULL); } -/* ----- socket operations */ +/* ----------------------------------- i/o APIs */ -SOCKET16 WINSOCK_accept(SOCKET16 s, struct sockaddr *addr, INT16 *addrlen16) +/*********************************************************************** + * accept() (WSOCK32.1) + */ +SOCKET32 WINAPI WINSOCK_accept32(SOCKET32 s, struct sockaddr *addr, + INT32 *addrlen32) { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR((SOCKET16)s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); - dprintf_winsock(stddeb, "WS_ACCEPT(%08x): socket %04x\n", - (unsigned)pwsi, (UINT16)s); - if( _check_ws(pwsi, pws) ) - { - int sock, fd_flags, addrlen32 = *addrlen16; + dprintf_winsock(stddeb, "WS_ACCEPT(%08x): socket %04x\n", + (unsigned)pwsi, (UINT16)s ); + if( _check_ws(pwsi, pws) ) + { + int sock, fd_flags; - /* this is how block info is supposed to be used - - * WSAIsBlocking() would then check WSI_BLOCKINGCALL bit. - */ + fd_flags = fcntl(pws->fd, F_GETFL, 0); - fd_flags = fcntl(pws->fd, F_GETFL, 0); - if( !(fd_flags & O_NONBLOCK) ) pwsi->flags |= WSI_BLOCKINGCALL; + if( (sock = accept(pws->fd, addr, addrlen32)) >= 0 ) + { + ws_socket* pnew = wsi_alloc_socket(pwsi, sock); + if( pnew ) + { + s = (SOCKET32)WS_PTR2HANDLE(pnew); + if( pws->psop && pws->flags & WS_FD_ACCEPT ) + { + EVENT_AddIO( pws->fd, EVENT_IO_READ ); /* reenabler */ - if( (sock = accept(pws->fd, addr, &addrlen32)) >= 0 ) - { - ws_socket* pnew = wsi_alloc_socket(pwsi, sock); - notify_client(pws, WS_FD_ACCEPT); - if( pnew ) - { - if( pws->p_aop ) - init_async_select(pnew, pws->p_aop->hWnd, - pws->p_aop->uMsg, - pws->p_aop->flags & ~WS_FD_ACCEPT ); - - pwsi->flags &= ~WSI_BLOCKINGCALL; - return (SOCKET16)WS_PTR2HANDLE(pnew); - } - else pwsi->err = WSAENOBUFS; - } - else pwsi->err = wsaErrno(); - - pwsi->flags &= ~WSI_BLOCKINGCALL; - } - return INVALID_SOCKET; + /* async select the accept()'ed socket */ + WSAAsyncSelect( s, pws->psop->hWnd, pws->psop->uMsg, + pws->flags & ~WS_FD_ACCEPT ); + } + return s; + } + else pwsi->err = WSAENOBUFS; + } + else pwsi->err = wsaErrno(); + } + return INVALID_SOCKET32; } -INT16 WINSOCK_bind(SOCKET16 s, struct sockaddr *name, INT16 namelen) +/*********************************************************************** + * accept() (WINSOCK.1) + */ +SOCKET16 WINAPI WINSOCK_accept16(SOCKET16 s, struct sockaddr* addr, + INT16* addrlen16 ) { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); + INT32 addrlen32 = *addrlen16; + SOCKET32 retSocket = WINSOCK_accept32( s, addr, &addrlen32 ); + *addrlen16 = (INT16)addrlen32; + return (SOCKET16)retSocket; +} - dprintf_winsock(stddeb, "WS_BIND(%08x): socket %04x, ptr %8x, length %d\n", +/*********************************************************************** + * bind() (WSOCK32.2) + */ +INT32 WINAPI WINSOCK_bind32(SOCKET32 s, struct sockaddr *name, INT32 namelen) +{ + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_BIND(%08x): socket %04x, ptr %8x, length %d\n", (unsigned)pwsi, s, (int) name, namelen); #if 0 - dump_sockaddr(name); + dump_sockaddr(name); #endif - if ( _check_ws(pwsi, pws) ) - if (namelen >= sizeof(*name)) - if ( ((struct sockaddr_in *)name)->sin_family == AF_INET ) + if ( _check_ws(pwsi, pws) ) + if ( namelen >= sizeof(*name) ) + if ( ((struct sockaddr_in *)name)->sin_family == AF_INET ) if ( bind(pws->fd, name, namelen) < 0 ) { int loc_errno = errno; @@ -469,34 +551,59 @@ default: pwsi->err = wsaErrno(); } } - else return 0; - else pwsi->err = WSAEAFNOSUPPORT; - else pwsi->err = WSAEFAULT; - return SOCKET_ERROR; + else return 0; /* success */ + else pwsi->err = WSAEAFNOSUPPORT; + else pwsi->err = WSAEFAULT; + return SOCKET_ERROR; } -INT16 WINSOCK_closesocket(SOCKET16 s) +/*********************************************************************** + * bind() (WINSOCK.2) + */ +INT16 WINAPI WINSOCK_bind16(SOCKET16 s, struct sockaddr *name, INT16 namelen) { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); - - dprintf_winsock(stddeb, "WS_CLOSE(%08x): socket %08x\n", (unsigned)pwsi, s); - - if( _check_ws(pwsi, pws) ) - { - int fd = pws->fd; - - cancel_async_select(pws); - pws->fd = -1; - pws->flags = (unsigned)pwsi->last_free; - pwsi->last_free = pws - &pwsi->sock[0]; - if (close(fd) == 0) return 0; - pwsi->err = (errno == EBADF) ? WSAENOTSOCK : wsaErrno(); - } - return SOCKET_ERROR; + return (INT16)WINSOCK_bind32( s, name, namelen ); } -INT16 WINSOCK_connect(SOCKET16 s, struct sockaddr *name, INT16 namelen) +/*********************************************************************** + * closesocket() (WSOCK32.3) + */ +INT32 WINAPI WINSOCK_closesocket32(SOCKET32 s) +{ + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_CLOSE(%08x): socket %08x\n", (unsigned)pwsi, s); + + if( _check_ws(pwsi, pws) ) + { + int fd = pws->fd; + + if( pws->psop ) WSAAsyncSelect( s, 0, 0, 0 ); + + pws->fd = -1; + pws->flags = (unsigned)pwsi->last_free; + pwsi->last_free = pws - &pwsi->sock[0]; /* add to free list */ + + if( close(fd) == 0 ) + return 0; + pwsi->err = (errno == EBADF) ? WSAENOTSOCK : wsaErrno(); + } + return SOCKET_ERROR; +} + +/*********************************************************************** + * closesocket() (WINSOCK.3) + */ +INT16 WINAPI WINSOCK_closesocket16(SOCKET16 s) +{ + return (INT16)WINSOCK_closesocket32(s); +} + +/*********************************************************************** + * connect() (WSOCK32.4) + */ +INT32 WINAPI WINSOCK_connect32(SOCKET32 s, struct sockaddr *name, INT32 namelen) { ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); LPWSINFO pwsi = wsi_find(GetCurrentTask()); @@ -511,13 +618,22 @@ { if (connect(pws->fd, name, namelen) == 0) { - if( pws->p_aop ) - /* we need to notify handler process if - * connect() succeeded NOT in response to winsock message - */ - notify_client(pws, WS_FD_CONNECTED); - - pws->flags &= ~(WS_FD_INACTIVE | WS_FD_CONNECT); + pws->flags &= ~(WS_FD_INACTIVE | WS_FD_CONNECT); + if( pws->psop && pws->flags & WS_FD_CONNECT ) + { + if( !(pws->flags & WS_FD_CONNECTED) ) + { + if( pws->flags & (WS_FD_READ | WS_FD_CLOSE) ) + EVENT_AddIO( pws->fd, EVENT_IO_READ ); + else + EVENT_DeleteIO( pws->fd, EVENT_IO_READ ); + if( pws->flags & WS_FD_WRITE ) + EVENT_AddIO( pws->fd, EVENT_IO_WRITE ); + else + EVENT_DeleteIO( pws->fd, EVENT_IO_WRITE ); + pws->flags |= WS_FD_CONNECTED; + } + } return 0; } pwsi->err = (errno == EINPROGRESS) ? WSAEWOULDBLOCK : wsaErrno(); @@ -525,77 +641,142 @@ return SOCKET_ERROR; } -INT16 WINSOCK_getpeername(SOCKET16 s, struct sockaddr *name, INT16 *namelen) +/*********************************************************************** + * connect() (WINSOCK.4) + */ +INT16 WINAPI WINSOCK_connect16(SOCKET16 s, struct sockaddr *name, INT16 namelen) { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); + return (INT16)WINSOCK_connect32( s, name, namelen ); +} - dprintf_winsock(stddeb, "WS_GETPEERNAME(%08x): socket: %04x, ptr %8x, ptr %8x\n", +/*********************************************************************** + * getpeername() (WSOCK32.5) + */ +INT32 WINAPI WINSOCK_getpeername32(SOCKET32 s, struct sockaddr *name, + INT32 *namelen) +{ + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GETPEERNAME(%08x): socket: %04x, ptr %8x, ptr %8x\n", (unsigned)pwsi, s, (int) name, *namelen); - if( _check_ws(pwsi, pws) ) - { - int namelen32 = *namelen; - if (getpeername(pws->fd, name, &namelen32) == 0) - { + if( _check_ws(pwsi, pws) ) + { + if (getpeername(pws->fd, name, namelen) == 0) + return 0; + pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); + } + return SOCKET_ERROR; +} + +/*********************************************************************** + * getpeername() (WINSOCK.5) + */ +INT16 WINAPI WINSOCK_getpeername16(SOCKET16 s, struct sockaddr *name, + INT16 *namelen16) +{ + INT32 namelen32 = *namelen16; + INT32 retVal = WINSOCK_getpeername32( s, name, &namelen32 ); + #if 0 - dump_sockaddr(name); + dump_sockaddr(name); #endif - *namelen = (INT16)namelen32; - return 0; - } - pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); - } - return SOCKET_ERROR; + + *namelen16 = namelen32; + return (INT16)retVal; } -INT16 WINSOCK_getsockname(SOCKET16 s, struct sockaddr *name, INT16 *namelen) +/*********************************************************************** + * getsockname() (WSOCK32.6) + */ +INT32 WINAPI WINSOCK_getsockname32(SOCKET32 s, struct sockaddr *name, + INT32 *namelen) { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); - dprintf_winsock(stddeb, "WS_GETSOCKNAME(%08x): socket: %04x, ptr %8x, ptr %8x\n", + dprintf_winsock(stddeb, "WS_GETSOCKNAME(%08x): socket: %04x, ptr %8x, ptr %8x\n", (unsigned)pwsi, s, (int) name, (int) *namelen); - if( _check_ws(pwsi, pws) ) - { - int namelen32 = *namelen; - if (getsockname(pws->fd, name, &namelen32) == 0) - { - *namelen = (INT16)namelen32; - return 0; + if( _check_ws(pwsi, pws) ) + { + if (getsockname(pws->fd, name, namelen) == 0) + return 0; + pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); } - pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); - } - return SOCKET_ERROR; + return SOCKET_ERROR; } -INT16 WINSOCK_getsockopt(SOCKET16 s, INT16 level, - INT16 optname, char *optval, INT16 *optlen) +/*********************************************************************** + * getsockname() (WINSOCK.6) + */ +INT16 WINAPI WINSOCK_getsockname16(SOCKET16 s, struct sockaddr *name, + INT16 *namelen16) { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); - - dprintf_winsock(stddeb, "WS_GETSOCKOPT(%08x): socket: %04x, opt %d, ptr %8x, ptr %8x\n", - (unsigned)pwsi, s, level, (int) optval, (int) *optlen); - - if( _check_ws(pwsi, pws) ) - { - int optlen32 = *optlen; - - convert_sockopt(&level, &optname); - if (getsockopt(pws->fd, (int) level, optname, optval, &optlen32) == 0 ) - { *optlen = (INT16)optlen32; return 0; } - pwsi->err = (errno == EBADF) ? WSAENOTSOCK : wsaErrno(); - } - return SOCKET_ERROR; + INT32 namelen32 = *namelen16; + INT32 retVal = WINSOCK_getsockname32( s, name, &namelen32 ); + *namelen16 = namelen32; + return (INT16)retVal; } -u_long WINSOCK_htonl(u_long hostlong) { return( htonl(hostlong) ); } -u_short WINSOCK_htons(u_short hostshort) { return( htons(hostshort) ); } -u_long WINSOCK_inet_addr(char *cp) { return( inet_addr(cp) ); } -u_long WINSOCK_ntohl(u_long netlong) { return( ntohl(netlong) ); } -u_short WINSOCK_ntohs(u_short netshort) { return( ntohs(netshort) ); } -SEGPTR WINSOCK_inet_ntoa(struct in_addr in) +/*********************************************************************** + * getsockopt() (WSOCK32.7) + */ +INT32 WINAPI WINSOCK_getsockopt32(SOCKET32 s, INT32 level, + INT32 optname, char *optval, INT32 *optlen) +{ + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GETSOCKOPT(%08x): socket: %04x, opt %d, ptr %8x, ptr %8x\n", + (unsigned)pwsi, s, level, (int) optval, (int) *optlen); + if( _check_ws(pwsi, pws) ) + { + convert_sockopt(&level, &optname); + if (getsockopt(pws->fd, (int) level, optname, optval, optlen) == 0 ) + return 0; + pwsi->err = (errno == EBADF) ? WSAENOTSOCK : wsaErrno(); + } + return SOCKET_ERROR; +} + +/*********************************************************************** + * getsockopt() (WINSOCK.7) + */ +INT16 WINAPI WINSOCK_getsockopt16(SOCKET16 s, INT16 level, + INT16 optname, char *optval, INT16 *optlen) +{ + INT32 optlen32 = *optlen; + INT32 retVal = WINSOCK_getsockopt32( s, level, optname, optval, &optlen32 ); + *optlen = optlen32; + return (INT16)retVal; +} + +/*********************************************************************** + * htonl() (WINSOCK.8)(WSOCK32.8) + */ +u_long WINAPI WINSOCK_htonl(u_long hostlong) { return( htonl(hostlong) ); } +/*********************************************************************** + * htons() (WINSOCK.9)(WSOCK32.9) + */ +u_short WINAPI WINSOCK_htons(u_short hostshort) { return( htons(hostshort) ); } +/*********************************************************************** + * inet_addr() (WINSOCK.10) + */ +u_long WINAPI WINSOCK_inet_addr(char *cp) { return( inet_addr(cp) ); } +/*********************************************************************** + * htohl() (WINSOCK.14)(WSOCK32.14) + */ +u_long WINAPI WINSOCK_ntohl(u_long netlong) { return( ntohl(netlong) ); } +/*********************************************************************** + * ntohs() (WINSOCK.15)(WSOCK32.15) + */ +u_short WINAPI WINSOCK_ntohs(u_short netshort) { return( ntohs(netshort) ); } + +/*********************************************************************** + * inet_ntoa() (WINSOCK.11) + */ +SEGPTR WINAPI WINSOCK_inet_ntoa(struct in_addr in) { /* use "buffer for dummies" here because some applications have * propensity to decode addresses in ws_hostent structure without @@ -623,7 +804,10 @@ return (SEGPTR)NULL; } -INT16 WINSOCK_ioctlsocket(SOCKET16 s, UINT32 cmd, UINT32 *argp) +/*********************************************************************** + * ioctlsocket() (WSOCK32.12) + */ +INT32 WINAPI WINSOCK_ioctlsocket32(SOCKET32 s, UINT32 cmd, UINT32 *argp) { ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); LPWSINFO pwsi = wsi_find(GetCurrentTask()); @@ -642,8 +826,9 @@ case WS_FIONBIO: newcmd=FIONBIO; - if( pws->p_aop && *argp == 0 ) + if( pws->psop && *argp == 0 ) { + /* AsyncSelect()'ed sockets are always nonblocking */ pwsi->err = WSAEINVAL; return SOCKET_ERROR; } @@ -668,81 +853,141 @@ return SOCKET_ERROR; } -INT16 WINSOCK_listen(SOCKET16 s, INT16 backlog) +/*********************************************************************** + * ioctlsocket() (WINSOCK.12) + */ +INT16 WINAPI WINSOCK_ioctlsocket16(SOCKET16 s, UINT32 cmd, UINT32 *argp) { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); + return (INT16)WINSOCK_ioctlsocket32( s, cmd, argp ); +} - dprintf_winsock(stddeb, "WS_LISTEN(%08x): socket %04x, backlog %d\n", - (unsigned)pwsi, s, backlog); - if( _check_ws(pwsi, pws) ) - { - if( !pws->p_aop ) + +/*********************************************************************** + * listen() (WSOCK32.13) + */ +INT32 WINAPI WINSOCK_listen32(SOCKET32 s, INT32 backlog) +{ + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_LISTEN(%08x): socket %04x, backlog %d\n", + (unsigned)pwsi, s, backlog); + if( _check_ws(pwsi, pws) ) { - int fd_flags = fcntl(pws->fd, F_GETFL, 0); - if( !(fd_flags & O_NONBLOCK) ) pws->flags |= WS_FD_ACCEPT; - } - else notify_client(pws, WS_FD_ACCEPT); + if( !pws->psop ) + { + int fd_flags = fcntl(pws->fd, F_GETFL, 0); + if( !(fd_flags & O_NONBLOCK) ) pws->flags |= WS_FD_ACCEPT; + } - if (listen(pws->fd, backlog) == 0) return 0; - pwsi->err = wsaErrno(); - } - return SOCKET_ERROR; + if (listen(pws->fd, backlog) == 0) return 0; + pwsi->err = wsaErrno(); + } + else if( pwsi ) pwsi->err = WSAENOTSOCK; + return SOCKET_ERROR; } -INT16 WINSOCK_recv(SOCKET16 s, char *buf, INT16 len, INT16 flags) +/*********************************************************************** + * listen() (WINSOCK.13) + */ +INT16 WINAPI WINSOCK_listen16(SOCKET16 s, INT16 backlog) { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); - - dprintf_winsock(stddeb, "WS_RECV(%08x): socket %04x, buf %8x, len %d, flags %d", - (unsigned)pwsi, s, (unsigned)buf, len, flags); - if( _check_ws(pwsi, pws) ) - { - int length; - if ((length = recv(pws->fd, buf, len, flags)) >= 0) - { - dprintf_winsock(stddeb, " -> %i bytes\n", length); - notify_client(pws, WS_FD_READ); - return (INT16)length; - } - pwsi->err = wsaErrno(); - } - dprintf_winsock(stddeb, " -> ERROR\n"); - return SOCKET_ERROR; + return (INT16)WINSOCK_listen32( s, backlog ); } -INT16 WINSOCK_recvfrom(SOCKET16 s, char *buf, INT16 len, INT16 flags, - struct sockaddr *from, INT16 *fromlen16) + +/*********************************************************************** + * recv() (WSOCK32.16) + */ +INT32 WINAPI WINSOCK_recv32(SOCKET32 s, char *buf, INT32 len, INT32 flags) { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); - dprintf_winsock(stddeb, "WS_RECVFROM(%08x): socket %04x, ptr %08x, len %d, flags %d\n", + dprintf_winsock(stddeb, "WS_RECV(%08x): socket %04x, buf %8x, len %d, flags %d", (unsigned)pwsi, s, (unsigned)buf, len, flags); - if( _check_ws(pwsi, pws) ) - { - int length, fromlen32 = *fromlen16; + if( _check_ws(pwsi, pws) ) + { + INT32 length; + if ((length = recv(pws->fd, buf, len, flags)) >= 0) + { + dprintf_winsock(stddeb, " -> %i bytes\n", length); - if ((length = recvfrom(pws->fd, buf, len, flags, from, &fromlen32)) >= 0) - { - *fromlen16 = fromlen32; - notify_client(pws, WS_FD_READ); - return (INT16)length; + if( pws->psop && (pws->flags & (WS_FD_READ | WS_FD_CLOSE)) ) + EVENT_AddIO( pws->fd, EVENT_IO_READ ); /* reenabler */ + + return length; + } + pwsi->err = wsaErrno(); } - pwsi->err = wsaErrno(); - } - return SOCKET_ERROR; + else if( pwsi ) pwsi->err = WSAENOTSOCK; + dprintf_winsock(stddeb, " -> ERROR\n"); + return SOCKET_ERROR; } -INT16 WINSOCK_select(INT16 nfds, ws_fd_set *ws_readfds, - ws_fd_set *ws_writefds, - ws_fd_set *ws_exceptfds, struct timeval *timeout) +/*********************************************************************** + * recv() (WINSOCK.16) + */ +INT16 WINAPI WINSOCK_recv16(SOCKET16 s, char *buf, INT16 len, INT16 flags) +{ + return (INT16)WINSOCK_recv32( s, buf, len, flags ); +} + + +/*********************************************************************** + * recvfrom() (WSOCK32.17) + */ +INT32 WINAPI WINSOCK_recvfrom32(SOCKET32 s, char *buf, INT32 len, INT32 flags, + struct sockaddr *from, INT32 *fromlen32) +{ + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_RECVFROM(%08x): socket %04x, ptr %08x, len %d, flags %d", + (unsigned)pwsi, s, (unsigned)buf, len, flags); + if( _check_ws(pwsi, pws) ) + { + int length; + + if ((length = recvfrom(pws->fd, buf, len, flags, from, fromlen32)) >= 0) + { + dprintf_winsock(stddeb, " -> %i bytes\n", length); + + if( pws->psop && (pws->flags & (WS_FD_READ | WS_FD_CLOSE)) ) + EVENT_AddIO( pws->fd, EVENT_IO_READ ); /* reenabler */ + + return (INT16)length; + } + pwsi->err = wsaErrno(); + } + else if( pwsi ) pwsi->err = WSAENOTSOCK; + dprintf_winsock(stddeb, " -> ERROR\n"); + return SOCKET_ERROR; +} + +/*********************************************************************** + * recvfrom() (WINSOCK.17) + */ +INT16 WINAPI WINSOCK_recvfrom16(SOCKET16 s, char *buf, INT16 len, INT16 flags, + struct sockaddr *from, INT16 *fromlen16) +{ + INT32 fromlen32 = *fromlen16; + INT32 retVal = WINSOCK_recvfrom32( s, buf, len, flags, from, &fromlen32 ); + *fromlen16 = fromlen32; + return (INT16)retVal; +} + +/*********************************************************************** + * select() (WINSOCK.18) + */ +INT16 WINAPI WINSOCK_select16(INT16 nfds, ws_fd_set *ws_readfds, + ws_fd_set *ws_writefds, ws_fd_set *ws_exceptfds, + struct timeval *timeout) { LPWSINFO pwsi = wsi_find(GetCurrentTask()); dprintf_winsock(stddeb, "WS_SELECT(%08x): nfds %d (ignored), read %8x, write %8x, excp %8x\n", - (unsigned) pwsi, nfds, (unsigned) ws_readfds, (unsigned) ws_writefds, (unsigned) ws_exceptfds); + (unsigned) pwsi, nfds, (unsigned) ws_readfds, (unsigned) ws_writefds, (unsigned) ws_exceptfds); if( pwsi ) { @@ -760,7 +1005,23 @@ { fd_set_update(pwsi, &readfds, ws_readfds, &errorfds); fd_set_update(pwsi, &writefds, ws_writefds, &errorfds); - fd_set_update_except(pwsi, &exceptfds, ws_exceptfds, &errorfds); + + /* update exception set (see "weirdness" comment in the + * beginning of the file). */ + + if (ws_exceptfds) + { + int i, j, count = ws_exceptfds->fd_count; + + for (i = j = 0; i < count; i++) + { + ws_socket *pws = (ws_socket *)WS_HANDLE2PTR(ws_exceptfds->fd_array[i]); + if( _check_ws(pwsi, pws) && + (FD_ISSET(pws->fd, &exceptfds) || FD_ISSET(pws->fd, &errorfds)) ) + ws_exceptfds->fd_array[j++] = ws_exceptfds->fd_array[i]; + } + ws_exceptfds->fd_count = j; + } } return highfd; } @@ -769,95 +1030,191 @@ return SOCKET_ERROR; } -INT16 WINSOCK_send(SOCKET16 s, char *buf, INT16 len, INT16 flags) +/*********************************************************************** + * select() (WSOCK32.18) + */ +INT32 WINAPI WINSOCK_select32(INT32 nfds, ws_fd_set *ws_readfds, + ws_fd_set *ws_writefds, ws_fd_set *ws_exceptfds, + struct timeval *timeout) { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); + /* struct timeval is the same for both 32- and 16-bit code */ + return WINSOCK_select16( (INT16)nfds, ws_readfds, ws_writefds, ws_exceptfds, timeout ); +} - dprintf_winsock(stddeb, "WS_SEND(%08x): socket %04x, ptr %08x, length %d, flags %d\n", + +/*********************************************************************** + * send() (WSOCK32.19) + */ +INT32 WINAPI WINSOCK_send32(SOCKET32 s, char *buf, INT32 len, INT32 flags) +{ + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_SEND(%08x): socket %04x, ptr %08x, length %d, flags %d\n", (unsigned)pwsi, s, (unsigned) buf, len, flags); - if( _check_ws(pwsi, pws) ) - { - int length; - if ((length = send(pws->fd, buf, len, flags)) < 0 ) - { - length = SOCKET_ERROR; + if( _check_ws(pwsi, pws) ) + { + int length; + + if ((length = send(pws->fd, buf, len, flags)) < 0 ) + { + pwsi->err = wsaErrno(); + if( pwsi->err == WSAEWOULDBLOCK && + pws->psop && pws->flags & WS_FD_WRITE ) + EVENT_AddIO( pws->fd, EVENT_IO_WRITE ); /* reenabler */ + } + else return (INT16)length; + } + else if( pwsi ) pwsi->err = WSAENOTSOCK; + return SOCKET_ERROR; +} + +/*********************************************************************** + * send() (WINSOCK.19) + */ +INT16 WINAPI WINSOCK_send16(SOCKET16 s, char *buf, INT16 len, INT16 flags) +{ + return WINSOCK_send32( s, buf, len, flags ); +} + +/*********************************************************************** + * sendto() (WSOCK32.20) + */ +INT32 WINAPI WINSOCK_sendto32(SOCKET32 s, char *buf, INT32 len, INT32 flags, + struct sockaddr *to, INT32 tolen) +{ + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_SENDTO(%08x): socket %04x, ptr %08x, length %d, flags %d\n", + (unsigned)pwsi, s, (unsigned) buf, len, flags); + if( _check_ws(pwsi, pws) ) + { + INT32 length; + + if ((length = sendto(pws->fd, buf, len, flags, to, tolen)) < 0 ) + { + pwsi->err = wsaErrno(); + if( pwsi->err == WSAEWOULDBLOCK && + pws->psop && pws->flags & WS_FD_WRITE ) + EVENT_AddIO( pws->fd, EVENT_IO_WRITE ); /* reenabler */ + } + else return length; + } + else if( pwsi ) pwsi->err = WSAENOTSOCK; + return SOCKET_ERROR; +} + +/*********************************************************************** + * sendto() (WINSOCK.20) + */ +INT16 WINAPI WINSOCK_sendto16(SOCKET16 s, char *buf, INT16 len, INT16 flags, + struct sockaddr *to, INT16 tolen) +{ + return (INT16)WINSOCK_sendto32( s, buf, len, flags, to, tolen ); +} + +/*********************************************************************** + * setsockopt() (WSOCK32.21) + */ +INT32 WINAPI WINSOCK_setsockopt32(SOCKET16 s, INT32 level, INT32 optname, + char *optval, INT32 optlen) +{ + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_SETSOCKOPT(%08x): socket %04x, lev %d, opt %d, ptr %08x, len %d\n", + (unsigned)pwsi, s, level, optname, (int) optval, optlen); + if( _check_ws(pwsi, pws) ) + { + convert_sockopt(&level, &optname); + if (setsockopt(pws->fd, level, optname, optval, optlen) == 0) return 0; pwsi->err = wsaErrno(); } - notify_client(pws, WS_FD_WRITE); - return (INT16)length; - } - return SOCKET_ERROR; + else if( pwsi ) pwsi->err = WSAENOTSOCK; + return SOCKET_ERROR; } -INT16 WINSOCK_sendto(SOCKET16 s, char *buf, INT16 len, INT16 flags, - struct sockaddr *to, INT16 tolen) +/*********************************************************************** + * setsockopt() (WINSOCK.21) + */ +INT16 WINAPI WINSOCK_setsockopt16(SOCKET16 s, INT16 level, INT16 optname, + char *optval, INT16 optlen) { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); - - dprintf_winsock(stddeb, "WS_SENDTO(%08x): socket %04x, ptr %08x, length %d, flags %d\n", - (unsigned)pwsi, s, (unsigned) buf, len, flags); - if( _check_ws(pwsi, pws) ) - { - int length; - - if ((length = sendto(pws->fd, buf, len, flags, to, tolen)) < 0 ) - { - length = SOCKET_ERROR; - pwsi->err = wsaErrno(); - } - notify_client(pws, WS_FD_WRITE); - return (INT16)length; - } - return SOCKET_ERROR; -} - -INT16 WINSOCK_setsockopt(SOCKET16 s, INT16 level, INT16 optname, - char *optval, INT16 optlen) -{ - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); - - dprintf_winsock(stddeb, "WS_SETSOCKOPT(%08x): socket %04x, level %d, opt %d, ptr %08x, len %d\n", - (unsigned)pwsi, s, level, optname, (int) optval, optlen); - if( _check_ws(pwsi, pws) ) - { - int linger32[2]; - convert_sockopt(&level, &optname); + INT32 linger32[2]; if( optname == SO_LINGER ) { - INT16* ptr = (INT16*)optval; - linger32[0] = ptr[0]; - linger32[1] = ptr[1]; + INT16* ptr = (INT16*)optval; + linger32[0] = ptr[0]; + linger32[1] = ptr[1]; optval = (char*)&linger32; optlen = sizeof(linger32); } - if (setsockopt(pws->fd, level, optname, optval, optlen) == 0) return 0; - pwsi->err = wsaErrno(); - } - return SOCKET_ERROR; + return (INT16)WINSOCK_setsockopt32( s, level, optname, optval, optlen ); } -INT16 WINSOCK_shutdown(SOCKET16 s, INT16 how) + +/*********************************************************************** + * shutdown() (WSOCK32.22) + */ +INT32 WINAPI WINSOCK_shutdown32(SOCKET32 s, INT32 how) { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); - dprintf_winsock(stddeb, "WS_SHUTDOWN(%08x): socket %04x, how %i\n", - (unsigned)pwsi, s, how ); - if( _check_ws(pwsi, pws) ) - { - pws->flags |= WS_FD_INACTIVE; - cancel_async_select(pws); + dprintf_winsock(stddeb, "WS_SHUTDOWN(%08x): socket %04x, how %i\n", + (unsigned)pwsi, s, how ); + if( _check_ws(pwsi, pws) ) + { + if( pws->psop ) + switch( how ) + { + case 0: /* drop receives */ + if( pws->flags & (WS_FD_READ | WS_FD_CLOSE) ) + EVENT_DeleteIO( pws->fd, EVENT_IO_READ ); + pws->flags &= ~(WS_FD_READ | WS_FD_CLOSE); + break; - if (shutdown(pws->fd, how) == 0) return 0; - pwsi->err = wsaErrno(); - } - return SOCKET_ERROR; + case 1: /* drop sends */ + if( pws->flags & WS_FD_WRITE ) + EVENT_DeleteIO( pws->fd, EVENT_IO_WRITE ); + pws->flags &= ~WS_FD_WRITE; + break; + + case 2: /* drop all */ + default: + WSAAsyncSelect( s, 0, 0, 0 ); + break; + } + + if (shutdown(pws->fd, how) == 0) + { + if( how > 1 ) + { + pws->flags &= ~WS_FD_CONNECTED; + pws->flags |= WS_FD_INACTIVE; + } + return 0; + } + pwsi->err = wsaErrno(); + } + else if( pwsi ) pwsi->err = WSAENOTSOCK; + return SOCKET_ERROR; } -SOCKET16 WINSOCK_socket(INT16 af, INT16 type, INT16 protocol) +/*********************************************************************** + * shutdown() (WINSOCK.22) + */ +INT16 WINAPI WINSOCK_shutdown16(SOCKET16 s, INT16 how) +{ + return (INT16)WINSOCK_shutdown32( s, how ); +} + + +/*********************************************************************** + * socket() (WSOCK32.23) + */ +SOCKET32 WINAPI WINSOCK_socket32(INT32 af, INT32 type, INT32 protocol) { LPWSINFO pwsi = wsi_find(GetCurrentTask()); @@ -873,7 +1230,8 @@ { case AF_INET: case AF_UNSPEC: break; - default: pwsi->err = WSAEAFNOSUPPORT; return INVALID_SOCKET; + default: pwsi->err = WSAEAFNOSUPPORT; + return INVALID_SOCKET32; } /* check the socket type */ @@ -881,13 +1239,14 @@ { case SOCK_STREAM: case SOCK_DGRAM: - case SOCK_RAW: break; - default: pwsi->err = WSAESOCKTNOSUPPORT; return INVALID_SOCKET; + case SOCK_RAW: break; + default: pwsi->err = WSAESOCKTNOSUPPORT; + return INVALID_SOCKET32; } /* check the protocol type */ if ( protocol < 0 ) /* don't support negative values */ - { pwsi->err = WSAEPROTONOSUPPORT; return INVALID_SOCKET; } + { pwsi->err = WSAEPROTONOSUPPORT; return INVALID_SOCKET32; } if ( af == AF_UNSPEC) /* did they not specify the address family? */ switch(protocol) @@ -896,7 +1255,7 @@ if (type == SOCK_STREAM) { af = AF_INET; break; } case IPPROTO_UDP: if (type == SOCK_DGRAM) { af = AF_INET; break; } - default: pwsi->err = WSAEPROTOTYPE; return INVALID_SOCKET; + default: pwsi->err = WSAEPROTOTYPE; return INVALID_SOCKET32; } if ((sock = socket(af, type, protocol)) >= 0) @@ -906,11 +1265,10 @@ dprintf_winsock(stddeb,"\tcreated %04x (handle %i)\n", sock, (UINT16)WS_PTR2HANDLE(pnew)); if( pnew ) return (SOCKET16)WS_PTR2HANDLE(pnew); - { - close(sock); - pwsi->err = WSAENOBUFS; - return INVALID_SOCKET; - } + + close(sock); + pwsi->err = WSAENOBUFS; + return INVALID_SOCKET32; } if (errno == EPERM) /* raw socket denied */ @@ -921,265 +1279,337 @@ } dprintf_winsock(stddeb, "\t\tfailed!\n"); - return INVALID_SOCKET; + return INVALID_SOCKET32; +} + +/*********************************************************************** + * socket() (WINSOCK.23) + */ +SOCKET16 WINAPI WINSOCK_socket16(INT16 af, INT16 type, INT16 protocol) +{ + return (SOCKET16)WINSOCK_socket32( af, type, protocol ); } -/* ----- database functions +/* ----------------------------------- DNS services * - * Note that ws_...ent structures we return have SEGPTR pointers inside them. + * IMPORTANT: 16-bit API structures have SEGPTR pointers inside them. + * Also, we have to use wsock32 stubs to convert error codes from Unix + * to WSA, hence no direct mapping in if1632/wsock32.spec. + * + * FIXME: Win32 may need "short" h_addrtype and h_length in + * ...ent structures. If so, use WS_dup_...(pwsi, ..., 0) to + * convert. */ static char* NULL_STRING = "NULL"; -/* -struct WIN_hostent * -*/ -SEGPTR WINSOCK_gethostbyaddr(const char *addr, INT16 len, INT16 type) -{ - LPWSINFO pwsi = wsi_find(GetCurrentTask()); - dprintf_winsock(stddeb, "WS_GetHostByAddr(%08x): ptr %8x, len %d, type %d\n", +/*********************************************************************** + * gethostbyaddr() (WINSOCK.51) + * + * +struct WIN_hostent * + */ +SEGPTR WINAPI WINSOCK_gethostbyaddr16(const char *addr, INT16 len, INT16 type) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GetHostByAddr16(%08x): ptr %8x, len %d, type %d\n", (unsigned)pwsi, (unsigned) addr, len, type); - if( pwsi ) - { - struct hostent* host; - if( (host = gethostbyaddr(addr, len, type)) != NULL ) - if( WS_dup_he(pwsi, host, WS_DUP_SEGPTR) ) - return SEGPTR_GET(pwsi->buffer); - else pwsi->err = WSAENOBUFS; - else pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); - } - return NULL; -} - -/* -struct WIN_hostent * -*/ -SEGPTR WINSOCK_gethostbyname(const char *name) -{ - LPWSINFO pwsi = wsi_find(GetCurrentTask()); - - dprintf_winsock(stddeb, "WS_GetHostByName(%08x): %s\n", - (unsigned)pwsi, (name)?name:"NULL"); - if( pwsi ) - { - struct hostent* host; - if( (host = gethostbyname(name)) != NULL ) - if( WS_dup_he(pwsi, host, WS_DUP_SEGPTR) ) - return SEGPTR_GET(pwsi->buffer); - else pwsi->err = WSAENOBUFS; - else pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); - } - return NULL; -} - -INT16 WINSOCK_gethostname(char *name, INT16 namelen) -{ - LPWSINFO pwsi = wsi_find(GetCurrentTask()); - - dprintf_winsock(stddeb, "WS_GetHostName(%08x): name %s, len %d\n", - (unsigned)pwsi, (name)?name:NULL_STRING, namelen); - if( pwsi ) - { - if (gethostname(name, namelen) == 0) return 0; - pwsi->err = (errno == EINVAL) ? WSAEFAULT : wsaErrno(); - } - return SOCKET_ERROR; -} - -/* -struct WIN_protoent * -*/ -SEGPTR WINSOCK_getprotobyname(char *name) -{ - LPWSINFO pwsi = wsi_find(GetCurrentTask()); - - dprintf_winsock(stddeb, "WS_GetProtoByName(%08x): %s\n", - (unsigned)pwsi, (name)?name:NULL_STRING); - if( pwsi ) - { - struct protoent* proto; - if( (proto = getprotobyname(name)) != NULL ) - if( WS_dup_pe(pwsi, proto, WS_DUP_SEGPTR) ) - return SEGPTR_GET(pwsi->buffer); - else pwsi->err = WSAENOBUFS; - else pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); - } - return NULL; -} - -/* -struct WIN_protoent * -*/ -SEGPTR WINSOCK_getprotobynumber(INT16 number) -{ - LPWSINFO pwsi = wsi_find(GetCurrentTask()); - - dprintf_winsock(stddeb, "WS_GetProtoByNumber(%08x): %i\n", (unsigned)pwsi, number); - - if( pwsi ) - { - struct protoent* proto; - if( (proto = getprotobynumber(number)) != NULL ) - if( WS_dup_pe(pwsi, proto, WS_DUP_SEGPTR) ) - return SEGPTR_GET(pwsi->buffer); - else pwsi->err = WSAENOBUFS; - else pwsi->err = WSANO_DATA; - } - return NULL; -} - -/* -struct WIN_servent * -*/ -SEGPTR WINSOCK_getservbyname(const char *name, const char *proto) -{ - LPWSINFO pwsi = wsi_find(GetCurrentTask()); - - dprintf_winsock(stddeb, "WS_GetServByName(%08x): '%s', '%s'\n", - (unsigned)pwsi, (name)?name:NULL_STRING, (proto)?proto:NULL_STRING); - - if( pwsi ) - { - struct servent* serv; - if( (serv = getservbyname(name, proto)) != NULL ) - if( WS_dup_se(pwsi, serv, WS_DUP_SEGPTR) ) - return SEGPTR_GET(pwsi->buffer); - else pwsi->err = WSAENOBUFS; - else pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); - } - return NULL; -} - -/* -struct WIN_servent * -*/ -SEGPTR WINSOCK_getservbyport(INT16 port, const char *proto) -{ - LPWSINFO pwsi = wsi_find(GetCurrentTask()); - - dprintf_winsock(stddeb, "WS_GetServByPort(%08x): %i, '%s'\n", - (unsigned)pwsi, (int)port, (proto)?proto:NULL_STRING); - if( pwsi ) - { - struct servent* serv; - if( (serv = getservbyport(port, proto)) != NULL ) - if( WS_dup_se(pwsi, serv, WS_DUP_SEGPTR) ) - return SEGPTR_GET(pwsi->buffer); - else pwsi->err = WSAENOBUFS; - else pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); - } - return NULL; -} - - -/* ----------------------------------- Windows sockets extensions -- * - * * - * ----------------------------------------------------------------- */ - -static int aop_control(ws_async_op* p_aop, int flag ) -{ - unsigned lLength; - - read(p_aop->fd[0], &lLength, sizeof(unsigned)); - if( LOWORD(lLength) ) - if( (int)LOWORD(lLength) <= p_aop->buflen ) + if( pwsi ) { - char* buffer = (char*)PTR_SEG_TO_LIN(p_aop->buffer_base); - read(p_aop->fd[0], buffer, LOWORD(lLength)); - switch( p_aop->flags ) - { - case WSMSG_ASYNC_HOSTBYNAME: - case WSMSG_ASYNC_HOSTBYADDR: - fixup_wshe((struct ws_hostent*)buffer, p_aop->buffer_base); break; - case WSMSG_ASYNC_PROTOBYNAME: - case WSMSG_ASYNC_PROTOBYNUM: - fixup_wspe((struct ws_protoent*)buffer, p_aop->buffer_base); break; - case WSMSG_ASYNC_SERVBYNAME: - case WSMSG_ASYNC_SERVBYPORT: - fixup_wsse((struct ws_servent*)buffer, p_aop->buffer_base); break; - default: - if( p_aop->flags ) fprintf(stderr,"Received unknown async request!\n"); - return AOP_CONTROL_REMOVE; - } + struct hostent* host = gethostbyaddr(addr, len, type); + if( host ) + if( WS_dup_he(pwsi, host, WS_DUP_SEGPTR) ) + return SEGPTR_GET(pwsi->buffer); + else + pwsi->err = WSAENOBUFS; + else + pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); } - else lLength = ((UINT32)LOWORD(lLength)) | ((unsigned)WSAENOBUFS << 16); - -#if 0 - printf("async op completed: hWnd [%04x], uMsg [%04x], aop [%04x], event [%08x]\n", - p_aop->hWnd, p_aop->uMsg, (HANDLE16)WS_PTR2HANDLE(p_aop), (LPARAM)lLength); -#endif - - PostMessage16(p_aop->hWnd, p_aop->uMsg, (HANDLE16)WS_PTR2HANDLE(p_aop), (LPARAM)lLength); - return AOP_CONTROL_REMOVE; + return (SEGPTR)NULL; } - -static HANDLE16 __WSAsyncDBQuery(LPWSINFO pwsi, HWND16 hWnd, UINT16 uMsg, LPCSTR init, - INT16 len, INT16 type, SEGPTR sbuf, INT16 buflen, UINT32 flag) +/*********************************************************************** + * gethostbyaddr() (WSOCK32.51) + */ +struct hostent* WINAPI WINSOCK_gethostbyaddr32(const char *addr, INT32 len, + INT32 type) { - /* queue 'flag' request and fork off its handler */ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); - async_ctl.ws_aop = (ws_async_op*)WS_ALLOC(sizeof(ws_async_op)); - - if( async_ctl.ws_aop ) - { - HANDLE16 handle = (HANDLE16)WS_PTR2HANDLE(async_ctl.ws_aop); - - if( pipe(async_ctl.ws_aop->fd) == 0 ) - { - async_ctl.init = (char*)init; - async_ctl.lLength = len; - async_ctl.lEvent = type; - - async_ctl.ws_aop->hWnd = hWnd; - async_ctl.ws_aop->uMsg = uMsg; - - async_ctl.ws_aop->buffer_base = sbuf; async_ctl.ws_aop->buflen = buflen; - async_ctl.ws_aop->flags = flag; - async_ctl.ws_aop->aop_control = &aop_control; - WINSOCK_link_async_op( async_ctl.ws_aop ); - - async_ctl.ws_aop->pid = fork(); - if( async_ctl.ws_aop->pid ) - { - close(async_ctl.ws_aop->fd[1]); /* write endpoint */ - - /* Damn, BSD'ish SIGIO doesn't work on pipes/streams - * - * async_io(async_ctl.ws_aop->fd[0], 1); - */ - - dprintf_winsock(stddeb, "\tasync_op = %04x (child %i)\n", - handle, async_ctl.ws_aop->pid); - return handle; - } else - /* child process */ - { - close(async_ctl.ws_aop->fd[0]); /* read endpoint */ - switch(flag) - { - case WSMSG_ASYNC_HOSTBYADDR: - case WSMSG_ASYNC_HOSTBYNAME: - WS_do_async_gethost(pwsi,flag); - case WSMSG_ASYNC_PROTOBYNUM: - case WSMSG_ASYNC_PROTOBYNAME: - WS_do_async_getproto(pwsi,flag); - case WSMSG_ASYNC_SERVBYPORT: - case WSMSG_ASYNC_SERVBYNAME: - WS_do_async_getserv(pwsi,flag); - } - _exit(0); /* skip atexit()'ed cleanup */ - } - } - WS_FREE(async_ctl.ws_aop); - pwsi->err = wsaErrno(); - } else pwsi->err = WSAEWOULDBLOCK; - return 0; + dprintf_winsock(stddeb, "WS_GetHostByAddr32(%08x): ptr %8x, len %d, type %d\n", + (unsigned)pwsi, (unsigned) addr, len, type); + if( pwsi ) + { + struct hostent* host = gethostbyaddr( addr, len, type ); + if( host ) + return host; + pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); + } + return NULL; } -HANDLE16 WSAAsyncGetHostByAddr(HWND16 hWnd, UINT16 uMsg, LPCSTR addr, +/*********************************************************************** + * gethostbyname() (WINSOCK.52) + * + * +struct WIN_hostent * + */ +SEGPTR WINAPI WINSOCK_gethostbyname16(const char *name) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GetHostByName16(%08x): %s\n", + (unsigned)pwsi, (name)?name:"NULL"); + if( pwsi ) + { + struct hostent* host; + if( (host = gethostbyname(name)) != NULL ) + if( WS_dup_he(pwsi, host, WS_DUP_SEGPTR) ) + return SEGPTR_GET(pwsi->buffer); + else pwsi->err = WSAENOBUFS; + else pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); + } + return (SEGPTR)NULL; +} + +/*********************************************************************** + * gethostbyname() (WSOCK32,52) + */ +struct hostent* WINAPI WINSOCK_gethostbyname32(const char* name) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GetHostByName32(%08x): %s\n", + (unsigned)pwsi, (name)?name:"NULL"); + if( pwsi ) + { + struct hostent* host = gethostbyname( name ); + if( host ) + return host; + pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); + } + return NULL; +} + +/*********************************************************************** + * gethostname() (WSOCK32.57) + */ +INT32 WINAPI WINSOCK_gethostname32(char *name, INT32 namelen) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GetHostName(%08x): name %s, len %d\n", + (unsigned)pwsi, (name)?name:NULL_STRING, namelen); + if( pwsi ) + { + if (gethostname(name, namelen) == 0) return 0; + pwsi->err = (errno == EINVAL) ? WSAEFAULT : wsaErrno(); + } + return SOCKET_ERROR; +} + +/*********************************************************************** + * gethostname() (WINSOCK.57) + */ +INT16 WINAPI WINSOCK_gethostname16(char *name, INT16 namelen) +{ + return (INT16)WINSOCK_gethostname32(name, namelen); +} + +/*********************************************************************** + * getprotobyname() (WINSOCK.53) + * + * +struct WIN_protoent * + */ +SEGPTR WINAPI WINSOCK_getprotobyname16(char *name) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GetProtoByName16(%08x): %s\n", + (unsigned)pwsi, (name)?name:NULL_STRING); + if( pwsi ) + { + struct protoent* proto; + if( (proto = getprotobyname(name)) != NULL ) + if( WS_dup_pe(pwsi, proto, WS_DUP_SEGPTR) ) + return SEGPTR_GET(pwsi->buffer); + else pwsi->err = WSAENOBUFS; + else pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); + } + return (SEGPTR)NULL; +} + +/*********************************************************************** + * getprotobyname() (WSOCK32.53) + */ +struct protoent* WINAPI WINSOCK_getprotobyname32(char* name) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GetProtoByName32(%08x): %s\n", + (unsigned)pwsi, (name)?name:NULL_STRING); + if( pwsi ) + { + struct protoent* proto; + if( (proto = getprotobyname(name)) != NULL ) + return proto; + pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); + } + return NULL; +} + + +/*********************************************************************** + * getprotobynumber() (WINSOCK.54) + * + * +struct WIN_protoent * + */ +SEGPTR WINAPI WINSOCK_getprotobynumber16(INT16 number) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GetProtoByNumber16(%08x): %i\n", (unsigned)pwsi, number); + + if( pwsi ) + { + struct protoent* proto; + if( (proto = getprotobynumber(number)) != NULL ) + if( WS_dup_pe(pwsi, proto, WS_DUP_SEGPTR) ) + return SEGPTR_GET(pwsi->buffer); + else pwsi->err = WSAENOBUFS; + else pwsi->err = WSANO_DATA; + } + return (SEGPTR)NULL; +} + +/*********************************************************************** + * getprotobynumber() (WSOCK32.54) + */ +struct protoent* WINAPI WINSOCK_getprotobynumber32(INT32 number) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GetProtoByNumber32(%08x): %i\n", (unsigned)pwsi, number); + + if( pwsi ) + { + struct protoent* proto; + if( (proto = getprotobynumber(number)) != NULL ) + return proto; + pwsi->err = WSANO_DATA; + } + return NULL; +} + +/*********************************************************************** + * getservbyname() (WINSOCK.55) + * + * +struct WIN_servent * + */ +SEGPTR WINAPI WINSOCK_getservbyname16(const char *name, const char *proto) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GetServByName16(%08x): '%s', '%s'\n", + (unsigned)pwsi, (name)?name:NULL_STRING, (proto)?proto:NULL_STRING); + if( pwsi ) + { + struct servent* serv; + if( (serv = getservbyname(name, proto)) != NULL ) + if( WS_dup_se(pwsi, serv, WS_DUP_SEGPTR) ) + return SEGPTR_GET(pwsi->buffer); + else pwsi->err = WSAENOBUFS; + else pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); + } + return (SEGPTR)NULL; +} + +/*********************************************************************** + * getservbyname() (WSOCK32.55) + */ +struct servent* WINAPI WINSOCK_getservbyname32(const char *name, const char *proto) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GetServByName32(%08x): '%s', '%s'\n", + (unsigned)pwsi, (name)?name:NULL_STRING, (proto)?proto:NULL_STRING); + if( pwsi ) + { + struct servent* serv; + if( (serv = getservbyname(name, proto)) != NULL ) + return serv; + pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); + } + return NULL; +} + +/*********************************************************************** + * getservbyport() (WINSOCK.56) + * + * +struct WIN_servent * + */ +SEGPTR WINAPI WINSOCK_getservbyport16(INT16 port, const char *proto) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GetServByPort16(%08x): %i, '%s'\n", + (unsigned)pwsi, (int)port, (proto)?proto:NULL_STRING); + if( pwsi ) + { + struct servent* serv; + if( (serv = getservbyport(port, proto)) != NULL ) + if( WS_dup_se(pwsi, serv, WS_DUP_SEGPTR) ) + return SEGPTR_GET(pwsi->buffer); + else pwsi->err = WSAENOBUFS; + else pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); + } + return (SEGPTR)NULL; +} + +/*********************************************************************** + * getservbyport() (WSOCK32.56) + */ +struct servent* WINAPI WINSOCK_getservbyport32(INT32 port, const char *proto) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_GetServByPort32(%08x): %i, '%s'\n", + (unsigned)pwsi, (int)port, (proto)?proto:NULL_STRING); + if( pwsi ) + { + struct servent* serv; + if( (serv = getservbyport(port, proto)) != NULL ) + return serv; + pwsi->err = (h_errno < 0) ? wsaErrno() : wsaHerrno(); + } + return NULL; +} + + +/* ------------------------------------- Windows sockets extensions -- * + * * + * ------------------------------------------------------------------- */ + + +/*********************************************************************** + * Asynchronous DNS services + */ + +/* winsock_dns.c */ +extern HANDLE16 __WSAsyncDBQuery(LPWSINFO pwsi, HWND16 hWnd, UINT16 uMsg, INT16 type, LPCSTR init, + INT16 len, LPCSTR proto, SEGPTR sbuf, INT16 buflen, UINT32 flag); + +/*********************************************************************** + * WSAAsyncGetHostByAddr() (WINSOCK.102) + */ +HANDLE16 WINAPI WSAAsyncGetHostByAddr(HWND16 hWnd, UINT16 uMsg, LPCSTR addr, INT16 len, INT16 type, SEGPTR sbuf, INT16 buflen) { LPWSINFO pwsi = wsi_find(GetCurrentTask()); @@ -1188,14 +1618,17 @@ (unsigned)pwsi, hWnd, uMsg, (unsigned)addr , len ); if( pwsi ) - return __WSAsyncDBQuery(pwsi, hWnd, uMsg, addr, len, - type, sbuf, buflen, WSMSG_ASYNC_HOSTBYADDR ); + return __WSAsyncDBQuery(pwsi, hWnd, uMsg, type, addr, len, + NULL, sbuf, buflen, WSMSG_ASYNC_HOSTBYADDR ); return 0; } -HANDLE16 WSAAsyncGetHostByName(HWND16 hWnd, UINT16 uMsg, LPCSTR name, - SEGPTR sbuf, INT16 buflen) +/*********************************************************************** + * WSAAsyncGetHostByName() (WINSOCK.103) + */ +HANDLE16 WINAPI WSAAsyncGetHostByName(HWND16 hWnd, UINT16 uMsg, LPCSTR name, + SEGPTR sbuf, INT16 buflen) { LPWSINFO pwsi = wsi_find(GetCurrentTask()); @@ -1203,14 +1636,17 @@ (unsigned)pwsi, hWnd, uMsg, (name)?name:NULL_STRING, (int)buflen ); if( pwsi ) - return __WSAsyncDBQuery(pwsi, hWnd, uMsg, name, 0, - 0, sbuf, buflen, WSMSG_ASYNC_HOSTBYNAME ); + return __WSAsyncDBQuery(pwsi, hWnd, uMsg, 0, name, 0, + NULL, sbuf, buflen, WSMSG_ASYNC_HOSTBYNAME ); return 0; } -HANDLE16 WSAAsyncGetProtoByName(HWND16 hWnd, UINT16 uMsg, LPCSTR name, - SEGPTR sbuf, INT16 buflen) +/*********************************************************************** + * WSAAsyncGetProtoByName() (WINSOCK.105) + */ +HANDLE16 WINAPI WSAAsyncGetProtoByName(HWND16 hWnd, UINT16 uMsg, LPCSTR name, + SEGPTR sbuf, INT16 buflen) { LPWSINFO pwsi = wsi_find(GetCurrentTask()); @@ -1218,14 +1654,17 @@ (unsigned)pwsi, hWnd, uMsg, (name)?name:NULL_STRING ); if( pwsi ) - return __WSAsyncDBQuery(pwsi, hWnd, uMsg, name, 0, - 0, sbuf, buflen, WSMSG_ASYNC_PROTOBYNAME ); + return __WSAsyncDBQuery(pwsi, hWnd, uMsg, 0, name, 0, + NULL, sbuf, buflen, WSMSG_ASYNC_PROTOBYNAME ); return 0; } -HANDLE16 WSAAsyncGetProtoByNumber(HWND16 hWnd, UINT16 uMsg, INT16 number, - SEGPTR sbuf, INT16 buflen) +/*********************************************************************** + * WSAAsyncGetProtoByNumber() (WINSOCK.104) + */ +HANDLE16 WINAPI WSAAsyncGetProtoByNumber(HWND16 hWnd, UINT16 uMsg, INT16 number, + SEGPTR sbuf, INT16 buflen) { LPWSINFO pwsi = wsi_find(GetCurrentTask()); @@ -1233,14 +1672,17 @@ (unsigned)pwsi, hWnd, uMsg, number ); if( pwsi ) - return __WSAsyncDBQuery(pwsi, hWnd, uMsg, NULL, 0, - number, sbuf, buflen, WSMSG_ASYNC_PROTOBYNUM ); + return __WSAsyncDBQuery(pwsi, hWnd, uMsg, number, NULL, 0, + NULL, sbuf, buflen, WSMSG_ASYNC_PROTOBYNUM ); return 0; } -HANDLE16 WSAAsyncGetServByName(HWND16 hWnd, UINT16 uMsg, LPCSTR name, - LPCSTR proto, SEGPTR sbuf, INT16 buflen) +/*********************************************************************** + * WSAAsyncGetServByName() (WINSOCK.107) + */ +HANDLE16 WINAPI WSAAsyncGetServByName(HWND16 hWnd, UINT16 uMsg, LPCSTR name, + LPCSTR proto, SEGPTR sbuf, INT16 buflen) { LPWSINFO pwsi = wsi_find(GetCurrentTask()); @@ -1248,17 +1690,16 @@ (unsigned)pwsi, hWnd, uMsg, (name)?name:NULL_STRING, (proto)?proto:NULL_STRING ); if( pwsi ) - { - async_ctl.buffer = (char*)proto; - return __WSAsyncDBQuery(pwsi, hWnd, uMsg, name, 0, - 0, sbuf, buflen, WSMSG_ASYNC_SERVBYNAME ); - } + return __WSAsyncDBQuery(pwsi, hWnd, uMsg, 0, name, 0, + proto, sbuf, buflen, WSMSG_ASYNC_SERVBYNAME ); return 0; } - -HANDLE16 WSAAsyncGetServByPort(HWND16 hWnd, UINT16 uMsg, INT16 port, - LPCSTR proto, SEGPTR sbuf, INT16 buflen) +/*********************************************************************** + * WSAAsyncGetServByPort() (WINSOCK.106) + */ +HANDLE16 WINAPI WSAAsyncGetServByPort(HWND16 hWnd, UINT16 uMsg, INT16 port, + LPCSTR proto, SEGPTR sbuf, INT16 buflen) { LPWSINFO pwsi = wsi_find(GetCurrentTask()); @@ -1266,170 +1707,315 @@ (unsigned)pwsi, hWnd, uMsg, port, (proto)?proto:NULL_STRING ); if( pwsi ) - return __WSAsyncDBQuery(pwsi, hWnd, uMsg, proto, 0, - port, sbuf, buflen, WSMSG_ASYNC_SERVBYPORT ); + return __WSAsyncDBQuery(pwsi, hWnd, uMsg, port, proto, 0, + NULL, sbuf, buflen, WSMSG_ASYNC_SERVBYPORT ); return 0; } -INT16 WSACancelAsyncRequest(HANDLE16 hAsyncTaskHandle) +/*********************************************************************** + * WSACancelAsyncRequest() (WINSOCK.108) + */ +INT16 WINAPI WSACancelAsyncRequest(HANDLE16 hAsyncTaskHandle) { + INT16 retVal = SOCKET_ERROR; LPWSINFO pwsi = wsi_find(GetCurrentTask()); ws_async_op* p_aop = (ws_async_op*)WS_HANDLE2PTR(hAsyncTaskHandle); dprintf_winsock(stddeb, "WS_CancelAsyncRequest(%08x): handle %04x\n", (unsigned)pwsi, hAsyncTaskHandle); if( pwsi ) - if( WINSOCK_check_async_op(p_aop) ) - { - kill(p_aop->pid, SIGKILL); - waitpid(p_aop->pid, NULL, 0); /* just in case */ - close(p_aop->fd[0]); - WINSOCK_unlink_async_op(p_aop); - WS_FREE(p_aop); - return 0; - } - else pwsi->err = WSAEINVAL; - return SOCKET_ERROR; -} - -/* ----- asynchronous select() */ - -int cancel_async_select(ws_socket* pws) -{ - if( pws->p_aop ) { - kill(pws->p_aop->pid, SIGKILL); - waitpid(pws->p_aop->pid, NULL, 0); - WS_FREE(pws->p_aop); - pws->p_aop = NULL; - return 1; - } - return 0; -} - -void _sigusr1_handler_parent(int sig) -{ - /* child process puts MTYPE_CLIENT data packet into the - * 'async_qid' message queue and signals us with SIGUSR1. - * This handler reads the queue and posts 'uMsg' notification - * message. - */ - - ipc_packet ipack; - - signal( SIGUSR1, _sigusr1_handler_parent); - while( msgrcv(async_qid, (struct msgbuf*)&ipack, - MTYPE_CLIENT_SIZE, MTYPE_CLIENT, IPC_NOWAIT) != -1 ) - { - if( ipack.wParam && abs((short)ipack.wParam) < 32768 ) - { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(ipack.wParam); - if( pws->p_aop && abs((char*)_ws_stub - (char*)pws->p_aop) < 32768 ) + SIGNAL_MaskAsyncEvents( TRUE ); /* block SIGIO */ + if( WINSOCK_cancel_async_op(p_aop) ) { - pws->flags &= ~(ipack.lParam); -#if 0 - printf("async event - hWnd %04x, uMsg %04x [%08x]\n", - pws->p_aop->hWnd, pws->p_aop->uMsg, ipack.lParam ); -#endif - PostMessage16(pws->p_aop->hWnd, pws->p_aop->uMsg, - (WPARAM16)ipack.wParam, (LPARAM)ipack.lParam ); + WS_FREE(p_aop); + pwsi->num_async_rq--; + retVal = 0; } - else fprintf(stderr,"AsyncSelect:stray async_op in socket %04x!\n", ipack.wParam); - } - else fprintf(stderr,"AsyncSelect:stray socket at %04x!\n", ipack.wParam); + else pwsi->err = WSAEINVAL; + SIGNAL_MaskAsyncEvents( FALSE ); } + return retVal; } -int notify_client( ws_socket* pws, unsigned flag ) +/*********************************************************************** + * WSAAsyncSelect() (WINSOCK.101) + */ + +static ws_select_op* __ws_select_list = NULL; + +BOOL32 WINSOCK_HandleIO( int* max_fd, int num_pending, fd_set io_set[3] ) { - if( pws->p_aop && ((pws->p_aop->flags & flag) || - (flag == WS_FD_CONNECTED && pws->flags & WS_FD_CONNECT)) ) - { - async_ctl.ip.mtype = MTYPE_PARENT; - async_ctl.ip.lParam = flag; - while( msgsnd(async_qid, (struct msgbuf*)&(async_ctl.ip), - MTYPE_PARENT_SIZE, 0) == -1 ) - { - if( errno == EINTR ) continue; - else - { - perror("AsyncSelect(parent)"); - cancel_async_select(pws); - pws->flags &= WS_FD_INTERNAL; - return 0; - } - } - kill(pws->p_aop->pid, SIGUSR1); - return 1; - } - return 0; -} + /* This function is called by the event dispatcher + * with io_set containing the result of select() */ -INT16 init_async_select(ws_socket* pws, HWND16 hWnd, UINT16 uMsg, UINT32 lEvent) -{ - ws_async_op* p_aop; + ws_select_op* psop = __ws_select_list; + BOOL32 bPost = FALSE; + DWORD dwEvent, dwErrBytes; + int num_posted; - if( cancel_async_select(pws) ) /* delete old async handler if any */ - pws->flags &= WS_FD_INTERNAL; + dprintf_winsock(stddeb,"WINSOCK_HandleIO: %i pending descriptors\n", num_pending ); - if( lEvent == 0 ) return 0; - - /* setup async handler - some data may be redundant */ - - WINSOCK_unblock_io(pws->fd, 1); - if( (p_aop = (ws_async_op*)WS_ALLOC(sizeof(ws_async_op))) ) + for( num_posted = dwEvent = 0 ; psop; psop = psop->next ) { - p_aop->hWnd = hWnd; - p_aop->uMsg = uMsg; - pws->p_aop = p_aop; + unsigned flags = psop->pws->flags; + int fd = psop->pws->fd; + int r, w, e; - async_ctl.lEvent = p_aop->flags = lEvent; - async_ctl.ws_sock = pws; - async_ctl.ip.wParam = (UINT16)WS_PTR2HANDLE(pws); - async_ctl.ip.lParam = 0; + w = 0; + if( (r = FD_ISSET( fd, &io_set[EVENT_IO_READ] )) || + (w = FD_ISSET( fd, &io_set[EVENT_IO_WRITE] )) || + (e = FD_ISSET( fd, &io_set[EVENT_IO_EXCEPT] )) ) + { + /* This code removes WS_FD flags on one-shot events (WS_FD_CLOSE, + * WS_FD_CONNECT), otherwise it clears descriptors in the io_set. + * Reenabling calls turn them back on. + */ - p_aop->pid = fork(); - if( p_aop->pid != -1 ) - if( p_aop->pid == 0 ) WINSOCK_do_async_select(); /* child process */ - else pws->flags |= lEvent; + dprintf_winsock(stddeb,"\tchecking psop = 0x%08x\n", (unsigned) psop ); - signal( SIGUSR1, _sigusr1_handler_parent ); - return 0; /* Wine process */ + num_pending--; + + if( flags & WS_FD_ACCEPT ) + { + /* listening socket */ + + FD_CLR( fd, &io_set[EVENT_IO_WRITE] ); + if( r ) + { + FD_CLR( fd, &io_set[EVENT_IO_READ] ); /* reenabled by the next accept() */ + dwEvent = WSAMAKESELECTREPLY( WS_FD_ACCEPT, 0 ); + bPost = TRUE; + } + else continue; + } + else if( flags & WS_FD_CONNECT ) + { + /* connecting socket */ + + if( w || (w = FD_ISSET( fd, &io_set[EVENT_IO_WRITE] )) ) + { + /* ready to write means that socket is connected */ + + psop->pws->flags |= WS_FD_CONNECTED; + psop->pws->flags &= ~(WS_FD_CONNECT | WS_FD_INACTIVE); + dwEvent = WSAMAKESELECTREPLY( WS_FD_CONNECT, 0 ); + + if( flags & (WS_FD_READ | WS_FD_CLOSE)) + FD_SET( fd, &io_set[EVENT_IO_READ] ); + if( flags & WS_FD_WRITE ) FD_SET( fd, &io_set[EVENT_IO_WRITE] ); + else FD_CLR( fd, &io_set[EVENT_IO_WRITE] ); + bPost = TRUE; + } + else if( r ) + { + /* failure - do read() to get correct errno */ + + if( read( fd, &dwErrBytes, sizeof(dwErrBytes) ) == -1 ) + { + dwEvent = WSAMAKESELECTREPLY( WS_FD_CONNECT, wsaErrno() ); + bPost = TRUE; + } + } + /* otherwise bPost stays FALSE */ + } + else + { + /* connected socket -- + * removed WS_FD_OOB code for now. + */ + + if( flags & WS_FD_WRITE && + (w || (w = FD_ISSET( fd, &io_set[EVENT_IO_WRITE] ))) ) + { + /* this will be reenabled when send() or sendto() fail with + * WSAEWOULDBLOCK */ + + if( PostMessage16( psop->hWnd, psop->uMsg, (WPARAM16)WS_PTR2HANDLE(psop->pws), + (LPARAM)WSAMAKESELECTREPLY( WS_FD_WRITE, 0 ) ) ) + { + FD_CLR( fd, &io_set[EVENT_IO_WRITE] ); + num_posted++; + } + } + + if( r && (flags & (WS_FD_READ | WS_FD_CLOSE)) ) + { + int val = (flags & WS_FD_RAW); + + /* WS_FD_RAW is set by the WSAAsyncSelect() init */ + + bPost = TRUE; + if( !val && ioctl( fd, FIONREAD, (char*)&dwErrBytes) == -1 ) + { + /* weirdness */ + + dwEvent = WSAMAKESELECTREPLY( WS_FD_READ, wsaErrno() ); + } + else if( val || dwErrBytes ) + { + /* got pending data, will be reenabled by recv() or recvfrom() */ + + FD_CLR( fd, &io_set[EVENT_IO_READ] ); + dwEvent = WSAMAKESELECTREPLY( WS_FD_READ, 0 ); + } + else + { + /* 0 bytes to read - connection reset by peer? */ + + do + val = read( fd, (char*)&dwErrBytes, sizeof(dwErrBytes)); + while( errno == EINTR ); + if( errno != EWOULDBLOCK ) + { + switch( val ) + { + case 0: errno = ENETDOWN; /* soft reset, fall through */ + case -1: /* hard reset */ + dwEvent = WSAMAKESELECTREPLY( WS_FD_CLOSE, wsaErrno() ); + break; + + default: bPost = FALSE; + continue; /* FIXME: this is real bad */ + } + } + else { bPost = FALSE; continue; } /* more weirdness */ + + /* this is it, this socket is closed */ + + psop->pws->flags &= ~(WS_FD_READ | WS_FD_CLOSE | WS_FD_WRITE); + FD_CLR( fd, &io_set[EVENT_IO_READ] ); + FD_CLR( fd, &io_set[EVENT_IO_WRITE] ); + + if( *max_fd == (fd + 1) ) (*max_fd)--; + } + } + } + + if( bPost ) + { + PostMessage16( psop->hWnd, psop->uMsg, + (WPARAM16)WS_PTR2HANDLE(psop->pws), (LPARAM)dwEvent ); + bPost = FALSE; + num_posted++; + } + } + if( num_pending <= 0 ) break; } - return SOCKET_ERROR; + + dprintf_winsock(stddeb, "\tdone, %i posted events\n", num_posted ); + return ( num_posted ) ? TRUE : FALSE; } -INT16 WSAAsyncSelect(SOCKET16 s, HWND16 hWnd, UINT16 uMsg, UINT32 lEvent) + +INT16 WINAPI WSAAsyncSelect(SOCKET16 s, HWND16 hWnd, UINT16 uMsg, UINT32 lEvent) { - ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); - LPWSINFO pwsi = wsi_find(GetCurrentTask()); + ws_socket* pws = (ws_socket*)WS_HANDLE2PTR(s); + LPWSINFO pwsi = wsi_find(GetCurrentTask()); - dprintf_winsock(stddeb, "WS_AsyncSelect(%08x): %04x, hWnd %04x, uMsg %04x, event %08x\n", + dprintf_winsock(stddeb, "WS_AsyncSelect(%08x): %04x, hWnd %04x, uMsg %04x, event %08x\n", (unsigned)pwsi, s, hWnd, uMsg, (unsigned)lEvent ); - if( _check_ws(pwsi, pws) ) - if( init_async_select(pws, hWnd, uMsg, lEvent) == 0 ) return 0; - else pwsi->err = WSAENOBUFS; - return SOCKET_ERROR; + if( _check_ws(pwsi, pws) ) + { + ws_select_op* psop; + + if( (psop = pws->psop) ) + { + /* delete previous control struct */ + + if( psop == __ws_select_list ) + __ws_select_list = psop->next; + else + psop->prev->next = psop->next; + if( psop->next ) psop->next->prev = psop->prev; + + if( pws->flags & (WS_FD_ACCEPT | WS_FD_CONNECT | WS_FD_READ | WS_FD_CLOSE) ) + EVENT_DeleteIO( pws->fd, EVENT_IO_READ ); + if( pws->flags & (WS_FD_CONNECT | WS_FD_WRITE) ) + EVENT_DeleteIO( pws->fd, EVENT_IO_WRITE ); + + dprintf_winsock(stddeb,"\tremoving psop = 0x%08x\n", (unsigned) psop ); + + WS_FREE( pws->psop ); + pws->flags &= ~(WS_FD_RAW | WS_FD_ACCEPT | WS_FD_CONNECT | + WS_FD_READ | WS_FD_WRITE | WS_FD_CLOSE); + pws->psop = NULL; + } + + if( lEvent ) + { + psop = (ws_select_op*)WS_ALLOC(sizeof(ws_select_op)); + if( psop ) + { + int sock_type, bytes = sizeof(int); + + WINSOCK_unblock_io( pws->fd, TRUE ); + + psop->prev = NULL; + psop->next = __ws_select_list; + if( __ws_select_list ) + __ws_select_list->prev = psop; + __ws_select_list = psop; + + psop->pws = pws; + psop->hWnd = hWnd; + psop->uMsg = uMsg; + + pws->psop = psop; + pws->flags |= (0x0000FFFF &lEvent); + getsockopt(pws->fd, SOL_SOCKET, SO_TYPE, &sock_type, &bytes); + if( sock_type == SOCK_RAW ) pws->flags |= WS_FD_RAW; + + if( lEvent & (WS_FD_ACCEPT | WS_FD_CONNECT | WS_FD_READ | WS_FD_CLOSE) ) + EVENT_AddIO( pws->fd, EVENT_IO_READ ); + if( lEvent & (WS_FD_CONNECT | WS_FD_WRITE) ) + EVENT_AddIO( pws->fd, EVENT_IO_WRITE ); + + /* TODO: handle WS_FD_ACCEPT right away if the socket is readable */ + + dprintf_winsock(stddeb,"\tcreating psop = 0x%08x\n", (unsigned)psop ); + + return 0; /* success */ + } + else pwsi->err = WSAENOBUFS; + } + else return 0; + } + else if( pwsi ) pwsi->err = WSAEINVAL; + return SOCKET_ERROR; } -/* ----- miscellaneous */ -INT16 __WSAFDIsSet(SOCKET16 fd, ws_fd_set *set) +/*********************************************************************** + * __WSAFDIsSet() (WINSOCK.151) + */ +INT16 WINAPI __WSAFDIsSet16(SOCKET16 s, ws_fd_set *set) { int i = set->fd_count; - dprintf_winsock(stddeb, "__WSAFDIsSet(%d,%8lx)\n",fd,(unsigned long)set); + dprintf_winsock(stddeb, "__WSAFDIsSet(%d,%8lx)\n", s,(unsigned long)set); while (i--) - if (set->fd_array[i] == fd) return 1; + if (set->fd_array[i] == s) return 1; return 0; } -BOOL16 WSAIsBlocking(void) +/*********************************************************************** + * __WSAFDIsSet() (WSOCK32.151) + */ +INT32 WINAPI __WSAFDIsSet32(SOCKET32 s, ws_fd_set *set) +{ + return __WSAFDIsSet16( (SOCKET16)s, set ); +} + +/*********************************************************************** + * WSAIsBlocking() (WINSOCK.114)(WSOCK32.114) + */ +BOOL32 WINAPI WSAIsBlocking(void) { /* By default WinSock should set all its sockets to non-blocking mode * and poll in PeekMessage loop when processing "blocking" ones. This - * function * is supposed to tell if program is in this loop. Our + * function is supposed to tell if program is in this loop. Our * blocking calls are truly blocking so we always return FALSE. * * Note: It is allowed to call this function without prior WSAStartup(). @@ -1439,7 +2025,10 @@ return FALSE; } -INT16 WSACancelBlockingCall(void) +/*********************************************************************** + * WSACancelBlockingCall() (WINSOCK.113)(WSOCK32.113) + */ +INT32 WINAPI WSACancelBlockingCall(void) { LPWSINFO pwsi = wsi_find(GetCurrentTask()); @@ -1449,45 +2038,82 @@ return SOCKET_ERROR; } -FARPROC16 WSASetBlockingHook16(FARPROC16 lpBlockFunc) + +/*********************************************************************** + * WSASetBlockingHook16() (WINSOCK.109) + */ +FARPROC16 WINAPI WSASetBlockingHook16(FARPROC16 lpBlockFunc) { FARPROC16 prev; LPWSINFO pwsi = wsi_find(GetCurrentTask()); dprintf_winsock(stddeb, "WS_SetBlockingHook16(%08x): hook %08x\n", (unsigned)pwsi, (unsigned) lpBlockFunc); - if( pwsi ) { - prev = pwsi->blocking_hook; - pwsi->blocking_hook = lpBlockFunc; + prev = (FARPROC16)pwsi->blocking_hook; + pwsi->blocking_hook = (DWORD)lpBlockFunc; + pwsi->flags &= ~WSI_BLOCKINGHOOK32; return prev; } return 0; } -FARPROC32 WSASetBlockingHook32(FARPROC32 lpBlockFunc) -{ - fprintf( stderr, "WSASetBlockingHook32(%p): empty stub\n", lpBlockFunc ); - return NULL; -} -INT16 WSAUnhookBlockingHook16(void) +/*********************************************************************** + * WSASetBlockingHook32() + */ +FARPROC32 WINAPI WSASetBlockingHook32(FARPROC32 lpBlockFunc) { + FARPROC32 prev; LPWSINFO pwsi = wsi_find(GetCurrentTask()); - dprintf_winsock(stddeb, "WS_UnhookBlockingHook(%08x)\n", (unsigned)pwsi); - if( pwsi ) return (INT16)(INT32)(pwsi->blocking_hook = (FARPROC16)NULL); - return SOCKET_ERROR; -} - -INT32 WSAUnhookBlockingHook32(void) -{ - fprintf( stderr, "WSAUnhookBlockingHook32(): empty stub\n"); + dprintf_winsock(stddeb, "WS_SetBlockingHook32(%08x): hook %08x\n", + (unsigned)pwsi, (unsigned) lpBlockFunc); + if( pwsi ) { + prev = (FARPROC32)pwsi->blocking_hook; + pwsi->blocking_hook = (DWORD)lpBlockFunc; + pwsi->flags |= WSI_BLOCKINGHOOK32; + return prev; + } return NULL; } -VOID -WsControl(DWORD x1,DWORD x2,LPDWORD x3,LPDWORD x4,LPDWORD x5,LPDWORD x6) + +/*********************************************************************** + * WSAUnhookBlockingHook16() (WINSOCK.110) + */ +INT16 WINAPI WSAUnhookBlockingHook16(void) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_UnhookBlockingHook16(%08x)\n", (unsigned)pwsi); + if( pwsi ) return (INT16)(pwsi->blocking_hook = 0); + return SOCKET_ERROR; +} + + +/*********************************************************************** + * WSAUnhookBlockingHook32() + */ +INT32 WINAPI WSAUnhookBlockingHook32(void) +{ + LPWSINFO pwsi = wsi_find(GetCurrentTask()); + + dprintf_winsock(stddeb, "WS_UnhookBlockingHook32(%08x)\n", (unsigned)pwsi); + if( pwsi ) + { + pwsi->blocking_hook = 0; + pwsi->flags &= ~WSI_BLOCKINGHOOK32; + return 0; + } + return SOCKET_ERROR; +} + +/*********************************************************************** + * WsControl() + */ +VOID WINAPI WsControl(DWORD x1,DWORD x2,LPDWORD x3,LPDWORD x4, + LPDWORD x5,LPDWORD x6) { fprintf(stdnimp,"WsControl(%lx,%lx,%p,%p,%p,%p)\n", x1,x2,x3,x4,x5,x6 @@ -1548,8 +2174,8 @@ { /* Duplicate hostent structure and flatten data (with its pointers) * into pwsi->buffer. Internal pointers can be linear, SEGPTR, or - * relative to 0 depending on "flag" value. Return data size (also - * in the pwsi->buflen). + * relative to pwsi->buffer depending on "flag" value. Returns size + * of the data copied (also in the pwsi->buflen). */ int size = hostent_size(p_he); @@ -1561,14 +2187,14 @@ p = pwsi->buffer; p_base = (flag & WS_DUP_OFFSET) ? NULL : ((flag & WS_DUP_SEGPTR) ? (char*)SEGPTR_GET(p) : p); - p += (flag & WS_DUP_SEGPTR) ? sizeof(struct ws_hostent) : sizeof(struct hostent); + p += (flag & WS_DUP_NATIVE) ? sizeof(struct hostent) : sizeof(struct ws_hostent); p_name = p; strcpy(p, p_he->h_name); p += strlen(p) + 1; p_aliases = p; p += list_dup(p_he->h_aliases, p, p_base + (p - pwsi->buffer), 0); p_addr = p; list_dup(p_he->h_addr_list, p, p_base + (p - pwsi->buffer), p_he->h_length); - if( !(flag & WS_DUP_SEGPTR) ) + if( flag & WS_DUP_NATIVE ) { struct hostent* p_to = (struct hostent*)pwsi->buffer; p_to->h_addrtype = p_he->h_addrtype; p_to->h_length = p_he->h_length; p_to->h_name = p_base + (p_name - pwsi->buffer); @@ -1587,22 +2213,6 @@ return size; } -void fixup_wshe(struct ws_hostent* p_wshe, SEGPTR base) -{ - /* add 'base' to ws_hostent pointers to convert them from offsets */ - - int i; - unsigned* p_aliases,*p_addr; - - p_aliases = (unsigned*)((char*)p_wshe + (unsigned)p_wshe->h_aliases); - p_addr = (unsigned*)((char*)p_wshe + (unsigned)p_wshe->h_addr_list); - ((unsigned)(p_wshe->h_name)) += (unsigned)base; - ((unsigned)(p_wshe->h_aliases)) += (unsigned)base; - ((unsigned)(p_wshe->h_addr_list)) += (unsigned)base; - for(i=0;p_aliases[i];i++) p_aliases[i] += (unsigned)base; - for(i=0;p_addr[i];i++) p_addr[i] += (unsigned)base; -} - /* ----- protoent */ static int protoent_size(struct protoent* p_pe) @@ -1626,12 +2236,12 @@ p = pwsi->buffer; p_base = (flag & WS_DUP_OFFSET) ? NULL : ((flag & WS_DUP_SEGPTR) ? (char*)SEGPTR_GET(p) : p); - p += (flag & WS_DUP_SEGPTR)? sizeof(struct ws_protoent) : sizeof(struct protoent); + p += (flag & WS_DUP_NATIVE)? sizeof(struct protoent) : sizeof(struct ws_protoent); p_name = p; strcpy(p, p_pe->p_name); p += strlen(p) + 1; p_aliases = p; list_dup(p_pe->p_aliases, p, p_base + (p - pwsi->buffer), 0); - if( !(flag & WS_DUP_NATIVE) ) + if( flag & WS_DUP_NATIVE ) { struct protoent* p_to = (struct protoent*)pwsi->buffer; p_to->p_proto = p_pe->p_proto; p_to->p_name = p_base + (p_name - pwsi->buffer); @@ -1646,15 +2256,6 @@ return size; } -void fixup_wspe(struct ws_protoent* p_wspe, SEGPTR base) -{ - int i; - unsigned* p_aliases = (unsigned*)((char*)p_wspe + (unsigned)p_wspe->p_aliases); - ((unsigned)(p_wspe->p_name)) += (unsigned)base; - ((unsigned)(p_wspe->p_aliases)) += (unsigned)base; - for(i=0;p_aliases[i];i++) p_aliases[i] += (unsigned)base; -} - /* ----- servent */ static int servent_size(struct servent* p_se) @@ -1678,7 +2279,7 @@ p = pwsi->buffer; p_base = (flag & WS_DUP_OFFSET) ? NULL : ((flag & WS_DUP_SEGPTR) ? (char*)SEGPTR_GET(p) : p); - p += (flag & WS_DUP_SEGPTR)? sizeof(struct ws_servent) : sizeof(struct servent); + p += (flag & WS_DUP_NATIVE)? sizeof(struct servent) : sizeof(struct ws_servent); p_name = p; strcpy(p, p_se->s_name); p += strlen(p) + 1; p_proto = p; @@ -1686,7 +2287,7 @@ p_aliases = p; list_dup(p_se->s_aliases, p, p_base + (p - pwsi->buffer), 0); - if( !(flag & WS_DUP_SEGPTR) ) + if( flag & WS_DUP_NATIVE ) { struct servent* p_to = (struct servent*)pwsi->buffer; p_to->s_port = p_se->s_port; p_to->s_name = p_base + (p_name - pwsi->buffer); @@ -1703,16 +2304,6 @@ return size; } -void fixup_wsse(struct ws_servent* p_wsse, SEGPTR base) -{ - int i; - unsigned* p_aliases = (unsigned*)((char*)p_wsse + (unsigned)p_wsse->s_aliases); - ((unsigned)(p_wsse->s_name)) += (unsigned)base; - ((p_wsse->s_proto)) += (unsigned)base; - ((p_wsse->s_aliases)) += (unsigned)base; - for(i=0;p_aliases[i];i++) p_aliases[i] += (unsigned)base; -} - /* ----------------------------------- error handling */ UINT16 wsaErrno(void)
diff --git a/misc/winsock_async.c b/misc/winsock_async.c deleted file mode 100644 index 5cd0382..0000000 --- a/misc/winsock_async.c +++ /dev/null
@@ -1,515 +0,0 @@ -/* - * asynchronous winsock services - * - * (C) 1996 Alex Korobka. - * - * FIXME: telftp16 (ftp part) stalls on AsyncSelect with FD_ACCEPT. - */ -#include <unistd.h> -#include <string.h> -#include <signal.h> -#include <sys/ioctl.h> -#include <sys/types.h> -#include <sys/ipc.h> -#include <sys/msg.h> -#include <sys/wait.h> -#include <errno.h> -#ifdef __EMX__ -#include <sys/so_ioctl.h> -#include <sys/param.h> -#endif -#ifdef __svr4__ -#include <sys/file.h> -#include <sys/filio.h> -#endif - -extern int h_errno; - -#include "windows.h" -#include "winsock.h" -#include "debug.h" - -#ifndef FASYNC -#define FASYNC FIOASYNC -#endif - -#define __WS_ASYNC_DEBUG 0 - -static int __async_io_max_fd = 0; -static fd_set __async_io_fdset; -static ws_async_op* __async_op_list = NULL; - -extern ws_async_ctl async_ctl; -extern int async_qid; - -fd_set fd_read, fd_write, fd_excp; - -/* ----------------------------------- async/non-blocking I/O */ - -int WINSOCK_async_io(int fd, int async) -{ - int fd_flags; - -#ifndef __EMX__ - fcntl(fd, F_SETOWN, getpid()); -#endif - - fd_flags = fcntl(fd, F_GETFL, 0); - if (fcntl(fd, F_SETFL, (async)? fd_flags | FASYNC - : fd_flags & ~FASYNC ) != -1) return 0; - return -1; -} - -int WINSOCK_unblock_io(int fd, int noblock) -{ - int fd_flags; - - fd_flags = fcntl(fd, F_GETFL, 0); - if (fcntl(fd, F_SETFL, (noblock)? fd_flags | O_NONBLOCK - : fd_flags & ~O_NONBLOCK ) != -1) return 0; - return -1; -} - -int WINSOCK_check_async_op(ws_async_op* p_aop) -{ - ws_async_op* p = __async_op_list; - while( p ) if( p == p_aop ) return 1; - else p = p->next; - return 0; -} - -void WINSOCK_cancel_async_op(HTASK16 hTask) -{ - ws_async_op* p = __async_op_list; - while( p ) - if(hTask == GetWindowTask16(p->hWnd)) - p->flags = 0; -} - -void WINSOCK_link_async_op(ws_async_op* p_aop) -{ - if( __async_op_list ) __async_op_list->prev = p_aop; - else FD_ZERO(&__async_io_fdset); - - p_aop->next = __async_op_list; - p_aop->prev = NULL; - __async_op_list = p_aop; - - FD_SET(p_aop->fd[0], &__async_io_fdset); - if( p_aop->fd[0] > __async_io_max_fd ) - __async_io_max_fd = p_aop->fd[0]; -} - -void WINSOCK_unlink_async_op(ws_async_op* p_aop) -{ - if( p_aop == __async_op_list ) __async_op_list = p_aop->next; - else - { p_aop->prev->next = p_aop->next; - if( p_aop->next ) p_aop->next->prev = p_aop->prev; } - FD_CLR(p_aop->fd[0], &__async_io_fdset); - if( p_aop->fd[0] == __async_io_max_fd ) - __async_io_max_fd--; -} - -/* ----------------------------------- SIGIO handler - - * - * link_async_op/unlink_async_op allow to install generic - * async IO handlers (provided that aop_control function is defined). - * - * Note: AsyncGetXbyY expilicitly raise it. - */ - -void WINSOCK_sigio(int signal) -{ - struct timeval timeout; - fd_set check_set; - ws_async_op* p_aop; - - check_set = __async_io_fdset; - memset(&timeout, 0, sizeof(timeout)); - - while( select(__async_io_max_fd + 1, - &check_set, NULL, NULL, &timeout) > 0) - { - for( p_aop = __async_op_list; - p_aop ; p_aop = p_aop->next ) - if( FD_ISSET(p_aop->fd[0], &check_set) ) - if( p_aop->aop_control(p_aop, AOP_IO) == AOP_CONTROL_REMOVE ) - { - if( p_aop->pid ) - { - kill(p_aop->pid, SIGKILL); - waitpid(p_aop->pid, NULL, WNOHANG); - } - WINSOCK_unlink_async_op( p_aop ); - } - check_set = __async_io_fdset; - } -} - -/* ----------------------------------- child process IPC */ - -static void _sigusr1_handler_child(int sig) -{ - /* read message queue to decide which - * async_ctl parameters to update - * - * Note: we don't want to have SA_RESTART on this signal - * handler, otherwise select() won't notice changed fd sets. - */ - - signal( SIGUSR1, _sigusr1_handler_child ); - while( msgrcv(async_qid, (struct msgbuf*)&async_ctl.ip, - MTYPE_PARENT_SIZE, MTYPE_PARENT, IPC_NOWAIT) != -1 ) - { - /* only ip.lParam is updated */ -#if __WS_ASYNC_DEBUG - printf("handler - event %08x\n", async_ctl.ip.lParam ); -#endif - - switch( async_ctl.ip.lParam ) - { - /* These are events we are notified of. - */ - - case WS_FD_CONNECTED: async_ctl.lEvent &= ~WS_FD_CONNECT; - FD_SET(async_ctl.ws_sock->fd, &fd_read); - FD_SET(async_ctl.ws_sock->fd, &fd_write); - break; - - case WS_FD_ACCEPT: async_ctl.ws_sock->flags |= WS_FD_ACCEPT; - FD_SET(async_ctl.ws_sock->fd, &fd_read); - FD_SET(async_ctl.ws_sock->fd, &fd_write); - break; - case WS_FD_OOB: async_ctl.lEvent |= WS_FD_OOB; - FD_SET(async_ctl.ws_sock->fd, &fd_excp); - break; - case WS_FD_READ: async_ctl.lEvent |= WS_FD_READ; - FD_SET(async_ctl.ws_sock->fd, &fd_read); - break; - case WS_FD_WRITE: async_ctl.lEvent |= WS_FD_WRITE; - FD_SET(async_ctl.ws_sock->fd, &fd_write); - break; - default: - } - } -} - -static int notify_parent( unsigned flag ) -{ - if( flag & WSMSG_ASYNC_SELECT ) - { - async_ctl.ip.mtype = MTYPE_CLIENT; - while( msgsnd(async_qid, (struct msgbuf*)&(async_ctl.ip), - MTYPE_CLIENT_SIZE, 0) == -1 ) - { - if( errno == EINTR ) continue; -#ifdef EIDRM - else if( errno == EIDRM ) _exit(0); -#endif - else - { - perror("AsyncSelect(child)"); - return 0; - } - } - kill(getppid(), SIGUSR1); - -#if __WS_ASYNC_DEBUG - printf("handler - notify [%08x]\n", async_ctl.ip.lParam); -#endif - } - else /* use half-duplex pipe to handle variable length packets */ - { - write(async_ctl.ws_aop->fd[1], &async_ctl.lLength, sizeof(unsigned) ); - write(async_ctl.ws_aop->fd[1], async_ctl.buffer, async_ctl.lLength ); -#ifndef __EMX__ - kill(getppid(), SIGIO); /* simulate async I/O */ -#endif -#if __WS_ASYNC_DEBUG - printf("handler - notify aop [%d, buf %d]\n", async_ctl.lLength, async_ctl.ws_aop->buflen); -#endif - pause(); - } - return 1; -} - -/* ----------------------------------- async select */ - -static void setup_fd_sets() -{ - FD_ZERO(&fd_read); FD_ZERO(&fd_write); FD_ZERO(&fd_excp); - - if( async_ctl.lEvent & WS_FD_OOB) - FD_SET(async_ctl.ws_sock->fd, &fd_excp); - if( async_ctl.lEvent & (WS_FD_ACCEPT | WS_FD_READ | - WS_FD_CONNECT | WS_FD_CLOSE) ) - FD_SET(async_ctl.ws_sock->fd, &fd_read); - if( async_ctl.lEvent & (WS_FD_WRITE | WS_FD_CONNECT) ) - FD_SET(async_ctl.ws_sock->fd, &fd_write); -} - -static void setup_sig_sets(sigset_t* sig_block) -{ - sigemptyset(sig_block); - sigaddset(sig_block, SIGUSR1); - sigprocmask( SIG_BLOCK, sig_block, NULL); - signal( SIGUSR1, _sigusr1_handler_child ); -} - -void WINSOCK_do_async_select() -{ - sigset_t sig_block; - int sock_type, bytes; - - getsockopt(async_ctl.ws_sock->fd, SOL_SOCKET, SO_TYPE, &sock_type, &bytes); - setup_sig_sets(&sig_block); - setup_fd_sets(); - - while(1) - { - int val; - - if( sock_type != SOCK_STREAM ) - async_ctl.lEvent &= ~(WS_FD_ACCEPT | WS_FD_CONNECT); - sigprocmask( SIG_UNBLOCK, &sig_block, NULL); - -#if __WS_ASYNC_DEBUG - printf("select(2)[%i,%i,%i]... ", - FD_ISSET(async_ctl.ws_sock->fd, &fd_read), - FD_ISSET(async_ctl.ws_sock->fd, &fd_write), - FD_ISSET(async_ctl.ws_sock->fd, &fd_excp)); -#endif - if( (val = select(async_ctl.ws_sock->fd + 1, - &fd_read, &fd_write, &fd_excp, NULL)) == -1 ) - if( errno == EINTR ) continue; -#if __WS_ASYNC_DEBUG - printf("got %i events\n", val); -#endif - -#if __WS_ASYNC_DEBUG - if( FD_ISSET(async_ctl.ws_sock->fd, &fd_read) ) - printf("handler - read is READY! [%08x]\n", async_ctl.lEvent & (WS_FD_READ | WS_FD_CLOSE)); -#endif - - sigprocmask( SIG_BLOCK, &sig_block, NULL); - async_ctl.ip.lParam = 0; - if( async_ctl.ws_sock->flags & WS_FD_ACCEPT ) - { - /* listening socket */ - - FD_CLR(async_ctl.ws_sock->fd, &fd_read); - FD_CLR(async_ctl.ws_sock->fd, &fd_write); - - async_ctl.ip.lParam = WSAMAKESELECTREPLY( WS_FD_ACCEPT, 0 ); - notify_parent( WSMSG_ASYNC_SELECT ); - continue; - } - else /* I/O socket */ - { - if( async_ctl.lEvent & WS_FD_CONNECT ) - { - if( FD_ISSET(async_ctl.ws_sock->fd, &fd_write) ) - { - /* success - reinit fd sets to start I/O */ - - if( async_ctl.lEvent & (WS_FD_READ | WS_FD_CLOSE)) - FD_SET(async_ctl.ws_sock->fd, &fd_read); - else FD_CLR(async_ctl.ws_sock->fd, &fd_read); - if( async_ctl.lEvent & WS_FD_WRITE ) - FD_SET(async_ctl.ws_sock->fd, &fd_write); - else FD_CLR(async_ctl.ws_sock->fd, &fd_write); - - async_ctl.ip.lParam = WSAMAKESELECTREPLY( WS_FD_CONNECT, 0 ); - async_ctl.lEvent &= ~WS_FD_CONNECT; /* one-shot */ - } - else if( FD_ISSET(async_ctl.ws_sock->fd, &fd_read) ) - { - /* failure - do read() to get correct errno */ - - if( read(async_ctl.ws_sock->fd, &bytes, 4) == -1 ) - async_ctl.ip.lParam = WSAMAKESELECTREPLY( WS_FD_CONNECT, wsaErrno() ); - else continue; - } else continue; /* OOB?? */ - - notify_parent( WSMSG_ASYNC_SELECT ); - } - else /* connected socket */ - { - - if( async_ctl.lEvent & WS_FD_OOB ) - if( FD_ISSET(async_ctl.ws_sock->fd, &fd_excp) ) - { - async_ctl.ip.lParam = WSAMAKESELECTREPLY( WS_FD_OOB, 0 ); - async_ctl.lEvent &= ~WS_FD_OOB; - FD_CLR(async_ctl.ws_sock->fd, &fd_excp); - notify_parent( WSMSG_ASYNC_SELECT ); - } - else FD_SET(async_ctl.ws_sock->fd, &fd_excp); - - if( async_ctl.lEvent & WS_FD_WRITE ) - if( FD_ISSET( async_ctl.ws_sock->fd, &fd_write ) ) - { - async_ctl.ip.lParam = WSAMAKESELECTREPLY( WS_FD_WRITE, 0 ); - async_ctl.lEvent &= ~WS_FD_WRITE; - FD_CLR(async_ctl.ws_sock->fd, &fd_write); - notify_parent( WSMSG_ASYNC_SELECT ); - } - else FD_SET(async_ctl.ws_sock->fd, &fd_write); - - if( async_ctl.lEvent & (WS_FD_READ | WS_FD_CLOSE) ) - if( FD_ISSET(async_ctl.ws_sock->fd, &fd_read) ) - { - int ok = 0; - - if( sock_type == SOCK_RAW ) ok = 1; - else if( ioctl( async_ctl.ws_sock->fd, FIONREAD, (char*)&bytes) == -1 ) - { - async_ctl.ip.lParam = WSAMAKESELECTREPLY( WS_FD_READ, wsaErrno() ); - FD_CLR( async_ctl.ws_sock->fd, &fd_read ); - bytes = 0; - } - - if( bytes || ok ) /* got data */ - { -#if __WS_ASYNC_DEBUG - if( ok ) printf("\traw/datagram read pending\n"); - else printf("\t%i bytes pending\n", bytes ); -#endif - if( async_ctl.lEvent & WS_FD_READ ) - { - async_ctl.ip.lParam = WSAMAKESELECTREPLY( WS_FD_READ, 0 ); - async_ctl.lEvent &= ~WS_FD_READ; - if( !(async_ctl.lEvent & WS_FD_CLOSE) ) - FD_CLR( async_ctl.ws_sock->fd, &fd_read ); - } - else if( !(async_ctl.lEvent & (WS_FD_WRITE | WS_FD_OOB)) ) - { - sigprocmask( SIG_UNBLOCK, &sig_block, NULL); - pause(); - sigprocmask( SIG_BLOCK, &sig_block, NULL); - } - else continue; - } - else /* 0 bytes to read */ - { - val = read( async_ctl.ws_sock->fd, (char*)&bytes, 4); - if( errno == EWOULDBLOCK || errno == EINTR ) - { -#if __WS_ASYNC_DEBUG - printf("\twould block..\n"); -#endif - continue; - } - switch( val ) - { - case 0: errno = ENETDOWN; /* ENETDOWN */ - case -1: /* ECONNRESET */ - async_ctl.ip.lParam = WSAMAKESELECTREPLY( WS_FD_CLOSE, wsaErrno() ); - break; - default: continue; - } - async_ctl.lEvent &= ~(WS_FD_CLOSE | WS_FD_READ); /* one-shot */ - FD_ZERO(&fd_read); FD_ZERO(&fd_write); - } - - notify_parent( WSMSG_ASYNC_SELECT ); - } - else FD_SET(async_ctl.ws_sock->fd, &fd_read); - - } /* connected socket */ - } /* I/O socket */ - } /* while */ -} - - -/* ----------------------------------- getXbyY requests */ - -static void _async_fail() -{ - async_ctl.lLength = - (h_errno < 0) ? (unsigned)WSAMAKEASYNCREPLY( 0, wsaErrno() ) - : (unsigned)WSAMAKEASYNCREPLY( 0, wsaHerrno() ); - write(async_ctl.ws_aop->fd[1], &async_ctl.lLength, sizeof(unsigned) ); -#ifndef __EMX__ - kill(getppid(), SIGIO); /* simulate async I/O */ -#endif - pause(); -} - -void dump_ws_hostent_offset(struct ws_hostent* wshe) -{ - int i; - char* base = (char*)wshe; - unsigned* ptr; - - printf("h_name = %08x\t[%s]\n", (unsigned)wshe->h_name, base + (unsigned)wshe->h_name); - printf("h_aliases = %08x\t[%08x]\n", (unsigned)wshe->h_aliases, - (unsigned)(base + (unsigned)wshe->h_aliases)); - ptr = (unsigned*)(base + (unsigned)wshe->h_aliases); - for(i = 0; ptr[i]; i++ ) - { - printf("%i - %08x ", i + 1, ptr[i]); - printf(" [%s]\n", ((char*)base) + ptr[i]); - } - printf("h_length = %i\n", wshe->h_length); -} - -void WS_do_async_gethost(LPWSINFO pwsi, unsigned flag ) -{ - int size = 0; - struct hostent* p_he; - - close(async_ctl.ws_aop->fd[0]); - p_he = (flag & WSMSG_ASYNC_HOSTBYNAME) - ? gethostbyname(async_ctl.init) - : gethostbyaddr(async_ctl.init, - async_ctl.lLength, async_ctl.lEvent); - if( p_he ) size = WS_dup_he(pwsi, p_he, WS_DUP_SEGPTR | WS_DUP_OFFSET ); - if( size ) - { - async_ctl.buffer = pwsi->buffer; - async_ctl.lLength = (unsigned)WSAMAKEASYNCREPLY( (UINT16)size, 0 ); - notify_parent( flag ); - } - else _async_fail(); -} - -void WS_do_async_getproto(LPWSINFO pwsi, unsigned flag ) -{ - int size = 0; - struct protoent* p_pe; - - close(async_ctl.ws_aop->fd[0]); - p_pe = (flag & WSMSG_ASYNC_PROTOBYNAME) - ? getprotobyname(async_ctl.init) - : getprotobynumber(async_ctl.lEvent); - if( p_pe ) size = WS_dup_pe(pwsi, p_pe, WS_DUP_SEGPTR | WS_DUP_OFFSET ); - if( size ) - { - async_ctl.buffer = pwsi->buffer; - async_ctl.lLength = (unsigned)WSAMAKEASYNCREPLY( (UINT16)size, 0 ); - notify_parent( flag ); - } - else _async_fail(); -} - -void WS_do_async_getserv(LPWSINFO pwsi, unsigned flag ) -{ - int size = 0; - struct servent* p_se; - - close(async_ctl.ws_aop->fd[0]); - p_se = (flag & WSMSG_ASYNC_SERVBYNAME) - ? getservbyname(async_ctl.init, async_ctl.buffer) - : getservbyport(async_ctl.lEvent, async_ctl.init); - if( p_se ) size = WS_dup_se(pwsi, p_se, WS_DUP_SEGPTR | WS_DUP_OFFSET ); - if( size ) - { - async_ctl.buffer = pwsi->buffer; - async_ctl.lLength = (unsigned)WSAMAKEASYNCREPLY( (UINT16)size, 0 ); - notify_parent( flag ); - } - else _async_fail(); -} -
diff --git a/misc/winsock_dns.c b/misc/winsock_dns.c new file mode 100644 index 0000000..8042489 --- /dev/null +++ b/misc/winsock_dns.c
@@ -0,0 +1,530 @@ +/* + * asynchronous DNS services + * + * (C) 1996,1997 Alex Korobka. + * + * TODO: Fork dns lookup helper during the startup (with a pipe + * for communication) and make it fork for a database request + * instead of forking the main process (i.e. something like + * Netscape 4.0). + */ + +#include <unistd.h> +#include <string.h> +#include <signal.h> +#include <sys/ioctl.h> +#include <sys/types.h> +#include <sys/ipc.h> +#include <sys/msg.h> +#include <sys/wait.h> +#include <errno.h> +#ifdef __EMX__ +#include <sys/so_ioctl.h> +#include <sys/param.h> +#endif +#ifdef __svr4__ +#include <sys/file.h> +#include <sys/filio.h> +#endif + +extern int h_errno; + +#include "windows.h" +#include "heap.h" +#include "ldt.h" +#include "message.h" +#include "miscemu.h" +#include "winsock.h" +#include "debug.h" + +#ifndef FASYNC +#define FASYNC FIOASYNC +#endif + +#define __WS_ASYNC_DEBUG 0 + +typedef struct /* async DNS op control struct */ +{ + ws_async_op* ws_aop; + char* buffer; + int type; + union + { + char* init; + char* name; + char* addr; + } rq; + unsigned ilength; +} ws_async_ctl; + +extern HANDLE16 __ws_gethandle( void* ptr ); +extern void* __ws_memalloc( int size ); +extern void __ws_memfree( void* ptr ); + +/* NOTE: ws_async_op list is traversed inside the SIGIO handler! */ + +static int __async_io_max_fd = 0; +static fd_set __async_io_fdset; +static ws_async_op* __async_op_list = NULL; + +static void fixup_wshe(struct ws_hostent* p_wshe, SEGPTR base); +static void fixup_wspe(struct ws_protoent* p_wspe, SEGPTR base); +static void fixup_wsse(struct ws_servent* p_wsse, SEGPTR base); + +extern void EVENT_AddIO( int fd, unsigned flag ); +extern void EVENT_DeleteIO( int fd, unsigned flag ); + +/* ----------------------------------- async/non-blocking I/O */ + +int WINSOCK_async_io(int fd, int async) +{ + int fd_flags; + +#ifndef __EMX__ + fcntl(fd, F_SETOWN, getpid()); +#endif + + fd_flags = fcntl(fd, F_GETFL, 0); + if (fcntl(fd, F_SETFL, (async)? fd_flags | FASYNC + : fd_flags & ~FASYNC ) != -1) return 0; + return -1; +} + +int WINSOCK_unblock_io(int fd, int noblock) +{ + int fd_flags; + + fd_flags = fcntl(fd, F_GETFL, 0); + if (fcntl(fd, F_SETFL, (noblock)? fd_flags | O_NONBLOCK + : fd_flags & ~O_NONBLOCK ) != -1) return 0; + return -1; +} + +int WINSOCK_check_async_op(ws_async_op* p_aop) +{ + ws_async_op* p = __async_op_list; + while( p ) if( p == p_aop ) return 1; + else p = p->next; + return 0; +} + +int WINSOCK_cancel_async_op(ws_async_op* p_aop) +{ + /* SIGIO unsafe! */ + + if( WINSOCK_check_async_op(p_aop) ) + { + if( !(p_aop->flags & WSMSG_DEAD_AOP) ) + { + kill(p_aop->pid, SIGKILL); + waitpid(p_aop->pid, NULL, 0); /* just in case */ + close(p_aop->fd[0]); + } + WINSOCK_unlink_async_op(p_aop); + EVENT_DeleteIO( p_aop->fd[0], EVENT_IO_READ ); + p_aop->flags = 0; + p_aop->hWnd = p_aop->uMsg = 0; + return 1; + } + return 0; +} + +void WINSOCK_cancel_task_aops(HTASK16 hTask, void (*__opfree)(void*)) +{ + /* SIGIO safe, hTask == 0 cancels all outstanding async ops */ + + int num = 0; + ws_async_op* p, *next; + + dprintf_winsock(stddeb,"\tcancelling async DNS requests... "); + + SIGNAL_MaskAsyncEvents( TRUE ); + next = __async_op_list; + while( (p = next) ) + { + HTASK16 hWndTask = GetWindowTask16(p->hWnd); + + next = p->next; + if(!hTask || !hWndTask || (hTask == hWndTask)) + { + WINSOCK_cancel_async_op(p); + if( __opfree ) __opfree(p); + num++; + } + } + SIGNAL_MaskAsyncEvents( FALSE ); + dprintf_winsock(stddeb,"%i total\n", num ); +} + +void WINSOCK_link_async_op(ws_async_op* p_aop) +{ + /* SIGIO safe */ + + p_aop->prev = NULL; + SIGNAL_MaskAsyncEvents( TRUE ); + if( __async_op_list ) + { + ws_async_op* p = __async_op_list; + __async_op_list->prev = p_aop; + + /* traverse the list and reap dead ops */ + while( p ) + { + if( p->flags & WSMSG_DEAD_AOP ) + { + ws_async_op* dead = p; + + dprintf_winsock(stddeb,"\treaping dead aop [%08x]\n", (unsigned)p ); + + p = p->next; + WINSOCK_unlink_async_op( dead ); + __ws_memfree( dead ); + continue; + } + p = p->next; + } + } + else FD_ZERO(&__async_io_fdset); + p_aop->next = __async_op_list; + __async_op_list = p_aop; + SIGNAL_MaskAsyncEvents( FALSE ); + + FD_SET(p_aop->fd[0], &__async_io_fdset); + if( p_aop->fd[0] > __async_io_max_fd ) + __async_io_max_fd = p_aop->fd[0]; +} + +void WINSOCK_unlink_async_op(ws_async_op* p_aop) +{ + /* SIGIO unsafe! */ + + if( p_aop == __async_op_list ) __async_op_list = p_aop->next; + else + p_aop->prev->next = p_aop->next; + if( p_aop->next ) p_aop->next->prev = p_aop->prev; + + FD_CLR(p_aop->fd[0], &__async_io_fdset); + if( p_aop->fd[0] == __async_io_max_fd ) + __async_io_max_fd--; +} + +/* ----------------------------------- SIGIO handler - + * + * link_async_op/unlink_async_op allow to install generic + * async IO handlers (provided that aop_control function is defined). + * + * Note: AsyncGetXbyY expilicitly raise it. + */ + +void WINSOCK_sigio(int signal) +{ + struct timeval timeout; + fd_set check_set; + ws_async_op* p_aop; + + check_set = __async_io_fdset; + memset(&timeout, 0, sizeof(timeout)); + + while( select(__async_io_max_fd + 1, + &check_set, NULL, NULL, &timeout) > 0) + { + for( p_aop = __async_op_list; + p_aop ; p_aop = p_aop->next ) + if( FD_ISSET(p_aop->fd[0], &check_set) ) + if( p_aop->aop_control(p_aop, AOP_IO) == AOP_CONTROL_REMOVE ) + { + p_aop->flags = WSMSG_DEAD_AOP; /* can't free inside the signal */ + close(p_aop->fd[0]); + FD_CLR(p_aop->fd[0],&__async_io_fdset); + if( p_aop->fd[0] == __async_io_max_fd ) + __async_io_max_fd = p_aop->fd[0]; + if( p_aop->pid ) + { + kill(p_aop->pid, SIGKILL); + waitpid(p_aop->pid, NULL, WNOHANG); + p_aop->pid = 0; + } + } + check_set = __async_io_fdset; + } +} + +/* ----------------------------------- getXbyY requests */ + +static ws_async_ctl async_ctl; /* child process control struct */ + +static int aop_control(ws_async_op* p_aop, int flag ) +{ + unsigned lLength; + + /* success: LOWORD(lLength) has the length of the struct + * to read. + * failure: LOWORD(lLength) is zero, HIWORD(lLength) contains + * the error code. + */ + + read(p_aop->fd[0], &lLength, sizeof(unsigned)); + if( LOWORD(lLength) ) + { + if( (int)LOWORD(lLength) <= p_aop->buflen ) + { + char* buffer = (char*)PTR_SEG_TO_LIN(p_aop->buffer_base); + read(p_aop->fd[0], buffer, LOWORD(lLength)); + switch( p_aop->flags ) + { + case WSMSG_ASYNC_HOSTBYNAME: + case WSMSG_ASYNC_HOSTBYADDR: + fixup_wshe((struct ws_hostent*)buffer, p_aop->buffer_base); break; + case WSMSG_ASYNC_PROTOBYNAME: + case WSMSG_ASYNC_PROTOBYNUM: + fixup_wspe((struct ws_protoent*)buffer, p_aop->buffer_base); break; + case WSMSG_ASYNC_SERVBYNAME: + case WSMSG_ASYNC_SERVBYPORT: + fixup_wsse((struct ws_servent*)buffer, p_aop->buffer_base); break; + default: + if( p_aop->flags ) fprintf(stderr,"Received unknown async request!\n"); + return AOP_CONTROL_REMOVE; + } + } + else lLength = ((UINT32)LOWORD(lLength)) | ((unsigned)WSAENOBUFS << 16); + } /* failure */ + +#if __WS_ASYNC_DEBUG + printf("DNS aop completed: hWnd [%04x], uMsg [%04x], aop [%04x], event [%08x]\n", + p_aop->hWnd, p_aop->uMsg, __ws_gethandle(p_aop), (LPARAM)lLength); +#endif + + /* FIXME: update num_async_rq */ + EVENT_DeleteIO( p_aop->fd[0], EVENT_IO_READ ); + PostMessage16( p_aop->hWnd, p_aop->uMsg, __ws_gethandle(p_aop), (LPARAM)lLength ); + + return AOP_CONTROL_REMOVE; /* one-shot request */ +} + + +HANDLE16 __WSAsyncDBQuery(LPWSINFO pwsi, HWND16 hWnd, UINT16 uMsg, INT16 type, LPSTR init, + INT16 len, LPSTR proto, SEGPTR sbuf, INT16 buflen, UINT32 flag) +{ + /* queue 'flag' request and fork off its handler */ + + async_ctl.ws_aop = (ws_async_op*)__ws_memalloc(sizeof(ws_async_op)); + + if( async_ctl.ws_aop ) + { + HANDLE16 handle = __ws_gethandle(async_ctl.ws_aop); + + if( pipe(async_ctl.ws_aop->fd) == 0 ) + { + async_ctl.rq.init = (char*)init; + async_ctl.ilength = len; + async_ctl.buffer = proto; + async_ctl.type = type; + + async_ctl.ws_aop->hWnd = hWnd; + async_ctl.ws_aop->uMsg = uMsg; + async_ctl.ws_aop->buffer_base = sbuf; async_ctl.ws_aop->buflen = buflen; + async_ctl.ws_aop->flags = flag; + async_ctl.ws_aop->aop_control = &aop_control; + + WINSOCK_link_async_op( async_ctl.ws_aop ); + + async_ctl.ws_aop->pid = fork(); + if( async_ctl.ws_aop->pid ) + { + close(async_ctl.ws_aop->fd[1]); /* write endpoint */ + dprintf_winsock(stddeb, "\tasync_op = %04x (child %i)\n", + handle, async_ctl.ws_aop->pid); + if( async_ctl.ws_aop->pid > 0 ) + { + EVENT_AddIO( async_ctl.ws_aop->fd[0], EVENT_IO_READ ); + pwsi->num_async_rq++; + return __ws_gethandle(async_ctl.ws_aop); + } + + /* fork() failed */ + close(async_ctl.ws_aop->fd[0]); + pwsi->err = WSAEWOULDBLOCK; + } + else + { + /* child process */ + + close(async_ctl.ws_aop->fd[0]); /* read endpoint */ + switch( flag ) + { + case WSMSG_ASYNC_HOSTBYADDR: + case WSMSG_ASYNC_HOSTBYNAME: + WS_do_async_gethost(pwsi, flag); + break; + case WSMSG_ASYNC_PROTOBYNUM: + case WSMSG_ASYNC_PROTOBYNAME: + WS_do_async_getproto(pwsi, flag); + break; + case WSMSG_ASYNC_SERVBYPORT: + case WSMSG_ASYNC_SERVBYNAME: + WS_do_async_getserv(pwsi, flag); + break; + } + _exit(0); /* skip atexit()'ed cleanup */ + } + } + else pwsi->err = wsaErrno(); /* failed to create pipe */ + + __ws_memfree((void*)async_ctl.ws_aop); + } else pwsi->err = WSAEWOULDBLOCK; + return 0; +} + +static int _async_notify() +{ + /* use half-duplex pipe to send variable length packets + * to the parent process */ + + write(async_ctl.ws_aop->fd[1], &async_ctl.ilength, sizeof(unsigned)); + write(async_ctl.ws_aop->fd[1], async_ctl.buffer, async_ctl.ilength ); + +#ifndef __EMX__ + kill(getppid(), SIGIO); /* simulate async I/O */ +#endif + +#if __WS_ASYNC_DEBUG + printf("handler - notify aop [%d, buf %d]\n", async_ctl.ilength, async_ctl.ws_aop->buflen); +#endif + return 1; +} + +static void _async_fail() +{ + /* write a DWORD with error code (low word is zero) */ + + async_ctl.ilength = + (h_errno < 0) ? (unsigned)WSAMAKEASYNCREPLY( 0, wsaErrno() ) + : (unsigned)WSAMAKEASYNCREPLY( 0, wsaHerrno() ); + write(async_ctl.ws_aop->fd[1], &async_ctl.ilength, sizeof(unsigned) ); +#ifndef __EMX__ + kill(getppid(), SIGIO); /* simulate async I/O */ +#endif + +#if __WS_ASYNC_DEBUG + printf("handler - failed aop [%d, buf %d]\n", async_ctl.ilength, async_ctl.ws_aop->buflen); +#endif +} + +void dump_ws_hostent_offset(struct ws_hostent* wshe) +{ + int i; + char* base = (char*)wshe; + unsigned* ptr; + + printf("h_name = %08x\t[%s]\n", (unsigned)wshe->h_name, base + (unsigned)wshe->h_name); + printf("h_aliases = %08x\t[%08x]\n", (unsigned)wshe->h_aliases, + (unsigned)(base + (unsigned)wshe->h_aliases)); + ptr = (unsigned*)(base + (unsigned)wshe->h_aliases); + for(i = 0; ptr[i]; i++ ) + { + printf("%i - %08x ", i + 1, ptr[i]); + printf(" [%s]\n", ((char*)base) + ptr[i]); + } + printf("h_length = %i\n", wshe->h_length); +} + +void WS_do_async_gethost(LPWSINFO pwsi, unsigned flag ) +{ + int size = 0; + struct hostent* p_he; + + close(async_ctl.ws_aop->fd[0]); + + dprintf_winsock(stddeb,"DNS: getting hostent for [%s]\n", async_ctl.rq.name ); + + p_he = (flag & WSMSG_ASYNC_HOSTBYNAME) + ? gethostbyname(async_ctl.rq.name) + : gethostbyaddr(async_ctl.rq.name, + async_ctl.ilength, async_ctl.type); + dprintf_winsock(stddeb,"DNS: done!\n"); + + if( p_he ) size = WS_dup_he(pwsi, p_he, WS_DUP_SEGPTR | WS_DUP_OFFSET ); + if( size ) + { + async_ctl.buffer = pwsi->buffer; + async_ctl.ilength = (unsigned)WSAMAKEASYNCREPLY( (UINT16)size, 0 ); + _async_notify( flag ); + } + else _async_fail(); +} + +void WS_do_async_getproto(LPWSINFO pwsi, unsigned flag ) +{ + int size = 0; + struct protoent* p_pe; + + close(async_ctl.ws_aop->fd[0]); + p_pe = (flag & WSMSG_ASYNC_PROTOBYNAME) + ? getprotobyname(async_ctl.rq.name) + : getprotobynumber(async_ctl.type); + if( p_pe ) size = WS_dup_pe(pwsi, p_pe, WS_DUP_SEGPTR | WS_DUP_OFFSET ); + if( size ) + { + async_ctl.buffer = pwsi->buffer; + async_ctl.ilength = (unsigned)WSAMAKEASYNCREPLY( (UINT16)size, 0 ); + _async_notify( flag ); + } + else _async_fail(); +} + +void WS_do_async_getserv(LPWSINFO pwsi, unsigned flag ) +{ + int size = 0; + struct servent* p_se; + + close(async_ctl.ws_aop->fd[0]); + p_se = (flag & WSMSG_ASYNC_SERVBYNAME) + ? getservbyname(async_ctl.rq.name, async_ctl.buffer) + : getservbyport(async_ctl.type, async_ctl.buffer); + if( p_se ) size = WS_dup_se(pwsi, p_se, WS_DUP_SEGPTR | WS_DUP_OFFSET ); + if( size ) + { + async_ctl.buffer = pwsi->buffer; + async_ctl.ilength = (unsigned)WSAMAKEASYNCREPLY( (UINT16)size, 0 ); + _async_notify( flag ); + } + else _async_fail(); +} + +/* ----------------------------------- helper functions */ + +void fixup_wshe(struct ws_hostent* p_wshe, SEGPTR base) +{ + /* add 'base' to ws_hostent pointers to convert them from offsets */ + + int i; + unsigned* p_aliases,*p_addr; + + p_aliases = (unsigned*)((char*)p_wshe + (unsigned)p_wshe->h_aliases); + p_addr = (unsigned*)((char*)p_wshe + (unsigned)p_wshe->h_addr_list); + ((unsigned)(p_wshe->h_name)) += (unsigned)base; + ((unsigned)(p_wshe->h_aliases)) += (unsigned)base; + ((unsigned)(p_wshe->h_addr_list)) += (unsigned)base; + for(i=0;p_aliases[i];i++) p_aliases[i] += (unsigned)base; + for(i=0;p_addr[i];i++) p_addr[i] += (unsigned)base; +} + +void fixup_wspe(struct ws_protoent* p_wspe, SEGPTR base) +{ + int i; + unsigned* p_aliases = (unsigned*)((char*)p_wspe + (unsigned)p_wspe->p_aliases); + ((unsigned)(p_wspe->p_name)) += (unsigned)base; + ((unsigned)(p_wspe->p_aliases)) += (unsigned)base; + for(i=0;p_aliases[i];i++) p_aliases[i] += (unsigned)base; +} + +void fixup_wsse(struct ws_servent* p_wsse, SEGPTR base) +{ + int i; + unsigned* p_aliases = (unsigned*)((char*)p_wsse + (unsigned)p_wsse->s_aliases); + ((unsigned)(p_wsse->s_name)) += (unsigned)base; + ((p_wsse->s_proto)) += (unsigned)base; + ((p_wsse->s_aliases)) += (unsigned)base; + for(i=0;p_aliases[i];i++) p_aliases[i] += (unsigned)base; +} +
diff --git a/misc/wsprintf.c b/misc/wsprintf.c index 9cfbc57..f347fd5 100644 --- a/misc/wsprintf.c +++ b/misc/wsprintf.c
@@ -230,7 +230,8 @@ /*********************************************************************** * wvsnprintf16 (Not a Windows API) */ -INT16 wvsnprintf16( LPSTR buffer, UINT16 maxlen, LPCSTR spec, LPCVOID args ) +INT16 WINAPI wvsnprintf16( LPSTR buffer, UINT16 maxlen, LPCSTR spec, + LPCVOID args ) { WPRINTF_FORMAT format; LPSTR p = buffer; @@ -329,7 +330,8 @@ /*********************************************************************** * wvsnprintf32A (Not a Windows API) */ -INT32 wvsnprintf32A( LPSTR buffer, UINT32 maxlen, LPCSTR spec, LPCVOID args ) +INT32 WINAPI wvsnprintf32A( LPSTR buffer, UINT32 maxlen, LPCSTR spec, + LPCVOID args ) { WPRINTF_FORMAT format; LPSTR p = buffer; @@ -397,7 +399,8 @@ /*********************************************************************** * wvsnprintf32W (Not a Windows API) */ -INT32 wvsnprintf32W( LPWSTR buffer, UINT32 maxlen, LPCWSTR spec, LPCVOID args ) +INT32 WINAPI wvsnprintf32W( LPWSTR buffer, UINT32 maxlen, LPCWSTR spec, + LPCVOID args ) { WPRINTF_FORMAT format; LPWSTR p = buffer; @@ -464,7 +467,7 @@ /*********************************************************************** * wvsprintf16 (USER.421) */ -INT16 wvsprintf16( LPSTR buffer, LPCSTR spec, LPCVOID args ) +INT16 WINAPI wvsprintf16( LPSTR buffer, LPCSTR spec, LPCVOID args ) { return wvsnprintf16( buffer, 0xffff, spec, args ); } @@ -473,7 +476,7 @@ /*********************************************************************** * wvsprintf32A (USER32.586) */ -INT32 wvsprintf32A( LPSTR buffer, LPCSTR spec, LPCVOID args ) +INT32 WINAPI wvsprintf32A( LPSTR buffer, LPCSTR spec, LPCVOID args ) { return wvsnprintf32A( buffer, 0xffffffff, spec, args ); } @@ -482,7 +485,7 @@ /*********************************************************************** * wvsprintf32W (USER32.587) */ -INT32 wvsprintf32W( LPWSTR buffer, LPCWSTR spec, LPCVOID args ) +INT32 WINAPI wvsprintf32W( LPWSTR buffer, LPCWSTR spec, LPCVOID args ) { return wvsnprintf32W( buffer, 0xffffffff, spec, args ); } @@ -492,7 +495,7 @@ * wsprintf16 (USER.420) */ /* Winelib version */ -INT16 wsprintf16( LPSTR buffer, LPCSTR spec, ... ) +INT16 WINAPIV wsprintf16( LPSTR buffer, LPCSTR spec, ... ) { va_list valist; INT16 res; @@ -505,7 +508,7 @@ } /* Emulator version */ -INT16 WIN16_wsprintf16(void) +INT16 WINAPIV WIN16_wsprintf16(void) { SEGPTR *win_stack = (SEGPTR *)CURRENT_STACK16->args; LPSTR buffer = (LPSTR)PTR_SEG_TO_LIN(win_stack[0]); @@ -519,7 +522,7 @@ * wsprintf32A (USER32.584) */ /* Winelib version */ -INT32 wsprintf32A( LPSTR buffer, LPCSTR spec, ... ) +INT32 WINAPIV wsprintf32A( LPSTR buffer, LPCSTR spec, ... ) { va_list valist; INT32 res; @@ -531,7 +534,7 @@ } /* Emulator version */ -INT32 WIN32_wsprintf32A( DWORD *args ) +INT32 WINAPIV WIN32_wsprintf32A( DWORD *args ) { return wvsprintf32A( (LPSTR)args[0], (LPCSTR)args[1], (LPCVOID)&args[2] ); } @@ -541,7 +544,7 @@ * wsprintf32W (USER32.585) */ /* Winelib version */ -INT32 wsprintf32W( LPWSTR buffer, LPCWSTR spec, ... ) +INT32 WINAPIV wsprintf32W( LPWSTR buffer, LPCWSTR spec, ... ) { va_list valist; INT32 res; @@ -553,7 +556,7 @@ } /* Emulator version */ -INT32 WIN32_wsprintf32W( DWORD *args ) +INT32 WINAPIV WIN32_wsprintf32W( DWORD *args ) { return wvsprintf32W( (LPWSTR)args[0], (LPCWSTR)args[1], (LPCVOID)&args[2]); }
diff --git a/miscemu/emulate.c b/miscemu/emulate.c index eee31e0..6e5ec58 100644 --- a/miscemu/emulate.c +++ b/miscemu/emulate.c
@@ -28,7 +28,7 @@ */ /* FIXME: Only skeletal implementation for now */ -void WIN87_fpmath( CONTEXT *context ) +void WINAPI WIN87_fpmath( CONTEXT *context ) { dprintf_int(stddeb, "_fpmath: (cs:eip=%x:%lx es=%x bx=%04x ax=%04x dx==%04x)\n", (WORD)CS_reg(context), EIP_reg(context), @@ -107,21 +107,20 @@ } -void -WIN87_WinEm87Info(struct Win87EmInfoStruct *pWIS, int cbWin87EmInfoStruct) +void WINAPI WIN87_WinEm87Info(struct Win87EmInfoStruct *pWIS, + int cbWin87EmInfoStruct) { dprintf_int(stddeb, "__WinEm87Info(%p,%d)\n",pWIS,cbWin87EmInfoStruct); } -void -WIN87_WinEm87Restore(void *pWin87EmSaveArea, int cbWin87EmSaveArea) +void WINAPI WIN87_WinEm87Restore(void *pWin87EmSaveArea, + int cbWin87EmSaveArea) { dprintf_int(stddeb, "__WinEm87Restore(%p,%d)\n", pWin87EmSaveArea,cbWin87EmSaveArea); } -void -WIN87_WinEm87Save(void *pWin87EmSaveArea, int cbWin87EmSaveArea) +void WINAPI WIN87_WinEm87Save(void *pWin87EmSaveArea, int cbWin87EmSaveArea) { dprintf_int(stddeb, "__WinEm87Save(%p,%d)\n", pWin87EmSaveArea,cbWin87EmSaveArea);
diff --git a/miscemu/instr.c b/miscemu/instr.c index 931cfe8..9e414c4 100644 --- a/miscemu/instr.c +++ b/miscemu/instr.c
@@ -8,7 +8,7 @@ #include "windows.h" #include "ldt.h" #include "miscemu.h" -#include "sigcontext.h" +#include "sig_context.h" #define STACK_sig(context) \
diff --git a/msdos/dpmi.c b/msdos/dpmi.c index 05404ce..ae7a852 100644 --- a/msdos/dpmi.c +++ b/msdos/dpmi.c
@@ -52,7 +52,7 @@ * * Handler for int 31h (DPMI). */ -void INT_Int31Handler( CONTEXT *context ) +void WINAPI INT_Int31Handler( CONTEXT *context ) { DWORD dw; BYTE *ptr;
diff --git a/msdos/int10.c b/msdos/int10.c index bb99f8e..e73d5bd 100644 --- a/msdos/int10.c +++ b/msdos/int10.c
@@ -15,7 +15,7 @@ * * Handler for int 10h (video). */ -void INT_Int10Handler( CONTEXT *context ) +void WINAPI INT_Int10Handler( CONTEXT *context ) { switch(AH_reg(context)) {
diff --git a/msdos/int11.c b/msdos/int11.c index 88b3041..c66f20c 100644 --- a/msdos/int11.c +++ b/msdos/int11.c
@@ -15,7 +15,7 @@ * * Handler for int 11h (get equipment list). */ -void INT_Int11Handler( CONTEXT *context ) +void WINAPI INT_Int11Handler( CONTEXT *context ) { int diskdrives = 0; int parallelports = 0;
diff --git a/msdos/int12.c b/msdos/int12.c index cff7f52..79429bd 100644 --- a/msdos/int12.c +++ b/msdos/int12.c
@@ -9,7 +9,7 @@ * * Handler for int 12h (get memory size). */ -void INT_Int12Handler( CONTEXT *context ) +void WINAPI INT_Int12Handler( CONTEXT *context ) { AX_reg(context) = 640; }
diff --git a/msdos/int13.c b/msdos/int13.c index 9213897..eb9560c 100644 --- a/msdos/int13.c +++ b/msdos/int13.c
@@ -15,7 +15,7 @@ * * Handler for int 13h (disk I/O). */ -void INT_Int13Handler( CONTEXT *context ) +void WINAPI INT_Int13Handler( CONTEXT *context ) { switch(AH_reg(context)) {
diff --git a/msdos/int1a.c b/msdos/int1a.c index ddc52ef..1e8157a 100644 --- a/msdos/int1a.c +++ b/msdos/int1a.c
@@ -44,7 +44,7 @@ * * Handler for int 1ah (date and time). */ -void INT_Int1aHandler( CONTEXT *context ) +void WINAPI INT_Int1aHandler( CONTEXT *context ) { time_t ltime; DWORD ticks;
diff --git a/msdos/int21.c b/msdos/int21.c index 46b0004..d01e61f 100644 --- a/msdos/int21.c +++ b/msdos/int21.c
@@ -95,14 +95,14 @@ return TRUE; } -BYTE *GetCurrentDTA(void) +static BYTE *GetCurrentDTA(void) { TDB *pTask = (TDB *)GlobalLock16( GetCurrentTask() ); return (BYTE *)PTR_SEG_TO_LIN( pTask->dta ); } -void ChopOffWhiteSpace(char *string) +static void ChopOffWhiteSpace(char *string) { int length; @@ -324,7 +324,7 @@ } -void OpenExistingFile( CONTEXT *context ) +static void OpenExistingFile( CONTEXT *context ) { AX_reg(context) = _lopen16( PTR_SEG_OFF_TO_LIN(DS_reg(context),DX_reg(context)), AL_reg(context) ); @@ -880,7 +880,7 @@ /*********************************************************************** * DOS3Call (KERNEL.102) */ -void DOS3Call( CONTEXT *context ) +void WINAPI DOS3Call( CONTEXT *context ) { BOOL32 bSetDOSExtendedError = FALSE; @@ -1044,7 +1044,7 @@ break; case 0x30: /* GET DOS VERSION */ - AX_reg(context) = DOSVERSION; + AX_reg(context) = HIWORD(GetVersion16()); BX_reg(context) = 0x0012; /* 0x123456 is Wine's serial # */ CX_reg(context) = 0x3456; break; @@ -1077,7 +1077,7 @@ break; case 0x06: /* GET TRUE VERSION NUMBER */ - BX_reg(context) = DOSVERSION; + BX_reg(context) = HIWORD(GetVersion16()); DX_reg(context) = 0x00; break;
diff --git a/msdos/int25.c b/msdos/int25.c index 7073bd8..8e99609 100644 --- a/msdos/int25.c +++ b/msdos/int25.c
@@ -18,7 +18,7 @@ * * Handler for int 25h (absolute disk read). */ -void INT_Int25Handler( CONTEXT *context ) +void WINAPI INT_Int25Handler( CONTEXT *context ) { BYTE *dataptr = PTR_SEG_OFF_TO_LIN( DS_reg(context), BX_reg(context) ); DWORD begin, length;
diff --git a/msdos/int26.c b/msdos/int26.c index 09ee526..4a58a5c 100644 --- a/msdos/int26.c +++ b/msdos/int26.c
@@ -17,7 +17,7 @@ * * Handler for int 26h (absolute disk read). */ -void INT_Int26Handler( CONTEXT *context ) +void WINAPI INT_Int26Handler( CONTEXT *context ) { BYTE *dataptr = PTR_SEG_OFF_TO_LIN( DS_reg(context), BX_reg(context) ); DWORD begin, length;
diff --git a/msdos/int2a.c b/msdos/int2a.c index 02e37d8..35b6c22 100644 --- a/msdos/int2a.c +++ b/msdos/int2a.c
@@ -15,7 +15,7 @@ * * Handler for int 2ah (network). */ -void INT_Int2aHandler( CONTEXT *context ) +void WINAPI INT_Int2aHandler( CONTEXT *context ) { switch(AH_reg(context)) {
diff --git a/msdos/int2f.c b/msdos/int2f.c index d8dbae1..b43e3b2 100644 --- a/msdos/int2f.c +++ b/msdos/int2f.c
@@ -11,7 +11,6 @@ #include "msdos.h" #include "miscemu.h" #include "module.h" -#include "options.h" #include "stddebug.h" /* #define DEBUG_INT */ #include "debug.h" @@ -27,7 +26,7 @@ * * Handler for int 2fh (multiplex). */ -void INT_Int2fHandler( CONTEXT *context ) +void WINAPI INT_Int2fHandler( CONTEXT *context ) { switch(AH_reg(context)) { @@ -76,13 +75,15 @@ switch(AL_reg(context)) { case 0x00: /* Windows enhanced mode installation check */ - AX_reg(context) = (Options.mode == MODE_ENHANCED) ? WINVERSION : 0; + AX_reg(context) = (GetWinFlags() & WF_ENHANCED) ? + LOWORD(GetVersion16()) : 0; break; case 0x0a: /* Get Windows version and type */ AX_reg(context) = 0; - BX_reg(context) = (WINVERSION >> 8) | ((WINVERSION << 8) & 0xff00); - CX_reg(context) = (Options.mode == MODE_ENHANCED) ? 3 : 2; + BX_reg(context) = (LOWORD(GetVersion16()) << 8) | + (LOWORD(GetVersion16()) >> 8); + CX_reg(context) = (GetWinFlags() & WF_ENHANCED) ? 3 : 2; break; case 0x80: /* Release time-slice */
diff --git a/msdos/int4b.c b/msdos/int4b.c index 4f4e8c5..6157547 100644 --- a/msdos/int4b.c +++ b/msdos/int4b.c
@@ -8,7 +8,7 @@ * INT_Int4bHandler * */ -void INT_Int4bHandler( CONTEXT *context ) +void WINAPI INT_Int4bHandler( CONTEXT *context ) { switch(AH_reg(context)) {
diff --git a/msdos/int5c.c b/msdos/int5c.c index ab22059..6a17e8a 100644 --- a/msdos/int5c.c +++ b/msdos/int5c.c
@@ -15,7 +15,7 @@ * * Also handler for interrupt 5c. */ -void NetBIOSCall( CONTEXT *context ) +void WINAPI NetBIOSCall( CONTEXT *context ) { BYTE* ptr; ptr = (BYTE*) PTR_SEG_OFF_TO_LIN(ES_reg(context),BX_reg(context));
diff --git a/msdos/vxd.c b/msdos/vxd.c index a56c1e5..dc51e79 100644 --- a/msdos/vxd.c +++ b/msdos/vxd.c
@@ -21,20 +21,29 @@ CX_reg(context), DX_reg(context), SI_reg(context), \ DI_reg(context), (WORD)DS_reg(context), (WORD)ES_reg(context) ) + +static WORD VXD_WinVersion(void) +{ + WORD version = GetVersion16(); + return (version >> 8) | (version << 8); +} + /*********************************************************************** * VXD_PageFile */ -void VXD_PageFile( CONTEXT *context ) +void WINAPI VXD_PageFile( CONTEXT *context ) { + unsigned service = AX_reg(context); + /* taken from Ralf Brown's Interrupt List */ - dprintf_vxd(stddeb,"VxD PageFile called ...\n"); + dprintf_vxd(stddeb,"VxD: [%04x] PageFile\n", (UINT16)service ); - switch(AX_reg(context)) + switch(service) { case 0x00: /* get version, is this windows version? */ dprintf_vxd(stddeb,"VxD PageFile: returning version\n"); - AX_reg(context) = (WINVERSION >> 8) | ((WINVERSION << 8) & 0xff00); + AX_reg(context) = VXD_WinVersion(); RESET_CFLAG(context); break; @@ -69,15 +78,17 @@ /*********************************************************************** * VXD_Shell */ -void VXD_Shell( CONTEXT *context ) +void WINAPI VXD_Shell( CONTEXT *context ) { - dprintf_vxd(stddeb,"VxD Shell called ...\n"); + unsigned service = DX_reg(context); - switch (DX_reg(context)) /* Ralf Brown says EDX, but I use DX instead */ + dprintf_vxd(stddeb,"VxD: [%04x] Shell\n", (UINT16)service); + + switch (service) /* Ralf Brown says EDX, but I use DX instead */ { case 0x0000: dprintf_vxd(stddeb,"VxD Shell: returning version\n"); - AX_reg(context) = (WINVERSION >> 8) | ((WINVERSION << 8) & 0xff00); + AX_reg(context) = VXD_WinVersion(); EBX_reg(context) = 1; /* system VM Handle */ break; @@ -127,15 +138,17 @@ /*********************************************************************** * VXD_Comm */ -void VXD_Comm( CONTEXT *context ) +void WINAPI VXD_Comm( CONTEXT *context ) { - dprintf_vxd(stddeb,"VxD Comm called ...\n"); + unsigned service = AX_reg(context); - switch (AX_reg(context)) + dprintf_vxd(stddeb,"VxD: [%04x] Comm\n", (UINT16)service); + + switch (service) { case 0x0000: /* get version */ dprintf_vxd(stddeb,"VxD Comm: returning version\n"); - AX_reg(context) = (WINVERSION >> 8) | ((WINVERSION << 8) & 0xff00); + AX_reg(context) = VXD_WinVersion(); RESET_CFLAG(context); break; @@ -146,3 +159,37 @@ VXD_BARF( context, "comm" ); } } + +/*********************************************************************** + * VXD_Timer + */ +void VXD_Timer( CONTEXT *context ) +{ + unsigned service = AX_reg(context); + + dprintf_vxd(stddeb,"VxD: [%04x] Virtual Timer\n", (UINT16)service); + + switch(service) + { + case 0x0000: /* version */ + AX_reg(context) = VXD_WinVersion(); + RESET_CFLAG(context); + break; + + case 0x0100: /* clock tick time, in 840nsecs */ + EAX_reg(context) = GetTickCount(); + + EDX_reg(context) = EAX_reg(context) >> 22; + EAX_reg(context) <<= 10; /* not very precise */ + break; + + case 0x0101: /* current Windows time, msecs */ + case 0x0102: /* current VM time, msecs */ + EAX_reg(context) = GetTickCount(); + break; + + default: + VXD_BARF( context, "VTD" ); + } +} +
diff --git a/multimedia/joystick.c b/multimedia/joystick.c index 4e643e2..cdd65ab 100644 --- a/multimedia/joystick.c +++ b/multimedia/joystick.c
@@ -111,7 +111,7 @@ /************************************************************************** * JoyGetNumDevs [MMSYSTEM.101] */ -WORD JoyGetNumDevs(void) +WORD WINAPI JoyGetNumDevs(void) { int joy; WORD joy_cnt = 0; @@ -130,7 +130,7 @@ /************************************************************************** * JoyGetDevCaps [MMSYSTEM.102] */ -WORD JoyGetDevCaps(WORD wID, LPJOYCAPS lpCaps, WORD wSize) +WORD WINAPI JoyGetDevCaps(WORD wID, LPJOYCAPS lpCaps, WORD wSize) { dprintf_mmsys(stderr, "JoyGetDevCaps(%04X, %p, %d);\n", wID, lpCaps, wSize); @@ -138,7 +138,7 @@ if (JoyOpenDriver(wID) == TRUE) { lpCaps->wMid = MM_MICROSOFT; lpCaps->wPid = MM_PC_JOYSTICK; - strcpy(lpCaps->szPname, "WineJoy\0"); /* joystick product name */ + strcpy(lpCaps->szPname, "WineJoy"); /* joystick product name */ lpCaps->wXmin = 0; /* FIXME */ lpCaps->wXmax = 0xffff; lpCaps->wYmin = 0; @@ -159,7 +159,7 @@ /************************************************************************** * JoyGetPos [MMSYSTEM.103] */ -WORD JoyGetPos(WORD wID, LPJOYINFO lpInfo) +WORD WINAPI JoyGetPos(WORD wID, LPJOYINFO lpInfo) { struct js_status js; @@ -184,7 +184,7 @@ /************************************************************************** * JoyGetThreshold [MMSYSTEM.104] */ -WORD JoyGetThreshold(WORD wID, LPWORD lpThreshold) +WORD WINAPI JoyGetThreshold(WORD wID, LPWORD lpThreshold) { dprintf_mmsys(stderr, "JoyGetThreshold(%04X, %p);\n", wID, lpThreshold); if (wID > 3) return JOYERR_PARMS; @@ -195,7 +195,7 @@ /************************************************************************** * JoyReleaseCapture [MMSYSTEM.105] */ -WORD JoyReleaseCapture(WORD wID) +WORD WINAPI JoyReleaseCapture(WORD wID) { dprintf_mmsys(stderr, "JoyReleaseCapture(%04X);\n", wID); JoyCaptured = FALSE; @@ -208,7 +208,7 @@ /************************************************************************** * JoySetCapture [MMSYSTEM.106] */ -WORD JoySetCapture(HWND16 hWnd, WORD wID, WORD wPeriod, BOOL16 bChanged) +WORD WINAPI JoySetCapture(HWND16 hWnd, WORD wID, WORD wPeriod, BOOL16 bChanged) { dprintf_mmsys(stderr, "JoySetCapture(%04X, %04X, %d, %d);\n", @@ -227,7 +227,7 @@ /************************************************************************** * JoySetThreshold [MMSYSTEM.107] */ -WORD JoySetThreshold(WORD wID, WORD wThreshold) +WORD WINAPI JoySetThreshold(WORD wID, WORD wThreshold) { dprintf_mmsys(stderr, "JoySetThreshold(%04X, %d);\n", wID, wThreshold); @@ -239,7 +239,7 @@ /************************************************************************** * JoySetCalibration [MMSYSTEM.109] */ -WORD JoySetCalibration(WORD wID) +WORD WINAPI JoySetCalibration(WORD wID) { fprintf(stderr, "EMPTY STUB !!! JoySetCalibration(%04X);\n", wID); return JOYERR_NOCANDO;
diff --git a/multimedia/mcistring.c b/multimedia/mcistring.c index 1624ee3..f97ca49 100644 --- a/multimedia/mcistring.c +++ b/multimedia/mcistring.c
@@ -42,8 +42,8 @@ extern UINT16 MMSYSTEM_NextDevID(UINT16 wDevID); extern BOOL32 MMSYSTEM_DevIDValid(UINT16 wDevID); -LONG DrvDefDriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg, - DWORD dwParam1, DWORD dwParam2); +LONG WINAPI DrvDefDriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg, + DWORD dwParam1, DWORD dwParam2); LONG WAVE_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg, DWORD dwParam1, DWORD dwParam2); @@ -2107,8 +2107,8 @@ /* FIXME: "all" is a valid devicetype and we should access all devices if * it is used. (imagine "close all"). Not implemented yet. */ -DWORD mciSendString (LPCSTR lpstrCommand, LPSTR lpstrReturnString, - UINT16 uReturnLength, HWND16 hwndCallback) +DWORD WINAPI mciSendString (LPCSTR lpstrCommand, LPSTR lpstrReturnString, + UINT16 uReturnLength, HWND16 hwndCallback) { char *cmd,*dev,*args,**keywords,*filename; WORD uDevTyp=0,wDevID=0;
diff --git a/multimedia/midi.c b/multimedia/midi.c index 7384f8d..9392819 100644 --- a/multimedia/midi.c +++ b/multimedia/midi.c
@@ -1089,7 +1089,7 @@ lpCaps->wMid = 0x00FF; /* Manufac ID */ lpCaps->wPid = 0x0001; /* Product ID */ lpCaps->vDriverVersion = 0x001; /* Product Version */ - strcpy(lpCaps->szPname, "Linux MIDIOUT Driver version 0.01"); + strcpy(lpCaps->szPname, "Linux MIDIOUT Driver v0.01"); /* FIXME Values are the same as I get with Borland TC 4.5 */
diff --git a/multimedia/mmsystem.c b/multimedia/mmsystem.c index b4f6cf9..b13221f 100644 --- a/multimedia/mmsystem.c +++ b/multimedia/mmsystem.c
@@ -39,8 +39,8 @@ UINT16 midiGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); UINT16 waveGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize); -LONG DrvDefDriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg, - DWORD dwParam1, DWORD dwParam2); +LONG WINAPI DrvDefDriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg, + DWORD dwParam1, DWORD dwParam2); LONG WAVE_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg, DWORD dwParam1, DWORD dwParam2); @@ -98,8 +98,8 @@ /************************************************************************** * MMSYSTEM_WEP [MMSYSTEM.1] */ -int MMSYSTEM_WEP(HINSTANCE16 hInstance, WORD wDataSeg, - WORD cbHeapSize, LPSTR lpCmdLine) +int WINAPI MMSYSTEM_WEP(HINSTANCE16 hInstance, WORD wDataSeg, + WORD cbHeapSize, LPSTR lpCmdLine) { fprintf(stderr, "STUB: Unloading MMSystem DLL ... hInst=%04X \n", hInstance); return(TRUE); @@ -108,7 +108,7 @@ /************************************************************************** * sndPlaySound [MMSYSTEM.2] */ -BOOL16 sndPlaySound(LPCSTR lpszSoundName, UINT16 uFlags) +BOOL16 WINAPI sndPlaySound(LPCSTR lpszSoundName, UINT16 uFlags) { BOOL16 bRet = FALSE; HMMIO16 hmmio; @@ -251,7 +251,7 @@ /************************************************************************** * mmsystemGetVersion [MMSYSTEM.5] */ -WORD mmsystemGetVersion() +WORD WINAPI mmsystemGetVersion() { dprintf_mmsys(stddeb, "mmsystemGetVersion // 0.4.0 ...?... :-) !\n"); return 0x0040; @@ -260,8 +260,8 @@ /************************************************************************** * DriverProc [MMSYSTEM.6] */ -LRESULT DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg, - DWORD dwParam1, DWORD dwParam2) +LRESULT WINAPI DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg, + DWORD dwParam1, DWORD dwParam2) { return DrvDefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2); } @@ -269,8 +269,8 @@ /************************************************************************** * DriverCallback [MMSYSTEM.31] */ -BOOL16 DriverCallback(DWORD dwCallBack, UINT16 uFlags, HANDLE16 hDev, - WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2) +BOOL16 WINAPI DriverCallback(DWORD dwCallBack, UINT16 uFlags, HANDLE16 hDev, + WORD wMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2) { LPWAVEOPENDESC lpDesc; @@ -303,7 +303,7 @@ /************************************************************************** * auxGetNumDevs [MMSYSTEM.350] */ -UINT16 auxGetNumDevs() +UINT16 WINAPI auxGetNumDevs() { UINT16 count = 0; dprintf_mmsys(stddeb, "auxGetNumDevs !\n"); @@ -315,7 +315,7 @@ /************************************************************************** * auxGetDevCaps [MMSYSTEM.351] */ -UINT16 auxGetDevCaps(UINT16 uDeviceID, AUXCAPS * lpCaps, UINT16 uSize) +UINT16 WINAPI auxGetDevCaps(UINT16 uDeviceID, AUXCAPS * lpCaps, UINT16 uSize) { dprintf_mmsys(stddeb, "auxGetDevCaps(%04X, %p, %d) !\n", uDeviceID, lpCaps, uSize); @@ -326,7 +326,7 @@ /************************************************************************** * auxGetVolume [MMSYSTEM.352] */ -UINT16 auxGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume) +UINT16 WINAPI auxGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume) { dprintf_mmsys(stddeb, "auxGetVolume(%04X, %p) !\n", uDeviceID, lpdwVolume); return auxMessage(uDeviceID, AUXDM_GETVOLUME, 0L, (DWORD)lpdwVolume, 0L); @@ -335,7 +335,7 @@ /************************************************************************** * auxSetVolume [MMSYSTEM.353] */ -UINT16 auxSetVolume(UINT16 uDeviceID, DWORD dwVolume) +UINT16 WINAPI auxSetVolume(UINT16 uDeviceID, DWORD dwVolume) { dprintf_mmsys(stddeb, "auxSetVolume(%04X, %08lX) !\n", uDeviceID, dwVolume); return auxMessage(uDeviceID, AUXDM_SETVOLUME, 0L, dwVolume, 0L); @@ -344,7 +344,7 @@ /************************************************************************** * auxOutMessage [MMSYSTEM.354] */ -DWORD auxOutMessage(UINT16 uDeviceID, UINT16 uMessage, DWORD dw1, DWORD dw2) +DWORD WINAPI auxOutMessage(UINT16 uDeviceID, UINT16 uMessage, DWORD dw1, DWORD dw2) { dprintf_mmsys(stddeb, "auxOutMessage(%04X, %04X, %08lX, %08lX)\n", uDeviceID, uMessage, dw1, dw2); @@ -354,7 +354,7 @@ /************************************************************************** * mciGetErrorString [MMSYSTEM.706] */ -BOOL16 mciGetErrorString (DWORD wError, LPSTR lpstrBuffer, UINT16 uLength) +BOOL16 WINAPI mciGetErrorString (DWORD wError, LPSTR lpstrBuffer, UINT16 uLength) { LPSTR msgptr; dprintf_mmsys(stddeb, "mciGetErrorString(%08lX, %p, %d);\n", wError, lpstrBuffer, uLength); @@ -630,7 +630,7 @@ /************************************************************************** * mciDriverNotify [MMSYSTEM.711] */ -BOOL16 mciDriverNotify(HWND16 hWndCallBack, UINT16 wDevID, UINT16 wStatus) +BOOL16 WINAPI mciDriverNotify(HWND16 hWndCallBack, UINT16 wDevID, UINT16 wStatus) { dprintf_mmsys(stddeb, "mciDriverNotify(%04X, %u, %04X)\n", hWndCallBack, wDevID, wStatus); if (!IsWindow32(hWndCallBack)) return FALSE; @@ -935,7 +935,8 @@ /************************************************************************** * mciSendCommand [MMSYSTEM.701] */ -DWORD mciSendCommand(UINT16 wDevID, UINT16 wMsg, DWORD dwParam1, DWORD dwParam2) +DWORD WINAPI mciSendCommand(UINT16 wDevID, UINT16 wMsg, DWORD dwParam1, + DWORD dwParam2) { HDRVR16 hDrv = 0; dprintf_mci(stddeb, "mciSendCommand(%04X, %s, %08lX, %08lX)\n", @@ -977,7 +978,7 @@ /************************************************************************** * mciGetDeviceID [MMSYSTEM.703] */ -UINT16 mciGetDeviceID (LPCSTR lpstrName) +UINT16 WINAPI mciGetDeviceID (LPCSTR lpstrName) { UINT16 wDevID; @@ -1007,8 +1008,8 @@ /************************************************************************** * mciSetYieldProc [MMSYSTEM.714] */ -BOOL16 mciSetYieldProc (UINT16 uDeviceID, - YIELDPROC fpYieldProc, DWORD dwYieldData) +BOOL16 WINAPI mciSetYieldProc (UINT16 uDeviceID, + YIELDPROC fpYieldProc, DWORD dwYieldData) { return FALSE; } @@ -1016,7 +1017,7 @@ /************************************************************************** * mciGetDeviceIDFromElementID [MMSYSTEM.715] */ -UINT16 mciGetDeviceIDFromElementID(DWORD dwElementID, LPCSTR lpstrType) +UINT16 WINAPI mciGetDeviceIDFromElementID(DWORD dwElementID, LPCSTR lpstrType) { return 0; } @@ -1024,7 +1025,7 @@ /************************************************************************** * mciGetYieldProc [MMSYSTEM.716] */ -YIELDPROC mciGetYieldProc(UINT16 uDeviceID, DWORD * lpdwYieldData) +YIELDPROC WINAPI mciGetYieldProc(UINT16 uDeviceID, DWORD * lpdwYieldData) { return NULL; } @@ -1032,7 +1033,7 @@ /************************************************************************** * mciGetCreatorTask [MMSYSTEM.717] */ -HTASK16 mciGetCreatorTask(UINT16 uDeviceID) +HTASK16 WINAPI mciGetCreatorTask(UINT16 uDeviceID) { return 0; } @@ -1040,7 +1041,7 @@ /************************************************************************** * midiOutGetNumDevs [MMSYSTEM.201] */ -UINT16 midiOutGetNumDevs(void) +UINT16 WINAPI midiOutGetNumDevs(void) { UINT16 count = 0; dprintf_mmsys(stddeb, "midiOutGetNumDevs\n"); @@ -1052,7 +1053,7 @@ /************************************************************************** * midiOutGetDevCaps [MMSYSTEM.202] */ -UINT16 midiOutGetDevCaps(UINT16 uDeviceID, MIDIOUTCAPS * lpCaps, UINT16 uSize) +UINT16 WINAPI midiOutGetDevCaps(UINT16 uDeviceID, MIDIOUTCAPS * lpCaps, UINT16 uSize) { dprintf_mmsys(stddeb, "midiOutGetDevCaps\n"); return modMessage(uDeviceID,MODM_GETDEVCAPS,0,(DWORD)lpCaps,uSize); @@ -1061,7 +1062,7 @@ /************************************************************************** * midiOutGetErrorText [MMSYSTEM.203] */ -UINT16 midiOutGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize) +UINT16 WINAPI midiOutGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize) { dprintf_mmsys(stddeb, "midiOutGetErrorText\n"); return midiGetErrorText(uError, lpText, uSize); @@ -1071,7 +1072,7 @@ /************************************************************************** * midiGetErrorText [internal] */ -UINT16 midiGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize) +UINT16 WINAPI midiGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize) { LPSTR msgptr; if ((lpText == NULL) || (uSize < 1)) return(FALSE); @@ -1116,8 +1117,8 @@ /************************************************************************** * midiOutOpen [MMSYSTEM.204] */ -UINT16 midiOutOpen(HMIDIOUT16 * lphMidiOut, UINT16 uDeviceID, - DWORD dwCallback, DWORD dwInstance, DWORD dwFlags) +UINT16 WINAPI midiOutOpen(HMIDIOUT16 * lphMidiOut, UINT16 uDeviceID, + DWORD dwCallback, DWORD dwInstance, DWORD dwFlags) { HMIDI16 hMidiOut; LPMIDIOPENDESC lpDesc; @@ -1154,7 +1155,7 @@ /************************************************************************** * midiOutClose [MMSYSTEM.205] */ -UINT16 midiOutClose(HMIDIOUT16 hMidiOut) +UINT16 WINAPI midiOutClose(HMIDIOUT16 hMidiOut) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiOutClose(%04X)\n", hMidiOut); @@ -1166,8 +1167,8 @@ /************************************************************************** * midiOutPrepareHeader [MMSYSTEM.206] */ -UINT16 midiOutPrepareHeader(HMIDIOUT16 hMidiOut, - MIDIHDR * lpMidiOutHdr, UINT16 uSize) +UINT16 WINAPI midiOutPrepareHeader(HMIDIOUT16 hMidiOut, + MIDIHDR * lpMidiOutHdr, UINT16 uSize) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiOutPrepareHeader(%04X, %p, %d)\n", @@ -1181,8 +1182,8 @@ /************************************************************************** * midiOutUnprepareHeader [MMSYSTEM.207] */ -UINT16 midiOutUnprepareHeader(HMIDIOUT16 hMidiOut, - MIDIHDR * lpMidiOutHdr, UINT16 uSize) +UINT16 WINAPI midiOutUnprepareHeader(HMIDIOUT16 hMidiOut, + MIDIHDR * lpMidiOutHdr, UINT16 uSize) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiOutUnprepareHeader(%04X, %p, %d)\n", @@ -1196,7 +1197,7 @@ /************************************************************************** * midiOutShortMsg [MMSYSTEM.208] */ -UINT16 midiOutShortMsg(HMIDIOUT16 hMidiOut, DWORD dwMsg) +UINT16 WINAPI midiOutShortMsg(HMIDIOUT16 hMidiOut, DWORD dwMsg) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiOutShortMsg(%04X, %08lX)\n", hMidiOut, dwMsg); @@ -1208,8 +1209,8 @@ /************************************************************************** * midiOutLongMsg [MMSYSTEM.209] */ -UINT16 midiOutLongMsg(HMIDIOUT16 hMidiOut, - MIDIHDR * lpMidiOutHdr, UINT16 uSize) +UINT16 WINAPI midiOutLongMsg(HMIDIOUT16 hMidiOut, + MIDIHDR * lpMidiOutHdr, UINT16 uSize) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiOutLongMsg(%04X, %p, %d)\n", @@ -1223,7 +1224,7 @@ /************************************************************************** * midiOutReset [MMSYSTEM.210] */ -UINT16 midiOutReset(HMIDIOUT16 hMidiOut) +UINT16 WINAPI midiOutReset(HMIDIOUT16 hMidiOut) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiOutReset(%04X)\n", hMidiOut); @@ -1235,7 +1236,7 @@ /************************************************************************** * midiOutGetVolume [MMSYSTEM.211] */ -UINT16 midiOutGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume) +UINT16 WINAPI midiOutGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume) { dprintf_mmsys(stddeb, "midiOutGetVolume(%04X, %p);\n", uDeviceID, lpdwVolume); return modMessage(uDeviceID, MODM_GETVOLUME, 0L, (DWORD)lpdwVolume, 0L); @@ -1245,7 +1246,7 @@ /************************************************************************** * midiOutSetVolume [MMSYSTEM.212] */ -UINT16 midiOutSetVolume(UINT16 uDeviceID, DWORD dwVolume) +UINT16 WINAPI midiOutSetVolume(UINT16 uDeviceID, DWORD dwVolume) { dprintf_mmsys(stddeb, "midiOutSetVolume(%04X, %08lX);\n", uDeviceID, dwVolume); return modMessage(uDeviceID, MODM_SETVOLUME, 0L, dwVolume, 0L); @@ -1255,8 +1256,8 @@ /************************************************************************** * midiOutCachePatches [MMSYSTEM.213] */ -UINT16 midiOutCachePatches(HMIDIOUT16 hMidiOut, - UINT16 uBank, WORD * lpwPatchArray, UINT16 uFlags) +UINT16 WINAPI midiOutCachePatches(HMIDIOUT16 hMidiOut, UINT16 uBank, + WORD * lpwPatchArray, UINT16 uFlags) { /* not really necessary to support this */ fprintf(stdnimp, "midiOutCachePatches: not supported yet\n"); @@ -1266,8 +1267,8 @@ /************************************************************************** * midiOutCacheDrumPatches [MMSYSTEM.214] */ -UINT16 midiOutCacheDrumPatches(HMIDIOUT16 hMidiOut, - UINT16 uPatch, WORD * lpwKeyArray, UINT16 uFlags) +UINT16 WINAPI midiOutCacheDrumPatches(HMIDIOUT16 hMidiOut, UINT16 uPatch, + WORD * lpwKeyArray, UINT16 uFlags) { fprintf(stdnimp, "midiOutCacheDrumPatchesi: not supported yet\n"); return MMSYSERR_NOTSUPPORTED; @@ -1276,7 +1277,7 @@ /************************************************************************** * midiOutGetID [MMSYSTEM.215] */ -UINT16 midiOutGetID(HMIDIOUT16 hMidiOut, UINT16 * lpuDeviceID) +UINT16 WINAPI midiOutGetID(HMIDIOUT16 hMidiOut, UINT16 * lpuDeviceID) { dprintf_mmsys(stddeb, "midiOutGetID\n"); return 0; @@ -1285,8 +1286,8 @@ /************************************************************************** * midiOutMessage [MMSYSTEM.216] */ -DWORD midiOutMessage(HMIDIOUT16 hMidiOut, UINT16 uMessage, - DWORD dwParam1, DWORD dwParam2) +DWORD WINAPI midiOutMessage(HMIDIOUT16 hMidiOut, UINT16 uMessage, + DWORD dwParam1, DWORD dwParam2) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiOutMessage(%04X, %04X, %08lX, %08lX)\n", @@ -1300,7 +1301,7 @@ /************************************************************************** * midiInGetNumDevs [MMSYSTEM.301] */ -UINT16 midiInGetNumDevs(void) +UINT16 WINAPI midiInGetNumDevs(void) { UINT16 count = 0; dprintf_mmsys(stddeb, "midiInGetNumDevs\n"); @@ -1312,8 +1313,8 @@ /************************************************************************** * midiInGetDevCaps [MMSYSTEM.302] */ -UINT16 midiInGetDevCaps(UINT16 uDeviceID, - LPMIDIINCAPS lpCaps, UINT16 uSize) +UINT16 WINAPI midiInGetDevCaps(UINT16 uDeviceID, + LPMIDIINCAPS lpCaps, UINT16 uSize) { dprintf_mmsys(stddeb, "midiInGetDevCaps\n"); return midMessage(uDeviceID,MIDM_GETDEVCAPS,0,(DWORD)lpCaps,uSize);; @@ -1322,7 +1323,7 @@ /************************************************************************** * midiInGetErrorText [MMSYSTEM.303] */ -UINT16 midiInGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize) +UINT16 WINAPI midiInGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize) { dprintf_mmsys(stddeb, "midiInGetErrorText\n"); return (midiGetErrorText(uError, lpText, uSize)); @@ -1331,8 +1332,8 @@ /************************************************************************** * midiInOpen [MMSYSTEM.304] */ -UINT16 midiInOpen(HMIDIIN16 * lphMidiIn, UINT16 uDeviceID, - DWORD dwCallback, DWORD dwInstance, DWORD dwFlags) +UINT16 WINAPI midiInOpen(HMIDIIN16 * lphMidiIn, UINT16 uDeviceID, + DWORD dwCallback, DWORD dwInstance, DWORD dwFlags) { HMIDI16 hMidiIn; LPMIDIOPENDESC lpDesc; @@ -1369,7 +1370,7 @@ /************************************************************************** * midiInClose [MMSYSTEM.305] */ -UINT16 midiInClose(HMIDIIN16 hMidiIn) +UINT16 WINAPI midiInClose(HMIDIIN16 hMidiIn) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiInClose(%04X)\n", hMidiIn); @@ -1381,8 +1382,8 @@ /************************************************************************** * midiInPrepareHeader [MMSYSTEM.306] */ -UINT16 midiInPrepareHeader(HMIDIIN16 hMidiIn, - MIDIHDR * lpMidiInHdr, UINT16 uSize) +UINT16 WINAPI midiInPrepareHeader(HMIDIIN16 hMidiIn, + MIDIHDR * lpMidiInHdr, UINT16 uSize) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiInPrepareHeader(%04X, %p, %d)\n", @@ -1396,8 +1397,8 @@ /************************************************************************** * midiInUnprepareHeader [MMSYSTEM.307] */ -UINT16 midiInUnprepareHeader(HMIDIIN16 hMidiIn, - MIDIHDR * lpMidiInHdr, UINT16 uSize) +UINT16 WINAPI midiInUnprepareHeader(HMIDIIN16 hMidiIn, + MIDIHDR * lpMidiInHdr, UINT16 uSize) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiInUnprepareHeader(%04X, %p, %d)\n", @@ -1411,8 +1412,8 @@ /************************************************************************** * midiInAddBuffer [MMSYSTEM.308] */ -UINT16 midiInAddBuffer(HMIDIIN16 hMidiIn, - MIDIHDR * lpMidiInHdr, UINT16 uSize) +UINT16 WINAPI midiInAddBuffer(HMIDIIN16 hMidiIn, + MIDIHDR * lpMidiInHdr, UINT16 uSize) { dprintf_mmsys(stddeb, "midiInAddBuffer\n"); return 0; @@ -1421,7 +1422,7 @@ /************************************************************************** * midiInStart [MMSYSTEM.309] */ -UINT16 midiInStart(HMIDIIN16 hMidiIn) +UINT16 WINAPI midiInStart(HMIDIIN16 hMidiIn) { dprintf_mmsys(stddeb, "midiInStart\n"); return 0; @@ -1430,7 +1431,7 @@ /************************************************************************** * midiInStop [MMSYSTEM.310] */ -UINT16 midiInStop(HMIDIIN16 hMidiIn) +UINT16 WINAPI midiInStop(HMIDIIN16 hMidiIn) { dprintf_mmsys(stddeb, "midiInStop\n"); return 0; @@ -1439,7 +1440,7 @@ /************************************************************************** * midiInReset [MMSYSTEM.311] */ -UINT16 midiInReset(HMIDIIN16 hMidiIn) +UINT16 WINAPI midiInReset(HMIDIIN16 hMidiIn) { dprintf_mmsys(stddeb, "midiInReset\n"); return 0; @@ -1448,7 +1449,7 @@ /************************************************************************** * midiInGetID [MMSYSTEM.312] */ -UINT16 midiInGetID(HMIDIIN16 hMidiIn, UINT16 * lpuDeviceID) +UINT16 WINAPI midiInGetID(HMIDIIN16 hMidiIn, UINT16 * lpuDeviceID) { dprintf_mmsys(stddeb, "midiInGetID\n"); return 0; @@ -1457,8 +1458,8 @@ /************************************************************************** * midiInMessage [MMSYSTEM.313] */ -DWORD midiInMessage(HMIDIIN16 hMidiIn, UINT16 uMessage, - DWORD dwParam1, DWORD dwParam2) +DWORD WINAPI midiInMessage(HMIDIIN16 hMidiIn, UINT16 uMessage, + DWORD dwParam1, DWORD dwParam2) { LPMIDIOPENDESC lpDesc; dprintf_mmsys(stddeb, "midiInMessage(%04X, %04X, %08lX, %08lX)\n", @@ -1472,7 +1473,7 @@ /************************************************************************** * waveOutGetNumDevs [MMSYSTEM.401] */ -UINT16 waveOutGetNumDevs() +UINT16 WINAPI waveOutGetNumDevs() { UINT16 count = 0; dprintf_mmsys(stddeb, "waveOutGetNumDevs\n"); @@ -1484,7 +1485,8 @@ /************************************************************************** * waveOutGetDevCaps [MMSYSTEM.402] */ -UINT16 waveOutGetDevCaps(UINT16 uDeviceID, WAVEOUTCAPS * lpCaps, UINT16 uSize) +UINT16 WINAPI waveOutGetDevCaps(UINT16 uDeviceID, WAVEOUTCAPS * lpCaps, + UINT16 uSize) { if (uDeviceID > waveOutGetNumDevs() - 1) return MMSYSERR_BADDEVICEID; if (uDeviceID == (UINT16)WAVE_MAPPER) return MMSYSERR_BADDEVICEID; /* FIXME: do we have a wave mapper ? */ @@ -1495,7 +1497,7 @@ /************************************************************************** * waveOutGetErrorText [MMSYSTEM.403] */ -UINT16 waveOutGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize) +UINT16 WINAPI waveOutGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize) { dprintf_mmsys(stddeb, "waveOutGetErrorText\n"); return(waveGetErrorText(uError, lpText, uSize)); @@ -1571,8 +1573,9 @@ /************************************************************************** * waveOutOpen [MMSYSTEM.404] */ -UINT16 waveOutOpen(HWAVEOUT16 * lphWaveOut, UINT16 uDeviceID, - const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags) +UINT16 WINAPI waveOutOpen(HWAVEOUT16 * lphWaveOut, UINT16 uDeviceID, + const LPWAVEFORMAT lpFormat, DWORD dwCallback, + DWORD dwInstance, DWORD dwFlags) { HWAVEOUT16 hWaveOut; LPWAVEOPENDESC lpDesc; @@ -1621,7 +1624,7 @@ /************************************************************************** * waveOutClose [MMSYSTEM.405] */ -UINT16 waveOutClose(HWAVEOUT16 hWaveOut) +UINT16 WINAPI waveOutClose(HWAVEOUT16 hWaveOut) { LPWAVEOPENDESC lpDesc; @@ -1634,8 +1637,8 @@ /************************************************************************** * waveOutPrepareHeader [MMSYSTEM.406] */ -UINT16 waveOutPrepareHeader(HWAVEOUT16 hWaveOut, - WAVEHDR * lpWaveOutHdr, UINT16 uSize) +UINT16 WINAPI waveOutPrepareHeader(HWAVEOUT16 hWaveOut, + WAVEHDR * lpWaveOutHdr, UINT16 uSize) { LPWAVEOPENDESC lpDesc; @@ -1650,8 +1653,8 @@ /************************************************************************** * waveOutUnprepareHeader [MMSYSTEM.407] */ -UINT16 waveOutUnprepareHeader(HWAVEOUT16 hWaveOut, - WAVEHDR * lpWaveOutHdr, UINT16 uSize) +UINT16 WINAPI waveOutUnprepareHeader(HWAVEOUT16 hWaveOut, + WAVEHDR * lpWaveOutHdr, UINT16 uSize) { LPWAVEOPENDESC lpDesc; @@ -1666,7 +1669,8 @@ /************************************************************************** * waveOutWrite [MMSYSTEM.408] */ -UINT16 waveOutWrite(HWAVEOUT16 hWaveOut, WAVEHDR * lpWaveOutHdr, UINT16 uSize) +UINT16 WINAPI waveOutWrite(HWAVEOUT16 hWaveOut, WAVEHDR * lpWaveOutHdr, + UINT16 uSize) { LPWAVEOPENDESC lpDesc; @@ -1680,7 +1684,7 @@ /************************************************************************** * waveOutPause [MMSYSTEM.409] */ -UINT16 waveOutPause(HWAVEOUT16 hWaveOut) +UINT16 WINAPI waveOutPause(HWAVEOUT16 hWaveOut) { LPWAVEOPENDESC lpDesc; @@ -1693,7 +1697,7 @@ /************************************************************************** * waveOutRestart [MMSYSTEM.410] */ -UINT16 waveOutRestart(HWAVEOUT16 hWaveOut) +UINT16 WINAPI waveOutRestart(HWAVEOUT16 hWaveOut) { LPWAVEOPENDESC lpDesc; @@ -1706,7 +1710,7 @@ /************************************************************************** * waveOutReset [MMSYSTEM.411] */ -UINT16 waveOutReset(HWAVEOUT16 hWaveOut) +UINT16 WINAPI waveOutReset(HWAVEOUT16 hWaveOut) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutReset(%04X)\n", hWaveOut); @@ -1718,7 +1722,8 @@ /************************************************************************** * waveOutGetPosition [MMSYSTEM.412] */ -UINT16 waveOutGetPosition(HWAVEOUT16 hWaveOut, MMTIME * lpTime, UINT16 uSize) +UINT16 WINAPI waveOutGetPosition(HWAVEOUT16 hWaveOut, MMTIME * lpTime, + UINT16 uSize) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutGetPosition(%04X, %p, %u);\n", hWaveOut, lpTime, uSize); @@ -1731,7 +1736,7 @@ /************************************************************************** * waveOutGetPitch [MMSYSTEM.413] */ -UINT16 waveOutGetPitch(HWAVEOUT16 hWaveOut, DWORD * lpdwPitch) +UINT16 WINAPI waveOutGetPitch(HWAVEOUT16 hWaveOut, DWORD * lpdwPitch) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutGetPitch(%04X, %p);\n", hWaveOut, lpdwPitch); @@ -1744,7 +1749,7 @@ /************************************************************************** * waveOutSetPitch [MMSYSTEM.414] */ -UINT16 waveOutSetPitch(HWAVEOUT16 hWaveOut, DWORD dwPitch) +UINT16 WINAPI waveOutSetPitch(HWAVEOUT16 hWaveOut, DWORD dwPitch) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutSetPitch(%04X, %08lX);\n", hWaveOut, dwPitch); @@ -1756,7 +1761,7 @@ /************************************************************************** * waveOutGetVolume [MMSYSTEM.415] */ -UINT16 waveOutGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume) +UINT16 WINAPI waveOutGetVolume(UINT16 uDeviceID, DWORD * lpdwVolume) { dprintf_mmsys(stddeb, "waveOutGetVolume(%04X, %p);\n", uDeviceID, lpdwVolume); return wodMessage(uDeviceID, WODM_GETVOLUME, 0L, (DWORD)lpdwVolume, 0L); @@ -1765,7 +1770,7 @@ /************************************************************************** * waveOutSetVolume [MMSYSTEM.416] */ -UINT16 waveOutSetVolume(UINT16 uDeviceID, DWORD dwVolume) +UINT16 WINAPI waveOutSetVolume(UINT16 uDeviceID, DWORD dwVolume) { dprintf_mmsys(stddeb, "waveOutSetVolume(%04X, %08lX);\n", uDeviceID, dwVolume); return wodMessage(uDeviceID, WODM_SETVOLUME, 0L, dwVolume, 0L); @@ -1774,7 +1779,7 @@ /************************************************************************** * waveOutGetPlaybackRate [MMSYSTEM.417] */ -UINT16 waveOutGetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD * lpdwRate) +UINT16 WINAPI waveOutGetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD * lpdwRate) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutGetPlaybackRate(%04X, %p);\n", hWaveOut, lpdwRate); @@ -1787,7 +1792,7 @@ /************************************************************************** * waveOutSetPlaybackRate [MMSYSTEM.418] */ -UINT16 waveOutSetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD dwRate) +UINT16 WINAPI waveOutSetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD dwRate) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutSetPlaybackRate(%04X, %08lX);\n", hWaveOut, dwRate); @@ -1800,7 +1805,7 @@ /************************************************************************** * waveOutBreakLoop [MMSYSTEM.419] */ -UINT16 waveOutBreakLoop(HWAVEOUT16 hWaveOut) +UINT16 WINAPI waveOutBreakLoop(HWAVEOUT16 hWaveOut) { dprintf_mmsys(stddeb, "waveOutBreakLoop(%04X)\n", hWaveOut); return MMSYSERR_INVALHANDLE; @@ -1809,7 +1814,7 @@ /************************************************************************** * waveOutGetID [MMSYSTEM.420] */ -UINT16 waveOutGetID(HWAVEOUT16 hWaveOut, UINT16 * lpuDeviceID) +UINT16 WINAPI waveOutGetID(HWAVEOUT16 hWaveOut, UINT16 * lpuDeviceID) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutGetID(%04X, %p);\n", hWaveOut, lpuDeviceID); @@ -1823,8 +1828,8 @@ /************************************************************************** * waveOutMessage [MMSYSTEM.421] */ -DWORD waveOutMessage(HWAVEOUT16 hWaveOut, UINT16 uMessage, - DWORD dwParam1, DWORD dwParam2) +DWORD WINAPI waveOutMessage(HWAVEOUT16 hWaveOut, UINT16 uMessage, + DWORD dwParam1, DWORD dwParam2) { LPWAVEOPENDESC lpDesc; dprintf_mmsys(stddeb, "waveOutMessage(%04X, %04X, %08lX, %08lX)\n", @@ -1837,7 +1842,7 @@ /************************************************************************** * waveInGetNumDevs [MMSYSTEM.501] */ -UINT16 waveInGetNumDevs() +UINT16 WINAPI waveInGetNumDevs() { UINT16 count = 0; dprintf_mmsys(stddeb, "waveInGetNumDevs\n"); @@ -1850,7 +1855,7 @@ /************************************************************************** * waveInGetDevCaps [MMSYSTEM.502] */ -UINT16 waveInGetDevCaps(UINT16 uDeviceID, WAVEINCAPS * lpCaps, UINT16 uSize) +UINT16 WINAPI waveInGetDevCaps(UINT16 uDeviceID, WAVEINCAPS * lpCaps, UINT16 uSize) { dprintf_mmsys(stddeb, "waveInGetDevCaps\n"); return widMessage(uDeviceID, WIDM_GETDEVCAPS, 0L, (DWORD)lpCaps, uSize); @@ -1860,7 +1865,7 @@ /************************************************************************** * waveInGetErrorText [MMSYSTEM.503] */ -UINT16 waveInGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize) +UINT16 WINAPI waveInGetErrorText(UINT16 uError, LPSTR lpText, UINT16 uSize) { dprintf_mmsys(stddeb, "waveInGetErrorText\n"); return(waveGetErrorText(uError, lpText, uSize)); @@ -1870,8 +1875,9 @@ /************************************************************************** * waveInOpen [MMSYSTEM.504] */ -UINT16 waveInOpen(HWAVEIN16 * lphWaveIn, UINT16 uDeviceID, - const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags) +UINT16 WINAPI waveInOpen(HWAVEIN16 * lphWaveIn, UINT16 uDeviceID, + const LPWAVEFORMAT lpFormat, DWORD dwCallback, + DWORD dwInstance, DWORD dwFlags) { HWAVEIN16 hWaveIn; LPWAVEOPENDESC lpDesc; @@ -1918,7 +1924,7 @@ /************************************************************************** * waveInClose [MMSYSTEM.505] */ -UINT16 waveInClose(HWAVEIN16 hWaveIn) +UINT16 WINAPI waveInClose(HWAVEIN16 hWaveIn) { LPWAVEOPENDESC lpDesc; @@ -1932,8 +1938,8 @@ /************************************************************************** * waveInPrepareHeader [MMSYSTEM.506] */ -UINT16 waveInPrepareHeader(HWAVEIN16 hWaveIn, - WAVEHDR * lpWaveInHdr, UINT16 uSize) +UINT16 WINAPI waveInPrepareHeader(HWAVEIN16 hWaveIn, + WAVEHDR * lpWaveInHdr, UINT16 uSize) { LPWAVEOPENDESC lpDesc; LPWAVEHDR lp32WaveInHdr; @@ -1956,8 +1962,8 @@ /************************************************************************** * waveInUnprepareHeader [MMSYSTEM.507] */ -UINT16 waveInUnprepareHeader(HWAVEIN16 hWaveIn, - WAVEHDR * lpWaveInHdr, UINT16 uSize) +UINT16 WINAPI waveInUnprepareHeader(HWAVEIN16 hWaveIn, + WAVEHDR * lpWaveInHdr, UINT16 uSize) { LPWAVEOPENDESC lpDesc; LPWAVEHDR lp32WaveInHdr; @@ -1979,8 +1985,8 @@ /************************************************************************** * waveInAddBuffer [MMSYSTEM.508] */ -UINT16 waveInAddBuffer(HWAVEIN16 hWaveIn, - WAVEHDR * lpWaveInHdr, UINT16 uSize) +UINT16 WINAPI waveInAddBuffer(HWAVEIN16 hWaveIn, + WAVEHDR * lpWaveInHdr, UINT16 uSize) { LPWAVEOPENDESC lpDesc; LPWAVEHDR lp32WaveInHdr; @@ -2002,7 +2008,7 @@ /************************************************************************** * waveInStart [MMSYSTEM.509] */ -UINT16 waveInStart(HWAVEIN16 hWaveIn) +UINT16 WINAPI waveInStart(HWAVEIN16 hWaveIn) { LPWAVEOPENDESC lpDesc; @@ -2016,7 +2022,7 @@ /************************************************************************** * waveInStop [MMSYSTEM.510] */ -UINT16 waveInStop(HWAVEIN16 hWaveIn) +UINT16 WINAPI waveInStop(HWAVEIN16 hWaveIn) { LPWAVEOPENDESC lpDesc; @@ -2030,7 +2036,7 @@ /************************************************************************** * waveInReset [MMSYSTEM.511] */ -UINT16 waveInReset(HWAVEIN16 hWaveIn) +UINT16 WINAPI waveInReset(HWAVEIN16 hWaveIn) { LPWAVEOPENDESC lpDesc; @@ -2044,7 +2050,8 @@ /************************************************************************** * waveInGetPosition [MMSYSTEM.512] */ -UINT16 waveInGetPosition(HWAVEIN16 hWaveIn, MMTIME * lpTime, UINT16 uSize) +UINT16 WINAPI waveInGetPosition(HWAVEIN16 hWaveIn, MMTIME * lpTime, + UINT16 uSize) { LPWAVEOPENDESC lpDesc; @@ -2059,7 +2066,7 @@ /************************************************************************** * waveInGetID [MMSYSTEM.513] */ -UINT16 waveInGetID(HWAVEIN16 hWaveIn, UINT16 * lpuDeviceID) +UINT16 WINAPI waveInGetID(HWAVEIN16 hWaveIn, UINT16 * lpuDeviceID) { LPWAVEOPENDESC lpDesc; @@ -2075,8 +2082,8 @@ /************************************************************************** * waveInMessage [MMSYSTEM.514] */ -DWORD waveInMessage(HWAVEIN16 hWaveIn, UINT16 uMessage, - DWORD dwParam1, DWORD dwParam2) +DWORD WINAPI waveInMessage(HWAVEIN16 hWaveIn, UINT16 uMessage, + DWORD dwParam1, DWORD dwParam2) { LPWAVEOPENDESC lpDesc; @@ -2091,7 +2098,8 @@ /************************************************************************** * mmioOpen [MMSYSTEM.1210] */ -HMMIO16 mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo, DWORD dwOpenFlags) +HMMIO16 WINAPI mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo, + DWORD dwOpenFlags) { HFILE32 hFile; HMMIO16 hmmio; @@ -2121,7 +2129,7 @@ /************************************************************************** * mmioClose [MMSYSTEM.1211] */ -UINT16 mmioClose(HMMIO16 hmmio, UINT16 uFlags) +UINT16 WINAPI mmioClose(HMMIO16 hmmio, UINT16 uFlags) { LPMMIOINFO lpmminfo; dprintf_mmio(stddeb, "mmioClose(%04X, %04X);\n", hmmio, uFlags); @@ -2138,7 +2146,7 @@ /************************************************************************** * mmioRead [MMSYSTEM.1212] */ -LONG mmioRead(HMMIO16 hmmio, HPSTR pch, LONG cch) +LONG WINAPI mmioRead(HMMIO16 hmmio, HPSTR pch, LONG cch) { LONG count; LPMMIOINFO lpmminfo; @@ -2156,7 +2164,7 @@ /************************************************************************** * mmioWrite [MMSYSTEM.1213] */ -LONG mmioWrite(HMMIO16 hmmio, HPCSTR pch, LONG cch) +LONG WINAPI mmioWrite(HMMIO16 hmmio, HPCSTR pch, LONG cch) { LONG count; LPMMIOINFO lpmminfo; @@ -2171,7 +2179,7 @@ /************************************************************************** * mmioSeek [MMSYSTEM.1214] */ -LONG mmioSeek(HMMIO16 hmmio, LONG lOffset, int iOrigin) +LONG WINAPI mmioSeek(HMMIO16 hmmio, LONG lOffset, int iOrigin) { int count; LPMMIOINFO lpmminfo; @@ -2189,7 +2197,7 @@ /************************************************************************** * mmioGetInfo [MMSYSTEM.1215] */ -UINT16 mmioGetInfo(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT16 uFlags) +UINT16 WINAPI mmioGetInfo(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT16 uFlags) { LPMMIOINFO lpmminfo; dprintf_mmio(stddeb, "mmioGetInfo\n"); @@ -2203,7 +2211,7 @@ /************************************************************************** * mmioSetInfo [MMSYSTEM.1216] */ -UINT16 mmioSetInfo(HMMIO16 hmmio, const MMIOINFO * lpmmioinfo, UINT16 uFlags) +UINT16 WINAPI mmioSetInfo(HMMIO16 hmmio, const MMIOINFO * lpmmioinfo, UINT16 uFlags) { LPMMIOINFO lpmminfo; dprintf_mmio(stddeb, "mmioSetInfo\n"); @@ -2216,8 +2224,8 @@ /************************************************************************** * mmioSetBuffer [MMSYSTEM.1217] */ -UINT16 mmioSetBuffer(HMMIO16 hmmio, LPSTR pchBuffer, - LONG cchBuffer, UINT16 uFlags) +UINT16 WINAPI mmioSetBuffer(HMMIO16 hmmio, LPSTR pchBuffer, + LONG cchBuffer, UINT16 uFlags) { dprintf_mmio(stddeb, "mmioSetBuffer // empty stub \n"); return 0; @@ -2226,7 +2234,7 @@ /************************************************************************** * mmioFlush [MMSYSTEM.1218] */ -UINT16 mmioFlush(HMMIO16 hmmio, UINT16 uFlags) +UINT16 WINAPI mmioFlush(HMMIO16 hmmio, UINT16 uFlags) { LPMMIOINFO lpmminfo; dprintf_mmio(stddeb, "mmioFlush(%04X, %04X)\n", hmmio, uFlags); @@ -2239,7 +2247,7 @@ /************************************************************************** * mmioAdvance [MMSYSTEM.1219] */ -UINT16 mmioAdvance(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT16 uFlags) +UINT16 WINAPI mmioAdvance(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT16 uFlags) { int count = 0; LPMMIOINFO lpmminfo; @@ -2263,7 +2271,7 @@ /************************************************************************** * mmioStringToFOURCC [MMSYSTEM.1220] */ -FOURCC mmioStringToFOURCC(LPCSTR sz, UINT16 uFlags) +FOURCC WINAPI mmioStringToFOURCC(LPCSTR sz, UINT16 uFlags) { dprintf_mmio(stddeb, "mmioStringToFOURCC // empty stub \n"); return 0; @@ -2272,8 +2280,8 @@ /************************************************************************** * mmioInstallIOProc [MMSYSTEM.1221] */ -LPMMIOPROC mmioInstallIOProc(FOURCC fccIOProc, - LPMMIOPROC pIOProc, DWORD dwFlags) +LPMMIOPROC WINAPI mmioInstallIOProc(FOURCC fccIOProc, + LPMMIOPROC pIOProc, DWORD dwFlags) { dprintf_mmio(stddeb, "mmioInstallIOProc // empty stub \n"); return 0; @@ -2282,8 +2290,8 @@ /************************************************************************** * mmioSendMessage [MMSYSTEM.1222] */ -LRESULT mmioSendMessage(HMMIO16 hmmio, UINT16 uMessage, - LPARAM lParam1, LPARAM lParam2) +LRESULT WINAPI mmioSendMessage(HMMIO16 hmmio, UINT16 uMessage, + LPARAM lParam1, LPARAM lParam2) { dprintf_mmio(stddeb, "mmioSendMessage // empty stub \n"); return 0; @@ -2292,8 +2300,8 @@ /************************************************************************** * mmioDescend [MMSYSTEM.1223] */ -UINT16 mmioDescend(HMMIO16 hmmio, MMCKINFO * lpck, - const MMCKINFO * lpckParent, UINT16 uFlags) +UINT16 WINAPI mmioDescend(HMMIO16 hmmio, MMCKINFO * lpck, + const MMCKINFO * lpckParent, UINT16 uFlags) { DWORD dwfcc, dwOldPos; LPMMIOINFO lpmminfo; @@ -2367,7 +2375,7 @@ /************************************************************************** * mmioAscend [MMSYSTEM.1224] */ -UINT16 mmioAscend(HMMIO16 hmmio, MMCKINFO * lpck, UINT16 uFlags) +UINT16 WINAPI mmioAscend(HMMIO16 hmmio, MMCKINFO * lpck, UINT16 uFlags) { dprintf_mmio(stddeb, "mmioAscend // empty stub !\n"); return 0; @@ -2376,7 +2384,7 @@ /************************************************************************** * mmioCreateChunk [MMSYSTEM.1225] */ -UINT16 mmioCreateChunk(HMMIO16 hmmio, MMCKINFO * lpck, UINT16 uFlags) +UINT16 WINAPI mmioCreateChunk(HMMIO16 hmmio, MMCKINFO * lpck, UINT16 uFlags) { dprintf_mmio(stddeb, "mmioCreateChunk // empty stub \n"); return 0; @@ -2386,8 +2394,8 @@ /************************************************************************** * mmioRename [MMSYSTEM.1226] */ -UINT16 mmioRename(LPCSTR szFileName, LPCSTR szNewFileName, - MMIOINFO * lpmmioinfo, DWORD dwRenameFlags) +UINT16 WINAPI mmioRename(LPCSTR szFileName, LPCSTR szNewFileName, + MMIOINFO * lpmmioinfo, DWORD dwRenameFlags) { dprintf_mmio(stddeb, "mmioRename('%s', '%s', %p, %08lX); // empty stub \n", szFileName, szNewFileName, lpmmioinfo, dwRenameFlags); @@ -2397,7 +2405,7 @@ /************************************************************************** * DrvOpen [MMSYSTEM.1100] */ -HDRVR16 DrvOpen(LPSTR lpDriverName, LPSTR lpSectionName, LPARAM lParam) +HDRVR16 WINAPI DrvOpen(LPSTR lpDriverName, LPSTR lpSectionName, LPARAM lParam) { dprintf_mmsys(stddeb, "DrvOpen('%s', '%s', %08lX);\n", lpDriverName, lpSectionName, lParam); @@ -2408,7 +2416,7 @@ /************************************************************************** * DrvClose [MMSYSTEM.1101] */ -LRESULT DrvClose(HDRVR16 hDrvr, LPARAM lParam1, LPARAM lParam2) +LRESULT WINAPI DrvClose(HDRVR16 hDrvr, LPARAM lParam1, LPARAM lParam2) { dprintf_mmsys(stddeb, "DrvClose(%04X, %08lX, %08lX);\n", hDrvr, lParam1, lParam2); return CloseDriver(hDrvr, lParam1, lParam2); @@ -2418,7 +2426,8 @@ /************************************************************************** * DrvSendMessage [MMSYSTEM.1102] */ -LRESULT DrvSendMessage(HDRVR16 hDriver, WORD msg, LPARAM lParam1, LPARAM lParam2) +LRESULT WINAPI DrvSendMessage(HDRVR16 hDriver, WORD msg, LPARAM lParam1, + LPARAM lParam2) { DWORD dwDriverID = 0; dprintf_mmsys(stddeb, "DrvSendMessage(%04X, %04X, %08lX, %08lX);\n", @@ -2429,7 +2438,7 @@ /************************************************************************** * DrvGetModuleHandle [MMSYSTEM.1103] */ -HANDLE16 DrvGetModuleHandle(HDRVR16 hDrvr) +HANDLE16 WINAPI DrvGetModuleHandle(HDRVR16 hDrvr) { dprintf_mmsys(stddeb, "DrvGetModuleHandle(%04X);\n", hDrvr); return 0; @@ -2439,8 +2448,8 @@ /************************************************************************** * DrvDefDriverProc [MMSYSTEM.1104] */ -LRESULT DrvDefDriverProc(DWORD dwDriverID, HDRVR16 hDriv, WORD wMsg, - DWORD dwParam1, DWORD dwParam2) +LRESULT WINAPI DrvDefDriverProc(DWORD dwDriverID, HDRVR16 hDriv, WORD wMsg, + DWORD dwParam1, DWORD dwParam2) { return DefDriverProc(dwDriverID, hDriv, wMsg, dwParam1, dwParam2); }
diff --git a/multimedia/time.c b/multimedia/time.c index d8c5917..6242f85 100644 --- a/multimedia/time.c +++ b/multimedia/time.c
@@ -114,7 +114,7 @@ /************************************************************************** * timeGetSystemTime [MMSYSTEM.601] */ -WORD timeGetSystemTime(LPMMTIME lpTime, WORD wSize) +WORD WINAPI timeGetSystemTime(LPMMTIME lpTime, WORD wSize) { dprintf_mmsys(stddeb, "timeGetSystemTime(%p, %u);\n", lpTime, wSize); if (!mmTimeStarted) @@ -127,8 +127,8 @@ /************************************************************************** * timeSetEvent [MMSYSTEM.602] */ -WORD timeSetEvent(WORD wDelay, WORD wResol, LPTIMECALLBACK lpFunc, - DWORD dwUser, WORD wFlags) +WORD WINAPI timeSetEvent(WORD wDelay, WORD wResol, LPTIMECALLBACK lpFunc, + DWORD dwUser, WORD wFlags) { WORD wNewID = 0; LPTIMERENTRY lpNewTimer; @@ -171,7 +171,7 @@ /************************************************************************** * timeKillEvent [MMSYSTEM.603] */ -WORD timeKillEvent(WORD wID) +WORD WINAPI timeKillEvent(WORD wID) { LPTIMERENTRY lpTimer = lpTimerList; while (lpTimer != NULL) { @@ -193,7 +193,7 @@ /************************************************************************** * timeGetDevCaps [MMSYSTEM.604] */ -WORD timeGetDevCaps(LPTIMECAPS lpCaps, WORD wSize) +WORD WINAPI timeGetDevCaps(LPTIMECAPS lpCaps, WORD wSize) { dprintf_mmtime(stddeb, "timeGetDevCaps(%p, %u) !\n", lpCaps, wSize); if (!mmTimeStarted) @@ -206,7 +206,7 @@ /************************************************************************** * timeBeginPeriod [MMSYSTEM.605] */ -WORD timeBeginPeriod(WORD wPeriod) +WORD WINAPI timeBeginPeriod(WORD wPeriod) { dprintf_mmtime(stddeb, "timeBeginPeriod(%u) !\n", wPeriod); if (!mmTimeStarted) @@ -219,7 +219,7 @@ /************************************************************************** * timeEndPeriod [MMSYSTEM.606] */ -WORD timeEndPeriod(WORD wPeriod) +WORD WINAPI timeEndPeriod(WORD wPeriod) { dprintf_mmtime(stddeb, "timeEndPeriod(%u) !\n", wPeriod); if (wPeriod < MMSYSTIME_MININTERVAL || wPeriod > MMSYSTIME_MAXINTERVAL) @@ -230,7 +230,7 @@ /************************************************************************** * timeGetTime [MMSYSTEM.607] */ -DWORD timeGetTime() +DWORD WINAPI timeGetTime() { dprintf_mmtime(stddeb, "timeGetTime(); !\n"); if (!mmTimeStarted)
diff --git a/objects/bitmap.c b/objects/bitmap.c index fdb59d2..6fe7a98 100644 --- a/objects/bitmap.c +++ b/objects/bitmap.c
@@ -30,10 +30,31 @@ /*********************************************************************** + * XPutImage_wrapper + * + * Wrapper to call XPutImage with CALL_LARGE_STACK. + */ + +struct XPutImage_descr +{ + BITMAPOBJ *bmp; + XImage *image; + INT32 width; + INT32 height; +}; + +static int XPutImage_wrapper( const struct XPutImage_descr *descr ) +{ + return XPutImage( display, descr->bmp->pixmap, BITMAP_GC(descr->bmp), + descr->image, 0, 0, 0, 0, descr->width, descr->height ); +} + + +/*********************************************************************** * CreateBitmap16 (GDI.48) */ -HBITMAP16 CreateBitmap16( INT16 width, INT16 height, UINT16 planes, - UINT16 bpp, LPCVOID bits ) +HBITMAP16 WINAPI CreateBitmap16( INT16 width, INT16 height, UINT16 planes, + UINT16 bpp, LPCVOID bits ) { return CreateBitmap32( width, height, planes, bpp, bits ); } @@ -42,8 +63,8 @@ /*********************************************************************** * CreateBitmap32 (GDI32.25) */ -HBITMAP32 CreateBitmap32( INT32 width, INT32 height, UINT32 planes, - UINT32 bpp, LPCVOID bits ) +HBITMAP32 WINAPI CreateBitmap32( INT32 width, INT32 height, UINT32 planes, + UINT32 bpp, LPCVOID bits ) { BITMAPOBJ * bmpObjPtr; HBITMAP32 hbitmap; @@ -63,7 +84,7 @@ /* Create the BITMAPOBJ */ hbitmap = GDI_AllocObject( sizeof(BITMAPOBJ), BITMAP_MAGIC ); if (!hbitmap) return 0; - bmpObjPtr = (BITMAPOBJ *) GDI_HEAP_LIN_ADDR( hbitmap ); + bmpObjPtr = (BITMAPOBJ *) GDI_HEAP_LOCK( hbitmap ); bmpObjPtr->size.cx = 0; bmpObjPtr->size.cy = 0; @@ -85,6 +106,7 @@ else if (bits) /* Set bitmap bits */ SetBitmapBits32( hbitmap, height * bmpObjPtr->bitmap.bmWidthBytes, bits ); + GDI_HEAP_UNLOCK( hbitmap ); return hbitmap; } @@ -92,7 +114,7 @@ /*********************************************************************** * CreateCompatibleBitmap16 (GDI.51) */ -HBITMAP16 CreateCompatibleBitmap16( HDC16 hdc, INT16 width, INT16 height ) +HBITMAP16 WINAPI CreateCompatibleBitmap16(HDC16 hdc, INT16 width, INT16 height) { return CreateCompatibleBitmap32( hdc, width, height ); } @@ -101,7 +123,7 @@ /*********************************************************************** * CreateCompatibleBitmap32 (GDI32.30) */ -HBITMAP32 CreateCompatibleBitmap32( HDC32 hdc, INT32 width, INT32 height ) +HBITMAP32 WINAPI CreateCompatibleBitmap32(HDC32 hdc, INT32 width, INT32 height) { HBITMAP32 hbmpRet = 0; DC *dc; @@ -118,7 +140,7 @@ /*********************************************************************** * CreateBitmapIndirect16 (GDI.49) */ -HBITMAP16 CreateBitmapIndirect16( const BITMAP16 * bmp ) +HBITMAP16 WINAPI CreateBitmapIndirect16( const BITMAP16 * bmp ) { return CreateBitmap16( bmp->bmWidth, bmp->bmHeight, bmp->bmPlanes, bmp->bmBitsPixel, PTR_SEG_TO_LIN( bmp->bmBits ) ); @@ -128,7 +150,7 @@ /*********************************************************************** * CreateBitmapIndirect32 (GDI32.26) */ -HBITMAP32 CreateBitmapIndirect32( const BITMAP32 * bmp ) +HBITMAP32 WINAPI CreateBitmapIndirect32( const BITMAP32 * bmp ) { return CreateBitmap32( bmp->bmWidth, bmp->bmHeight, bmp->bmPlanes, bmp->bmBitsPixel, bmp->bmBits ); @@ -136,9 +158,21 @@ /*********************************************************************** + * BITMAP_GetXImage + * + * Get an X image for a bitmap. For use with CALL_LARGE_STACK. + */ +XImage *BITMAP_GetXImage( const BITMAPOBJ *bmp ) +{ + return XGetImage( display, bmp->pixmap, 0, 0, bmp->bitmap.bmWidth, + bmp->bitmap.bmHeight, AllPlanes, ZPixmap ); +} + + +/*********************************************************************** * GetBitmapBits16 (GDI.74) */ -LONG GetBitmapBits16( HBITMAP16 hbitmap, LONG count, LPVOID buffer ) +LONG WINAPI GetBitmapBits16( HBITMAP16 hbitmap, LONG count, LPVOID buffer ) { return GetBitmapBits32( hbitmap, count, buffer ); } @@ -147,12 +181,12 @@ /*********************************************************************** * GetBitmapBits32 (GDI32.143) */ -LONG GetBitmapBits32( HBITMAP32 hbitmap, LONG count, LPVOID buffer ) +LONG WINAPI GetBitmapBits32( HBITMAP32 hbitmap, LONG count, LPVOID buffer ) { BITMAPOBJ * bmp; - LONG height,widthbytes; + LONG height, old_height; XImage * image; - LPBYTE tmpbuffer,tbuf; + LPBYTE tbuf; int h,w,pad; /* KLUDGE! */ @@ -169,7 +203,11 @@ dprintf_bitmap(stddeb, "GetBitmapBits: %dx%d %d colors %p fetched height: %ld\n", bmp->bitmap.bmWidth, bmp->bitmap.bmHeight, 1 << bmp->bitmap.bmBitsPixel, buffer, height ); - if (!height) return 0; + if (!height) + { + GDI_HEAP_UNLOCK( hbitmap ); + return 0; + } switch (bmp->bitmap.bmBitsPixel) { case 1: @@ -198,19 +236,16 @@ fprintf(stderr,"GetBitMapBits32: unknown depth %d, please report.\n", bmp->bitmap.bmBitsPixel ); + GDI_HEAP_UNLOCK( hbitmap ); return 0; } - widthbytes = DIB_GetXImageWidthBytes(bmp->bitmap.bmWidth,bmp->bitmap.bmBitsPixel); - tmpbuffer = (LPBYTE)xmalloc(widthbytes*height); - image = XCreateImage( display, DefaultVisualOfScreen(screen), - bmp->bitmap.bmBitsPixel, ZPixmap, 0, tmpbuffer, - bmp->bitmap.bmWidth,height,32,widthbytes - ); - - CallTo32_LargeStack( (int(*)())XGetSubImage, 11, - display, bmp->pixmap, 0, 0, bmp->bitmap.bmWidth, - height, AllPlanes, ZPixmap, image, 0, 0 ); + /* Hack: change the bitmap height temporarily to avoid */ + /* getting unnecessary bitmap rows. */ + old_height = bmp->bitmap.bmHeight; + bmp->bitmap.bmHeight = height; + image = (XImage *)CALL_LARGE_STACK( BITMAP_GetXImage, bmp ); + bmp->bitmap.bmHeight = old_height; /* copy XImage to 16 bit padded image buffer with real bitsperpixel */ @@ -277,7 +312,8 @@ tbuf += pad; } } - XDestroyImage( image ); /* frees tbuffer too */ + XDestroyImage( image ); + GDI_HEAP_UNLOCK( hbitmap ); return height * bmp->bitmap.bmWidthBytes; } @@ -285,7 +321,7 @@ /*********************************************************************** * SetBitmapBits16 (GDI.106) */ -LONG SetBitmapBits16( HBITMAP16 hbitmap, LONG count, LPCVOID buffer ) +LONG WINAPI SetBitmapBits16( HBITMAP16 hbitmap, LONG count, LPCVOID buffer ) { return SetBitmapBits32( hbitmap, count, buffer ); } @@ -294,8 +330,9 @@ /*********************************************************************** * SetBitmapBits32 (GDI32.303) */ -LONG SetBitmapBits32( HBITMAP32 hbitmap, LONG count, LPCVOID buffer ) +LONG WINAPI SetBitmapBits32( HBITMAP32 hbitmap, LONG count, LPCVOID buffer ) { + struct XPutImage_descr descr; BITMAPOBJ * bmp; LONG height; XImage * image; @@ -317,8 +354,12 @@ /* Only set entire lines */ height = count / bmp->bitmap.bmWidthBytes; if (height > bmp->bitmap.bmHeight) height = bmp->bitmap.bmHeight; - if (!height) return 0; - + if (!height) + { + GDI_HEAP_UNLOCK( hbitmap ); + return 0; + } + switch (bmp->bitmap.bmBitsPixel) { case 1: if (!(bmp->bitmap.bmWidth & 15)) @@ -416,10 +457,14 @@ break; } - CallTo32_LargeStack( XPutImage, 10, - display, bmp->pixmap, BITMAP_GC(bmp), image, 0, 0, - 0, 0, bmp->bitmap.bmWidth, height ); + descr.bmp = bmp; + descr.image = image; + descr.width = bmp->bitmap.bmWidth; + descr.height = height; + CALL_LARGE_STACK( XPutImage_wrapper, &descr ); + XDestroyImage( image ); /* frees tmpbuffer too */ + GDI_HEAP_UNLOCK( hbitmap ); return height * bmp->bitmap.bmWidthBytes; } @@ -429,10 +474,9 @@ * defines in windows.h */ -HANDLE32 LoadImage32A( - HINSTANCE32 hinst,LPCSTR name,UINT32 type,INT32 desiredx, - INT32 desiredy,UINT32 loadflags -) { +HANDLE32 WINAPI LoadImage32A( HINSTANCE32 hinst, LPCSTR name, UINT32 type, + INT32 desiredx, INT32 desiredy, UINT32 loadflags) +{ if (HIWORD(name)) { dprintf_resource(stddeb,"LoadImage32A(0x%04x,%s,%d,%d,%d,0x%08x)\n", hinst,name,type,desiredx,desiredy,loadflags @@ -459,8 +503,8 @@ * FIXME: implementation still lacks nearly all features, see LR_* * defines in windows.h */ -HANDLE32 CopyImage32( HANDLE32 hnd, UINT32 type, INT32 desiredx, - INT32 desiredy, UINT32 flags ) +HANDLE32 WINAPI CopyImage32( HANDLE32 hnd, UINT32 type, INT32 desiredx, + INT32 desiredy, UINT32 flags ) { switch (type) { @@ -478,7 +522,7 @@ /********************************************************************** * LoadBitmap16 (USER.175) */ -HBITMAP16 LoadBitmap16( HINSTANCE16 instance, SEGPTR name ) +HBITMAP16 WINAPI LoadBitmap16( HINSTANCE16 instance, SEGPTR name ) { HBITMAP32 hbitmap = 0; HDC32 hdc; @@ -520,7 +564,7 @@ /********************************************************************** * LoadBitmap32W (USER32.357) */ -HBITMAP32 LoadBitmap32W( HINSTANCE32 instance, LPCWSTR name ) +HBITMAP32 WINAPI LoadBitmap32W( HINSTANCE32 instance, LPCWSTR name ) { HBITMAP32 hbitmap = 0; HDC32 hdc; @@ -553,7 +597,7 @@ /********************************************************************** * LoadBitmap32A (USER32.356) */ -HBITMAP32 LoadBitmap32A( HINSTANCE32 instance, LPCSTR name ) +HBITMAP32 WINAPI LoadBitmap32A( HINSTANCE32 instance, LPCSTR name ) { HBITMAP32 res; if (!HIWORD(name)) res = LoadBitmap32W( instance, (LPWSTR)name ); @@ -629,7 +673,8 @@ /*********************************************************************** * CreateDiscardableBitmap16 (GDI.156) */ -HBITMAP16 CreateDiscardableBitmap16( HDC16 hdc, INT16 width, INT16 height ) +HBITMAP16 WINAPI CreateDiscardableBitmap16( HDC16 hdc, INT16 width, + INT16 height ) { return CreateCompatibleBitmap16( hdc, width, height ); } @@ -638,7 +683,8 @@ /*********************************************************************** * CreateDiscardableBitmap32 (GDI32.38) */ -HBITMAP32 CreateDiscardableBitmap32( HDC32 hdc, INT32 width, INT32 height ) +HBITMAP32 WINAPI CreateDiscardableBitmap32( HDC32 hdc, INT32 width, + INT32 height ) { return CreateCompatibleBitmap32( hdc, width, height ); } @@ -647,11 +693,12 @@ /*********************************************************************** * GetBitmapDimensionEx16 (GDI.468) */ -BOOL16 GetBitmapDimensionEx16( HBITMAP16 hbitmap, LPSIZE16 size ) +BOOL16 WINAPI GetBitmapDimensionEx16( HBITMAP16 hbitmap, LPSIZE16 size ) { BITMAPOBJ * bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC ); if (!bmp) return FALSE; *size = bmp->size; + GDI_HEAP_UNLOCK( hbitmap ); return TRUE; } @@ -659,12 +706,13 @@ /*********************************************************************** * GetBitmapDimensionEx32 (GDI32.144) */ -BOOL32 GetBitmapDimensionEx32( HBITMAP32 hbitmap, LPSIZE32 size ) +BOOL32 WINAPI GetBitmapDimensionEx32( HBITMAP32 hbitmap, LPSIZE32 size ) { BITMAPOBJ * bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC ); if (!bmp) return FALSE; size->cx = (INT32)bmp->size.cx; size->cy = (INT32)bmp->size.cy; + GDI_HEAP_UNLOCK( hbitmap ); return TRUE; } @@ -672,7 +720,7 @@ /*********************************************************************** * GetBitmapDimension (GDI.162) */ -DWORD GetBitmapDimension( HBITMAP16 hbitmap ) +DWORD WINAPI GetBitmapDimension( HBITMAP16 hbitmap ) { SIZE16 size; if (!GetBitmapDimensionEx16( hbitmap, &size )) return 0; @@ -683,14 +731,15 @@ /*********************************************************************** * SetBitmapDimensionEx16 (GDI.478) */ -BOOL16 SetBitmapDimensionEx16( HBITMAP16 hbitmap, INT16 x, INT16 y, - LPSIZE16 prevSize ) +BOOL16 WINAPI SetBitmapDimensionEx16( HBITMAP16 hbitmap, INT16 x, INT16 y, + LPSIZE16 prevSize ) { BITMAPOBJ * bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC ); if (!bmp) return FALSE; if (prevSize) *prevSize = bmp->size; bmp->size.cx = x; bmp->size.cy = y; + GDI_HEAP_UNLOCK( hbitmap ); return TRUE; } @@ -698,14 +747,15 @@ /*********************************************************************** * SetBitmapDimensionEx32 (GDI32.304) */ -BOOL32 SetBitmapDimensionEx32( HBITMAP32 hbitmap, INT32 x, INT32 y, - LPSIZE32 prevSize ) +BOOL32 WINAPI SetBitmapDimensionEx32( HBITMAP32 hbitmap, INT32 x, INT32 y, + LPSIZE32 prevSize ) { BITMAPOBJ * bmp = (BITMAPOBJ *) GDI_GetObjPtr( hbitmap, BITMAP_MAGIC ); if (!bmp) return FALSE; if (prevSize) CONV_SIZE16TO32( &bmp->size, prevSize ); bmp->size.cx = (INT16)x; bmp->size.cy = (INT16)y; + GDI_HEAP_UNLOCK( hbitmap ); return TRUE; } @@ -713,9 +763,10 @@ /*********************************************************************** * SetBitmapDimension (GDI.163) */ -DWORD SetBitmapDimension( HBITMAP16 hbitmap, INT16 x, INT16 y ) +DWORD WINAPI SetBitmapDimension( HBITMAP16 hbitmap, INT16 x, INT16 y ) { SIZE16 size; if (!SetBitmapDimensionEx16( hbitmap, x, y, &size )) return 0; return MAKELONG( size.cx, size.cy ); } +
diff --git a/objects/brush.c b/objects/brush.c index 4a06005..5f216f2 100644 --- a/objects/brush.c +++ b/objects/brush.c
@@ -16,15 +16,16 @@ /*********************************************************************** * CreateBrushIndirect16 (GDI.50) */ -HBRUSH16 CreateBrushIndirect16( const LOGBRUSH16 * brush ) +HBRUSH16 WINAPI CreateBrushIndirect16( const LOGBRUSH16 * brush ) { BRUSHOBJ * brushPtr; HBRUSH16 hbrush = GDI_AllocObject( sizeof(BRUSHOBJ), BRUSH_MAGIC ); if (!hbrush) return 0; - brushPtr = (BRUSHOBJ *) GDI_HEAP_LIN_ADDR( hbrush ); + brushPtr = (BRUSHOBJ *) GDI_HEAP_LOCK( hbrush ); brushPtr->logbrush.lbStyle = brush->lbStyle; brushPtr->logbrush.lbColor = brush->lbColor; brushPtr->logbrush.lbHatch = brush->lbHatch; + GDI_HEAP_UNLOCK( hbrush ); return hbrush; } @@ -32,15 +33,16 @@ /*********************************************************************** * CreateBrushIndirect32 (GDI32.27) */ -HBRUSH32 CreateBrushIndirect32( const LOGBRUSH32 * brush ) +HBRUSH32 WINAPI CreateBrushIndirect32( const LOGBRUSH32 * brush ) { BRUSHOBJ * brushPtr; HBRUSH32 hbrush = GDI_AllocObject( sizeof(BRUSHOBJ), BRUSH_MAGIC ); if (!hbrush) return 0; - brushPtr = (BRUSHOBJ *) GDI_HEAP_LIN_ADDR( hbrush ); + brushPtr = (BRUSHOBJ *) GDI_HEAP_LOCK( hbrush ); brushPtr->logbrush.lbStyle = brush->lbStyle; brushPtr->logbrush.lbColor = brush->lbColor; brushPtr->logbrush.lbHatch = brush->lbHatch; + GDI_HEAP_UNLOCK( hbrush ); return hbrush; } @@ -48,7 +50,7 @@ /*********************************************************************** * CreateHatchBrush16 (GDI.58) */ -HBRUSH16 CreateHatchBrush16( INT16 style, COLORREF color ) +HBRUSH16 WINAPI CreateHatchBrush16( INT16 style, COLORREF color ) { LOGBRUSH32 logbrush = { BS_HATCHED, color, style }; dprintf_gdi(stddeb, "CreateHatchBrush16: %d %06lx\n", style, color ); @@ -60,7 +62,7 @@ /*********************************************************************** * CreateHatchBrush32 (GDI32.48) */ -HBRUSH32 CreateHatchBrush32( INT32 style, COLORREF color ) +HBRUSH32 WINAPI CreateHatchBrush32( INT32 style, COLORREF color ) { LOGBRUSH32 logbrush = { BS_HATCHED, color, style }; dprintf_gdi(stddeb, "CreateHatchBrush32: %d %06lx\n", style, color ); @@ -72,7 +74,7 @@ /*********************************************************************** * CreatePatternBrush16 (GDI.60) */ -HBRUSH16 CreatePatternBrush16( HBITMAP16 hbitmap ) +HBRUSH16 WINAPI CreatePatternBrush16( HBITMAP16 hbitmap ) { return (HBRUSH16)CreatePatternBrush32( hbitmap ); } @@ -81,7 +83,7 @@ /*********************************************************************** * CreatePatternBrush32 (GDI32.54) */ -HBRUSH32 CreatePatternBrush32( HBITMAP32 hbitmap ) +HBRUSH32 WINAPI CreatePatternBrush32( HBITMAP32 hbitmap ) { LOGBRUSH32 logbrush = { BS_PATTERN, 0, 0 }; BITMAPOBJ *bmp, *newbmp; @@ -95,9 +97,15 @@ logbrush.lbHatch = (INT32)CreateBitmapIndirect16( &bmp->bitmap ); newbmp = (BITMAPOBJ *) GDI_GetObjPtr( (HGDIOBJ32)logbrush.lbHatch, BITMAP_MAGIC ); - if (!newbmp) return 0; + if (!newbmp) + { + GDI_HEAP_UNLOCK( hbitmap ); + return 0; + } XCopyArea( display, bmp->pixmap, newbmp->pixmap, BITMAP_GC(bmp), 0, 0, bmp->bitmap.bmWidth, bmp->bitmap.bmHeight, 0, 0 ); + GDI_HEAP_UNLOCK( hbitmap ); + GDI_HEAP_UNLOCK( logbrush.lbHatch ); return CreateBrushIndirect32( &logbrush ); } @@ -105,7 +113,7 @@ /*********************************************************************** * CreateDIBPatternBrush16 (GDI.445) */ -HBRUSH16 CreateDIBPatternBrush16( HGLOBAL16 hbitmap, UINT16 coloruse ) +HBRUSH16 WINAPI CreateDIBPatternBrush16( HGLOBAL16 hbitmap, UINT16 coloruse ) { LOGBRUSH32 logbrush = { BS_DIBPATTERN, coloruse, 0 }; BITMAPINFO *info, *newInfo; @@ -140,7 +148,7 @@ /*********************************************************************** * CreateDIBPatternBrush32 (GDI32.34) */ -HBRUSH32 CreateDIBPatternBrush32( HGLOBAL32 hbitmap, UINT32 coloruse ) +HBRUSH32 WINAPI CreateDIBPatternBrush32( HGLOBAL32 hbitmap, UINT32 coloruse ) { LOGBRUSH32 logbrush = { BS_DIBPATTERN, coloruse, 0 }; BITMAPINFO *info, *newInfo; @@ -175,7 +183,7 @@ /*********************************************************************** * CreateSolidBrush (GDI.66) */ -HBRUSH16 CreateSolidBrush16( COLORREF color ) +HBRUSH16 WINAPI CreateSolidBrush16( COLORREF color ) { LOGBRUSH32 logbrush = { BS_SOLID, color, 0 }; dprintf_gdi(stddeb, "CreateSolidBrush16: %06lx\n", color ); @@ -186,7 +194,7 @@ /*********************************************************************** * CreateSolidBrush32 (GDI32.64) */ -HBRUSH32 CreateSolidBrush32( COLORREF color ) +HBRUSH32 WINAPI CreateSolidBrush32( COLORREF color ) { LOGBRUSH32 logbrush = { BS_SOLID, color, 0 }; dprintf_gdi(stddeb, "CreateSolidBrush32: %06lx\n", color ); @@ -197,7 +205,7 @@ /*********************************************************************** * SetBrushOrg (GDI.148) */ -DWORD SetBrushOrg( HDC16 hdc, INT16 x, INT16 y ) +DWORD WINAPI SetBrushOrg( HDC16 hdc, INT16 x, INT16 y ) { DWORD retval; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -212,7 +220,7 @@ /*********************************************************************** * SetBrushOrgEx (GDI32.308) */ -BOOL32 SetBrushOrgEx( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 oldorg ) +BOOL32 WINAPI SetBrushOrgEx( HDC32 hdc, INT32 x, INT32 y, LPPOINT32 oldorg ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -231,7 +239,7 @@ /*********************************************************************** * GetSysColorBrush16 (USER.281) */ -HBRUSH16 GetSysColorBrush16( INT16 index ) +HBRUSH16 WINAPI GetSysColorBrush16( INT16 index ) { fprintf( stderr, "Unimplemented stub: GetSysColorBrush16(%d)\n", index ); return GetStockObject32(LTGRAY_BRUSH); @@ -241,7 +249,7 @@ /*********************************************************************** * GetSysColorBrush32 (USER32.289) */ -HBRUSH32 GetSysColorBrush32( INT32 index) +HBRUSH32 WINAPI GetSysColorBrush32( INT32 index) { fprintf( stderr, "Unimplemented stub: GetSysColorBrush32(%d)\n", index ); return GetStockObject32(LTGRAY_BRUSH);
diff --git a/objects/clipping.c b/objects/clipping.c index e801cb0..d417c71 100644 --- a/objects/clipping.c +++ b/objects/clipping.c
@@ -51,7 +51,7 @@ /*********************************************************************** * SelectClipRgn16 (GDI.44) */ -INT16 SelectClipRgn16( HDC16 hdc, HRGN16 hrgn ) +INT16 WINAPI SelectClipRgn16( HDC16 hdc, HRGN16 hrgn ) { return (INT16)SelectClipRgn32( hdc, hrgn ); } @@ -60,7 +60,7 @@ /*********************************************************************** * SelectClipRgn32 (GDI32.297) */ -INT32 SelectClipRgn32( HDC32 hdc, HRGN32 hrgn ) +INT32 WINAPI SelectClipRgn32( HDC32 hdc, HRGN32 hrgn ) { INT32 retval; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -81,6 +81,7 @@ } CLIPPING_UpdateGCRegion( dc ); + GDI_HEAP_UNLOCK( hdc ); return retval; } @@ -88,7 +89,7 @@ /*********************************************************************** * SelectVisRgn (GDI.105) */ -INT16 SelectVisRgn( HDC16 hdc, HRGN16 hrgn ) +INT16 WINAPI SelectVisRgn( HDC16 hdc, HRGN16 hrgn ) { int retval; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -100,6 +101,7 @@ retval = CombineRgn16( dc->w.hVisRgn, hrgn, 0, RGN_COPY ); CLIPPING_UpdateGCRegion( dc ); + GDI_HEAP_UNLOCK( hdc ); return retval; } @@ -107,7 +109,7 @@ /*********************************************************************** * OffsetClipRgn16 (GDI.32) */ -INT16 OffsetClipRgn16( HDC16 hdc, INT16 x, INT16 y ) +INT16 WINAPI OffsetClipRgn16( HDC16 hdc, INT16 x, INT16 y ) { return (INT16)OffsetClipRgn32( hdc, x, y ); } @@ -116,7 +118,7 @@ /*********************************************************************** * OffsetClipRgn32 (GDI32.255) */ -INT32 OffsetClipRgn32( HDC32 hdc, INT32 x, INT32 y ) +INT32 WINAPI OffsetClipRgn32( HDC32 hdc, INT32 x, INT32 y ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) @@ -124,6 +126,7 @@ dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC); if (!dc) return ERROR; MF_MetaParam2(dc, META_OFFSETCLIPRGN, x, y); + GDI_HEAP_UNLOCK( hdc ); return NULLREGION; /* ?? */ } @@ -133,16 +136,18 @@ { INT32 ret = OffsetRgn32( dc->w.hClipRgn, XLPTODP(dc,x), YLPTODP(dc,y)); CLIPPING_UpdateGCRegion( dc ); + GDI_HEAP_UNLOCK( hdc ); return ret; } - else return SIMPLEREGION; /* Clip region == client area */ + GDI_HEAP_UNLOCK( hdc ); + return SIMPLEREGION; /* Clip region == client area */ } /*********************************************************************** * OffsetVisRgn (GDI.102) */ -INT16 OffsetVisRgn( HDC16 hdc, INT16 x, INT16 y ) +INT16 WINAPI OffsetVisRgn( HDC16 hdc, INT16 x, INT16 y ) { INT16 retval; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -150,6 +155,7 @@ dprintf_clipping(stddeb, "OffsetVisRgn: %04x %d,%d\n", hdc, x, y ); retval = OffsetRgn32( dc->w.hVisRgn, x, y ); CLIPPING_UpdateGCRegion( dc ); + GDI_HEAP_UNLOCK( hdc ); return retval; } @@ -194,8 +200,8 @@ /*********************************************************************** * ExcludeClipRect16 (GDI.21) */ -INT16 ExcludeClipRect16( HDC16 hdc, INT16 left, INT16 top, - INT16 right, INT16 bottom ) +INT16 WINAPI ExcludeClipRect16( HDC16 hdc, INT16 left, INT16 top, + INT16 right, INT16 bottom ) { return (INT16)ExcludeClipRect32( hdc, left, top, right, bottom ); } @@ -204,15 +210,17 @@ /*********************************************************************** * ExcludeClipRect32 (GDI32.92) */ -INT32 ExcludeClipRect32( HDC32 hdc, INT32 left, INT32 top, - INT32 right, INT32 bottom ) +INT32 WINAPI ExcludeClipRect32( HDC32 hdc, INT32 left, INT32 top, + INT32 right, INT32 bottom ) { + INT32 ret; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) { dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC); if (!dc) return ERROR; MF_MetaParam4(dc, META_EXCLUDECLIPRECT, left, top, right, bottom); + GDI_HEAP_UNLOCK( hdc ); return NULLREGION; /* ?? */ } @@ -223,15 +231,17 @@ dprintf_clipping(stddeb, "ExcludeClipRect: %04x %dx%d,%dx%d\n", hdc, left, top, right, bottom ); - return CLIPPING_IntersectClipRect( dc, left, top, right, bottom, CLIP_EXCLUDE ); + ret = CLIPPING_IntersectClipRect( dc, left, top, right, bottom, CLIP_EXCLUDE ); + GDI_HEAP_UNLOCK( hdc ); + return ret; } /*********************************************************************** * IntersectClipRect16 (GDI.22) */ -INT16 IntersectClipRect16( HDC16 hdc, INT16 left, INT16 top, - INT16 right, INT16 bottom ) +INT16 WINAPI IntersectClipRect16( HDC16 hdc, INT16 left, INT16 top, + INT16 right, INT16 bottom ) { return (INT16)IntersectClipRect32( hdc, left, top, right, bottom ); } @@ -240,15 +250,17 @@ /*********************************************************************** * IntersectClipRect32 (GDI32.245) */ -INT32 IntersectClipRect32( HDC32 hdc, INT32 left, INT32 top, - INT32 right, INT32 bottom ) +INT32 WINAPI IntersectClipRect32( HDC32 hdc, INT32 left, INT32 top, + INT32 right, INT32 bottom ) { + INT32 ret; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) { dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC); if (!dc) return ERROR; MF_MetaParam4(dc, META_INTERSECTCLIPRECT, left, top, right, bottom); + GDI_HEAP_UNLOCK( hdc ); return NULLREGION; /* ?? */ } @@ -259,7 +271,9 @@ dprintf_clipping(stddeb, "IntersectClipRect: %04x %dx%d,%dx%d\n", hdc, left, top, right, bottom ); - return CLIPPING_IntersectClipRect( dc, left, top, right, bottom, CLIP_INTERSECT ); + ret = CLIPPING_IntersectClipRect( dc, left, top, right, bottom, CLIP_INTERSECT ); + GDI_HEAP_UNLOCK( hdc ); + return ret; } @@ -298,6 +312,7 @@ DeleteObject32( dc->w.hVisRgn ); dc->w.hVisRgn = newRgn; CLIPPING_UpdateGCRegion( dc ); + GDI_HEAP_UNLOCK( newRgn ); } else DeleteObject32( newRgn ); return ret; @@ -307,8 +322,8 @@ /*********************************************************************** * ExcludeVisRect (GDI.73) */ -INT16 ExcludeVisRect( HDC16 hdc, INT16 left, INT16 top, - INT16 right, INT16 bottom ) +INT16 WINAPI ExcludeVisRect( HDC16 hdc, INT16 left, INT16 top, + INT16 right, INT16 bottom ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return ERROR; @@ -322,8 +337,8 @@ /*********************************************************************** * IntersectVisRect (GDI.98) */ -INT16 IntersectVisRect( HDC16 hdc, INT16 left, INT16 top, - INT16 right, INT16 bottom ) +INT16 WINAPI IntersectVisRect( HDC16 hdc, INT16 left, INT16 top, + INT16 right, INT16 bottom ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return ERROR; @@ -337,7 +352,7 @@ /*********************************************************************** * PtVisible16 (GDI.103) */ -BOOL16 PtVisible16( HDC16 hdc, INT16 x, INT16 y ) +BOOL16 WINAPI PtVisible16( HDC16 hdc, INT16 x, INT16 y ) { return PtVisible32( hdc, x, y ); } @@ -346,7 +361,7 @@ /*********************************************************************** * PtVisible32 (GDI32.279) */ -BOOL32 PtVisible32( HDC32 hdc, INT32 x, INT32 y ) +BOOL32 WINAPI PtVisible32( HDC32 hdc, INT32 x, INT32 y ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return ERROR; @@ -364,7 +379,7 @@ /*********************************************************************** * RectVisible16 (GDI.104) */ -BOOL16 RectVisible16( HDC16 hdc, LPRECT16 rect ) +BOOL16 WINAPI RectVisible16( HDC16 hdc, LPRECT16 rect ) { RECT16 tmpRect; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -382,7 +397,7 @@ /*********************************************************************** * RectVisible32 (GDI32.282) */ -BOOL32 RectVisible32( HDC32 hdc, LPRECT32 rect ) +BOOL32 WINAPI RectVisible32( HDC32 hdc, LPRECT32 rect ) { RECT16 rect16; CONV_RECT32TO16( rect, &rect16 ); @@ -393,7 +408,7 @@ /*********************************************************************** * GetClipBox16 (GDI.77) */ -INT16 GetClipBox16( HDC16 hdc, LPRECT16 rect ) +INT16 WINAPI GetClipBox16( HDC16 hdc, LPRECT16 rect ) { int ret; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -407,7 +422,7 @@ /*********************************************************************** * GetClipBox32 (GDI32.162) */ -INT32 GetClipBox32( HDC32 hdc, LPRECT32 rect ) +INT32 WINAPI GetClipBox32( HDC32 hdc, LPRECT32 rect ) { INT32 ret; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -421,7 +436,7 @@ /*********************************************************************** * GetClipRgn32 (GDI32.163) */ -INT32 GetClipRgn32( HDC32 hdc, HRGN32 hRgn ) +INT32 WINAPI GetClipRgn32( HDC32 hdc, HRGN32 hRgn ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if( dc && hRgn ) @@ -440,7 +455,7 @@ /*********************************************************************** * SaveVisRgn (GDI.129) */ -HRGN16 SaveVisRgn( HDC16 hdc ) +HRGN16 WINAPI SaveVisRgn( HDC16 hdc ) { HRGN32 copy; RGNOBJ *obj, *copyObj; @@ -456,13 +471,28 @@ dc->w.flags &= ~DC_DIRTY; if (!(obj = (RGNOBJ *) GDI_GetObjPtr( dc->w.hVisRgn, REGION_MAGIC ))) + { + GDI_HEAP_UNLOCK( hdc ); return 0; - if (!(copy = CreateRectRgn32( 0, 0, 0, 0 ))) return 0; + } + if (!(copy = CreateRectRgn32( 0, 0, 0, 0 ))) + { + GDI_HEAP_UNLOCK( dc->w.hVisRgn ); + GDI_HEAP_UNLOCK( hdc ); + return 0; + } CombineRgn32( copy, dc->w.hVisRgn, 0, RGN_COPY ); if (!(copyObj = (RGNOBJ *) GDI_GetObjPtr( copy, REGION_MAGIC ))) + { + GDI_HEAP_UNLOCK( dc->w.hVisRgn ); + GDI_HEAP_UNLOCK( hdc ); return 0; + } copyObj->header.hNext = obj->header.hNext; obj->header.hNext = copy; + GDI_HEAP_UNLOCK( dc->w.hVisRgn ); + GDI_HEAP_UNLOCK( hdc ); + GDI_HEAP_UNLOCK( copy ); return copy; } @@ -470,20 +500,39 @@ /*********************************************************************** * RestoreVisRgn (GDI.130) */ -INT16 RestoreVisRgn( HDC16 hdc ) +INT16 WINAPI RestoreVisRgn( HDC16 hdc ) { HRGN32 saved; RGNOBJ *obj, *savedObj; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); - if (!dc || !dc->w.hVisRgn) return ERROR; + if (!dc) return ERROR; + if (!dc->w.hVisRgn) + { + GDI_HEAP_UNLOCK( hdc ); + return ERROR; + } dprintf_clipping(stddeb, "RestoreVisRgn: %04x\n", hdc ); if (!(obj = (RGNOBJ *) GDI_GetObjPtr( dc->w.hVisRgn, REGION_MAGIC ))) + { + GDI_HEAP_UNLOCK( hdc ); return ERROR; - if (!(saved = obj->header.hNext)) return ERROR; + } + if (!(saved = obj->header.hNext)) + { + GDI_HEAP_UNLOCK( dc->w.hVisRgn ); + GDI_HEAP_UNLOCK( hdc ); + return ERROR; + } if (!(savedObj = (RGNOBJ *) GDI_GetObjPtr( saved, REGION_MAGIC ))) - return ERROR; + { + GDI_HEAP_UNLOCK( dc->w.hVisRgn ); + GDI_HEAP_UNLOCK( hdc ); + return ERROR; + } DeleteObject32( dc->w.hVisRgn ); dc->w.hVisRgn = saved; CLIPPING_UpdateGCRegion( dc ); + GDI_HEAP_UNLOCK( hdc ); + GDI_HEAP_UNLOCK( saved ); return savedObj->xrgn ? COMPLEXREGION : NULLREGION; }
diff --git a/objects/color.c b/objects/color.c index 7d5c0bd..b07b790 100644 --- a/objects/color.c +++ b/objects/color.c
@@ -857,6 +857,7 @@ WORD index = 0; HPALETTE16 hPal = (dc)? dc->w.hPalette: STOCK_DEFAULT_PALETTE; unsigned char spec_type = color >> 24; + PALETTEOBJ* palPtr = (PALETTEOBJ *) GDI_GetObjPtr( hPal, PALETTE_MAGIC ); if ( cSpace.flags & COLOR_FIXED ) { @@ -866,7 +867,6 @@ unsigned long red, green, blue; unsigned idx = 0; - PALETTEOBJ * palPtr = (PALETTEOBJ *) GDI_GetObjPtr( hPal, PALETTE_MAGIC ); switch(spec_type) { @@ -876,7 +876,11 @@ palPtr->logpalette.palNumEntries, NULL, color, FALSE); - if( palPtr->mapping ) return palPtr->mapping[idx]; + if( palPtr->mapping ) + { + GDI_HEAP_UNLOCK( hPal ); + return palPtr->mapping[idx]; + } color = *(COLORREF*)(palPtr->logpalette.palPalEntry + idx); break; @@ -886,11 +890,15 @@ if( (idx = color & 0xffff) >= palPtr->logpalette.palNumEntries) { fprintf(stderr, "\tRGB(%lx) : idx %d is out of bounds, assuming black\n", color, idx); + GDI_HEAP_UNLOCK( hPal ); return 0; } - if( palPtr->mapping ) return palPtr->mapping[idx]; - + if( palPtr->mapping ) + { + GDI_HEAP_UNLOCK( hPal ); + return palPtr->mapping[idx]; + } color = *(COLORREF*)(palPtr->logpalette.palPalEntry + idx); break; @@ -900,8 +908,12 @@ case 0: /* RGB */ if( dc && (dc->w.bitsPerPixel == 1) ) + { + GDI_HEAP_UNLOCK( hPal ); return (((color >> 16) & 0xff) + ((color >> 8) & 0xff) + (color & 0xff) > 255*3/2) ? 1 : 0; + } + } red = GetRValue(color); green = GetGValue(color); blue = GetBValue(color); @@ -909,6 +921,7 @@ if (COLOR_Graymax) { /* grayscale only; return scaled value */ + GDI_HEAP_UNLOCK( hPal ); return ( (red * 30 + green * 69 + blue * 11) * COLOR_Graymax) / 25500; } else @@ -918,12 +931,12 @@ if (COLOR_Greenmax != 255) green = (green * COLOR_Greenmax) / 255; if (COLOR_Bluemax != 255) blue = (blue * COLOR_Bluemax) / 255; + GDI_HEAP_UNLOCK( hPal ); return (red << COLOR_Redshift) | (green << COLOR_Greenshift) | (blue << COLOR_Blueshift); } } else { - PALETTEOBJ* palPtr = (PALETTEOBJ *) GDI_GetObjPtr( hPal, PALETTE_MAGIC); /* palPtr can be NULL when DC is being destroyed */ @@ -939,8 +952,11 @@ case 0: /* RGB */ if( dc && (dc->w.bitsPerPixel == 1) ) + { + GDI_HEAP_UNLOCK( hPal ); return (((color >> 16) & 0xff) + ((color >> 8) & 0xff) + (color & 0xff) > 255*3/2) ? 1 : 0; + } index = COLOR_PaletteLookupPixel( COLOR_sysPal, 256, COLOR_PaletteToPixel, color, FALSE); @@ -968,6 +984,7 @@ } } + GDI_HEAP_UNLOCK( hPal ); return index; } @@ -977,12 +994,11 @@ * Set the color-mapping table for selected palette. * Return number of entries which mapping has changed. */ -int COLOR_SetMapping( PALETTEOBJ* palPtr, BOOL32 mapOnly ) +int COLOR_SetMapping( PALETTEOBJ* palPtr, UINT32 uStart, UINT32 uNum, BOOL32 mapOnly ) { - int i, index; char flag; int prevMapping = (palPtr->mapping) ? 1 : 0; - int iRemapped = 0; + int index, iRemapped = 0; /* reset dynamic system palette entries */ @@ -994,15 +1010,15 @@ palPtr->mapping = (int*)xrealloc(palPtr->mapping, sizeof(int)* palPtr->logpalette.palNumEntries); - for( i = 0; i < palPtr->logpalette.palNumEntries; i++ ) + for( uNum += uStart; uStart < uNum; uStart++ ) { index = -1; flag = PC_SYS_USED; - switch( palPtr->logpalette.palPalEntry[i].peFlags & 0x07 ) + switch( palPtr->logpalette.palPalEntry[uStart].peFlags & 0x07 ) { case PC_EXPLICIT: /* palette entries are indices into system palette */ - index = *(WORD*)(palPtr->logpalette.palPalEntry + i); + index = *(WORD*)(palPtr->logpalette.palPalEntry + uStart); if( index > 255 || (index >= COLOR_gapStart && index <= COLOR_gapEnd) ) { fprintf(stderr,"PC_EXPLICIT: idx %d out of system palette, assuming black.\n", index); @@ -1016,7 +1032,7 @@ /* fall through */ default: /* try to collapse identical colors */ index = COLOR_PaletteLookupExactIndex(COLOR_sysPal, 256, - *(COLORREF*)(palPtr->logpalette.palPalEntry + i)); + *(COLORREF*)(palPtr->logpalette.palPalEntry + uStart)); /* fall through */ case PC_NOCOLLAPSE: if( index < 0 ) @@ -1028,13 +1044,13 @@ COLOR_firstFree = COLOR_freeList[index]; color.pixel = (COLOR_PaletteToPixel) ? COLOR_PaletteToPixel[index] : index; - color.red = palPtr->logpalette.palPalEntry[i].peRed << 8; - color.green = palPtr->logpalette.palPalEntry[i].peGreen << 8; - color.blue = palPtr->logpalette.palPalEntry[i].peBlue << 8; + color.red = palPtr->logpalette.palPalEntry[uStart].peRed << 8; + color.green = palPtr->logpalette.palPalEntry[uStart].peGreen << 8; + color.blue = palPtr->logpalette.palPalEntry[uStart].peBlue << 8; color.flags = DoRed | DoGreen | DoBlue; XStoreColor(display, cSpace.colorMap, &color); - COLOR_sysPal[index] = palPtr->logpalette.palPalEntry[i]; + COLOR_sysPal[index] = palPtr->logpalette.palPalEntry[uStart]; COLOR_sysPal[index].peFlags = flag; COLOR_freeList[index] = 0; @@ -1044,27 +1060,28 @@ else if ( cSpace.flags & COLOR_VIRTUAL ) { index = COLOR_ToPhysical( NULL, 0x00ffffff & - *(COLORREF*)(palPtr->logpalette.palPalEntry + i)); + *(COLORREF*)(palPtr->logpalette.palPalEntry + uStart)); break; } /* we have to map to existing entry in the system palette */ index = COLOR_PaletteLookupPixel(COLOR_sysPal, 256, NULL, - *(COLORREF*)(palPtr->logpalette.palPalEntry + i), TRUE); + *(COLORREF*)(palPtr->logpalette.palPalEntry + uStart), TRUE); } - palPtr->logpalette.palPalEntry[i].peFlags |= PC_SYS_USED; + palPtr->logpalette.palPalEntry[uStart].peFlags |= PC_SYS_USED; if( COLOR_PaletteToPixel ) index = COLOR_PaletteToPixel[index]; break; } - if( !prevMapping || palPtr->mapping[i] != index ) iRemapped++; - palPtr->mapping[i] = index; + if( !prevMapping || palPtr->mapping[uStart] != index ) iRemapped++; + palPtr->mapping[uStart] = index; - dprintf_palette(stddeb,"\tentry %i (%lx) -> pixel %i\n", i, - *(COLORREF*)(palPtr->logpalette.palPalEntry + i), index); + dprintf_palette(stddeb,"\tentry %i (%lx) -> pixel %i\n", uStart, + *(COLORREF*)(palPtr->logpalette.palPalEntry + uStart), index); } return iRemapped; } +
diff --git a/objects/cursoricon.c b/objects/cursoricon.c index e8a9537..317f163 100644 --- a/objects/cursoricon.c +++ b/objects/cursoricon.c
@@ -522,7 +522,7 @@ /*********************************************************************** * LoadCursor16 (USER.173) */ -HCURSOR16 LoadCursor16( HINSTANCE16 hInstance, SEGPTR name ) +HCURSOR16 WINAPI LoadCursor16( HINSTANCE16 hInstance, SEGPTR name ) { if (HIWORD(name)) dprintf_cursor( stddeb, "LoadCursor16: %04x '%s'\n", @@ -539,7 +539,7 @@ /*********************************************************************** * LoadIcon16 (USER.174) */ -HICON16 LoadIcon16( HINSTANCE16 hInstance, SEGPTR name ) +HICON16 WINAPI LoadIcon16( HINSTANCE16 hInstance, SEGPTR name ) { if (HIWORD(name)) dprintf_icon( stddeb, "LoadIcon: %04x '%s'\n", @@ -557,9 +557,10 @@ /*********************************************************************** * CreateCursor16 (USER.406) */ -HCURSOR16 CreateCursor16(HINSTANCE16 hInstance, INT16 xHotSpot, INT16 yHotSpot, - INT16 nWidth, INT16 nHeight, - LPCVOID lpANDbits, LPCVOID lpXORbits ) +HCURSOR16 WINAPI CreateCursor16( HINSTANCE16 hInstance, + INT16 xHotSpot, INT16 yHotSpot, + INT16 nWidth, INT16 nHeight, + LPCVOID lpANDbits, LPCVOID lpXORbits ) { CURSORICONINFO info = { { xHotSpot, yHotSpot }, nWidth, nHeight, 0, 1, 1 }; @@ -572,9 +573,10 @@ /*********************************************************************** * CreateCursor32 (USER32.66) */ -HCURSOR32 CreateCursor32(HINSTANCE32 hInstance, INT32 xHotSpot, INT32 yHotSpot, - INT32 nWidth, INT32 nHeight, - LPCVOID lpANDbits, LPCVOID lpXORbits ) +HCURSOR32 WINAPI CreateCursor32( HINSTANCE32 hInstance, + INT32 xHotSpot, INT32 yHotSpot, + INT32 nWidth, INT32 nHeight, + LPCVOID lpANDbits, LPCVOID lpXORbits ) { CURSORICONINFO info = { { xHotSpot, yHotSpot }, nWidth, nHeight, 0, 1, 1 }; @@ -587,9 +589,9 @@ /*********************************************************************** * CreateIcon16 (USER.407) */ -HICON16 CreateIcon16( HINSTANCE16 hInstance, INT16 nWidth, INT16 nHeight, - BYTE bPlanes, BYTE bBitsPixel, - LPCVOID lpANDbits, LPCVOID lpXORbits ) +HICON16 WINAPI CreateIcon16( HINSTANCE16 hInstance, INT16 nWidth, + INT16 nHeight, BYTE bPlanes, BYTE bBitsPixel, + LPCVOID lpANDbits, LPCVOID lpXORbits ) { CURSORICONINFO info = { { 0, 0 }, nWidth, nHeight, 0, bPlanes, bBitsPixel}; @@ -602,9 +604,9 @@ /*********************************************************************** * CreateIcon32 (USER32.74) */ -HICON32 CreateIcon32( HINSTANCE32 hInstance, INT32 nWidth, INT32 nHeight, - BYTE bPlanes, BYTE bBitsPixel, - LPCVOID lpANDbits, LPCVOID lpXORbits ) +HICON32 WINAPI CreateIcon32( HINSTANCE32 hInstance, INT32 nWidth, + INT32 nHeight, BYTE bPlanes, BYTE bBitsPixel, + LPCVOID lpANDbits, LPCVOID lpXORbits ) { CURSORICONINFO info = { { 0, 0 }, nWidth, nHeight, 0, bPlanes, bBitsPixel}; @@ -617,8 +619,10 @@ /*********************************************************************** * CreateCursorIconIndirect (USER.408) */ -HGLOBAL16 CreateCursorIconIndirect(HINSTANCE16 hInstance, CURSORICONINFO *info, - LPCVOID lpANDbits, LPCVOID lpXORbits ) +HGLOBAL16 WINAPI CreateCursorIconIndirect( HINSTANCE16 hInstance, + CURSORICONINFO *info, + LPCVOID lpANDbits, + LPCVOID lpXORbits ) { HGLOBAL16 handle; char *ptr; @@ -644,7 +648,7 @@ /*********************************************************************** * CopyIcon16 (USER.368) */ -HICON16 CopyIcon16( HINSTANCE16 hInstance, HICON16 hIcon ) +HICON16 WINAPI CopyIcon16( HINSTANCE16 hInstance, HICON16 hIcon ) { dprintf_icon( stddeb, "CopyIcon16: %04x %04x\n", hInstance, hIcon ); return CURSORICON_Copy( hInstance, hIcon ); @@ -654,7 +658,7 @@ /*********************************************************************** * CopyIcon32 (USER32.59) */ -HICON32 CopyIcon32( HICON32 hIcon ) +HICON32 WINAPI CopyIcon32( HICON32 hIcon ) { dprintf_icon( stddeb, "CopyIcon32: %04x\n", hIcon ); return CURSORICON_Copy( 0, hIcon ); @@ -664,7 +668,7 @@ /*********************************************************************** * CopyCursor16 (USER.369) */ -HCURSOR16 CopyCursor16( HINSTANCE16 hInstance, HCURSOR16 hCursor ) +HCURSOR16 WINAPI CopyCursor16( HINSTANCE16 hInstance, HCURSOR16 hCursor ) { dprintf_cursor( stddeb, "CopyCursor16: %04x %04x\n", hInstance, hCursor ); return CURSORICON_Copy( hInstance, hCursor ); @@ -674,7 +678,7 @@ /*********************************************************************** * DestroyIcon16 (USER.457) */ -BOOL16 DestroyIcon16( HICON16 hIcon ) +BOOL16 WINAPI DestroyIcon16( HICON16 hIcon ) { return DestroyIcon32( hIcon ); } @@ -683,7 +687,7 @@ /*********************************************************************** * DestroyIcon32 (USER32.132) */ -BOOL32 DestroyIcon32( HICON32 hIcon ) +BOOL32 WINAPI DestroyIcon32( HICON32 hIcon ) { dprintf_icon( stddeb, "DestroyIcon: %04x\n", hIcon ); /* FIXME: should check for OEM icon here */ @@ -694,7 +698,7 @@ /*********************************************************************** * DestroyCursor16 (USER.458) */ -BOOL16 DestroyCursor16( HCURSOR16 hCursor ) +BOOL16 WINAPI DestroyCursor16( HCURSOR16 hCursor ) { return DestroyCursor32( hCursor ); } @@ -703,7 +707,7 @@ /*********************************************************************** * DestroyCursor32 (USER32.131) */ -BOOL32 DestroyCursor32( HCURSOR32 hCursor ) +BOOL32 WINAPI DestroyCursor32( HCURSOR32 hCursor ) { dprintf_cursor( stddeb, "DestroyCursor: %04x\n", hCursor ); /* FIXME: should check for OEM cursor here */ @@ -714,7 +718,7 @@ /*********************************************************************** * DrawIcon16 (USER.84) */ -BOOL16 DrawIcon16( HDC16 hdc, INT16 x, INT16 y, HICON16 hIcon ) +BOOL16 WINAPI DrawIcon16( HDC16 hdc, INT16 x, INT16 y, HICON16 hIcon ) { return DrawIcon32( hdc, x, y, hIcon ); } @@ -723,7 +727,7 @@ /*********************************************************************** * DrawIcon32 (USER32.158) */ -BOOL32 DrawIcon32( HDC32 hdc, INT32 x, INT32 y, HICON32 hIcon ) +BOOL32 WINAPI DrawIcon32( HDC32 hdc, INT32 x, INT32 y, HICON32 hIcon ) { CURSORICONINFO *ptr; HDC32 hMemDC; @@ -761,8 +765,8 @@ /*********************************************************************** * DumpIcon (USER.459) */ -DWORD DumpIcon( SEGPTR pInfo, WORD *lpLen, - SEGPTR *lpXorBits, SEGPTR *lpAndBits ) +DWORD WINAPI DumpIcon( SEGPTR pInfo, WORD *lpLen, + SEGPTR *lpXorBits, SEGPTR *lpAndBits ) { CURSORICONINFO *info = PTR_SEG_TO_LIN( pInfo ); int sizeAnd, sizeXor; @@ -833,9 +837,8 @@ image->bitmap_unit = 16; _XInitImageFuncPtrs(image); if (pixmapAll) - CallTo32_LargeStack( XPutImage, 10, - display, pixmapAll, BITMAP_monoGC, image, - 0, 0, 0, 0, ptr->nWidth, ptr->nHeight*2 ); + XPutImage( display, pixmapAll, BITMAP_monoGC, image, + 0, 0, 0, 0, ptr->nWidth, ptr->nHeight * 2 ); image->data = NULL; XDestroyImage( image ); } @@ -925,7 +928,7 @@ /*********************************************************************** * SetCursor16 (USER.69) */ -HCURSOR16 SetCursor16( HCURSOR16 hCursor ) +HCURSOR16 WINAPI SetCursor16( HCURSOR16 hCursor ) { return (HCURSOR16)SetCursor32( hCursor ); } @@ -934,7 +937,7 @@ /*********************************************************************** * SetCursor32 (USER32.471) */ -HCURSOR32 SetCursor32( HCURSOR32 hCursor ) +HCURSOR32 WINAPI SetCursor32( HCURSOR32 hCursor ) { HCURSOR32 hOldCursor; @@ -943,7 +946,8 @@ hOldCursor = hActiveCursor; hActiveCursor = hCursor; /* Change the cursor shape only if it is visible */ - if (CURSOR_ShowCount >= 0) CURSORICON_SetCursor( hActiveCursor ); + if (CURSOR_ShowCount >= 0) + CALL_LARGE_STACK( CURSORICON_SetCursor, hActiveCursor ); return hOldCursor; } @@ -951,7 +955,7 @@ /*********************************************************************** * SetCursorPos16 (USER.70) */ -void SetCursorPos16( INT16 x, INT16 y ) +void WINAPI SetCursorPos16( INT16 x, INT16 y ) { SetCursorPos32( x, y ); } @@ -960,7 +964,7 @@ /*********************************************************************** * SetCursorPos32 (USER32.473) */ -BOOL32 SetCursorPos32( INT32 x, INT32 y ) +BOOL32 WINAPI SetCursorPos32( INT32 x, INT32 y ) { dprintf_cursor( stddeb, "SetCursorPos: x=%d y=%d\n", x, y ); XWarpPointer( display, rootWindow, rootWindow, 0, 0, 0, 0, x, y ); @@ -971,7 +975,7 @@ /*********************************************************************** * ShowCursor16 (USER.71) */ -INT16 ShowCursor16( BOOL16 bShow ) +INT16 WINAPI ShowCursor16( BOOL16 bShow ) { return ShowCursor32( bShow ); } @@ -980,20 +984,20 @@ /*********************************************************************** * ShowCursor32 (USER32.529) */ -INT32 ShowCursor32( BOOL32 bShow ) +INT32 WINAPI ShowCursor32( BOOL32 bShow ) { dprintf_cursor( stddeb, "ShowCursor: %d, count=%d\n", bShow, CURSOR_ShowCount ); if (bShow) { - if (++CURSOR_ShowCount == 0) - CURSORICON_SetCursor( hActiveCursor ); /* Show it */ + if (++CURSOR_ShowCount == 0) /* Show it */ + CALL_LARGE_STACK( CURSORICON_SetCursor, hActiveCursor ); } else { - if (--CURSOR_ShowCount == -1) - CURSORICON_SetCursor( 0 ); /* Hide it */ + if (--CURSOR_ShowCount == -1) /* Hide it */ + CALL_LARGE_STACK( CURSORICON_SetCursor, 0 ); } return CURSOR_ShowCount; } @@ -1002,7 +1006,7 @@ /*********************************************************************** * GetCursor16 (USER.247) */ -HCURSOR16 GetCursor16(void) +HCURSOR16 WINAPI GetCursor16(void) { return hActiveCursor; } @@ -1011,7 +1015,7 @@ /*********************************************************************** * GetCursor32 (USER32.226) */ -HCURSOR32 GetCursor32(void) +HCURSOR32 WINAPI GetCursor32(void) { return hActiveCursor; } @@ -1020,7 +1024,7 @@ /*********************************************************************** * ClipCursor16 (USER.16) */ -BOOL16 ClipCursor16( const RECT16 *rect ) +BOOL16 WINAPI ClipCursor16( const RECT16 *rect ) { if (!rect) SetRectEmpty32( &CURSOR_ClipRect ); else CONV_RECT16TO32( rect, &CURSOR_ClipRect ); @@ -1031,7 +1035,7 @@ /*********************************************************************** * ClipCursor32 (USER32.52) */ -BOOL32 ClipCursor32( const RECT32 *rect ) +BOOL32 WINAPI ClipCursor32( const RECT32 *rect ) { if (!rect) SetRectEmpty32( &CURSOR_ClipRect ); else CopyRect32( &CURSOR_ClipRect, rect ); @@ -1042,7 +1046,7 @@ /*********************************************************************** * GetCursorPos16 (USER.17) */ -void GetCursorPos16( POINT16 *pt ) +void WINAPI GetCursorPos16( POINT16 *pt ) { Window root, child; int rootX, rootY, childX, childY; @@ -1064,7 +1068,7 @@ /*********************************************************************** * GetCursorPos32 (USER32.228) */ -void GetCursorPos32( POINT32 *pt ) +void WINAPI GetCursorPos32( POINT32 *pt ) { POINT16 pt16; GetCursorPos16( &pt16 ); @@ -1075,7 +1079,7 @@ /*********************************************************************** * GetClipCursor16 (USER.309) */ -void GetClipCursor16( RECT16 *rect ) +void WINAPI GetClipCursor16( RECT16 *rect ) { if (rect) CONV_RECT32TO16( &CURSOR_ClipRect, rect ); } @@ -1084,7 +1088,7 @@ /*********************************************************************** * GetClipCursor32 (USER32.220) */ -void GetClipCursor32( RECT32 *rect ) +void WINAPI GetClipCursor32( RECT32 *rect ) { if (rect) CopyRect32( rect, &CURSOR_ClipRect ); } @@ -1093,7 +1097,7 @@ /********************************************************************** * GetIconID (USER.455) */ -WORD GetIconID( HGLOBAL16 hResource, DWORD resType ) +WORD WINAPI GetIconID( HGLOBAL16 hResource, DWORD resType ) { CURSORICONDIR *lpDir = (CURSORICONDIR *)GlobalLock16(hResource); /* LockResource16(hResource); */ @@ -1132,7 +1136,7 @@ /********************************************************************** * LoadIconHandler (USER.456) */ -HICON16 LoadIconHandler( HGLOBAL16 hResource, BOOL16 bNew ) +HICON16 WINAPI LoadIconHandler( HGLOBAL16 hResource, BOOL16 bNew ) { dprintf_cursor(stddeb,"LoadIconHandler: hRes=%04x\n",hResource);
diff --git a/objects/dc.c b/objects/dc.c index 0210fc3..77d3996 100644 --- a/objects/dc.c +++ b/objects/dc.c
@@ -141,7 +141,7 @@ DC *dc; if (!(hdc = GDI_AllocObject( sizeof(DC), DC_MAGIC ))) return NULL; - dc = (DC *) GDI_HEAP_LIN_ADDR( hdc ); + dc = (DC *) GDI_HEAP_LOCK( hdc ); dc->hSelf = hdc; dc->funcs = funcs; @@ -163,15 +163,17 @@ } + /*********************************************************************** * DC_GetDCPtr */ DC *DC_GetDCPtr( HDC32 hdc ) { - GDIOBJHDR *ptr = (GDIOBJHDR *)GDI_HEAP_LIN_ADDR( hdc ); + GDIOBJHDR *ptr = (GDIOBJHDR *)GDI_HEAP_LOCK( hdc ); if (!ptr) return NULL; if ((ptr->wMagic == DC_MAGIC) || (ptr->wMagic == METAFILE_DC_MAGIC)) return (DC *)ptr; + GDI_HEAP_UNLOCK( hdc ); return NULL; } @@ -380,14 +382,18 @@ /*********************************************************************** * GetDCState (GDI.179) */ -HDC16 GetDCState( HDC16 hdc ) +HDC16 WINAPI GetDCState( HDC16 hdc ) { DC * newdc, * dc; HGDIOBJ16 handle; if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return 0; - if (!(handle = GDI_AllocObject( sizeof(DC), DC_MAGIC ))) return 0; - newdc = (DC *) GDI_HEAP_LIN_ADDR( handle ); + if (!(handle = GDI_AllocObject( sizeof(DC), DC_MAGIC ))) + { + GDI_HEAP_UNLOCK( hdc ); + return 0; + } + newdc = (DC *) GDI_HEAP_LOCK( handle ); dprintf_dc(stddeb, "GetDCState(%04x): returning %04x\n", hdc, handle ); @@ -446,6 +452,8 @@ } else newdc->w.hClipRgn = 0; + GDI_HEAP_UNLOCK( handle ); + GDI_HEAP_UNLOCK( hdc ); return handle; } @@ -453,13 +461,22 @@ /*********************************************************************** * SetDCState (GDI.180) */ -void SetDCState( HDC16 hdc, HDC16 hdcs ) +void WINAPI SetDCState( HDC16 hdc, HDC16 hdcs ) { DC *dc, *dcs; if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return; - if (!(dcs = (DC *) GDI_GetObjPtr( hdcs, DC_MAGIC ))) return; - if (!dcs->w.flags & DC_SAVED) return; + if (!(dcs = (DC *) GDI_GetObjPtr( hdcs, DC_MAGIC ))) + { + GDI_HEAP_UNLOCK( hdc ); + return; + } + if (!dcs->w.flags & DC_SAVED) + { + GDI_HEAP_UNLOCK( hdc ); + GDI_HEAP_UNLOCK( hdcs ); + return; + } dprintf_dc(stddeb, "SetDCState: %04x %04x\n", hdc, hdcs ); dc->w.flags = dcs->w.flags & ~DC_SAVED; @@ -506,13 +523,15 @@ SelectObject32( hdc, dcs->w.hFont ); SelectObject32( hdc, dcs->w.hPen ); GDISelectPalette( hdc, dcs->w.hPalette, FALSE ); + GDI_HEAP_UNLOCK( hdc ); + GDI_HEAP_UNLOCK( hdcs ); } /*********************************************************************** * SaveDC16 (GDI.30) */ -INT16 SaveDC16( HDC16 hdc ) +INT16 WINAPI SaveDC16( HDC16 hdc ) { return (INT16)SaveDC32( hdc ); } @@ -521,10 +540,11 @@ /*********************************************************************** * SaveDC32 (GDI32.292) */ -INT32 SaveDC32( HDC32 hdc ) +INT32 WINAPI SaveDC32( HDC32 hdc ) { HDC32 hdcs; DC * dc, * dcs; + INT32 ret; dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) @@ -532,21 +552,29 @@ dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC); if (!dc) return 0; MF_MetaParam0(dc, META_SAVEDC); + GDI_HEAP_UNLOCK( hdc ); return 1; /* ?? */ } - if (!(hdcs = GetDCState( hdc ))) return 0; - dcs = (DC *) GDI_HEAP_LIN_ADDR( hdcs ); + if (!(hdcs = GetDCState( hdc ))) + { + GDI_HEAP_UNLOCK( hdc ); + return 0; + } + dcs = (DC *) GDI_HEAP_LOCK( hdcs ); dcs->header.hNext = dc->header.hNext; dc->header.hNext = hdcs; dprintf_dc(stddeb, "SaveDC(%04x): returning %d\n", hdc, dc->saveLevel+1 ); - return ++dc->saveLevel; + ret = ++dc->saveLevel; + GDI_HEAP_UNLOCK( hdcs ); + GDI_HEAP_UNLOCK( hdc ); + return ret; } /*********************************************************************** * RestoreDC16 (GDI.39) */ -BOOL16 RestoreDC16( HDC16 hdc, INT16 level ) +BOOL16 WINAPI RestoreDC16( HDC16 hdc, INT16 level ) { return RestoreDC32( hdc, level ); } @@ -555,7 +583,7 @@ /*********************************************************************** * RestoreDC32 (GDI32.290) */ -BOOL32 RestoreDC32( HDC32 hdc, INT32 level ) +BOOL32 WINAPI RestoreDC32( HDC32 hdc, INT32 level ) { DC * dc, * dcs; @@ -565,21 +593,35 @@ { dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC); if (!dc) return FALSE; - if (level != -1) return FALSE; + if (level != -1) + { + GDI_HEAP_UNLOCK( hdc ); + return FALSE; + } MF_MetaParam1(dc, META_RESTOREDC, level); + GDI_HEAP_UNLOCK( hdc ); return TRUE; } if (level == -1) level = dc->saveLevel; - if ((level < 1) || (level > dc->saveLevel)) return FALSE; + if ((level < 1) || (level > dc->saveLevel)) + { + GDI_HEAP_UNLOCK( hdc ); + return FALSE; + } while (dc->saveLevel >= level) { HDC16 hdcs = dc->header.hNext; - if (!(dcs = (DC *) GDI_GetObjPtr( hdcs, DC_MAGIC ))) return FALSE; + if (!(dcs = (DC *) GDI_GetObjPtr( hdcs, DC_MAGIC ))) + { + GDI_HEAP_UNLOCK( hdc ); + return FALSE; + } dc->header.hNext = dcs->header.hNext; if (--dc->saveLevel < level) SetDCState( hdc, hdcs ); DeleteDC32( hdcs ); } + GDI_HEAP_UNLOCK( hdc ); return TRUE; } @@ -587,8 +629,8 @@ /*********************************************************************** * CreateDC16 (GDI.53) */ -HDC16 CreateDC16( LPCSTR driver, LPCSTR device, LPCSTR output, - const DEVMODE16 *initData ) +HDC16 WINAPI CreateDC16( LPCSTR driver, LPCSTR device, LPCSTR output, + const DEVMODE16 *initData ) { DC * dc; const DC_FUNCTIONS *funcs; @@ -609,6 +651,7 @@ } DC_InitDC( dc ); + GDI_HEAP_UNLOCK( dc->hSelf ); return dc->hSelf; } @@ -616,8 +659,8 @@ /*********************************************************************** * CreateDC32A (GDI32.) */ -HDC32 CreateDC32A( LPCSTR driver, LPCSTR device, LPCSTR output, - const DEVMODE32A *initData ) +HDC32 WINAPI CreateDC32A( LPCSTR driver, LPCSTR device, LPCSTR output, + const DEVMODE32A *initData ) { return CreateDC16( driver, device, output, (const DEVMODE16 *)initData ); } @@ -626,8 +669,8 @@ /*********************************************************************** * CreateDC32W (GDI32.) */ -HDC32 CreateDC32W( LPCWSTR driver, LPCWSTR device, LPCWSTR output, - const DEVMODE32W *initData ) +HDC32 WINAPI CreateDC32W( LPCWSTR driver, LPCWSTR device, LPCWSTR output, + const DEVMODE32W *initData ) { LPSTR driverA = HEAP_strdupWtoA( GetProcessHeap(), 0, driver ); LPSTR deviceA = HEAP_strdupWtoA( GetProcessHeap(), 0, device ); @@ -644,8 +687,8 @@ /*********************************************************************** * CreateIC16 (GDI.153) */ -HDC16 CreateIC16( LPCSTR driver, LPCSTR device, LPCSTR output, - const DEVMODE16* initData ) +HDC16 WINAPI CreateIC16( LPCSTR driver, LPCSTR device, LPCSTR output, + const DEVMODE16* initData ) { /* Nothing special yet for ICs */ return CreateDC16( driver, device, output, initData ); @@ -655,8 +698,8 @@ /*********************************************************************** * CreateIC32A (GDI32.49) */ -HDC32 CreateIC32A( LPCSTR driver, LPCSTR device, LPCSTR output, - const DEVMODE32A* initData ) +HDC32 WINAPI CreateIC32A( LPCSTR driver, LPCSTR device, LPCSTR output, + const DEVMODE32A* initData ) { /* Nothing special yet for ICs */ return CreateDC32A( driver, device, output, initData ); @@ -666,8 +709,8 @@ /*********************************************************************** * CreateIC32W (GDI32.50) */ -HDC32 CreateIC32W( LPCWSTR driver, LPCWSTR device, LPCWSTR output, - const DEVMODE32W* initData ) +HDC32 WINAPI CreateIC32W( LPCWSTR driver, LPCWSTR device, LPCWSTR output, + const DEVMODE32W* initData ) { /* Nothing special yet for ICs */ return CreateDC32W( driver, device, output, initData ); @@ -677,7 +720,7 @@ /*********************************************************************** * CreateCompatibleDC16 (GDI.52) */ -HDC16 CreateCompatibleDC16( HDC16 hdc ) +HDC16 WINAPI CreateCompatibleDC16( HDC16 hdc ) { return (HDC16)CreateCompatibleDC32( hdc ); } @@ -686,7 +729,7 @@ /*********************************************************************** * CreateCompatibleDC32 (GDI32.31) */ -HDC32 CreateCompatibleDC32( HDC32 hdc ) +HDC32 WINAPI CreateCompatibleDC32( HDC32 hdc ) { DC *dc, *origDC; HBITMAP32 hbitmap; @@ -722,6 +765,7 @@ } DC_InitDC( dc ); + GDI_HEAP_UNLOCK( dc->hSelf ); return dc->hSelf; } @@ -729,7 +773,7 @@ /*********************************************************************** * DeleteDC16 (GDI.68) */ -BOOL16 DeleteDC16( HDC16 hdc ) +BOOL16 WINAPI DeleteDC16( HDC16 hdc ) { return DeleteDC32( hdc ); } @@ -738,7 +782,7 @@ /*********************************************************************** * DeleteDC32 (GDI32.67) */ -BOOL32 DeleteDC32( HDC32 hdc ) +BOOL32 WINAPI DeleteDC32( HDC32 hdc ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return FALSE; @@ -775,7 +819,7 @@ /*********************************************************************** * ResetDC16 (GDI.376) */ -HDC16 ResetDC16( HDC16 hdc, const DEVMODE16 *devmode ) +HDC16 WINAPI ResetDC16( HDC16 hdc, const DEVMODE16 *devmode ) { fprintf( stderr, "ResetDC16: empty stub!\n" ); return hdc; @@ -785,7 +829,7 @@ /*********************************************************************** * ResetDC32A (GDI32.287) */ -HDC32 ResetDC32A( HDC32 hdc, const DEVMODE32A *devmode ) +HDC32 WINAPI ResetDC32A( HDC32 hdc, const DEVMODE32A *devmode ) { fprintf( stderr, "ResetDC32A: empty stub!\n" ); return hdc; @@ -795,7 +839,7 @@ /*********************************************************************** * ResetDC32W (GDI32.288) */ -HDC32 ResetDC32W( HDC32 hdc, const DEVMODE32W *devmode ) +HDC32 WINAPI ResetDC32W( HDC32 hdc, const DEVMODE32W *devmode ) { fprintf( stderr, "ResetDC32A: empty stub!\n" ); return hdc; @@ -805,7 +849,7 @@ /*********************************************************************** * GetDeviceCaps16 (GDI.80) */ -INT16 GetDeviceCaps16( HDC16 hdc, INT16 cap ) +INT16 WINAPI GetDeviceCaps16( HDC16 hdc, INT16 cap ) { return GetDeviceCaps32( hdc, cap ); } @@ -814,23 +858,31 @@ /*********************************************************************** * GetDeviceCaps32 (GDI32.171) */ -INT32 GetDeviceCaps32( HDC32 hdc, INT32 cap ) +INT32 WINAPI GetDeviceCaps32( HDC32 hdc, INT32 cap ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); + INT32 ret; + if (!dc) return 0; - if ((cap < 0) || (cap > sizeof(DeviceCaps)-sizeof(WORD))) return 0; + if ((cap < 0) || (cap > sizeof(DeviceCaps)-sizeof(WORD))) + { + GDI_HEAP_UNLOCK( hdc ); + return 0; + } dprintf_dc(stddeb, "GetDeviceCaps(%04x,%d): returning %d\n", hdc, cap, *(WORD *)(((char *)dc->w.devCaps) + cap) ); - return *(WORD *)(((char *)dc->w.devCaps) + cap); + ret = *(WORD *)(((char *)dc->w.devCaps) + cap); + GDI_HEAP_UNLOCK( hdc ); + return ret; } /*********************************************************************** * SetBkColor16 (GDI.1) */ -COLORREF SetBkColor16( HDC16 hdc, COLORREF color ) +COLORREF WINAPI SetBkColor16( HDC16 hdc, COLORREF color ) { return SetBkColor32( hdc, color ); } @@ -839,7 +891,7 @@ /*********************************************************************** * SetBkColor32 (GDI32.305) */ -COLORREF SetBkColor32( HDC32 hdc, COLORREF color ) +COLORREF WINAPI SetBkColor32( HDC32 hdc, COLORREF color ) { COLORREF oldColor; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -848,12 +900,14 @@ dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC); if (!dc) return 0x80000000; MF_MetaParam2(dc, META_SETBKCOLOR, HIWORD(color), LOWORD(color)); + GDI_HEAP_UNLOCK( hdc ); return 0; /* ?? */ } oldColor = dc->w.backgroundColor; dc->w.backgroundColor = color; dc->w.backgroundPixel = COLOR_ToPhysical( dc, color ); + GDI_HEAP_UNLOCK( hdc ); return oldColor; } @@ -861,7 +915,7 @@ /*********************************************************************** * SetTextColor16 (GDI.9) */ -COLORREF SetTextColor16( HDC16 hdc, COLORREF color ) +COLORREF WINAPI SetTextColor16( HDC16 hdc, COLORREF color ) { return SetTextColor32( hdc, color ); } @@ -870,7 +924,7 @@ /*********************************************************************** * SetTextColor32 (GDI32.338) */ -COLORREF SetTextColor32( HDC32 hdc, COLORREF color ) +COLORREF WINAPI SetTextColor32( HDC32 hdc, COLORREF color ) { COLORREF oldColor; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -879,12 +933,14 @@ dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC); if (!dc) return 0x80000000; MF_MetaParam2(dc, META_SETTEXTCOLOR, HIWORD(color), LOWORD(color)); + GDI_HEAP_UNLOCK( hdc ); return 0; /* ?? */ } oldColor = dc->w.textColor; dc->w.textColor = color; dc->w.textPixel = COLOR_ToPhysical( dc, color ); + GDI_HEAP_UNLOCK( hdc ); return oldColor; } @@ -892,7 +948,7 @@ /*********************************************************************** * SetTextAlign16 (GDI.346) */ -UINT16 SetTextAlign16( HDC16 hdc, UINT16 textAlign ) +UINT16 WINAPI SetTextAlign16( HDC16 hdc, UINT16 textAlign ) { return SetTextAlign32( hdc, textAlign ); } @@ -901,7 +957,7 @@ /*********************************************************************** * SetTextAlign32 (GDI32.336) */ -UINT32 SetTextAlign32( HDC32 hdc, UINT32 textAlign ) +UINT32 WINAPI SetTextAlign32( HDC32 hdc, UINT32 textAlign ) { UINT32 prevAlign; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -909,10 +965,12 @@ { if (!(dc = (DC *)GDI_GetObjPtr( hdc, METAFILE_DC_MAGIC ))) return 0; MF_MetaParam1( dc, META_SETTEXTALIGN, textAlign ); + GDI_HEAP_UNLOCK( hdc ); return 1; } prevAlign = dc->w.textAlign; dc->w.textAlign = textAlign; + GDI_HEAP_UNLOCK( hdc ); return prevAlign; } @@ -920,10 +978,11 @@ /*********************************************************************** * GetDCOrgEx (GDI32.168) */ -BOOL32 GetDCOrgEx( HDC32 hDC, LPPOINT32 lpp ) +BOOL32 WINAPI GetDCOrgEx( HDC32 hDC, LPPOINT32 lpp ) { - DC * dc = (DC *) GDI_GetObjPtr( hDC, DC_MAGIC ); - if (!dc || !lpp) return FALSE; + DC * dc; + if (!lpp) return FALSE; + if (!(dc = (DC *) GDI_GetObjPtr( hDC, DC_MAGIC ))) return FALSE; if (!(dc->w.flags & DC_MEMORY)) { @@ -935,6 +994,7 @@ } else lpp->x = lpp->y = 0; lpp->x += dc->w.DCOrgX; lpp->y += dc->w.DCOrgY; + GDI_HEAP_UNLOCK( hDC ); return TRUE; } @@ -942,7 +1002,7 @@ /*********************************************************************** * GetDCOrg (GDI.79) */ -DWORD GetDCOrg( HDC16 hdc ) +DWORD WINAPI GetDCOrg( HDC16 hdc ) { POINT32 pt; if( GetDCOrgEx( hdc, &pt) ) @@ -954,7 +1014,7 @@ /*********************************************************************** * SetDCOrg (GDI.117) */ -DWORD SetDCOrg( HDC16 hdc, INT16 x, INT16 y ) +DWORD WINAPI SetDCOrg( HDC16 hdc, INT16 x, INT16 y ) { DWORD prevOrg; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -962,6 +1022,7 @@ prevOrg = dc->w.DCOrgX | (dc->w.DCOrgY << 16); dc->w.DCOrgX = x; dc->w.DCOrgY = y; + GDI_HEAP_UNLOCK( hdc ); return prevOrg; } @@ -969,7 +1030,7 @@ /*********************************************************************** * SetDCHook (GDI.190) */ -BOOL16 SetDCHook( HDC16 hdc, FARPROC16 hookProc, DWORD dwHookData ) +BOOL16 WINAPI SetDCHook( HDC16 hdc, FARPROC16 hookProc, DWORD dwHookData ) { DC *dc = (DC *)GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -979,6 +1040,7 @@ if (!dc) return FALSE; dc->hookProc = hookProc; dc->dwHookData = dwHookData; + GDI_HEAP_UNLOCK( hdc ); return TRUE; } @@ -986,11 +1048,12 @@ /*********************************************************************** * GetDCHook (GDI.191) */ -DWORD GetDCHook( HDC16 hdc, FARPROC16 *phookProc ) +DWORD WINAPI GetDCHook( HDC16 hdc, FARPROC16 *phookProc ) { DC *dc = (DC *)GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return 0; *phookProc = dc->hookProc; + GDI_HEAP_UNLOCK( hdc ); return dc->dwHookData; } @@ -998,7 +1061,7 @@ /*********************************************************************** * SetHookFlags (GDI.192) */ -WORD SetHookFlags(HDC16 hDC, WORD flags) +WORD WINAPI SetHookFlags(HDC16 hDC, WORD flags) { DC* dc = (DC*)GDI_GetObjPtr( hDC, DC_MAGIC ); @@ -1016,6 +1079,7 @@ dc->w.flags |= DC_DIRTY; else if( flags & DCHF_VALIDATEVISRGN || !flags ) dc->w.flags &= ~DC_DIRTY; + GDI_HEAP_UNLOCK( hDC ); return wRet; } return 0;
diff --git a/objects/dcvalues.c b/objects/dcvalues.c index 9ea8221..df7de09 100644 --- a/objects/dcvalues.c +++ b/objects/dcvalues.c
@@ -10,7 +10,7 @@ #define DC_GET_VAL_16( func_type, func_name, dc_field ) \ -func_type func_name( HDC16 hdc ) \ +func_type WINAPI func_name( HDC16 hdc ) \ { \ DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); \ if (!dc) return 0; \ @@ -18,7 +18,7 @@ } #define DC_GET_VAL_32( func_type, func_name, dc_field ) \ -func_type func_name( HDC32 hdc ) \ +func_type WINAPI func_name( HDC32 hdc ) \ { \ DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); \ if (!dc) return 0; \ @@ -26,7 +26,7 @@ } #define DC_GET_X_Y( func_type, func_name, ret_x, ret_y ) \ -func_type func_name( HDC16 hdc ) \ +func_type WINAPI func_name( HDC16 hdc ) \ { \ DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); \ if (!dc) return 0; \ @@ -34,7 +34,7 @@ } #define DC_GET_VAL_EX( func_name, ret_x, ret_y ) \ -BOOL16 func_name##16( HDC16 hdc, LPPOINT16 pt ) \ +BOOL16 WINAPI func_name##16( HDC16 hdc, LPPOINT16 pt ) \ { \ DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); \ if (!dc) return FALSE; \ @@ -43,7 +43,7 @@ return TRUE; \ } \ \ -BOOL32 func_name##32( HDC32 hdc, LPPOINT32 pt ) \ +BOOL32 WINAPI func_name##32( HDC32 hdc, LPPOINT32 pt ) \ { \ DC * dc = (DC *) GDI_GetObjPtr( (HDC16)hdc, DC_MAGIC ); \ if (!dc) return FALSE; \ @@ -53,7 +53,7 @@ } #define DC_SET_MODE_16( func_name, dc_field, min_val, max_val, meta_func ) \ -INT16 func_name( HDC16 hdc, INT16 mode ) \ +INT16 WINAPI func_name( HDC16 hdc, INT16 mode ) \ { \ INT16 prevMode; \ DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); \ @@ -70,7 +70,7 @@ } #define DC_SET_MODE_32( func_name, dc_field, min_val, max_val, meta_func ) \ -INT32 func_name( HDC32 hdc, INT32 mode ) \ +INT32 WINAPI func_name( HDC32 hdc, INT32 mode ) \ { \ INT32 prevMode; \ DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); \
diff --git a/objects/dib.c b/objects/dib.c index 433cf71..9746225 100644 --- a/objects/dib.c +++ b/objects/dib.c
@@ -18,8 +18,31 @@ extern void CLIPPING_UpdateGCRegion(DC* ); -static int bitmapDepthTable[] = { 8, 1, 32, 16, 24, 15, 4, 0 }; -static int ximageDepthTable[] = { 0, 0, 0, 0, 0, 0, 0 }; +static int bitmapDepthTable[] = { 8, 1, 32, 16, 24, 15, 4, 0 }; +static int ximageDepthTable[] = { 0, 0, 0, 0, 0, 0, 0 }; + + +/* This structure holds the arguments for DIB_SetImageBits() */ +typedef struct +{ + DC *dc; + LPCVOID bits; + DWORD lines; + DWORD infoWidth; + WORD depth; + WORD infoBpp; + const BITMAPINFO *info; + WORD coloruse; + Drawable drawable; + GC gc; + int xSrc; + int ySrc; + int xDest; + int yDest; + int width; + int height; +} DIB_SETIMAGEBITS_DESCR; + /*********************************************************************** * DIB_Init @@ -152,7 +175,7 @@ * for a 24-bit deep bitmap. */ static int *DIB_BuildColorMap( DC *dc, WORD coloruse, WORD depth, - BITMAPINFO *info ) + const BITMAPINFO *info ) { int i, colors; BOOL32 isInfo; @@ -217,18 +240,20 @@ * * SetDIBits for a 1-bit deep DIB. */ -static void DIB_SetImageBits_1( DWORD lines, BYTE *bits, DWORD width, +static void DIB_SetImageBits_1( DWORD lines, const BYTE *srcbits, + DWORD srcwidth, DWORD dstwidth, int *colors, XImage *bmpImage ) { DWORD i, x; - BYTE pad, pix; + BYTE pix; + const BYTE *bits = srcbits; - if (!(width & 31)) pad = 0; - else pad = ((32 - (width & 31)) + 7) / 8; + /* 32 bit aligned */ + DWORD linebytes = ((srcwidth + 31) & ~31) / 8; while (lines--) { - for (i = width/8, x = 0; (i > 0); i--) + for (i = dstwidth/8, x = 0; (i > 0); i--) { pix = *bits++; XPutPixel( bmpImage, x++, lines, colors[pix >> 7] ); @@ -241,7 +266,7 @@ XPutPixel( bmpImage, x++, lines, colors[pix & 1] ); } pix = *bits; - switch(width & 7) + switch(dstwidth & 7) { case 7: XPutPixel( bmpImage, x++, lines, colors[pix >> 7] ); pix <<= 1; case 6: XPutPixel( bmpImage, x++, lines, colors[pix >> 7] ); pix <<= 1; @@ -251,7 +276,8 @@ case 2: XPutPixel( bmpImage, x++, lines, colors[pix >> 7] ); pix <<= 1; case 1: XPutPixel( bmpImage, x++, lines, colors[pix >> 7] ); } - bits += pad; + srcbits += linebytes; + bits = srcbits; } } @@ -261,25 +287,27 @@ * * SetDIBits for a 4-bit deep DIB. */ -static void DIB_SetImageBits_4( DWORD lines, BYTE *bits, DWORD width, +static void DIB_SetImageBits_4( DWORD lines, const BYTE *srcbits, + DWORD srcwidth, DWORD dstwidth, int *colors, XImage *bmpImage ) { DWORD i, x; - BYTE pad; - - if (!(width & 7)) pad = 0; - else pad = ((8 - (width & 7)) + 1) / 2; + const BYTE *bits = srcbits; + + /* 32 bit aligned */ + DWORD linebytes = ((srcwidth+7)&~7)/2; while (lines--) { - for (i = width/2, x = 0; i > 0; i--) + for (i = srcwidth/2, x = 0; i > 0; i--) { BYTE pix = *bits++; XPutPixel( bmpImage, x++, lines, colors[pix >> 4] ); XPutPixel( bmpImage, x++, lines, colors[pix & 0x0f] ); } - if (width & 1) XPutPixel( bmpImage, x, lines, colors[*bits >> 4] ); - bits += pad; + if (srcwidth & 1) XPutPixel( bmpImage, x, lines, colors[*bits >> 4] ); + srcbits += linebytes; + bits = srcbits; } } @@ -295,11 +323,11 @@ * * SetDIBits for a 4-bit deep compressed DIB. */ -static void DIB_SetImageBits_RLE4( DWORD lines, BYTE *bits, DWORD width, - int *colors, XImage *bmpImage ) +static void DIB_SetImageBits_RLE4( DWORD lines, const BYTE *bits, DWORD width, + DWORD dstwidth, int *colors, XImage *bmpImage ) { int x = 0, c, length; - BYTE *begin = bits; + const BYTE *begin = bits; lines--; while ((int)lines >= 0) @@ -355,17 +383,22 @@ * * SetDIBits for an 8-bit deep DIB. */ -static void DIB_SetImageBits_8( DWORD lines, BYTE *bits, DWORD width, +static void DIB_SetImageBits_8( DWORD lines, const BYTE *srcbits, + DWORD srcwidth, DWORD dstwidth, int *colors, XImage *bmpImage ) { DWORD x; - BYTE pad = (4 - (width & 3)) & 3; + const BYTE *bits = srcbits; + + /* align to 32 bit */ + DWORD linebytes = (srcwidth + 3) & ~3; while (lines--) { - for (x = 0; x < width; x++) + for (x = 0; x < dstwidth; x++) XPutPixel( bmpImage, x, lines, colors[*bits++] ); - bits += pad; + srcbits += linebytes; + bits = srcbits; } } @@ -400,12 +433,12 @@ RleDelta = 2 /* Delta */ }; -static void DIB_SetImageBits_RLE8( DWORD lines, BYTE *bits, DWORD width, - int *colors, XImage *bmpImage ) +static void DIB_SetImageBits_RLE8( DWORD lines, const BYTE *bits, DWORD width, + DWORD dstwidth, int *colors, XImage *bmpImage ) { int x; /* X-positon on each line. Increases. */ int line; /* Line #. Starts at lines-1, decreases */ - BYTE *pIn = bits; /* Pointer to current position in bits */ + const BYTE *pIn = bits; /* Pointer to current position in bits */ BYTE length; /* The length pf a run */ BYTE color_index; /* index into colors[] as read from bits */ BYTE escape_code; /* See enum Rle8_EscapeCodes.*/ @@ -553,21 +586,25 @@ * * SetDIBits for a 24-bit deep DIB. */ -static void DIB_SetImageBits_24( DWORD lines, BYTE *bits, DWORD width, +static void DIB_SetImageBits_24( DWORD lines, const BYTE *srcbits, + DWORD srcwidth, DWORD dstwidth, DC *dc, XImage *bmpImage ) { DWORD x; - BYTE pad = (4 - ((width*3) & 3)) & 3; + const BYTE *bits = srcbits; + + /* align to 32 bit */ + DWORD linebytes = (srcwidth * 3 + 3) & ~3; /* "bits" order is reversed for some reason */ while (lines--) { - for (x = 0; x < width; x++, bits += 3) + for (x = 0; x < dstwidth; x++, bits += 3) XPutPixel( bmpImage, x, lines, COLOR_ToPhysical(dc, RGB(bits[2],bits[1],bits[0])) ); - bits += pad; + bits = (srcbits += linebytes); } } @@ -578,70 +615,68 @@ * Transfer the bits to an X image. * Helper function for SetDIBits() and SetDIBitsToDevice(). */ -static int DIB_SetImageBits( DC *dc, DWORD lines, WORD depth, LPSTR bits, - DWORD infoWidth, WORD infoBpp, - BITMAPINFO *info, WORD coloruse, - Drawable drawable, GC gc, int xSrc, int ySrc, - int xDest, int yDest, int width, int height ) +static int DIB_SetImageBits( const DIB_SETIMAGEBITS_DESCR *descr ) { int *colorMapping; XImage *bmpImage; DWORD compression = 0; - if (info->bmiHeader.biSize == sizeof(BITMAPINFOHEADER)) - compression = info->bmiHeader.biCompression; + if (descr->info->bmiHeader.biSize == sizeof(BITMAPINFOHEADER)) + compression = descr->info->bmiHeader.biCompression; /* Build the color mapping table */ - if (infoBpp > 8) { - colorMapping = NULL; - } else { - if (!(colorMapping = DIB_BuildColorMap( dc, coloruse, depth, info ))) - return 0; - } + if (descr->infoBpp > 8) colorMapping = NULL; + else if (!(colorMapping = DIB_BuildColorMap( descr->dc, descr->coloruse, + descr->depth, descr->info ))) + return 0; - if( dc->w.flags & DC_DIRTY ) CLIPPING_UpdateGCRegion(dc); + if( descr->dc->w.flags & DC_DIRTY ) CLIPPING_UpdateGCRegion(descr->dc); /* Transfer the pixels */ - XCREATEIMAGE(bmpImage, infoWidth, lines, depth ); + XCREATEIMAGE(bmpImage, descr->infoWidth, descr->lines, descr->depth ); - switch(infoBpp) + switch(descr->infoBpp) { case 1: - DIB_SetImageBits_1( lines, bits, infoWidth, - colorMapping, bmpImage ); + DIB_SetImageBits_1( descr->lines, descr->bits, descr->infoWidth, + descr->width, colorMapping, bmpImage ); break; case 4: - if (compression) DIB_SetImageBits_RLE4( lines, bits, infoWidth, + if (compression) DIB_SetImageBits_RLE4( descr->lines, descr->bits, + descr->infoWidth, descr->width, colorMapping, bmpImage ); - else DIB_SetImageBits_4( lines, bits, infoWidth, - colorMapping, bmpImage ); + else DIB_SetImageBits_4( descr->lines, descr->bits, descr->infoWidth, + descr->width, colorMapping, bmpImage ); break; case 8: - if (compression) DIB_SetImageBits_RLE8( lines, bits, infoWidth, + if (compression) DIB_SetImageBits_RLE8( descr->lines, descr->bits, + descr->infoWidth, descr->width, colorMapping, bmpImage ); - else DIB_SetImageBits_8( lines, bits, infoWidth, - colorMapping, bmpImage ); + else DIB_SetImageBits_8( descr->lines, descr->bits, descr->infoWidth, + descr->width, colorMapping, bmpImage ); break; case 24: - DIB_SetImageBits_24( lines, bits, infoWidth, dc, bmpImage ); + DIB_SetImageBits_24( descr->lines, descr->bits, descr->infoWidth, + descr->width, descr->dc, bmpImage ); break; default: - fprintf( stderr, "Invalid depth %d for SetDIBits!\n", infoBpp ); + fprintf( stderr, "Invalid depth %d for SetDIBits!\n", descr->infoBpp ); break; } if (colorMapping) free(colorMapping); - XPutImage( display, drawable, gc, bmpImage, xSrc, ySrc, - xDest, yDest, width, height ); + XPutImage( display, descr->drawable, descr->gc, bmpImage, + descr->xSrc, descr->ySrc, descr->xDest, descr->yDest, + descr->width, descr->height ); XDestroyImage( bmpImage ); - return lines; + return descr->lines; } /*********************************************************************** * StretchDIBits16 (GDI.439) */ -INT16 StretchDIBits16( HDC16 hdc, INT16 xDst, INT16 yDst, INT16 widthDst, +INT16 WINAPI StretchDIBits16(HDC16 hdc, INT16 xDst, INT16 yDst, INT16 widthDst, INT16 heightDst, INT16 xSrc, INT16 ySrc, INT16 widthSrc, INT16 heightSrc, const VOID *bits, const BITMAPINFO *info, UINT16 wUsage, DWORD dwRop ) @@ -655,7 +690,7 @@ /*********************************************************************** * StretchDIBits32 (GDI32.351) */ -INT32 StretchDIBits32( HDC32 hdc, INT32 xDst, INT32 yDst, INT32 widthDst, +INT32 WINAPI StretchDIBits32(HDC32 hdc, INT32 xDst, INT32 yDst, INT32 widthDst, INT32 heightDst, INT32 xSrc, INT32 ySrc, INT32 widthSrc, INT32 heightSrc, const void *bits, const BITMAPINFO *info, UINT32 wUsage, DWORD dwRop ) @@ -679,9 +714,9 @@ /*********************************************************************** * SetDIBits16 (GDI.440) */ -INT16 SetDIBits16( HDC16 hdc, HBITMAP16 hbitmap, UINT16 startscan, - UINT16 lines, LPCVOID bits, const BITMAPINFO *info, - UINT16 coloruse ) +INT16 WINAPI SetDIBits16( HDC16 hdc, HBITMAP16 hbitmap, UINT16 startscan, + UINT16 lines, LPCVOID bits, const BITMAPINFO *info, + UINT16 coloruse ) { return SetDIBits32( hdc, hbitmap, startscan, lines, bits, info, coloruse ); } @@ -690,43 +725,68 @@ /*********************************************************************** * SetDIBits32 (GDI32.312) */ -INT32 SetDIBits32( HDC32 hdc, HBITMAP32 hbitmap, UINT32 startscan, - UINT32 lines, LPCVOID bits, const BITMAPINFO *info, - UINT32 coloruse ) +INT32 WINAPI SetDIBits32( HDC32 hdc, HBITMAP32 hbitmap, UINT32 startscan, + UINT32 lines, LPCVOID bits, const BITMAPINFO *info, + UINT32 coloruse ) { - DC * dc; + DIB_SETIMAGEBITS_DESCR descr; BITMAPOBJ * bmp; - DWORD width, height; - WORD bpp; + DWORD height; + INT32 result; /* Check parameters */ - dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); - if (!dc) + descr.dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); + if (!descr.dc) { - dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC); - if (!dc) return 0; + descr.dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC); + if (!descr.dc) return 0; } if (!(bmp = (BITMAPOBJ *)GDI_GetObjPtr( hbitmap, BITMAP_MAGIC ))) - return 0; - if (DIB_GetBitmapInfo( &info->bmiHeader, &width, &height, &bpp ) == -1) + { + GDI_HEAP_UNLOCK( hdc ); return 0; - if (!lines || (startscan >= (WORD)height)) return 0; + } + if (DIB_GetBitmapInfo( &info->bmiHeader, &descr.infoWidth, &height, + &descr.infoBpp ) == -1) + { + GDI_HEAP_UNLOCK( hbitmap ); + GDI_HEAP_UNLOCK( hdc ); + return 0; + } + if (!lines || (startscan >= height)) + { + GDI_HEAP_UNLOCK( hbitmap ); + GDI_HEAP_UNLOCK( hdc ); + return 0; + } if (startscan + lines > height) lines = height - startscan; - return CallTo32_LargeStack( (int(*)())DIB_SetImageBits, 16, - dc, lines, bmp->bitmap.bmBitsPixel, - bits, width, bpp, info, - coloruse, bmp->pixmap, BITMAP_GC(bmp), 0, 0, 0, - height - startscan - lines, - bmp->bitmap.bmWidth, lines ); + descr.bits = bits; + descr.lines = lines; + descr.depth = bmp->bitmap.bmBitsPixel; + descr.info = info; + descr.coloruse = coloruse; + descr.drawable = bmp->pixmap; + descr.gc = BITMAP_GC(bmp); + descr.xSrc = 0; + descr.ySrc = 0; + descr.xDest = 0; + descr.yDest = height - startscan - lines; + descr.width = bmp->bitmap.bmWidth; + descr.height = lines; + + result = CALL_LARGE_STACK( DIB_SetImageBits, &descr ); + GDI_HEAP_UNLOCK( hdc ); + GDI_HEAP_UNLOCK( hbitmap ); + return result; } /*********************************************************************** * SetDIBitsToDevice16 (GDI.443) */ -INT16 SetDIBitsToDevice16( HDC16 hdc, INT16 xDest, INT16 yDest, INT16 cx, +INT16 WINAPI SetDIBitsToDevice16(HDC16 hdc, INT16 xDest, INT16 yDest, INT16 cx, INT16 cy, INT16 xSrc, INT16 ySrc, UINT16 startscan, UINT16 lines, LPCVOID bits, const BITMAPINFO *info, UINT16 coloruse ) @@ -739,14 +799,14 @@ /*********************************************************************** * SetDIBitsToDevice32 (GDI32.313) */ -INT32 SetDIBitsToDevice32( HDC32 hdc, INT32 xDest, INT32 yDest, DWORD cx, +INT32 WINAPI SetDIBitsToDevice32(HDC32 hdc, INT32 xDest, INT32 yDest, DWORD cx, DWORD cy, INT32 xSrc, INT32 ySrc, UINT32 startscan, UINT32 lines, LPCVOID bits, const BITMAPINFO *info, UINT32 coloruse ) { + DIB_SETIMAGEBITS_DESCR descr; DC * dc; DWORD width, height; - WORD bpp; /* Check parameters */ @@ -756,7 +816,8 @@ dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC); if (!dc) return 0; } - if (DIB_GetBitmapInfo( &info->bmiHeader, &width, &height, &bpp ) == -1) + if (DIB_GetBitmapInfo( &info->bmiHeader, &width, + &height, &descr.infoBpp ) == -1) return 0; if (!lines || (startscan >= height)) return 0; if (startscan + lines > height) lines = height - startscan; @@ -769,14 +830,24 @@ DC_SetupGCForText( dc ); /* To have the correct colors */ XSetFunction( display, dc->u.x.gc, DC_XROPfunction[dc->w.ROPmode-1] ); - return CallTo32_LargeStack( (int(*)())DIB_SetImageBits, 16, - dc, lines, dc->w.bitsPerPixel, bits, width, - bpp, info, coloruse, - dc->u.x.drawable, dc->u.x.gc, - xSrc, ySrc - startscan, - dc->w.DCOrgX + XLPTODP( dc, xDest ), - dc->w.DCOrgY + YLPTODP( dc, yDest ), - cx, cy ); + + descr.dc = dc; + descr.bits = bits; + descr.lines = lines; + descr.infoWidth = width; + descr.depth = dc->w.bitsPerPixel; + descr.info = info; + descr.coloruse = coloruse; + descr.drawable = dc->u.x.drawable; + descr.gc = dc->u.x.gc; + descr.xSrc = xSrc; + descr.ySrc = ySrc - startscan; + descr.xDest = dc->w.DCOrgX + XLPTODP( dc, xDest ); + descr.yDest = dc->w.DCOrgY + YLPTODP( dc, yDest ); + descr.width = cx; + descr.height = cy; + + return CALL_LARGE_STACK( DIB_SetImageBits, &descr ); } @@ -784,9 +855,9 @@ /*********************************************************************** * GetDIBits16 (GDI.441) */ -INT16 GetDIBits16( HDC16 hdc, HBITMAP16 hbitmap, UINT16 startscan, - UINT16 lines, LPSTR bits, BITMAPINFO * info, - UINT16 coloruse ) +INT16 WINAPI GetDIBits16( HDC16 hdc, HBITMAP16 hbitmap, UINT16 startscan, + UINT16 lines, LPSTR bits, BITMAPINFO * info, + UINT16 coloruse ) { return GetDIBits32( hdc, hbitmap, startscan, lines, bits, info, coloruse ); } @@ -797,9 +868,9 @@ * * http://www.microsoft.com/msdn/sdk/platforms/doc/sdk/win32/func/src/f30_14.htm */ -INT32 GetDIBits32( HDC32 hdc, HBITMAP32 hbitmap, UINT32 startscan, - UINT32 lines, LPSTR bits, BITMAPINFO * info, - UINT32 coloruse ) +INT32 WINAPI GetDIBits32( HDC32 hdc, HBITMAP32 hbitmap, UINT32 startscan, + UINT32 lines, LPSTR bits, BITMAPINFO * info, + UINT32 coloruse ) { DC * dc; BITMAPOBJ * bmp; @@ -818,7 +889,10 @@ if (!(bmp = (BITMAPOBJ *)GDI_GetObjPtr( hbitmap, BITMAP_MAGIC ))) return 0; if (!(palette = (PALETTEOBJ*)GDI_GetObjPtr( dc->w.hPalette, PALETTE_MAGIC ))) - return 0; + { + GDI_HEAP_UNLOCK( hbitmap ); + return 0; + } /* Transfer color info */ @@ -851,7 +925,11 @@ if( lines > info->bmiHeader.biHeight ) lines = info->bmiHeader.biHeight; yend = startscan + lines; if( startscan >= bmp->bitmap.bmHeight ) - return FALSE; + { + GDI_HEAP_UNLOCK( hbitmap ); + GDI_HEAP_UNLOCK( dc->w.hPalette ); + return FALSE; + } if( yend > bmp->bitmap.bmHeight ) yend = bmp->bitmap.bmHeight; /* adjust scanline width */ @@ -861,12 +939,11 @@ { /* bitmap is wider than DIB, copy only a part */ - pad = 0; xend = info->bmiHeader.biWidth; + pad = 0; + xend = info->bmiHeader.biWidth; } - bmpImage = (XImage *)CallTo32_LargeStack( (int (*)())XGetImage, 8, - display, bmp->pixmap, 0, 0, bmp->bitmap.bmWidth, - bmp->bitmap.bmHeight, AllPlanes, ZPixmap ); + bmpImage = (XImage *)CALL_LARGE_STACK( BITMAP_GetXImage, bmp ); switch( info->bmiHeader.biBitCount ) { @@ -965,6 +1042,8 @@ info->bmiHeader.biCompression = 0; } + GDI_HEAP_UNLOCK( hbitmap ); + GDI_HEAP_UNLOCK( dc->w.hPalette ); return lines; } @@ -972,7 +1051,7 @@ /*********************************************************************** * CreateDIBitmap16 (GDI.442) */ -HBITMAP16 CreateDIBitmap16( HDC16 hdc, const BITMAPINFOHEADER * header, +HBITMAP16 WINAPI CreateDIBitmap16( HDC16 hdc, const BITMAPINFOHEADER * header, DWORD init, LPCVOID bits, const BITMAPINFO * data, UINT16 coloruse ) { @@ -983,7 +1062,7 @@ /*********************************************************************** * CreateDIBitmap32 (GDI32.37) */ -HBITMAP32 CreateDIBitmap32( HDC32 hdc, const BITMAPINFOHEADER *header, +HBITMAP32 WINAPI CreateDIBitmap32( HDC32 hdc, const BITMAPINFOHEADER *header, DWORD init, LPCVOID bits, const BITMAPINFO *data, UINT32 coloruse ) {
diff --git a/objects/font.c b/objects/font.c index 75dcf63..216962f 100644 --- a/objects/font.c +++ b/objects/font.c
@@ -177,7 +177,7 @@ /*********************************************************************** * CreateFontIndirect16 (GDI.57) */ -HFONT16 CreateFontIndirect16( const LOGFONT16 *font ) +HFONT16 WINAPI CreateFontIndirect16( const LOGFONT16 *font ) { HFONT16 hFont = 0; @@ -187,7 +187,7 @@ if( hFont ) { FONTOBJ* fontPtr; - fontPtr = (FONTOBJ *) GDI_HEAP_LIN_ADDR( hFont ); + fontPtr = (FONTOBJ *) GDI_HEAP_LOCK( hFont ); memcpy( &fontPtr->logfont, font, sizeof(LOGFONT16) ); dprintf_font(stddeb,"CreateFontIndirect(%i %i) '%s' %s %s => %04x\n", @@ -196,6 +196,7 @@ font->lfWeight > 400 ? "Bold" : "", font->lfItalic ? "Italic" : "", hFont); + GDI_HEAP_UNLOCK( hFont ); } } else fprintf(stderr,"CreateFontIndirect(NULL) => NULL\n"); @@ -206,7 +207,7 @@ /*********************************************************************** * CreateFontIndirect32A (GDI32.44) */ -HFONT32 CreateFontIndirect32A( const LOGFONT32A *font ) +HFONT32 WINAPI CreateFontIndirect32A( const LOGFONT32A *font ) { LOGFONT16 font16; @@ -217,7 +218,7 @@ /*********************************************************************** * CreateFontIndirect32W (GDI32.45) */ -HFONT32 CreateFontIndirect32W( const LOGFONT32W *font ) +HFONT32 WINAPI CreateFontIndirect32W( const LOGFONT32W *font ) { LOGFONT16 font16; @@ -228,10 +229,11 @@ /*********************************************************************** * CreateFont16 (GDI.56) */ -HFONT16 CreateFont16( INT16 height, INT16 width, INT16 esc, INT16 orient, - INT16 weight, BYTE italic, BYTE underline, - BYTE strikeout, BYTE charset, BYTE outpres, - BYTE clippres, BYTE quality, BYTE pitch, LPCSTR name ) +HFONT16 WINAPI CreateFont16(INT16 height, INT16 width, INT16 esc, INT16 orient, + INT16 weight, BYTE italic, BYTE underline, + BYTE strikeout, BYTE charset, BYTE outpres, + BYTE clippres, BYTE quality, BYTE pitch, + LPCSTR name ) { LOGFONT16 logfont = { height, width, esc, orient, weight, italic, underline, strikeout, charset, outpres, clippres, quality, pitch, }; @@ -247,10 +249,11 @@ /************************************************************************* * CreateFont32A (GDI32.43) */ -HFONT32 CreateFont32A( INT32 height, INT32 width, INT32 esc, INT32 orient, - INT32 weight, DWORD italic, DWORD underline, - DWORD strikeout, DWORD charset, DWORD outpres, - DWORD clippres, DWORD quality, DWORD pitch, LPCSTR name) +HFONT32 WINAPI CreateFont32A( INT32 height, INT32 width, INT32 esc, + INT32 orient, INT32 weight, DWORD italic, + DWORD underline, DWORD strikeout, DWORD charset, + DWORD outpres, DWORD clippres, DWORD quality, + DWORD pitch, LPCSTR name ) { return (HFONT32)CreateFont16( height, width, esc, orient, weight, italic, underline, strikeout, charset, outpres, @@ -260,11 +263,11 @@ /************************************************************************* * CreateFont32W (GDI32.46) */ -HFONT32 CreateFont32W( INT32 height, INT32 width, INT32 esc, INT32 orient, - INT32 weight, DWORD italic, DWORD underline, - DWORD strikeout, DWORD charset, DWORD outpres, - DWORD clippres, DWORD quality, DWORD pitch, - LPCWSTR name ) +HFONT32 WINAPI CreateFont32W( INT32 height, INT32 width, INT32 esc, + INT32 orient, INT32 weight, DWORD italic, + DWORD underline, DWORD strikeout, DWORD charset, + DWORD outpres, DWORD clippres, DWORD quality, + DWORD pitch, LPCWSTR name ) { LPSTR namea = HEAP_strdupWtoA( GetProcessHeap(), 0, name ); HFONT32 ret = (HFONT32)CreateFont16( height, width, esc, orient, weight, @@ -358,7 +361,9 @@ /*********************************************************************** * EnumFontFamiliesEx16 (GDI.613) */ -INT16 EnumFontFamiliesEx16( HDC16 hDC, LPLOGFONT16 plf, FONTENUMPROCEX16 efproc, LPARAM lParam, DWORD dwFlags) +INT16 WINAPI EnumFontFamiliesEx16( HDC16 hDC, LPLOGFONT16 plf, + FONTENUMPROCEX16 efproc, LPARAM lParam, + DWORD dwFlags) { INT16 retVal = 0; DC* dc = (DC*) GDI_GetObjPtr( hDC, DC_MAGIC ); @@ -419,8 +424,9 @@ /*********************************************************************** * EnumFontFamiliesEx32W (GDI32.82) */ -INT32 EnumFontFamiliesEx32W( HDC32 hDC, LPLOGFONT32W plf, FONTENUMPROCEX32W efproc, - LPARAM lParam, DWORD dwFlags ) +INT32 WINAPI EnumFontFamiliesEx32W( HDC32 hDC, LPLOGFONT32W plf, + FONTENUMPROCEX32W efproc, + LPARAM lParam, DWORD dwFlags ) { return FONT_EnumFontFamiliesEx32( hDC, plf, (FONTENUMPROC32W)efproc, lParam, ENUM_UNICODE ); @@ -429,8 +435,9 @@ /*********************************************************************** * EnumFontFamiliesEx32A (GDI32.81) */ -INT32 EnumFontFamiliesEx32A( HDC32 hDC, LPLOGFONT32A plf, FONTENUMPROCEX32A efproc, - LPARAM lParam, DWORD dwFlags) +INT32 WINAPI EnumFontFamiliesEx32A( HDC32 hDC, LPLOGFONT32A plf, + FONTENUMPROCEX32A efproc, + LPARAM lParam, DWORD dwFlags) { return FONT_EnumFontFamiliesEx32( hDC, (LPLOGFONT32W)plf, (FONTENUMPROC32W)efproc, lParam, 0); @@ -439,7 +446,8 @@ /*********************************************************************** * EnumFontFamilies16 (GDI.330) */ -INT16 EnumFontFamilies16( HDC16 hDC, LPCSTR lpFamily, FONTENUMPROC16 efproc, LPARAM lpData ) +INT16 WINAPI EnumFontFamilies16( HDC16 hDC, LPCSTR lpFamily, + FONTENUMPROC16 efproc, LPARAM lpData ) { LOGFONT16 lf; @@ -453,7 +461,8 @@ /*********************************************************************** * EnumFontFamilies32A (GDI32.80) */ -INT32 EnumFontFamilies32A( HDC32 hDC, LPCSTR lpFamily, FONTENUMPROC32A efproc, LPARAM lpData ) +INT32 WINAPI EnumFontFamilies32A( HDC32 hDC, LPCSTR lpFamily, + FONTENUMPROC32A efproc, LPARAM lpData ) { LOGFONT32A lf; @@ -468,7 +477,8 @@ /*********************************************************************** * EnumFontFamilies32W (GDI32.83) */ -INT32 EnumFontFamilies32W( HDC32 hDC, LPCWSTR lpFamily, FONTENUMPROC32W efproc, LPARAM lpData ) +INT32 WINAPI EnumFontFamilies32W( HDC32 hDC, LPCWSTR lpFamily, + FONTENUMPROC32W efproc, LPARAM lpData ) { LOGFONT32W lf; @@ -482,7 +492,8 @@ /*********************************************************************** * EnumFonts16 (GDI.70) */ -INT16 EnumFonts16( HDC16 hDC, LPCSTR lpName, FONTENUMPROC16 efproc, LPARAM lpData ) +INT16 WINAPI EnumFonts16( HDC16 hDC, LPCSTR lpName, FONTENUMPROC16 efproc, + LPARAM lpData ) { return EnumFontFamilies16( hDC, lpName, (FONTENUMPROCEX16)efproc, lpData ); } @@ -490,7 +501,8 @@ /*********************************************************************** * EnumFonts32A (GDI32.84) */ -INT32 EnumFonts32A( HDC32 hDC, LPCSTR lpName, FONTENUMPROC32A efproc, LPARAM lpData ) +INT32 WINAPI EnumFonts32A( HDC32 hDC, LPCSTR lpName, FONTENUMPROC32A efproc, + LPARAM lpData ) { return EnumFontFamilies32A( hDC, lpName, efproc, lpData ); } @@ -498,7 +510,8 @@ /*********************************************************************** * EnumFonts32W (GDI32.85) */ -INT32 EnumFonts32W( HDC32 hDC, LPCWSTR lpName, FONTENUMPROC32W efproc, LPARAM lpData ) +INT32 WINAPI EnumFonts32W( HDC32 hDC, LPCWSTR lpName, FONTENUMPROC32W efproc, + LPARAM lpData ) { return EnumFontFamilies32W( hDC, lpName, efproc, lpData ); } @@ -507,7 +520,7 @@ /*********************************************************************** * GetTextCharacterExtra16 (GDI.89) */ -INT16 GetTextCharacterExtra16( HDC16 hdc ) +INT16 WINAPI GetTextCharacterExtra16( HDC16 hdc ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return 0; @@ -519,7 +532,7 @@ /*********************************************************************** * GetTextCharacterExtra32 (GDI32.225) */ -INT32 GetTextCharacterExtra32( HDC32 hdc ) +INT32 WINAPI GetTextCharacterExtra32( HDC32 hdc ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return 0; @@ -531,7 +544,7 @@ /*********************************************************************** * SetTextCharacterExtra16 (GDI.8) */ -INT16 SetTextCharacterExtra16( HDC16 hdc, INT16 extra ) +INT16 WINAPI SetTextCharacterExtra16( HDC16 hdc, INT16 extra ) { return (INT16)SetTextCharacterExtra32( hdc, extra ); } @@ -540,7 +553,7 @@ /*********************************************************************** * SetTextCharacterExtra32 (GDI32.337) */ -INT32 SetTextCharacterExtra32( HDC32 hdc, INT32 extra ) +INT32 WINAPI SetTextCharacterExtra32( HDC32 hdc, INT32 extra ) { INT32 prev; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -555,7 +568,7 @@ /*********************************************************************** * SetTextJustification16 (GDI.10) */ -INT16 SetTextJustification16( HDC16 hdc, INT16 extra, INT16 breaks ) +INT16 WINAPI SetTextJustification16( HDC16 hdc, INT16 extra, INT16 breaks ) { return SetTextJustification32( hdc, extra, breaks ); } @@ -564,7 +577,7 @@ /*********************************************************************** * SetTextJustification32 (GDI32.339) */ -BOOL32 SetTextJustification32( HDC32 hdc, INT32 extra, INT32 breaks ) +BOOL32 WINAPI SetTextJustification32( HDC32 hdc, INT32 extra, INT32 breaks ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return 0; @@ -590,7 +603,7 @@ /*********************************************************************** * GetTextFace16 (GDI.92) */ -INT16 GetTextFace16( HDC16 hdc, INT16 count, LPSTR name ) +INT16 WINAPI GetTextFace16( HDC16 hdc, INT16 count, LPSTR name ) { return GetTextFace32A(hdc,count,name); } @@ -598,7 +611,7 @@ /*********************************************************************** * GetTextFace32A (GDI32.234) */ -INT32 GetTextFace32A( HDC32 hdc, INT32 count, LPSTR name ) +INT32 WINAPI GetTextFace32A( HDC32 hdc, INT32 count, LPSTR name ) { FONTOBJ *font; @@ -607,13 +620,14 @@ if (!(font = (FONTOBJ *) GDI_GetObjPtr( dc->w.hFont, FONT_MAGIC ))) return 0; lstrcpyn32A( name, font->logfont.lfFaceName, count ); + GDI_HEAP_UNLOCK( dc->w.hFont ); return strlen(name); } /*********************************************************************** * GetTextFace32W (GDI32.235) */ -INT32 GetTextFace32W( HDC32 hdc, INT32 count, LPWSTR name ) +INT32 WINAPI GetTextFace32W( HDC32 hdc, INT32 count, LPWSTR name ) { LPSTR nameA = HeapAlloc( GetProcessHeap(), 0, count ); INT32 res = GetTextFace32A(hdc,count,nameA); @@ -626,7 +640,7 @@ /*********************************************************************** * GetTextExtent (GDI.91) */ -DWORD GetTextExtent( HDC16 hdc, LPCSTR str, INT16 count ) +DWORD WINAPI GetTextExtent( HDC16 hdc, LPCSTR str, INT16 count ) { SIZE16 size; if (!GetTextExtentPoint16( hdc, str, count, &size )) return 0; @@ -641,7 +655,8 @@ * Original Windows versions of GetTextExtentPoint{A,W} have documented * bugs. */ -BOOL16 GetTextExtentPoint16( HDC16 hdc, LPCSTR str, INT16 count, LPSIZE16 size) +BOOL16 WINAPI GetTextExtentPoint16( HDC16 hdc, LPCSTR str, INT16 count, + LPSIZE16 size ) { SIZE32 size32; BOOL32 ret = GetTextExtentPoint32A( hdc, str, count, &size32 ); @@ -653,8 +668,8 @@ /*********************************************************************** * GetTextExtentPoint32A (GDI32.230) */ -BOOL32 GetTextExtentPoint32A( HDC32 hdc, LPCSTR str, INT32 count, - LPSIZE32 size ) +BOOL32 WINAPI GetTextExtentPoint32A( HDC32 hdc, LPCSTR str, INT32 count, + LPSIZE32 size ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) @@ -676,8 +691,8 @@ /*********************************************************************** * GetTextExtentPoint32W (GDI32.231) */ -BOOL32 GetTextExtentPoint32W( HDC32 hdc, LPCWSTR str, INT32 count, - LPSIZE32 size ) +BOOL32 WINAPI GetTextExtentPoint32W( HDC32 hdc, LPCWSTR str, INT32 count, + LPSIZE32 size ) { LPSTR p = HEAP_strdupWtoA( GetProcessHeap(), 0, str ); BOOL32 ret = GetTextExtentPoint32A( hdc, p, count, size ); @@ -689,8 +704,8 @@ /*********************************************************************** * GetTextExtentPoint32ABuggy (GDI32.232) */ -BOOL32 GetTextExtentPoint32ABuggy( HDC32 hdc, LPCSTR str, INT32 count, - LPSIZE32 size ) +BOOL32 WINAPI GetTextExtentPoint32ABuggy( HDC32 hdc, LPCSTR str, INT32 count, + LPSIZE32 size ) { dprintf_font( stddeb, "GetTextExtentPoint32ABuggy: not bug compatible.\n"); return GetTextExtentPoint32A( hdc, str, count, size ); @@ -699,8 +714,8 @@ /*********************************************************************** * GetTextExtentPoint32WBuggy (GDI32.233) */ -BOOL32 GetTextExtentPoint32WBuggy( HDC32 hdc, LPCWSTR str, INT32 count, - LPSIZE32 size ) +BOOL32 WINAPI GetTextExtentPoint32WBuggy( HDC32 hdc, LPCWSTR str, INT32 count, + LPSIZE32 size ) { dprintf_font( stddeb, "GetTextExtentPoint32WBuggy: not bug compatible.\n"); return GetTextExtentPoint32W( hdc, str, count, size ); @@ -710,9 +725,9 @@ /*********************************************************************** * GetTextExtentExPoint32A (GDI32.228) */ -BOOL32 GetTextExtentExPoint32A( HDC32 hdc, LPCSTR str, INT32 count, - INT32 maxExt,LPINT32 lpnFit, LPINT32 alpDx, - LPSIZE32 size ) +BOOL32 WINAPI GetTextExtentExPoint32A( HDC32 hdc, LPCSTR str, INT32 count, + INT32 maxExt, LPINT32 lpnFit, + LPINT32 alpDx, LPSIZE32 size ) { int index, nFit, extent; SIZE32 tSize; @@ -752,9 +767,9 @@ * GetTextExtentExPoint32W (GDI32.229) */ -BOOL32 GetTextExtentExPoint32W( HDC32 hdc, LPCWSTR str, INT32 count, - INT32 maxExt, LPINT32 lpnFit, LPINT32 alpDx, - LPSIZE32 size ) +BOOL32 WINAPI GetTextExtentExPoint32W( HDC32 hdc, LPCWSTR str, INT32 count, + INT32 maxExt, LPINT32 lpnFit, + LPINT32 alpDx, LPSIZE32 size ) { LPSTR p = HEAP_strdupWtoA( GetProcessHeap(), 0, str ); BOOL32 ret = GetTextExtentExPoint32A( hdc, p, count, maxExt, @@ -766,7 +781,7 @@ /*********************************************************************** * GetTextMetrics16 (GDI.93) */ -BOOL16 GetTextMetrics16( HDC16 hdc, TEXTMETRIC16 *metrics ) +BOOL16 WINAPI GetTextMetrics16( HDC16 hdc, TEXTMETRIC16 *metrics ) { TEXTMETRIC32A tm32; @@ -779,7 +794,7 @@ /*********************************************************************** * GetTextMetrics32A (GDI32.236) */ -BOOL32 GetTextMetrics32A( HDC32 hdc, TEXTMETRIC32A *metrics ) +BOOL32 WINAPI GetTextMetrics32A( HDC32 hdc, TEXTMETRIC32A *metrics ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) @@ -791,8 +806,26 @@ if (!dc->funcs->pGetTextMetrics || !dc->funcs->pGetTextMetrics( dc,metrics )) return FALSE; + /* map them from device to logic coordinatesystem before returning. + * FIXME: should this be in the device driver? + */ +#define WDPTOLP(x) ((x<0)? \ + (-abs((x)*dc->wndExtX/dc->vportExtX)): \ + (abs((x)*dc->wndExtX/dc->vportExtX))) +#define HDPTOLP(y) ((y<0)? \ + (-abs((y)*dc->wndExtY/dc->vportExtY)): \ + (abs((y)*dc->wndExtY/dc->vportExtY))) + + metrics->tmHeight = HDPTOLP(metrics->tmHeight); + metrics->tmAscent = HDPTOLP(metrics->tmAscent); + metrics->tmDescent = HDPTOLP(metrics->tmDescent); + metrics->tmInternalLeading = HDPTOLP(metrics->tmInternalLeading); + metrics->tmExternalLeading = HDPTOLP(metrics->tmExternalLeading); + metrics->tmAveCharWidth = WDPTOLP(metrics->tmAveCharWidth); + metrics->tmMaxCharWidth = WDPTOLP(metrics->tmMaxCharWidth); + metrics->tmOverhang = WDPTOLP(metrics->tmOverhang); - dprintf_font(stdnimp,"text metrics: + dprintf_font(stddeb,"text metrics: Weight = %03i\t FirstChar = %03i\t AveCharWidth = %i Italic = % 3i\t LastChar = %03i\t\t MaxCharWidth = %i UnderLined = %01i\t DefaultChar = %03i\t Overhang = %i @@ -819,7 +852,7 @@ /*********************************************************************** * GetTextMetrics32W (GDI32.237) */ -BOOL32 GetTextMetrics32W( HDC32 hdc, TEXTMETRIC32W *metrics ) +BOOL32 WINAPI GetTextMetrics32W( HDC32 hdc, TEXTMETRIC32W *metrics ) { TEXTMETRIC32A tm; if (!GetTextMetrics32A( (HDC16)hdc, &tm )) return FALSE; @@ -831,8 +864,8 @@ /*********************************************************************** * GetCharWidth16 (GDI.350) */ -BOOL16 GetCharWidth16( HDC16 hdc, UINT16 firstChar, UINT16 lastChar, - LPINT16 buffer ) +BOOL16 WINAPI GetCharWidth16( HDC16 hdc, UINT16 firstChar, UINT16 lastChar, + LPINT16 buffer ) { BOOL32 retVal = FALSE; @@ -867,8 +900,8 @@ /*********************************************************************** * GetCharWidth32A (GDI32.155) */ -BOOL32 GetCharWidth32A( HDC32 hdc, UINT32 firstChar, UINT32 lastChar, - LPINT32 buffer ) +BOOL32 WINAPI GetCharWidth32A( HDC32 hdc, UINT32 firstChar, UINT32 lastChar, + LPINT32 buffer ) { UINT32 i, extra; DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); @@ -895,8 +928,8 @@ /*********************************************************************** * GetCharWidth32W (GDI32.158) */ -BOOL32 GetCharWidth32W( HDC32 hdc, UINT32 firstChar, UINT32 lastChar, - LPINT32 buffer ) +BOOL32 WINAPI GetCharWidth32W( HDC32 hdc, UINT32 firstChar, UINT32 lastChar, + LPINT32 buffer ) { return GetCharWidth32A( hdc, firstChar, lastChar, buffer ); } @@ -908,7 +941,7 @@ * * SetMapperFlags16 (GDI.349) */ -DWORD SetMapperFlags16( HDC16 hDC, DWORD dwFlag ) +DWORD WINAPI SetMapperFlags16( HDC16 hDC, DWORD dwFlag ) { return SetMapperFlags32( hDC, dwFlag ); } @@ -917,19 +950,30 @@ /*********************************************************************** * SetMapperFlags32 (GDI32.322) */ -DWORD SetMapperFlags32( HDC32 hDC, DWORD dwFlag ) +DWORD WINAPI SetMapperFlags32( HDC32 hDC, DWORD dwFlag ) { dprintf_font(stdnimp,"SetmapperFlags(%04x, %08lX) // Empty Stub !\n", hDC, dwFlag); return 0L; } +/*********************************************************************** + * GetAspectRatioFilterEx16 (GDI.486) + */ +BOOL16 GetAspectRatioFilterEx16( HDC16 hdc, LPVOID pAspectRatio ) +{ + dprintf_font(stdnimp, + "GetAspectRatioFilterEx(%04x, %p): // Empty Stub !\n", + hdc, pAspectRatio); + return FALSE; +} + /*********************************************************************** * GetCharABCWidths16 (GDI.307) */ -BOOL16 GetCharABCWidths16( HDC16 hdc, UINT16 firstChar, UINT16 lastChar, - LPABC16 abc ) +BOOL16 WINAPI GetCharABCWidths16( HDC16 hdc, UINT16 firstChar, UINT16 lastChar, + LPABC16 abc ) { ABC32 abc32; if (!GetCharABCWidths32A( hdc, firstChar, lastChar, &abc32 )) return FALSE; @@ -943,8 +987,8 @@ /*********************************************************************** * GetCharABCWidths32A (GDI32.149) */ -BOOL32 GetCharABCWidths32A( HDC32 hdc, UINT32 firstChar, UINT32 lastChar, - LPABC32 abc ) +BOOL32 WINAPI GetCharABCWidths32A(HDC32 hdc, UINT32 firstChar, UINT32 lastChar, + LPABC32 abc ) { /* No TrueType fonts in Wine so far */ fprintf( stdnimp, "STUB: GetCharABCWidths(%04x,%04x,%04x,%p)\n", @@ -956,8 +1000,8 @@ /*********************************************************************** * GetCharABCWidths32W (GDI32.152) */ -BOOL32 GetCharABCWidths32W( HDC32 hdc, UINT32 firstChar, UINT32 lastChar, - LPABC32 abc ) +BOOL32 WINAPI GetCharABCWidths32W(HDC32 hdc, UINT32 firstChar, UINT32 lastChar, + LPABC32 abc ) { return GetCharABCWidths32A( hdc, firstChar, lastChar, abc ); } @@ -966,9 +1010,9 @@ /*********************************************************************** * GetGlyphOutline16 (GDI.309) */ -DWORD GetGlyphOutline16( HDC16 hdc, UINT16 uChar, UINT16 fuFormat, - LPGLYPHMETRICS16 lpgm, DWORD cbBuffer, - LPVOID lpBuffer, const MAT2 *lpmat2 ) +DWORD WINAPI GetGlyphOutline16( HDC16 hdc, UINT16 uChar, UINT16 fuFormat, + LPGLYPHMETRICS16 lpgm, DWORD cbBuffer, + LPVOID lpBuffer, const MAT2 *lpmat2 ) { fprintf( stdnimp,"GetGlyphOutLine16(%04x, '%c', %04x, %p, %ld, %p, %p) // - empty stub!\n", hdc, uChar, fuFormat, lpgm, cbBuffer, lpBuffer, lpmat2 ); @@ -979,9 +1023,9 @@ /*********************************************************************** * GetGlyphOutline32A (GDI32.186) */ -DWORD GetGlyphOutline32A( HDC32 hdc, UINT32 uChar, UINT32 fuFormat, - LPGLYPHMETRICS32 lpgm, DWORD cbBuffer, - LPVOID lpBuffer, const MAT2 *lpmat2 ) +DWORD WINAPI GetGlyphOutline32A( HDC32 hdc, UINT32 uChar, UINT32 fuFormat, + LPGLYPHMETRICS32 lpgm, DWORD cbBuffer, + LPVOID lpBuffer, const MAT2 *lpmat2 ) { fprintf( stdnimp,"GetGlyphOutLine32A(%04x, '%c', %04x, %p, %ld, %p, %p) // - empty stub!\n", hdc, uChar, fuFormat, lpgm, cbBuffer, lpBuffer, lpmat2 ); @@ -991,9 +1035,9 @@ /*********************************************************************** * GetGlyphOutline32W (GDI32.187) */ -DWORD GetGlyphOutline32W( HDC32 hdc, UINT32 uChar, UINT32 fuFormat, - LPGLYPHMETRICS32 lpgm, DWORD cbBuffer, - LPVOID lpBuffer, const MAT2 *lpmat2 ) +DWORD WINAPI GetGlyphOutline32W( HDC32 hdc, UINT32 uChar, UINT32 fuFormat, + LPGLYPHMETRICS32 lpgm, DWORD cbBuffer, + LPVOID lpBuffer, const MAT2 *lpmat2 ) { fprintf( stdnimp,"GetGlyphOutLine32W(%04x, '%c', %04x, %p, %ld, %p, %p) // - empty stub!\n", hdc, uChar, fuFormat, lpgm, cbBuffer, lpBuffer, lpmat2 ); @@ -1003,8 +1047,9 @@ /*********************************************************************** * CreateScalableFontResource16 (GDI.310) */ -BOOL16 CreateScalableFontResource16( UINT16 fHidden, LPCSTR lpszResourceFile, - LPCSTR fontFile, LPCSTR path ) +BOOL16 WINAPI CreateScalableFontResource16( UINT16 fHidden, + LPCSTR lpszResourceFile, + LPCSTR fontFile, LPCSTR path ) { return CreateScalableFontResource32A( fHidden, lpszResourceFile, fontFile, path ); @@ -1013,9 +1058,10 @@ /*********************************************************************** * CreateScalableFontResource32A (GDI32.62) */ -BOOL32 CreateScalableFontResource32A( DWORD fHidden, LPCSTR lpszResourceFile, - LPCSTR lpszFontFile, - LPCSTR lpszCurrentPath ) +BOOL32 WINAPI CreateScalableFontResource32A( DWORD fHidden, + LPCSTR lpszResourceFile, + LPCSTR lpszFontFile, + LPCSTR lpszCurrentPath ) { /* fHidden=1 - only visible for the calling app, read-only, not * enumbered with EnumFonts/EnumFontFamilies @@ -1029,9 +1075,10 @@ /*********************************************************************** * CreateScalableFontResource32W (GDI32.63) */ -BOOL32 CreateScalableFontResource32W( DWORD fHidden, LPCWSTR lpszResourceFile, - LPCWSTR lpszFontFile, - LPCWSTR lpszCurrentPath ) +BOOL32 WINAPI CreateScalableFontResource32W( DWORD fHidden, + LPCWSTR lpszResourceFile, + LPCWSTR lpszFontFile, + LPCWSTR lpszCurrentPath ) { fprintf(stdnimp,"CreateScalableFontResource32W(%ld,%p,%p,%p) // empty stub\n", fHidden, lpszResourceFile, lpszFontFile, lpszCurrentPath ); @@ -1042,7 +1089,7 @@ /************************************************************************* * GetRasterizerCaps16 (GDI.313) */ -BOOL16 GetRasterizerCaps16( LPRASTERIZER_STATUS lprs, UINT16 cbNumBytes ) +BOOL16 WINAPI GetRasterizerCaps16( LPRASTERIZER_STATUS lprs, UINT16 cbNumBytes) { return GetRasterizerCaps32( lprs, cbNumBytes ); } @@ -1051,7 +1098,7 @@ /************************************************************************* * GetRasterizerCaps32 (GDI32.216) */ -BOOL32 GetRasterizerCaps32( LPRASTERIZER_STATUS lprs, UINT32 cbNumBytes ) +BOOL32 WINAPI GetRasterizerCaps32( LPRASTERIZER_STATUS lprs, UINT32 cbNumBytes) { RASTERIZER_STATUS rs; @@ -1065,8 +1112,8 @@ /************************************************************************* * GetKerningPairs16 (GDI.332) */ -INT16 GetKerningPairs16( HDC16 hDC, INT16 cPairs, - LPKERNINGPAIR16 lpKerningPairs ) +INT16 WINAPI GetKerningPairs16( HDC16 hDC, INT16 cPairs, + LPKERNINGPAIR16 lpKerningPairs ) { /* At this time kerning is ignored (set to 0) */ int i; @@ -1080,8 +1127,8 @@ /************************************************************************* * GetKerningPairs32A (GDI32.192) */ -DWORD GetKerningPairs32A( HDC32 hDC, DWORD cPairs, - LPKERNINGPAIR32 lpKerningPairs ) +DWORD WINAPI GetKerningPairs32A( HDC32 hDC, DWORD cPairs, + LPKERNINGPAIR32 lpKerningPairs ) { int i; fprintf(stdnimp,"GetKerningPairs32: almost empty stub!\n"); @@ -1093,9 +1140,16 @@ /************************************************************************* * GetKerningPairs32W (GDI32.193) */ -DWORD GetKerningPairs32W( HDC32 hDC, DWORD cPairs, - LPKERNINGPAIR32 lpKerningPairs ) +DWORD WINAPI GetKerningPairs32W( HDC32 hDC, DWORD cPairs, + LPKERNINGPAIR32 lpKerningPairs ) { return GetKerningPairs32A( hDC, cPairs, lpKerningPairs ); } +BOOL32 WINAPI TranslateCharSetInfo(LPDWORD lpSrc,LPCHARSETINFO lpCs,DWORD dwFlags) { + fprintf(stderr,"TranslateCharSetInfo(%p,%p,0x%08lx), stub.\n", + lpSrc,lpCs,dwFlags + ); + return TRUE; +} +
diff --git a/objects/gdiobj.c b/objects/gdiobj.c index 3d59435..6c80245 100644 --- a/objects/gdiobj.c +++ b/objects/gdiobj.c
@@ -231,11 +231,13 @@ { /* Create default palette */ + /* DR well *this* palette can't be moveable (?) */ + HPALETTE16 hpalette = PALETTE_Init(); if( hpalette ) { - StockObjects[DEFAULT_PALETTE] = (GDIOBJHDR *)GDI_HEAP_LIN_ADDR( hpalette ); + StockObjects[DEFAULT_PALETTE] = (GDIOBJHDR *)GDI_HEAP_LOCK( hpalette ); return TRUE; } } @@ -250,12 +252,17 @@ { static DWORD count = 0; GDIOBJHDR * obj; - HGDIOBJ16 handle = GDI_HEAP_ALLOC( size ); + HGDIOBJ16 handle; + if ( magic == DC_MAGIC || magic == METAFILE_DC_MAGIC ) + handle = GDI_HEAP_ALLOC( size ); + else + handle = GDI_HEAP_ALLOC_MOVEABLE( size ); if (!handle) return 0; - obj = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle ); + obj = (GDIOBJHDR *) GDI_HEAP_LOCK( handle ); obj->hNext = 0; obj->wMagic = magic; obj->dwCount = ++count; + GDI_HEAP_UNLOCK( handle ); return handle; } @@ -271,10 +278,10 @@ if ((handle >= FIRST_STOCK_HANDLE) && (handle <= LAST_STOCK_HANDLE)) return TRUE; - object = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle ); + object = (GDIOBJHDR *) GDI_HEAP_LOCK( handle ); if (!object) return FALSE; object->wMagic = 0; /* Mark it as invalid */ - + /* Free object */ GDI_HEAP_FREE( handle ); @@ -286,6 +293,8 @@ * * Return a pointer to the GDI object associated to the handle. * Return NULL if the object has the wrong magic number. + * Movable GDI objects are locked in memory: it is up to the caller to unlock + * it after the caller is done with the pointer. */ GDIOBJHDR * GDI_GetObjPtr( HGDIOBJ16 handle, WORD magic ) { @@ -294,9 +303,13 @@ if ((handle >= FIRST_STOCK_HANDLE) && (handle <= LAST_STOCK_HANDLE)) ptr = StockObjects[handle - FIRST_STOCK_HANDLE]; else - ptr = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle ); + ptr = (GDIOBJHDR *) GDI_HEAP_LOCK( handle ); if (!ptr) return NULL; - if ((magic != MAGIC_DONTCARE) && (ptr->wMagic != magic)) return NULL; + if ((magic != MAGIC_DONTCARE) && (ptr->wMagic != magic)) + { + GDI_HEAP_UNLOCK( handle ); + return NULL; + } return ptr; } @@ -304,7 +317,7 @@ /*********************************************************************** * DeleteObject16 (GDI.69) */ -BOOL16 DeleteObject16( HGDIOBJ16 obj ) +BOOL16 WINAPI DeleteObject16( HGDIOBJ16 obj ) { return DeleteObject32( obj ); } @@ -313,12 +326,15 @@ /*********************************************************************** * DeleteObject32 (GDI32.70) */ -BOOL32 DeleteObject32( HGDIOBJ32 obj ) +BOOL32 WINAPI DeleteObject32( HGDIOBJ32 obj ) { /* Check if object is valid */ - GDIOBJHDR * header = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( obj ); - if (!header || HIWORD(obj)) return FALSE; + GDIOBJHDR * header; + if (HIWORD(obj)) return FALSE; + if ((obj >= FIRST_STOCK_HANDLE) && (obj <= LAST_STOCK_HANDLE)) + return TRUE; + if (!(header = (GDIOBJHDR *) GDI_HEAP_LOCK( obj ))) return FALSE; dprintf_gdi(stddeb, "DeleteObject: %04x\n", obj ); @@ -340,7 +356,7 @@ /*********************************************************************** * GetStockObject16 (GDI.87) */ -HGDIOBJ16 GetStockObject16( INT16 obj ) +HGDIOBJ16 WINAPI GetStockObject16( INT16 obj ) { return (HGDIOBJ16)GetStockObject32( obj ); } @@ -349,7 +365,7 @@ /*********************************************************************** * GetStockObject32 (GDI32.220) */ -HGDIOBJ32 GetStockObject32( INT32 obj ) +HGDIOBJ32 WINAPI GetStockObject32( INT32 obj ) { if ((obj < 0) || (obj >= NB_STOCK_OBJECTS)) return 0; if (!StockObjects[obj]) return 0; @@ -362,73 +378,86 @@ /*********************************************************************** * GetObject16 (GDI.82) */ -INT16 GetObject16( HANDLE16 handle, INT16 count, LPVOID buffer ) +INT16 WINAPI GetObject16( HANDLE16 handle, INT16 count, LPVOID buffer ) { GDIOBJHDR * ptr = NULL; + INT16 result = 0; dprintf_gdi(stddeb, "GetObject16: %04x %d %p\n", handle, count, buffer ); if (!count) return 0; if ((handle >= FIRST_STOCK_HANDLE) && (handle <= LAST_STOCK_HANDLE)) ptr = StockObjects[handle - FIRST_STOCK_HANDLE]; else - ptr = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle ); + ptr = (GDIOBJHDR *) GDI_HEAP_LOCK( handle ); if (!ptr) return 0; switch(ptr->wMagic) - { + { case PEN_MAGIC: - return PEN_GetObject16( (PENOBJ *)ptr, count, buffer ); + result = PEN_GetObject16( (PENOBJ *)ptr, count, buffer ); + break; case BRUSH_MAGIC: - return BRUSH_GetObject16( (BRUSHOBJ *)ptr, count, buffer ); + result = BRUSH_GetObject16( (BRUSHOBJ *)ptr, count, buffer ); + break; case BITMAP_MAGIC: - return BITMAP_GetObject16( (BITMAPOBJ *)ptr, count, buffer ); + result = BITMAP_GetObject16( (BITMAPOBJ *)ptr, count, buffer ); + break; case FONT_MAGIC: - return FONT_GetObject16( (FONTOBJ *)ptr, count, buffer ); + result = FONT_GetObject16( (FONTOBJ *)ptr, count, buffer ); + break; case PALETTE_MAGIC: - return PALETTE_GetObject( (PALETTEOBJ *)ptr, count, buffer ); - } - return 0; + result = PALETTE_GetObject( (PALETTEOBJ *)ptr, count, buffer ); + break; + } + GDI_HEAP_UNLOCK( handle ); + return result; } /*********************************************************************** * GetObject32A (GDI32.204) */ -INT32 GetObject32A( HANDLE32 handle, INT32 count, LPVOID buffer ) +INT32 WINAPI GetObject32A( HANDLE32 handle, INT32 count, LPVOID buffer ) { GDIOBJHDR * ptr = NULL; + INT32 result = 0; dprintf_gdi(stddeb, "GetObject32A: %08x %d %p\n", handle, count, buffer ); if (!count) return 0; if ((handle >= FIRST_STOCK_HANDLE) && (handle <= LAST_STOCK_HANDLE)) ptr = StockObjects[handle - FIRST_STOCK_HANDLE]; else - ptr = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle ); + ptr = (GDIOBJHDR *) GDI_HEAP_LOCK( handle ); if (!ptr) return 0; switch(ptr->wMagic) { case PEN_MAGIC: - return PEN_GetObject32( (PENOBJ *)ptr, count, buffer ); + result = PEN_GetObject32( (PENOBJ *)ptr, count, buffer ); + break; case BRUSH_MAGIC: - return BRUSH_GetObject32( (BRUSHOBJ *)ptr, count, buffer ); + result = BRUSH_GetObject32( (BRUSHOBJ *)ptr, count, buffer ); + break; case BITMAP_MAGIC: - return BITMAP_GetObject32( (BITMAPOBJ *)ptr, count, buffer ); + result = BITMAP_GetObject32( (BITMAPOBJ *)ptr, count, buffer ); + break; case FONT_MAGIC: - return FONT_GetObject32A( (FONTOBJ *)ptr, count, buffer ); + result = FONT_GetObject32A( (FONTOBJ *)ptr, count, buffer ); + break; case PALETTE_MAGIC: fprintf( stderr, "GetObject32: magic %04x not implemented\n", ptr->wMagic ); break; } - return 0; + GDI_HEAP_UNLOCK( handle ); + return result; } /*********************************************************************** * GetObject32W (GDI32.206) */ -INT32 GetObject32W( HANDLE32 handle, INT32 count, LPVOID buffer ) +INT32 WINAPI GetObject32W( HANDLE32 handle, INT32 count, LPVOID buffer ) { return GetObject32A( handle, count, buffer ); } @@ -437,7 +466,7 @@ /*********************************************************************** * SelectObject16 (GDI.45) */ -HGDIOBJ16 SelectObject16( HDC16 hdc, HGDIOBJ16 handle ) +HGDIOBJ16 WINAPI SelectObject16( HDC16 hdc, HGDIOBJ16 handle ) { return (HGDIOBJ16)SelectObject32( hdc, handle ); } @@ -446,7 +475,7 @@ /*********************************************************************** * SelectObject32 (GDI32.299) */ -HGDIOBJ32 SelectObject32( HDC32 hdc, HGDIOBJ32 handle ) +HGDIOBJ32 WINAPI SelectObject32( HDC32 hdc, HGDIOBJ32 handle ) { DC * dc = DC_GetDCPtr( hdc ); if (!dc || !dc->funcs->pSelectObject) return 0; @@ -458,7 +487,7 @@ /*********************************************************************** * UnrealizeObject16 (GDI.150) */ -BOOL16 UnrealizeObject16( HGDIOBJ16 obj ) +BOOL16 WINAPI UnrealizeObject16( HGDIOBJ16 obj ) { return UnrealizeObject32( obj ); } @@ -467,11 +496,12 @@ /*********************************************************************** * UnrealizeObject (GDI32.358) */ -BOOL32 UnrealizeObject32( HGDIOBJ32 obj ) +BOOL32 WINAPI UnrealizeObject32( HGDIOBJ32 obj ) { - /* Check if object is valid */ + BOOL32 result = TRUE; + /* Check if object is valid */ - GDIOBJHDR * header = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( obj ); + GDIOBJHDR * header = (GDIOBJHDR *) GDI_HEAP_LOCK( obj ); if (!header) return FALSE; dprintf_gdi( stddeb, "UnrealizeObject: %04x\n", obj ); @@ -481,21 +511,23 @@ switch(header->wMagic) { case PALETTE_MAGIC: - return PALETTE_UnrealizeObject( obj, (PALETTEOBJ *)header ); + result = PALETTE_UnrealizeObject( obj, (PALETTEOBJ *)header ); + break; case BRUSH_MAGIC: /* Windows resets the brush origin. We don't need to. */ break; } - return TRUE; + GDI_HEAP_UNLOCK( obj ); + return result; } /*********************************************************************** * EnumObjects16 (GDI.71) */ -INT16 EnumObjects16( HDC16 hdc, INT16 nObjType, GOBJENUMPROC16 lpEnumFunc, - LPARAM lParam ) +INT16 WINAPI EnumObjects16( HDC16 hdc, INT16 nObjType, + GOBJENUMPROC16 lpEnumFunc, LPARAM lParam ) { /* Solid colors to enumerate */ static const COLORREF solid_colors[] = @@ -573,8 +605,8 @@ /*********************************************************************** * EnumObjects32 (GDI32.89) */ -INT32 EnumObjects32( HDC32 hdc, INT32 nObjType, GOBJENUMPROC32 lpEnumFunc, - LPARAM lParam ) +INT32 WINAPI EnumObjects32( HDC32 hdc, INT32 nObjType, + GOBJENUMPROC32 lpEnumFunc, LPARAM lParam ) { /* Solid colors to enumerate */ static const COLORREF solid_colors[] = @@ -648,12 +680,19 @@ /*********************************************************************** * IsGDIObject (GDI.462) + * + * returns type of object if valid (W95 system programming secrets p. 264-5) */ -BOOL16 IsGDIObject( HGDIOBJ16 handle ) +BOOL16 WINAPI IsGDIObject( HGDIOBJ16 handle ) { - GDIOBJHDR *object = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle ); + GDIOBJHDR *object = (GDIOBJHDR *) GDI_HEAP_LOCK( handle ); if (object) - return (object->wMagic>=PEN_MAGIC && object->wMagic<= METAFILE_DC_MAGIC); + { + UINT16 magic = object->wMagic; + GDI_HEAP_UNLOCK( handle ); + if (magic >= PEN_MAGIC && magic <= METAFILE_DC_MAGIC) + return magic - PEN_MAGIC + 1; + } return FALSE; } @@ -661,7 +700,7 @@ /*********************************************************************** * MulDiv16 (GDI.128) */ -INT16 MulDiv16( INT16 foo, INT16 bar, INT16 baz ) +INT16 WINAPI MulDiv16( INT16 foo, INT16 bar, INT16 baz ) { INT32 ret; if (!baz) return -32768; @@ -674,7 +713,7 @@ /*********************************************************************** * MulDiv32 (KERNEL32.391) */ -INT32 MulDiv32( INT32 foo, INT32 bar, INT32 baz ) +INT32 WINAPI MulDiv32( INT32 foo, INT32 bar, INT32 baz ) { #ifdef __GNUC__ long long ret;
diff --git a/objects/linedda.c b/objects/linedda.c index d0cf871..7297860 100644 --- a/objects/linedda.c +++ b/objects/linedda.c
@@ -11,8 +11,8 @@ /********************************************************************** * LineDDA16 (GDI.100) */ -void LineDDA16( INT16 nXStart, INT16 nYStart, INT16 nXEnd, INT16 nYEnd, - LINEDDAPROC16 callback, LPARAM lParam ) +void WINAPI LineDDA16( INT16 nXStart, INT16 nYStart, INT16 nXEnd, INT16 nYEnd, + LINEDDAPROC16 callback, LPARAM lParam ) { LineDDA32( nXStart, nYStart, nXEnd, nYEnd, (LINEDDAPROC32)callback, lParam ); @@ -22,8 +22,8 @@ /********************************************************************** * LineDDA32 (GDI32.248) */ -BOOL32 LineDDA32( INT32 nXStart, INT32 nYStart, INT32 nXEnd, INT32 nYEnd, - LINEDDAPROC32 callback, LPARAM lParam ) +BOOL32 WINAPI LineDDA32(INT32 nXStart, INT32 nYStart, INT32 nXEnd, INT32 nYEnd, + LINEDDAPROC32 callback, LPARAM lParam ) { INT32 xadd = 1, yadd = 1; INT32 err,erradd;
diff --git a/objects/metafile.c b/objects/metafile.c index 87e0b34..ad8622a 100644 --- a/objects/metafile.c +++ b/objects/metafile.c
@@ -57,7 +57,7 @@ /****************************************************************** * GetMetafile16 (GDI.124) */ -HMETAFILE16 GetMetaFile16( LPCSTR lpFilename ) +HMETAFILE16 WINAPI GetMetaFile16( LPCSTR lpFilename ) { return GetMetaFile32A( lpFilename ); } @@ -66,7 +66,7 @@ /****************************************************************** * GetMetafile32A (GDI32.197) */ -HMETAFILE32 GetMetaFile32A( LPCSTR lpFilename ) +HMETAFILE32 WINAPI GetMetaFile32A( LPCSTR lpFilename ) { HMETAFILE16 hmf; METAHEADER *mh; @@ -137,7 +137,7 @@ /****************************************************************** * GetMetafile32W (GDI32.199) */ -HMETAFILE32 GetMetaFile32W( LPCWSTR lpFilename ) +HMETAFILE32 WINAPI GetMetaFile32W( LPCWSTR lpFilename ) { LPSTR p = HEAP_strdupWtoA( GetProcessHeap(), 0, lpFilename ); HMETAFILE32 ret = GetMetaFile32A( p ); @@ -150,7 +150,7 @@ * CopyMetaFile16 (GDI.151) */ -HMETAFILE16 CopyMetaFile16( HMETAFILE16 hSrcMetaFile, LPCSTR lpFilename ) +HMETAFILE16 WINAPI CopyMetaFile16( HMETAFILE16 hSrcMetaFile, LPCSTR lpFilename ) { return CopyMetaFile32A( hSrcMetaFile, lpFilename ); } @@ -159,7 +159,7 @@ /****************************************************************** * CopyMetaFile32A (GDI32.23) */ -HMETAFILE32 CopyMetaFile32A( HMETAFILE32 hSrcMetaFile, LPCSTR lpFilename ) +HMETAFILE32 WINAPI CopyMetaFile32A(HMETAFILE32 hSrcMetaFile, LPCSTR lpFilename) { HMETAFILE16 handle = 0; METAHEADER *mh; @@ -201,7 +201,8 @@ /****************************************************************** * CopyMetaFile32W (GDI32.24) */ -HMETAFILE32 CopyMetaFile32W( HMETAFILE32 hSrcMetaFile, LPCWSTR lpFilename ) +HMETAFILE32 WINAPI CopyMetaFile32W( HMETAFILE32 hSrcMetaFile, + LPCWSTR lpFilename ) { LPSTR p = HEAP_strdupWtoA( GetProcessHeap(), 0, lpFilename ); HMETAFILE32 ret = CopyMetaFile32A( hSrcMetaFile, p ); @@ -215,7 +216,7 @@ * (This is not exactly what windows does, see "Undoc Win") */ -BOOL16 IsValidMetaFile(HMETAFILE16 hmf) +BOOL16 WINAPI IsValidMetaFile(HMETAFILE16 hmf) { BOOL16 resu=FALSE; METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf); @@ -234,7 +235,7 @@ /****************************************************************** * PlayMetafile16 (GDI.123) */ -BOOL16 PlayMetaFile16( HDC16 hdc, HMETAFILE16 hmf ) +BOOL16 WINAPI PlayMetaFile16( HDC16 hdc, HMETAFILE16 hmf ) { return PlayMetaFile32( hdc, hmf ); } @@ -243,7 +244,7 @@ /****************************************************************** * PlayMetafile32 (GDI32.265) */ -BOOL32 PlayMetaFile32( HDC32 hdc, HMETAFILE32 hmf ) +BOOL32 WINAPI PlayMetaFile32( HDC32 hdc, HMETAFILE32 hmf ) { METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf); METARECORD *mr; @@ -262,7 +263,7 @@ hPen = dc->w.hPen; hBrush = dc->w.hBrush; hFont = dc->w.hFont; - + GDI_HEAP_UNLOCK(hdc); /* create the handle table */ hHT = GlobalAlloc16(GMEM_MOVEABLE|GMEM_ZEROINIT, sizeof(HANDLETABLE16) * mh->mtNoObjects); @@ -299,8 +300,8 @@ * EnumMetaFile16 (GDI.175) * Niels de carpentier, april 1996 */ -BOOL16 EnumMetaFile16( HDC16 hdc, HMETAFILE16 hmf, MFENUMPROC16 lpEnumFunc, - LPARAM lpData ) +BOOL16 WINAPI EnumMetaFile16( HDC16 hdc, HMETAFILE16 hmf, + MFENUMPROC16 lpEnumFunc, LPARAM lpData ) { METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf); METARECORD *mr; @@ -321,7 +322,8 @@ hPen = dc->w.hPen; hBrush = dc->w.hBrush; hFont = dc->w.hFont; - + GDI_HEAP_UNLOCK(hdc); + /* create the handle table */ hHT = GlobalAlloc16(GMEM_MOVEABLE | GMEM_ZEROINIT, @@ -365,8 +367,8 @@ /****************************************************************** * PlayMetaFileRecord16 (GDI.176) */ -void PlayMetaFileRecord16( HDC16 hdc, HANDLETABLE16 *ht, METARECORD *mr, - UINT16 nHandles ) +void WINAPI PlayMetaFileRecord16( HDC16 hdc, HANDLETABLE16 *ht, METARECORD *mr, + UINT16 nHandles ) { short s1; HANDLE16 hndl; @@ -818,7 +820,7 @@ * Trade in a meta file object handle for a handle to the meta file memory */ -HGLOBAL16 GetMetaFileBits(HMETAFILE16 hmf) +HGLOBAL16 WINAPI GetMetaFileBits(HMETAFILE16 hmf) { dprintf_metafile(stddeb,"GetMetaFileBits: hMem out: %04x\n", hmf); @@ -830,7 +832,7 @@ * * Trade in a meta file memory handle for a handle to a meta file object */ -HMETAFILE16 SetMetaFileBits( HGLOBAL16 hMem ) +HMETAFILE16 WINAPI SetMetaFileBits( HGLOBAL16 hMem ) { dprintf_metafile(stddeb,"SetMetaFileBits: hmf out: %04x\n", hMem); @@ -840,7 +842,7 @@ /****************************************************************** * SetMetaFileBitsBetter (GDI.196) */ -HMETAFILE16 SetMetaFileBitsBetter( HMETAFILE16 hMeta ) +HMETAFILE16 WINAPI SetMetaFileBitsBetter( HMETAFILE16 hMeta ) { if( IsValidMetaFile( hMeta ) ) return (HMETAFILE16)GlobalReAlloc16( hMeta, 0, @@ -1044,7 +1046,10 @@ len = sizeof(METARECORD) + sizeof(BITMAPINFOHEADER) + (bmp->bitmap.bmHeight * bmp->bitmap.bmWidthBytes) + 6; if (!(hmr = GlobalAlloc16(GMEM_MOVEABLE, len))) + { + GDI_HEAP_UNLOCK((HGDIOBJ16)logbrush->lbHatch); return FALSE; + } mr = (METARECORD *)GlobalLock16(hmr); memset(mr, 0, len); mr->rdFunction = META_DIBCREATEPATTERNBRUSH; @@ -1060,6 +1065,7 @@ memcpy(mr->rdParam + (sizeof(BITMAPINFOHEADER) / 2) + 4, PTR_SEG_TO_LIN(bmp->bitmap.bmBits), bmp->bitmap.bmHeight * bmp->bitmap.bmWidthBytes); + GDI_HEAP_UNLOCK(logbrush->lbHatch); break; case BS_DIBPATTERN:
diff --git a/objects/oembitmap.c b/objects/oembitmap.c index 514cb78..2a3cb2d 100644 --- a/objects/oembitmap.c +++ b/objects/oembitmap.c
@@ -249,6 +249,17 @@ static XpmColorSymbol *OBM_Colors = NULL; +/* This structure holds the arguments for OBM_CreateBitmaps() */ +typedef struct +{ + char **data; /* In: bitmap data */ + BOOL32 color; /* In: color or monochrome */ + BOOL32 need_mask; /* In: do we need a mask? */ + HBITMAP16 bitmap; /* Out: resulting bitmap */ + HBITMAP16 mask; /* Out: resulting mask (if needed) */ + POINT32 hotspot; /* Out: bitmap hotspot */ +} OBM_BITMAP_DESCR; + /*********************************************************************** * OBM_InitColorSymbols @@ -293,7 +304,7 @@ hbitmap = GDI_AllocObject( sizeof(BITMAPOBJ), BITMAP_MAGIC ); if (!hbitmap) return 0; - bmpObjPtr = (BITMAPOBJ *) GDI_HEAP_LIN_ADDR( hbitmap ); + bmpObjPtr = (BITMAPOBJ *) GDI_HEAP_LOCK( hbitmap ); bmpObjPtr->size.cx = width; bmpObjPtr->size.cy = height; bmpObjPtr->pixmap = pixmap; @@ -304,6 +315,7 @@ bmpObjPtr->bitmap.bmPlanes = 1; bmpObjPtr->bitmap.bmBitsPixel = bpp; bmpObjPtr->bitmap.bmBits = NULL; + GDI_HEAP_UNLOCK( hbitmap ); return hbitmap; } @@ -313,8 +325,7 @@ * * Create the 2 bitmaps from XPM data. */ -static BOOL32 OBM_CreateBitmaps( char **data, BOOL32 color, HBITMAP16 *hBitmap, - HBITMAP16 *hBitmapMask, POINT32 *hotspot ) +static BOOL32 OBM_CreateBitmaps( OBM_BITMAP_DESCR *descr ) { Pixmap pixmap, pixmask; XpmAttributes *attrs; @@ -323,11 +334,11 @@ attrs = (XpmAttributes *)xmalloc( XpmAttributesSize() ); attrs->valuemask = XpmColormap | XpmDepth | XpmColorSymbols |XpmHotspot; attrs->colormap = COLOR_GetColormap(); - attrs->depth = color ? screenDepth : 1; + attrs->depth = descr->color ? screenDepth : 1; attrs->colorsymbols = (attrs->depth > 1) ? OBM_Colors : OBM_BlackAndWhite; attrs->numsymbols = (attrs->depth > 1) ? NB_COLOR_SYMBOLS : 2; - err = XpmCreatePixmapFromData( display, rootWindow, data, + err = XpmCreatePixmapFromData( display, rootWindow, descr->data, &pixmap, &pixmask, attrs ); if (err != XpmSuccess) @@ -335,22 +346,20 @@ free( attrs ); return FALSE; } - if (hotspot) - { - hotspot->x = attrs->x_hotspot; - hotspot->y = attrs->y_hotspot; - } - *hBitmap = OBM_MakeBitmap( attrs->width, attrs->height, - attrs->depth, pixmap ); - if (hBitmapMask) *hBitmapMask = OBM_MakeBitmap(attrs->width, attrs->height, - 1, pixmask ); + descr->hotspot.x = attrs->x_hotspot; + descr->hotspot.y = attrs->y_hotspot; + descr->bitmap = OBM_MakeBitmap( attrs->width, attrs->height, + attrs->depth, pixmap ); + if (descr->need_mask) + descr->mask = OBM_MakeBitmap( attrs->width, attrs->height, + 1, pixmask ); free( attrs ); - if (!*hBitmap) + if (!descr->bitmap) { if (pixmap) XFreePixmap( display, pixmap ); if (pixmask) XFreePixmap( display, pixmask ); - if (*hBitmap) GDI_FreeObject( *hBitmap ); - if (hBitmapMask && *hBitmapMask) GDI_FreeObject( *hBitmapMask ); + if (descr->bitmap) GDI_FreeObject( descr->bitmap ); + if (descr->need_mask && descr->mask) GDI_FreeObject( descr->mask ); return FALSE; } else return TRUE; @@ -362,22 +371,23 @@ */ HBITMAP16 OBM_LoadBitmap( WORD id ) { - HBITMAP16 hbitmap; + OBM_BITMAP_DESCR descr; if ((id < OBM_FIRST) || (id > OBM_LAST)) return 0; id -= OBM_FIRST; if (!OBM_InitColorSymbols()) return 0; - - if (!CallTo32_LargeStack( (int(*)())OBM_CreateBitmaps, 5, - OBM_Pixmaps_Data[id].data, - OBM_Pixmaps_Data[id].color, - &hbitmap, NULL, NULL )) + + descr.data = OBM_Pixmaps_Data[id].data; + descr.color = OBM_Pixmaps_Data[id].color; + descr.need_mask = FALSE; + + if (!CALL_LARGE_STACK( OBM_CreateBitmaps, &descr )) { fprintf( stderr, "Error creating OEM bitmap %d\n", OBM_FIRST+id ); return 0; } - return hbitmap; + return descr.bitmap; } @@ -386,11 +396,10 @@ */ HGLOBAL16 OBM_LoadCursorIcon( WORD id, BOOL32 fCursor ) { + OBM_BITMAP_DESCR descr; HGLOBAL16 handle; CURSORICONINFO *pInfo; BITMAPOBJ *bmpXor, *bmpAnd; - HBITMAP16 hXorBits, hAndBits; - POINT32 hotspot; int sizeXor, sizeAnd; if (fCursor) @@ -412,37 +421,39 @@ if (!OBM_InitColorSymbols()) return 0; - if (!CallTo32_LargeStack( (int(*)())OBM_CreateBitmaps, 5, - fCursor ? OBM_Cursors_Data[id] : OBM_Icons_Data[id], - !fCursor, &hXorBits, &hAndBits, &hotspot )) + descr.data = fCursor ? OBM_Cursors_Data[id] : OBM_Icons_Data[id]; + descr.color = !fCursor; + descr.need_mask = TRUE; + + if (!CALL_LARGE_STACK( OBM_CreateBitmaps, &descr )) { fprintf( stderr, "Error creating OEM cursor/icon %d\n", id ); return 0; } - bmpXor = (BITMAPOBJ *) GDI_GetObjPtr( hXorBits, BITMAP_MAGIC ); - bmpAnd = (BITMAPOBJ *) GDI_GetObjPtr( hAndBits, BITMAP_MAGIC ); + bmpXor = (BITMAPOBJ *) GDI_GetObjPtr( descr.bitmap, BITMAP_MAGIC ); + bmpAnd = (BITMAPOBJ *) GDI_GetObjPtr( descr.mask, BITMAP_MAGIC ); sizeXor = bmpXor->bitmap.bmHeight * bmpXor->bitmap.bmWidthBytes; sizeAnd = bmpXor->bitmap.bmHeight * BITMAP_WIDTH_BYTES( bmpXor->bitmap.bmWidth, 1 ); if (!(handle = GlobalAlloc16( GMEM_MOVEABLE, sizeof(CURSORICONINFO) + sizeXor + sizeAnd))) { - DeleteObject32( hXorBits ); - DeleteObject32( hAndBits ); + DeleteObject32( descr.bitmap ); + DeleteObject32( descr.mask ); return 0; } pInfo = (CURSORICONINFO *)GlobalLock16( handle ); - pInfo->ptHotSpot.x = hotspot.x; - pInfo->ptHotSpot.y = hotspot.y; + pInfo->ptHotSpot.x = descr.hotspot.x; + pInfo->ptHotSpot.y = descr.hotspot.y; pInfo->nWidth = bmpXor->bitmap.bmWidth; pInfo->nHeight = bmpXor->bitmap.bmHeight; pInfo->nWidthBytes = bmpXor->bitmap.bmWidthBytes; pInfo->bPlanes = bmpXor->bitmap.bmPlanes; pInfo->bBitsPerPixel = bmpXor->bitmap.bmBitsPixel; - if (hAndBits) + if (descr.mask) { /* Invert the mask */ @@ -466,12 +477,12 @@ } } - if (hAndBits) GetBitmapBits32( hAndBits, sizeAnd, (char *)(pInfo + 1) ); + if (descr.mask) GetBitmapBits32( descr.mask, sizeAnd, (char *)(pInfo + 1)); else memset( (char *)(pInfo + 1), 0xff, sizeAnd ); - GetBitmapBits32( hXorBits, sizeXor, (char *)(pInfo + 1) + sizeAnd ); + GetBitmapBits32( descr.bitmap, sizeXor, (char *)(pInfo + 1) + sizeAnd ); - DeleteObject32( hXorBits ); - DeleteObject32( hAndBits ); + DeleteObject32( descr.bitmap ); + DeleteObject32( descr.mask ); if (fCursor) OBM_Cursors[id] = handle; return handle;
diff --git a/objects/palette.c b/objects/palette.c index 74207b8..0049425 100644 --- a/objects/palette.c +++ b/objects/palette.c
@@ -64,6 +64,8 @@ palObj->mapping = xmalloc( sizeof(int) * 20 ); + GDI_HEAP_UNLOCK( hpalette ); + free( palPtr ); return hpalette; } @@ -82,7 +84,7 @@ /*********************************************************************** * CreatePalette16 (GDI.360) */ -HPALETTE16 CreatePalette16( const LOGPALETTE* palette ) +HPALETTE16 WINAPI CreatePalette16( const LOGPALETTE* palette ) { return CreatePalette32( palette ); } @@ -91,7 +93,7 @@ /*********************************************************************** * CreatePalette32 (GDI32.53) */ -HPALETTE32 CreatePalette32( const LOGPALETTE* palette ) +HPALETTE32 WINAPI CreatePalette32( const LOGPALETTE* palette ) { PALETTEOBJ * palettePtr; HPALETTE32 hpalette; @@ -103,11 +105,12 @@ hpalette = GDI_AllocObject( size + sizeof(int*) +sizeof(GDIOBJHDR) , PALETTE_MAGIC ); if (!hpalette) return 0; - palettePtr = (PALETTEOBJ *) GDI_HEAP_LIN_ADDR( hpalette ); + palettePtr = (PALETTEOBJ *) GDI_HEAP_LOCK( hpalette ); memcpy( &palettePtr->logpalette, palette, size ); PALETTE_ValidateFlags(palettePtr->logpalette.palPalEntry, palettePtr->logpalette.palNumEntries); palettePtr->mapping = NULL; + GDI_HEAP_UNLOCK( hpalette ); dprintf_palette(stddeb,"returning %04x\n", hpalette); return hpalette; @@ -117,8 +120,8 @@ /*********************************************************************** * GetPaletteEntries16 (GDI.363) */ -UINT16 GetPaletteEntries16( HPALETTE16 hpalette, UINT16 start, UINT16 count, - LPPALETTEENTRY entries ) +UINT16 WINAPI GetPaletteEntries16( HPALETTE16 hpalette, UINT16 start, + UINT16 count, LPPALETTEENTRY entries ) { return GetPaletteEntries32( hpalette, start, count, entries ); } @@ -127,8 +130,8 @@ /*********************************************************************** * GetPaletteEntries32 (GDI32.209) */ -UINT32 GetPaletteEntries32( HPALETTE32 hpalette, UINT32 start, UINT32 count, - LPPALETTEENTRY entries ) +UINT32 WINAPI GetPaletteEntries32( HPALETTE32 hpalette, UINT32 start, + UINT32 count, LPPALETTEENTRY entries ) { PALETTEOBJ * palPtr; INT32 numEntries; @@ -140,13 +143,18 @@ if (!palPtr) return 0; numEntries = palPtr->logpalette.palNumEntries; - if (start >= numEntries) return 0; + if (start >= numEntries) + { + GDI_HEAP_UNLOCK( hpalette ); + return 0; + } if (start+count > numEntries) count = numEntries - start; memcpy( entries, &palPtr->logpalette.palPalEntry[start], count * sizeof(PALETTEENTRY) ); for( numEntries = 0; numEntries < count ; numEntries++ ) if (entries[numEntries].peFlags & 0xF0) entries[numEntries].peFlags = 0; + GDI_HEAP_UNLOCK( hpalette ); return count; } @@ -154,8 +162,8 @@ /*********************************************************************** * SetPaletteEntries16 (GDI.364) */ -UINT16 SetPaletteEntries16( HPALETTE16 hpalette, UINT16 start, UINT16 count, - LPPALETTEENTRY entries ) +UINT16 WINAPI SetPaletteEntries16( HPALETTE16 hpalette, UINT16 start, + UINT16 count, LPPALETTEENTRY entries ) { return SetPaletteEntries32( hpalette, start, count, entries ); } @@ -164,8 +172,8 @@ /*********************************************************************** * SetPaletteEntries32 (GDI32.326) */ -UINT32 SetPaletteEntries32( HPALETTE32 hpalette, UINT32 start, UINT32 count, - LPPALETTEENTRY entries ) +UINT32 WINAPI SetPaletteEntries32( HPALETTE32 hpalette, UINT32 start, + UINT32 count, LPPALETTEENTRY entries ) { PALETTEOBJ * palPtr; INT32 numEntries; @@ -177,7 +185,11 @@ if (!palPtr) return 0; numEntries = palPtr->logpalette.palNumEntries; - if (start >= numEntries) return 0; + if (start >= numEntries) + { + GDI_HEAP_UNLOCK( hpalette ); + return 0; + } if (start+count > numEntries) count = numEntries - start; memcpy( &palPtr->logpalette.palPalEntry[start], entries, count * sizeof(PALETTEENTRY) ); @@ -185,7 +197,7 @@ palPtr->logpalette.palNumEntries); free(palPtr->mapping); palPtr->mapping = NULL; - + GDI_HEAP_UNLOCK( hpalette ); return count; } @@ -193,7 +205,7 @@ /*********************************************************************** * ResizePalette16 (GDI.368) */ -BOOL16 ResizePalette16( HPALETTE16 hPal, UINT16 cEntries ) +BOOL16 WINAPI ResizePalette16( HPALETTE16 hPal, UINT16 cEntries ) { return ResizePalette32( hPal, cEntries ); } @@ -202,7 +214,7 @@ /*********************************************************************** * ResizePalette32 (GDI32.289) */ -BOOL32 ResizePalette32( HPALETTE32 hPal, UINT32 cEntries ) +BOOL32 WINAPI ResizePalette32( HPALETTE32 hPal, UINT32 cEntries ) { PALETTEOBJ * palPtr = (PALETTEOBJ *) GDI_GetObjPtr( hPal, PALETTE_MAGIC ); UINT32 cPrevEnt, prevVer; @@ -219,7 +231,9 @@ sizeof(int*) + sizeof(GDIOBJHDR); size += sizeof(int*) + sizeof(GDIOBJHDR); mapping = palPtr->mapping; - + + GDI_HEAP_UNLOCK( hPal ); + hPal = GDI_HEAP_REALLOC( hPal, size ); palPtr = (PALETTEOBJ *) GDI_GetObjPtr( hPal, PALETTE_MAGIC ); if( !palPtr ) return FALSE; @@ -236,6 +250,7 @@ } palPtr->logpalette.palNumEntries = cEntries; palPtr->logpalette.palVersion = prevVer; + GDI_HEAP_UNLOCK( hPal ); return TRUE; } @@ -243,28 +258,47 @@ /*********************************************************************** * AnimatePalette16 (GDI.367) */ -BOOL16 AnimatePalette16( HPALETTE16 hPal, UINT16 StartIndex, UINT16 NumEntries, - LPPALETTEENTRY PaletteColors ) +void WINAPI AnimatePalette16( HPALETTE16 hPal, UINT16 StartIndex, + UINT16 NumEntries, LPPALETTEENTRY PaletteColors) { - return AnimatePalette32( hPal, StartIndex, NumEntries, PaletteColors ); + AnimatePalette32( hPal, StartIndex, NumEntries, PaletteColors ); } /*********************************************************************** * AnimatePalette32 (GDI32.6) + * + * FIXME: should use existing mapping when animating a primary palette */ -BOOL32 AnimatePalette32( HPALETTE32 hPal, UINT32 StartIndex, UINT32 NumEntries, - LPPALETTEENTRY PaletteColors ) +BOOL32 WINAPI AnimatePalette32( HPALETTE32 hPal, UINT32 StartIndex, + UINT32 NumEntries, LPPALETTEENTRY PaletteColors) { - fprintf(stdnimp,"AnimatePalette: empty stub! \n"); - return TRUE; + dprintf_palette(stddeb, "AnimatePalette: %04x (%i - %i)", hPal, + StartIndex, StartIndex + NumEntries ); + + if( hPal != STOCK_DEFAULT_PALETTE ) + { + PALETTEOBJ* palPtr = (PALETTEOBJ *)GDI_GetObjPtr(hPal, PALETTE_MAGIC); + + if( (StartIndex + NumEntries) < palPtr->logpalette.palNumEntries ) + { + UINT32 u; + for( u = 0; u < NumEntries; u++ ) + palPtr->logpalette.palPalEntry[u + StartIndex] = PaletteColors[u]; + COLOR_SetMapping(palPtr, StartIndex, NumEntries, + hPal != hPrimaryPalette ); + GDI_HEAP_UNLOCK( hPal ); + return TRUE; + } + } + return FALSE; } /*********************************************************************** * SetSystemPaletteUse16 (GDI.373) */ -UINT16 SetSystemPaletteUse16( HDC16 hdc, UINT16 use ) +UINT16 WINAPI SetSystemPaletteUse16( HDC16 hdc, UINT16 use ) { return SetSystemPaletteUse32( hdc, use ); } @@ -273,7 +307,7 @@ /*********************************************************************** * SetSystemPaletteUse32 (GDI32.335) */ -UINT32 SetSystemPaletteUse32( HDC32 hdc, UINT32 use ) +UINT32 WINAPI SetSystemPaletteUse32( HDC32 hdc, UINT32 use ) { UINT32 old = SystemPaletteUse; fprintf( stdnimp,"SetSystemPaletteUse(%04x,%04x) // empty stub !!!\n", @@ -286,7 +320,7 @@ /*********************************************************************** * GetSystemPaletteUse16 (GDI.374) */ -UINT16 GetSystemPaletteUse16( HDC16 hdc ) +UINT16 WINAPI GetSystemPaletteUse16( HDC16 hdc ) { return SystemPaletteUse; } @@ -295,7 +329,7 @@ /*********************************************************************** * GetSystemPaletteUse32 (GDI32.223) */ -UINT32 GetSystemPaletteUse32( HDC32 hdc ) +UINT32 WINAPI GetSystemPaletteUse32( HDC32 hdc ) { return SystemPaletteUse; } @@ -304,8 +338,8 @@ /*********************************************************************** * GetSystemPaletteEntries16 (GDI.375) */ -UINT16 GetSystemPaletteEntries16( HDC16 hdc, UINT16 start, UINT16 count, - LPPALETTEENTRY entries ) +UINT16 WINAPI GetSystemPaletteEntries16( HDC16 hdc, UINT16 start, UINT16 count, + LPPALETTEENTRY entries ) { return GetSystemPaletteEntries32( hdc, start, count, entries ); } @@ -314,8 +348,8 @@ /*********************************************************************** * GetSystemPaletteEntries32 (GDI32.222) */ -UINT32 GetSystemPaletteEntries32( HDC32 hdc, UINT32 start, UINT32 count, - LPPALETTEENTRY entries ) +UINT32 WINAPI GetSystemPaletteEntries32( HDC32 hdc, UINT32 start, UINT32 count, + LPPALETTEENTRY entries ) { UINT32 i; DC *dc; @@ -323,7 +357,11 @@ dprintf_palette(stddeb,"GetSystemPaletteEntries: hdc = %04x, cound = %i", hdc, count ); if (!(dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ))) return 0; - if (start >= dc->w.devCaps->sizePalette) return 0; + if (start >= dc->w.devCaps->sizePalette) + { + GDI_HEAP_UNLOCK( hdc ); + return 0; + } if (start+count >= dc->w.devCaps->sizePalette) count = dc->w.devCaps->sizePalette - start; for (i = 0; i < count; i++) @@ -333,6 +371,7 @@ dprintf_palette( stddeb,"\tidx(%02x) -> RGB(%08lx)\n", start + i, *(COLORREF*)(entries + i) ); } + GDI_HEAP_UNLOCK( hdc ); return count; } @@ -340,7 +379,7 @@ /*********************************************************************** * GetNearestPaletteIndex16 (GDI.370) */ -UINT16 GetNearestPaletteIndex16( HPALETTE16 hpalette, COLORREF color ) +UINT16 WINAPI GetNearestPaletteIndex16( HPALETTE16 hpalette, COLORREF color ) { return GetNearestPaletteIndex32( hpalette, color ); } @@ -349,7 +388,7 @@ /*********************************************************************** * GetNearestPaletteIndex32 (GDI32.203) */ -UINT32 GetNearestPaletteIndex32( HPALETTE32 hpalette, COLORREF color ) +UINT32 WINAPI GetNearestPaletteIndex32( HPALETTE32 hpalette, COLORREF color ) { PALETTEOBJ* palObj = (PALETTEOBJ*)GDI_GetObjPtr( hpalette, PALETTE_MAGIC ); UINT32 index = 0; @@ -361,6 +400,7 @@ dprintf_palette(stddeb,"GetNearestPaletteIndex(%04x,%06lx): returning %d\n", hpalette, color, index ); + GDI_HEAP_UNLOCK( hpalette ); return index; } @@ -368,7 +408,7 @@ /*********************************************************************** * GetNearestColor16 (GDI.154) */ -COLORREF GetNearestColor16( HDC16 hdc, COLORREF color ) +COLORREF WINAPI GetNearestColor16( HDC16 hdc, COLORREF color ) { return GetNearestColor32( hdc, color ); } @@ -377,7 +417,7 @@ /*********************************************************************** * GetNearestColor32 (GDI32.202) */ -COLORREF GetNearestColor32( HDC32 hdc, COLORREF color ) +COLORREF WINAPI GetNearestColor32( HDC32 hdc, COLORREF color ) { COLORREF nearest = 0xFADECAFE; DC *dc; @@ -391,10 +431,12 @@ nearest = COLOR_LookupNearestColor( palObj->logpalette.palPalEntry, palObj->logpalette.palNumEntries, color ); + GDI_HEAP_UNLOCK( dc->w.hPalette ); } dprintf_palette(stddeb,"GetNearestColor(%06lx): returning %06lx\n", color, nearest ); + GDI_HEAP_UNLOCK( hdc ); return nearest; } @@ -431,6 +473,7 @@ BOOL32 PALETTE_DeleteObject( HPALETTE16 hpalette, PALETTEOBJ *palette ) { free( palette->mapping ); + if (hLastRealizedPalette == hpalette) hLastRealizedPalette = 0; return GDI_FreeObject( hpalette ); } @@ -438,7 +481,7 @@ /*********************************************************************** * GDISelectPalette (GDI.361) */ -HPALETTE16 GDISelectPalette( HDC16 hdc, HPALETTE16 hpal, WORD wBkg) +HPALETTE16 WINAPI GDISelectPalette( HDC16 hdc, HPALETTE16 hpal, WORD wBkg) { HPALETTE16 prev; DC *dc; @@ -453,6 +496,7 @@ } prev = dc->w.hPalette; dc->w.hPalette = hpal; + GDI_HEAP_UNLOCK( hdc ); if (!wBkg) hPrimaryPalette = hpal; return prev; } @@ -461,7 +505,7 @@ /*********************************************************************** * GDIRealizePalette (GDI.362) */ -UINT16 GDIRealizePalette( HDC16 hdc ) +UINT16 WINAPI GDIRealizePalette( HDC16 hdc ) { PALETTEOBJ* palPtr; int realized = 0; @@ -481,12 +525,16 @@ palPtr = (PALETTEOBJ *) GDI_GetObjPtr( dc->w.hPalette, PALETTE_MAGIC ); - realized = COLOR_SetMapping(palPtr, dc->w.hPalette != hPrimaryPalette - || dc->w.hPalette == STOCK_DEFAULT_PALETTE ); + realized = COLOR_SetMapping(palPtr,0,palPtr->logpalette.palNumEntries, + (dc->w.hPalette != hPrimaryPalette) || + (dc->w.hPalette == STOCK_DEFAULT_PALETTE)); + GDI_HEAP_UNLOCK( dc->w.hPalette ); hLastRealizedPalette = dc->w.hPalette; } - else dprintf_palette(stddeb, " skipping "); + else dprintf_palette(stddeb, " skipping (hLastRealizedPalette = %04x) ", + hLastRealizedPalette); + GDI_HEAP_UNLOCK( hdc ); dprintf_palette(stdnimp, " realized %i colors\n", realized ); return (UINT16)realized; } @@ -495,7 +543,7 @@ /*********************************************************************** * RealizeDefaultPalette (GDI.365) */ -UINT16 RealizeDefaultPalette( HDC16 hdc ) +UINT16 WINAPI RealizeDefaultPalette( HDC16 hdc ) { DC *dc; PALETTEOBJ* palPtr; @@ -510,7 +558,11 @@ if (!dc) return 0; } - if ( dc->w.flags & DC_MEMORY ) return 0; + if ( dc->w.flags & DC_MEMORY ) + { + GDI_HEAP_UNLOCK( hdc ); + return 0; + } hPrimaryPalette = STOCK_DEFAULT_PALETTE; hLastRealizedPalette = STOCK_DEFAULT_PALETTE; @@ -533,18 +585,23 @@ /*********************************************************************** * IsDCCurrentPalette (GDI.412) */ -BOOL16 IsDCCurrentPalette(HDC16 hDC) +BOOL16 WINAPI IsDCCurrentPalette(HDC16 hDC) { DC* dc = (DC *)GDI_GetObjPtr( hDC, DC_MAGIC ); - return (dc)?(dc->w.hPalette == hPrimaryPalette):FALSE; + if (dc) + { + GDI_HEAP_UNLOCK( hDC ); + return dc->w.hPalette == hPrimaryPalette; + } + return FALSE; } /*********************************************************************** * SelectPalette16 (USER.282) */ -HPALETTE16 SelectPalette16( HDC16 hDC, HPALETTE16 hPal, - BOOL16 bForceBackground ) +HPALETTE16 WINAPI SelectPalette16( HDC16 hDC, HPALETTE16 hPal, + BOOL16 bForceBackground ) { return SelectPalette32( hDC, hPal, bForceBackground ); } @@ -553,8 +610,8 @@ /*********************************************************************** * SelectPalette32 (GDI32.300) */ -HPALETTE32 SelectPalette32( HDC32 hDC, HPALETTE32 hPal, - BOOL32 bForceBackground ) +HPALETTE32 WINAPI SelectPalette32( HDC32 hDC, HPALETTE32 hPal, + BOOL32 bForceBackground ) { WORD wBkgPalette = 1; PALETTEOBJ* lpt = (PALETTEOBJ*) GDI_GetObjPtr( hPal, PALETTE_MAGIC ); @@ -565,6 +622,7 @@ dprintf_palette(stddeb," entries = %d\n", lpt->logpalette.palNumEntries); + GDI_HEAP_UNLOCK( hPal ); if( hPal != STOCK_DEFAULT_PALETTE ) { @@ -584,7 +642,7 @@ /*********************************************************************** * RealizePalette16 (USER.283) */ -UINT16 RealizePalette16( HDC16 hDC ) +UINT16 WINAPI RealizePalette16( HDC16 hDC ) { return RealizePalette32( hDC ); } @@ -593,7 +651,7 @@ /*********************************************************************** * RealizePalette32 (GDI32.280) */ -UINT32 RealizePalette32( HDC32 hDC ) +UINT32 WINAPI RealizePalette32( HDC32 hDC ) { UINT32 realized = GDIRealizePalette( hDC ); @@ -615,7 +673,7 @@ /********************************************************************** * UpdateColors16 (GDI.366) */ -INT16 UpdateColors16( HDC16 hDC ) +INT16 WINAPI UpdateColors16( HDC16 hDC ) { HWND32 hWnd = WindowFromDC32( hDC ); @@ -631,7 +689,7 @@ /********************************************************************** * UpdateColors32 (GDI32.359) */ -BOOL32 UpdateColors32( HDC32 hDC ) +BOOL32 WINAPI UpdateColors32( HDC32 hDC ) { UpdateColors16( hDC ); return TRUE;
diff --git a/objects/pen.c b/objects/pen.c index f33b791..c2c63ad 100644 --- a/objects/pen.c +++ b/objects/pen.c
@@ -15,7 +15,7 @@ /*********************************************************************** * CreatePen16 (GDI.61) */ -HPEN16 CreatePen16( INT16 style, INT16 width, COLORREF color ) +HPEN16 WINAPI CreatePen16( INT16 style, INT16 width, COLORREF color ) { LOGPEN32 logpen = { style, { width, 0 }, color }; dprintf_gdi(stddeb, "CreatePen16: %d %d %06lx\n", style, width, color ); @@ -26,7 +26,7 @@ /*********************************************************************** * CreatePen32 (GDI32.55) */ -HPEN32 CreatePen32( INT32 style, INT32 width, COLORREF color ) +HPEN32 WINAPI CreatePen32( INT32 style, INT32 width, COLORREF color ) { LOGPEN32 logpen = { style, { width, 0 }, color }; dprintf_gdi(stddeb, "CreatePen32: %d %d %06lx\n", style, width, color ); @@ -37,7 +37,7 @@ /*********************************************************************** * CreatePenIndirect16 (GDI.62) */ -HPEN16 CreatePenIndirect16( const LOGPEN16 * pen ) +HPEN16 WINAPI CreatePenIndirect16( const LOGPEN16 * pen ) { PENOBJ * penPtr; HPEN16 hpen; @@ -45,10 +45,11 @@ if (pen->lopnStyle > PS_INSIDEFRAME) return 0; hpen = GDI_AllocObject( sizeof(PENOBJ), PEN_MAGIC ); if (!hpen) return 0; - penPtr = (PENOBJ *)GDI_HEAP_LIN_ADDR( hpen ); + penPtr = (PENOBJ *)GDI_HEAP_LOCK( hpen ); penPtr->logpen.lopnStyle = pen->lopnStyle; penPtr->logpen.lopnColor = pen->lopnColor; CONV_POINT16TO32( &pen->lopnWidth, &penPtr->logpen.lopnWidth ); + GDI_HEAP_UNLOCK( hpen ); return hpen; } @@ -56,7 +57,7 @@ /*********************************************************************** * CreatePenIndirect32 (GDI32.56) */ -HPEN32 CreatePenIndirect32( const LOGPEN32 * pen ) +HPEN32 WINAPI CreatePenIndirect32( const LOGPEN32 * pen ) { PENOBJ * penPtr; HPEN32 hpen; @@ -64,10 +65,11 @@ if (pen->lopnStyle > PS_INSIDEFRAME) return 0; hpen = GDI_AllocObject( sizeof(PENOBJ), PEN_MAGIC ); if (!hpen) return 0; - penPtr = (PENOBJ *)GDI_HEAP_LIN_ADDR( hpen ); + penPtr = (PENOBJ *)GDI_HEAP_LOCK( hpen ); penPtr->logpen.lopnStyle = pen->lopnStyle; penPtr->logpen.lopnWidth = pen->lopnWidth; penPtr->logpen.lopnColor = pen->lopnColor; + GDI_HEAP_UNLOCK( hpen ); return hpen; }
diff --git a/objects/region.c b/objects/region.c index 9148e6d..a8e86e8 100644 --- a/objects/region.c +++ b/objects/region.c
@@ -27,7 +27,7 @@ /*********************************************************************** * OffsetRgn16 (GDI.101) */ -INT16 OffsetRgn16( HRGN16 hrgn, INT16 x, INT16 y ) +INT16 WINAPI OffsetRgn16( HRGN16 hrgn, INT16 x, INT16 y ) { return OffsetRgn32( hrgn, x, y ); } @@ -36,13 +36,18 @@ /*********************************************************************** * OffsetRgn32 (GDI32.256) */ -INT32 OffsetRgn32( HRGN32 hrgn, INT32 x, INT32 y ) +INT32 WINAPI OffsetRgn32( HRGN32 hrgn, INT32 x, INT32 y ) { RGNOBJ * obj = (RGNOBJ *) GDI_GetObjPtr( hrgn, REGION_MAGIC ); if (!obj) return ERROR; dprintf_region(stddeb, "OffsetRgn: %04x %d,%d\n", hrgn, x, y ); - if (!obj->xrgn) return NULLREGION; + if (!obj->xrgn) + { + GDI_HEAP_UNLOCK( hrgn ); + return NULLREGION; + } XOffsetRegion( obj->xrgn, x, y ); + GDI_HEAP_UNLOCK( hrgn ); return COMPLEXREGION; } @@ -50,7 +55,7 @@ /*********************************************************************** * GetRgnBox16 (GDI.134) */ -INT16 GetRgnBox16( HRGN16 hrgn, LPRECT16 rect ) +INT16 WINAPI GetRgnBox16( HRGN16 hrgn, LPRECT16 rect ) { RGNOBJ * obj = (RGNOBJ *) GDI_GetObjPtr( hrgn, REGION_MAGIC ); if (!obj) return ERROR; @@ -58,12 +63,14 @@ if (!obj->xrgn) { SetRectEmpty16( rect ); + GDI_HEAP_UNLOCK( hrgn ); return NULLREGION; } else { XRectangle xrect; XClipBox( obj->xrgn, &xrect ); + GDI_HEAP_UNLOCK(hrgn); SetRect16( rect, xrect.x, xrect.y, xrect.x + xrect.width, xrect.y + xrect.height); return COMPLEXREGION; @@ -74,7 +81,7 @@ /*********************************************************************** * GetRgnBox32 (GDI32.219) */ -INT32 GetRgnBox32( HRGN32 hrgn, LPRECT32 rect ) +INT32 WINAPI GetRgnBox32( HRGN32 hrgn, LPRECT32 rect ) { RECT16 r; INT16 ret = GetRgnBox16( hrgn, &r ); @@ -86,7 +93,7 @@ /*********************************************************************** * CreateRectRgn16 (GDI.64) */ -HRGN16 CreateRectRgn16( INT16 left, INT16 top, INT16 right, INT16 bottom ) +HRGN16 WINAPI CreateRectRgn16(INT16 left, INT16 top, INT16 right, INT16 bottom) { return (HRGN16)CreateRectRgn32( left, top, right, bottom ); } @@ -95,13 +102,13 @@ /*********************************************************************** * CreateRectRgn32 (GDI32.59) */ -HRGN32 CreateRectRgn32( INT32 left, INT32 top, INT32 right, INT32 bottom ) +HRGN32 WINAPI CreateRectRgn32(INT32 left, INT32 top, INT32 right, INT32 bottom) { HRGN32 hrgn; RGNOBJ *obj; if (!(hrgn = GDI_AllocObject( sizeof(RGNOBJ), REGION_MAGIC ))) return 0; - obj = (RGNOBJ *) GDI_HEAP_LIN_ADDR( hrgn ); + obj = (RGNOBJ *) GDI_HEAP_LOCK( hrgn ); if ((right > left) && (bottom > top)) { XRectangle rect = { left, top, right - left, bottom - top }; @@ -115,6 +122,7 @@ else obj->xrgn = 0; dprintf_region( stddeb, "CreateRectRgn(%d,%d-%d,%d): returning %04x\n", left, top, right, bottom, hrgn ); + GDI_HEAP_UNLOCK( hrgn ); return hrgn; } @@ -122,7 +130,7 @@ /*********************************************************************** * CreateRectRgnIndirect16 (GDI.65) */ -HRGN16 CreateRectRgnIndirect16( const RECT16* rect ) +HRGN16 WINAPI CreateRectRgnIndirect16( const RECT16* rect ) { return CreateRectRgn32( rect->left, rect->top, rect->right, rect->bottom ); } @@ -131,7 +139,7 @@ /*********************************************************************** * CreateRectRgnIndirect32 (GDI32.60) */ -HRGN32 CreateRectRgnIndirect32( const RECT32* rect ) +HRGN32 WINAPI CreateRectRgnIndirect32( const RECT32* rect ) { return CreateRectRgn32( rect->left, rect->top, rect->right, rect->bottom ); } @@ -140,8 +148,8 @@ /*********************************************************************** * SetRectRgn16 (GDI.172) */ -VOID SetRectRgn16( HRGN16 hrgn, INT16 left, INT16 top, - INT16 right, INT16 bottom ) +VOID WINAPI SetRectRgn16( HRGN16 hrgn, INT16 left, INT16 top, + INT16 right, INT16 bottom ) { SetRectRgn32( hrgn, left, top, right, bottom ); } @@ -150,8 +158,8 @@ /*********************************************************************** * SetRectRgn32 (GDI32.332) */ -VOID SetRectRgn32( HRGN32 hrgn, INT32 left, INT32 top, - INT32 right, INT32 bottom ) +VOID WINAPI SetRectRgn32( HRGN32 hrgn, INT32 left, INT32 top, + INT32 right, INT32 bottom ) { RGNOBJ * obj; @@ -167,14 +175,16 @@ XUnionRectWithRegion( &rect, obj->xrgn, obj->xrgn ); } else obj->xrgn = 0; + GDI_HEAP_UNLOCK( hrgn ); } /*********************************************************************** * CreateRoundRectRgn16 (GDI.444) */ -HRGN16 CreateRoundRectRgn16( INT16 left, INT16 top, INT16 right, INT16 bottom, - INT16 ellipse_width, INT16 ellipse_height ) +HRGN16 WINAPI CreateRoundRectRgn16( INT16 left, INT16 top, + INT16 right, INT16 bottom, + INT16 ellipse_width, INT16 ellipse_height ) { return (HRGN16)CreateRoundRectRgn32( left, top, right, bottom, ellipse_width, ellipse_height ); @@ -184,8 +194,9 @@ /*********************************************************************** * CreateRoundRectRgn32 (GDI32.61) */ -HRGN32 CreateRoundRectRgn32( INT32 left, INT32 top, INT32 right, INT32 bottom, - INT32 ellipse_width, INT32 ellipse_height ) +HRGN32 WINAPI CreateRoundRectRgn32( INT32 left, INT32 top, + INT32 right, INT32 bottom, + INT32 ellipse_width, INT32 ellipse_height ) { RGNOBJ * obj; HRGN32 hrgn; @@ -201,7 +212,7 @@ /* Create region */ if (!(hrgn = GDI_AllocObject( sizeof(RGNOBJ), REGION_MAGIC ))) return 0; - obj = (RGNOBJ *) GDI_HEAP_LIN_ADDR( hrgn ); + obj = (RGNOBJ *) GDI_HEAP_LOCK( hrgn ); obj->xrgn = XCreateRegion(); dprintf_region(stddeb,"CreateRoundRectRgn(%d,%d-%d,%d %dx%d): return=%04x\n", left, top, right, bottom, ellipse_width, ellipse_height, hrgn ); @@ -273,6 +284,7 @@ rect.height = bottom - top + 1; XUnionRectWithRegion( &rect, obj->xrgn, obj->xrgn ); } + GDI_HEAP_UNLOCK( hrgn ); return hrgn; } @@ -280,7 +292,8 @@ /*********************************************************************** * CreateEllipticRgn16 (GDI.54) */ -HRGN16 CreateEllipticRgn16( INT16 left, INT16 top, INT16 right, INT16 bottom ) +HRGN16 WINAPI CreateEllipticRgn16( INT16 left, INT16 top, + INT16 right, INT16 bottom ) { return (HRGN16)CreateRoundRectRgn32( left, top, right, bottom, right-left, bottom-top ); @@ -290,7 +303,8 @@ /*********************************************************************** * CreateEllipticRgn32 (GDI32.39) */ -HRGN32 CreateEllipticRgn32( INT32 left, INT32 top, INT32 right, INT32 bottom ) +HRGN32 WINAPI CreateEllipticRgn32( INT32 left, INT32 top, + INT32 right, INT32 bottom ) { return CreateRoundRectRgn32( left, top, right, bottom, right-left, bottom-top ); @@ -300,7 +314,7 @@ /*********************************************************************** * CreateEllipticRgnIndirect16 (GDI.55) */ -HRGN16 CreateEllipticRgnIndirect16( const RECT16 *rect ) +HRGN16 WINAPI CreateEllipticRgnIndirect16( const RECT16 *rect ) { return CreateRoundRectRgn32( rect->left, rect->top, rect->right, rect->bottom, rect->right - rect->left, @@ -311,7 +325,7 @@ /*********************************************************************** * CreateEllipticRgnIndirect32 (GDI32.40) */ -HRGN32 CreateEllipticRgnIndirect32( const RECT32 *rect ) +HRGN32 WINAPI CreateEllipticRgnIndirect32( const RECT32 *rect ) { return CreateRoundRectRgn32( rect->left, rect->top, rect->right, rect->bottom, rect->right - rect->left, @@ -322,7 +336,8 @@ /*********************************************************************** * CreatePolygonRgn16 (GDI.63) */ -HRGN16 CreatePolygonRgn16( const POINT16 * points, INT16 count, INT16 mode ) +HRGN16 WINAPI CreatePolygonRgn16( const POINT16 * points, INT16 count, + INT16 mode ) { return CreatePolyPolygonRgn16( points, &count, 1, mode ); } @@ -331,8 +346,9 @@ /*********************************************************************** * CreatePolyPolygonRgn16 (GDI.451) */ -HRGN16 CreatePolyPolygonRgn16( const POINT16 * points, const INT16 * count, - INT16 nbpolygons, INT16 mode ) +HRGN16 WINAPI CreatePolyPolygonRgn16( const POINT16 * points, + const INT16 * count, + INT16 nbpolygons, INT16 mode ) { int i,nrofpts; LPINT32 count32; @@ -360,7 +376,8 @@ /*********************************************************************** * CreatePolygonRgn32 (GDI32.58) */ -HRGN32 CreatePolygonRgn32( const POINT32 *points, INT32 count, INT32 mode ) +HRGN32 WINAPI CreatePolygonRgn32( const POINT32 *points, INT32 count, + INT32 mode ) { return CreatePolyPolygonRgn32( points, &count, 1, mode ); } @@ -369,8 +386,9 @@ /*********************************************************************** * CreatePolyPolygonRgn32 (GDI32.57) */ -HRGN32 CreatePolyPolygonRgn32( const POINT32 * points, const INT32 * count, - INT32 nbpolygons, INT32 mode ) +HRGN32 WINAPI CreatePolyPolygonRgn32( const POINT32 * points, + const INT32 * count, + INT32 nbpolygons, INT32 mode ) { RGNOBJ * obj; HRGN32 hrgn; @@ -395,7 +413,7 @@ HeapFree( GetProcessHeap(), 0, xpoints ); return 0; } - obj = (RGNOBJ *) GDI_HEAP_LIN_ADDR( hrgn ); + obj = (RGNOBJ *) GDI_HEAP_LOCK( hrgn ); obj->xrgn = 0; dprintf_region(stddeb, "CreatePolyPolygonRgn: %d polygons, returning %04x\n", nbpolygons, hrgn ); @@ -430,6 +448,7 @@ } HeapFree( GetProcessHeap(), 0, xpoints ); + GDI_HEAP_UNLOCK( hrgn ); return hrgn; } @@ -437,7 +456,7 @@ /*********************************************************************** * PtInRegion16 (GDI.161) */ -BOOL16 PtInRegion16( HRGN16 hrgn, INT16 x, INT16 y ) +BOOL16 WINAPI PtInRegion16( HRGN16 hrgn, INT16 x, INT16 y ) { return PtInRegion32( hrgn, x, y ); } @@ -446,50 +465,59 @@ /*********************************************************************** * PtInRegion32 (GDI32.278) */ -BOOL32 PtInRegion32( HRGN32 hrgn, INT32 x, INT32 y ) +BOOL32 WINAPI PtInRegion32( HRGN32 hrgn, INT32 x, INT32 y ) { RGNOBJ * obj; + BOOL32 result; if (!(obj = (RGNOBJ *) GDI_GetObjPtr( hrgn, REGION_MAGIC ))) return FALSE; - if (!obj->xrgn) return FALSE; - return XPointInRegion( obj->xrgn, x, y ); + if (!obj->xrgn) result = FALSE; + else result = XPointInRegion( obj->xrgn, x, y ); + GDI_HEAP_UNLOCK( hrgn ); + return result; } /*********************************************************************** * RectInRegion16 (GDI.181) */ -BOOL16 RectInRegion16( HRGN16 hrgn, const RECT16 *rect ) +BOOL16 WINAPI RectInRegion16( HRGN16 hrgn, const RECT16 *rect ) { RGNOBJ * obj; - + BOOL16 result; + if (!(obj = (RGNOBJ *) GDI_GetObjPtr( hrgn, REGION_MAGIC ))) return FALSE; - if (!obj->xrgn) return FALSE; - return (XRectInRegion( obj->xrgn, rect->left, rect->top, + if (!obj->xrgn) result = FALSE; + else result = (XRectInRegion( obj->xrgn, rect->left, rect->top, rect->right-rect->left, rect->bottom-rect->top ) != RectangleOut); + GDI_HEAP_UNLOCK( hrgn ); + return result; } /*********************************************************************** * RectInRegion32 (GDI32.281) */ -BOOL32 RectInRegion32( HRGN32 hrgn, const RECT32 *rect ) +BOOL32 WINAPI RectInRegion32( HRGN32 hrgn, const RECT32 *rect ) { RGNOBJ * obj; + BOOL32 result; if (!(obj = (RGNOBJ *) GDI_GetObjPtr( hrgn, REGION_MAGIC ))) return FALSE; - if (!obj->xrgn) return FALSE; - return (XRectInRegion( obj->xrgn, rect->left, rect->top, + if (!obj->xrgn) result = FALSE; + else result = (XRectInRegion( obj->xrgn, rect->left, rect->top, rect->right-rect->left, rect->bottom-rect->top ) != RectangleOut); + GDI_HEAP_UNLOCK( hrgn ); + return result; } /*********************************************************************** * EqualRgn16 (GDI.72) */ -BOOL16 EqualRgn16( HRGN16 rgn1, HRGN16 rgn2 ) +BOOL16 WINAPI EqualRgn16( HRGN16 rgn1, HRGN16 rgn2 ) { return EqualRgn32( rgn1, rgn2 ); } @@ -498,13 +526,22 @@ /*********************************************************************** * EqualRgn32 (GDI32.90) */ -BOOL32 EqualRgn32( HRGN32 rgn1, HRGN32 rgn2 ) +BOOL32 WINAPI EqualRgn32( HRGN32 rgn1, HRGN32 rgn2 ) { RGNOBJ *obj1, *obj2; + BOOL32 result; + if (!(obj1 = (RGNOBJ *) GDI_GetObjPtr( rgn1, REGION_MAGIC ))) return FALSE; - if (!(obj2 = (RGNOBJ *) GDI_GetObjPtr( rgn2, REGION_MAGIC ))) return FALSE; - if (!obj1->xrgn || !obj2->xrgn) return (!obj1->xrgn && !obj2->xrgn); - return XEqualRegion( obj1->xrgn, obj2->xrgn ); + if (!(obj2 = (RGNOBJ *) GDI_GetObjPtr( rgn2, REGION_MAGIC ))) + { + GDI_HEAP_UNLOCK( rgn1 ); + return FALSE; + } + if (!obj1->xrgn || !obj2->xrgn) result = (!obj1->xrgn && !obj2->xrgn); + else result = XEqualRegion( obj1->xrgn, obj2->xrgn ); + GDI_HEAP_UNLOCK( rgn1 ); + GDI_HEAP_UNLOCK( rgn2 ); + return result; } @@ -558,6 +595,7 @@ else ret = COMPLEXREGION; XUnionRectWithRegion( &rect, rgnObj->xrgn, rgnObj->xrgn ); + GDI_HEAP_UNLOCK( hRgn ); } return ret; } @@ -575,13 +613,20 @@ destObj = (RGNOBJ*) GDI_GetObjPtr( hDest, REGION_MAGIC ); srcObj = (RGNOBJ*) GDI_GetObjPtr( hSrc, REGION_MAGIC ); - if (!srcObj->xrgn) return FALSE; + if (!srcObj->xrgn) + { + GDI_HEAP_UNLOCK( hDest ); + GDI_HEAP_UNLOCK( hSrc ); + return FALSE; + } REGION_CopyRegion( srcObj, destObj ); XShrinkRegion( destObj->xrgn, -x, -y ); result = XCreateRegion(); XSubtractRegion( destObj->xrgn, srcObj->xrgn, result ); XDestroyRegion( destObj->xrgn ); destObj->xrgn = result; + GDI_HEAP_UNLOCK( hDest ); + GDI_HEAP_UNLOCK( hSrc ); return TRUE; } @@ -589,7 +634,7 @@ /*********************************************************************** * CombineRgn16 (GDI.451) */ -INT16 CombineRgn16( HRGN16 hDest, HRGN16 hSrc1, HRGN16 hSrc2, INT16 mode ) +INT16 WINAPI CombineRgn16(HRGN16 hDest, HRGN16 hSrc1, HRGN16 hSrc2, INT16 mode) { return (INT16)CombineRgn32( hDest, hSrc1, hSrc2, mode ); } @@ -600,10 +645,11 @@ * * Note: The behavior is correct even if src and dest regions are the same. */ -INT32 CombineRgn32( HRGN32 hDest, HRGN32 hSrc1, HRGN32 hSrc2, INT32 mode ) +INT32 WINAPI CombineRgn32(HRGN32 hDest, HRGN32 hSrc1, HRGN32 hSrc2, INT32 mode) { RGNOBJ *destObj, *src1Obj, *src2Obj; Region destrgn; + INT32 result; dprintf_region(stddeb, "CombineRgn: %04x,%04x -> %04x mode=%x\n", hSrc1, hSrc2, hDest, mode ); @@ -611,12 +657,24 @@ if (!(destObj = (RGNOBJ *) GDI_GetObjPtr( hDest, REGION_MAGIC ))) return ERROR; if (!(src1Obj = (RGNOBJ *) GDI_GetObjPtr( hSrc1, REGION_MAGIC ))) + { + GDI_HEAP_UNLOCK( hDest ); return ERROR; - if (mode == RGN_COPY) return REGION_CopyRegion( src1Obj, destObj ); + } + if (mode == RGN_COPY) + { + result = REGION_CopyRegion( src1Obj, destObj ); + GDI_HEAP_UNLOCK( hDest ); + GDI_HEAP_UNLOCK( hSrc1 ); + return result; + } if (!(src2Obj = (RGNOBJ *) GDI_GetObjPtr( hSrc2, REGION_MAGIC ))) - return ERROR; - + { + GDI_HEAP_UNLOCK( hDest ); + GDI_HEAP_UNLOCK( hSrc1 ); + return ERROR; + } /* Some optimizations for null regions */ if (!src1Obj->xrgn || !src2Obj->xrgn) @@ -625,26 +683,48 @@ { case RGN_DIFF: if (src1Obj->xrgn) - return REGION_CopyRegion( src1Obj, destObj ); + { + result = REGION_CopyRegion( src1Obj, destObj ); + GDI_HEAP_UNLOCK( hDest ); + GDI_HEAP_UNLOCK( hSrc1 ); + GDI_HEAP_UNLOCK( hSrc2 ); + return result; + } /* else fall through */ case RGN_AND: if (destObj->xrgn) XDestroyRegion( destObj->xrgn ); destObj->xrgn = 0; + GDI_HEAP_UNLOCK( hDest ); + GDI_HEAP_UNLOCK( hSrc1 ); + GDI_HEAP_UNLOCK( hSrc2 ); return NULLREGION; case RGN_OR: case RGN_XOR: if (src1Obj->xrgn) - return REGION_CopyRegion( src1Obj, destObj ); + result = REGION_CopyRegion( src1Obj, destObj ); else - return REGION_CopyRegion( src2Obj, destObj ); + result = REGION_CopyRegion( src2Obj, destObj ); + GDI_HEAP_UNLOCK( hDest ); + GDI_HEAP_UNLOCK( hSrc1 ); + GDI_HEAP_UNLOCK( hSrc2 ); + return result; default: + GDI_HEAP_UNLOCK( hDest ); + GDI_HEAP_UNLOCK( hSrc1 ); + GDI_HEAP_UNLOCK( hSrc2 ); return ERROR; } } /* Perform the operation with the two X regions */ - if (!(destrgn = XCreateRegion())) return ERROR; + if (!(destrgn = XCreateRegion())) + { + GDI_HEAP_UNLOCK( hDest ); + GDI_HEAP_UNLOCK( hSrc1 ); + GDI_HEAP_UNLOCK( hSrc2 ); + return ERROR; + } switch(mode) { case RGN_AND: @@ -661,6 +741,9 @@ break; default: XDestroyRegion( destrgn ); + GDI_HEAP_UNLOCK( hDest ); + GDI_HEAP_UNLOCK( hSrc1 ); + GDI_HEAP_UNLOCK( hSrc2 ); return ERROR; } if (destObj->xrgn) XDestroyRegion( destObj->xrgn ); @@ -669,7 +752,13 @@ { XDestroyRegion( destObj->xrgn ); destObj->xrgn = 0; + GDI_HEAP_UNLOCK( hDest ); + GDI_HEAP_UNLOCK( hSrc1 ); + GDI_HEAP_UNLOCK( hSrc2 ); return NULLREGION; } + GDI_HEAP_UNLOCK( hDest ); + GDI_HEAP_UNLOCK( hSrc1 ); + GDI_HEAP_UNLOCK( hSrc2 ); return COMPLEXREGION; }
diff --git a/objects/text.c b/objects/text.c index 176ddd6..1b46830 100644 --- a/objects/text.c +++ b/objects/text.c
@@ -182,8 +182,8 @@ /*********************************************************************** * DrawText16 (USER.85) */ -INT16 DrawText16( HDC16 hdc, LPCSTR str, INT16 i_count, - LPRECT16 rect, UINT16 flags ) +INT16 WINAPI DrawText16( HDC16 hdc, LPCSTR str, INT16 i_count, + LPRECT16 rect, UINT16 flags ) { SIZE16 size; const char *strPtr; @@ -285,8 +285,8 @@ /*********************************************************************** * DrawText32A (USER32.163) */ -INT32 DrawText32A( HDC32 hdc, LPCSTR str, INT32 count, - LPRECT32 rect, UINT32 flags ) +INT32 WINAPI DrawText32A( HDC32 hdc, LPCSTR str, INT32 count, + LPRECT32 rect, UINT32 flags ) { RECT16 rect16; INT16 ret; @@ -303,8 +303,8 @@ /*********************************************************************** * DrawText32W (USER32.166) */ -INT32 DrawText32W( HDC32 hdc, LPCWSTR str, INT32 count, - LPRECT32 rect, UINT32 flags ) +INT32 WINAPI DrawText32W( HDC32 hdc, LPCWSTR str, INT32 count, + LPRECT32 rect, UINT32 flags ) { LPSTR p = HEAP_strdupWtoA( GetProcessHeap(), 0, str ); INT32 ret = DrawText32A( hdc, p, count, rect, flags ); @@ -316,9 +316,9 @@ /*********************************************************************** * ExtTextOut16 (GDI.351) */ -BOOL16 ExtTextOut16( HDC16 hdc, INT16 x, INT16 y, UINT16 flags, - const RECT16 *lprect, LPCSTR str, UINT16 count, - const INT16 *lpDx ) +BOOL16 WINAPI ExtTextOut16( HDC16 hdc, INT16 x, INT16 y, UINT16 flags, + const RECT16 *lprect, LPCSTR str, UINT16 count, + const INT16 *lpDx ) { BOOL32 ret; int i; @@ -338,9 +338,9 @@ /*********************************************************************** * ExtTextOut32A (GDI32.98) */ -BOOL32 ExtTextOut32A( HDC32 hdc, INT32 x, INT32 y, UINT32 flags, - const RECT32 *lprect, LPCSTR str, UINT32 count, - const INT32 *lpDx ) +BOOL32 WINAPI ExtTextOut32A( HDC32 hdc, INT32 x, INT32 y, UINT32 flags, + const RECT32 *lprect, LPCSTR str, UINT32 count, + const INT32 *lpDx ) { DC * dc = DC_GetDCPtr( hdc ); return dc && dc->funcs->pExtTextOut && @@ -351,9 +351,9 @@ /*********************************************************************** * ExtTextOut32W (GDI32.99) */ -BOOL32 ExtTextOut32W( HDC32 hdc, INT32 x, INT32 y, UINT32 flags, - const RECT32 *lprect, LPCWSTR str, UINT32 count, - const INT32 *lpDx ) +BOOL32 WINAPI ExtTextOut32W( HDC32 hdc, INT32 x, INT32 y, UINT32 flags, + const RECT32 *lprect, LPCWSTR str, UINT32 count, + const INT32 *lpDx ) { LPSTR p = HEAP_strdupWtoA( GetProcessHeap(), 0, str ); INT32 ret = ExtTextOut32A( hdc, x, y, flags, lprect, p, count, lpDx ); @@ -365,7 +365,7 @@ /*********************************************************************** * TextOut16 (GDI.33) */ -BOOL16 TextOut16( HDC16 hdc, INT16 x, INT16 y, LPCSTR str, INT16 count ) +BOOL16 WINAPI TextOut16( HDC16 hdc, INT16 x, INT16 y, LPCSTR str, INT16 count ) { return ExtTextOut16( hdc, x, y, 0, NULL, str, count, NULL ); } @@ -374,7 +374,7 @@ /*********************************************************************** * TextOut32A (GDI32.355) */ -BOOL32 TextOut32A( HDC32 hdc, INT32 x, INT32 y, LPCSTR str, INT32 count ) +BOOL32 WINAPI TextOut32A( HDC32 hdc, INT32 x, INT32 y, LPCSTR str, INT32 count ) { return ExtTextOut32A( hdc, x, y, 0, NULL, str, count, NULL ); } @@ -383,7 +383,7 @@ /*********************************************************************** * TextOut32W (GDI32.356) */ -BOOL32 TextOut32W( HDC32 hdc, INT32 x, INT32 y, LPCWSTR str, INT32 count ) +BOOL32 WINAPI TextOut32W(HDC32 hdc, INT32 x, INT32 y, LPCWSTR str, INT32 count) { return ExtTextOut32W( hdc, x, y, 0, NULL, str, count, NULL ); } @@ -392,9 +392,9 @@ /*********************************************************************** * GrayString16 (USER.185) */ -BOOL16 GrayString16( HDC16 hdc, HBRUSH16 hbr, GRAYSTRINGPROC16 gsprc, - LPARAM lParam, INT16 cch, INT16 x, INT16 y, - INT16 cx, INT16 cy ) +BOOL16 WINAPI GrayString16( HDC16 hdc, HBRUSH16 hbr, GRAYSTRINGPROC16 gsprc, + LPARAM lParam, INT16 cch, INT16 x, INT16 y, + INT16 cx, INT16 cy ) { BOOL16 ret; COLORREF current_color; @@ -411,9 +411,9 @@ /*********************************************************************** * GrayString32A (USER32.314) */ -BOOL32 GrayString32A( HDC32 hdc, HBRUSH32 hbr, GRAYSTRINGPROC32 gsprc, - LPARAM lParam, INT32 cch, INT32 x, INT32 y, - INT32 cx, INT32 cy ) +BOOL32 WINAPI GrayString32A( HDC32 hdc, HBRUSH32 hbr, GRAYSTRINGPROC32 gsprc, + LPARAM lParam, INT32 cch, INT32 x, INT32 y, + INT32 cx, INT32 cy ) { BOOL32 ret; COLORREF current_color; @@ -430,9 +430,9 @@ /*********************************************************************** * GrayString32W (USER32.315) */ -BOOL32 GrayString32W( HDC32 hdc, HBRUSH32 hbr, GRAYSTRINGPROC32 gsprc, - LPARAM lParam, INT32 cch, INT32 x, INT32 y, - INT32 cx, INT32 cy ) +BOOL32 WINAPI GrayString32W( HDC32 hdc, HBRUSH32 hbr, GRAYSTRINGPROC32 gsprc, + LPARAM lParam, INT32 cch, INT32 x, INT32 y, + INT32 cx, INT32 cy ) { BOOL32 ret; COLORREF current_color; @@ -523,8 +523,9 @@ /*********************************************************************** * TabbedTextOut16 (USER.196) */ -LONG TabbedTextOut16( HDC16 hdc, INT16 x, INT16 y, LPCSTR lpstr, INT16 count, - INT16 cTabStops, const INT16 *lpTabPos, INT16 nTabOrg ) +LONG WINAPI TabbedTextOut16( HDC16 hdc, INT16 x, INT16 y, LPCSTR lpstr, + INT16 count, INT16 cTabStops, + const INT16 *lpTabPos, INT16 nTabOrg ) { dprintf_text( stddeb, "TabbedTextOut16: %04x %d,%d '%.*s' %d\n", hdc, x, y, count, lpstr, count ); @@ -536,8 +537,9 @@ /*********************************************************************** * TabbedTextOut32A (USER32.541) */ -LONG TabbedTextOut32A( HDC32 hdc, INT32 x, INT32 y, LPCSTR lpstr, INT32 count, - INT32 cTabStops, const INT32 *lpTabPos, INT32 nTabOrg ) +LONG WINAPI TabbedTextOut32A( HDC32 hdc, INT32 x, INT32 y, LPCSTR lpstr, + INT32 count, INT32 cTabStops, + const INT32 *lpTabPos, INT32 nTabOrg ) { dprintf_text( stddeb, "TabbedTextOut32A: %04x %d,%d '%.*s' %d\n", hdc, x, y, count, lpstr, count ); @@ -549,8 +551,9 @@ /*********************************************************************** * TabbedTextOut32W (USER32.542) */ -LONG TabbedTextOut32W( HDC32 hdc, INT32 x, INT32 y, LPCWSTR str, INT32 count, - INT32 cTabStops, const INT32 *lpTabPos, INT32 nTabOrg ) +LONG WINAPI TabbedTextOut32W( HDC32 hdc, INT32 x, INT32 y, LPCWSTR str, + INT32 count, INT32 cTabStops, + const INT32 *lpTabPos, INT32 nTabOrg ) { LONG ret; LPSTR p = HEAP_xalloc( GetProcessHeap(), 0, count + 1 ); @@ -565,8 +568,8 @@ /*********************************************************************** * GetTabbedTextExtent16 (USER.197) */ -DWORD GetTabbedTextExtent16( HDC16 hdc, LPCSTR lpstr, INT16 count, - INT16 cTabStops, const INT16 *lpTabPos ) +DWORD WINAPI GetTabbedTextExtent16( HDC16 hdc, LPCSTR lpstr, INT16 count, + INT16 cTabStops, const INT16 *lpTabPos ) { dprintf_text( stddeb, "GetTabbedTextExtent: %04x '%.*s' %d\n", hdc, count, lpstr, count ); @@ -578,8 +581,8 @@ /*********************************************************************** * GetTabbedTextExtent32A (USER32.292) */ -DWORD GetTabbedTextExtent32A( HDC32 hdc, LPCSTR lpstr, INT32 count, - INT32 cTabStops, const INT32 *lpTabPos ) +DWORD WINAPI GetTabbedTextExtent32A( HDC32 hdc, LPCSTR lpstr, INT32 count, + INT32 cTabStops, const INT32 *lpTabPos ) { dprintf_text( stddeb, "GetTabbedTextExtent: %04x '%.*s' %d\n", hdc, count, lpstr, count ); @@ -591,8 +594,8 @@ /*********************************************************************** * GetTabbedTextExtent32W (USER32.293) */ -DWORD GetTabbedTextExtent32W( HDC32 hdc, LPCWSTR lpstr, INT32 count, - INT32 cTabStops, const INT32 *lpTabPos ) +DWORD WINAPI GetTabbedTextExtent32W( HDC32 hdc, LPCWSTR lpstr, INT32 count, + INT32 cTabStops, const INT32 *lpTabPos ) { LONG ret; LPSTR p = HEAP_xalloc( GetProcessHeap(), 0, count + 1 ); @@ -605,11 +608,13 @@ /*********************************************************************** * GetTextCharset (USER32.226) (USER.612) */ -INT32 GetTextCharset32(HDC32 hdc) { +INT32 WINAPI GetTextCharset32(HDC32 hdc) +{ fprintf(stdnimp,"GetTextCharset(0x%x)\n",hdc); return DEFAULT_CHARSET; /* FIXME */ } -INT16 GetTextCharset16(HDC16 hdc) { +INT16 WINAPI GetTextCharset16(HDC16 hdc) +{ return GetTextCharset32(hdc); }
diff --git a/scheduler/process.c b/scheduler/process.c index 05fa39d..2819562 100644 --- a/scheduler/process.c +++ b/scheduler/process.c
@@ -219,7 +219,7 @@ /********************************************************************* * CloseHandle (KERNEL32.23) */ -BOOL32 CloseHandle( HANDLE32 handle ) +BOOL32 WINAPI CloseHandle( HANDLE32 handle ) { BOOL32 ret = FALSE; K32OBJ *ptr = NULL; @@ -350,7 +350,7 @@ /*********************************************************************** * ExitProcess (KERNEL32.100) */ -void ExitProcess( DWORD status ) +void WINAPI ExitProcess( DWORD status ) { TASK_KillCurrentTask( status ); } @@ -359,7 +359,7 @@ /*********************************************************************** * GetCurrentProcess (KERNEL32.198) */ -HANDLE32 GetCurrentProcess(void) +HANDLE32 WINAPI GetCurrentProcess(void) { return 0x7fffffff; } @@ -368,7 +368,7 @@ /*********************************************************************** * GetCurrentProcessId (KERNEL32.199) */ -DWORD GetCurrentProcessId(void) +DWORD WINAPI GetCurrentProcessId(void) { return (DWORD)pCurrentProcess; } @@ -377,7 +377,7 @@ /*********************************************************************** * GetEnvironmentStrings32A (KERNEL32.210) (KERNEL32.211) */ -LPSTR GetEnvironmentStrings32A(void) +LPSTR WINAPI GetEnvironmentStrings32A(void) { assert( pCurrentProcess ); return pCurrentProcess->env_db->environ; @@ -387,7 +387,7 @@ /*********************************************************************** * GetEnvironmentStrings32W (KERNEL32.212) */ -LPWSTR GetEnvironmentStrings32W(void) +LPWSTR WINAPI GetEnvironmentStrings32W(void) { INT32 size; LPWSTR ret, pW; @@ -414,7 +414,7 @@ /*********************************************************************** * FreeEnvironmentStrings32A (KERNEL32.141) */ -BOOL32 FreeEnvironmentStrings32A( LPSTR ptr ) +BOOL32 WINAPI FreeEnvironmentStrings32A( LPSTR ptr ) { assert( pCurrentProcess ); if (ptr != pCurrentProcess->env_db->environ) @@ -429,7 +429,7 @@ /*********************************************************************** * FreeEnvironmentStrings32W (KERNEL32.142) */ -BOOL32 FreeEnvironmentStrings32W( LPWSTR ptr ) +BOOL32 WINAPI FreeEnvironmentStrings32W( LPWSTR ptr ) { assert( pCurrentProcess ); return HeapFree( GetProcessHeap(), 0, ptr ); @@ -439,7 +439,7 @@ /*********************************************************************** * GetEnvironmentVariable32A (KERNEL32.213) */ -DWORD GetEnvironmentVariable32A( LPCSTR name, LPSTR value, DWORD size ) +DWORD WINAPI GetEnvironmentVariable32A( LPCSTR name, LPSTR value, DWORD size ) { LPSTR p; INT32 len, res; @@ -470,7 +470,7 @@ /*********************************************************************** * GetEnvironmentVariable32W (KERNEL32.214) */ -DWORD GetEnvironmentVariable32W( LPCWSTR nameW, LPWSTR valW, DWORD size ) +DWORD WINAPI GetEnvironmentVariable32W( LPCWSTR nameW, LPWSTR valW, DWORD size) { LPSTR name = HEAP_strdupWtoA( GetProcessHeap(), 0, nameW ); LPSTR val = HeapAlloc( GetProcessHeap(), 0, size ); @@ -485,7 +485,7 @@ /*********************************************************************** * SetEnvironmentVariable32A (KERNEL32.484) */ -BOOL32 SetEnvironmentVariable32A( LPCSTR name, LPCSTR value ) +BOOL32 WINAPI SetEnvironmentVariable32A( LPCSTR name, LPCSTR value ) { INT32 size, len, res; LPSTR p, env, new_env; @@ -535,7 +535,7 @@ /*********************************************************************** * SetEnvironmentVariable32W (KERNEL32.485) */ -BOOL32 SetEnvironmentVariable32W( LPCWSTR name, LPCWSTR value ) +BOOL32 WINAPI SetEnvironmentVariable32W( LPCWSTR name, LPCWSTR value ) { LPSTR nameA = HEAP_strdupWtoA( GetProcessHeap(), 0, name ); LPSTR valueA = HEAP_strdupWtoA( GetProcessHeap(), 0, value ); @@ -549,7 +549,8 @@ /*********************************************************************** * ExpandEnvironmentVariablesA (KERNEL32.103) */ -DWORD ExpandEnvironmentStrings32A( LPCSTR src, LPSTR dst, DWORD len) { +DWORD WINAPI ExpandEnvironmentStrings32A( LPCSTR src, LPSTR dst, DWORD len) +{ LPCSTR s; LPSTR d; HANDLE32 heap = GetProcessHeap(); @@ -622,7 +623,8 @@ /*********************************************************************** * ExpandEnvironmentVariablesA (KERNEL32.104) */ -DWORD ExpandEnvironmentStrings32W( LPCWSTR src, LPWSTR dst, DWORD len) { +DWORD WINAPI ExpandEnvironmentStrings32W( LPCWSTR src, LPWSTR dst, DWORD len) +{ HANDLE32 heap = GetProcessHeap(); LPSTR srcA = HEAP_strdupWtoA(heap,0,src); LPSTR dstA = HeapAlloc(heap,0,len); @@ -637,7 +639,7 @@ /*********************************************************************** * GetProcessHeap (KERNEL32.259) */ -HANDLE32 GetProcessHeap(void) +HANDLE32 WINAPI GetProcessHeap(void) { if (!pCurrentProcess) return SystemHeap; /* For the boot-up code */ return pCurrentProcess->heap; @@ -647,7 +649,7 @@ /*********************************************************************** * GetThreadLocale (KERNEL32.295) */ -LCID GetThreadLocale(void) +LCID WINAPI GetThreadLocale(void) { return pCurrentProcess->locale; } @@ -656,7 +658,7 @@ /*********************************************************************** * SetPriorityClass (KERNEL32.503) */ -BOOL32 SetPriorityClass( HANDLE32 hprocess, DWORD priorityclass ) +BOOL32 WINAPI SetPriorityClass( HANDLE32 hprocess, DWORD priorityclass ) { PDB32 *pdb; @@ -688,7 +690,7 @@ /*********************************************************************** * GetPriorityClass (KERNEL32.250) */ -DWORD GetPriorityClass(HANDLE32 hprocess) +DWORD WINAPI GetPriorityClass(HANDLE32 hprocess) { PDB32 *pdb; DWORD ret; @@ -726,7 +728,7 @@ * FIXME: These should be allocated when a console is created, or inherited * from the parent. */ -HANDLE32 GetStdHandle( DWORD std_handle ) +HANDLE32 WINAPI GetStdHandle( DWORD std_handle ) { HFILE32 hFile; int fd; @@ -771,7 +773,7 @@ /*********************************************************************** * SetStdHandle (KERNEL32.506) */ -BOOL32 SetStdHandle( DWORD std_handle, HANDLE32 handle ) +BOOL32 WINAPI SetStdHandle( DWORD std_handle, HANDLE32 handle ) { assert( pCurrentProcess ); switch(std_handle) @@ -793,8 +795,8 @@ /*********************************************************************** * GetProcessVersion (KERNEL32) */ -DWORD -GetProcessVersion(DWORD processid) { +DWORD WINAPI GetProcessVersion(DWORD processid) +{ PDB32 *process; TDB *pTask; @@ -808,3 +810,65 @@ return 0; return (pTask->version&0xff) | (((pTask->version >>8) & 0xff)<<16); } + +/*********************************************************************** + * SetProcessWorkingSetSize (KERNEL32) + */ +BOOL32 WINAPI SetProcessWorkingSetSize(HANDLE32 hProcess,DWORD minset, + DWORD maxset) +{ + fprintf(stderr,"SetProcessWorkingSetSize(0x%08x,%ld,%ld), STUB!\n", + hProcess,minset,maxset + ); + return TRUE; +} + +/*********************************************************************** + * GetProcessWorkingSetSize (KERNEL32) + */ +BOOL32 WINAPI GetProcessWorkingSetSize(HANDLE32 hProcess,LPDWORD minset, + LPDWORD maxset) +{ + fprintf(stderr,"SetProcessWorkingSetSize(0x%08x,%p,%p), STUB!\n", + hProcess,minset,maxset + ); + /* 32 MB working set size */ + if (minset) *minset = 32*1024*1024; + if (maxset) *maxset = 32*1024*1024; + return TRUE; +} + +/*********************************************************************** + * SetProcessShutdownParameters (KERNEL32) + */ +BOOL32 WINAPI SetProcessShutdownParameters(DWORD level,DWORD flags) +{ + fprintf(stderr,"SetProcessShutdownParameters(%ld,0x%08lx), STUB!\n", + level,flags + ); + return TRUE; +} + +/*********************************************************************** + * ReadProcessMemory (KERNEL32) + * FIXME: check this, if we ever run win32 binaries in different addressspaces + * ... and add a sizecheck + */ +BOOL32 WINAPI ReadProcessMemory( HANDLE32 hProcess, LPCVOID lpBaseAddress, + LPVOID lpBuffer, DWORD nSize, + LPDWORD lpNumberOfBytesRead ) +{ + memcpy(lpBuffer,lpBaseAddress,nSize); + if (lpNumberOfBytesRead) *lpNumberOfBytesRead = nSize; + return TRUE; +} + +/*********************************************************************** + * ConvertToGlobalHandle (KERNEL32) + * FIXME: this is not correctly implemented... + */ +HANDLE32 WINAPI ConvertToGlobalHandle(HANDLE32 h) +{ + fprintf(stderr,"ConvertToGlobalHandle(%d),stub!\n",h); + return h; +}
diff --git a/scheduler/thread.c b/scheduler/thread.c index 22f78f6..7d1bbe2 100644 --- a/scheduler/thread.c +++ b/scheduler/thread.c
@@ -12,6 +12,8 @@ #include "selectors.h" #include "miscemu.h" #include "winnt.h" +#include "debug.h" +#include "stddebug.h" THDB *pCurrentThread = NULL; @@ -114,9 +116,9 @@ * * The only thing missing here is actually getting the thread to run ;-) */ -HANDLE32 CreateThread( LPSECURITY_ATTRIBUTES attribs, DWORD stack, - LPTHREAD_START_ROUTINE start, LPVOID param, - DWORD flags, LPDWORD id ) +HANDLE32 WINAPI CreateThread( LPSECURITY_ATTRIBUTES attribs, DWORD stack, + LPTHREAD_START_ROUTINE start, LPVOID param, + DWORD flags, LPDWORD id ) { HANDLE32 handle; THDB *thread = THREAD_Create( pCurrentProcess, stack, start ); @@ -136,7 +138,7 @@ /*********************************************************************** * GetCurrentThread (KERNEL32.200) */ -HANDLE32 GetCurrentThread(void) +HANDLE32 WINAPI GetCurrentThread(void) { return 0xFFFFFFFE; } @@ -146,7 +148,7 @@ * GetCurrentThreadId (KERNEL32.201) * Returns crypted (xor'ed) pointer to THDB in Win95. */ -DWORD GetCurrentThreadId(void) +DWORD WINAPI GetCurrentThreadId(void) { /* FIXME: should probably use %fs register here */ assert( pCurrentThread ); @@ -157,7 +159,7 @@ /********************************************************************** * GetLastError (KERNEL.148) (KERNEL32.227) */ -DWORD GetLastError(void) +DWORD WINAPI GetLastError(void) { THDB *thread = (THDB *)GetCurrentThreadId(); return thread->last_error; @@ -167,7 +169,7 @@ /********************************************************************** * SetLastError (KERNEL.147) (KERNEL32.497) */ -void SetLastError( DWORD error ) +void WINAPI SetLastError( DWORD error ) { THDB *thread; if (!pCurrentThread) return; /* FIXME */ @@ -179,7 +181,7 @@ /********************************************************************** * SetLastErrorEx (USER32.484) */ -void SetLastErrorEx( DWORD error, DWORD type ) +void WINAPI SetLastErrorEx( DWORD error, DWORD type ) { /* FIXME: what about 'type'? */ SetLastError( error ); @@ -189,7 +191,7 @@ /********************************************************************** * TlsAlloc (KERNEL32.530) */ -DWORD TlsAlloc(void) +DWORD WINAPI TlsAlloc(void) { DWORD i, mask, ret = 0; THDB *thread = (THDB *)GetCurrentThreadId(); @@ -216,7 +218,7 @@ /********************************************************************** * TlsFree (KERNEL32.531) */ -BOOL32 TlsFree( DWORD index ) +BOOL32 WINAPI TlsFree( DWORD index ) { DWORD mask; THDB *thread = (THDB *)GetCurrentThreadId(); @@ -246,7 +248,7 @@ /********************************************************************** * TlsGetValue (KERNEL32.532) */ -LPVOID TlsGetValue( DWORD index ) +LPVOID WINAPI TlsGetValue( DWORD index ) { THDB *thread = (THDB *)GetCurrentThreadId(); if (index >= 64) @@ -262,7 +264,7 @@ /********************************************************************** * TlsSetValue (KERNEL32.533) */ -BOOL32 TlsSetValue( DWORD index, LPVOID value ) +BOOL32 WINAPI TlsSetValue( DWORD index, LPVOID value ) { THDB *thread = (THDB *)GetCurrentThreadId(); if (index >= 64) @@ -278,7 +280,7 @@ /*********************************************************************** * GetThreadContext (KERNEL32.294) */ -BOOL32 GetThreadContext( HANDLE32 handle, CONTEXT *context ) +BOOL32 WINAPI GetThreadContext( HANDLE32 handle, CONTEXT *context ) { THDB *thread = (THDB*)PROCESS_GetObjPtr( handle, K32OBJ_THREAD ); if (!thread) return FALSE; @@ -291,7 +293,7 @@ /********************************************************************** * NtCurrentTeb (NTDLL.89) */ -void NtCurrentTeb( CONTEXT *context ) +void WINAPI NtCurrentTeb( CONTEXT *context ) { EAX_reg(context) = GetSelectorBase( FS_reg(context) ); } @@ -300,7 +302,7 @@ /********************************************************************** * GetThreadPriority (KERNEL32.296) */ -INT32 GetThreadPriority(HANDLE32 hthread) +INT32 WINAPI GetThreadPriority(HANDLE32 hthread) { THDB *thread; INT32 ret; @@ -315,7 +317,7 @@ /********************************************************************** * SetThreadPriority (KERNEL32.514) */ -BOOL32 SetThreadPriority(HANDLE32 hthread,INT32 priority) +BOOL32 WINAPI SetThreadPriority(HANDLE32 hthread,INT32 priority) { THDB *thread; @@ -324,3 +326,12 @@ K32OBJ_DecCount( &thread->header ); return TRUE; } + +/********************************************************************** + * TerminateThread (KERNEL32) + */ +BOOL32 WINAPI TerminateThread(DWORD threadid,DWORD exitcode) +{ + fprintf(stdnimp,"TerminateThread(0x%08lx,%ld), STUB!\n",threadid,exitcode); + return TRUE; +}
diff --git a/tools/build.c b/tools/build.c index 6ab1a55..327a8e8 100644 --- a/tools/build.c +++ b/tools/build.c
@@ -1327,13 +1327,11 @@ * functions that need a large stack, like X bitmaps functions. * * The generated function has the following prototype: - * int CallTo32_LargeStack( int (*func)(), int nbargs, ... ) + * int CALLTO32_LargeStack( int (*func)(), void *arg ); * * Stack layout: * ... ... - * (ebp+20) arg2 - * (ebp+16) arg1 - * (ebp+12) nbargs + * (ebp+12) arg * (ebp+8) func * (ebp+4) ret addr * (ebp) ebp @@ -1344,22 +1342,16 @@ fprintf( outfile, "\n\t.align 4\n" ); #ifdef USE_STABS - fprintf( outfile, ".stabs \"CallTo32_LargeStack:F1\",36,0,0," PREFIX "CallTo32_LargeStack\n"); + fprintf( outfile, ".stabs \"CALLTO32_LargeStack:F1\",36,0,0," PREFIX "CALLTO32_LargeStack\n"); #endif - fprintf( outfile, "\t.globl " PREFIX "CallTo32_LargeStack\n" ); - fprintf( outfile, PREFIX "CallTo32_LargeStack:\n" ); + fprintf( outfile, "\t.globl " PREFIX "CALLTO32_LargeStack\n" ); + fprintf( outfile, PREFIX "CALLTO32_LargeStack:\n" ); /* Entry code */ fprintf( outfile, "\tpushl %%ebp\n" ); fprintf( outfile, "\tmovl %%esp,%%ebp\n" ); - /* Save registers */ - - fprintf( outfile, "\tpushl %%ecx\n" ); - fprintf( outfile, "\tpushl %%esi\n" ); - fprintf( outfile, "\tpushl %%edi\n" ); - /* Retrieve the original 32-bit stack pointer and switch to it if any */ fprintf( outfile, "\tmovl " PREFIX "IF1632_Original32_esp, %%eax\n" ); @@ -1368,33 +1360,14 @@ fprintf( outfile, "\tmovl %%eax,%%esp\n" ); fprintf( outfile, "no_orig_esp:\n" ); - /* Transfer the arguments */ + /* Transfer the argument and call the function */ - fprintf( outfile, "\tmovl 12(%%ebp),%%ecx\n" ); - fprintf( outfile, "\torl %%ecx,%%ecx\n" ); - fprintf( outfile, "\tje no_args\n" ); - fprintf( outfile, "\tleal 16(%%ebp),%%esi\n" ); - fprintf( outfile, "\tshll $2,%%ecx\n" ); - fprintf( outfile, "\tsubl %%ecx,%%esp\n" ); - fprintf( outfile, "\tmovl %%esp,%%edi\n" ); - fprintf( outfile, "\tshrl $2,%%ecx\n" ); - fprintf( outfile, "\tcld\n" ); - fprintf( outfile, "\trep; movsl\n" ); - fprintf( outfile, "no_args:\n" ); - - /* Call the function */ - + fprintf( outfile, "\tpushl 12(%%ebp)\n" ); fprintf( outfile, "\tcall 8(%%ebp)\n" ); - /* Switch back to the normal stack */ - - fprintf( outfile, "\tleal -12(%%ebp),%%esp\n" ); - /* Restore registers and return */ - fprintf( outfile, "\tpopl %%edi\n" ); - fprintf( outfile, "\tpopl %%esi\n" ); - fprintf( outfile, "\tpopl %%ecx\n" ); + fprintf( outfile, "\tmovl %%ebp,%%esp\n" ); fprintf( outfile, "\tpopl %%ebp\n" ); fprintf( outfile, "\tret\n" ); } @@ -2197,6 +2170,19 @@ fprintf( outfile, "\t.globl " PREFIX "CallFrom32_%s\n", profile ); fprintf( outfile, PREFIX "CallFrom32_%s:\n", profile ); +#if 0 + fprintf( outfile, "\tleal 8(%%esp),%%ebp\n" ); + fprintf( outfile, "\tpushl $%d\n", /* Nb args */ + reg_func ? args | 0x80000000 : args); + fprintf( outfile, "\tpushl %%ebp\n" ); + fprintf( outfile, "\tcall " PREFIX "RELAY_DebugCallFrom32\n" ); + fprintf( outfile, "\tadd $8, %%esp\n" ); + fprintf( outfile, "\tpopl %%eax\n" ); + fprintf( outfile, "\tpopl %%eax\n" ); + fprintf( outfile, "\tpopl %%ebp\n" ); + fprintf( outfile, "\tjmp %%eax\n" ); +#endif + /* Entry code */ fprintf( outfile, "\tleal 8(%%esp),%%ebp\n" ); @@ -2373,10 +2359,6 @@ fprintf( outfile, "Code_Start:\n\n" ); #endif - /* Build the 32-bit large stack callback */ - - BuildCall32LargeStack( outfile ); - /* Build the callback functions */ for (i = 2; i < argc; i++) BuildCallFrom16Func( outfile, argv[i] ); @@ -2538,6 +2520,10 @@ fprintf( outfile, "Code_Start:\n\n" ); #endif + /* Build the 32-bit large stack callback */ + + BuildCall32LargeStack( outfile ); + /* Build the callback functions */ for (i = 2; i < argc; i++) BuildCallTo32Func( outfile, atoi(argv[i]) );
diff --git a/tools/fnt2bdf.c b/tools/fnt2bdf.c index 6795116..d994a99 100644 --- a/tools/fnt2bdf.c +++ b/tools/fnt2bdf.c
@@ -350,12 +350,12 @@ case ANSI_CHARSET: fputs("ansi-0\n", fs); break; case GREEK_CHARSET: fputs("cp125-3\n", fs); break; - case TURKISH_CHARSET: fputs("iso8859-9", fs); break; - case HEBREW_CHARSET: fputs("cp125-5", fs); break; - case ARABIC_CHARSET: fputs("cp125-6", fs); break; - case BALTIC_CHARSET: fputs("cp125-7", fs); break; - case RUSSIAN_CHARSET: fputs("cp125-1", fs); break; - case EE_CHARSET: fputs("iso8859-2", fs); break; + case TURKISH_CHARSET: fputs("cp125-4\n", fs); break; + case HEBREW_CHARSET: fputs("cp125-5\n", fs); break; + case ARABIC_CHARSET: fputs("cp125-6\n", fs); break; + case BALTIC_CHARSET: fputs("cp125-7\n", fs); break; + case RUSSIAN_CHARSET: fputs("cp125-1\n", fs); break; + case EE_CHARSET: fputs("cp125-0\n", fs); break; case SYMBOL_CHARSET: fputs("misc-fontspecific\n", fs); break; case SHIFTJIS_CHARSET: fputs("jisx0208.1983-0\n", fs); break; case DEFAULT_CHARSET: fputs("iso8859-1\n", fs); break;
diff --git a/win32/advapi.c b/win32/advapi.c index 9bb1ca7..d6c25c0 100644 --- a/win32/advapi.c +++ b/win32/advapi.c
@@ -16,8 +16,7 @@ /*********************************************************************** * StartServiceCtrlDispatcherA [ADVAPI32.196] */ -BOOL32 -StartServiceCtrlDispatcher32A(LPSERVICE_TABLE_ENTRY32A servent) +BOOL32 WINAPI StartServiceCtrlDispatcher32A(LPSERVICE_TABLE_ENTRY32A servent) { fprintf(stderr,"StartServiceCtrlDispatcherA(%p (%s)), STUB.\n", servent, @@ -29,8 +28,7 @@ /*********************************************************************** * StartServiceCtrlDispatcherW [ADVAPI32.197] */ -BOOL32 -StartServiceCtrlDispatcher32W(LPSERVICE_TABLE_ENTRY32W servent) +BOOL32 WINAPI StartServiceCtrlDispatcher32W(LPSERVICE_TABLE_ENTRY32W servent) { char buffer[200]; @@ -46,8 +44,8 @@ /*********************************************************************** * OpenProcessToken [ADVAPI32.197] */ -BOOL32 -OpenProcessToken(HANDLE32 process,DWORD desiredaccess,HANDLE32 *thandle) +BOOL32 WINAPI OpenProcessToken(HANDLE32 process,DWORD desiredaccess, + HANDLE32 *thandle) { fprintf(stdnimp,"OpenProcessToken(%08x,%08lx,%p),stub!\n", process,desiredaccess,thandle @@ -58,10 +56,9 @@ /*********************************************************************** * OpenThreadToken [ADVAPI32.114] */ -BOOL32 -OpenThreadToken( - HANDLE32 thread,DWORD desiredaccess,BOOL32 openasself,HANDLE32 *thandle -) { +BOOL32 WINAPI OpenThreadToken( HANDLE32 thread,DWORD desiredaccess, + BOOL32 openasself,HANDLE32 *thandle ) +{ fprintf(stdnimp,"OpenThreadToken(%08x,%08lx,%d,%p),stub!\n", thread,desiredaccess,openasself,thandle ); @@ -71,16 +68,14 @@ /*********************************************************************** * LookupPrivilegeValueA [ADVAPI32.90] */ -BOOL32 -LookupPrivilegeValue32A(LPCSTR system,LPCSTR name,LPVOID bla) +BOOL32 WINAPI LookupPrivilegeValue32A(LPCSTR system,LPCSTR name,LPVOID bla) { fprintf(stdnimp,"LookupPrivilegeValue32A(%s,%s,%p),stub\n", system,name,bla ); return TRUE; } -BOOL32 -AdjustTokenPrivileges(HANDLE32 TokenHandle,BOOL32 DisableAllPrivileges, +BOOL32 WINAPI AdjustTokenPrivileges(HANDLE32 TokenHandle,BOOL32 DisableAllPrivileges, LPVOID NewState,DWORD BufferLength,LPVOID PreviousState, LPDWORD ReturnLength ) { @@ -90,27 +85,24 @@ /*********************************************************************** * GetTokenInformation [ADVAPI32.66] */ -BOOL32 -GetTokenInformation( +BOOL32 WINAPI GetTokenInformation( HANDLE32 token,/*TOKEN_INFORMATION_CLASS*/ DWORD tokeninfoclass,LPVOID tokeninfo, DWORD tokeninfolength,LPDWORD retlen ) { - fprintf(stderr,"GetTokenInformation(%08lx,%d,%p,%ld,%p)\n", + fprintf(stderr,"GetTokenInformation(%08x,%ld,%p,%ld,%p)\n", token,tokeninfoclass,tokeninfo,tokeninfolength,retlen ); return TRUE; } /*SC_HANDLE*/ -DWORD -OpenSCManagerA(LPCSTR machine,LPCSTR dbname,DWORD desiredaccess) +DWORD WINAPI OpenSCManagerA(LPCSTR machine,LPCSTR dbname,DWORD desiredaccess) { fprintf(stderr,"OpenSCManagerA(%s,%s,%08lx)\n",machine,dbname,desiredaccess); return 0; } -DWORD -OpenSCManagerW(LPCWSTR machine,LPCWSTR dbname,DWORD desiredaccess) +DWORD WINAPI OpenSCManagerW(LPCWSTR machine,LPCWSTR dbname,DWORD desiredaccess) { LPSTR machineA = HEAP_strdupWtoA(GetProcessHeap(),0,machine); LPSTR dbnameA = HEAP_strdupWtoA(GetProcessHeap(),0,dbname); @@ -120,8 +112,7 @@ return 0; } -BOOL32 -AllocateLocallyUniqueId(LPLUID lpluid) { +BOOL32 WINAPI AllocateLocallyUniqueId(LPLUID lpluid) { lpluid->LowPart = time(NULL); lpluid->HighPart = 0; return TRUE;
diff --git a/win32/code_page.c b/win32/code_page.c index 508172b..7a10618 100644 --- a/win32/code_page.c +++ b/win32/code_page.c
@@ -17,7 +17,7 @@ /*********************************************************************** * GetACP (KERNEL32.148) */ -UINT32 GetACP(void) +UINT32 WINAPI GetACP(void) { return 1252; /* Windows 3.1 ISO Latin */ } @@ -25,7 +25,7 @@ /*********************************************************************** * GetCPInfo (KERNEL32.154) */ -BOOL32 GetCPInfo( UINT32 codepage, LPCPINFO cpinfo ) +BOOL32 WINAPI GetCPInfo( UINT32 codepage, LPCPINFO cpinfo ) { cpinfo->DefaultChar[0] = '?'; switch (codepage) @@ -61,7 +61,7 @@ /*********************************************************************** * GetOEMCP (KERNEL32.248) */ -UINT32 GetOEMCP(void) +UINT32 WINAPI GetOEMCP(void) { return 437; /* MS-DOS United States */ } @@ -69,7 +69,7 @@ /*********************************************************************** * IsValidCodePage (KERNEL32.360) */ -BOOL32 IsValidCodePage(UINT32 CodePage) +BOOL32 WINAPI IsValidCodePage(UINT32 CodePage) { switch ( CodePage ) { @@ -85,14 +85,20 @@ /*********************************************************************** * MultiByteToWideChar (KERNEL32.392) */ -int MultiByteToWideChar(UINT32 page, DWORD flags, char *src, int srclen, - WCHAR *dst, int dstlen) +int WINAPI MultiByteToWideChar(UINT32 page, DWORD flags, char *src, int srclen, + WCHAR *dst, int dstlen) { - return (srclen==-1) ? strlen(src) * 2: srclen*2; + if (srclen == -1) + srclen = lstrlen32A(src); + if (!dst) + return srclen*2; + + lstrcpynAtoW(dst,src,srclen); /* FIXME */ + return srclen*2; } -int WideCharToMultiByte(UINT32 page, DWORD flags, WCHAR *src, int srclen, - char *dst, int dstlen, char* defchar, BOOL32 *used) +int WINAPI WideCharToMultiByte(UINT32 page, DWORD flags, WCHAR *src, int srclen, + char *dst, int dstlen, char* defchar, BOOL32 *used) { int count = 0; int dont_copy= (dstlen==0); @@ -133,7 +139,7 @@ /*********************************************************************** * IsDBCSLeadByteEx (KERNEL32.359) */ -BOOL32 IsDBCSLeadByteEx( UINT32 codepage, BYTE testchar ) +BOOL32 WINAPI IsDBCSLeadByteEx( UINT32 codepage, BYTE testchar ) { CPINFO cpinfo; int i; @@ -153,7 +159,7 @@ /*********************************************************************** * IsDBCSLeadByte16 (KERNEL.207) */ -BOOL16 IsDBCSLeadByte16( BYTE testchar ) +BOOL16 WINAPI IsDBCSLeadByte16( BYTE testchar ) { return IsDBCSLeadByteEx(GetACP(), testchar); } @@ -162,7 +168,7 @@ /*********************************************************************** * IsDBCSLeadByte32 (KERNEL32.358) */ -BOOL32 IsDBCSLeadByte32( BYTE testchar ) +BOOL32 WINAPI IsDBCSLeadByte32( BYTE testchar ) { return IsDBCSLeadByteEx(GetACP(), testchar); } @@ -171,8 +177,8 @@ /*********************************************************************** * EnumSystemCodePages32A (KERNEL32.92) */ -BOOL32 -EnumSystemCodePages32A(CODEPAGE_ENUMPROC32A lpfnCodePageEnum,DWORD flags) { +BOOL32 WINAPI EnumSystemCodePages32A(CODEPAGE_ENUMPROC32A lpfnCodePageEnum,DWORD flags) +{ dprintf_win32(stddeb,"EnumSystemCodePages32A(%p,%08lx)\n", lpfnCodePageEnum,flags ); @@ -183,8 +189,8 @@ /*********************************************************************** * EnumSystemCodePages32W (KERNEL32.93) */ -BOOL32 -EnumSystemCodePages32W( CODEPAGE_ENUMPROC32W lpfnCodePageEnum, DWORD flags) +BOOL32 WINAPI EnumSystemCodePages32W( CODEPAGE_ENUMPROC32W lpfnCodePageEnum, + DWORD flags) { WCHAR *cp; dprintf_win32(stddeb,"EnumSystemCodePages32W(%p,%08lx)\n",
diff --git a/win32/console.c b/win32/console.c index e8e506d..872ac73 100644 --- a/win32/console.c +++ b/win32/console.c
@@ -26,7 +26,7 @@ /*********************************************************************** * SetConsoleCtrlHandler (KERNEL32.459) */ -BOOL32 SetConsoleCtrlHandler(HANDLER_ROUTINE * func, BOOL32 a) +BOOL32 WINAPI SetConsoleCtrlHandler(HANDLER_ROUTINE * func, BOOL32 a) { return 0; } @@ -34,8 +34,8 @@ /*********************************************************************** * GetConsoleScreenBufferInfo (KERNEL32.190) */ -BOOL32 GetConsoleScreenBufferInfo( HANDLE32 hConsoleOutput, - LPCONSOLE_SCREEN_BUFFER_INFO csbi ) +BOOL32 WINAPI GetConsoleScreenBufferInfo( HANDLE32 hConsoleOutput, + LPCONSOLE_SCREEN_BUFFER_INFO csbi ) { csbi->dwSize.x = 80; csbi->dwSize.y = 24; @@ -54,7 +54,7 @@ /*********************************************************************** * GetLargestConsoleWindowSize (KERNEL32.226) */ -DWORD GetLargestConsoleWindowSize( HANDLE32 hConsoleOutput ) +DWORD WINAPI GetLargestConsoleWindowSize( HANDLE32 hConsoleOutput ) { return (DWORD)MAKELONG(dummyinfo.dwMaximumWindowSize.x,dummyinfo.dwMaximumWindowSize.y); } @@ -62,7 +62,7 @@ /*********************************************************************** * GetConsoleCP (KERNEL32.226) */ -UINT32 GetConsoleCP(VOID) +UINT32 WINAPI GetConsoleCP(VOID) { return GetACP(); } @@ -70,7 +70,7 @@ /*********************************************************************** * GetConsoleOutputCP (KERNEL32.189) */ -UINT32 GetConsoleOutputCP(VOID) +UINT32 WINAPI GetConsoleOutputCP(VOID) { return GetConsoleCP(); } @@ -78,7 +78,7 @@ /*********************************************************************** * GetConsoleMode (KERNEL32.188) */ -BOOL32 GetConsoleMode(HANDLE32 hcon,LPDWORD mode) +BOOL32 WINAPI GetConsoleMode(HANDLE32 hcon,LPDWORD mode) { *mode = ENABLE_PROCESSED_INPUT | ENABLE_LINE_INPUT | @@ -91,7 +91,7 @@ /*********************************************************************** * SetConsoleMode (KERNEL32.188) */ -BOOL32 SetConsoleMode(HANDLE32 hcon,DWORD mode) +BOOL32 WINAPI SetConsoleMode(HANDLE32 hcon,DWORD mode) { fprintf(stdnimp,"SetConsoleMode(%08x,%08lx)\n",hcon,mode); return TRUE; @@ -100,7 +100,7 @@ /*********************************************************************** * GetConsoleTitleA (KERNEL32.191) */ -DWORD GetConsoleTitle32A(LPSTR title,DWORD size) +DWORD WINAPI GetConsoleTitle32A(LPSTR title,DWORD size) { lstrcpyn32A(title,"Console",size); return strlen("Console"); @@ -109,7 +109,7 @@ /*********************************************************************** * GetConsoleTitleW (KERNEL32.192) */ -DWORD GetConsoleTitle32W(LPWSTR title,DWORD size) +DWORD WINAPI GetConsoleTitle32W(LPWSTR title,DWORD size) { lstrcpynAtoW(title,"Console",size); return strlen("Console"); @@ -118,12 +118,11 @@ /*********************************************************************** * WriteConsoleA (KERNEL32.567) */ -BOOL32 WriteConsole32A( - HANDLE32 hConsoleOutput, - LPVOID lpBuffer, - DWORD nNumberOfCharsToWrite, - LPDWORD lpNumberOfCharsWritten, - LPVOID lpReserved ) +BOOL32 WINAPI WriteConsole32A( HANDLE32 hConsoleOutput, + LPVOID lpBuffer, + DWORD nNumberOfCharsToWrite, + LPDWORD lpNumberOfCharsWritten, + LPVOID lpReserved ) { LPSTR buf = (LPSTR)xmalloc(nNumberOfCharsToWrite+1); @@ -138,12 +137,11 @@ /*********************************************************************** * WriteConsoleW (KERNEL32.577) */ -BOOL32 WriteConsole32W( - HANDLE32 hConsoleOutput, - LPVOID lpBuffer, - DWORD nNumberOfCharsToWrite, - LPDWORD lpNumberOfCharsWritten, - LPVOID lpReserved ) +BOOL32 WINAPI WriteConsole32W( HANDLE32 hConsoleOutput, + LPVOID lpBuffer, + DWORD nNumberOfCharsToWrite, + LPDWORD lpNumberOfCharsWritten, + LPVOID lpReserved ) { LPSTR buf = (LPSTR)xmalloc(2*nNumberOfCharsToWrite+1); @@ -158,12 +156,11 @@ /*********************************************************************** * ReadConsoleA (KERNEL32.419) */ -BOOL32 ReadConsole32A( - HANDLE32 hConsoleInput, - LPVOID lpBuffer, - DWORD nNumberOfCharsToRead, - LPDWORD lpNumberOfCharsRead, - LPVOID lpReserved ) +BOOL32 WINAPI ReadConsole32A( HANDLE32 hConsoleInput, + LPVOID lpBuffer, + DWORD nNumberOfCharsToRead, + LPDWORD lpNumberOfCharsRead, + LPVOID lpReserved ) { fgets(lpBuffer,nNumberOfCharsToRead,stdin); *lpNumberOfCharsRead = strlen(lpBuffer); @@ -173,12 +170,11 @@ /*********************************************************************** * ReadConsoleW (KERNEL32.427) */ -BOOL32 ReadConsole32W( - HANDLE32 hConsoleInput, - LPVOID lpBuffer, - DWORD nNumberOfCharsToRead, - LPDWORD lpNumberOfCharsRead, - LPVOID lpReserved ) +BOOL32 WINAPI ReadConsole32W( HANDLE32 hConsoleInput, + LPVOID lpBuffer, + DWORD nNumberOfCharsToRead, + LPDWORD lpNumberOfCharsRead, + LPVOID lpReserved ) { LPSTR buf = (LPSTR)xmalloc(nNumberOfCharsToRead); @@ -191,7 +187,7 @@ /*********************************************************************** * SetConsoleTitle32A (KERNEL32.476) */ -BOOL32 SetConsoleTitle32A(LPCSTR title) +BOOL32 WINAPI SetConsoleTitle32A(LPCSTR title) { fprintf(stderr,"SetConsoleTitle(%s)\n",title); return TRUE; @@ -200,7 +196,7 @@ /*********************************************************************** * SetConsoleTitle32W (KERNEL32.477) */ -BOOL32 SetConsoleTitle32W( LPCWSTR title ) +BOOL32 WINAPI SetConsoleTitle32W( LPCWSTR title ) { LPSTR titleA = HEAP_strdupWtoA( GetProcessHeap(), 0, title ); fprintf(stderr,"SetConsoleTitle(%s)\n",titleA); @@ -211,13 +207,13 @@ /*********************************************************************** * FlushConsoleInputBuffer (KERNEL32.132) */ -BOOL32 FlushConsoleInputBuffer(HANDLE32 hConsoleInput){ +BOOL32 WINAPI FlushConsoleInputBuffer(HANDLE32 hConsoleInput){ fprintf(stderr,"FlushConsoleInputBuffer(%d)\n",hConsoleInput); return TRUE; } -BOOL32 -SetConsoleCursorPosition(HANDLE32 hcons,COORD c) { +BOOL32 WINAPI SetConsoleCursorPosition(HANDLE32 hcons,COORD c) +{ /* x are columns, y rows */ if (!c.y) { fprintf(stderr,"\r"); @@ -232,8 +228,8 @@ /*********************************************************************** * GetNumberOfConsoleInputEvents (KERNEL32.246) */ -BOOL32 -GetNumberOfConsoleInputEvents(HANDLE32 hcon,LPDWORD nrofevents) { +BOOL32 WINAPI GetNumberOfConsoleInputEvents(HANDLE32 hcon,LPDWORD nrofevents) +{ *nrofevents = 1; return TRUE; }
diff --git a/win32/cursoricon32.c b/win32/cursoricon32.c index 4ce417e..b551663 100644 --- a/win32/cursoricon32.c +++ b/win32/cursoricon32.c
@@ -461,7 +461,7 @@ /*********************************************************************** * LoadCursorW (USER32.361) */ -HCURSOR32 LoadCursor32W(HINSTANCE32 hInstance,LPCWSTR name) +HCURSOR32 WINAPI LoadCursor32W(HINSTANCE32 hInstance,LPCWSTR name) { return CURSORICON32_Load( hInstance, name, SYSMETRICS_CXCURSOR, SYSMETRICS_CYCURSOR, 1, TRUE); @@ -470,7 +470,7 @@ /*********************************************************************** * LoadCursorA (USER32.358) */ -HCURSOR32 LoadCursor32A(HINSTANCE32 hInstance,LPCSTR name) +HCURSOR32 WINAPI LoadCursor32A(HINSTANCE32 hInstance,LPCSTR name) { HCURSOR32 res=0; if(!HIWORD(name)) @@ -488,7 +488,7 @@ /*********************************************************************** * LoadIconW (USER32.363) */ -HICON32 LoadIcon32W(HINSTANCE32 hInstance,LPCWSTR name) +HICON32 WINAPI LoadIcon32W(HINSTANCE32 hInstance,LPCWSTR name) { return CURSORICON32_Load( hInstance, name, SYSMETRICS_CXICON, SYSMETRICS_CYICON, @@ -498,7 +498,7 @@ /*********************************************************************** * LoadIconA (USER32.362) */ -HICON32 LoadIcon32A(HINSTANCE32 hInstance,LPCSTR name) +HICON32 WINAPI LoadIcon32A(HINSTANCE32 hInstance,LPCSTR name) { HICON32 res=0; if(!HIWORD(name))
diff --git a/win32/environment.c b/win32/environment.c index 2480765..cbe6259 100644 --- a/win32/environment.c +++ b/win32/environment.c
@@ -18,7 +18,7 @@ /*********************************************************************** * GetCommandLineA (KERNEL32.161) */ -LPCSTR GetCommandLine32A(void) +LPCSTR WINAPI GetCommandLine32A(void) { static char buffer[256]; char *cp; @@ -39,7 +39,7 @@ /*********************************************************************** * GetCommandLineW (KERNEL32.162) */ -LPCWSTR GetCommandLine32W(void) +LPCWSTR WINAPI GetCommandLine32W(void) { static WCHAR buffer[256]; @@ -51,7 +51,7 @@ /*********************************************************************** * GetSystemPowerStatus (KERNEL32.621) */ -BOOL32 GetSystemPowerStatus(LPSYSTEM_POWER_STATUS sps_ptr) +BOOL32 WINAPI GetSystemPowerStatus(LPSYSTEM_POWER_STATUS sps_ptr) { return FALSE; /* no power management support */ } @@ -60,7 +60,8 @@ /*********************************************************************** * SetSystemPowerState (KERNEL32.630) */ -BOOL32 SetSystemPowerState(BOOL32 suspend_or_hibernate, BOOL32 force_flag) +BOOL32 WINAPI SetSystemPowerState(BOOL32 suspend_or_hibernate, + BOOL32 force_flag) { /* suspend_or_hibernate flag: w95 does not support this feature anyway */
diff --git a/win32/except.c b/win32/except.c index 90a28fb..4fbcd9d 100644 --- a/win32/except.c +++ b/win32/except.c
@@ -45,6 +45,24 @@ #define TEB_EXCEPTION_FRAME(pcontext) \ ((PEXCEPTION_FRAME)((TEB *)GET_SEL_BASE((pcontext)->SegFs))->except) +/******************************************************************* + * _local_unwind2 (CRTDLL) + */ +void WINAPI CRTDLL__local_unwind2(PEXCEPTION_FRAME endframe,DWORD nr, + PCONTEXT pcontext) +{ + fprintf(stderr,"CRTDLL__local_unwind2(%p,%ld)\n",endframe,nr); + return; +} + +/******************************************************************* + * _global_unwind2 (CRTDLL) + */ +void WINAPI CRTDLL__global_unwind2(PEXCEPTION_FRAME endframe,PCONTEXT pcontext) +{ + RtlUnwind(endframe,NULL/*should point to the return;*/,NULL,0,pcontext); + return; +} /******************************************************************* * RtlUnwind (KERNEL32.443) @@ -52,9 +70,9 @@ * This function is undocumented. This is the general idea of * RtlUnwind, though. Note that error handling is not yet implemented. */ -void RtlUnwind( PEXCEPTION_FRAME pEndFrame, LPVOID unusedEip, - PEXCEPTION_RECORD pRecord, DWORD returnEax, - PCONTEXT pcontext /* Wine additional parameter */ ) +void WINAPI RtlUnwind( PEXCEPTION_FRAME pEndFrame, LPVOID unusedEip, + PEXCEPTION_RECORD pRecord, DWORD returnEax, + PCONTEXT pcontext /* Wine additional parameter */ ) { EXCEPTION_RECORD record; DWORD dispatch; @@ -94,9 +112,13 @@ dprintf_win32(stddeb,"exception handler returns 0x%x, dispatch=0x%x\n", retval, (int) dispatch); - if (retval == ExceptionCollidedUnwind) + if ( (retval == ExceptionCollidedUnwind) && + (TEB_EXCEPTION_FRAME(pcontext) != (LPVOID)dispatch) + ) TEB_EXCEPTION_FRAME(pcontext) = (LPVOID)dispatch; - else if (TEB_EXCEPTION_FRAME(pcontext) != pEndFrame) + else if ( (TEB_EXCEPTION_FRAME(pcontext) != pEndFrame) && + (TEB_EXCEPTION_FRAME(pcontext) != TEB_EXCEPTION_FRAME(pcontext)->Prev) + ) TEB_EXCEPTION_FRAME(pcontext) = TEB_EXCEPTION_FRAME(pcontext)->Prev; else break; @@ -107,11 +129,11 @@ /******************************************************************* * RaiseException (KERNEL32.418) */ -void RaiseException(DWORD dwExceptionCode, - DWORD dwExceptionFlags, - DWORD cArguments, - const LPDWORD lpArguments, - PCONTEXT pcontext /* Wine additional parameter */ ) +void WINAPI RaiseException(DWORD dwExceptionCode, + DWORD dwExceptionFlags, + DWORD cArguments, + const LPDWORD lpArguments, + PCONTEXT pcontext /* Wine additional parameter */ ) { PEXCEPTION_FRAME pframe; EXCEPTION_RECORD record; @@ -162,7 +184,7 @@ /******************************************************************* * UnhandledExceptionFilter (KERNEL32.537) */ -DWORD UnhandledExceptionFilter(PEXCEPTION_POINTERS epointers) +DWORD WINAPI UnhandledExceptionFilter(PEXCEPTION_POINTERS epointers) { char message[80]; @@ -187,7 +209,7 @@ /************************************************************* * SetUnhandledExceptionFilter (KERNEL32.516) */ -LPTOP_LEVEL_EXCEPTION_FILTER SetUnhandledExceptionFilter( +LPTOP_LEVEL_EXCEPTION_FILTER WINAPI SetUnhandledExceptionFilter( LPTOP_LEVEL_EXCEPTION_FILTER filter ) { LPTOP_LEVEL_EXCEPTION_FILTER old = pCurrentProcess->top_filter;
diff --git a/win32/file.c b/win32/file.c index 170c91a..79b75c6 100644 --- a/win32/file.c +++ b/win32/file.c
@@ -33,8 +33,8 @@ /*********************************************************************** * WriteFile (KERNEL32.578) */ -BOOL32 WriteFile(HFILE32 hFile, LPVOID lpBuffer, DWORD numberOfBytesToWrite, - LPDWORD numberOfBytesWritten, LPOVERLAPPED lpOverlapped) +BOOL32 WINAPI WriteFile(HFILE32 hFile, LPVOID lpBuffer, DWORD numberOfBytesToWrite, + LPDWORD numberOfBytesWritten, LPOVERLAPPED lpOverlapped) { LONG res; @@ -51,8 +51,8 @@ /*********************************************************************** * ReadFile (KERNEL32.428) */ -BOOL32 ReadFile(HFILE32 hFile, LPVOID lpBuffer, DWORD numtoread, - LPDWORD numread, LPOVERLAPPED lpOverlapped) +BOOL32 WINAPI ReadFile(HFILE32 hFile, LPVOID lpBuffer, DWORD numtoread, + LPDWORD numread, LPOVERLAPPED lpOverlapped) { int actual_read; @@ -74,9 +74,9 @@ * Doesn't support character devices, pipes, template files, or a * lot of the 'attributes' flags yet. */ -HFILE32 CreateFile32A(LPCSTR filename, DWORD access, DWORD sharing, - LPSECURITY_ATTRIBUTES security, DWORD creation, - DWORD attributes, HANDLE32 template) +HFILE32 WINAPI CreateFile32A(LPCSTR filename, DWORD access, DWORD sharing, + LPSECURITY_ATTRIBUTES security, DWORD creation, + DWORD attributes, HANDLE32 template) { int access_flags, create_flags; @@ -115,9 +115,9 @@ /************************************************************************* * CreateFile32W (KERNEL32.48) */ -HFILE32 CreateFile32W(LPCWSTR filename, DWORD access, DWORD sharing, - LPSECURITY_ATTRIBUTES security, DWORD creation, - DWORD attributes, HANDLE32 template) +HFILE32 WINAPI CreateFile32W(LPCWSTR filename, DWORD access, DWORD sharing, + LPSECURITY_ATTRIBUTES security, DWORD creation, + DWORD attributes, HANDLE32 template) { LPSTR afn = HEAP_strdupWtoA( GetProcessHeap(), 0, filename ); HFILE32 res = CreateFile32A( afn, access, sharing, security, creation, @@ -182,7 +182,7 @@ /************************************************************************** * SetFileAttributes16 (KERNEL.421) */ -BOOL16 SetFileAttributes16( LPCSTR lpFileName, DWORD attributes ) +BOOL16 WINAPI SetFileAttributes16( LPCSTR lpFileName, DWORD attributes ) { return SetFileAttributes32A( lpFileName, attributes ); } @@ -191,7 +191,7 @@ /************************************************************************** * SetFileAttributes32A (KERNEL32.490) */ -BOOL32 SetFileAttributes32A(LPCSTR lpFileName, DWORD attributes) +BOOL32 WINAPI SetFileAttributes32A(LPCSTR lpFileName, DWORD attributes) { struct stat buf; DOS_FULL_NAME full_name; @@ -221,10 +221,11 @@ return TRUE; } + /************************************************************************** * SetFileAttributes32W (KERNEL32.491) */ -BOOL32 SetFileAttributes32W(LPCWSTR lpFileName, DWORD attributes) +BOOL32 WINAPI SetFileAttributes32W(LPCWSTR lpFileName, DWORD attributes) { LPSTR afn = HEAP_strdupWtoA( GetProcessHeap(), 0, lpFileName ); BOOL32 res = SetFileAttributes32A( afn, attributes ); @@ -232,17 +233,29 @@ return res; } -VOID SetFileApisToOEM() + +/************************************************************************** + * SetFileApisToOEM (KERNEL32.645) + */ +VOID WINAPI SetFileApisToOEM(void) { fprintf(stdnimp,"SetFileApisToOEM(),stub!\n"); } -VOID SetFileApisToANSI() + +/************************************************************************** + * SetFileApisToANSI (KERNEL32.644) + */ +VOID WINAPI SetFileApisToANSI(void) { fprintf(stdnimp,"SetFileApisToANSI(),stub!\n"); } -BOOL32 AreFileApisANSI() + +/************************************************************************** + * AreFileApisANSI (KERNEL32.105) + */ +BOOL32 WINAPI AreFileApisANSI(void) { fprintf(stdnimp,"AreFileApisANSI(),stub!\n"); return TRUE;
diff --git a/win32/init.c b/win32/init.c index ddd5799..80a8191 100644 --- a/win32/init.c +++ b/win32/init.c
@@ -21,7 +21,7 @@ /*********************************************************************** * GetModuleHandle (KERNEL32.237) */ -HMODULE32 WIN32_GetModuleHandleA(char *module) +HMODULE32 WINAPI WIN32_GetModuleHandleA(char *module) { HMODULE32 hModule; @@ -37,7 +37,7 @@ return hModule; } -HMODULE32 WIN32_GetModuleHandleW(LPCWSTR module) +HMODULE32 WINAPI WIN32_GetModuleHandleW(LPCWSTR module) { HMODULE32 hModule; LPSTR modulea = HEAP_strdupWtoA( GetProcessHeap(), 0, module ); @@ -50,7 +50,7 @@ /*********************************************************************** * GetStartupInfoA (KERNEL32.273) */ -VOID GetStartupInfo32A(LPSTARTUPINFO32A lpStartupInfo) +VOID WINAPI GetStartupInfo32A(LPSTARTUPINFO32A lpStartupInfo) { lpStartupInfo->cb = sizeof(STARTUPINFO32A); lpStartupInfo->lpReserved = "<Reserved>"; @@ -67,7 +67,7 @@ /*********************************************************************** * GetStartupInfoW (KERNEL32.274) */ -VOID GetStartupInfo32W(LPSTARTUPINFO32W lpStartupInfo) +VOID WINAPI GetStartupInfo32W(LPSTARTUPINFO32W lpStartupInfo) { lpStartupInfo->cb = sizeof(STARTUPINFO32W); lpStartupInfo->lpReserved = HEAP_strdupAtoW(GetProcessHeap(),0,"<Reserved>"); @@ -84,8 +84,8 @@ /*********************************************************************** * GetComputerNameA (KERNEL32.165) */ -BOOL32 -GetComputerName32A(LPSTR name,LPDWORD size) { +BOOL32 WINAPI GetComputerName32A(LPSTR name,LPDWORD size) +{ if (-1==gethostname(name,*size)) return FALSE; *size = lstrlen32A(name); @@ -95,8 +95,8 @@ /*********************************************************************** * GetComputerNameW (KERNEL32.166) */ -BOOL32 -GetComputerName32W(LPWSTR name,LPDWORD size) { +BOOL32 WINAPI GetComputerName32W(LPWSTR name,LPDWORD size) +{ LPSTR nameA = (LPSTR)xmalloc(*size); if (!GetComputerName32A(nameA,size)) { @@ -112,7 +112,7 @@ /*********************************************************************** * GetUserNameA [ADVAPI32.67] */ -BOOL32 GetUserName32A(LPSTR lpszName, LPDWORD lpSize) +BOOL32 WINAPI GetUserName32A(LPSTR lpszName, LPDWORD lpSize) { size_t len; char *name; @@ -131,7 +131,7 @@ /*********************************************************************** * GetUserNameW [ADVAPI32.68] */ -BOOL32 GetUserName32W(LPWSTR lpszName, LPDWORD lpSize) +BOOL32 WINAPI GetUserName32W(LPWSTR lpszName, LPDWORD lpSize) { LPSTR name = (LPSTR)xmalloc(*lpSize); DWORD size = *lpSize;
diff --git a/win32/newfns.c b/win32/newfns.c index b53a503..f8477fc 100644 --- a/win32/newfns.c +++ b/win32/newfns.c
@@ -16,8 +16,8 @@ /**************************************************************************** * QueryPerformanceCounter (KERNEL32.415) */ -BOOL32 -QueryPerformanceCounter(LPLARGE_INTEGER counter) { +BOOL32 WINAPI QueryPerformanceCounter(LPLARGE_INTEGER counter) +{ /* FIXME: don't know what are good values */ counter->LowPart = 1; counter->HighPart = 0; @@ -28,8 +28,8 @@ * DisableThreadLibraryCalls (KERNEL32.74) * Don't call DllEntryPoint for DLL_THREAD_{ATTACH,DETACH} if set. */ -BOOL32 -DisableThreadLibraryCalls(HMODULE32 hModule) { +BOOL32 WINAPI DisableThreadLibraryCalls(HMODULE32 hModule) +{ fprintf(stdnimp, "DisableThreadLibraryCalls Stub called!\n"); return TRUE; }
diff --git a/win32/ordinals.c b/win32/ordinals.c index a617b0c..28f098f 100644 --- a/win32/ordinals.c +++ b/win32/ordinals.c
@@ -1,5 +1,5 @@ /* - * Win32 ordinal only exported functions + * Win32 ordinal only exported functions that can't be stuffed somehwere else. * * Copyright 1997 Marcus Meissner */ @@ -19,57 +19,35 @@ extern THDB *pCurrentThread; extern PDB32 *pCurrentProcess; +static CRITICAL_SECTION Win16Mutex; + +/*********************************************** + * GetPWinLock (KERNEL32) + * Return the infamous Win16Mutex. + */ +VOID WINAPI GetPWinLock(CRITICAL_SECTION **lock) +{ + fprintf(stderr,"GetPWinlock(%p)\n",lock); + *lock = &Win16Mutex; +} + /********************************************************************** * _KERNEL32_88 */ -DWORD -WOW32_1(DWORD x,DWORD y) { +DWORD WINAPI WOW32_1(DWORD x,DWORD y) +{ fprintf(stderr,"WOW32_1(0x%08lx,0x%08lx), stub!\n",x,y); return 0; } -/********************************************************************** - * WOWGetVDMPointer (KERNEL32.55) - * Get linear from segmented pointer. (MSDN lib) - */ -LPVOID -WOWGetVDMPointer(DWORD vp,DWORD nrofbytes,BOOL32 protected) { - /* FIXME: add size check too */ - fprintf(stdnimp,"WOWGetVDMPointer(%08lx,%ld,%d)\n",vp,nrofbytes,protected); - if (protected) - return PTR_SEG_TO_LIN(vp); - else - return DOSMEM_MapRealToLinear(vp); -} - -/********************************************************************** - * WOWGetVDMPointerFix (KERNEL32.55) - * Dito, but fix heapsegment (MSDN lib) - */ -LPVOID -WOWGetVDMPointerFix(DWORD vp,DWORD nrofbytes,BOOL32 protected) { - /* FIXME: fix heapsegment */ - fprintf(stdnimp,"WOWGetVDMPointerFix(%08lx,%ld,%d)\n",vp,nrofbytes,protected); - return WOWGetVDMPointer(vp,nrofbytes,protected); -} - -/********************************************************************** - * WOWGetVDMPointerUnFix (KERNEL32.56) - */ -void -WOWGetVDMPointerUnfix(DWORD vp) { - fprintf(stdnimp,"WOWGetVDMPointerUnfix(%08lx), STUB\n",vp); - /* FIXME: unfix heapsegment */ -} - /*********************************************************************** * _KERNEL32_18 (KERNEL32.18) * 'Of course you cannot directly access Windows internal structures' */ -DWORD -_KERNEL32_18(DWORD processid,DWORD action) { +DWORD WINAPI _KERNEL32_18(DWORD processid,DWORD action) +{ PDB32 *process; TDB *pTask; @@ -141,290 +119,13 @@ /* shouldn't come here */ } -/*********************************************************************** - * _KERNEL32_52 (KERNEL32.52) - * FIXME: what does it really do? - */ -VOID -_KERNEL32_52(DWORD arg1,CONTEXT *regs) { - fprintf(stderr,"_KERNE32_52(arg1=%08lx,%08lx)\n",arg1,EDI_reg(regs)); - - EAX_reg(regs) = (DWORD)WIN32_GetProcAddress16(EDI_reg(regs),"ThkBuf"); - - fprintf(stderr," GetProcAddress16(\"ThkBuf\") returns %08lx\n", - EAX_reg(regs) - ); -} - -/*********************************************************************** - * GetPWinLock (KERNEL32) FIXME - * get mutex? critical section for 16 bit mode? - */ -VOID -GetPWinLock(CRITICAL_SECTION **lock) { - static CRITICAL_SECTION plock; - fprintf(stderr,"GetPWinlock(%p)\n",lock); - *lock = &plock; -} - -/*********************************************************************** - * _KERNEL32_43 (KERNEL32.42) - * A thunkbuffer link routine - * The thunkbuf looks like: - * - * 00: DWORD length ? don't know exactly - * 04: SEGPTR ptr ? where does it point to? - * The pointer ptr is written into the first DWORD of 'thunk'. - * (probably correct implemented) - */ -BOOL32 -_KERNEL32_43(LPDWORD thunk,LPCSTR thkbuf,DWORD len,LPCSTR dll16,LPCSTR dll32) { - HINSTANCE16 hmod; - LPDWORD addr; - SEGPTR segaddr; - - fprintf(stderr,"_KERNEL32_43(%p,%s,0x%08lx,%s,%s)\n",thunk,thkbuf,len,dll16,dll32); - - hmod = LoadLibrary16(dll16); - if (hmod<32) { - fprintf(stderr,"->failed to load 16bit DLL %s, error %d\n",dll16,hmod); - return NULL; - } - segaddr = (DWORD)WIN32_GetProcAddress16(hmod,(LPSTR)thkbuf); - if (!segaddr) { - fprintf(stderr,"->no %s exported from %s!\n",thkbuf,dll16); - return NULL; - } - addr = (LPDWORD)PTR_SEG_TO_LIN(segaddr); - if (addr[0] != len) { - fprintf(stderr,"->thkbuf length mismatch? %ld vs %ld\n",len,addr[0]); - return NULL; - } - if (!addr[1]) - return 0; - *(DWORD*)thunk = addr[1]; - return addr[1]; -} - -/*********************************************************************** - * _KERNEL32_45 (KERNEL32.44) - * FIXME: not sure what it does - */ -VOID -_KERNEL32_45(DWORD x,CONTEXT *context) { - fprintf(stderr,"_KERNEL32_45(0x%08lx,%%eax=0x%08lx,%%cx=0x%04lx,%%edx=0x%08lx)\n", - x,(DWORD)EAX_reg(context),(DWORD)CX_reg(context),(DWORD)EDX_reg(context) - ); -} - -/*********************************************************************** - * (KERNEL32.40) - * A thunk setup routine. - * Expects a pointer to a preinitialized thunkbuffer in the first argument - * looking like: - * 00..03: unknown (some pointer to the 16bit struct?) - * 04: EB1E jmp +0x20 - * - * 06..23: unknown (space for replacement code, check .90) - * - * 24:>E8xxxxxxxx call <32bitoffset xxxxxxxx> - * 29: 58 pop eax - * 2A: 2D2500xxxx and eax,0x2500xxxx - * 2F: BAxxxxxxxx mov edx,xxxxxxxx - * 34: 68yyyyyyyy push KERNEL32.90 - * 39: C3 ret - * - * 3A: EB1E jmp +0x20 - * 3E ... 59: unknown (space for replacement code?) - * 5A: E8xxxxxxxx call <32bitoffset xxxxxxxx> - * 5F: 5A pop edx - * 60: 81EA25xxxxxx sub edx, 0x25xxxxxx - * 66: 52 push edx - * 67: 68xxxxxxxx push xxxxxxxx - * 6C: 68yyyyyyyy push KERNEL32.89 - * 71: C3 ret - * 72: end? - * This function checks if the code is there, and replaces the yyyyyyyy entries - * by the functionpointers. - * The thunkbuf looks like: - * - * 00: DWORD length ? don't know exactly - * 04: SEGPTR ptr ? where does it point to? - * The segpointer ptr is written into the first DWORD of 'thunk'. - * (probably correct implemented) - */ - -LPVOID -_KERNEL32_41(LPBYTE thunk,LPCSTR thkbuf,DWORD len,LPCSTR dll16,LPCSTR dll32) { - HMODULE32 hkrnl32 = WIN32_GetModuleHandleA("KERNEL32"); - HMODULE16 hmod; - LPDWORD addr,addr2; - DWORD segaddr; - - fprintf(stderr,"KERNEL32_41(%p,%s,%ld,%s,%s)\n", - thunk,thkbuf,len,dll16,dll32 - ); - - /* FIXME: add checks for valid code ... */ - /* write pointers to kernel32.89 and kernel32.90 (+ordinal base of 1) */ - *(DWORD*)(thunk+0x35) = (DWORD)GetProcAddress32(hkrnl32,(LPSTR)91); - *(DWORD*)(thunk+0x6D) = (DWORD)GetProcAddress32(hkrnl32,(LPSTR)90); - - - hmod = LoadLibrary16(dll16); - if (hmod<32) { - fprintf(stderr,"->failed to load 16bit DLL %s, error %d\n",dll16,hmod); - return NULL; - } - segaddr = (DWORD)WIN32_GetProcAddress16(hmod,(LPSTR)thkbuf); - if (!segaddr) { - fprintf(stderr,"->no %s exported from %s!\n",thkbuf,dll16); - return NULL; - } - addr = (LPDWORD)PTR_SEG_TO_LIN(segaddr); - if (addr[0] != len) { - fprintf(stderr,"->thkbuf length mismatch? %ld vs %ld\n",len,addr[0]); - return NULL; - } - addr2 = PTR_SEG_TO_LIN(addr[1]); - if (HIWORD(addr2)) - *(DWORD*)thunk = (DWORD)addr2; - return addr2; -} /*********************************************************************** * (KERNEL32.33) * Returns some internal value.... probably the default environment database? */ -DWORD -_KERNEL32_34() { +DWORD WINAPI _KERNEL32_34() +{ fprintf(stderr,"KERNEL32_34(), STUB returning 0\n"); return 0; } - -/*********************************************************************** - * (KERNEL32.90) - * Thunk priming? function - * Rewrites the first part of the thunk to use the QT_Thunk interface. - * Replaces offset 4 ... 24 by: - * - * 33C9 xor ecx, ecx - * 8A4DFC mov cl , [ebp-04] - * 8B148Dxxxxxxxx mov edx, [4*ecx + (EAX+EDX)] - * B8yyyyyyyy mov eax, QT_Thunk - * FFE0 jmp eax - * CC int 03 - * CC int 03 - * CC int 03 - * CC int 03 - * CC int 03 - * CC int 03 - * CC int 03 - * CC int 03 - * CC int 03 - * CC int 03 - * CC int 03 - * CC int 03 - * CC int 03 - * and jumps to the start of that code. - * (ok) - */ -VOID -_KERNEL32_91(CONTEXT *context) { - LPBYTE x; - - fprintf(stderr,"_KERNEL32_91(eax=0x%08lx,edx=0x%08lx)\n", - EAX_reg(context),EDX_reg(context) - ); - x = (LPBYTE)EAX_reg(context); - *x++ = 0x33;*x++=0xC9; /* xor ecx,ecx */ - *x++ = 0x8A;*x++=0x4D;*x++=0xFC; /* mov cl,[ebp-04] */ - *x++ = 0x8B;*x++=0x14;*x++=0x8D;*(DWORD*)x= EAX_reg(context)+EDX_reg(context); - x+=4; /* mov edx, [4*ecx + (EAX+EDX) */ - *x++ = 0xB8; *(DWORD*)x = (DWORD)GetProcAddress32(WIN32_GetModuleHandleA("KERNEL32"),"QT_Thunk"); - x+=4; /* mov eax , QT_Thunk */ - *x++ = 0xFF; *x++ = 0xE0; /* jmp eax */ - *x++ = 0xCC; /* int 03 */ - *x++ = 0xCC; /* int 03 */ - *x++ = 0xCC; /* int 03 */ - *x++ = 0xCC; /* int 03 */ - *x++ = 0xCC; /* int 03 */ - *x++ = 0xCC; /* int 03 */ - *x++ = 0xCC; /* int 03 */ - *x++ = 0xCC; /* int 03 */ - *x++ = 0xCC; /* int 03 */ - *x++ = 0xCC; /* int 03 */ - *x++ = 0xCC; /* int 03 */ - *x++ = 0xCC; /* int 03 */ - *x++ = 0xCC; /* int 03 */ - EIP_reg(context) = EAX_reg(context); -} - -/*********************************************************************** - * (KERNEL32.45) - * Another thunkbuf link routine. - * The start of the thunkbuf looks like this: - * 00: DWORD length - * 04: SEGPTR address for thunkbuffer pointer - */ -VOID -_KERNEL32_46(LPBYTE thunk,LPSTR thkbuf,DWORD len,LPSTR dll16,LPSTR dll32) { - LPDWORD addr; - HMODULE16 hmod; - SEGPTR segaddr; - - fprintf(stderr,"KERNEL32_46(%p,%s,%lx,%s,%s)\n", - thunk,thkbuf,len,dll16,dll32 - ); - hmod = LoadLibrary16(dll16); - if (hmod < 32) { - fprintf(stderr,"->couldn't load %s, error %d\n",dll16,hmod); - return; - } - segaddr = (SEGPTR)WIN32_GetProcAddress16(hmod,thkbuf); - if (!segaddr) { - fprintf(stderr,"-> haven't found %s in %s!\n",thkbuf,dll16); - return; - } - addr = (LPDWORD)PTR_SEG_TO_LIN(segaddr); - if (addr[0] != len) { - fprintf(stderr,"-> length of thkbuf differs from expected length! (%ld vs %ld)\n",addr[0],len); - return; - } - *(DWORD*)PTR_SEG_TO_LIN(addr[1]) = (DWORD)thunk; -} - -/********************************************************************** - * _KERNEL32_87 - * Check if thunking is initialized (ss selector set up etc.) - */ -BOOL32 _KERNEL32_87() { - fprintf(stderr,"KERNEL32_87 stub, returning TRUE\n"); - return TRUE; -} - -/********************************************************************** - * _KERNEL32_88 - * One of the real thunking functions - * Probably implemented totally wrong. - */ -BOOL32 _KERNEL32_88(DWORD nr,DWORD flags,LPVOID fun,DWORD *hmm) { - fprintf(stderr,"KERNEL32_88(%ld,0x%08lx,%p,%p) stub, returning TRUE\n", - nr,flags,fun,hmm - ); -#ifndef WINELIB - switch (nr) { - case 0: CallTo32_0(fun); - break; - case 4: CallTo32_1(fun,hmm[0]); - break; - case 8: CallTo32_2(fun,hmm[0],hmm[1]); - break; - default: - fprintf(stderr," unsupported nr of arguments, %ld\n",nr); - break; - - } -#endif - return TRUE; -}
diff --git a/win32/process.c b/win32/process.c index deb34dd..ff4f2c5 100644 --- a/win32/process.c +++ b/win32/process.c
@@ -37,7 +37,7 @@ /*********************************************************************** * CreateMutexA (KERNEL32.52) */ -HANDLE32 CreateMutex32A(SECURITY_ATTRIBUTES *sa,BOOL32 on,LPCSTR name) +HANDLE32 WINAPI CreateMutex32A(SECURITY_ATTRIBUTES *sa,BOOL32 on,LPCSTR name) { K32MUTEX *mut; HANDLE32 handle; @@ -71,7 +71,7 @@ /*********************************************************************** * CreateMutexW (KERNEL32.53) */ -HANDLE32 CreateMutex32W(SECURITY_ATTRIBUTES *sa, BOOL32 on, LPCWSTR a) +HANDLE32 WINAPI CreateMutex32W(SECURITY_ATTRIBUTES *sa, BOOL32 on, LPCWSTR a) { LPSTR name = a?HEAP_strdupWtoA(GetProcessHeap(),0,a):NULL; HANDLE32 ret; @@ -84,9 +84,9 @@ /*********************************************************************** * CreateSemaphoreA (KERNEL32.60) */ -HANDLE32 CreateSemaphore32A( - LPSECURITY_ATTRIBUTES sa,LONG initial,LONG max,LPCSTR name -) { +HANDLE32 WINAPI CreateSemaphore32A( LPSECURITY_ATTRIBUTES sa, + LONG initial,LONG max,LPCSTR name ) +{ K32SEMAPHORE *sem; HANDLE32 handle; K32OBJ *obj = K32OBJ_FindName( name ); @@ -119,7 +119,7 @@ /*********************************************************************** * CreateSemaphoreW (KERNEL32.61) */ -HANDLE32 CreateSemaphore32W(SECURITY_ATTRIBUTES *sa,LONG initial,LONG max,LPCWSTR a) +HANDLE32 WINAPI CreateSemaphore32W(SECURITY_ATTRIBUTES *sa,LONG initial,LONG max,LPCWSTR a) { LPSTR name =a?HEAP_strdupWtoA(GetProcessHeap(),0,a):NULL; HANDLE32 ret; @@ -133,7 +133,7 @@ /*********************************************************************** * OpenSemaphoreA (KERNEL32.403) */ -HANDLE32 OpenSemaphore32A(DWORD desired,BOOL32 inherit,LPCSTR name) +HANDLE32 WINAPI OpenSemaphore32A(DWORD desired,BOOL32 inherit,LPCSTR name) { K32OBJ *obj = K32OBJ_FindName( name ); @@ -149,7 +149,7 @@ /*********************************************************************** * OpenSemaphoreA (KERNEL32.404) */ -HANDLE32 OpenSemaphore32W(DWORD desired,BOOL32 inherit,LPCWSTR name) +HANDLE32 WINAPI OpenSemaphore32W(DWORD desired,BOOL32 inherit,LPCWSTR name) { LPSTR nameA = name?HEAP_strdupWtoA(GetProcessHeap(),0,name):NULL; HANDLE32 ret = OpenSemaphore32A(desired,inherit,nameA); @@ -161,7 +161,8 @@ /*********************************************************************** * ReleaseSemaphore (KERNEL32.403) */ -BOOL32 ReleaseSemaphore(HANDLE32 hSemaphore,LONG lReleaseCount,LPLONG lpPreviousCount) { +BOOL32 WINAPI ReleaseSemaphore(HANDLE32 hSemaphore,LONG lReleaseCount,LPLONG lpPreviousCount) +{ K32SEMAPHORE *sem; sem = (K32SEMAPHORE*)PROCESS_GetObjPtr(hSemaphore,K32OBJ_SEMAPHORE); @@ -183,7 +184,7 @@ /*********************************************************************** * OpenMutexA (KERNEL32.399) */ -HANDLE32 OpenMutex32A(DWORD desiredaccess, BOOL32 inherithandle, LPCSTR name) +HANDLE32 WINAPI OpenMutex32A(DWORD desiredaccess, BOOL32 inherithandle, LPCSTR name) { K32OBJ *obj = K32OBJ_FindName( name ); @@ -199,7 +200,8 @@ /*********************************************************************** * OpenMutexW (KERNEL32.400) */ -HANDLE32 OpenMutex32W(DWORD desiredaccess, BOOL32 inherithandle, LPCWSTR name) +HANDLE32 WINAPI OpenMutex32W(DWORD desiredaccess, BOOL32 inherithandle, + LPCWSTR name) { LPSTR nameA=name?HEAP_strdupWtoA(GetProcessHeap(),0,name):NULL; HANDLE32 ret = OpenMutex32A(desiredaccess,inherithandle,nameA); @@ -211,7 +213,7 @@ /*********************************************************************** * ReleaseMutex (KERNEL32.435) */ -BOOL32 ReleaseMutex (HANDLE32 h) +BOOL32 WINAPI ReleaseMutex (HANDLE32 h) { K32MUTEX *mut = (K32MUTEX*)PROCESS_GetObjPtr(h,K32OBJ_MUTEX); @@ -233,7 +235,8 @@ /*********************************************************************** * CreateEventA (KERNEL32.43) */ -HANDLE32 CreateEvent32A(SECURITY_ATTRIBUTES *sa,BOOL32 au,BOOL32 on,LPCSTR name) +HANDLE32 WINAPI CreateEvent32A(SECURITY_ATTRIBUTES *sa,BOOL32 au,BOOL32 on, + LPCSTR name) { K32EVENT *evt; HANDLE32 handle; @@ -263,7 +266,8 @@ /*********************************************************************** * CreateEventW (KERNEL32.43) */ -HANDLE32 CreateEvent32W(SECURITY_ATTRIBUTES *sa, BOOL32 au, BOOL32 on,LPCWSTR name) +HANDLE32 WINAPI CreateEvent32W(SECURITY_ATTRIBUTES *sa, BOOL32 au, + BOOL32 on,LPCWSTR name) { LPSTR nameA=name?HEAP_strdupWtoA(GetProcessHeap(),0,name):NULL; HANDLE32 ret = CreateEvent32A(sa,au,on,nameA); @@ -275,7 +279,8 @@ /*********************************************************************** * OpenEventA (KERNEL32.394) */ -HANDLE32 OpenEvent32A(DWORD desiredaccess,BOOL32 inherithandle,LPCSTR name) { +HANDLE32 WINAPI OpenEvent32A(DWORD desiredaccess,BOOL32 inherithandle,LPCSTR name) +{ K32OBJ *obj = K32OBJ_FindName( name ); if (obj) { @@ -290,7 +295,8 @@ /*********************************************************************** * OpenEventW (KERNEL32.395) */ -HANDLE32 OpenEvent32W(DWORD desiredaccess,BOOL32 inherithandle,LPCWSTR name) { +HANDLE32 WINAPI OpenEvent32W(DWORD desiredaccess,BOOL32 inherithandle,LPCWSTR name) +{ LPSTR nameA = name?HEAP_strdupWtoA(GetProcessHeap(),0,name):NULL; HANDLE32 ret = OpenEvent32A(desiredaccess,inherithandle,nameA); @@ -301,7 +307,7 @@ /*********************************************************************** * SetEvent (KERNEL32.487) */ -BOOL32 SetEvent (HANDLE32 h) +BOOL32 WINAPI SetEvent (HANDLE32 h) { fprintf(stderr,"SetEvent(%d) stub\n",h); return 0; @@ -309,7 +315,7 @@ /*********************************************************************** * ResetEvent (KERNEL32.439) */ -BOOL32 ResetEvent (HANDLE32 h) +BOOL32 WINAPI ResetEvent (HANDLE32 h) { fprintf(stderr,"ResetEvent(%d) stub\n",h); return 0; @@ -318,16 +324,26 @@ /*********************************************************************** * WaitForSingleObject (KERNEL32.561) */ -DWORD WaitForSingleObject(HANDLE32 h, DWORD timeout) +DWORD WINAPI WaitForSingleObject(HANDLE32 h, DWORD timeout) { fprintf(stderr,"WaitForSingleObject(%d,%ld) stub\n",h,timeout); return 0; } /*********************************************************************** + * WaitForSingleObjectEx (KERNEL32) + */ +DWORD WINAPI WaitForSingleObjectEx(HANDLE32 h,DWORD timeout,BOOL32 bAlertable) +{ + fprintf(stderr,"WaitForSingleObjectEx(%d,%ld,%d) stub\n",h,timeout,bAlertable); + return 0; +} + + +/*********************************************************************** * WaitForMultipleObjects (USER32.399) */ -DWORD MsgWaitForMultipleObjects( +DWORD WINAPI MsgWaitForMultipleObjects( DWORD nCount,HANDLE32 *pHandles,BOOL32 fWaitAll,DWORD dwMilliseconds, DWORD dwWakeMask ) { @@ -341,20 +357,25 @@ /*********************************************************************** * DuplicateHandle (KERNEL32.78) */ -BOOL32 DuplicateHandle(HANDLE32 a, HANDLE32 b, HANDLE32 c, HANDLE32 * d, DWORD e, BOOL32 f, DWORD g) +BOOL32 WINAPI DuplicateHandle(HANDLE32 a, HANDLE32 b, HANDLE32 c, HANDLE32 * d, DWORD e, BOOL32 f, DWORD g) { fprintf(stderr,"DuplicateHandle(%d,%d,%d,%p,%ld,%d,%ld) stub\n",a,b,c,d,e,f,g); *d = b; return TRUE; } +HINSTANCE32 WINAPI LoadLibraryEx32A(LPCSTR libname,HFILE32 hfile,DWORD flags) +{ + fprintf(stderr,"LoadLibraryEx32A(%s,%d,0x%08lx)\n",libname,hfile,flags); + return LoadLibrary32A(libname); +} /*********************************************************************** * LoadLibraryA (KERNEL32.365) * copied from LoadLibrary * This does not currently support built-in libraries */ -HINSTANCE32 LoadLibrary32A(LPCSTR libname) +HINSTANCE32 WINAPI LoadLibrary32A(LPCSTR libname) { HINSTANCE32 handle; dprintf_module( stddeb, "LoadLibrary: (%08x) %s\n", (int)libname, libname); @@ -376,7 +397,7 @@ /*********************************************************************** * LoadLibrary32W (KERNEL32.368) */ -HINSTANCE32 LoadLibrary32W(LPCWSTR libnameW) +HINSTANCE32 WINAPI LoadLibrary32W(LPCWSTR libnameW) { LPSTR libnameA = HEAP_strdupWtoA( GetProcessHeap(), 0, libnameW ); HINSTANCE32 ret = LoadLibrary32A( libnameA ); @@ -387,7 +408,7 @@ /*********************************************************************** * FreeLibrary */ -BOOL32 FreeLibrary32(HINSTANCE32 hLibModule) +BOOL32 WINAPI FreeLibrary32(HINSTANCE32 hLibModule) { fprintf(stderr,"FreeLibrary: empty stub\n"); return TRUE; @@ -396,8 +417,9 @@ /********************************************************************** * GetProcessAffinityMask */ -BOOL32 GetProcessAffinityMask(HANDLE32 hProcess, LPDWORD lpProcessAffinityMask, - LPDWORD lpSystemAffinityMask) +BOOL32 WINAPI GetProcessAffinityMask(HANDLE32 hProcess, + LPDWORD lpProcessAffinityMask, + LPDWORD lpSystemAffinityMask) { dprintf_task(stddeb,"GetProcessAffinityMask(%x,%lx,%lx)\n", hProcess,(lpProcessAffinityMask?*lpProcessAffinityMask:0), @@ -415,7 +437,7 @@ * SetThreadAffinityMask * Works now like the Windows95 (no MP support) version */ -BOOL32 SetThreadAffinityMask(HANDLE32 hThread, DWORD dwThreadAffinityMask) +BOOL32 WINAPI SetThreadAffinityMask(HANDLE32 hThread, DWORD dwThreadAffinityMask) { THDB *thdb = (THDB*)PROCESS_GetObjPtr(hThread,K32OBJ_THREAD); @@ -430,8 +452,7 @@ return TRUE; } -BOOL32 -CreateProcess32A( +BOOL32 WINAPI CreateProcess32A( LPCSTR appname,LPSTR cmdline,LPSECURITY_ATTRIBUTES processattributes, LPSECURITY_ATTRIBUTES threadattributes,BOOL32 inherithandles, DWORD creationflags,LPVOID env,LPCSTR curdir, @@ -444,8 +465,7 @@ return TRUE; } -BOOL32 -ContinueDebugEvent(DWORD pid,DWORD tid,DWORD contstatus) { +BOOL32 WINAPI ContinueDebugEvent(DWORD pid,DWORD tid,DWORD contstatus) { fprintf(stderr,"ContinueDebugEvent(%ld,%ld,%ld), stub\n",pid,tid,contstatus); return TRUE; } @@ -455,8 +475,7 @@ * * FIXME: implement this better ... */ -BOOL32 -GetProcessTimes( +BOOL32 WINAPI GetProcessTimes( HANDLE32 hprocess,LPFILETIME lpCreationTime,LPFILETIME lpExitTime, LPFILETIME lpKernelTime, LPFILETIME lpUserTime ) {
diff --git a/win32/security.c b/win32/security.c index f8e9afa..4f7ef47 100644 --- a/win32/security.c +++ b/win32/security.c
@@ -8,23 +8,23 @@ #include "stddebug.h" #include "debug.h" -BOOL32 IsValidSid (LPSID pSid); -BOOL32 EqualSid (LPSID pSid1, LPSID pSid2); -BOOL32 EqualPrefixSid (LPSID pSid1, LPSID pSid2); -DWORD GetSidLengthRequired (BYTE nSubAuthorityCount); -BOOL32 AllocateAndInitializeSid (LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, LPSID *pSid); -VOID *FreeSid(LPSID pSid); -BOOL32 InitializeSid (LPSID pSid, LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount); -LPSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority (LPSID pSid); -DWORD *GetSidSubAuthority (LPSID pSid, DWORD nSubAuthority); -BYTE *GetSidSubAuthorityCount (LPSID pSid); -DWORD GetLengthSid (LPSID pSid); -BOOL32 CopySid (DWORD nDestinationSidLength, LPSID pDestinationSid, LPSID pSourceSid); +BOOL32 WINAPI IsValidSid (LPSID pSid); +BOOL32 WINAPI EqualSid (LPSID pSid1, LPSID pSid2); +BOOL32 WINAPI EqualPrefixSid (LPSID pSid1, LPSID pSid2); +DWORD WINAPI GetSidLengthRequired (BYTE nSubAuthorityCount); +BOOL32 WINAPI AllocateAndInitializeSid(LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, LPSID *pSid); +VOID* WINAPI FreeSid(LPSID pSid); +BOOL32 WINAPI InitializeSid (LPSID pSid, LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount); +LPSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority(LPSID pSid); +DWORD* WINAPI GetSidSubAuthority(LPSID pSid, DWORD nSubAuthority); +BYTE* WINAPI GetSidSubAuthorityCount(LPSID pSid); +DWORD WINAPI GetLengthSid(LPSID pSid); +BOOL32 WINAPI CopySid(DWORD nDestinationSidLength, LPSID pDestinationSid, LPSID pSourceSid); /*********************************************************************** * IsValidSid (ADVAPI.80) */ -BOOL32 IsValidSid (LPSID pSid) { +BOOL32 WINAPI IsValidSid (LPSID pSid) { if (!pSid || pSid->Revision != SID_REVISION) return FALSE; @@ -34,7 +34,7 @@ /*********************************************************************** * EqualSid (ADVAPI.40) */ -BOOL32 EqualSid (LPSID pSid1, LPSID pSid2) { +BOOL32 WINAPI EqualSid (LPSID pSid1, LPSID pSid2) { if (!IsValidSid(pSid1) || !IsValidSid(pSid2)) return FALSE; @@ -50,7 +50,7 @@ /*********************************************************************** * EqualPrefixSid (ADVAPI.39) */ -BOOL32 EqualPrefixSid (LPSID pSid1, LPSID pSid2) { +BOOL32 WINAPI EqualPrefixSid (LPSID pSid1, LPSID pSid2) { if (!IsValidSid(pSid1) || !IsValidSid(pSid2)) return FALSE; @@ -67,14 +67,14 @@ /*********************************************************************** * GetSidLengthRequired (ADVAPI.63) */ -DWORD GetSidLengthRequired (BYTE nSubAuthorityCount) { +DWORD WINAPI GetSidLengthRequired (BYTE nSubAuthorityCount) { return sizeof (SID) + (nSubAuthorityCount - 1 * sizeof (DWORD)); } /*********************************************************************** * AllocateAndInitializeSid (ADVAPI.11) */ -BOOL32 AllocateAndInitializeSid (LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, +BOOL32 WINAPI AllocateAndInitializeSid(LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, @@ -112,7 +112,7 @@ /*********************************************************************** * FreeSid (ADVAPI.42) */ -VOID *FreeSid(LPSID pSid) { +VOID* WINAPI FreeSid(LPSID pSid) { free(pSid); return NULL; } @@ -120,8 +120,9 @@ /*********************************************************************** * InitializeSid (ADVAPI.74) */ -BOOL32 InitializeSid (LPSID pSid, LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, - BYTE nSubAuthorityCount) { +BOOL32 WINAPI InitializeSid (LPSID pSid, LPSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, + BYTE nSubAuthorityCount) +{ int i; pSid->Revision = SID_REVISION; @@ -139,36 +140,41 @@ /*********************************************************************** * GetSidIdentifierAuthority (ADVAPI.62) */ -LPSID_IDENTIFIER_AUTHORITY GetSidIdentifierAuthority (LPSID pSid) { +LPSID_IDENTIFIER_AUTHORITY WINAPI GetSidIdentifierAuthority (LPSID pSid) +{ return &pSid->IdentifierAuthority; } /*********************************************************************** * GetSidSubAuthority (ADVAPI.64) */ -DWORD *GetSidSubAuthority (LPSID pSid, DWORD nSubAuthority) { +DWORD * WINAPI GetSidSubAuthority (LPSID pSid, DWORD nSubAuthority) +{ return &pSid->SubAuthority[nSubAuthority]; } /*********************************************************************** * GetSidSubAuthorityCount (ADVAPI.65) */ -BYTE *GetSidSubAuthorityCount (LPSID pSid) { +BYTE * WINAPI GetSidSubAuthorityCount (LPSID pSid) +{ return &pSid->SubAuthorityCount; } /*********************************************************************** * GetLengthSid (ADVAPI.48) */ -DWORD GetLengthSid (LPSID pSid) { +DWORD WINAPI GetLengthSid (LPSID pSid) +{ return GetSidLengthRequired(*GetSidSubAuthorityCount(pSid)); } /*********************************************************************** * CopySid (ADVAPI.24) */ -BOOL32 CopySid (DWORD nDestinationSidLength, LPSID pDestinationSid, - LPSID pSourceSid) { +BOOL32 WINAPI CopySid (DWORD nDestinationSidLength, LPSID pDestinationSid, + LPSID pSourceSid) +{ if (!IsValidSid(pSourceSid)) return FALSE;
diff --git a/win32/thread.c b/win32/thread.c index 93153a0..4d4da74 100644 --- a/win32/thread.c +++ b/win32/thread.c
@@ -38,7 +38,7 @@ * The returned number need not be equal to the result!!!! * ************************************************************************/ -LONG InterlockedIncrement(LPLONG lpAddend) +LONG WINAPI InterlockedIncrement(LPLONG lpAddend) { #if defined(__i386__)&&defined(__GNUC__) long ret; @@ -78,7 +78,7 @@ * The returned number need not be equal to the result!!!! * ************************************************************************/ -LONG InterlockedDecrement(LPLONG lpAddend) +LONG WINAPI InterlockedDecrement(LPLONG lpAddend) { #if defined(__i386__)&&defined(__GNUC__) LONG ret; @@ -111,7 +111,7 @@ * InterlockedExchange [KERNEL32] * ************************************************************************/ -LONG InterlockedExchange(LPLONG target, LONG value) +LONG WINAPI InterlockedExchange(LPLONG target, LONG value) { #if defined(__i386__)&&defined(__GNUC__) LONG ret; @@ -145,7 +145,7 @@ * InitializeCriticalSection [KERNEL32] * ************************************************************************/ -void InitializeCriticalSection(CRITICAL_SECTION *pcritical) +void WINAPI InitializeCriticalSection(CRITICAL_SECTION *pcritical) { pcritical->LockCount=-1; pcritical->RecursionCount=0; @@ -158,7 +158,7 @@ * DeleteCriticalSection [KERNEL32] * ************************************************************************/ -void DeleteCriticalSection(CRITICAL_SECTION *pcritical) +void WINAPI DeleteCriticalSection(CRITICAL_SECTION *pcritical) { semctl((int) pcritical->LockSemaphore,0,IPC_RMID,(union semun)NULL); pcritical->Reserved=-1; @@ -168,7 +168,7 @@ * EnterCriticalSection [KERNEL32] * ************************************************************************/ -void EnterCriticalSection (CRITICAL_SECTION *pcritical) +void WINAPI EnterCriticalSection (CRITICAL_SECTION *pcritical) { if( InterlockedIncrement(&(pcritical->LockCount))) { @@ -195,7 +195,7 @@ * TryEnterCriticalSection [KERNEL32] * ************************************************************************/ -BOOL32 TryEnterCriticalSection (CRITICAL_SECTION *pcritical) +BOOL32 WINAPI TryEnterCriticalSection (CRITICAL_SECTION *pcritical) { if( InterlockedIncrement(&(pcritical->LockCount))) { @@ -215,7 +215,7 @@ * LeaveCriticalSection [KERNEL32] * ************************************************************************/ -void LeaveCriticalSection (CRITICAL_SECTION *pcritical) +void WINAPI LeaveCriticalSection(CRITICAL_SECTION *pcritical) { /* do we actually own this critical section ??? */ if( pcritical->OwningThread!= (HANDLE32) GetCurrentThreadId()) @@ -245,7 +245,7 @@ * ReinitializeCriticalSection [KERNEL32] * ************************************************************************/ -void ReinitializeCriticalSection(CRITICAL_SECTION *lpCrit) +void WINAPI ReinitializeCriticalSection(CRITICAL_SECTION *lpCrit) { /* hmm ?????? */ } @@ -254,7 +254,7 @@ * MakeCriticalSectionGlobal [KERNEL32] * ************************************************************************/ -void MakeCriticalSectionGlobal(CRITICAL_SECTION *lpCrit) +void WINAPI MakeCriticalSectionGlobal(CRITICAL_SECTION *lpCrit) { /* nothing (SysV Semaphores are already global) */ return;
diff --git a/win32/time.c b/win32/time.c index 4994190..67c3cb5 100644 --- a/win32/time.c +++ b/win32/time.c
@@ -16,7 +16,7 @@ /*********************************************************************** * GetLocalTime (KERNEL32.228) */ -VOID GetLocalTime(LPSYSTEMTIME systime) +VOID WINAPI GetLocalTime(LPSYSTEMTIME systime) { time_t local_time; struct tm *local_tm; @@ -39,7 +39,7 @@ /*********************************************************************** * GetSystemTime (KERNEL32.285) */ -VOID GetSystemTime(LPSYSTEMTIME systime) +VOID WINAPI GetSystemTime(LPSYSTEMTIME systime) { time_t local_time; struct tm *local_tm; @@ -63,7 +63,7 @@ /*********************************************************************** * SetSystemTime (KERNEL32.507) */ -BOOL32 SetSystemTime(const SYSTEMTIME *systime) +BOOL32 WINAPI SetSystemTime(const SYSTEMTIME *systime) { struct timeval tv; struct timezone tz; @@ -99,7 +99,7 @@ /*********************************************************************** * GetTimeZoneInformation (KERNEL32.302) */ -DWORD GetTimeZoneInformation(LPTIME_ZONE_INFORMATION tzinfo) +DWORD WINAPI GetTimeZoneInformation(LPTIME_ZONE_INFORMATION tzinfo) { time_t gmt, lt; @@ -118,7 +118,7 @@ /*********************************************************************** * SetTimeZoneInformation (KERNEL32.515) */ -BOOL32 SetTimeZoneInformation(const LPTIME_ZONE_INFORMATION tzinfo) +BOOL32 WINAPI SetTimeZoneInformation(const LPTIME_ZONE_INFORMATION tzinfo) { struct timezone tz; @@ -135,7 +135,7 @@ /*********************************************************************** * Sleep (KERNEL32.523) */ -VOID Sleep(DWORD cMilliseconds) +VOID WINAPI Sleep(DWORD cMilliseconds) { if(cMilliseconds == INFINITE32) while(1) sleep(1000); /* Spin forever */
diff --git a/win32/user32.c b/win32/user32.c index 5a1192a..3080596 100644 --- a/win32/user32.c +++ b/win32/user32.c
@@ -22,7 +22,7 @@ /*********************************************************************** * GetMessage32A (USER32.269) */ -BOOL32 GetMessage32A(MSG32* lpmsg,HWND32 hwnd,UINT32 min,UINT32 max) +BOOL32 WINAPI GetMessage32A(MSG32* lpmsg,HWND32 hwnd,UINT32 min,UINT32 max) { BOOL32 ret; MSG16 *msg = SEGPTR_NEW(MSG16); @@ -37,7 +37,7 @@ /*********************************************************************** * GetMessage32W (USER32.273) */ -BOOL32 GetMessage32W(MSG32* lpmsg,HWND32 hwnd,UINT32 min,UINT32 max) +BOOL32 WINAPI GetMessage32W(MSG32* lpmsg,HWND32 hwnd,UINT32 min,UINT32 max) { BOOL32 ret; MSG16 *msg = SEGPTR_NEW(MSG16); @@ -52,8 +52,8 @@ /*********************************************************************** * PeekMessageA */ -BOOL32 PeekMessage32A( LPMSG32 lpmsg, HWND32 hwnd, - UINT32 min,UINT32 max,UINT32 wRemoveMsg) +BOOL32 WINAPI PeekMessage32A( LPMSG32 lpmsg, HWND32 hwnd, + UINT32 min,UINT32 max,UINT32 wRemoveMsg) { MSG16 msg; BOOL32 ret; @@ -66,8 +66,8 @@ /*********************************************************************** * PeekMessageW */ -BOOL32 PeekMessage32W( LPMSG32 lpmsg, HWND32 hwnd, - UINT32 min,UINT32 max,UINT32 wRemoveMsg) +BOOL32 WINAPI PeekMessage32W( LPMSG32 lpmsg, HWND32 hwnd, + UINT32 min,UINT32 max,UINT32 wRemoveMsg) { /* FIXME: Should perform Unicode translation on specific messages */ return PeekMessage32A(lpmsg,hwnd,min,max,wRemoveMsg);
diff --git a/windows/caret.c b/windows/caret.c index 00de7ff..315ce72 100644 --- a/windows/caret.c +++ b/windows/caret.c
@@ -65,7 +65,8 @@ /* So now it's always a toggle */ Caret.on = !Caret.on; - if (!(hdc = GetDCEx32( Caret.hwnd, 0, DCX_USESTYLE | DCX_CACHE ))) return; + /* do not use DCX_CACHE here, for x,y,width,height are in logical units */ + if (!(hdc = GetDCEx32( Caret.hwnd, 0, DCX_USESTYLE /*| DCX_CACHE*/ ))) return; hPrevBrush = SelectObject32( hdc, Caret.hBrush ); PatBlt32( hdc, Caret.x, Caret.y, Caret.width, Caret.height, PATINVERT ); SelectObject32( hdc, hPrevBrush ); @@ -125,7 +126,8 @@ /***************************************************************** * CreateCaret16 (USER.163) */ -void CreateCaret16( HWND16 hwnd, HBITMAP16 bitmap, INT16 width, INT16 height ) +void WINAPI CreateCaret16( HWND16 hwnd, HBITMAP16 bitmap, + INT16 width, INT16 height ) { CreateCaret32( hwnd, bitmap, width, height ); } @@ -133,8 +135,8 @@ /***************************************************************** * CreateCaret32 (USER32.65) */ -BOOL32 CreateCaret32( HWND32 hwnd, HBITMAP32 bitmap, - INT32 width, INT32 height ) +BOOL32 WINAPI CreateCaret32( HWND32 hwnd, HBITMAP32 bitmap, + INT32 width, INT32 height ) { dprintf_caret(stddeb,"CreateCaret: hwnd=%04x\n", hwnd); @@ -175,7 +177,7 @@ /***************************************************************** * DestroyCaret16 (USER.164) */ -void DestroyCaret16(void) +void WINAPI DestroyCaret16(void) { DestroyCaret32(); } @@ -184,7 +186,7 @@ /***************************************************************** * DestroyCaret32 (USER32.130) */ -BOOL32 DestroyCaret32(void) +BOOL32 WINAPI DestroyCaret32(void) { if (!Caret.hwnd) return FALSE; @@ -202,7 +204,7 @@ /***************************************************************** * SetCaretPos16 (USER.165) */ -void SetCaretPos16( INT16 x, INT16 y ) +void WINAPI SetCaretPos16( INT16 x, INT16 y ) { SetCaretPos32( x, y ); } @@ -211,7 +213,7 @@ /***************************************************************** * SetCaretPos32 (USER32.465) */ -BOOL32 SetCaretPos32( INT32 x, INT32 y) +BOOL32 WINAPI SetCaretPos32( INT32 x, INT32 y) { if (!Caret.hwnd) return FALSE; if ((x == Caret.x) && (y == Caret.y)) return TRUE; @@ -234,7 +236,7 @@ /***************************************************************** * HideCaret16 (USER.166) */ -void HideCaret16( HWND16 hwnd ) +void WINAPI HideCaret16( HWND16 hwnd ) { HideCaret32( hwnd ); } @@ -243,7 +245,7 @@ /***************************************************************** * HideCaret32 (USER32.316) */ -BOOL32 HideCaret32( HWND32 hwnd ) +BOOL32 WINAPI HideCaret32( HWND32 hwnd ) { if (!Caret.hwnd) return FALSE; if (hwnd && (Caret.hwnd != hwnd)) return FALSE; @@ -261,7 +263,7 @@ /***************************************************************** * ShowCaret16 (USER.167) */ -void ShowCaret16( HWND16 hwnd ) +void WINAPI ShowCaret16( HWND16 hwnd ) { ShowCaret32( hwnd ); } @@ -270,7 +272,7 @@ /***************************************************************** * ShowCaret32 (USER32.528) */ -BOOL32 ShowCaret32( HWND32 hwnd ) +BOOL32 WINAPI ShowCaret32( HWND32 hwnd ) { if (!Caret.hwnd) return FALSE; if (hwnd && (Caret.hwnd != hwnd)) return FALSE; @@ -294,7 +296,7 @@ /***************************************************************** * SetCaretBlinkTime16 (USER.168) */ -void SetCaretBlinkTime16( UINT16 msecs ) +void WINAPI SetCaretBlinkTime16( UINT16 msecs ) { SetCaretBlinkTime32( msecs ); } @@ -302,7 +304,7 @@ /***************************************************************** * SetCaretBlinkTime32 (USER32.464) */ -BOOL32 SetCaretBlinkTime32( UINT32 msecs ) +BOOL32 WINAPI SetCaretBlinkTime32( UINT32 msecs ) { if (!Caret.hwnd) return FALSE; @@ -318,7 +320,7 @@ /***************************************************************** * GetCaretBlinkTime16 (USER.169) */ -UINT16 GetCaretBlinkTime16(void) +UINT16 WINAPI GetCaretBlinkTime16(void) { return (UINT16)GetCaretBlinkTime32(); } @@ -327,7 +329,7 @@ /***************************************************************** * GetCaretBlinkTime32 (USER32.208) */ -UINT32 GetCaretBlinkTime32(void) +UINT32 WINAPI GetCaretBlinkTime32(void) { return Caret.timeout; } @@ -336,7 +338,7 @@ /***************************************************************** * GetCaretPos16 (USER.183) */ -VOID GetCaretPos16( LPPOINT16 pt ) +VOID WINAPI GetCaretPos16( LPPOINT16 pt ) { if (!Caret.hwnd || !pt) return; @@ -350,7 +352,7 @@ /***************************************************************** * GetCaretPos32 (USER32.209) */ -BOOL32 GetCaretPos32( LPPOINT32 pt ) +BOOL32 WINAPI GetCaretPos32( LPPOINT32 pt ) { if (!Caret.hwnd || !pt) return FALSE; pt->x = Caret.x;
diff --git a/windows/class.c b/windows/class.c index 4cc7eb6..e6422e9 100644 --- a/windows/class.c +++ b/windows/class.c
@@ -304,7 +304,7 @@ /*********************************************************************** * RegisterClass16 (USER.57) */ -ATOM RegisterClass16( const WNDCLASS16 *wc ) +ATOM WINAPI RegisterClass16( const WNDCLASS16 *wc ) { ATOM atom; CLASS *classPtr; @@ -342,7 +342,7 @@ /*********************************************************************** * RegisterClass32A (USER32.426) */ -ATOM RegisterClass32A( const WNDCLASS32A* wc ) +ATOM WINAPI RegisterClass32A( const WNDCLASS32A* wc ) { ATOM atom; CLASS *classPtr; @@ -379,7 +379,7 @@ /*********************************************************************** * RegisterClass32W (USER32.429) */ -ATOM RegisterClass32W( const WNDCLASS32W* wc ) +ATOM WINAPI RegisterClass32W( const WNDCLASS32W* wc ) { ATOM atom; CLASS *classPtr; @@ -414,7 +414,7 @@ /*********************************************************************** * RegisterClassEx16 (USER.397) */ -ATOM RegisterClassEx16( const WNDCLASSEX16 *wc ) +ATOM WINAPI RegisterClassEx16( const WNDCLASSEX16 *wc ) { ATOM atom; CLASS *classPtr; @@ -449,7 +449,7 @@ /*********************************************************************** * RegisterClassEx32A (USER32.427) */ -ATOM RegisterClassEx32A( const WNDCLASSEX32A* wc ) +ATOM WINAPI RegisterClassEx32A( const WNDCLASSEX32A* wc ) { ATOM atom; CLASS *classPtr; @@ -484,7 +484,7 @@ /*********************************************************************** * RegisterClassEx32W (USER32.428) */ -ATOM RegisterClassEx32W( const WNDCLASSEX32W* wc ) +ATOM WINAPI RegisterClassEx32W( const WNDCLASSEX32W* wc ) { ATOM atom; CLASS *classPtr; @@ -519,7 +519,7 @@ /*********************************************************************** * UnregisterClass16 (USER.403) */ -BOOL16 UnregisterClass16( SEGPTR className, HINSTANCE16 hInstance ) +BOOL16 WINAPI UnregisterClass16( SEGPTR className, HINSTANCE16 hInstance ) { CLASS *classPtr; ATOM atom; @@ -535,7 +535,7 @@ /*********************************************************************** * UnregisterClass32A (USER32.562) */ -BOOL32 UnregisterClass32A( LPCSTR className, HINSTANCE32 hInstance ) +BOOL32 WINAPI UnregisterClass32A( LPCSTR className, HINSTANCE32 hInstance ) { CLASS *classPtr; ATOM atom; @@ -551,7 +551,7 @@ /*********************************************************************** * UnregisterClass32W (USER32.563) */ -BOOL32 UnregisterClass32W( LPCWSTR className, HINSTANCE32 hInstance ) +BOOL32 WINAPI UnregisterClass32W( LPCWSTR className, HINSTANCE32 hInstance ) { CLASS *classPtr; ATOM atom; @@ -567,7 +567,7 @@ /*********************************************************************** * GetClassWord16 (USER.129) */ -WORD GetClassWord16( HWND16 hwnd, INT16 offset ) +WORD WINAPI GetClassWord16( HWND16 hwnd, INT16 offset ) { return GetClassWord32( hwnd, offset ); } @@ -576,7 +576,7 @@ /*********************************************************************** * GetClassWord32 (USER32.218) */ -WORD GetClassWord32( HWND32 hwnd, INT32 offset ) +WORD WINAPI GetClassWord32( HWND32 hwnd, INT32 offset ) { WND * wndPtr; @@ -607,7 +607,7 @@ /*********************************************************************** * GetClassLong16 (USER.131) */ -LONG GetClassLong16( HWND16 hwnd, INT16 offset ) +LONG WINAPI GetClassLong16( HWND16 hwnd, INT16 offset ) { WND *wndPtr; LONG ret; @@ -629,7 +629,7 @@ /*********************************************************************** * GetClassLong32A (USER32.214) */ -LONG GetClassLong32A( HWND32 hwnd, INT32 offset ) +LONG WINAPI GetClassLong32A( HWND32 hwnd, INT32 offset ) { WND * wndPtr; @@ -663,7 +663,7 @@ /*********************************************************************** * GetClassLong32W (USER32.215) */ -LONG GetClassLong32W( HWND32 hwnd, INT32 offset ) +LONG WINAPI GetClassLong32W( HWND32 hwnd, INT32 offset ) { WND * wndPtr; @@ -684,7 +684,7 @@ /*********************************************************************** * SetClassWord16 (USER.130) */ -WORD SetClassWord16( HWND16 hwnd, INT16 offset, WORD newval ) +WORD WINAPI SetClassWord16( HWND16 hwnd, INT16 offset, WORD newval ) { return SetClassWord32( hwnd, offset, newval ); } @@ -693,7 +693,7 @@ /*********************************************************************** * SetClassWord32 (USER32.468) */ -WORD SetClassWord32( HWND32 hwnd, INT32 offset, WORD newval ) +WORD WINAPI SetClassWord32( HWND32 hwnd, INT32 offset, WORD newval ) { WND * wndPtr; WORD retval = 0; @@ -737,7 +737,7 @@ /*********************************************************************** * SetClassLong16 (USER.132) */ -LONG SetClassLong16( HWND16 hwnd, INT16 offset, LONG newval ) +LONG WINAPI SetClassLong16( HWND16 hwnd, INT16 offset, LONG newval ) { WND *wndPtr; LONG retval; @@ -761,7 +761,7 @@ /*********************************************************************** * SetClassLong32A (USER32.466) */ -LONG SetClassLong32A( HWND32 hwnd, INT32 offset, LONG newval ) +LONG WINAPI SetClassLong32A( HWND32 hwnd, INT32 offset, LONG newval ) { WND * wndPtr; LONG retval = 0; @@ -813,7 +813,7 @@ /*********************************************************************** * SetClassLong32W (USER32.467) */ -LONG SetClassLong32W( HWND32 hwnd, INT32 offset, LONG newval ) +LONG WINAPI SetClassLong32W( HWND32 hwnd, INT32 offset, LONG newval ) { WND *wndPtr; LONG retval; @@ -839,7 +839,7 @@ /*********************************************************************** * GetClassName16 (USER.58) */ -INT16 GetClassName16( HWND16 hwnd, LPSTR buffer, INT16 count ) +INT16 WINAPI GetClassName16( HWND16 hwnd, LPSTR buffer, INT16 count ) { WND *wndPtr; if (!(wndPtr = WIN_FindWndPtr(hwnd))) return 0; @@ -850,7 +850,7 @@ /*********************************************************************** * GetClassName32A (USER32.216) */ -INT32 GetClassName32A( HWND32 hwnd, LPSTR buffer, INT32 count ) +INT32 WINAPI GetClassName32A( HWND32 hwnd, LPSTR buffer, INT32 count ) { WND *wndPtr; if (!(wndPtr = WIN_FindWndPtr(hwnd))) return 0; @@ -861,7 +861,7 @@ /*********************************************************************** * GetClassName32W (USER32.217) */ -INT32 GetClassName32W( HWND32 hwnd, LPWSTR buffer, INT32 count ) +INT32 WINAPI GetClassName32W( HWND32 hwnd, LPWSTR buffer, INT32 count ) { WND *wndPtr; if (!(wndPtr = WIN_FindWndPtr(hwnd))) return 0; @@ -872,15 +872,19 @@ /*********************************************************************** * GetClassInfo16 (USER.404) */ -BOOL16 GetClassInfo16( HINSTANCE16 hInstance, SEGPTR name, WNDCLASS16 *wc ) +BOOL16 WINAPI GetClassInfo16( HINSTANCE16 hInstance, SEGPTR name, + WNDCLASS16 *wc ) { ATOM atom; CLASS *classPtr; hInstance = GetExePtr( hInstance ); if (!(atom = GlobalFindAtom16( name )) || - !(classPtr = CLASS_FindClassByAtom( atom, hInstance )) || - (hInstance != classPtr->hInstance)) return FALSE; + !(classPtr = CLASS_FindClassByAtom( atom, hInstance ))) + return FALSE; + if ((hInstance != classPtr->hInstance) && + !(classPtr->style & CS_GLOBALCLASS)) /*BWCC likes to pass hInstance=0*/ + return FALSE; wc->style = (UINT16)classPtr->style; wc->lpfnWndProc = WINPROC_GetProc( classPtr->winproc, WIN_PROC_16 ); wc->cbClsExtra = (INT16)classPtr->cbClsExtra; @@ -900,7 +904,8 @@ /*********************************************************************** * GetClassInfo32A (USER32.210) */ -BOOL32 GetClassInfo32A( HINSTANCE32 hInstance, LPCSTR name, WNDCLASS32A *wc ) +BOOL32 WINAPI GetClassInfo32A( HINSTANCE32 hInstance, LPCSTR name, + WNDCLASS32A *wc ) { ATOM atom; CLASS *classPtr; @@ -929,7 +934,8 @@ /*********************************************************************** * GetClassInfo32W (USER32.213) */ -BOOL32 GetClassInfo32W( HINSTANCE32 hInstance, LPCWSTR name, WNDCLASS32W *wc ) +BOOL32 WINAPI GetClassInfo32W( HINSTANCE32 hInstance, LPCWSTR name, + WNDCLASS32W *wc ) { ATOM atom; CLASS *classPtr; @@ -961,7 +967,8 @@ * FIXME: this is just a guess, I have no idea if GetClassInfoEx() is the * same in Win16 as in Win32. --AJ */ -BOOL16 GetClassInfoEx16( HINSTANCE16 hInstance, SEGPTR name, WNDCLASSEX16 *wc ) +BOOL16 WINAPI GetClassInfoEx16( HINSTANCE16 hInstance, SEGPTR name, + WNDCLASSEX16 *wc ) { ATOM atom; CLASS *classPtr; @@ -990,8 +997,8 @@ /*********************************************************************** * GetClassInfoEx32A (USER32.211) */ -BOOL32 GetClassInfoEx32A( HINSTANCE32 hInstance, LPCSTR name, - WNDCLASSEX32A *wc ) +BOOL32 WINAPI GetClassInfoEx32A( HINSTANCE32 hInstance, LPCSTR name, + WNDCLASSEX32A *wc ) { ATOM atom; CLASS *classPtr; @@ -1019,8 +1026,8 @@ /*********************************************************************** * GetClassInfoEx32W (USER32.212) */ -BOOL32 GetClassInfoEx32W( HINSTANCE32 hInstance, LPCWSTR name, - WNDCLASSEX32W *wc ) +BOOL32 WINAPI GetClassInfoEx32W( HINSTANCE32 hInstance, LPCWSTR name, + WNDCLASSEX32W *wc ) { ATOM atom; CLASS *classPtr; @@ -1048,7 +1055,7 @@ /*********************************************************************** * ClassFirst (TOOLHELP.69) */ -BOOL16 ClassFirst( CLASSENTRY *pClassEntry ) +BOOL16 WINAPI ClassFirst( CLASSENTRY *pClassEntry ) { pClassEntry->wNext = 1; return ClassNext( pClassEntry ); @@ -1058,7 +1065,7 @@ /*********************************************************************** * ClassNext (TOOLHELP.70) */ -BOOL16 ClassNext( CLASSENTRY *pClassEntry ) +BOOL16 WINAPI ClassNext( CLASSENTRY *pClassEntry ) { int i; CLASS *class = firstClass;
diff --git a/windows/clipboard.c b/windows/clipboard.c index ce261c0..d51dbd4 100644 --- a/windows/clipboard.c +++ b/windows/clipboard.c
@@ -178,7 +178,7 @@ selectionWait=True; while(selectionWait) - EVENT_WaitXEvent( TRUE, FALSE ); + EVENT_WaitNetEvent( TRUE, FALSE ); /* we treat Unix text as CF_OEMTEXT */ dprintf_clipboard(stddeb,"\tgot CF_OEMTEXT = %i\n", @@ -212,7 +212,7 @@ /************************************************************************** * OpenClipboard16 (USER.137) */ -BOOL16 OpenClipboard16( HWND16 hWnd ) +BOOL16 WINAPI OpenClipboard16( HWND16 hWnd ) { return OpenClipboard32( hWnd ); } @@ -221,7 +221,7 @@ /************************************************************************** * OpenClipboard32 (USER32.406) */ -BOOL32 OpenClipboard32( HWND32 hWnd ) +BOOL32 WINAPI OpenClipboard32( HWND32 hWnd ) { BOOL32 bRet = FALSE; dprintf_clipboard(stddeb,"OpenClipboard(%04x) = ", hWnd); @@ -241,7 +241,7 @@ /************************************************************************** * CloseClipboard16 (USER.138) */ -BOOL16 CloseClipboard16(void) +BOOL16 WINAPI CloseClipboard16(void) { return CloseClipboard32(); } @@ -250,7 +250,7 @@ /************************************************************************** * CloseClipboard32 (USER32.53) */ -BOOL32 CloseClipboard32(void) +BOOL32 WINAPI CloseClipboard32(void) { dprintf_clipboard(stddeb,"CloseClipboard(); !\n"); @@ -266,7 +266,7 @@ /************************************************************************** * EmptyClipboard16 (USER.139) */ -BOOL16 EmptyClipboard16(void) +BOOL16 WINAPI EmptyClipboard16(void) { return EmptyClipboard32(); } @@ -275,7 +275,7 @@ /************************************************************************** * EmptyClipboard32 (USER32.168) */ -BOOL32 EmptyClipboard32(void) +BOOL32 WINAPI EmptyClipboard32(void) { LPCLIPFORMAT lpFormat = ClipFormats; @@ -316,7 +316,7 @@ /************************************************************************** * GetClipboardOwner16 (USER.140) */ -HWND16 GetClipboardOwner16(void) +HWND16 WINAPI GetClipboardOwner16(void) { return hWndClipOwner; } @@ -325,7 +325,7 @@ /************************************************************************** * GetClipboardOwner32 (USER32.224) */ -HWND32 GetClipboardOwner32(void) +HWND32 WINAPI GetClipboardOwner32(void) { return hWndClipOwner; } @@ -334,7 +334,7 @@ /************************************************************************** * SetClipboardData16 (USER.141) */ -HANDLE16 SetClipboardData16( UINT16 wFormat, HANDLE16 hData ) +HANDLE16 WINAPI SetClipboardData16( UINT16 wFormat, HANDLE16 hData ) { LPCLIPFORMAT lpFormat = ClipFormats; Window owner; @@ -391,7 +391,7 @@ /************************************************************************** * SetClipboardData32 (USER32.469) */ -HANDLE32 SetClipboardData32( UINT32 wFormat, HANDLE32 hData ) +HANDLE32 WINAPI SetClipboardData32( UINT32 wFormat, HANDLE32 hData ) { fprintf( stderr, "SetClipboardData: empty stub\n" ); return 0; @@ -450,7 +450,7 @@ /************************************************************************** * GetClipboardData16 (USER.142) */ -HANDLE16 GetClipboardData16( UINT16 wFormat ) +HANDLE16 WINAPI GetClipboardData16( UINT16 wFormat ) { LPCLIPFORMAT lpRender = ClipFormats; LPCLIPFORMAT lpUpdate = NULL; @@ -499,7 +499,7 @@ /************************************************************************** * GetClipboardData32 (USER32.221) */ -HANDLE32 GetClipboardData32( UINT32 wFormat ) +HANDLE32 WINAPI GetClipboardData32( UINT32 wFormat ) { fprintf( stderr, "GetClipboardData32: empty stub\n" ); return 0; @@ -508,7 +508,7 @@ /************************************************************************** * CountClipboardFormats16 (USER.143) */ -INT16 CountClipboardFormats16(void) +INT16 WINAPI CountClipboardFormats16(void) { return CountClipboardFormats32(); } @@ -517,7 +517,7 @@ /************************************************************************** * CountClipboardFormats32 (USER32.62) */ -INT32 CountClipboardFormats32(void) +INT32 WINAPI CountClipboardFormats32(void) { INT32 FormatCount = 0; LPCLIPFORMAT lpFormat = ClipFormats; @@ -548,7 +548,7 @@ /************************************************************************** * EnumClipboardFormats16 (USER.144) */ -UINT16 EnumClipboardFormats16( UINT16 wFormat ) +UINT16 WINAPI EnumClipboardFormats16( UINT16 wFormat ) { return EnumClipboardFormats32( wFormat ); } @@ -557,7 +557,7 @@ /************************************************************************** * EnumClipboardFormats32 (USER32.178) */ -UINT32 EnumClipboardFormats32( UINT32 wFormat ) +UINT32 WINAPI EnumClipboardFormats32( UINT32 wFormat ) { LPCLIPFORMAT lpFormat = ClipFormats; @@ -600,7 +600,7 @@ /************************************************************************** * RegisterClipboardFormat16 (USER.145) */ -UINT16 RegisterClipboardFormat16( LPCSTR FormatName ) +UINT16 WINAPI RegisterClipboardFormat16( LPCSTR FormatName ) { LPCLIPFORMAT lpNewFormat; LPCLIPFORMAT lpFormat = ClipFormats; @@ -646,7 +646,7 @@ /************************************************************************** * RegisterClipboardFormat32A (USER32.430) */ -UINT32 RegisterClipboardFormat32A( LPCSTR formatName ) +UINT32 WINAPI RegisterClipboardFormat32A( LPCSTR formatName ) { return RegisterClipboardFormat16( formatName ); } @@ -655,7 +655,7 @@ /************************************************************************** * RegisterClipboardFormat32W (USER32.431) */ -UINT32 RegisterClipboardFormat32W( LPCWSTR formatName ) +UINT32 WINAPI RegisterClipboardFormat32W( LPCWSTR formatName ) { LPSTR aFormat = HEAP_strdupWtoA( GetProcessHeap(), 0, formatName ); UINT32 ret = RegisterClipboardFormat32A( aFormat ); @@ -666,7 +666,7 @@ /************************************************************************** * GetClipboardFormatName16 (USER.146) */ -INT16 GetClipboardFormatName16( UINT16 wFormat, LPSTR retStr, INT16 maxlen ) +INT16 WINAPI GetClipboardFormatName16( UINT16 wFormat, LPSTR retStr, INT16 maxlen ) { return GetClipboardFormatName32A( wFormat, retStr, maxlen ); } @@ -675,7 +675,7 @@ /************************************************************************** * GetClipboardFormatName32A (USER32.222) */ -INT32 GetClipboardFormatName32A( UINT32 wFormat, LPSTR retStr, INT32 maxlen ) +INT32 WINAPI GetClipboardFormatName32A( UINT32 wFormat, LPSTR retStr, INT32 maxlen ) { LPCLIPFORMAT lpFormat = ClipFormats; @@ -702,7 +702,7 @@ /************************************************************************** * GetClipboardFormatName32W (USER32.223) */ -INT32 GetClipboardFormatName32W( UINT32 wFormat, LPWSTR retStr, INT32 maxlen ) +INT32 WINAPI GetClipboardFormatName32W( UINT32 wFormat, LPWSTR retStr, INT32 maxlen ) { LPSTR p = HEAP_xalloc( GetProcessHeap(), 0, maxlen ); INT32 ret = GetClipboardFormatName32A( wFormat, p, maxlen ); @@ -715,7 +715,7 @@ /************************************************************************** * SetClipboardViewer16 (USER.147) */ -HWND16 SetClipboardViewer16( HWND16 hWnd ) +HWND16 WINAPI SetClipboardViewer16( HWND16 hWnd ) { return SetClipboardViewer32( hWnd ); } @@ -724,11 +724,11 @@ /************************************************************************** * SetClipboardViewer32 (USER32.470) */ -HWND32 SetClipboardViewer32( HWND32 hWnd ) +HWND32 WINAPI SetClipboardViewer32( HWND32 hWnd ) { HWND32 hwndPrev = hWndViewer; - dprintf_clipboard(stddeb,"SetClipboardViewer(%04x)\n", hWnd); + dprintf_clipboard(stddeb,"SetClipboardViewer(%04x): returning %04x\n", hWnd, hwndPrev); hWndViewer = hWnd; return hwndPrev; @@ -738,7 +738,7 @@ /************************************************************************** * GetClipboardViewer16 (USER.148) */ -HWND16 GetClipboardViewer16(void) +HWND16 WINAPI GetClipboardViewer16(void) { return hWndViewer; } @@ -747,7 +747,7 @@ /************************************************************************** * GetClipboardViewer32 (USER32.225) */ -HWND32 GetClipboardViewer32(void) +HWND32 WINAPI GetClipboardViewer32(void) { return hWndViewer; } @@ -756,7 +756,7 @@ /************************************************************************** * ChangeClipboardChain16 (USER.149) */ -BOOL16 ChangeClipboardChain16(HWND16 hWnd, HWND16 hWndNext) +BOOL16 WINAPI ChangeClipboardChain16(HWND16 hWnd, HWND16 hWndNext) { return ChangeClipboardChain32(hWnd,hWndNext); } @@ -764,7 +764,7 @@ /************************************************************************** * ChangeClipboardChain32 (USER32.21) */ -BOOL32 ChangeClipboardChain32(HWND32 hWnd, HWND32 hWndNext) +BOOL32 WINAPI ChangeClipboardChain32(HWND32 hWnd, HWND32 hWndNext) { BOOL32 bRet = 0; @@ -786,7 +786,7 @@ /************************************************************************** * IsClipboardFormatAvailable16 (USER.193) */ -BOOL16 IsClipboardFormatAvailable16( UINT16 wFormat ) +BOOL16 WINAPI IsClipboardFormatAvailable16( UINT16 wFormat ) { return IsClipboardFormatAvailable32( wFormat ); } @@ -795,7 +795,7 @@ /************************************************************************** * IsClipboardFormatAvailable32 (USER32.339) */ -BOOL32 IsClipboardFormatAvailable32( UINT32 wFormat ) +BOOL32 WINAPI IsClipboardFormatAvailable32( UINT32 wFormat ) { dprintf_clipboard(stddeb,"IsClipboardFormatAvailable(%04X) !\n", wFormat); @@ -809,7 +809,7 @@ /************************************************************************** * GetOpenClipboardWindow16 (USER.248) */ -HWND16 GetOpenClipboardWindow16(void) +HWND16 WINAPI GetOpenClipboardWindow16(void) { return hWndClipWindow; } @@ -818,7 +818,7 @@ /************************************************************************** * GetOpenClipboardWindow32 (USER32.276) */ -HWND32 GetOpenClipboardWindow32(void) +HWND32 WINAPI GetOpenClipboardWindow32(void) { return hWndClipWindow; } @@ -827,7 +827,7 @@ /************************************************************************** * GetPriorityClipboardFormat16 (USER.402) */ -INT16 GetPriorityClipboardFormat16( UINT16 *lpPriorityList, INT16 nCount) +INT16 WINAPI GetPriorityClipboardFormat16( UINT16 *lpPriorityList, INT16 nCount) { fprintf( stderr, "GetPriorityClipboardFormat16(%p, %d): stub\n", lpPriorityList, nCount ); @@ -838,7 +838,7 @@ /************************************************************************** * GetPriorityClipboardFormat32 (USER32 */ -INT32 GetPriorityClipboardFormat32( UINT32 *lpPriorityList, INT32 nCount ) +INT32 WINAPI GetPriorityClipboardFormat32( UINT32 *lpPriorityList, INT32 nCount ) { fprintf( stderr, "GetPriorityClipboardFormat32(%p, %d): stub\n", lpPriorityList, nCount );
diff --git a/windows/dce.c b/windows/dce.c index 5e925f6..d54654c 100644 --- a/windows/dce.c +++ b/windows/dce.c
@@ -95,7 +95,7 @@ /********************************************************************** * WindowFromDC16 (USER32.580) */ -HWND16 WindowFromDC16( HDC16 hDC ) +HWND16 WINAPI WindowFromDC16( HDC16 hDC ) { return (HWND16)WindowFromDC32( hDC ); } @@ -104,7 +104,7 @@ /********************************************************************** * WindowFromDC32 (USER32.580) */ -HWND32 WindowFromDC32( HDC32 hDC ) +HWND32 WINAPI WindowFromDC32( HDC32 hDC ) { DCE *dce = firstDCE; while (dce && (dce->hDC != hDC)) dce = dce->next; @@ -417,7 +417,7 @@ /*********************************************************************** * GetDCEx16 (USER.359) */ -HDC16 GetDCEx16( HWND16 hwnd, HRGN16 hrgnClip, DWORD flags ) +HDC16 WINAPI GetDCEx16( HWND16 hwnd, HRGN16 hrgnClip, DWORD flags ) { return (HDC16)GetDCEx32( hwnd, hrgnClip, flags ); } @@ -428,7 +428,7 @@ * * Unimplemented flags: DCX_LOCKWINDOWUPDATE */ -HDC32 GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags ) +HDC32 WINAPI GetDCEx32( HWND32 hwnd, HRGN32 hrgnClip, DWORD flags ) { HRGN32 hrgnVisible; HDC32 hdc = 0; @@ -583,7 +583,7 @@ /*********************************************************************** * GetDC16 (USER.66) */ -HDC16 GetDC16( HWND16 hwnd ) +HDC16 WINAPI GetDC16( HWND16 hwnd ) { return (HDC16)GetDC32( hwnd ); } @@ -592,7 +592,7 @@ /*********************************************************************** * GetDC32 (USER32.229) */ -HDC32 GetDC32( HWND32 hwnd ) +HDC32 WINAPI GetDC32( HWND32 hwnd ) { if (!hwnd) return GetDCEx32( GetDesktopWindow32(), 0, DCX_CACHE | DCX_WINDOW ); @@ -603,7 +603,7 @@ /*********************************************************************** * GetWindowDC16 (USER.67) */ -HDC16 GetWindowDC16( HWND16 hwnd ) +HDC16 WINAPI GetWindowDC16( HWND16 hwnd ) { if (!hwnd) hwnd = GetDesktopWindow16(); return GetDCEx16( hwnd, 0, DCX_USESTYLE | DCX_WINDOW ); @@ -613,7 +613,7 @@ /*********************************************************************** * GetWindowDC32 (USER32.) */ -HDC32 GetWindowDC32( HWND32 hwnd ) +HDC32 WINAPI GetWindowDC32( HWND32 hwnd ) { if (!hwnd) hwnd = GetDesktopWindow32(); return GetDCEx32( hwnd, 0, DCX_USESTYLE | DCX_WINDOW ); @@ -623,7 +623,7 @@ /*********************************************************************** * ReleaseDC16 (USER.68) */ -INT16 ReleaseDC16( HWND16 hwnd, HDC16 hdc ) +INT16 WINAPI ReleaseDC16( HWND16 hwnd, HDC16 hdc ) { return (INT32)ReleaseDC32( hwnd, hdc ); } @@ -632,7 +632,7 @@ /*********************************************************************** * ReleaseDC32 (USER32.439) */ -INT32 ReleaseDC32( HWND32 hwnd, HDC32 hdc ) +INT32 WINAPI ReleaseDC32( HWND32 hwnd, HDC32 hdc ) { DCE * dce = firstDCE; @@ -674,7 +674,7 @@ * * See "Undoc. Windows" for hints (DC, SetDCHook, SetHookFlags).. */ -BOOL16 DCHook( HDC16 hDC, WORD code, DWORD data, LPARAM lParam ) +BOOL16 WINAPI DCHook( HDC16 hDC, WORD code, DWORD data, LPARAM lParam ) { HRGN32 hVisRgn; DCE *dce = firstDCE;; @@ -729,7 +729,7 @@ /*********************************************************************** * LockWindowUpdate16 (USER.294) */ -BOOL16 LockWindowUpdate16( HWND16 hwnd ) +BOOL16 WINAPI LockWindowUpdate16( HWND16 hwnd ) { return LockWindowUpdate32( hwnd ); } @@ -738,7 +738,7 @@ /*********************************************************************** * LockWindowUpdate32 (USER32.377) */ -BOOL32 LockWindowUpdate32( HWND32 hwnd ) +BOOL32 WINAPI LockWindowUpdate32( HWND32 hwnd ) { /* FIXME? DCX_LOCKWINDOWUPDATE is unimplemented */ return TRUE;
diff --git a/windows/defdlg.c b/windows/defdlg.c index 3c5c082..1285d73 100644 --- a/windows/defdlg.c +++ b/windows/defdlg.c
@@ -248,7 +248,8 @@ /*********************************************************************** * DefDlgProc16 (USER.308) */ -LRESULT DefDlgProc16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam, LPARAM lParam ) +LRESULT WINAPI DefDlgProc16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam, + LPARAM lParam ) { DIALOGINFO * dlgInfo; BOOL16 result = FALSE; @@ -302,7 +303,8 @@ /*********************************************************************** * DefDlgProc32A (USER32.119) */ -LRESULT DefDlgProc32A( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam) +LRESULT WINAPI DefDlgProc32A( HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ) { DIALOGINFO * dlgInfo; BOOL16 result = FALSE; @@ -356,7 +358,8 @@ /*********************************************************************** * DefDlgProc32W (USER32.120) */ -LRESULT DefDlgProc32W( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam) +LRESULT WINAPI DefDlgProc32W( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, + LPARAM lParam ) { DIALOGINFO * dlgInfo; BOOL16 result = FALSE;
diff --git a/windows/defwnd.c b/windows/defwnd.c index 7b59447..a5b5af4 100644 --- a/windows/defwnd.c +++ b/windows/defwnd.c
@@ -359,8 +359,8 @@ /*********************************************************************** * DefWindowProc16 (USER.107) */ -LRESULT DefWindowProc16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam, - LPARAM lParam ) +LRESULT WINAPI DefWindowProc16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam, + LPARAM lParam ) { WND * wndPtr = WIN_FindWndPtr( hwnd ); LRESULT result = 0; @@ -426,8 +426,8 @@ /*********************************************************************** * DefWindowProc32A (USER32.125) */ -LRESULT DefWindowProc32A( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, - LPARAM lParam ) +LRESULT WINAPI DefWindowProc32A( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, + LPARAM lParam ) { WND * wndPtr = WIN_FindWndPtr( hwnd ); LRESULT result = 0; @@ -487,8 +487,8 @@ /*********************************************************************** * DefWindowProc32W (USER32.126) */ -LRESULT DefWindowProc32W( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, - LPARAM lParam ) +LRESULT WINAPI DefWindowProc32W( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, + LPARAM lParam ) { LRESULT result;
diff --git a/windows/dialog.c b/windows/dialog.c index 8b2f580..21ef5b0 100644 --- a/windows/dialog.c +++ b/windows/dialog.c
@@ -618,8 +618,8 @@ /*********************************************************************** * CreateDialog16 (USER.89) */ -HWND16 CreateDialog16( HINSTANCE16 hInst, SEGPTR dlgTemplate, - HWND16 owner, DLGPROC16 dlgProc ) +HWND16 WINAPI CreateDialog16( HINSTANCE16 hInst, SEGPTR dlgTemplate, + HWND16 owner, DLGPROC16 dlgProc ) { return CreateDialogParam16( hInst, dlgTemplate, owner, dlgProc, 0 ); } @@ -628,8 +628,9 @@ /*********************************************************************** * CreateDialogParam16 (USER.241) */ -HWND16 CreateDialogParam16( HINSTANCE16 hInst, SEGPTR dlgTemplate, - HWND16 owner, DLGPROC16 dlgProc, LPARAM param ) +HWND16 WINAPI CreateDialogParam16( HINSTANCE16 hInst, SEGPTR dlgTemplate, + HWND16 owner, DLGPROC16 dlgProc, + LPARAM param ) { HWND16 hwnd = 0; HRSRC16 hRsrc; @@ -652,8 +653,9 @@ /*********************************************************************** * CreateDialogParam32A (USER32.72) */ -HWND32 CreateDialogParam32A( HINSTANCE32 hInst, LPCSTR name, - HWND32 owner, DLGPROC32 dlgProc, LPARAM param ) +HWND32 WINAPI CreateDialogParam32A( HINSTANCE32 hInst, LPCSTR name, + HWND32 owner, DLGPROC32 dlgProc, + LPARAM param ) { if (HIWORD(name)) { @@ -669,8 +671,9 @@ /*********************************************************************** * CreateDialogParam32W (USER32.73) */ -HWND32 CreateDialogParam32W( HINSTANCE32 hInst, LPCWSTR name, - HWND32 owner, DLGPROC32 dlgProc, LPARAM param ) +HWND32 WINAPI CreateDialogParam32W( HINSTANCE32 hInst, LPCWSTR name, + HWND32 owner, DLGPROC32 dlgProc, + LPARAM param ) { HANDLE32 hrsrc = FindResource32W( hInst, name, (LPWSTR)RT_DIALOG ); if (!hrsrc) return 0; @@ -683,8 +686,8 @@ /*********************************************************************** * CreateDialogIndirect16 (USER.219) */ -HWND16 CreateDialogIndirect16( HINSTANCE16 hInst, LPCVOID dlgTemplate, - HWND16 owner, DLGPROC16 dlgProc ) +HWND16 WINAPI CreateDialogIndirect16( HINSTANCE16 hInst, LPCVOID dlgTemplate, + HWND16 owner, DLGPROC16 dlgProc ) { return CreateDialogIndirectParam16( hInst, dlgTemplate, owner, dlgProc, 0); } @@ -693,9 +696,10 @@ /*********************************************************************** * CreateDialogIndirectParam16 (USER.242) */ -HWND16 CreateDialogIndirectParam16( HINSTANCE16 hInst, LPCVOID dlgTemplate, - HWND16 owner, DLGPROC16 dlgProc, - LPARAM param ) +HWND16 WINAPI CreateDialogIndirectParam16( HINSTANCE16 hInst, + LPCVOID dlgTemplate, + HWND16 owner, DLGPROC16 dlgProc, + LPARAM param ) { return DIALOG_CreateIndirect( hInst, dlgTemplate, FALSE, owner, dlgProc, param, WIN_PROC_16 ); @@ -705,9 +709,10 @@ /*********************************************************************** * CreateDialogIndirectParam32A (USER32.69) */ -HWND32 CreateDialogIndirectParam32A( HINSTANCE32 hInst, LPCVOID dlgTemplate, - HWND32 owner, DLGPROC32 dlgProc, - LPARAM param ) +HWND32 WINAPI CreateDialogIndirectParam32A( HINSTANCE32 hInst, + LPCVOID dlgTemplate, + HWND32 owner, DLGPROC32 dlgProc, + LPARAM param ) { return DIALOG_CreateIndirect( hInst, dlgTemplate, TRUE, owner, (DLGPROC16)dlgProc, param, WIN_PROC_32A ); @@ -717,9 +722,10 @@ /*********************************************************************** * CreateDialogIndirectParam32W (USER32.71) */ -HWND32 CreateDialogIndirectParam32W( HINSTANCE32 hInst, LPCVOID dlgTemplate, - HWND32 owner, DLGPROC32 dlgProc, - LPARAM param ) +HWND32 WINAPI CreateDialogIndirectParam32W( HINSTANCE32 hInst, + LPCVOID dlgTemplate, + HWND32 owner, DLGPROC32 dlgProc, + LPARAM param ) { return DIALOG_CreateIndirect( hInst, dlgTemplate, TRUE, owner, (DLGPROC16)dlgProc, param, WIN_PROC_32W ); @@ -763,8 +769,8 @@ /*********************************************************************** * DialogBox16 (USER.87) */ -INT16 DialogBox16( HINSTANCE16 hInst, SEGPTR dlgTemplate, - HWND16 owner, DLGPROC16 dlgProc ) +INT16 WINAPI DialogBox16( HINSTANCE16 hInst, SEGPTR dlgTemplate, + HWND16 owner, DLGPROC16 dlgProc ) { return DialogBoxParam16( hInst, dlgTemplate, owner, dlgProc, 0 ); } @@ -773,8 +779,8 @@ /*********************************************************************** * DialogBoxParam16 (USER.239) */ -INT16 DialogBoxParam16( HINSTANCE16 hInst, SEGPTR template, - HWND16 owner, DLGPROC16 dlgProc, LPARAM param ) +INT16 WINAPI DialogBoxParam16( HINSTANCE16 hInst, SEGPTR template, + HWND16 owner, DLGPROC16 dlgProc, LPARAM param ) { HWND16 hwnd = CreateDialogParam16( hInst, template, owner, dlgProc, param); if (hwnd) return (INT16)DIALOG_DoDialogBox( hwnd, owner ); @@ -785,8 +791,8 @@ /*********************************************************************** * DialogBoxParam32A (USER32.138) */ -INT32 DialogBoxParam32A( HINSTANCE32 hInst, LPCSTR name, - HWND32 owner, DLGPROC32 dlgProc, LPARAM param ) +INT32 WINAPI DialogBoxParam32A( HINSTANCE32 hInst, LPCSTR name, + HWND32 owner, DLGPROC32 dlgProc, LPARAM param ) { HWND32 hwnd = CreateDialogParam32A( hInst, name, owner, dlgProc, param ); if (hwnd) return DIALOG_DoDialogBox( hwnd, owner ); @@ -797,8 +803,8 @@ /*********************************************************************** * DialogBoxParam32W (USER32.139) */ -INT32 DialogBoxParam32W( HINSTANCE32 hInst, LPCWSTR name, - HWND32 owner, DLGPROC32 dlgProc, LPARAM param ) +INT32 WINAPI DialogBoxParam32W( HINSTANCE32 hInst, LPCWSTR name, + HWND32 owner, DLGPROC32 dlgProc, LPARAM param ) { HWND32 hwnd = CreateDialogParam32W( hInst, name, owner, dlgProc, param ); if (hwnd) return DIALOG_DoDialogBox( hwnd, owner ); @@ -809,8 +815,8 @@ /*********************************************************************** * DialogBoxIndirect16 (USER.218) */ -INT16 DialogBoxIndirect16( HINSTANCE16 hInst, HANDLE16 dlgTemplate, - HWND16 owner, DLGPROC16 dlgProc ) +INT16 WINAPI DialogBoxIndirect16( HINSTANCE16 hInst, HANDLE16 dlgTemplate, + HWND16 owner, DLGPROC16 dlgProc ) { return DialogBoxIndirectParam16( hInst, dlgTemplate, owner, dlgProc, 0 ); } @@ -819,8 +825,9 @@ /*********************************************************************** * DialogBoxIndirectParam16 (USER.240) */ -INT16 DialogBoxIndirectParam16( HINSTANCE16 hInst, HANDLE16 dlgTemplate, - HWND16 owner, DLGPROC16 dlgProc, LPARAM param ) +INT16 WINAPI DialogBoxIndirectParam16( HINSTANCE16 hInst, HANDLE16 dlgTemplate, + HWND16 owner, DLGPROC16 dlgProc, + LPARAM param ) { HWND16 hwnd; LPCVOID ptr; @@ -836,8 +843,9 @@ /*********************************************************************** * DialogBoxIndirectParam32A (USER32.135) */ -INT32 DialogBoxIndirectParam32A( HINSTANCE32 hInstance, LPCVOID template, - HWND32 owner, DLGPROC32 dlgProc, LPARAM param) +INT32 WINAPI DialogBoxIndirectParam32A(HINSTANCE32 hInstance, LPCVOID template, + HWND32 owner, DLGPROC32 dlgProc, + LPARAM param ) { HWND32 hwnd = CreateDialogIndirectParam32A( hInstance, template, owner, dlgProc, param ); @@ -849,8 +857,9 @@ /*********************************************************************** * DialogBoxIndirectParam32W (USER32.137) */ -INT32 DialogBoxIndirectParam32W( HINSTANCE32 hInstance, LPCVOID template, - HWND32 owner, DLGPROC32 dlgProc, LPARAM param) +INT32 WINAPI DialogBoxIndirectParam32W(HINSTANCE32 hInstance, LPCVOID template, + HWND32 owner, DLGPROC32 dlgProc, + LPARAM param ) { HWND32 hwnd = CreateDialogIndirectParam32W( hInstance, template, owner, dlgProc, param ); @@ -862,7 +871,7 @@ /*********************************************************************** * EndDialog16 (USER32.173) */ -BOOL16 EndDialog16( HWND16 hwnd, INT16 retval ) +BOOL16 WINAPI EndDialog16( HWND16 hwnd, INT16 retval ) { return EndDialog32( hwnd, retval ); } @@ -871,7 +880,7 @@ /*********************************************************************** * EndDialog32 (USER32.173) */ -BOOL32 EndDialog32( HWND32 hwnd, INT32 retval ) +BOOL32 WINAPI EndDialog32( HWND32 hwnd, INT32 retval ) { WND * wndPtr = WIN_FindWndPtr( hwnd ); DIALOGINFO * dlgInfo = (DIALOGINFO *)wndPtr->wExtra; @@ -998,7 +1007,7 @@ /*********************************************************************** * IsDialogMessage16 (USER.90) */ -BOOL16 IsDialogMessage16( HWND16 hwndDlg, LPMSG16 msg ) +BOOL16 WINAPI IsDialogMessage16( HWND16 hwndDlg, LPMSG16 msg ) { BOOL32 ret, translate, dispatch; @@ -1017,7 +1026,7 @@ /*********************************************************************** * IsDialogMessage32A (USER32.341) */ -BOOL32 IsDialogMessage32A( HWND32 hwndDlg, LPMSG32 msg ) +BOOL32 WINAPI IsDialogMessage32A( HWND32 hwndDlg, LPMSG32 msg ) { BOOL32 ret, translate, dispatch; @@ -1036,7 +1045,7 @@ /*********************************************************************** * IsDialogMessage32W (USER32.342) */ -BOOL32 IsDialogMessage32W( HWND32 hwndDlg, LPMSG32 msg ) +BOOL32 WINAPI IsDialogMessage32W( HWND32 hwndDlg, LPMSG32 msg ) { BOOL32 ret, translate, dispatch; @@ -1055,7 +1064,7 @@ /**************************************************************** * GetDlgCtrlID16 (USER.277) */ -INT16 GetDlgCtrlID16( HWND16 hwnd ) +INT16 WINAPI GetDlgCtrlID16( HWND16 hwnd ) { WND *wndPtr = WIN_FindWndPtr(hwnd); if (wndPtr) return wndPtr->wIDmenu; @@ -1066,7 +1075,7 @@ /**************************************************************** * GetDlgCtrlID32 (USER32.233) */ -INT32 GetDlgCtrlID32( HWND32 hwnd ) +INT32 WINAPI GetDlgCtrlID32( HWND32 hwnd ) { WND *wndPtr = WIN_FindWndPtr(hwnd); if (wndPtr) return wndPtr->wIDmenu; @@ -1077,7 +1086,7 @@ /*********************************************************************** * GetDlgItem16 (USER.91) */ -HWND16 GetDlgItem16( HWND16 hwndDlg, INT16 id ) +HWND16 WINAPI GetDlgItem16( HWND16 hwndDlg, INT16 id ) { WND *pWnd; @@ -1091,7 +1100,7 @@ /*********************************************************************** * GetDlgItem32 (USER32.234) */ -HWND32 GetDlgItem32( HWND32 hwndDlg, INT32 id ) +HWND32 WINAPI GetDlgItem32( HWND32 hwndDlg, INT32 id ) { WND *pWnd; @@ -1105,8 +1114,8 @@ /******************************************************************* * SendDlgItemMessage16 (USER.101) */ -LRESULT SendDlgItemMessage16( HWND16 hwnd, INT16 id, UINT16 msg, - WPARAM16 wParam, LPARAM lParam ) +LRESULT WINAPI SendDlgItemMessage16( HWND16 hwnd, INT16 id, UINT16 msg, + WPARAM16 wParam, LPARAM lParam ) { HWND16 hwndCtrl = GetDlgItem16( hwnd, id ); if (hwndCtrl) return SendMessage16( hwndCtrl, msg, wParam, lParam ); @@ -1117,8 +1126,8 @@ /******************************************************************* * SendDlgItemMessage32A (USER32.451) */ -LRESULT SendDlgItemMessage32A( HWND32 hwnd, INT32 id, UINT32 msg, - WPARAM32 wParam, LPARAM lParam ) +LRESULT WINAPI SendDlgItemMessage32A( HWND32 hwnd, INT32 id, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ) { HWND32 hwndCtrl = GetDlgItem32( hwnd, id ); if (hwndCtrl) return SendMessage32A( hwndCtrl, msg, wParam, lParam ); @@ -1129,8 +1138,8 @@ /******************************************************************* * SendDlgItemMessage32W (USER32.452) */ -LRESULT SendDlgItemMessage32W( HWND32 hwnd, INT32 id, UINT32 msg, - WPARAM32 wParam, LPARAM lParam ) +LRESULT WINAPI SendDlgItemMessage32W( HWND32 hwnd, INT32 id, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ) { HWND32 hwndCtrl = GetDlgItem32( hwnd, id ); if (hwndCtrl) return SendMessage32W( hwndCtrl, msg, wParam, lParam ); @@ -1141,7 +1150,7 @@ /******************************************************************* * SetDlgItemText16 (USER.92) */ -void SetDlgItemText16( HWND16 hwnd, INT16 id, SEGPTR lpString ) +void WINAPI SetDlgItemText16( HWND16 hwnd, INT16 id, SEGPTR lpString ) { SendDlgItemMessage16( hwnd, id, WM_SETTEXT, 0, (LPARAM)lpString ); } @@ -1150,7 +1159,7 @@ /******************************************************************* * SetDlgItemText32A (USER32.477) */ -void SetDlgItemText32A( HWND32 hwnd, INT32 id, LPCSTR lpString ) +void WINAPI SetDlgItemText32A( HWND32 hwnd, INT32 id, LPCSTR lpString ) { SendDlgItemMessage32A( hwnd, id, WM_SETTEXT, 0, (LPARAM)lpString ); } @@ -1159,7 +1168,7 @@ /******************************************************************* * SetDlgItemText32W (USER32.478) */ -void SetDlgItemText32W( HWND32 hwnd, INT32 id, LPCWSTR lpString ) +void WINAPI SetDlgItemText32W( HWND32 hwnd, INT32 id, LPCWSTR lpString ) { SendDlgItemMessage32W( hwnd, id, WM_SETTEXT, 0, (LPARAM)lpString ); } @@ -1168,7 +1177,7 @@ /*********************************************************************** * GetDlgItemText16 (USER.93) */ -INT16 GetDlgItemText16( HWND16 hwnd, INT16 id, SEGPTR str, UINT16 len ) +INT16 WINAPI GetDlgItemText16( HWND16 hwnd, INT16 id, SEGPTR str, UINT16 len ) { return (INT16)SendDlgItemMessage16( hwnd, id, WM_GETTEXT, len, (LPARAM)str ); @@ -1178,7 +1187,7 @@ /*********************************************************************** * GetDlgItemText32A (USER32.236) */ -INT32 GetDlgItemText32A( HWND32 hwnd, INT32 id, LPSTR str, UINT32 len ) +INT32 WINAPI GetDlgItemText32A( HWND32 hwnd, INT32 id, LPSTR str, UINT32 len ) { return (INT32)SendDlgItemMessage32A( hwnd, id, WM_GETTEXT, len, (LPARAM)str ); @@ -1188,7 +1197,7 @@ /*********************************************************************** * GetDlgItemText32W (USER32.237) */ -INT32 GetDlgItemText32W( HWND32 hwnd, INT32 id, LPWSTR str, UINT32 len ) +INT32 WINAPI GetDlgItemText32W( HWND32 hwnd, INT32 id, LPWSTR str, UINT32 len ) { return (INT32)SendDlgItemMessage32W( hwnd, id, WM_GETTEXT, len, (LPARAM)str ); @@ -1198,7 +1207,7 @@ /******************************************************************* * SetDlgItemInt16 (USER.94) */ -void SetDlgItemInt16( HWND16 hwnd, INT16 id, UINT16 value, BOOL16 fSigned ) +void WINAPI SetDlgItemInt16( HWND16 hwnd, INT16 id, UINT16 value, BOOL16 fSigned ) { return SetDlgItemInt32( hwnd, (UINT32)(UINT16)id, value, fSigned ); } @@ -1207,7 +1216,8 @@ /******************************************************************* * SetDlgItemInt32 (USER32.476) */ -void SetDlgItemInt32( HWND32 hwnd, INT32 id, UINT32 value, BOOL32 fSigned ) +void WINAPI SetDlgItemInt32( HWND32 hwnd, INT32 id, UINT32 value, + BOOL32 fSigned ) { char str[20]; @@ -1220,8 +1230,8 @@ /*********************************************************************** * GetDlgItemInt16 (USER.95) */ -UINT16 GetDlgItemInt16( HWND16 hwnd, INT16 id, BOOL16 *translated, - BOOL16 fSigned ) +UINT16 WINAPI GetDlgItemInt16( HWND16 hwnd, INT16 id, BOOL16 *translated, + BOOL16 fSigned ) { UINT32 result; BOOL32 ok; @@ -1245,8 +1255,8 @@ /*********************************************************************** * GetDlgItemInt32 (USER32.235) */ -UINT32 GetDlgItemInt32( HWND32 hwnd, INT32 id, BOOL32 *translated, - BOOL32 fSigned ) +UINT32 WINAPI GetDlgItemInt32( HWND32 hwnd, INT32 id, BOOL32 *translated, + BOOL32 fSigned ) { char str[30]; char * endptr; @@ -1278,7 +1288,7 @@ /*********************************************************************** * CheckDlgButton16 (USER.97) */ -BOOL16 CheckDlgButton16( HWND16 hwnd, INT16 id, UINT16 check ) +BOOL16 WINAPI CheckDlgButton16( HWND16 hwnd, INT16 id, UINT16 check ) { SendDlgItemMessage32A( hwnd, id, BM_SETCHECK32, check, 0 ); return TRUE; @@ -1288,7 +1298,7 @@ /*********************************************************************** * CheckDlgButton32 (USER32.44) */ -BOOL32 CheckDlgButton32( HWND32 hwnd, INT32 id, UINT32 check ) +BOOL32 WINAPI CheckDlgButton32( HWND32 hwnd, INT32 id, UINT32 check ) { SendDlgItemMessage32A( hwnd, id, BM_SETCHECK32, check, 0 ); return TRUE; @@ -1298,7 +1308,7 @@ /*********************************************************************** * IsDlgButtonChecked16 (USER.98) */ -UINT16 IsDlgButtonChecked16( HWND16 hwnd, UINT16 id ) +UINT16 WINAPI IsDlgButtonChecked16( HWND16 hwnd, UINT16 id ) { return (UINT16)SendDlgItemMessage32A( hwnd, id, BM_GETCHECK32, 0, 0 ); } @@ -1307,7 +1317,7 @@ /*********************************************************************** * IsDlgButtonChecked32 (USER32.343) */ -UINT32 IsDlgButtonChecked32( HWND32 hwnd, UINT32 id ) +UINT32 WINAPI IsDlgButtonChecked32( HWND32 hwnd, UINT32 id ) { return (UINT32)SendDlgItemMessage32A( hwnd, id, BM_GETCHECK32, 0, 0 ); } @@ -1316,8 +1326,8 @@ /*********************************************************************** * CheckRadioButton16 (USER.96) */ -BOOL16 CheckRadioButton16( HWND16 hwndDlg, UINT16 firstID, UINT16 lastID, - UINT16 checkID ) +BOOL16 WINAPI CheckRadioButton16( HWND16 hwndDlg, UINT16 firstID, + UINT16 lastID, UINT16 checkID ) { return CheckRadioButton32( hwndDlg, firstID, lastID, checkID ); } @@ -1326,8 +1336,8 @@ /*********************************************************************** * CheckRadioButton32 (USER32.47) */ -BOOL32 CheckRadioButton32( HWND32 hwndDlg, UINT32 firstID, UINT32 lastID, - UINT32 checkID ) +BOOL32 WINAPI CheckRadioButton32( HWND32 hwndDlg, UINT32 firstID, + UINT32 lastID, UINT32 checkID ) { WND *pWnd = WIN_FindWndPtr( hwndDlg ); if (!pWnd) return FALSE; @@ -1352,7 +1362,7 @@ /*********************************************************************** * GetDialogBaseUnits (USER.243) (USER32.232) */ -DWORD GetDialogBaseUnits(void) +DWORD WINAPI GetDialogBaseUnits(void) { return MAKELONG( xBaseUnit, yBaseUnit ); } @@ -1361,7 +1371,7 @@ /*********************************************************************** * MapDialogRect16 (USER.103) */ -void MapDialogRect16( HWND16 hwnd, LPRECT16 rect ) +void WINAPI MapDialogRect16( HWND16 hwnd, LPRECT16 rect ) { DIALOGINFO * dlgInfo; WND * wndPtr = WIN_FindWndPtr( hwnd ); @@ -1377,7 +1387,7 @@ /*********************************************************************** * MapDialogRect32 (USER32.381) */ -void MapDialogRect32( HWND32 hwnd, LPRECT32 rect ) +void WINAPI MapDialogRect32( HWND32 hwnd, LPRECT32 rect ) { DIALOGINFO * dlgInfo; WND * wndPtr = WIN_FindWndPtr( hwnd ); @@ -1393,7 +1403,8 @@ /*********************************************************************** * GetNextDlgGroupItem16 (USER.227) */ -HWND16 GetNextDlgGroupItem16(HWND16 hwndDlg, HWND16 hwndCtrl, BOOL16 fPrevious) +HWND16 WINAPI GetNextDlgGroupItem16( HWND16 hwndDlg, HWND16 hwndCtrl, + BOOL16 fPrevious ) { return (HWND16)GetNextDlgGroupItem32( hwndDlg, hwndCtrl, fPrevious ); } @@ -1402,7 +1413,8 @@ /*********************************************************************** * GetNextDlgGroupItem32 (USER32.274) */ -HWND32 GetNextDlgGroupItem32(HWND32 hwndDlg, HWND32 hwndCtrl, BOOL32 fPrevious) +HWND32 WINAPI GetNextDlgGroupItem32( HWND32 hwndDlg, HWND32 hwndCtrl, + BOOL32 fPrevious ) { WND *pWnd, *pWndLast, *pWndCtrl, *pWndDlg; @@ -1452,7 +1464,8 @@ /*********************************************************************** * GetNextDlgTabItem16 (USER.228) */ -HWND16 GetNextDlgTabItem16( HWND16 hwndDlg, HWND16 hwndCtrl, BOOL16 fPrevious ) +HWND16 WINAPI GetNextDlgTabItem16( HWND16 hwndDlg, HWND16 hwndCtrl, + BOOL16 fPrevious ) { return (HWND16)GetNextDlgTabItem32( hwndDlg, hwndCtrl, fPrevious ); } @@ -1461,7 +1474,8 @@ /*********************************************************************** * GetNextDlgTabItem32 (USER32.275) */ -HWND32 GetNextDlgTabItem32( HWND32 hwndDlg, HWND32 hwndCtrl, BOOL32 fPrevious ) +HWND32 WINAPI GetNextDlgTabItem32( HWND32 hwndDlg, HWND32 hwndCtrl, + BOOL32 fPrevious ) { WND *pWnd, *pWndLast, *pWndCtrl, *pWndDlg; @@ -1691,7 +1705,7 @@ /********************************************************************** * DlgDirSelect (USER.99) */ -BOOL16 DlgDirSelect( HWND16 hwnd, LPSTR str, INT16 id ) +BOOL16 WINAPI DlgDirSelect( HWND16 hwnd, LPSTR str, INT16 id ) { return DlgDirSelectEx16( hwnd, str, 128, id ); } @@ -1700,7 +1714,7 @@ /********************************************************************** * DlgDirSelectComboBox (USER.194) */ -BOOL16 DlgDirSelectComboBox( HWND16 hwnd, LPSTR str, INT16 id ) +BOOL16 WINAPI DlgDirSelectComboBox( HWND16 hwnd, LPSTR str, INT16 id ) { return DlgDirSelectComboBoxEx16( hwnd, str, 128, id ); } @@ -1709,7 +1723,7 @@ /********************************************************************** * DlgDirSelectEx16 (USER.422) */ -BOOL16 DlgDirSelectEx16( HWND16 hwnd, LPSTR str, INT16 len, INT16 id ) +BOOL16 WINAPI DlgDirSelectEx16( HWND16 hwnd, LPSTR str, INT16 len, INT16 id ) { return DIALOG_DlgDirSelect( hwnd, str, len, id, FALSE, FALSE, FALSE ); } @@ -1718,7 +1732,7 @@ /********************************************************************** * DlgDirSelectEx32A (USER32.148) */ -BOOL32 DlgDirSelectEx32A( HWND32 hwnd, LPSTR str, INT32 len, INT32 id ) +BOOL32 WINAPI DlgDirSelectEx32A( HWND32 hwnd, LPSTR str, INT32 len, INT32 id ) { return DIALOG_DlgDirSelect( hwnd, str, len, id, TRUE, FALSE, FALSE ); } @@ -1727,7 +1741,7 @@ /********************************************************************** * DlgDirSelectEx32W (USER32.149) */ -BOOL32 DlgDirSelectEx32W( HWND32 hwnd, LPWSTR str, INT32 len, INT32 id ) +BOOL32 WINAPI DlgDirSelectEx32W( HWND32 hwnd, LPWSTR str, INT32 len, INT32 id ) { return DIALOG_DlgDirSelect( hwnd, (LPSTR)str, len, id, TRUE, TRUE, FALSE ); } @@ -1736,7 +1750,8 @@ /********************************************************************** * DlgDirSelectComboBoxEx16 (USER.423) */ -BOOL16 DlgDirSelectComboBoxEx16( HWND16 hwnd, LPSTR str, INT16 len, INT16 id ) +BOOL16 WINAPI DlgDirSelectComboBoxEx16( HWND16 hwnd, LPSTR str, INT16 len, + INT16 id ) { return DIALOG_DlgDirSelect( hwnd, str, len, id, FALSE, FALSE, TRUE ); } @@ -1745,7 +1760,8 @@ /********************************************************************** * DlgDirSelectComboBoxEx32A (USER32.146) */ -BOOL32 DlgDirSelectComboBoxEx32A( HWND32 hwnd, LPSTR str, INT32 len, INT32 id ) +BOOL32 WINAPI DlgDirSelectComboBoxEx32A( HWND32 hwnd, LPSTR str, INT32 len, + INT32 id ) { return DIALOG_DlgDirSelect( hwnd, str, len, id, TRUE, FALSE, TRUE ); } @@ -1754,7 +1770,8 @@ /********************************************************************** * DlgDirSelectComboBoxEx32W (USER32.147) */ -BOOL32 DlgDirSelectComboBoxEx32W( HWND32 hwnd, LPWSTR str, INT32 len, INT32 id) +BOOL32 WINAPI DlgDirSelectComboBoxEx32W( HWND32 hwnd, LPWSTR str, INT32 len, + INT32 id) { return DIALOG_DlgDirSelect( hwnd, (LPSTR)str, len, id, TRUE, TRUE, TRUE ); } @@ -1763,8 +1780,8 @@ /********************************************************************** * DlgDirList16 (USER.100) */ -INT16 DlgDirList16( HWND16 hDlg, LPSTR spec, INT16 idLBox, INT16 idStatic, - UINT16 attrib ) +INT16 WINAPI DlgDirList16( HWND16 hDlg, LPSTR spec, INT16 idLBox, + INT16 idStatic, UINT16 attrib ) { return DIALOG_DlgDirList( hDlg, spec, idLBox, idStatic, attrib, FALSE ); } @@ -1773,8 +1790,8 @@ /********************************************************************** * DlgDirList32A (USER32.142) */ -INT32 DlgDirList32A( HWND32 hDlg, LPSTR spec, INT32 idLBox, INT32 idStatic, - UINT32 attrib ) +INT32 WINAPI DlgDirList32A( HWND32 hDlg, LPSTR spec, INT32 idLBox, + INT32 idStatic, UINT32 attrib ) { return DIALOG_DlgDirList( hDlg, spec, idLBox, idStatic, attrib, FALSE ); } @@ -1783,8 +1800,8 @@ /********************************************************************** * DlgDirList32W (USER32.145) */ -INT32 DlgDirList32W( HWND32 hDlg, LPWSTR spec, INT32 idLBox, INT32 idStatic, - UINT32 attrib ) +INT32 WINAPI DlgDirList32W( HWND32 hDlg, LPWSTR spec, INT32 idLBox, + INT32 idStatic, UINT32 attrib ) { return DIALOG_DlgDirListW( hDlg, spec, idLBox, idStatic, attrib, FALSE ); } @@ -1793,8 +1810,8 @@ /********************************************************************** * DlgDirListComboBox16 (USER.195) */ -INT16 DlgDirListComboBox16( HWND16 hDlg, LPSTR spec, INT16 idCBox, - INT16 idStatic, UINT16 attrib ) +INT16 WINAPI DlgDirListComboBox16( HWND16 hDlg, LPSTR spec, INT16 idCBox, + INT16 idStatic, UINT16 attrib ) { return DIALOG_DlgDirList( hDlg, spec, idCBox, idStatic, attrib, TRUE ); } @@ -1803,8 +1820,8 @@ /********************************************************************** * DlgDirListComboBox32A (USER32.143) */ -INT32 DlgDirListComboBox32A( HWND32 hDlg, LPSTR spec, INT32 idCBox, - INT32 idStatic, UINT32 attrib ) +INT32 WINAPI DlgDirListComboBox32A( HWND32 hDlg, LPSTR spec, INT32 idCBox, + INT32 idStatic, UINT32 attrib ) { return DIALOG_DlgDirList( hDlg, spec, idCBox, idStatic, attrib, TRUE ); } @@ -1813,8 +1830,8 @@ /********************************************************************** * DlgDirListComboBox32W (USER32.144) */ -INT32 DlgDirListComboBox32W( HWND32 hDlg, LPWSTR spec, INT32 idCBox, - INT32 idStatic, UINT32 attrib ) +INT32 WINAPI DlgDirListComboBox32W( HWND32 hDlg, LPWSTR spec, INT32 idCBox, + INT32 idStatic, UINT32 attrib ) { return DIALOG_DlgDirListW( hDlg, spec, idCBox, idStatic, attrib, TRUE ); }
diff --git a/windows/driver.c b/windows/driver.c index 942ecc8..2b8df27 100644 --- a/windows/driver.c +++ b/windows/driver.c
@@ -45,8 +45,8 @@ /************************************************************************** * SendDriverMessage [USER.251] */ -LRESULT SendDriverMessage(HDRVR16 hDriver, UINT16 msg, LPARAM lParam1, - LPARAM lParam2) +LRESULT WINAPI SendDriverMessage(HDRVR16 hDriver, UINT16 msg, LPARAM lParam1, + LPARAM lParam2) { LPDRIVERITEM lpdrv; LRESULT retval; @@ -73,7 +73,7 @@ /************************************************************************** * OpenDriver [USER.252] */ -HDRVR16 OpenDriver(LPSTR lpDriverName, LPSTR lpSectionName, LPARAM lParam) +HDRVR16 WINAPI OpenDriver(LPSTR lpDriverName, LPSTR lpSectionName, LPARAM lParam) { HDRVR16 hDrvr; LPDRIVERITEM lpdrv, lpnewdrv; @@ -154,7 +154,7 @@ /************************************************************************** * CloseDriver [USER.253] */ -LRESULT CloseDriver(HDRVR16 hDrvr, LPARAM lParam1, LPARAM lParam2) +LRESULT WINAPI CloseDriver(HDRVR16 hDrvr, LPARAM lParam1, LPARAM lParam2) { LPDRIVERITEM lpdrv; @@ -192,7 +192,7 @@ /************************************************************************** * GetDriverModuleHandle [USER.254] */ -HMODULE16 GetDriverModuleHandle(HDRVR16 hDrvr) +HMODULE16 WINAPI GetDriverModuleHandle(HDRVR16 hDrvr) { LPDRIVERITEM lpdrv; HMODULE16 hModule = 0; @@ -211,8 +211,8 @@ /************************************************************************** * DefDriverProc [USER.255] */ -LRESULT DefDriverProc(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg, - LPARAM lParam1, LPARAM lParam2) +LRESULT WINAPI DefDriverProc(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg, + LPARAM lParam1, LPARAM lParam2) { switch(wMsg) { @@ -249,7 +249,7 @@ /************************************************************************** * GetDriverInfo [USER.256] */ -BOOL16 GetDriverInfo(HDRVR16 hDrvr, LPDRIVERINFOSTRUCT16 lpDrvInfo) +BOOL16 WINAPI GetDriverInfo(HDRVR16 hDrvr, LPDRIVERINFOSTRUCT16 lpDrvInfo) { LPDRIVERITEM lpdrv; @@ -268,7 +268,7 @@ /************************************************************************** * GetNextDriver [USER.257] */ -HDRVR16 GetNextDriver(HDRVR16 hDrvr, DWORD dwFlags) +HDRVR16 WINAPI GetNextDriver(HDRVR16 hDrvr, DWORD dwFlags) { LPDRIVERITEM lpdrv; HDRVR16 hRetDrv = 0;
diff --git a/windows/event.c b/windows/event.c index dc5c238..541bd46 100644 --- a/windows/event.c +++ b/windows/event.c
@@ -68,6 +68,12 @@ static Atom dndProtocol = None; static Atom dndSelection = None; +/* EVENT_WaitNetEvent() master fd sets */ + +static fd_set __event_io_set[3]; +static int __event_max_fd = 0; +static int __event_x_connection = 0; + static const char * const event_names[] = { "", "", "KeyPress", "KeyRelease", "ButtonPress", "ButtonRelease", @@ -102,6 +108,38 @@ extern void FOCUS_SetXFocus( HWND32 ); extern BOOL16 DRAG_QueryUpdate( HWND16, SEGPTR, BOOL32 ); +extern BOOL32 WINSOCK_HandleIO( int* max_fd, int num_pending, fd_set io_set[3] ); + +/*********************************************************************** + * EVENT_Init + * + * Initialize network IO. + */ +BOOL32 EVENT_Init(void) +{ + int i; + for( i = 0; i < 3; i++ ) + FD_ZERO( __event_io_set + i ); + + __event_max_fd = __event_x_connection = ConnectionNumber(display); + FD_SET( __event_x_connection, &__event_io_set[EVENT_IO_READ] ); + __event_max_fd++; + return TRUE; +} + +/*********************************************************************** + * EVENT_AddIO + */ +void EVENT_AddIO( int fd, int io_type ) +{ + FD_SET( fd, &__event_io_set[io_type] ); + if( __event_max_fd <= fd ) __event_max_fd = fd + 1; +} + +void EVENT_DeleteIO( int fd, int io_type ) +{ + FD_CLR( fd, &__event_io_set[io_type] ); +} /*********************************************************************** * EVENT_ProcessEvent @@ -253,13 +291,13 @@ } /*********************************************************************** - * EVENT_WaitXEvent + * EVENT_WaitNetEvent * - * Wait for an X event, optionally sleeping until one arrives. + * Wait for a network event, optionally sleeping until one arrives. * Return TRUE if an event is pending, FALSE on timeout or error * (for instance lost connection with the server). */ -BOOL32 EVENT_WaitXEvent( BOOL32 sleep, BOOL32 peek ) +BOOL32 EVENT_WaitNetEvent( BOOL32 sleep, BOOL32 peek ) { XEvent event; LONG maxWait = sleep ? TIMER_GetNextExpiration() : 0; @@ -270,12 +308,11 @@ if ((maxWait != -1) && !XPending(display)) { - fd_set read_set; + int num_pending; struct timeval timeout; - int fd = ConnectionNumber(display); - - FD_ZERO( &read_set ); - FD_SET( fd, &read_set ); + fd_set read_set = __event_io_set[EVENT_IO_READ]; + fd_set write_set = __event_io_set[EVENT_IO_WRITE]; + fd_set except_set = __event_io_set[EVENT_IO_EXCEPT]; timeout.tv_usec = (maxWait % 1000) * 1000; timeout.tv_sec = maxWait / 1000; @@ -291,8 +328,8 @@ } stop_wait_op = STOP_WAIT_X; /* The code up to the next "stop_wait_op = CONT" must be reentrant */ - if (select( fd+1, &read_set, NULL, NULL, &timeout ) != 1 && - !XPending(display)) + num_pending = select( __event_max_fd, &read_set, NULL, NULL, &timeout ); + if ( num_pending == 0 ) { stop_wait_op = CONT; TIMER_ExpireTimers(); @@ -300,7 +337,9 @@ } else stop_wait_op = CONT; #else /* CONFIG_IPC */ - if (select( fd+1, &read_set, NULL, NULL, &timeout ) != 1) + num_pending = select( __event_max_fd, + &read_set, &write_set, &except_set, &timeout ); + if ( num_pending == 0) { /* Timeout or error */ TIMER_ExpireTimers(); @@ -308,9 +347,19 @@ } #endif /* CONFIG_IPC */ + /* Winsock asynchronous services */ + + if( FD_ISSET( __event_x_connection, &read_set) ) + { + num_pending--; + if( num_pending ) + WINSOCK_HandleIO( &__event_max_fd, num_pending, __event_io_set ); + } + else /* no X events */ + return WINSOCK_HandleIO( &__event_max_fd, num_pending, __event_io_set ); } - /* Process the event (and possibly others that occurred in the meantime) */ + /* Process current X event (and possibly others that occurred in the meantime) */ do { @@ -1050,7 +1099,7 @@ /********************************************************************** * SetCapture16 (USER.18) */ -HWND16 SetCapture16( HWND16 hwnd ) +HWND16 WINAPI SetCapture16( HWND16 hwnd ) { return (HWND16)EVENT_Capture( hwnd, HTCLIENT ); } @@ -1059,7 +1108,7 @@ /********************************************************************** * SetCapture32 (USER32.463) */ -HWND32 SetCapture32( HWND32 hwnd ) +HWND32 WINAPI SetCapture32( HWND32 hwnd ) { return EVENT_Capture( hwnd, HTCLIENT ); } @@ -1068,7 +1117,7 @@ /********************************************************************** * ReleaseCapture (USER.19) (USER32.438) */ -void ReleaseCapture(void) +void WINAPI ReleaseCapture(void) { dprintf_win(stddeb, "ReleaseCapture() [%04x]\n", captureWnd ); if( captureWnd ) EVENT_Capture( 0, 0 ); @@ -1078,7 +1127,7 @@ /********************************************************************** * GetCapture16 (USER.236) */ -HWND16 GetCapture16(void) +HWND16 WINAPI GetCapture16(void) { return captureWnd; } @@ -1087,7 +1136,7 @@ /********************************************************************** * GetCapture32 (USER32.207) */ -HWND32 GetCapture32(void) +HWND32 WINAPI GetCapture32(void) { return captureWnd; } @@ -1096,7 +1145,7 @@ /*********************************************************************** * GetMouseEventProc (USER.337) */ -FARPROC16 GetMouseEventProc(void) +FARPROC16 WINAPI GetMouseEventProc(void) { HMODULE16 hmodule = GetModuleHandle16("USER"); return MODULE_GetEntryPoint( hmodule, @@ -1107,7 +1156,7 @@ /*********************************************************************** * Mouse_Event (USER.299) */ -void Mouse_Event( CONTEXT *context ) +void WINAPI Mouse_Event( CONTEXT *context ) { /* Register values: * AX = mouse event @@ -1147,7 +1196,7 @@ /********************************************************************** * EnableHardwareInput (USER.331) */ -BOOL16 EnableHardwareInput(BOOL16 bEnable) +BOOL16 WINAPI EnableHardwareInput(BOOL16 bEnable) { BOOL16 bOldState = InputEnabled; dprintf_event(stdnimp,"EnableHardwareInput(%d);\n", bEnable); @@ -1159,7 +1208,7 @@ /*********************************************************************** * SwapMouseButton16 (USER.186) */ -BOOL16 SwapMouseButton16( BOOL16 fSwap ) +BOOL16 WINAPI SwapMouseButton16( BOOL16 fSwap ) { BOOL16 ret = SwappedButtons; SwappedButtons = fSwap; @@ -1170,7 +1219,7 @@ /*********************************************************************** * SwapMouseButton32 (USER32.536) */ -BOOL32 SwapMouseButton32( BOOL32 fSwap ) +BOOL32 WINAPI SwapMouseButton32( BOOL32 fSwap ) { BOOL32 ret = SwappedButtons; SwappedButtons = fSwap;
diff --git a/windows/focus.c b/windows/focus.c index 3c28c8e..28aa847 100644 --- a/windows/focus.c +++ b/windows/focus.c
@@ -81,7 +81,7 @@ /***************************************************************** * SetFocus16 (USER.22) */ -HWND16 SetFocus16( HWND16 hwnd ) +HWND16 WINAPI SetFocus16( HWND16 hwnd ) { return (HWND16)SetFocus32( hwnd ); } @@ -90,7 +90,7 @@ /***************************************************************** * SetFocus32 (USER32.480) */ -HWND32 SetFocus32( HWND32 hwnd ) +HWND32 WINAPI SetFocus32( HWND32 hwnd ) { HWND32 hWndPrevFocus, hwndTop = hwnd; WND *wndPtr = WIN_FindWndPtr( hwnd ); @@ -137,7 +137,7 @@ /***************************************************************** * GetFocus16 (USER.23) */ -HWND16 GetFocus16(void) +HWND16 WINAPI GetFocus16(void) { return (HWND16)hwndFocus; } @@ -146,7 +146,7 @@ /***************************************************************** * GetFocus32 (USER32.239) */ -HWND32 GetFocus32(void) +HWND32 WINAPI GetFocus32(void) { return hwndFocus; }
diff --git a/windows/graphics.c b/windows/graphics.c index a11404b..f924a8f 100644 --- a/windows/graphics.c +++ b/windows/graphics.c
@@ -108,8 +108,13 @@ XCopyArea( display, bmp->pixmap, dc->u.x.drawable, dc->u.x.gc, xsrc, ysrc, width, height, xdest, ydest ); } - else return FALSE; + else + { + GDI_HEAP_UNLOCK( hbitmap ); + return FALSE; + } + GDI_HEAP_UNLOCK( hbitmap ); return TRUE; } @@ -234,6 +239,7 @@ XSetClipMask( display, dc->u.x.gc, (bmp) ? bmp->pixmap : None ); + GDI_HEAP_UNLOCK( hMonoBitmap ); return TRUE; }
diff --git a/windows/hook.c b/windows/hook.c index 2b1333d..7166bad 100644 --- a/windows/hook.c +++ b/windows/hook.c
@@ -1162,7 +1162,7 @@ /*********************************************************************** * SetWindowsHook16 (USER.121) */ -FARPROC16 SetWindowsHook16( INT16 id, HOOKPROC16 proc ) +FARPROC16 WINAPI SetWindowsHook16( INT16 id, HOOKPROC16 proc ) { HANDLE16 handle; HINSTANCE16 hInst = __winelib ? 0 : FarGetOwner( HIWORD(proc) ); @@ -1186,7 +1186,7 @@ * * FIXME: I don't know if this is correct */ -HHOOK SetWindowsHook32A( INT32 id, HOOKPROC32 proc ) +HHOOK WINAPI SetWindowsHook32A( INT32 id, HOOKPROC32 proc ) { HINSTANCE16 hInst = __winelib ? 0 : FarGetOwner( HIWORD(proc) ); @@ -1203,7 +1203,7 @@ * * FIXME: I don't know if this is correct */ -HHOOK SetWindowsHook32W( INT32 id, HOOKPROC32 proc ) +HHOOK WINAPI SetWindowsHook32W( INT32 id, HOOKPROC32 proc ) { HINSTANCE16 hInst = __winelib ? 0 : FarGetOwner( HIWORD(proc) ); @@ -1218,8 +1218,8 @@ /*********************************************************************** * SetWindowsHookEx16 (USER.291) */ -HHOOK SetWindowsHookEx16( INT16 id, HOOKPROC16 proc, HINSTANCE16 hInst, - HTASK16 hTask ) +HHOOK WINAPI SetWindowsHookEx16( INT16 id, HOOKPROC16 proc, HINSTANCE16 hInst, + HTASK16 hTask ) { HANDLE16 handle = HOOK_SetHook( id, proc, HOOK_WIN16, hInst, hTask ); return (handle) ? (HHOOK)MAKELONG( handle, HOOK_MAGIC ) : (HHOOK)NULL; @@ -1229,8 +1229,8 @@ /*********************************************************************** * SetWindowsHookEx32A (USER32.525) */ -HHOOK SetWindowsHookEx32A( INT32 id, HOOKPROC32 proc, HINSTANCE32 hInst, - DWORD dwThreadID ) +HHOOK WINAPI SetWindowsHookEx32A( INT32 id, HOOKPROC32 proc, HINSTANCE32 hInst, + DWORD dwThreadID ) { HANDLE16 handle; HTASK16 hTask; @@ -1248,8 +1248,8 @@ /*********************************************************************** * SetWindowsHookEx32W (USER32.526) */ -HHOOK SetWindowsHookEx32W( INT32 id, HOOKPROC32 proc, HINSTANCE32 hInst, - DWORD dwThreadID ) +HHOOK WINAPI SetWindowsHookEx32W( INT32 id, HOOKPROC32 proc, HINSTANCE32 hInst, + DWORD dwThreadID ) { HANDLE16 handle; HTASK16 hTask; @@ -1267,7 +1267,7 @@ /*********************************************************************** * UnhookWindowsHook16 (USER.234) */ -BOOL16 UnhookWindowsHook16( INT16 id, HOOKPROC16 proc ) +BOOL16 WINAPI UnhookWindowsHook16( INT16 id, HOOKPROC16 proc ) { HANDLE16 hook = HOOK_GetHook( id , GetTaskQueue(0) ); @@ -1287,7 +1287,7 @@ /*********************************************************************** * UnhookWindowsHook32 (USER32.556) */ -BOOL32 UnhookWindowsHook32( INT32 id, HOOKPROC32 proc ) +BOOL32 WINAPI UnhookWindowsHook32( INT32 id, HOOKPROC32 proc ) { HANDLE16 hook = HOOK_GetHook( id , GetTaskQueue(0) ); @@ -1307,7 +1307,7 @@ /*********************************************************************** * UnhookWindowHookEx16 (USER.292) */ -BOOL16 UnhookWindowsHookEx16( HHOOK hhook ) +BOOL16 WINAPI UnhookWindowsHookEx16( HHOOK hhook ) { if (HIWORD(hhook) != HOOK_MAGIC) return FALSE; /* Not a new format hook */ return HOOK_RemoveHook( LOWORD(hhook) ); @@ -1317,7 +1317,7 @@ /*********************************************************************** * UnhookWindowHookEx32 (USER32.557) */ -BOOL32 UnhookWindowsHookEx32( HHOOK hhook ) +BOOL32 WINAPI UnhookWindowsHookEx32( HHOOK hhook ) { return UnhookWindowsHookEx16( hhook ); } @@ -1329,8 +1329,8 @@ * I wouldn't have separated this into 16 and 32 bit versions, but I * need a way to figure out if I need to do a mapping or not. */ -LRESULT CallNextHookEx16( HHOOK hhook, INT16 code, WPARAM16 wParam, - LPARAM lParam ) +LRESULT WINAPI CallNextHookEx16( HHOOK hhook, INT16 code, WPARAM16 wParam, + LPARAM lParam ) { HANDLE16 next; @@ -1346,8 +1346,8 @@ * * There aren't ANSI and UNICODE versions of this. */ -LRESULT CallNextHookEx32( HHOOK hhook, INT32 code, WPARAM32 wParam, - LPARAM lParam ) +LRESULT WINAPI CallNextHookEx32( HHOOK hhook, INT32 code, WPARAM32 wParam, + LPARAM lParam ) { HANDLE16 next; INT32 fromtype; /* figure out Ansi/Unicode */ @@ -1369,8 +1369,8 @@ /*********************************************************************** * DefHookProc16 (USER.235) */ -LRESULT DefHookProc16( INT16 code, WPARAM16 wParam, LPARAM lParam, - HHOOK *hhook ) +LRESULT WINAPI DefHookProc16( INT16 code, WPARAM16 wParam, LPARAM lParam, + HHOOK *hhook ) { /* Note: the *hhook parameter is never used, since we rely on the * current hook value from the task queue to find the next hook. */ @@ -1384,7 +1384,7 @@ /*********************************************************************** * CallMsgFilter16 (USER.123) */ -BOOL16 CallMsgFilter16( SEGPTR msg, INT16 code ) +BOOL16 WINAPI CallMsgFilter16( SEGPTR msg, INT16 code ) { if (GetSysModalWindow16()) return FALSE; if (HOOK_CallHooks16( WH_SYSMSGFILTER, code, 0, (LPARAM)msg )) return TRUE; @@ -1399,7 +1399,7 @@ * FIXME: There are ANSI and UNICODE versions of this, plus an unspecified * version, plus USER (the 16bit one) has a CallMsgFilter32 function. */ -BOOL32 CallMsgFilter32A( LPMSG32 msg, INT32 code ) +BOOL32 WINAPI CallMsgFilter32A( LPMSG32 msg, INT32 code ) { if (GetSysModalWindow16()) return FALSE; /* ??? */ if (HOOK_CallHooks32A( WH_SYSMSGFILTER, code, 0, (LPARAM)msg )) @@ -1411,10 +1411,11 @@ /*********************************************************************** * CallMsgFilter32W (USER32.15) */ -BOOL32 CallMsgFilter32W( LPMSG32 msg, INT32 code ) +BOOL32 WINAPI CallMsgFilter32W( LPMSG32 msg, INT32 code ) { if (GetSysModalWindow16()) return FALSE; /* ??? */ if (HOOK_CallHooks32W( WH_SYSMSGFILTER, code, 0, (LPARAM)msg )) return TRUE; return HOOK_CallHooks32W( WH_MSGFILTER, code, 0, (LPARAM)msg ); } +
diff --git a/windows/keyboard.c b/windows/keyboard.c index c1965ca..be31d59 100644 --- a/windows/keyboard.c +++ b/windows/keyboard.c
@@ -108,7 +108,7 @@ /* * Table for vkey to scancode translation - 5/29/97 chrisf@america.com */ -static BYTE vkey2scode[512] = { +static const BYTE vkey2scode[512] = { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x0e,0x0f,0x00,0x00,0x00,0x1c,0x00,0x00, 0x2a,0x1d,0x38,0x00,0x3a,0x00,0x00,0x00, 0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00, 0x39,0x49,0x51,0x4f,0x47,0x4b,0x48,0x4d, 0x50,0x00,0x00,0x00,0x00,0x52,0x53,0x00, @@ -482,7 +482,7 @@ /********************************************************************** * GetKeyState [USER.106] */ -WORD GetKeyState16(INT16 vkey) +WORD WINAPI GetKeyState16(INT16 vkey) { return GetKeyState32(vkey); } @@ -493,7 +493,7 @@ * keyboard-input message. This function retrieves the state of the key * at the time the input message was generated. (SDK 3.1 Vol 2. p 390) */ -WORD GetKeyState32(INT32 vkey) +WORD WINAPI GetKeyState32(INT32 vkey) { INT32 retval; @@ -524,7 +524,7 @@ * keyboard-input message. This function retrieves the state of the keyboard * at the time the input message was generated. (SDK 3.1 Vol 2. p 387) */ -VOID GetKeyboardState(LPBYTE lpKeyState) +VOID WINAPI GetKeyboardState(LPBYTE lpKeyState) { dprintf_key(stddeb, "GetKeyboardState()\n"); if (lpKeyState != NULL) { @@ -538,7 +538,7 @@ /********************************************************************** * SetKeyboardState [USER.223][USER32.483] */ -VOID SetKeyboardState(LPBYTE lpKeyState) +VOID WINAPI SetKeyboardState(LPBYTE lpKeyState) { dprintf_key(stddeb, "SetKeyboardState()\n"); if (lpKeyState != NULL) { @@ -562,7 +562,7 @@ * mouse or key had been depressed since the last call to * GetAsyncKeyState. */ -WORD GetAsyncKeyState32(INT32 nKey) +WORD WINAPI GetAsyncKeyState32(INT32 nKey) { short retval; @@ -595,7 +595,7 @@ /********************************************************************** * GetAsyncKeyState (USER.249) */ -WORD GetAsyncKeyState16(INT16 nKey) +WORD WINAPI GetAsyncKeyState16(INT16 nKey) { return GetAsyncKeyState32(nKey); } @@ -607,7 +607,7 @@ * * FIXME: should send some WM_INITMENU or/and WM_INITMENUPOPUP -messages */ -INT32 TranslateAccelerator32(HWND32 hWnd, HACCEL32 hAccel, LPMSG32 msg) +INT32 WINAPI TranslateAccelerator32(HWND32 hWnd, HACCEL32 hAccel, LPMSG32 msg) { MSG16 msg16; @@ -615,7 +615,7 @@ return TranslateAccelerator16(hWnd,hAccel,&msg16); } -INT16 TranslateAccelerator16(HWND16 hWnd, HACCEL16 hAccel, LPMSG16 msg) +INT16 WINAPI TranslateAccelerator16(HWND16 hWnd, HACCEL16 hAccel, LPMSG16 msg) { ACCELHEADER *lpAccelTbl; int i; @@ -755,7 +755,7 @@ /****************************************************************************** * OemKeyScan [KEYBOARD.128][USER32.400] */ -DWORD OemKeyScan(WORD wOemChar) +DWORD WINAPI OemKeyScan(WORD wOemChar) { dprintf_keyboard(stddeb,"*OemKeyScan (%d)\n",wOemChar); @@ -780,7 +780,7 @@ * VkKeyScan '`'(0x60, 96) ... got keycode 00 ... returning 00 */ -WORD VkKeyScan32A(CHAR cChar) +WORD WINAPI VkKeyScan32A(CHAR cChar) { KeyCode keycode; KeySym keysym; @@ -827,7 +827,7 @@ /****************************************************************************** * VkKeyScan [KEYBOARD.129] */ -WORD VkKeyScan16(CHAR cChar) +WORD WINAPI VkKeyScan16(CHAR cChar) { return VkKeyScan32A(cChar); } @@ -835,7 +835,7 @@ /****************************************************************************** * VkKeyScanW [USER32.575] */ -WORD VkKeyScan32W(WCHAR cChar) +WORD WINAPI VkKeyScan32W(WCHAR cChar) { return VkKeyScan32A((CHAR)cChar); /* FIXME: check unicode */ } @@ -843,7 +843,7 @@ /****************************************************************************** * GetKeyboardType [KEYBOARD.130] */ -INT16 GetKeyboardType16(INT16 nTypeFlag) +INT16 WINAPI GetKeyboardType16(INT16 nTypeFlag) { return GetKeyboardType32(nTypeFlag); } @@ -851,7 +851,7 @@ /****************************************************************************** * GetKeyboardType [USER32.254] */ -INT32 GetKeyboardType32(INT32 nTypeFlag) +INT32 WINAPI GetKeyboardType32(INT32 nTypeFlag) { dprintf_keyboard(stddeb,"GetKeyboardType(%d)\n",nTypeFlag); switch(nTypeFlag) @@ -875,22 +875,24 @@ /****************************************************************************** * MapVirtualKeyA [USER32.382] */ -UINT32 MapVirtualKey32A(UINT32 code, UINT32 maptype) { - return MapVirtualKey16(code,maptype); +UINT32 WINAPI MapVirtualKey32A(UINT32 code, UINT32 maptype) +{ + return MapVirtualKey16(code,maptype); } /****************************************************************************** * MapVirtualKeyA [USER32.384] */ -UINT32 MapVirtualKey32W(UINT32 code, UINT32 maptype) { - return MapVirtualKey16(code,maptype); +UINT32 WINAPI MapVirtualKey32W(UINT32 code, UINT32 maptype) +{ + return MapVirtualKey16(code,maptype); } /****************************************************************************** * MapVirtualKeyA [KEYBOARD.131] * MapVirtualKey translates keycodes from one format to another */ -UINT16 MapVirtualKey16(UINT16 wCode, UINT16 wMapType) +UINT16 WINAPI MapVirtualKey16(UINT16 wCode, UINT16 wMapType) { #define returnMVK(value) { dprintf_keyboard(stddeb,"returning 0x%x.\n",value); return value; } @@ -936,7 +938,7 @@ /**************************************************************************** * GetKBCodePage16 (KEYBOARD.132) */ -INT16 GetKBCodePage16(void) +INT16 WINAPI GetKBCodePage16(void) { dprintf_keyboard(stddeb,"GetKBCodePage()\n"); return 850; @@ -946,7 +948,7 @@ /**************************************************************************** * GetKBCodePage32 (USER32.245) */ -UINT32 GetKBCodePage32(void) +UINT32 WINAPI GetKBCodePage32(void) { dprintf_keyboard(stddeb,"GetKbCodePage()\n"); return 850; @@ -956,7 +958,7 @@ /**************************************************************************** * GetKeyNameText32W (USER32.247) */ -INT32 GetKeyNameText32W(LONG lParam, LPWSTR lpBuffer, INT32 nSize) +INT32 WINAPI GetKeyNameText32W(LONG lParam, LPWSTR lpBuffer, INT32 nSize) { LPSTR buf = xmalloc(nSize); int res = GetKeyNameText32A(lParam,buf,nSize); @@ -969,7 +971,7 @@ /**************************************************************************** * GetKeyNameText32A (USER32.246) */ -INT32 GetKeyNameText32A(LONG lParam, LPSTR lpBuffer, INT32 nSize) +INT32 WINAPI GetKeyNameText32A(LONG lParam, LPSTR lpBuffer, INT32 nSize) { return GetKeyNameText16(lParam,lpBuffer,nSize); } @@ -977,7 +979,7 @@ /**************************************************************************** * GetKeyNameText16 (KEYBOARD.133) */ -INT16 GetKeyNameText16(LONG lParam, LPSTR lpBuffer, INT16 nSize) +INT16 WINAPI GetKeyNameText16(LONG lParam, LPSTR lpBuffer, INT16 nSize) { /* int i; */ @@ -1002,8 +1004,8 @@ /**************************************************************************** * ToAscii (KEYBOARD.4) */ -INT16 ToAscii16(UINT16 virtKey,UINT16 scanCode, LPBYTE lpKeyState, - LPVOID lpChar, UINT16 flags) +INT16 WINAPI ToAscii16(UINT16 virtKey,UINT16 scanCode, LPBYTE lpKeyState, + LPVOID lpChar, UINT16 flags) { return ToAscii32(virtKey,scanCode,lpKeyState,lpChar,flags); } @@ -1011,10 +1013,9 @@ /**************************************************************************** * ToAscii (USER32.545) */ -INT32 ToAscii32( - UINT32 virtKey,UINT32 scanCode,LPBYTE lpKeyState, - LPWORD lpChar,UINT32 flags -) { +INT32 WINAPI ToAscii32( UINT32 virtKey,UINT32 scanCode,LPBYTE lpKeyState, + LPWORD lpChar,UINT32 flags ) +{ XKeyEvent e; KeySym keysym; static XComposeStatus cs; @@ -1178,3 +1179,14 @@ ret, *(char*)lpChar); return ret; } + + +/*********************************************************************** + * GetKeyboardLayout (USER32.249) + */ +/*HKL*/ HANDLE32 WINAPI GetKeyboardLayout(DWORD dwLayout) +{ + fprintf(stderr,"GetKeyboardLayout(%ld),STUB!\n",dwLayout); + return 0; +} +
diff --git a/windows/mdi.c b/windows/mdi.c index 39c673e..fe881b9 100644 --- a/windows/mdi.c +++ b/windows/mdi.c
@@ -615,23 +615,29 @@ HDC32 hDCSrc = CreateCompatibleDC32(0); HDC32 hDCDest = CreateCompatibleDC32(hDCSrc); HBITMAP16 hbClose = LoadBitmap16(0, MAKEINTRESOURCE(OBM_CLOSE) ); - HBITMAP16 hbCopy,hb_src,hb_dest; + HBITMAP16 hbCopy; + HANDLE16 hobjSrc, hobjDest; - hb_src = SelectObject32(hDCSrc,hbClose); + hobjSrc = SelectObject32(hDCSrc, hbClose); hbCopy = CreateCompatibleBitmap32(hDCSrc,SYSMETRICS_CXSIZE,SYSMETRICS_CYSIZE); - hb_dest = SelectObject32(hDCDest,hbCopy); + hobjDest = SelectObject32(hDCDest, hbCopy); BitBlt32(hDCDest, 0, 0, SYSMETRICS_CXSIZE, SYSMETRICS_CYSIZE, hDCSrc, SYSMETRICS_CXSIZE, 0, SRCCOPY); - - SelectObject32(hDCSrc,hb_src); - SelectObject32(hDCDest,hb_dest); - + + SelectObject32(hDCSrc, hobjSrc); DeleteObject32(hbClose); - - DeleteDC32(hDCDest); DeleteDC32(hDCSrc); + hobjSrc = SelectObject32( hDCDest, GetStockObject32(BLACK_PEN) ); + + MoveToEx32( hDCDest, SYSMETRICS_CXSIZE - 1, 0, NULL ); + LineTo32( hDCDest, SYSMETRICS_CXSIZE - 1, SYSMETRICS_CYSIZE - 1); + + SelectObject32(hDCDest, hobjSrc ); + SelectObject32(hDCDest, hobjDest); + DeleteDC32(hDCDest); + return hbCopy; } @@ -897,7 +903,8 @@ * * This function is the handler for all MDI requests. */ -LRESULT MDIClientWndProc(HWND16 hwnd, UINT16 message, WPARAM16 wParam, LPARAM lParam) +LRESULT WINAPI MDIClientWndProc(HWND16 hwnd, UINT16 message, WPARAM16 wParam, + LPARAM lParam) { LPCREATESTRUCT16 cs; MDICLIENTINFO *ci; @@ -1090,8 +1097,8 @@ /*********************************************************************** * DefFrameProc16 (USER.445) */ -LRESULT DefFrameProc16( HWND16 hwnd, HWND16 hwndMDIClient, UINT16 message, - WPARAM16 wParam, LPARAM lParam ) +LRESULT WINAPI DefFrameProc16( HWND16 hwnd, HWND16 hwndMDIClient, + UINT16 message, WPARAM16 wParam, LPARAM lParam ) { HWND16 childHwnd; MDICLIENTINFO* ci; @@ -1188,8 +1195,8 @@ /*********************************************************************** * DefFrameProc32A (USER32.121) */ -LRESULT DefFrameProc32A( HWND32 hwnd, HWND32 hwndMDIClient, UINT32 message, - WPARAM32 wParam, LPARAM lParam ) +LRESULT WINAPI DefFrameProc32A( HWND32 hwnd, HWND32 hwndMDIClient, + UINT32 message, WPARAM32 wParam, LPARAM lParam) { if (hwndMDIClient) { @@ -1228,8 +1235,8 @@ /*********************************************************************** * DefFrameProc32W (USER32.122) */ -LRESULT DefFrameProc32W( HWND32 hwnd, HWND32 hwndMDIClient, UINT32 message, - WPARAM32 wParam, LPARAM lParam ) +LRESULT WINAPI DefFrameProc32W( HWND32 hwnd, HWND32 hwndMDIClient, + UINT32 message, WPARAM32 wParam, LPARAM lParam) { if (hwndMDIClient) { @@ -1265,8 +1272,8 @@ /*********************************************************************** * DefMDIChildProc16 (USER.447) */ -LRESULT DefMDIChildProc16( HWND16 hwnd, UINT16 message, - WPARAM16 wParam, LPARAM lParam ) +LRESULT WINAPI DefMDIChildProc16( HWND16 hwnd, UINT16 message, + WPARAM16 wParam, LPARAM lParam ) { MDICLIENTINFO *ci; WND *clientWnd; @@ -1411,8 +1418,8 @@ /*********************************************************************** * DefMDIChildProc32A (USER32.123) */ -LRESULT DefMDIChildProc32A( HWND32 hwnd, UINT32 message, - WPARAM32 wParam, LPARAM lParam ) +LRESULT WINAPI DefMDIChildProc32A( HWND32 hwnd, UINT32 message, + WPARAM32 wParam, LPARAM lParam ) { MDICLIENTINFO *ci; WND *clientWnd; @@ -1463,8 +1470,8 @@ /*********************************************************************** * DefMDIChildProc32W (USER32.124) */ -LRESULT DefMDIChildProc32W( HWND32 hwnd, UINT32 message, - WPARAM32 wParam, LPARAM lParam ) +LRESULT WINAPI DefMDIChildProc32W( HWND32 hwnd, UINT32 message, + WPARAM32 wParam, LPARAM lParam ) { MDICLIENTINFO *ci; WND *clientWnd; @@ -1509,7 +1516,7 @@ /********************************************************************** * TranslateMDISysAccel32 (USER32.554) */ -BOOL32 TranslateMDISysAccel32( HWND32 hwndClient, LPMSG32 msg ) +BOOL32 WINAPI TranslateMDISysAccel32( HWND32 hwndClient, LPMSG32 msg ) { MSG16 msg16; @@ -1522,7 +1529,7 @@ /********************************************************************** * TranslateMDISysAccel16 (USER.451) */ -BOOL16 TranslateMDISysAccel16( HWND16 hwndClient, LPMSG16 msg ) +BOOL16 WINAPI TranslateMDISysAccel16( HWND16 hwndClient, LPMSG16 msg ) { WND* clientWnd = WIN_FindWndPtr( hwndClient); @@ -1570,7 +1577,7 @@ /*********************************************************************** * CalcChildScroll (USER.462) */ -void CalcChildScroll( HWND16 hwnd, WORD scroll ) +void WINAPI CalcChildScroll( HWND16 hwnd, WORD scroll ) { RECT32 childRect, clientRect; INT32 vmin, vmax, hmin, hmax, vpos, hpos; @@ -1620,7 +1627,7 @@ /*********************************************************************** * ScrollChildren16 (USER.463) */ -void ScrollChildren16(HWND16 hWnd, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam) +void WINAPI ScrollChildren16(HWND16 hWnd, UINT16 uMsg, WPARAM16 wParam, LPARAM lParam) { return ScrollChildren32( hWnd, uMsg, wParam, lParam ); } @@ -1629,7 +1636,8 @@ /*********************************************************************** * ScrollChildren32 (USER32.447) */ -void ScrollChildren32(HWND32 hWnd, UINT32 uMsg, WPARAM32 wParam, LPARAM lParam) +void WINAPI ScrollChildren32(HWND32 hWnd, UINT32 uMsg, WPARAM32 wParam, + LPARAM lParam) { WND *wndPtr = WIN_FindWndPtr(hWnd); INT32 newPos = -1; @@ -1694,8 +1702,10 @@ SetScrollPos32(hWnd, (uMsg == WM_VSCROLL)?SB_VERT:SB_HORZ , newPos, TRUE); if( uMsg == WM_VSCROLL ) - ScrollWindow32(hWnd ,0 ,curPos - newPos, NULL, NULL); + ScrollWindowEx32(hWnd ,0 ,curPos - newPos, NULL, NULL, 0, NULL, + SW_INVALIDATE | SW_ERASE | SW_SCROLLCHILDREN ); else - ScrollWindow32(hWnd ,curPos - newPos, 0, NULL, NULL); + ScrollWindowEx32(hWnd ,curPos - newPos, 0, NULL, NULL, 0, NULL, + SW_INVALIDATE | SW_ERASE | SW_SCROLLCHILDREN ); }
diff --git a/windows/message.c b/windows/message.c index 6bd4f4d..6d4aa84 100644 --- a/windows/message.c +++ b/windows/message.c
@@ -419,7 +419,7 @@ /* If the queue is empty, attempt to fill it */ if (!sysMsgQueue->msgCount && XPending(display)) - EVENT_WaitXEvent( FALSE, FALSE ); + EVENT_WaitNetEvent( FALSE, FALSE ); for (i = kbd_msg = 0; i < sysMsgQueue->msgCount; i++, pos++) { @@ -515,7 +515,7 @@ /********************************************************************** * SetDoubleClickTime16 (USER.20) */ -void SetDoubleClickTime16( UINT16 interval ) +void WINAPI SetDoubleClickTime16( UINT16 interval ) { SetDoubleClickTime32( interval ); } @@ -524,7 +524,7 @@ /********************************************************************** * SetDoubleClickTime32 (USER32.479) */ -BOOL32 SetDoubleClickTime32( UINT32 interval ) +BOOL32 WINAPI SetDoubleClickTime32( UINT32 interval ) { doubleClickSpeed = interval ? interval : 500; return TRUE; @@ -534,7 +534,7 @@ /********************************************************************** * GetDoubleClickTime16 (USER.21) */ -UINT16 GetDoubleClickTime16(void) +UINT16 WINAPI GetDoubleClickTime16(void) { return doubleClickSpeed; } @@ -543,7 +543,7 @@ /********************************************************************** * GetDoubleClickTime32 (USER32.238) */ -UINT32 GetDoubleClickTime32(void) +UINT32 WINAPI GetDoubleClickTime32(void) { return doubleClickSpeed; } @@ -632,7 +632,7 @@ /*********************************************************************** * ReplyMessage16 (USER.115) */ -void ReplyMessage16( LRESULT result ) +void WINAPI ReplyMessage16( LRESULT result ) { MESSAGEQUEUE *senderQ; MESSAGEQUEUE *queue; @@ -892,8 +892,8 @@ /*********************************************************************** * PeekMessage16 (USER.109) */ -BOOL16 PeekMessage16( LPMSG16 msg, HWND16 hwnd, UINT16 first, - UINT16 last, UINT16 flags ) +BOOL16 WINAPI PeekMessage16( LPMSG16 msg, HWND16 hwnd, UINT16 first, + UINT16 last, UINT16 flags ) { return MSG_PeekMessage( msg, hwnd, first, last, flags, TRUE ); } @@ -902,7 +902,7 @@ /*********************************************************************** * GetMessage16 (USER.108) */ -BOOL16 GetMessage16( SEGPTR msg, HWND16 hwnd, UINT16 first, UINT16 last ) +BOOL16 WINAPI GetMessage16( SEGPTR msg, HWND16 hwnd, UINT16 first, UINT16 last) { MSG16 *lpmsg = (MSG16 *)PTR_SEG_TO_LIN(msg); MSG_PeekMessage( lpmsg, @@ -918,8 +918,8 @@ /*********************************************************************** * PostMessage16 (USER.110) */ -BOOL16 PostMessage16( HWND16 hwnd, UINT16 message, WPARAM16 wParam, - LPARAM lParam ) +BOOL16 WINAPI PostMessage16( HWND16 hwnd, UINT16 message, WPARAM16 wParam, + LPARAM lParam ) { MSG16 msg; WND *wndPtr; @@ -963,8 +963,8 @@ /*********************************************************************** * PostMessage32A (USER32.418) */ -BOOL32 PostMessage32A( HWND32 hwnd, UINT32 message, WPARAM32 wParam, - LPARAM lParam ) +BOOL32 WINAPI PostMessage32A( HWND32 hwnd, UINT32 message, WPARAM32 wParam, + LPARAM lParam ) { /* FIXME */ return PostMessage16( hwnd, message, wParam, lParam ); @@ -974,8 +974,8 @@ /*********************************************************************** * PostMessage32W (USER32.419) */ -BOOL32 PostMessage32W( HWND32 hwnd, UINT32 message, WPARAM32 wParam, - LPARAM lParam ) +BOOL32 WINAPI PostMessage32W( HWND32 hwnd, UINT32 message, WPARAM32 wParam, + LPARAM lParam ) { /* FIXME */ return PostMessage16( hwnd, message, wParam, lParam ); @@ -985,8 +985,8 @@ /*********************************************************************** * PostAppMessage16 (USER.116) */ -BOOL16 PostAppMessage16( HTASK16 hTask, UINT16 message, WPARAM16 wParam, - LPARAM lParam ) +BOOL16 WINAPI PostAppMessage16( HTASK16 hTask, UINT16 message, WPARAM16 wParam, + LPARAM lParam ) { MSG16 msg; @@ -1006,7 +1006,8 @@ /*********************************************************************** * SendMessage16 (USER.111) */ -LRESULT SendMessage16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam, LPARAM lParam) +LRESULT WINAPI SendMessage16( HWND16 hwnd, UINT16 msg, WPARAM16 wParam, + LPARAM lParam) { WND * wndPtr; WND **list, **ppWnd; @@ -1103,7 +1104,8 @@ /*********************************************************************** * SendMessage32A (USER32.453) */ -LRESULT SendMessage32A(HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam) +LRESULT WINAPI SendMessage32A( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, + LPARAM lParam ) { WND * wndPtr; WND **list, **ppWnd; @@ -1153,7 +1155,8 @@ /*********************************************************************** * SendMessage32W (USER32.458) */ -LRESULT SendMessage32W(HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam) +LRESULT WINAPI SendMessage32W( HWND32 hwnd, UINT32 msg, WPARAM32 wParam, + LPARAM lParam ) { WND * wndPtr; WND **list, **ppWnd; @@ -1202,7 +1205,7 @@ /*********************************************************************** * WaitMessage (USER.112) (USER32.577) */ -void WaitMessage( void ) +void WINAPI WaitMessage( void ) { QUEUE_WaitBits( QS_ALLINPUT ); } @@ -1402,7 +1405,7 @@ /*********************************************************************** * TranslateMessage16 (USER.113) */ -BOOL16 TranslateMessage16( const MSG16 *msg ) +BOOL16 WINAPI TranslateMessage16( const MSG16 *msg ) { return MSG_DoTranslateMessage( msg->message, msg->hwnd, msg->wParam, msg->lParam ); @@ -1412,7 +1415,7 @@ /*********************************************************************** * TranslateMessage32 (USER32.555) */ -BOOL32 TranslateMessage32( const MSG32 *msg ) +BOOL32 WINAPI TranslateMessage32( const MSG32 *msg ) { return MSG_DoTranslateMessage( msg->message, msg->hwnd, msg->wParam, msg->lParam ); @@ -1422,7 +1425,7 @@ /*********************************************************************** * DispatchMessage16 (USER.114) */ -LONG DispatchMessage16( const MSG16* msg ) +LONG WINAPI DispatchMessage16( const MSG16* msg ) { WND * wndPtr; LONG retval; @@ -1467,7 +1470,7 @@ /*********************************************************************** * DispatchMessage32A (USER32.140) */ -LONG DispatchMessage32A( const MSG32* msg ) +LONG WINAPI DispatchMessage32A( const MSG32* msg ) { WND * wndPtr; LONG retval; @@ -1514,7 +1517,7 @@ /*********************************************************************** * DispatchMessage32W (USER32.141) */ -LONG DispatchMessage32W( const MSG32* msg ) +LONG WINAPI DispatchMessage32W( const MSG32* msg ) { WND * wndPtr; LONG retval; @@ -1561,7 +1564,7 @@ /*********************************************************************** * RegisterWindowMessage16 (USER.118) */ -WORD RegisterWindowMessage16( SEGPTR str ) +WORD WINAPI RegisterWindowMessage16( SEGPTR str ) { dprintf_msg(stddeb, "RegisterWindowMessage16: %08lx\n", (DWORD)str ); return GlobalAddAtom16( str ); @@ -1571,7 +1574,7 @@ /*********************************************************************** * RegisterWindowMessage32A (USER32.436) */ -WORD RegisterWindowMessage32A( LPCSTR str ) +WORD WINAPI RegisterWindowMessage32A( LPCSTR str ) { dprintf_msg(stddeb, "RegisterWindowMessage32A: %s\n", str ); return GlobalAddAtom32A( str ); @@ -1581,7 +1584,7 @@ /*********************************************************************** * RegisterWindowMessage32W (USER32.437) */ -WORD RegisterWindowMessage32W( LPCWSTR str ) +WORD WINAPI RegisterWindowMessage32W( LPCWSTR str ) { dprintf_msg(stddeb, "RegisterWindowMessage32W: %p\n", str ); return GlobalAddAtom32W( str ); @@ -1591,7 +1594,7 @@ /*********************************************************************** * GetTickCount (USER.13) (KERNEL32.299) */ -DWORD GetTickCount(void) +DWORD WINAPI GetTickCount(void) { struct timeval t; gettimeofday( &t, NULL ); @@ -1604,7 +1607,7 @@ * * (effectively identical to GetTickCount) */ -DWORD GetCurrentTime16(void) +DWORD WINAPI GetCurrentTime16(void) { return GetTickCount(); } @@ -1613,7 +1616,7 @@ /*********************************************************************** * InSendMessage16 (USER.192) */ -BOOL16 InSendMessage16(void) +BOOL16 WINAPI InSendMessage16(void) { return InSendMessage32(); } @@ -1622,7 +1625,7 @@ /*********************************************************************** * InSendMessage32 (USER32.319) */ -BOOL32 InSendMessage32(void) +BOOL32 WINAPI InSendMessage32(void) { MESSAGEQUEUE *queue;
diff --git a/windows/msgbox.c b/windows/msgbox.c index 27a9793..a2cb5be 100644 --- a/windows/msgbox.c +++ b/windows/msgbox.c
@@ -26,8 +26,8 @@ * * Dialog procedure for message boxes. */ -static LRESULT MSGBOX_DlgProc( HWND32 hwnd, UINT32 message, - WPARAM32 wParam, LPARAM lParam ) +static LRESULT CALLBACK MSGBOX_DlgProc( HWND32 hwnd, UINT32 message, + WPARAM32 wParam, LPARAM lParam ) { LPMSGBOX lpmb; RECT32 rect, textrect; @@ -184,7 +184,7 @@ /************************************************************************** * MessageBox16 (USER.1) */ -INT16 MessageBox16( HWND16 hwnd, LPCSTR text, LPCSTR title, UINT16 type ) +INT16 WINAPI MessageBox16( HWND16 hwnd, LPCSTR text, LPCSTR title, UINT16 type) { return MessageBox32A( hwnd, text, title, type ); } @@ -193,7 +193,7 @@ /************************************************************************** * MessageBox32A (USER32.390) */ -INT32 MessageBox32A( HWND32 hWnd, LPCSTR text, LPCSTR title, UINT32 type ) +INT32 WINAPI MessageBox32A(HWND32 hWnd, LPCSTR text, LPCSTR title, UINT32 type) { MSGBOX mbox; @@ -211,7 +211,8 @@ /************************************************************************** * MessageBox32W (USER32.395) */ -INT32 MessageBox32W( HWND32 hwnd, LPCWSTR text, LPCWSTR title, UINT32 type ) +INT32 WINAPI MessageBox32W( HWND32 hwnd, LPCWSTR text, LPCWSTR title, + UINT32 type ) { LPSTR titleA = HEAP_strdupWtoA( GetProcessHeap(), 0, title ); LPSTR textA = HEAP_strdupWtoA( GetProcessHeap(), 0, text ); @@ -225,8 +226,9 @@ /************************************************************************** * MessageBoxEx32A (USER32.391) */ -INT32 -MessageBoxEx32A(HWND32 hWnd,LPCSTR text,LPCSTR title,UINT32 type,WORD langid) { +INT32 WINAPI MessageBoxEx32A( HWND32 hWnd, LPCSTR text, LPCSTR title, + UINT32 type, WORD langid ) +{ /* ignore language id for now */ return MessageBox32A(hWnd,text,title,type); } @@ -234,8 +236,8 @@ /************************************************************************** * MessageBoxEx32W (USER32.392) */ -INT32 -MessageBoxEx32W(HWND32 hWnd,LPCWSTR text,LPCWSTR title,UINT32 type,WORD langid) +INT32 WINAPI MessageBoxEx32W( HWND32 hWnd, LPCWSTR text, LPCWSTR title, + UINT32 type, WORD langid ) { /* ignore language id for now */ return MessageBox32W(hWnd,text,title,type); @@ -245,7 +247,7 @@ /************************************************************************** * FatalAppExit16 (KERNEL.137) */ -void FatalAppExit16( UINT16 action, LPCSTR str ) +void WINAPI FatalAppExit16( UINT16 action, LPCSTR str ) { FatalAppExit32A( action, str ); } @@ -254,7 +256,7 @@ /************************************************************************** * FatalAppExit32A (KERNEL32.108) */ -void FatalAppExit32A( UINT32 action, LPCSTR str ) +void WINAPI FatalAppExit32A( UINT32 action, LPCSTR str ) { MessageBox32A( 0, str, NULL, MB_SYSTEMMODAL | MB_OK ); TASK_KillCurrentTask(0); @@ -264,7 +266,7 @@ /************************************************************************** * FatalAppExit32W (KERNEL32.109) */ -void FatalAppExit32W( UINT32 action, LPCWSTR str ) +void WINAPI FatalAppExit32W( UINT32 action, LPCWSTR str ) { MessageBox32W( 0, str, NULL, MB_SYSTEMMODAL | MB_OK ); TASK_KillCurrentTask(0);
diff --git a/windows/nonclient.c b/windows/nonclient.c index b1ef586..03f6091 100644 --- a/windows/nonclient.c +++ b/windows/nonclient.c
@@ -164,7 +164,7 @@ /*********************************************************************** * AdjustWindowRect16 (USER.102) */ -BOOL16 AdjustWindowRect16( LPRECT16 rect, DWORD style, BOOL16 menu ) +BOOL16 WINAPI AdjustWindowRect16( LPRECT16 rect, DWORD style, BOOL16 menu ) { return AdjustWindowRectEx16( rect, style, menu, 0 ); } @@ -173,7 +173,7 @@ /*********************************************************************** * AdjustWindowRect32 (USER32.) */ -BOOL32 AdjustWindowRect32( LPRECT32 rect, DWORD style, BOOL32 menu ) +BOOL32 WINAPI AdjustWindowRect32( LPRECT32 rect, DWORD style, BOOL32 menu ) { return AdjustWindowRectEx32( rect, style, menu, 0 ); } @@ -182,8 +182,8 @@ /*********************************************************************** * AdjustWindowRectEx16 (USER.454) */ -BOOL16 AdjustWindowRectEx16( LPRECT16 rect, DWORD style, - BOOL16 menu, DWORD exStyle ) +BOOL16 WINAPI AdjustWindowRectEx16( LPRECT16 rect, DWORD style, + BOOL16 menu, DWORD exStyle ) { /* Correct the window style */ @@ -209,8 +209,8 @@ /*********************************************************************** * AdjustWindowRectEx32 (USER32.) */ -BOOL32 AdjustWindowRectEx32( LPRECT32 rect, DWORD style, - BOOL32 menu, DWORD exStyle ) +BOOL32 WINAPI AdjustWindowRectEx32( LPRECT32 rect, DWORD style, + BOOL32 menu, DWORD exStyle ) { RECT16 rect16; BOOL32 ret;
diff --git a/windows/painting.c b/windows/painting.c index 48f0d51..77a3748 100644 --- a/windows/painting.c +++ b/windows/painting.c
@@ -92,7 +92,7 @@ /*********************************************************************** * BeginPaint16 (USER.39) */ -HDC16 BeginPaint16( HWND16 hwnd, LPPAINTSTRUCT16 lps ) +HDC16 WINAPI BeginPaint16( HWND16 hwnd, LPPAINTSTRUCT16 lps ) { BOOL32 bIcon; HRGN32 hrgnUpdate; @@ -156,7 +156,7 @@ /*********************************************************************** * BeginPaint32 (USER32.9) */ -HDC32 BeginPaint32( HWND32 hwnd, PAINTSTRUCT32 *lps ) +HDC32 WINAPI BeginPaint32( HWND32 hwnd, PAINTSTRUCT32 *lps ) { PAINTSTRUCT16 ps; @@ -176,7 +176,7 @@ /*********************************************************************** * EndPaint16 (USER.40) */ -BOOL16 EndPaint16( HWND16 hwnd, const PAINTSTRUCT16* lps ) +BOOL16 WINAPI EndPaint16( HWND16 hwnd, const PAINTSTRUCT16* lps ) { ReleaseDC16( hwnd, lps->hdc ); ShowCaret32( hwnd ); @@ -187,7 +187,7 @@ /*********************************************************************** * EndPaint32 (USER32.175) */ -BOOL32 EndPaint32( HWND32 hwnd, const PAINTSTRUCT32 *lps ) +BOOL32 WINAPI EndPaint32( HWND32 hwnd, const PAINTSTRUCT32 *lps ) { ReleaseDC32( hwnd, lps->hdc ); ShowCaret32( hwnd ); @@ -198,7 +198,7 @@ /*********************************************************************** * FillWindow (USER.324) */ -void FillWindow( HWND16 hwndParent, HWND16 hwnd, HDC16 hdc, HBRUSH16 hbrush ) +void WINAPI FillWindow( HWND16 hwndParent, HWND16 hwnd, HDC16 hdc, HBRUSH16 hbrush ) { RECT16 rect; GetClientRect16( hwnd, &rect ); @@ -210,8 +210,8 @@ /*********************************************************************** * PaintRect (USER.325) */ -void PaintRect( HWND16 hwndParent, HWND16 hwnd, HDC16 hdc, - HBRUSH16 hbrush, const RECT16 *rect) +void WINAPI PaintRect( HWND16 hwndParent, HWND16 hwnd, HDC16 hdc, + HBRUSH16 hbrush, const RECT16 *rect) { /* Send WM_CTLCOLOR message if needed */ @@ -229,7 +229,7 @@ /*********************************************************************** * GetControlBrush (USER.326) */ -HBRUSH16 GetControlBrush( HWND16 hwnd, HDC16 hdc, UINT16 control ) +HBRUSH16 WINAPI GetControlBrush( HWND16 hwnd, HDC16 hdc, UINT16 control ) { return (HBRUSH16)SendMessage32A( GetParent32(hwnd), WM_CTLCOLOR+control, (WPARAM32)hdc, (LPARAM)hwnd ); @@ -462,8 +462,8 @@ /*********************************************************************** * RedrawWindow32 (USER32.425) */ -BOOL32 RedrawWindow32( HWND32 hwnd, const RECT32 *rectUpdate, - HRGN32 hrgnUpdate, UINT32 flags ) +BOOL32 WINAPI RedrawWindow32( HWND32 hwnd, const RECT32 *rectUpdate, + HRGN32 hrgnUpdate, UINT32 flags ) { return PAINT_RedrawWindow( hwnd, rectUpdate, hrgnUpdate, flags, 0 ); } @@ -472,8 +472,8 @@ /*********************************************************************** * RedrawWindow16 (USER.290) */ -BOOL16 RedrawWindow16( HWND16 hwnd, const RECT16 *rectUpdate, - HRGN16 hrgnUpdate, UINT16 flags ) +BOOL16 WINAPI RedrawWindow16( HWND16 hwnd, const RECT16 *rectUpdate, + HRGN16 hrgnUpdate, UINT16 flags ) { if (rectUpdate) { @@ -489,7 +489,7 @@ /*********************************************************************** * UpdateWindow16 (USER.124) */ -void UpdateWindow16( HWND16 hwnd ) +void WINAPI UpdateWindow16( HWND16 hwnd ) { PAINT_RedrawWindow( hwnd, NULL, 0, RDW_UPDATENOW | RDW_NOCHILDREN, 0 ); } @@ -497,7 +497,7 @@ /*********************************************************************** * UpdateWindow32 (USER32.566) */ -void UpdateWindow32( HWND32 hwnd ) +void WINAPI UpdateWindow32( HWND32 hwnd ) { PAINT_RedrawWindow( hwnd, NULL, 0, RDW_UPDATENOW | RDW_NOCHILDREN, 0 ); } @@ -505,7 +505,7 @@ /*********************************************************************** * InvalidateRgn16 (USER.126) */ -void InvalidateRgn16( HWND16 hwnd, HRGN16 hrgn, BOOL16 erase ) +void WINAPI InvalidateRgn16( HWND16 hwnd, HRGN16 hrgn, BOOL16 erase ) { PAINT_RedrawWindow((HWND32)hwnd, NULL, (HRGN32)hrgn, RDW_INVALIDATE | (erase ? RDW_ERASE : 0), 0 ); @@ -515,7 +515,7 @@ /*********************************************************************** * InvalidateRgn32 (USER32.328) */ -void InvalidateRgn32( HWND32 hwnd, HRGN32 hrgn, BOOL32 erase ) +void WINAPI InvalidateRgn32( HWND32 hwnd, HRGN32 hrgn, BOOL32 erase ) { PAINT_RedrawWindow(hwnd, NULL, hrgn, RDW_INVALIDATE | (erase ? RDW_ERASE : 0), 0 ); } @@ -524,7 +524,7 @@ /*********************************************************************** * InvalidateRect16 (USER.125) */ -void InvalidateRect16( HWND16 hwnd, const RECT16 *rect, BOOL16 erase ) +void WINAPI InvalidateRect16( HWND16 hwnd, const RECT16 *rect, BOOL16 erase ) { RedrawWindow16( hwnd, rect, 0, RDW_INVALIDATE | (erase ? RDW_ERASE : 0) ); } @@ -533,7 +533,7 @@ /*********************************************************************** * InvalidateRect32 (USER32.327) */ -void InvalidateRect32( HWND32 hwnd, const RECT32 *rect, BOOL32 erase ) +void WINAPI InvalidateRect32( HWND32 hwnd, const RECT32 *rect, BOOL32 erase ) { PAINT_RedrawWindow( hwnd, rect, 0, RDW_INVALIDATE | (erase ? RDW_ERASE : 0), 0 ); @@ -543,7 +543,7 @@ /*********************************************************************** * ValidateRgn16 (USER.128) */ -void ValidateRgn16( HWND16 hwnd, HRGN16 hrgn ) +void WINAPI ValidateRgn16( HWND16 hwnd, HRGN16 hrgn ) { PAINT_RedrawWindow( (HWND32)hwnd, NULL, (HRGN32)hrgn, RDW_VALIDATE | RDW_NOCHILDREN, 0 ); @@ -553,7 +553,7 @@ /*********************************************************************** * ValidateRgn32 (USER32.571) */ -void ValidateRgn32( HWND32 hwnd, HRGN32 hrgn ) +void WINAPI ValidateRgn32( HWND32 hwnd, HRGN32 hrgn ) { PAINT_RedrawWindow( hwnd, NULL, hrgn, RDW_VALIDATE | RDW_NOCHILDREN, 0 ); } @@ -562,7 +562,7 @@ /*********************************************************************** * ValidateRect16 (USER.127) */ -void ValidateRect16( HWND16 hwnd, const RECT16 *rect ) +void WINAPI ValidateRect16( HWND16 hwnd, const RECT16 *rect ) { RedrawWindow16( hwnd, rect, 0, RDW_VALIDATE | RDW_NOCHILDREN ); } @@ -571,7 +571,7 @@ /*********************************************************************** * ValidateRect32 (USER32.570) */ -void ValidateRect32( HWND32 hwnd, const RECT32 *rect ) +void WINAPI ValidateRect32( HWND32 hwnd, const RECT32 *rect ) { PAINT_RedrawWindow( hwnd, rect, 0, RDW_VALIDATE | RDW_NOCHILDREN, 0 ); } @@ -580,7 +580,7 @@ /*********************************************************************** * GetUpdateRect16 (USER.190) */ -BOOL16 GetUpdateRect16( HWND16 hwnd, LPRECT16 rect, BOOL16 erase ) +BOOL16 WINAPI GetUpdateRect16( HWND16 hwnd, LPRECT16 rect, BOOL16 erase ) { RECT32 r; BOOL16 ret; @@ -595,7 +595,7 @@ /*********************************************************************** * GetUpdateRect32 (USER32.296) */ -BOOL32 GetUpdateRect32( HWND32 hwnd, LPRECT32 rect, BOOL32 erase ) +BOOL32 WINAPI GetUpdateRect32( HWND32 hwnd, LPRECT32 rect, BOOL32 erase ) { WND * wndPtr = WIN_FindWndPtr( hwnd ); if (!wndPtr) return FALSE; @@ -618,7 +618,7 @@ /*********************************************************************** * GetUpdateRgn16 (USER.237) */ -INT16 GetUpdateRgn16( HWND16 hwnd, HRGN16 hrgn, BOOL16 erase ) +INT16 WINAPI GetUpdateRgn16( HWND16 hwnd, HRGN16 hrgn, BOOL16 erase ) { return GetUpdateRgn32( hwnd, hrgn, erase ); } @@ -627,7 +627,7 @@ /*********************************************************************** * GetUpdateRgn32 (USER32.297) */ -INT32 GetUpdateRgn32( HWND32 hwnd, HRGN32 hrgn, BOOL32 erase ) +INT32 WINAPI GetUpdateRgn32( HWND32 hwnd, HRGN32 hrgn, BOOL32 erase ) { INT32 retval; WND * wndPtr = WIN_FindWndPtr( hwnd ); @@ -647,7 +647,7 @@ /*********************************************************************** * ExcludeUpdateRgn16 (USER.238) */ -INT16 ExcludeUpdateRgn16( HDC16 hdc, HWND16 hwnd ) +INT16 WINAPI ExcludeUpdateRgn16( HDC16 hdc, HWND16 hwnd ) { return ExcludeUpdateRgn32( hdc, hwnd ); } @@ -656,7 +656,7 @@ /*********************************************************************** * ExcludeUpdateRgn32 (USER32.194) */ -INT32 ExcludeUpdateRgn32( HDC32 hdc, HWND32 hwnd ) +INT32 WINAPI ExcludeUpdateRgn32( HDC32 hdc, HWND32 hwnd ) { RECT32 rect; WND * wndPtr;
diff --git a/windows/property.c b/windows/property.c index ab6daf4..09eebed 100644 --- a/windows/property.c +++ b/windows/property.c
@@ -47,7 +47,7 @@ /*********************************************************************** * GetProp16 (USER.25) */ -HANDLE16 GetProp16( HWND16 hwnd, LPCSTR str ) +HANDLE16 WINAPI GetProp16( HWND16 hwnd, LPCSTR str ) { return (HANDLE16)GetProp32A( hwnd, str ); } @@ -56,7 +56,7 @@ /*********************************************************************** * GetProp32A (USER32.280) */ -HANDLE32 GetProp32A( HWND32 hwnd, LPCSTR str ) +HANDLE32 WINAPI GetProp32A( HWND32 hwnd, LPCSTR str ) { PROPERTY *prop = PROP_FindProp( hwnd, str ); @@ -74,7 +74,7 @@ /*********************************************************************** * GetProp32W (USER32.281) */ -HANDLE32 GetProp32W( HWND32 hwnd, LPCWSTR str ) +HANDLE32 WINAPI GetProp32W( HWND32 hwnd, LPCWSTR str ) { LPSTR strA; HANDLE32 ret; @@ -90,7 +90,7 @@ /*********************************************************************** * SetProp16 (USER.26) */ -BOOL16 SetProp16( HWND16 hwnd, LPCSTR str, HANDLE16 handle ) +BOOL16 WINAPI SetProp16( HWND16 hwnd, LPCSTR str, HANDLE16 handle ) { return (BOOL16)SetProp32A( hwnd, str, handle ); } @@ -99,7 +99,7 @@ /*********************************************************************** * SetProp32A (USER32.496) */ -BOOL32 SetProp32A( HWND32 hwnd, LPCSTR str, HANDLE32 handle ) +BOOL32 WINAPI SetProp32A( HWND32 hwnd, LPCSTR str, HANDLE32 handle ) { PROPERTY *prop; @@ -131,7 +131,7 @@ /*********************************************************************** * SetProp32W (USER32.497) */ -BOOL32 SetProp32W( HWND32 hwnd, LPCWSTR str, HANDLE32 handle ) +BOOL32 WINAPI SetProp32W( HWND32 hwnd, LPCWSTR str, HANDLE32 handle ) { BOOL32 ret; LPSTR strA; @@ -148,7 +148,7 @@ /*********************************************************************** * RemoveProp16 (USER.24) */ -HANDLE16 RemoveProp16( HWND16 hwnd, LPCSTR str ) +HANDLE16 WINAPI RemoveProp16( HWND16 hwnd, LPCSTR str ) { return (HANDLE16)RemoveProp32A( hwnd, str ); } @@ -157,7 +157,7 @@ /*********************************************************************** * RemoveProp32A (USER32.441) */ -HANDLE32 RemoveProp32A( HWND32 hwnd, LPCSTR str ) +HANDLE32 WINAPI RemoveProp32A( HWND32 hwnd, LPCSTR str ) { HANDLE32 handle; PROPERTY **pprop, *prop; @@ -195,7 +195,7 @@ /*********************************************************************** * RemoveProp32W (USER32.442) */ -HANDLE32 RemoveProp32W( HWND32 hwnd, LPCWSTR str ) +HANDLE32 WINAPI RemoveProp32W( HWND32 hwnd, LPCWSTR str ) { LPSTR strA; HANDLE32 ret; @@ -231,7 +231,7 @@ /*********************************************************************** * EnumProps16 (USER.27) */ -INT16 EnumProps16( HWND16 hwnd, PROPENUMPROC16 func ) +INT16 WINAPI EnumProps16( HWND16 hwnd, PROPENUMPROC16 func ) { PROPERTY *prop, *next; WND *pWnd; @@ -257,7 +257,7 @@ /*********************************************************************** * EnumProps32A (USER32.185) */ -INT32 EnumProps32A( HWND32 hwnd, PROPENUMPROC32A func ) +INT32 WINAPI EnumProps32A( HWND32 hwnd, PROPENUMPROC32A func ) { return EnumPropsEx32A( hwnd, (PROPENUMPROCEX32A)func, 0 ); } @@ -266,7 +266,7 @@ /*********************************************************************** * EnumProps32W (USER32.188) */ -INT32 EnumProps32W( HWND32 hwnd, PROPENUMPROC32W func ) +INT32 WINAPI EnumProps32W( HWND32 hwnd, PROPENUMPROC32W func ) { return EnumPropsEx32W( hwnd, (PROPENUMPROCEX32W)func, 0 ); } @@ -275,7 +275,7 @@ /*********************************************************************** * EnumPropsEx32A (USER32.186) */ -INT32 EnumPropsEx32A( HWND32 hwnd, PROPENUMPROCEX32A func, LPARAM lParam ) +INT32 WINAPI EnumPropsEx32A(HWND32 hwnd, PROPENUMPROCEX32A func, LPARAM lParam) { PROPERTY *prop, *next; WND *pWnd; @@ -302,7 +302,7 @@ /*********************************************************************** * EnumPropsEx32W (USER32.187) */ -INT32 EnumPropsEx32W( HWND32 hwnd, PROPENUMPROCEX32W func, LPARAM lParam ) +INT32 WINAPI EnumPropsEx32W(HWND32 hwnd, PROPENUMPROCEX32W func, LPARAM lParam) { PROPERTY *prop, *next; WND *pWnd;
diff --git a/windows/queue.c b/windows/queue.c index 4872a35..a0f50c4 100644 --- a/windows/queue.c +++ b/windows/queue.c
@@ -668,7 +668,7 @@ /*********************************************************************** * PostQuitMessage16 (USER.6) */ -void PostQuitMessage16( INT16 exitCode ) +void WINAPI PostQuitMessage16( INT16 exitCode ) { PostQuitMessage32( exitCode ); } @@ -677,7 +677,7 @@ /*********************************************************************** * PostQuitMessage32 (USER32.420) */ -void PostQuitMessage32( INT32 exitCode ) +void WINAPI PostQuitMessage32( INT32 exitCode ) { MESSAGEQUEUE *queue; @@ -690,7 +690,7 @@ /*********************************************************************** * GetWindowTask16 (USER.224) */ -HTASK16 GetWindowTask16( HWND16 hwnd ) +HTASK16 WINAPI GetWindowTask16( HWND16 hwnd ) { WND *wndPtr = WIN_FindWndPtr( hwnd ); @@ -701,7 +701,7 @@ /*********************************************************************** * GetWindowThreadProcessId (USER32.312) */ -DWORD GetWindowThreadProcessId( HWND32 hwnd, LPDWORD process ) +DWORD WINAPI GetWindowThreadProcessId( HWND32 hwnd, LPDWORD process ) { HTASK16 htask; TDB *tdb; @@ -725,7 +725,7 @@ /*********************************************************************** * SetMessageQueue16 (USER.266) */ -BOOL16 SetMessageQueue16( INT16 size ) +BOOL16 WINAPI SetMessageQueue16( INT16 size ) { return SetMessageQueue32( size ); } @@ -734,7 +734,7 @@ /*********************************************************************** * SetMessageQueue32 (USER32.493) */ -BOOL32 SetMessageQueue32( INT32 size ) +BOOL32 WINAPI SetMessageQueue32( INT32 size ) { HQUEUE16 hQueue, hNewQueue; MESSAGEQUEUE *queuePtr; @@ -781,7 +781,7 @@ /*********************************************************************** * GetQueueStatus16 (USER.334) */ -DWORD GetQueueStatus16( UINT16 flags ) +DWORD WINAPI GetQueueStatus16( UINT16 flags ) { MESSAGEQUEUE *queue; DWORD ret; @@ -796,7 +796,7 @@ /*********************************************************************** * GetInputState16 (USER.335) */ -BOOL16 GetInputState16(void) +BOOL16 WINAPI GetInputState16(void) { return GetInputState32(); } @@ -805,7 +805,7 @@ /*********************************************************************** * GetInputState32 (USER32.243) */ -BOOL32 GetInputState32(void) +BOOL32 WINAPI GetInputState32(void) { MESSAGEQUEUE *queue; @@ -818,7 +818,7 @@ /*********************************************************************** * GetMessagePos (USER.119) (USER32.271) */ -DWORD GetMessagePos(void) +DWORD WINAPI GetMessagePos(void) { MESSAGEQUEUE *queue; @@ -830,7 +830,7 @@ /*********************************************************************** * GetMessageTime (USER.120) (USER32.272) */ -LONG GetMessageTime(void) +LONG WINAPI GetMessageTime(void) { MESSAGEQUEUE *queue; @@ -842,7 +842,7 @@ /*********************************************************************** * GetMessageExtraInfo (USER.288) (USER32.270) */ -LONG GetMessageExtraInfo(void) +LONG WINAPI GetMessageExtraInfo(void) { MESSAGEQUEUE *queue;
diff --git a/windows/rect.c b/windows/rect.c index 61d76c2..7605666 100644 --- a/windows/rect.c +++ b/windows/rect.c
@@ -11,7 +11,8 @@ /*********************************************************************** * SetRect16 (USER.72) */ -void SetRect16(LPRECT16 rect, INT16 left, INT16 top, INT16 right, INT16 bottom) +void WINAPI SetRect16( LPRECT16 rect, INT16 left, INT16 top, + INT16 right, INT16 bottom ) { rect->left = left; rect->right = right; @@ -23,7 +24,8 @@ /*********************************************************************** * SetRect32 (USER32.498) */ -void SetRect32(LPRECT32 rect, INT32 left, INT32 top, INT32 right, INT32 bottom) +void WINAPI SetRect32( LPRECT32 rect, INT32 left, INT32 top, + INT32 right, INT32 bottom ) { rect->left = left; rect->right = right; @@ -35,7 +37,7 @@ /*********************************************************************** * SetRectEmpty16 (USER.73) */ -void SetRectEmpty16( LPRECT16 rect ) +void WINAPI SetRectEmpty16( LPRECT16 rect ) { rect->left = rect->right = rect->top = rect->bottom = 0; } @@ -44,7 +46,7 @@ /*********************************************************************** * SetRectEmpty32 (USER32.499) */ -void SetRectEmpty32( LPRECT32 rect ) +void WINAPI SetRectEmpty32( LPRECT32 rect ) { rect->left = rect->right = rect->top = rect->bottom = 0; } @@ -53,7 +55,7 @@ /*********************************************************************** * CopyRect16 (USER.74) */ -BOOL16 CopyRect16( RECT16 *dest, const RECT16 *src ) +BOOL16 WINAPI CopyRect16( RECT16 *dest, const RECT16 *src ) { *dest = *src; return TRUE; @@ -63,7 +65,7 @@ /*********************************************************************** * CopyRect32 (USER32.61) */ -BOOL32 CopyRect32( RECT32 *dest, const RECT32 *src ) +BOOL32 WINAPI CopyRect32( RECT32 *dest, const RECT32 *src ) { *dest = *src; return TRUE; @@ -73,7 +75,7 @@ /*********************************************************************** * IsRectEmpty16 (USER.75) */ -BOOL16 IsRectEmpty16( const RECT16 *rect ) +BOOL16 WINAPI IsRectEmpty16( const RECT16 *rect ) { return ((rect->left == rect->right) || (rect->top == rect->bottom)); } @@ -82,7 +84,7 @@ /*********************************************************************** * IsRectEmpty32 (USER32.346) */ -BOOL32 IsRectEmpty32( const RECT32 *rect ) +BOOL32 WINAPI IsRectEmpty32( const RECT32 *rect ) { return ((rect->left == rect->right) || (rect->top == rect->bottom)); } @@ -91,7 +93,7 @@ /*********************************************************************** * PtInRect16 (USER.76) */ -BOOL16 PtInRect16( const RECT16 *rect, POINT16 pt ) +BOOL16 WINAPI PtInRect16( const RECT16 *rect, POINT16 pt ) { return ((pt.x >= rect->left) && (pt.x < rect->right) && (pt.y >= rect->top) && (pt.y < rect->bottom)); @@ -101,7 +103,7 @@ /*********************************************************************** * PtInRect32 (USER32.423) */ -BOOL32 PtInRect32( const RECT32 *rect, POINT32 pt ) +BOOL32 WINAPI PtInRect32( const RECT32 *rect, POINT32 pt ) { return ((pt.x >= rect->left) && (pt.x < rect->right) && (pt.y >= rect->top) && (pt.y < rect->bottom)); @@ -111,7 +113,7 @@ /*********************************************************************** * OffsetRect16 (USER.77) */ -void OffsetRect16( LPRECT16 rect, INT16 x, INT16 y ) +void WINAPI OffsetRect16( LPRECT16 rect, INT16 x, INT16 y ) { rect->left += x; rect->right += x; @@ -123,7 +125,7 @@ /*********************************************************************** * OffsetRect32 (USER32.405) */ -void OffsetRect32( LPRECT32 rect, INT32 x, INT32 y ) +void WINAPI OffsetRect32( LPRECT32 rect, INT32 x, INT32 y ) { rect->left += x; rect->right += x; @@ -135,7 +137,7 @@ /*********************************************************************** * InflateRect16 (USER.78) */ -void InflateRect16( LPRECT16 rect, INT16 x, INT16 y ) +void WINAPI InflateRect16( LPRECT16 rect, INT16 x, INT16 y ) { rect->left -= x; rect->top -= y; @@ -147,7 +149,7 @@ /*********************************************************************** * InflateRect32 (USER32.320) */ -void InflateRect32( LPRECT32 rect, INT32 x, INT32 y ) +void WINAPI InflateRect32( LPRECT32 rect, INT32 x, INT32 y ) { rect->left -= x; rect->top -= y; @@ -159,7 +161,8 @@ /*********************************************************************** * IntersectRect16 (USER.79) */ -BOOL16 IntersectRect16( LPRECT16 dest, const RECT16 *src1, const RECT16 *src2 ) +BOOL16 WINAPI IntersectRect16( LPRECT16 dest, const RECT16 *src1, + const RECT16 *src2 ) { if (IsRectEmpty16(src1) || IsRectEmpty16(src2) || (src1->left >= src2->right) || (src2->left >= src1->right) || @@ -179,7 +182,8 @@ /*********************************************************************** * IntersectRect32 (USER32.326) */ -BOOL32 IntersectRect32( LPRECT32 dest, const RECT32 *src1, const RECT32 *src2 ) +BOOL32 WINAPI IntersectRect32( LPRECT32 dest, const RECT32 *src1, + const RECT32 *src2 ) { if (IsRectEmpty32(src1) || IsRectEmpty32(src2) || (src1->left >= src2->right) || (src2->left >= src1->right) || @@ -199,7 +203,8 @@ /*********************************************************************** * UnionRect16 (USER.80) */ -BOOL16 UnionRect16( LPRECT16 dest, const RECT16 *src1, const RECT16 *src2 ) +BOOL16 WINAPI UnionRect16( LPRECT16 dest, const RECT16 *src1, + const RECT16 *src2 ) { if (IsRectEmpty16(src1)) { @@ -228,7 +233,8 @@ /*********************************************************************** * UnionRect32 (USER32.558) */ -BOOL32 UnionRect32( LPRECT32 dest, const RECT32 *src1, const RECT32 *src2 ) +BOOL32 WINAPI UnionRect32( LPRECT32 dest, const RECT32 *src1, + const RECT32 *src2 ) { if (IsRectEmpty32(src1)) { @@ -257,7 +263,7 @@ /*********************************************************************** * EqualRect16 (USER.244) */ -BOOL16 EqualRect16( const RECT16* rect1, const RECT16* rect2 ) +BOOL16 WINAPI EqualRect16( const RECT16* rect1, const RECT16* rect2 ) { return ((rect1->left == rect2->left) && (rect1->right == rect2->right) && (rect1->top == rect2->top) && (rect1->bottom == rect2->bottom)); @@ -267,7 +273,7 @@ /*********************************************************************** * EqualRect32 (USER32.193) */ -BOOL32 EqualRect32( const RECT32* rect1, const RECT32* rect2 ) +BOOL32 WINAPI EqualRect32( const RECT32* rect1, const RECT32* rect2 ) { return ((rect1->left == rect2->left) && (rect1->right == rect2->right) && (rect1->top == rect2->top) && (rect1->bottom == rect2->bottom)); @@ -277,7 +283,8 @@ /*********************************************************************** * SubtractRect16 (USER.373) */ -BOOL16 SubtractRect16( LPRECT16 dest, const RECT16 *src1, const RECT16 *src2 ) +BOOL16 WINAPI SubtractRect16( LPRECT16 dest, const RECT16 *src1, + const RECT16 *src2 ) { RECT16 tmp; @@ -312,7 +319,8 @@ /*********************************************************************** * SubtractRect32 (USER32.535) */ -BOOL32 SubtractRect32( LPRECT32 dest, const RECT32 *src1, const RECT32 *src2 ) +BOOL32 WINAPI SubtractRect32( LPRECT32 dest, const RECT32 *src1, + const RECT32 *src2 ) { RECT32 tmp;
diff --git a/windows/scroll.c b/windows/scroll.c index 85371bf..fdc9f4a 100644 --- a/windows/scroll.c +++ b/windows/scroll.c
@@ -26,8 +26,8 @@ /************************************************************************* * ScrollWindow16 (USER.61) */ -void ScrollWindow16( HWND16 hwnd, INT16 dx, INT16 dy, const RECT16 *rect, - const RECT16 *clipRect ) +void WINAPI ScrollWindow16(HWND16 hwnd, INT16 dx, INT16 dy, const RECT16 *rect, + const RECT16 *clipRect ) { RECT32 rect32, clipRect32; @@ -39,9 +39,11 @@ /************************************************************************* * ScrollWindow32 (USER32.449) + * + * FIXME: verify clipping region calculations */ -BOOL32 ScrollWindow32( HWND32 hwnd, INT32 dx, INT32 dy, const RECT32 *rect, - const RECT32 *clipRect ) +BOOL32 WINAPI ScrollWindow32( HWND32 hwnd, INT32 dx, INT32 dy, + const RECT32 *rect, const RECT32 *clipRect ) { HDC32 hdc; HRGN32 hrgnUpdate,hrgnClip; @@ -122,8 +124,9 @@ /************************************************************************* * ScrollDC16 (USER.221) */ -BOOL16 ScrollDC16( HDC16 hdc, INT16 dx, INT16 dy, const RECT16 *rect, - const RECT16 *cliprc, HRGN16 hrgnUpdate, LPRECT16 rcUpdate ) +BOOL16 WINAPI ScrollDC16( HDC16 hdc, INT16 dx, INT16 dy, const RECT16 *rect, + const RECT16 *cliprc, HRGN16 hrgnUpdate, + LPRECT16 rcUpdate ) { RECT32 rect32, clipRect32, rcUpdate32; BOOL16 ret; @@ -143,8 +146,9 @@ * Both 'rc' and 'rLClip' are in logical units but update info is * returned in device coordinates. */ -BOOL32 ScrollDC32( HDC32 hdc, INT32 dx, INT32 dy, const RECT32 *rc, - const RECT32 *prLClip, HRGN32 hrgnUpdate, LPRECT32 rcUpdate ) +BOOL32 WINAPI ScrollDC32( HDC32 hdc, INT32 dx, INT32 dy, const RECT32 *rc, + const RECT32 *prLClip, HRGN32 hrgnUpdate, + LPRECT32 rcUpdate ) { RECT32 rDClip, rLClip; HRGN32 hrgnClip = 0; @@ -294,9 +298,10 @@ /************************************************************************* * ScrollWindowEx16 (USER.319) */ -INT16 ScrollWindowEx16( HWND16 hwnd, INT16 dx, INT16 dy, const RECT16 *rect, - const RECT16 *clipRect, HRGN16 hrgnUpdate, - LPRECT16 rcUpdate, UINT16 flags ) +INT16 WINAPI ScrollWindowEx16( HWND16 hwnd, INT16 dx, INT16 dy, + const RECT16 *rect, const RECT16 *clipRect, + HRGN16 hrgnUpdate, LPRECT16 rcUpdate, + UINT16 flags ) { RECT32 rect32, clipRect32, rcUpdate32; BOOL16 ret; @@ -313,7 +318,7 @@ /************************************************************************* * SCROLL_FixCaret */ -BOOL32 SCROLL_FixCaret(HWND32 hWnd, LPRECT32 lprc, UINT32 flags) +static BOOL32 SCROLL_FixCaret(HWND32 hWnd, LPRECT32 lprc, UINT32 flags) { HWND32 hCaret = CARET_GetHwnd(); @@ -341,10 +346,13 @@ /************************************************************************* * ScrollWindowEx32 (USER32.450) + * + * NOTE: Use this function instead of ScrollWindow32 */ -INT32 ScrollWindowEx32( HWND32 hwnd, INT32 dx, INT32 dy, const RECT32 *rect, - const RECT32 *clipRect, HRGN32 hrgnUpdate, - LPRECT32 rcUpdate, UINT32 flags ) +INT32 WINAPI ScrollWindowEx32( HWND32 hwnd, INT32 dx, INT32 dy, + const RECT32 *rect, const RECT32 *clipRect, + HRGN32 hrgnUpdate, LPRECT32 rcUpdate, + UINT32 flags ) { INT32 retVal = NULLREGION; BOOL32 bCaret = FALSE, bOwnRgn = TRUE; @@ -390,12 +398,14 @@ if( dy > 0 ) dst.y = (src.y = dc->w.DCOrgY + cliprc.top) + dy; else src.y = (dst.y = dc->w.DCOrgY + cliprc.top) - dy; - if( bUpdate ) - XSetGraphicsExposures( display, dc->u.x.gc, True ); + if( bUpdate ) /* handles non-Wine windows hanging over the scrolled area */ + XSetGraphicsExposures( display, dc->u.x.gc, True ); + XSetFunction( display, dc->u.x.gc, GXcopy ); XCopyArea( display, dc->u.x.drawable, dc->u.x.drawable, dc->u.x.gc, src.x, src.y, cliprc.right - cliprc.left - abs(dx), cliprc.bottom - cliprc.top - abs(dy), dst.x, dst.y ); + if( bUpdate ) XSetGraphicsExposures( display, dc->u.x.gc, False ); @@ -434,7 +444,7 @@ for( w = wnd->child; w; w = w->next ) { CONV_RECT16TO32( &w->rectWindow, &r ); - if( IntersectRect32(&r, &r, &cliprc) ) + if( !clipRect || IntersectRect32(&r, &r, &cliprc) ) SetWindowPos32(w->hwndSelf, 0, w->rectWindow.left + dx, w->rectWindow.top + dy, 0,0, SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOREDRAW | @@ -443,8 +453,8 @@ } if( flags & (SW_INVALIDATE | SW_ERASE) ) - PAINT_RedrawWindow( hwnd, NULL, hrgnUpdate, RDW_INVALIDATE | RDW_ERASE | - ((flags & SW_ERASE) ? RDW_ERASENOW : 0), 0 ); + PAINT_RedrawWindow( hwnd, NULL, hrgnUpdate, RDW_INVALIDATE | RDW_ERASE | + ((flags & SW_ERASE) ? RDW_ERASENOW : 0) | ((flags & SW_SCROLLCHILDREN) ? RDW_ALLCHILDREN : 0 ), 0 ); if( bCaret ) {
diff --git a/windows/syscolor.c b/windows/syscolor.c index 14d06ea..9f86835 100644 --- a/windows/syscolor.c +++ b/windows/syscolor.c
@@ -175,7 +175,7 @@ /************************************************************************* * GetSysColor16 (USER.180) */ -COLORREF GetSysColor16( INT16 nIndex ) +COLORREF WINAPI GetSysColor16( INT16 nIndex ) { return SysColors[nIndex]; } @@ -184,7 +184,7 @@ /************************************************************************* * GetSysColor32 (USER32.288) */ -COLORREF GetSysColor32( INT32 nIndex ) +COLORREF WINAPI GetSysColor32( INT32 nIndex ) { return SysColors[nIndex]; } @@ -193,8 +193,8 @@ /************************************************************************* * SetSysColors16 (USER.181) */ -VOID SetSysColors16( INT16 nChanges, const INT16 *lpSysColor, - const COLORREF *lpColorValues ) +VOID WINAPI SetSysColors16( INT16 nChanges, const INT16 *lpSysColor, + const COLORREF *lpColorValues ) { int i; @@ -217,8 +217,8 @@ /************************************************************************* * SetSysColors32 (USER32.504) */ -BOOL32 SetSysColors32( INT32 nChanges, const INT32 *lpSysColor, - const COLORREF *lpColorValues ) +BOOL32 WINAPI SetSysColors32( INT32 nChanges, const INT32 *lpSysColor, + const COLORREF *lpColorValues ) { int i;
diff --git a/windows/sysmetrics.c b/windows/sysmetrics.c index 525088e..58fd85d 100644 --- a/windows/sysmetrics.c +++ b/windows/sysmetrics.c
@@ -136,7 +136,7 @@ /*********************************************************************** * GetSystemMetrics16 (USER.179) */ -INT16 GetSystemMetrics16( INT16 index ) +INT16 WINAPI GetSystemMetrics16( INT16 index ) { if ((index < 0) || (index > SM_CMETRICS)) return 0; else return sysMetrics[index]; @@ -146,7 +146,7 @@ /*********************************************************************** * GetSystemMetrics32 (USER32.291) */ -INT32 GetSystemMetrics32( INT32 index ) +INT32 WINAPI GetSystemMetrics32( INT32 index ) { if ((index < 0) || (index > SM_CMETRICS)) return 0; else return sysMetrics[index];
diff --git a/windows/timer.c b/windows/timer.c index b08e892..a28a375 100644 --- a/windows/timer.c +++ b/windows/timer.c
@@ -301,7 +301,8 @@ /*********************************************************************** * SetTimer16 (USER.10) */ -UINT16 SetTimer16( HWND16 hwnd, UINT16 id, UINT16 timeout, TIMERPROC16 proc ) +UINT16 WINAPI SetTimer16( HWND16 hwnd, UINT16 id, UINT16 timeout, + TIMERPROC16 proc ) { dprintf_timer( stddeb, "SetTimer16: %04x %d %d %08lx\n", hwnd, id, timeout, (LONG)proc ); @@ -313,7 +314,8 @@ /*********************************************************************** * SetTimer32 (USER32.510) */ -UINT32 SetTimer32( HWND32 hwnd, UINT32 id, UINT32 timeout, TIMERPROC32 proc ) +UINT32 WINAPI SetTimer32( HWND32 hwnd, UINT32 id, UINT32 timeout, + TIMERPROC32 proc ) { dprintf_timer( stddeb, "SetTimer32: %04x %d %d %08lx\n", hwnd, id, timeout, (LONG)proc ); @@ -325,8 +327,8 @@ /*********************************************************************** * SetSystemTimer16 (USER.11) */ -UINT16 SetSystemTimer16( HWND16 hwnd, UINT16 id, UINT16 timeout, - TIMERPROC16 proc ) +UINT16 WINAPI SetSystemTimer16( HWND16 hwnd, UINT16 id, UINT16 timeout, + TIMERPROC16 proc ) { dprintf_timer( stddeb, "SetSystemTimer16: %04x %d %d %08lx\n", hwnd, id, timeout, (LONG)proc ); @@ -338,8 +340,8 @@ /*********************************************************************** * SetSystemTimer32 (USER32.508) */ -UINT32 SetSystemTimer32( HWND32 hwnd, UINT32 id, UINT32 timeout, - TIMERPROC32 proc ) +UINT32 WINAPI SetSystemTimer32( HWND32 hwnd, UINT32 id, UINT32 timeout, + TIMERPROC32 proc ) { dprintf_timer( stddeb, "SetSystemTimer32: %04x %d %d %08lx\n", hwnd, id, timeout, (LONG)proc ); @@ -351,7 +353,7 @@ /*********************************************************************** * KillTimer16 (USER.12) */ -BOOL16 KillTimer16( HWND16 hwnd, UINT16 id ) +BOOL16 WINAPI KillTimer16( HWND16 hwnd, UINT16 id ) { dprintf_timer(stddeb, "KillTimer16: %04x %d\n", hwnd, id ); return TIMER_KillTimer( hwnd, id, FALSE ); @@ -361,7 +363,7 @@ /*********************************************************************** * KillTimer32 (USER32.353) */ -BOOL32 KillTimer32( HWND32 hwnd, UINT32 id ) +BOOL32 WINAPI KillTimer32( HWND32 hwnd, UINT32 id ) { dprintf_timer(stddeb, "KillTimer32: %04x %d\n", hwnd, id ); return TIMER_KillTimer( hwnd, id, FALSE ); @@ -371,7 +373,7 @@ /*********************************************************************** * KillSystemTimer16 (USER.182) */ -BOOL16 KillSystemTimer16( HWND16 hwnd, UINT16 id ) +BOOL16 WINAPI KillSystemTimer16( HWND16 hwnd, UINT16 id ) { dprintf_timer( stddeb, "KillSystemTimer16: %04x %d\n", hwnd, id ); return TIMER_KillTimer( hwnd, id, TRUE ); @@ -381,7 +383,7 @@ /*********************************************************************** * KillSystemTimer32 (USER32.352) */ -BOOL32 KillSystemTimer32( HWND32 hwnd, UINT32 id ) +BOOL32 WINAPI KillSystemTimer32( HWND32 hwnd, UINT32 id ) { dprintf_timer( stddeb, "KillSystemTimer32: %04x %d\n", hwnd, id ); return TIMER_KillTimer( hwnd, id, TRUE );
diff --git a/windows/user.c b/windows/user.c index 44edddf..8c7c9a5 100644 --- a/windows/user.c +++ b/windows/user.c
@@ -28,7 +28,7 @@ /*********************************************************************** * GetFreeSystemResources (USER.284) */ -WORD GetFreeSystemResources( WORD resType ) +WORD WINAPI GetFreeSystemResources( WORD resType ) { int userPercent, gdiPercent; @@ -63,7 +63,7 @@ /*********************************************************************** * SystemHeapInfo (TOOLHELP.71) */ -BOOL16 SystemHeapInfo( SYSHEAPINFO *pHeapInfo ) +BOOL16 WINAPI SystemHeapInfo( SYSHEAPINFO *pHeapInfo ) { pHeapInfo->wUserFreePercent = GetFreeSystemResources( GFSR_USERRESOURCES ); pHeapInfo->wGDIFreePercent = GetFreeSystemResources( GFSR_GDIRESOURCES ); @@ -76,7 +76,7 @@ /*********************************************************************** * TimerCount (TOOLHELP.80) */ -BOOL16 TimerCount( TIMERINFO *pTimerInfo ) +BOOL16 WINAPI TimerCount( TIMERINFO *pTimerInfo ) { /* FIXME * In standard mode, dwmsSinceStart = dwmsThisVM @@ -97,7 +97,7 @@ /********************************************************************** * InitApp (USER.5) */ -INT16 InitApp( HINSTANCE16 hInstance ) +INT16 WINAPI InitApp( HINSTANCE16 hInstance ) { int queueSize; @@ -162,7 +162,7 @@ /*********************************************************************** * ExitWindows16 (USER.7) */ -BOOL16 ExitWindows16( DWORD dwReturnCode, UINT16 wReserved ) +BOOL16 WINAPI ExitWindows16( DWORD dwReturnCode, UINT16 wReserved ) { return ExitWindowsEx( EWX_LOGOFF, 0xffffffff ); } @@ -171,7 +171,7 @@ /*********************************************************************** * ExitWindowsExec16 (USER.246) */ -BOOL16 ExitWindowsExec16( LPCSTR lpszExe, LPCSTR lpszParams ) +BOOL16 WINAPI ExitWindowsExec16( LPCSTR lpszExe, LPCSTR lpszParams ) { fprintf(stdnimp, "ExitWindowsExec() : Should run the following in DOS-mode :\n\t\"%s %s\"\n", lpszExe, lpszParams); @@ -182,7 +182,7 @@ /*********************************************************************** * ExitWindowsEx (USER32.195) */ -BOOL32 ExitWindowsEx( UINT32 flags, DWORD reserved ) +BOOL32 WINAPI ExitWindowsEx( UINT32 flags, DWORD reserved ) { int i; BOOL32 result;
diff --git a/windows/win.c b/windows/win.c index 3200d5a..9f4375b 100644 --- a/windows/win.c +++ b/windows/win.c
@@ -97,7 +97,7 @@ fprintf( stderr, "Window %04x (%p):\n", hwnd, ptr ); fprintf( stderr, "next=%p child=%p parent=%p owner=%p class=%p '%s'\n" - "inst=%04x taskQ=%04x updRgn=%04x active=%04x dce=%p idmenu=%04x\n" + "inst=%04x taskQ=%04x updRgn=%04x active=%04x dce=%p idmenu=%08x\n" "style=%08lx exstyle=%08lx wndproc=%08x text='%s'\n" "client=%d,%d-%d,%d window=%d,%d-%d,%d" "sysmenu=%04x flags=%04x props=%p vscroll=%p hscroll=%p\n", @@ -544,7 +544,7 @@ if (!cs->hwndParent || (cs->hwndParent == pWndDesktop->hwndSelf)) wndPtr->owner = NULL; else - wndPtr->owner = WIN_FindWndPtr(WIN_GetTopParent(cs->hwndParent)); + wndPtr->owner = WIN_GetTopParentPtr(WIN_FindWndPtr(cs->hwndParent)); } wndPtr->window = 0; @@ -692,7 +692,7 @@ /* Set the window menu */ - if ((cs->style & WS_CAPTION) && !(cs->style & WS_CHILD)) + if ((wndPtr->dwStyle & (WS_CAPTION | WS_CHILD)) == WS_CAPTION ) { if (cs->hMenu) SetMenu32(hwnd, cs->hMenu); else @@ -786,10 +786,10 @@ /*********************************************************************** * CreateWindow16 (USER.41) */ -HWND16 CreateWindow16( LPCSTR className, LPCSTR windowName, - DWORD style, INT16 x, INT16 y, INT16 width, - INT16 height, HWND16 parent, HMENU16 menu, - HINSTANCE16 instance, LPVOID data ) +HWND16 WINAPI CreateWindow16( LPCSTR className, LPCSTR windowName, + DWORD style, INT16 x, INT16 y, INT16 width, + INT16 height, HWND16 parent, HMENU16 menu, + HINSTANCE16 instance, LPVOID data ) { return CreateWindowEx16( 0, className, windowName, style, x, y, width, height, parent, menu, instance, data ); @@ -799,10 +799,11 @@ /*********************************************************************** * CreateWindowEx16 (USER.452) */ -HWND16 CreateWindowEx16( DWORD exStyle, LPCSTR className, LPCSTR windowName, - DWORD style, INT16 x, INT16 y, INT16 width, - INT16 height, HWND16 parent, HMENU16 menu, - HINSTANCE16 instance, LPVOID data ) +HWND16 WINAPI CreateWindowEx16( DWORD exStyle, LPCSTR className, + LPCSTR windowName, DWORD style, INT16 x, + INT16 y, INT16 width, INT16 height, + HWND16 parent, HMENU16 menu, + HINSTANCE16 instance, LPVOID data ) { ATOM classAtom; CREATESTRUCT32A cs; @@ -841,10 +842,11 @@ /*********************************************************************** * CreateWindowEx32A (USER32.82) */ -HWND32 CreateWindowEx32A( DWORD exStyle, LPCSTR className, LPCSTR windowName, - DWORD style, INT32 x, INT32 y, INT32 width, - INT32 height, HWND32 parent, HMENU32 menu, - HINSTANCE32 instance, LPVOID data ) +HWND32 WINAPI CreateWindowEx32A( DWORD exStyle, LPCSTR className, + LPCSTR windowName, DWORD style, INT32 x, + INT32 y, INT32 width, INT32 height, + HWND32 parent, HMENU32 menu, + HINSTANCE32 instance, LPVOID data ) { ATOM classAtom; CREATESTRUCT32A cs; @@ -880,10 +882,11 @@ /*********************************************************************** * CreateWindowEx32W (USER32.83) */ -HWND32 CreateWindowEx32W( DWORD exStyle, LPCWSTR className, LPCWSTR windowName, - DWORD style, INT32 x, INT32 y, INT32 width, - INT32 height, HWND32 parent, HMENU32 menu, - HINSTANCE32 instance, LPVOID data ) +HWND32 WINAPI CreateWindowEx32W( DWORD exStyle, LPCWSTR className, + LPCWSTR windowName, DWORD style, INT32 x, + INT32 y, INT32 width, INT32 height, + HWND32 parent, HMENU32 menu, + HINSTANCE32 instance, LPVOID data ) { ATOM classAtom; CREATESTRUCT32W cs; @@ -963,16 +966,18 @@ /*********************************************************************** - * DestroyWindow (USER.53) + * DestroyWindow16 (USER.53) */ -BOOL16 DestroyWindow16( HWND16 hwnd ) +BOOL16 WINAPI DestroyWindow16( HWND16 hwnd ) { return DestroyWindow32(hwnd); } + + /*********************************************************************** - * DestroyWindow (USER32.134) + * DestroyWindow32 (USER32.134) */ -BOOL32 DestroyWindow32( HWND32 hwnd ) +BOOL32 WINAPI DestroyWindow32( HWND32 hwnd ) { WND * wndPtr; @@ -1060,7 +1065,7 @@ /*********************************************************************** * CloseWindow16 (USER.43) */ -BOOL16 CloseWindow16( HWND16 hwnd ) +BOOL16 WINAPI CloseWindow16( HWND16 hwnd ) { return CloseWindow32( hwnd ); } @@ -1069,7 +1074,7 @@ /*********************************************************************** * CloseWindow32 (USER32.55) */ -BOOL32 CloseWindow32( HWND32 hwnd ) +BOOL32 WINAPI CloseWindow32( HWND32 hwnd ) { WND * wndPtr = WIN_FindWndPtr( hwnd ); if (!wndPtr || (wndPtr->dwStyle & WS_CHILD)) return FALSE; @@ -1081,7 +1086,7 @@ /*********************************************************************** * OpenIcon16 (USER.44) */ -BOOL16 OpenIcon16( HWND16 hwnd ) +BOOL16 WINAPI OpenIcon16( HWND16 hwnd ) { return OpenIcon32( hwnd ); } @@ -1090,7 +1095,7 @@ /*********************************************************************** * OpenIcon32 (USER32.409) */ -BOOL32 OpenIcon32( HWND32 hwnd ) +BOOL32 WINAPI OpenIcon32( HWND32 hwnd ) { if (!IsIconic32( hwnd )) return FALSE; ShowWindow32( hwnd, SW_SHOWNORMAL ); @@ -1158,7 +1163,7 @@ /*********************************************************************** * FindWindow16 (USER.50) */ -HWND16 FindWindow16( SEGPTR className, LPCSTR title ) +HWND16 WINAPI FindWindow16( SEGPTR className, LPCSTR title ) { return FindWindowEx16( 0, 0, className, title ); } @@ -1167,8 +1172,8 @@ /*********************************************************************** * FindWindowEx16 (USER.427) */ -HWND16 FindWindowEx16( HWND16 parent, HWND16 child, - SEGPTR className, LPCSTR title ) +HWND16 WINAPI FindWindowEx16( HWND16 parent, HWND16 child, + SEGPTR className, LPCSTR title ) { ATOM atom = 0; @@ -1189,7 +1194,7 @@ /*********************************************************************** * FindWindow32A (USER32.197) */ -HWND32 FindWindow32A( LPCSTR className, LPCSTR title ) +HWND32 WINAPI FindWindow32A( LPCSTR className, LPCSTR title ) { return FindWindowEx32A( 0, 0, className, title ); } @@ -1198,8 +1203,8 @@ /*********************************************************************** * FindWindowEx32A (USER32.198) */ -HWND32 FindWindowEx32A( HWND32 parent, HWND32 child, - LPCSTR className, LPCSTR title ) +HWND32 WINAPI FindWindowEx32A( HWND32 parent, HWND32 child, + LPCSTR className, LPCSTR title ) { ATOM atom = 0; @@ -1216,8 +1221,8 @@ /*********************************************************************** * FindWindowEx32W (USER32.199) */ -HWND32 FindWindowEx32W( HWND32 parent, HWND32 child, - LPCWSTR className, LPCWSTR title ) +HWND32 WINAPI FindWindowEx32W( HWND32 parent, HWND32 child, + LPCWSTR className, LPCWSTR title ) { ATOM atom = 0; char *buffer; @@ -1239,7 +1244,7 @@ /*********************************************************************** * FindWindow32W (USER32.200) */ -HWND32 FindWindow32W( LPCWSTR className, LPCWSTR title ) +HWND32 WINAPI FindWindow32W( LPCWSTR className, LPCWSTR title ) { return FindWindowEx32W( 0, 0, className, title ); } @@ -1257,7 +1262,7 @@ /********************************************************************** * GetDesktopWindow16 (USER.286) */ -HWND16 GetDesktopWindow16(void) +HWND16 WINAPI GetDesktopWindow16(void) { return (HWND16)pWndDesktop->hwndSelf; } @@ -1266,7 +1271,7 @@ /********************************************************************** * GetDesktopWindow32 (USER32.231) */ -HWND32 GetDesktopWindow32(void) +HWND32 WINAPI GetDesktopWindow32(void) { return pWndDesktop->hwndSelf; } @@ -1278,7 +1283,7 @@ * Exactly the same thing as GetDesktopWindow(), but not documented. * Don't ask me why... */ -HWND16 GetDesktopHwnd(void) +HWND16 WINAPI GetDesktopHwnd(void) { return (HWND16)pWndDesktop->hwndSelf; } @@ -1287,7 +1292,7 @@ /******************************************************************* * EnableWindow16 (USER.34) */ -BOOL16 EnableWindow16( HWND16 hwnd, BOOL16 enable ) +BOOL16 WINAPI EnableWindow16( HWND16 hwnd, BOOL16 enable ) { return EnableWindow32( hwnd, enable ); } @@ -1296,7 +1301,7 @@ /******************************************************************* * EnableWindow32 (USER32.171) */ -BOOL32 EnableWindow32( HWND32 hwnd, BOOL32 enable ) +BOOL32 WINAPI EnableWindow32( HWND32 hwnd, BOOL32 enable ) { WND *wndPtr; @@ -1326,7 +1331,7 @@ /*********************************************************************** * IsWindowEnabled16 (USER.35) */ -BOOL16 IsWindowEnabled16(HWND16 hWnd) +BOOL16 WINAPI IsWindowEnabled16(HWND16 hWnd) { return IsWindowEnabled32(hWnd); } @@ -1335,7 +1340,7 @@ /*********************************************************************** * IsWindowEnabled32 (USER32.348) */ -BOOL32 IsWindowEnabled32(HWND32 hWnd) +BOOL32 WINAPI IsWindowEnabled32(HWND32 hWnd) { WND * wndPtr; @@ -1347,7 +1352,7 @@ /*********************************************************************** * IsWindowUnicode (USER32.349) */ -BOOL32 IsWindowUnicode( HWND32 hwnd ) +BOOL32 WINAPI IsWindowUnicode( HWND32 hwnd ) { WND * wndPtr; @@ -1359,7 +1364,7 @@ /********************************************************************** * GetWindowWord16 (USER.133) */ -WORD GetWindowWord16( HWND16 hwnd, INT16 offset ) +WORD WINAPI GetWindowWord16( HWND16 hwnd, INT16 offset ) { return GetWindowWord32( hwnd, offset ); } @@ -1368,7 +1373,7 @@ /********************************************************************** * GetWindowWord32 (USER32.313) */ -WORD GetWindowWord32( HWND32 hwnd, INT32 offset ) +WORD WINAPI GetWindowWord32( HWND32 hwnd, INT32 offset ) { WND * wndPtr = WIN_FindWndPtr( hwnd ); if (!wndPtr) return 0; @@ -1383,7 +1388,7 @@ } switch(offset) { - case GWW_ID: return wndPtr->wIDmenu; + case GWW_ID: return (WORD)wndPtr->wIDmenu; case GWW_HWNDPARENT: return wndPtr->parent ? wndPtr->parent->hwndSelf : 0; case GWW_HINSTANCE: return (WORD)wndPtr->hInstance; default: @@ -1407,7 +1412,7 @@ /********************************************************************** * SetWindowWord16 (USER.134) */ -WORD SetWindowWord16( HWND16 hwnd, INT16 offset, WORD newval ) +WORD WINAPI SetWindowWord16( HWND16 hwnd, INT16 offset, WORD newval ) { return SetWindowWord32( hwnd, offset, newval ); } @@ -1416,7 +1421,7 @@ /********************************************************************** * SetWindowWord32 (USER32.523) */ -WORD SetWindowWord32( HWND32 hwnd, INT32 offset, WORD newval ) +WORD WINAPI SetWindowWord32( HWND32 hwnd, INT32 offset, WORD newval ) { WORD *ptr, retval; WND * wndPtr = WIN_FindWndPtr( hwnd ); @@ -1473,7 +1478,7 @@ case GWL_USERDATA: return wndPtr->userdata; case GWL_STYLE: return wndPtr->dwStyle; case GWL_EXSTYLE: return wndPtr->dwExStyle; - case GWL_ID: return wndPtr->wIDmenu; + case GWL_ID: return (LONG)wndPtr->wIDmenu; case GWL_WNDPROC: return (LONG)WINPROC_GetProc( wndPtr->winproc, type ); case GWL_HWNDPARENT: return wndPtr->parent ? @@ -1548,7 +1553,7 @@ /********************************************************************** * GetWindowLong16 (USER.135) */ -LONG GetWindowLong16( HWND16 hwnd, INT16 offset ) +LONG WINAPI GetWindowLong16( HWND16 hwnd, INT16 offset ) { return WIN_GetWindowLong( (HWND32)hwnd, offset, WIN_PROC_16 ); } @@ -1557,7 +1562,7 @@ /********************************************************************** * GetWindowLong32A (USER32.304) */ -LONG GetWindowLong32A( HWND32 hwnd, INT32 offset ) +LONG WINAPI GetWindowLong32A( HWND32 hwnd, INT32 offset ) { return WIN_GetWindowLong( hwnd, offset, WIN_PROC_32A ); } @@ -1566,7 +1571,7 @@ /********************************************************************** * GetWindowLong32W (USER32.305) */ -LONG GetWindowLong32W( HWND32 hwnd, INT32 offset ) +LONG WINAPI GetWindowLong32W( HWND32 hwnd, INT32 offset ) { return WIN_GetWindowLong( hwnd, offset, WIN_PROC_32W ); } @@ -1575,7 +1580,7 @@ /********************************************************************** * SetWindowLong16 (USER.136) */ -LONG SetWindowLong16( HWND16 hwnd, INT16 offset, LONG newval ) +LONG WINAPI SetWindowLong16( HWND16 hwnd, INT16 offset, LONG newval ) { return WIN_SetWindowLong( hwnd, offset, newval, WIN_PROC_16 ); } @@ -1584,7 +1589,7 @@ /********************************************************************** * SetWindowLong32A (USER32.516) */ -LONG SetWindowLong32A( HWND32 hwnd, INT32 offset, LONG newval ) +LONG WINAPI SetWindowLong32A( HWND32 hwnd, INT32 offset, LONG newval ) { return WIN_SetWindowLong( hwnd, offset, newval, WIN_PROC_32A ); } @@ -1593,7 +1598,7 @@ /********************************************************************** * SetWindowLong32W (USER32.517) */ -LONG SetWindowLong32W( HWND32 hwnd, INT32 offset, LONG newval ) +LONG WINAPI SetWindowLong32W( HWND32 hwnd, INT32 offset, LONG newval ) { return WIN_SetWindowLong( hwnd, offset, newval, WIN_PROC_32W ); } @@ -1602,7 +1607,7 @@ /******************************************************************* * GetWindowText16 (USER.36) */ -INT16 GetWindowText16( HWND16 hwnd, SEGPTR lpString, INT16 nMaxCount ) +INT16 WINAPI GetWindowText16( HWND16 hwnd, SEGPTR lpString, INT16 nMaxCount ) { return (INT16)SendMessage16(hwnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString); } @@ -1611,7 +1616,7 @@ /******************************************************************* * GetWindowText32A (USER32.308) */ -INT32 GetWindowText32A( HWND32 hwnd, LPSTR lpString, INT32 nMaxCount ) +INT32 WINAPI GetWindowText32A( HWND32 hwnd, LPSTR lpString, INT32 nMaxCount ) { return (INT32)SendMessage32A( hwnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString ); @@ -1621,7 +1626,7 @@ /******************************************************************* * GetWindowText32W (USER32.311) */ -INT32 GetWindowText32W( HWND32 hwnd, LPWSTR lpString, INT32 nMaxCount ) +INT32 WINAPI GetWindowText32W( HWND32 hwnd, LPWSTR lpString, INT32 nMaxCount ) { return (INT32)SendMessage32W( hwnd, WM_GETTEXT, nMaxCount, (LPARAM)lpString ); @@ -1631,25 +1636,25 @@ /******************************************************************* * SetWindowText16 (USER.37) */ -void SetWindowText16( HWND16 hwnd, SEGPTR lpString ) +void WINAPI SetWindowText16( HWND16 hwnd, SEGPTR lpString ) { SendMessage16( hwnd, WM_SETTEXT, 0, (LPARAM)lpString ); } /******************************************************************* - * SetWindowText32A (USER32.) + * SetWindowText32A (USER32.521) */ -void SetWindowText32A( HWND32 hwnd, LPCSTR lpString ) +void WINAPI SetWindowText32A( HWND32 hwnd, LPCSTR lpString ) { SendMessage32A( hwnd, WM_SETTEXT, 0, (LPARAM)lpString ); } /******************************************************************* - * SetWindowText32W (USER32.) + * SetWindowText32W (USER32.522) */ -void SetWindowText32W( HWND32 hwnd, LPCWSTR lpString ) +void WINAPI SetWindowText32W( HWND32 hwnd, LPCWSTR lpString ) { SendMessage32W( hwnd, WM_SETTEXT, 0, (LPARAM)lpString ); } @@ -1658,7 +1663,7 @@ /******************************************************************* * GetWindowTextLength16 (USER.38) */ -INT16 GetWindowTextLength16( HWND16 hwnd ) +INT16 WINAPI GetWindowTextLength16( HWND16 hwnd ) { return (INT16)SendMessage16( hwnd, WM_GETTEXTLENGTH, 0, 0 ); } @@ -1667,7 +1672,7 @@ /******************************************************************* * GetWindowTextLength32A (USER32.309) */ -INT32 GetWindowTextLength32A( HWND32 hwnd ) +INT32 WINAPI GetWindowTextLength32A( HWND32 hwnd ) { return SendMessage32A( hwnd, WM_GETTEXTLENGTH, 0, 0 ); } @@ -1675,7 +1680,7 @@ /******************************************************************* * GetWindowTextLength32W (USER32.309) */ -INT32 GetWindowTextLength32W( HWND32 hwnd ) +INT32 WINAPI GetWindowTextLength32W( HWND32 hwnd ) { return SendMessage32W( hwnd, WM_GETTEXTLENGTH, 0, 0 ); } @@ -1684,7 +1689,7 @@ /******************************************************************* * IsWindow16 (USER.47) */ -BOOL16 IsWindow16( HWND16 hwnd ) +BOOL16 WINAPI IsWindow16( HWND16 hwnd ) { return IsWindow32( hwnd ); } @@ -1693,7 +1698,7 @@ /******************************************************************* * IsWindow32 (USER32.347) */ -BOOL32 IsWindow32( HWND32 hwnd ) +BOOL32 WINAPI IsWindow32( HWND32 hwnd ) { WND * wndPtr = WIN_FindWndPtr( hwnd ); return ((wndPtr != NULL) && (wndPtr->dwMagic == WND_MAGIC)); @@ -1703,7 +1708,7 @@ /***************************************************************** * GetParent16 (USER.46) */ -HWND16 GetParent16( HWND16 hwnd ) +HWND16 WINAPI GetParent16( HWND16 hwnd ) { return (HWND16)GetParent32( hwnd ); } @@ -1712,7 +1717,7 @@ /***************************************************************** * GetParent32 (USER32.277) */ -HWND32 GetParent32( HWND32 hwnd ) +HWND32 WINAPI GetParent32( HWND32 hwnd ) { WND *wndPtr = WIN_FindWndPtr(hwnd); if (!wndPtr) return 0; @@ -1720,6 +1725,16 @@ return wndPtr ? wndPtr->hwndSelf : 0; } +/***************************************************************** + * WIN_GetTopParent + * + * Get the top-level parent for a child window. + */ +WND* WIN_GetTopParentPtr( WND* pWnd ) +{ + while( pWnd && (pWnd->dwStyle & WS_CHILD)) pWnd = pWnd->parent; + return pWnd; +} /***************************************************************** * WIN_GetTopParent @@ -1728,8 +1743,7 @@ */ HWND32 WIN_GetTopParent( HWND32 hwnd ) { - WND *wndPtr = WIN_FindWndPtr( hwnd ); - while (wndPtr && (wndPtr->dwStyle & WS_CHILD)) wndPtr = wndPtr->parent; + WND *wndPtr = WIN_GetTopParentPtr ( WIN_FindWndPtr( hwnd ) ); return wndPtr ? wndPtr->hwndSelf : 0; } @@ -1737,7 +1751,7 @@ /***************************************************************** * SetParent16 (USER.233) */ -HWND16 SetParent16( HWND16 hwndChild, HWND16 hwndNewParent ) +HWND16 WINAPI SetParent16( HWND16 hwndChild, HWND16 hwndNewParent ) { return SetParent32( hwndChild, hwndNewParent ); } @@ -1746,7 +1760,7 @@ /***************************************************************** * SetParent32 (USER32.494) */ -HWND32 SetParent32( HWND32 hwndChild, HWND32 hwndNewParent ) +HWND32 WINAPI SetParent32( HWND32 hwndChild, HWND32 hwndNewParent ) { HWND32 oldParent; @@ -1769,7 +1783,7 @@ /******************************************************************* * IsChild16 (USER.48) */ -BOOL16 IsChild16( HWND16 parent, HWND16 child ) +BOOL16 WINAPI IsChild16( HWND16 parent, HWND16 child ) { return IsChild32(parent,child); } @@ -1778,7 +1792,7 @@ /******************************************************************* * IsChild32 (USER32.338) */ -BOOL32 IsChild32( HWND32 parent, HWND32 child ) +BOOL32 WINAPI IsChild32( HWND32 parent, HWND32 child ) { WND * wndPtr = WIN_FindWndPtr( child ); while (wndPtr && (wndPtr->dwStyle & WS_CHILD)) @@ -1793,7 +1807,7 @@ /*********************************************************************** * IsWindowVisible16 (USER.49) */ -BOOL16 IsWindowVisible16( HWND16 hwnd ) +BOOL16 WINAPI IsWindowVisible16( HWND16 hwnd ) { return IsWindowVisible32(hwnd); } @@ -1802,7 +1816,7 @@ /*********************************************************************** * IsWindowVisible32 (USER32.350) */ -BOOL32 IsWindowVisible32( HWND32 hwnd ) +BOOL32 WINAPI IsWindowVisible32( HWND32 hwnd ) { WND *wndPtr = WIN_FindWndPtr( hwnd ); while (wndPtr && (wndPtr->dwStyle & WS_CHILD)) @@ -1836,7 +1850,7 @@ /******************************************************************* * GetTopWindow16 (USER.229) */ -HWND16 GetTopWindow16( HWND16 hwnd ) +HWND16 WINAPI GetTopWindow16( HWND16 hwnd ) { return GetTopWindow32(hwnd); } @@ -1845,7 +1859,7 @@ /******************************************************************* * GetTopWindow32 (USER.229) */ -HWND32 GetTopWindow32( HWND32 hwnd ) +HWND32 WINAPI GetTopWindow32( HWND32 hwnd ) { WND * wndPtr = WIN_FindWndPtr( hwnd ); if (wndPtr && wndPtr->child) return wndPtr->child->hwndSelf; @@ -1856,7 +1870,7 @@ /******************************************************************* * GetWindow16 (USER.262) */ -HWND16 GetWindow16( HWND16 hwnd, WORD rel ) +HWND16 WINAPI GetWindow16( HWND16 hwnd, WORD rel ) { return GetWindow32( hwnd,rel ); } @@ -1865,7 +1879,7 @@ /******************************************************************* * GetWindow32 (USER32.301) */ -HWND32 GetWindow32( HWND32 hwnd, WORD rel ) +HWND32 WINAPI GetWindow32( HWND32 hwnd, WORD rel ) { WND * wndPtr = WIN_FindWndPtr( hwnd ); if (!wndPtr) return 0; @@ -1908,7 +1922,7 @@ /******************************************************************* * GetNextWindow16 (USER.230) */ -HWND16 GetNextWindow16( HWND16 hwnd, WORD flag ) +HWND16 WINAPI GetNextWindow16( HWND16 hwnd, WORD flag ) { if ((flag != GW_HWNDNEXT) && (flag != GW_HWNDPREV)) return 0; return GetWindow16( hwnd, flag ); @@ -1917,7 +1931,7 @@ /******************************************************************* * ShowOwnedPopups16 (USER.265) */ -void ShowOwnedPopups16( HWND16 owner, BOOL16 fShow ) +void WINAPI ShowOwnedPopups16( HWND16 owner, BOOL16 fShow ) { ShowOwnedPopups32( owner, fShow ); } @@ -1926,7 +1940,7 @@ /******************************************************************* * ShowOwnedPopups32 (USER32.530) */ -BOOL32 ShowOwnedPopups32( HWND32 owner, BOOL32 fShow ) +BOOL32 WINAPI ShowOwnedPopups32( HWND32 owner, BOOL32 fShow ) { WND *pWnd = pWndDesktop->child; while (pWnd) @@ -1943,7 +1957,7 @@ /******************************************************************* * GetLastActivePopup16 (USER.287) */ -HWND16 GetLastActivePopup16( HWND16 hwnd ) +HWND16 WINAPI GetLastActivePopup16( HWND16 hwnd ) { return GetLastActivePopup32( hwnd ); } @@ -1951,7 +1965,7 @@ /******************************************************************* * GetLastActivePopup32 (USER32.255) */ -HWND32 GetLastActivePopup32( HWND32 hwnd ) +HWND32 WINAPI GetLastActivePopup32( HWND32 hwnd ) { WND *wndPtr; wndPtr = WIN_FindWndPtr(hwnd); @@ -2016,7 +2030,7 @@ /******************************************************************* * EnumWindows16 (USER.54) */ -BOOL16 EnumWindows16( WNDENUMPROC16 lpEnumFunc, LPARAM lParam ) +BOOL16 WINAPI EnumWindows16( WNDENUMPROC16 lpEnumFunc, LPARAM lParam ) { WND **list, **ppWnd; @@ -2042,7 +2056,7 @@ /******************************************************************* * EnumWindows32 (USER32.192) */ -BOOL32 EnumWindows32( WNDENUMPROC32 lpEnumFunc, LPARAM lParam ) +BOOL32 WINAPI EnumWindows32( WNDENUMPROC32 lpEnumFunc, LPARAM lParam ) { return (BOOL32)EnumWindows16( (WNDENUMPROC16)lpEnumFunc, lParam ); } @@ -2051,7 +2065,8 @@ /********************************************************************** * EnumTaskWindows16 (USER.225) */ -BOOL16 EnumTaskWindows16( HTASK16 hTask, WNDENUMPROC16 func, LPARAM lParam ) +BOOL16 WINAPI EnumTaskWindows16( HTASK16 hTask, WNDENUMPROC16 func, + LPARAM lParam ) { WND **list, **ppWnd; HQUEUE16 hQueue = GetTaskQueue( hTask ); @@ -2078,7 +2093,7 @@ /********************************************************************** * EnumThreadWindows (USER32.189) */ -BOOL32 EnumThreadWindows( DWORD id, WNDENUMPROC32 func, LPARAM lParam ) +BOOL32 WINAPI EnumThreadWindows( DWORD id, WNDENUMPROC32 func, LPARAM lParam ) { THDB *tdb = (THDB*)id; @@ -2116,7 +2131,8 @@ /********************************************************************** * EnumChildWindows16 (USER.55) */ -BOOL16 EnumChildWindows16( HWND16 parent, WNDENUMPROC16 func, LPARAM lParam ) +BOOL16 WINAPI EnumChildWindows16( HWND16 parent, WNDENUMPROC16 func, + LPARAM lParam ) { WND **list, *pParent; @@ -2131,7 +2147,8 @@ /********************************************************************** * EnumChildWindows32 (USER32.177) */ -BOOL32 EnumChildWindows32( HWND32 parent, WNDENUMPROC32 func, LPARAM lParam ) +BOOL32 WINAPI EnumChildWindows32( HWND32 parent, WNDENUMPROC32 func, + LPARAM lParam ) { return (BOOL32)EnumChildWindows16( (HWND16)parent, (WNDENUMPROC16)func, lParam ); @@ -2141,7 +2158,7 @@ /******************************************************************* * AnyPopup16 (USER.52) */ -BOOL16 AnyPopup16(void) +BOOL16 WINAPI AnyPopup16(void) { return AnyPopup32(); } @@ -2150,7 +2167,7 @@ /******************************************************************* * AnyPopup32 (USER32.3) */ -BOOL32 AnyPopup32(void) +BOOL32 WINAPI AnyPopup32(void) { WND *wndPtr; for (wndPtr = pWndDesktop->child; wndPtr; wndPtr = wndPtr->next) @@ -2162,7 +2179,7 @@ /******************************************************************* * FlashWindow16 (USER.105) */ -BOOL16 FlashWindow16( HWND16 hWnd, BOOL16 bInvert ) +BOOL16 WINAPI FlashWindow16( HWND16 hWnd, BOOL16 bInvert ) { return FlashWindow32( hWnd, bInvert ); } @@ -2171,7 +2188,7 @@ /******************************************************************* * FlashWindow32 (USER32.201) */ -BOOL32 FlashWindow32( HWND32 hWnd, BOOL32 bInvert ) +BOOL32 WINAPI FlashWindow32( HWND32 hWnd, BOOL32 bInvert ) { WND *wndPtr = WIN_FindWndPtr(hWnd); @@ -2214,7 +2231,7 @@ /******************************************************************* * SetSysModalWindow16 (USER.188) */ -HWND16 SetSysModalWindow16( HWND16 hWnd ) +HWND16 WINAPI SetSysModalWindow16( HWND16 hWnd ) { HWND32 hWndOldModal = hwndSysModal; hwndSysModal = hWnd; @@ -2226,7 +2243,7 @@ /******************************************************************* * GetSysModalWindow16 (USER.52) */ -HWND16 GetSysModalWindow16(void) +HWND16 WINAPI GetSysModalWindow16(void) { return hwndSysModal; } @@ -2307,7 +2324,7 @@ /******************************************************************* * DragDetect (USER.465) */ -BOOL16 DragDetect16( HWND16 hWnd, POINT16 pt ) +BOOL16 WINAPI DragDetect16( HWND16 hWnd, POINT16 pt ) { POINT32 pt32; CONV_POINT16TO32( &pt, &pt32 ); @@ -2317,7 +2334,7 @@ /******************************************************************* * DragDetect32 (USER32.150) */ -BOOL32 DragDetect32( HWND32 hWnd, POINT32 pt ) +BOOL32 WINAPI DragDetect32( HWND32 hWnd, POINT32 pt ) { MSG16 msg; RECT16 rect; @@ -2356,8 +2373,8 @@ /****************************************************************************** * DragObject16 (USER.464) */ -DWORD DragObject16( HWND16 hwndScope, HWND16 hWnd, UINT16 wObj, - HANDLE16 hOfStruct, WORD szList, HCURSOR16 hCursor ) +DWORD WINAPI DragObject16( HWND16 hwndScope, HWND16 hWnd, UINT16 wObj, + HANDLE16 hOfStruct, WORD szList, HCURSOR16 hCursor ) { MSG16 msg; LPDRAGINFO lpDragInfo;
diff --git a/windows/winhelp.c b/windows/winhelp.c index 49ae2ca..856d2d5 100644 --- a/windows/winhelp.c +++ b/windows/winhelp.c
@@ -14,8 +14,8 @@ /********************************************************************** * WinHelp16 (USER.171) */ -BOOL16 WinHelp16( HWND16 hWnd, LPCSTR lpHelpFile, UINT16 wCommand, - DWORD dwData ) +BOOL16 WINAPI WinHelp16( HWND16 hWnd, LPCSTR lpHelpFile, UINT16 wCommand, + DWORD dwData ) { return WinHelp32A( hWnd, lpHelpFile, wCommand, (DWORD)PTR_SEG_TO_LIN(dwData) ); @@ -25,8 +25,8 @@ /********************************************************************** * WinHelp32A (USER32.578) */ -BOOL32 WinHelp32A( HWND32 hWnd, LPCSTR lpHelpFile, UINT32 wCommand, - DWORD dwData ) +BOOL32 WINAPI WinHelp32A( HWND32 hWnd, LPCSTR lpHelpFile, UINT32 wCommand, + DWORD dwData ) { static WORD WM_WINHELP=0; HWND32 hDest; @@ -103,8 +103,8 @@ /********************************************************************** * WinHelp32W (USER32.579) */ -BOOL32 WinHelp32W( HWND32 hWnd, LPCWSTR helpFile, UINT32 command, - DWORD dwData ) +BOOL32 WINAPI WinHelp32W( HWND32 hWnd, LPCWSTR helpFile, UINT32 command, + DWORD dwData ) { LPSTR file = HEAP_strdupWtoA( GetProcessHeap(), 0, helpFile ); BOOL32 ret = WinHelp32A( hWnd, file, command, dwData );
diff --git a/windows/winpos.c b/windows/winpos.c index 472b011..e418e7e 100644 --- a/windows/winpos.c +++ b/windows/winpos.c
@@ -150,14 +150,14 @@ /*********************************************************************** * ArrangeIconicWindows16 (USER.170) */ -UINT16 ArrangeIconicWindows16( HWND16 parent) +UINT16 WINAPI ArrangeIconicWindows16( HWND16 parent) { return ArrangeIconicWindows32(parent); } /*********************************************************************** * ArrangeIconicWindows32 (USER32.6) */ -UINT32 ArrangeIconicWindows32( HWND32 parent ) +UINT32 WINAPI ArrangeIconicWindows32( HWND32 parent ) { RECT32 rectParent; HWND32 hwndChild; @@ -196,7 +196,7 @@ /*********************************************************************** * SwitchToThisWindow16 (USER.172) */ -void SwitchToThisWindow16( HWND16 hwnd, BOOL16 restore ) +void WINAPI SwitchToThisWindow16( HWND16 hwnd, BOOL16 restore ) { SwitchToThisWindow32( hwnd, restore ); } @@ -205,7 +205,7 @@ /*********************************************************************** * SwitchToThisWindow32 (USER32.538) */ -void SwitchToThisWindow32( HWND32 hwnd, BOOL32 restore ) +void WINAPI SwitchToThisWindow32( HWND32 hwnd, BOOL32 restore ) { ShowWindow32( hwnd, restore ? SW_RESTORE : SW_SHOWMINIMIZED ); } @@ -214,7 +214,7 @@ /*********************************************************************** * GetWindowRect16 (USER.32) */ -void GetWindowRect16( HWND16 hwnd, LPRECT16 rect ) +void WINAPI GetWindowRect16( HWND16 hwnd, LPRECT16 rect ) { WND * wndPtr = WIN_FindWndPtr( hwnd ); if (!wndPtr) return; @@ -228,7 +228,7 @@ /*********************************************************************** * GetWindowRect32 (USER.32) */ -void GetWindowRect32( HWND32 hwnd, LPRECT32 rect ) +void WINAPI GetWindowRect32( HWND32 hwnd, LPRECT32 rect ) { WND * wndPtr = WIN_FindWndPtr( hwnd ); if (!wndPtr) return; @@ -242,7 +242,7 @@ /*********************************************************************** * GetClientRect16 (USER.33) */ -void GetClientRect16( HWND16 hwnd, LPRECT16 rect ) +void WINAPI GetClientRect16( HWND16 hwnd, LPRECT16 rect ) { WND * wndPtr = WIN_FindWndPtr( hwnd ); @@ -258,7 +258,7 @@ /*********************************************************************** * GetClientRect32 (USER32.219) */ -void GetClientRect32( HWND32 hwnd, LPRECT32 rect ) +void WINAPI GetClientRect32( HWND32 hwnd, LPRECT32 rect ) { WND * wndPtr = WIN_FindWndPtr( hwnd ); @@ -274,7 +274,7 @@ /******************************************************************* * ClientToScreen16 (USER.28) */ -BOOL16 ClientToScreen16( HWND16 hwnd, LPPOINT16 lppnt ) +BOOL16 WINAPI ClientToScreen16( HWND16 hwnd, LPPOINT16 lppnt ) { MapWindowPoints16( hwnd, 0, lppnt, 1 ); return TRUE; @@ -284,7 +284,7 @@ /******************************************************************* * ClientToScreen32 (USER32.51) */ -BOOL32 ClientToScreen32( HWND32 hwnd, LPPOINT32 lppnt ) +BOOL32 WINAPI ClientToScreen32( HWND32 hwnd, LPPOINT32 lppnt ) { MapWindowPoints32( hwnd, 0, lppnt, 1 ); return TRUE; @@ -294,7 +294,7 @@ /******************************************************************* * ScreenToClient16 (USER.29) */ -void ScreenToClient16( HWND16 hwnd, LPPOINT16 lppnt ) +void WINAPI ScreenToClient16( HWND16 hwnd, LPPOINT16 lppnt ) { MapWindowPoints16( 0, hwnd, lppnt, 1 ); } @@ -303,7 +303,7 @@ /******************************************************************* * ScreenToClient32 (USER32.446) */ -void ScreenToClient32( HWND32 hwnd, LPPOINT32 lppnt ) +void WINAPI ScreenToClient32( HWND32 hwnd, LPPOINT32 lppnt ) { MapWindowPoints32( 0, hwnd, lppnt, 1 ); } @@ -388,7 +388,7 @@ /******************************************************************* * WindowFromPoint16 (USER.30) */ -HWND16 WindowFromPoint16( POINT16 pt ) +HWND16 WINAPI WindowFromPoint16( POINT16 pt ) { WND *pWnd; WINPOS_WindowFromPoint( WIN_GetDesktop(), pt, &pWnd ); @@ -399,7 +399,7 @@ /******************************************************************* * WindowFromPoint32 (USER32.581) */ -HWND32 WindowFromPoint32( POINT32 pt ) +HWND32 WINAPI WindowFromPoint32( POINT32 pt ) { WND *pWnd; POINT16 pt16; @@ -412,7 +412,7 @@ /******************************************************************* * ChildWindowFromPoint16 (USER.191) */ -HWND16 ChildWindowFromPoint16( HWND16 hwndParent, POINT16 pt ) +HWND16 WINAPI ChildWindowFromPoint16( HWND16 hwndParent, POINT16 pt ) { POINT32 pt32; CONV_POINT16TO32( &pt, &pt32 ); @@ -423,7 +423,7 @@ /******************************************************************* * ChildWindowFromPoint32 (USER32.48) */ -HWND32 ChildWindowFromPoint32( HWND32 hwndParent, POINT32 pt ) +HWND32 WINAPI ChildWindowFromPoint32( HWND32 hwndParent, POINT32 pt ) { /* pt is in the client coordinates */ @@ -500,8 +500,8 @@ /******************************************************************* * MapWindowPoints16 (USER.258) */ -void MapWindowPoints16( HWND16 hwndFrom, HWND16 hwndTo, - LPPOINT16 lppt, UINT16 count ) +void WINAPI MapWindowPoints16( HWND16 hwndFrom, HWND16 hwndTo, + LPPOINT16 lppt, UINT16 count ) { POINT32 offset; @@ -518,8 +518,8 @@ /******************************************************************* * MapWindowPoints32 (USER32.385) */ -void MapWindowPoints32( HWND32 hwndFrom, HWND32 hwndTo, - LPPOINT32 lppt, UINT32 count ) +void WINAPI MapWindowPoints32( HWND32 hwndFrom, HWND32 hwndTo, + LPPOINT32 lppt, UINT32 count ) { POINT32 offset; @@ -536,14 +536,16 @@ /*********************************************************************** * IsIconic16 (USER.31) */ -BOOL16 IsIconic16(HWND16 hWnd) +BOOL16 WINAPI IsIconic16(HWND16 hWnd) { return IsIconic32(hWnd); } + + /*********************************************************************** * IsIconic32 (USER32.344) */ -BOOL32 IsIconic32(HWND32 hWnd) +BOOL32 WINAPI IsIconic32(HWND32 hWnd) { WND * wndPtr = WIN_FindWndPtr(hWnd); if (wndPtr == NULL) return FALSE; @@ -554,14 +556,16 @@ /*********************************************************************** * IsZoomed (USER.272) */ -BOOL16 IsZoomed16(HWND16 hWnd) +BOOL16 WINAPI IsZoomed16(HWND16 hWnd) { return IsZoomed32(hWnd); } + + /*********************************************************************** * IsZoomed (USER32.351) */ -BOOL32 IsZoomed32(HWND32 hWnd) +BOOL32 WINAPI IsZoomed32(HWND32 hWnd) { WND * wndPtr = WIN_FindWndPtr(hWnd); if (wndPtr == NULL) return FALSE; @@ -572,7 +576,7 @@ /******************************************************************* * GetActiveWindow (USER.60) */ -HWND16 GetActiveWindow16(void) +HWND16 WINAPI GetActiveWindow16(void) { return (HWND16)hwndActive; } @@ -580,7 +584,7 @@ /******************************************************************* * GetActiveWindow (USER32.204) */ -HWND32 GetActiveWindow32(void) +HWND32 WINAPI GetActiveWindow32(void) { return (HWND32)hwndActive; } @@ -591,22 +595,25 @@ */ static BOOL32 WINPOS_CanActivate(WND* pWnd) { - return (pWnd) ? ((!(pWnd->dwStyle & WS_DISABLED) && - pWnd->dwStyle & WS_VISIBLE ) ? TRUE : FALSE) : FALSE; + if( pWnd && ((pWnd->dwStyle & (WS_DISABLED | WS_VISIBLE | WS_CHILD)) + == WS_VISIBLE) ) return TRUE; + return FALSE; } /******************************************************************* - * SetActiveWindow (USER.59) + * SetActiveWindow16 (USER.59) */ -HWND16 SetActiveWindow16( HWND16 hwnd ) +HWND16 WINAPI SetActiveWindow16( HWND16 hwnd ) { return SetActiveWindow32(hwnd); } + + /******************************************************************* - * SetActiveWindow (USER.59) + * SetActiveWindow32 (USER32.462) */ -HWND32 SetActiveWindow32( HWND32 hwnd ) +HWND32 WINAPI SetActiveWindow32( HWND32 hwnd ) { HWND32 prev = hwndActive; WND *wndPtr = WIN_FindWndPtr( hwnd ); @@ -619,35 +626,39 @@ /*********************************************************************** - * BringWindowToTop (USER.45) + * BringWindowToTop16 (USER.45) */ -BOOL16 BringWindowToTop16( HWND16 hwnd ) +BOOL16 WINAPI BringWindowToTop16( HWND16 hwnd ) { return BringWindowToTop32(hwnd); } + + /*********************************************************************** - * BringWindowToTop (USER32.10) + * BringWindowToTop32 (USER32.10) */ -BOOL32 BringWindowToTop32( HWND32 hwnd ) +BOOL32 WINAPI BringWindowToTop32( HWND32 hwnd ) { return SetWindowPos32( hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE ); } /*********************************************************************** - * MoveWindow (USER.56) + * MoveWindow16 (USER.56) */ -BOOL16 MoveWindow16( - HWND16 hwnd, INT16 x, INT16 y, INT16 cx, INT16 cy, BOOL16 repaint -) { +BOOL16 WINAPI MoveWindow16( HWND16 hwnd, INT16 x, INT16 y, INT16 cx, INT16 cy, + BOOL16 repaint ) +{ return MoveWindow32(hwnd,x,y,cx,cy,repaint); } + + /*********************************************************************** - * MoveWindow (USER32.398) + * MoveWindow32 (USER32.398) */ -BOOL32 MoveWindow32( - HWND32 hwnd, INT32 x, INT32 y, INT32 cx, INT32 cy, BOOL32 repaint -) { +BOOL32 WINAPI MoveWindow32( HWND32 hwnd, INT32 x, INT32 y, INT32 cx, INT32 cy, + BOOL32 repaint ) +{ int flags = SWP_NOZORDER | SWP_NOACTIVATE; if (!repaint) flags |= SWP_NOREDRAW; dprintf_win(stddeb, "MoveWindow: %04x %d,%d %dx%d %d\n", @@ -900,16 +911,18 @@ } /*********************************************************************** - * ShowWindow (USER.42) + * ShowWindow16 (USER.42) */ -BOOL16 ShowWindow16( HWND16 hwnd, INT16 cmd ) +BOOL16 WINAPI ShowWindow16( HWND16 hwnd, INT16 cmd ) { return ShowWindow32(hwnd,cmd); } + + /*********************************************************************** - * ShowWindow (USER.42) + * ShowWindow32 (USER.42) */ -BOOL32 ShowWindow32( HWND32 hwnd, INT32 cmd ) +BOOL32 WINAPI ShowWindow32( HWND32 hwnd, INT32 cmd ) { WND* wndPtr = WIN_FindWndPtr( hwnd ); BOOL32 wasVisible, showFlag; @@ -1019,7 +1032,8 @@ /*********************************************************************** * GetInternalWindowPos16 (USER.460) */ -UINT16 GetInternalWindowPos16( HWND16 hwnd, LPRECT16 rectWnd, LPPOINT16 ptIcon) +UINT16 WINAPI GetInternalWindowPos16( HWND16 hwnd, LPRECT16 rectWnd, + LPPOINT16 ptIcon ) { WINDOWPLACEMENT16 wndpl; if (GetWindowPlacement16( hwnd, &wndpl )) @@ -1035,7 +1049,8 @@ /*********************************************************************** * GetInternalWindowPos32 (USER32.244) */ -UINT32 GetInternalWindowPos32( HWND32 hwnd, LPRECT32 rectWnd, LPPOINT32 ptIcon) +UINT32 WINAPI GetInternalWindowPos32( HWND32 hwnd, LPRECT32 rectWnd, + LPPOINT32 ptIcon ) { WINDOWPLACEMENT32 wndpl; if (GetWindowPlacement32( hwnd, &wndpl )) @@ -1050,7 +1065,7 @@ /*********************************************************************** * GetWindowPlacement16 (USER.370) */ -BOOL16 GetWindowPlacement16( HWND16 hwnd, WINDOWPLACEMENT16 *wndpl ) +BOOL16 WINAPI GetWindowPlacement16( HWND16 hwnd, WINDOWPLACEMENT16 *wndpl ) { WND *pWnd = WIN_FindWndPtr( hwnd ); if( pWnd ) @@ -1079,7 +1094,7 @@ /*********************************************************************** * GetWindowPlacement32 (USER32.306) */ -BOOL32 GetWindowPlacement32( HWND32 hwnd, WINDOWPLACEMENT32 *pwpl32 ) +BOOL32 WINAPI GetWindowPlacement32( HWND32 hwnd, WINDOWPLACEMENT32 *pwpl32 ) { if( pwpl32 ) { @@ -1152,15 +1167,16 @@ /*********************************************************************** * SetWindowPlacement16 (USER.371) */ -BOOL16 SetWindowPlacement16( HWND16 hwnd, const WINDOWPLACEMENT16 *wndpl ) +BOOL16 WINAPI SetWindowPlacement16(HWND16 hwnd, const WINDOWPLACEMENT16 *wndpl) { - return WINPOS_SetPlacement( hwnd, wndpl, PLACE_MIN | PLACE_MAX | PLACE_RECT ); + return WINPOS_SetPlacement( hwnd, wndpl, + PLACE_MIN | PLACE_MAX | PLACE_RECT ); } /*********************************************************************** * SetWindowPlacement32 (USER32.518) */ -BOOL32 SetWindowPlacement32( HWND32 hwnd, const WINDOWPLACEMENT32 *pwpl32 ) +BOOL32 WINAPI SetWindowPlacement32( HWND32 hwnd, const WINDOWPLACEMENT32 *pwpl32 ) { if( pwpl32 ) { @@ -1180,8 +1196,8 @@ /*********************************************************************** * SetInternalWindowPos16 (USER.461) */ -void SetInternalWindowPos16( HWND16 hwnd, UINT16 showCmd, - LPRECT16 rect, LPPOINT16 pt ) +void WINAPI SetInternalWindowPos16( HWND16 hwnd, UINT16 showCmd, + LPRECT16 rect, LPPOINT16 pt ) { if( IsWindow16(hwnd) ) { @@ -1211,8 +1227,8 @@ /*********************************************************************** * SetInternalWindowPos32 (USER32.482) */ -void SetInternalWindowPos32( HWND32 hwnd, UINT32 showCmd, - LPRECT32 rect, LPPOINT32 pt ) +void WINAPI SetInternalWindowPos32( HWND32 hwnd, UINT32 showCmd, + LPRECT32 rect, LPPOINT32 pt ) { if( IsWindow32(hwnd) ) { @@ -1270,7 +1286,9 @@ /******************************************************************* * WINPOS_SetActiveWindow * - * back-end to SetActiveWindow + * SetActiveWindow() back-end. This is the only function that + * can assign active status to a window. It must be called only + * for the top level windows. */ BOOL32 WINPOS_SetActiveWindow( HWND32 hWnd, BOOL32 fMouse, BOOL32 fChangeFocus) { @@ -1282,10 +1300,9 @@ /* paranoid checks */ if( hWnd == GetDesktopWindow32() || hWnd == hwndActive ) return 0; -/* if (wndPtr && (GetTaskQueue(0) != wndPtr->hmemTaskQ)) - return 0; - */ - +/* if (wndPtr && (GetTaskQueue(0) != wndPtr->hmemTaskQ)) + * return 0; + */ wndPtr = WIN_FindWndPtr(hWnd); hOldActiveQueue = (pActiveQueue)?pActiveQueue->self : 0; @@ -1432,7 +1449,7 @@ /******************************************************************* * WINPOS_ActivateOtherWindow * - * DestroyWindow() helper. pWnd must be a top-level window. + * Activates window other than pWnd. */ BOOL32 WINPOS_ActivateOtherWindow(WND* pWnd) { @@ -1446,29 +1463,27 @@ ( hwndActive || QUEUE_IsExitingQueue(pWnd->hmemTaskQ)) ) return 0; - if( pWnd->dwStyle & WS_POPUP && - WINPOS_CanActivate( pWnd->owner ) ) pWndTo = pWnd->owner; - else + if( !(pWnd->dwStyle & WS_POPUP) || !(pWnd->owner) || + !WINPOS_CanActivate((pWndTo = WIN_GetTopParentPtr(pWnd->owner))) ) { - WND* pWndPtr = pWnd; + WND* pWndPtr = WIN_GetTopParentPtr(pWnd); - pWndTo = WIN_FindWndPtr(hwndPrevActive); + pWndTo = WIN_FindWndPtr(hwndPrevActive); - while( !WINPOS_CanActivate(pWndTo) ) - { - /* by now owned windows should've been taken care of */ + while( !WINPOS_CanActivate(pWndTo) ) + { + /* by now owned windows should've been taken care of */ - pWndTo = pWndPtr->next; - pWndPtr = pWndTo; - if( !pWndTo ) return 0; - } + pWndTo = pWndPtr->next; + pWndPtr = pWndTo; + if( !pWndTo ) break; + } } - bRet = WINPOS_SetActiveWindow( pWndTo->hwndSelf, FALSE, TRUE ); + bRet = WINPOS_SetActiveWindow( pWndTo ? pWndTo->hwndSelf : 0, FALSE, TRUE ); /* switch desktop queue to current active */ - if( pWndTo->parent == WIN_GetDesktop()) - WIN_GetDesktop()->hmemTaskQ = pWndTo->hmemTaskQ; + if( pWndTo ) WIN_GetDesktop()->hmemTaskQ = pWndTo->hmemTaskQ; hwndPrevActive = 0; return bRet; @@ -1951,8 +1966,8 @@ /*********************************************************************** * SetWindowPos (USER.232) */ -BOOL16 SetWindowPos16( HWND16 hwnd, HWND16 hwndInsertAfter, INT16 x, INT16 y, - INT16 cx, INT16 cy, WORD flags ) +BOOL16 WINAPI SetWindowPos16( HWND16 hwnd, HWND16 hwndInsertAfter, + INT16 x, INT16 y, INT16 cx, INT16 cy, WORD flags) { return SetWindowPos32(hwnd,(INT32)(INT16)hwndInsertAfter,x,y,cx,cy,flags); } @@ -1960,8 +1975,8 @@ /*********************************************************************** * SetWindowPos (USER32.519) */ -BOOL32 SetWindowPos32( HWND32 hwnd, HWND32 hwndInsertAfter, INT32 x, INT32 y, - INT32 cx, INT32 cy, WORD flags ) +BOOL32 WINAPI SetWindowPos32( HWND32 hwnd, HWND32 hwndInsertAfter, + INT32 x, INT32 y, INT32 cx, INT32 cy, WORD flags) { WINDOWPOS32 winpos; WND * wndPtr; @@ -2273,17 +2288,7 @@ if (hwnd == CARET_GetHwnd()) DestroyCaret32(); if (winpos.hwnd == hwndActive) - { - /* Activate previously active window if possible */ - HWND32 newActive = hwndPrevActive; - if (!IsWindow32(newActive) || (newActive == winpos.hwnd)) - { - newActive = GetTopWindow32( GetDesktopWindow32() ); - if (newActive == winpos.hwnd) - newActive = wndPtr->next ? wndPtr->next->hwndSelf : 0; - } - WINPOS_ChangeActiveWindow( newActive, FALSE ); - } + WINPOS_ActivateOtherWindow( wndPtr ); } /* Activate the window */ @@ -2325,7 +2330,7 @@ /*********************************************************************** * BeginDeferWindowPos16 (USER.259) */ -HDWP16 BeginDeferWindowPos16( INT16 count ) +HDWP16 WINAPI BeginDeferWindowPos16( INT16 count ) { return BeginDeferWindowPos32( count ); } @@ -2334,7 +2339,7 @@ /*********************************************************************** * BeginDeferWindowPos32 (USER32.8) */ -HDWP32 BeginDeferWindowPos32( INT32 count ) +HDWP32 WINAPI BeginDeferWindowPos32( INT32 count ) { HDWP32 handle; DWP *pDWP; @@ -2355,8 +2360,9 @@ /*********************************************************************** * DeferWindowPos16 (USER.260) */ -HDWP16 DeferWindowPos16( HDWP16 hdwp, HWND16 hwnd, HWND16 hwndAfter, - INT16 x, INT16 y, INT16 cx, INT16 cy, UINT16 flags ) +HDWP16 WINAPI DeferWindowPos16( HDWP16 hdwp, HWND16 hwnd, HWND16 hwndAfter, + INT16 x, INT16 y, INT16 cx, INT16 cy, + UINT16 flags ) { return DeferWindowPos32( hdwp, hwnd, (INT32)(INT16)hwndAfter, x, y, cx, cy, flags ); @@ -2366,8 +2372,9 @@ /*********************************************************************** * DeferWindowPos32 (USER32.127) */ -HDWP32 DeferWindowPos32( HDWP32 hdwp, HWND32 hwnd, HWND32 hwndAfter, - INT32 x, INT32 y, INT32 cx, INT32 cy, UINT32 flags ) +HDWP32 WINAPI DeferWindowPos32( HDWP32 hdwp, HWND32 hwnd, HWND32 hwndAfter, + INT32 x, INT32 y, INT32 cx, INT32 cy, + UINT32 flags ) { DWP *pDWP; int i; @@ -2439,7 +2446,7 @@ /*********************************************************************** * EndDeferWindowPos16 (USER.261) */ -BOOL16 EndDeferWindowPos16( HDWP16 hdwp ) +BOOL16 WINAPI EndDeferWindowPos16( HDWP16 hdwp ) { return EndDeferWindowPos32( hdwp ); } @@ -2448,7 +2455,7 @@ /*********************************************************************** * EndDeferWindowPos32 (USER32.172) */ -BOOL32 EndDeferWindowPos32( HDWP32 hdwp ) +BOOL32 WINAPI EndDeferWindowPos32( HDWP32 hdwp ) { DWP *pDWP; WINDOWPOS32 *winpos; @@ -2471,7 +2478,7 @@ /*********************************************************************** * TileChildWindows (USER.199) */ -void TileChildWindows( HWND16 parent, WORD action ) +void WINAPI TileChildWindows( HWND16 parent, WORD action ) { printf("STUB TileChildWindows(%04x, %d)\n", parent, action); } @@ -2479,7 +2486,7 @@ /*********************************************************************** * CascageChildWindows (USER.198) */ -void CascadeChildWindows( HWND16 parent, WORD action ) +void WINAPI CascadeChildWindows( HWND16 parent, WORD action ) { printf("STUB CascadeChildWindows(%04x, %d)\n", parent, action); }
diff --git a/windows/winproc.c b/windows/winproc.c index 10139e6..b2a9207 100644 --- a/windows/winproc.c +++ b/windows/winproc.c
@@ -143,6 +143,8 @@ static LRESULT WINPROC_CallWndProc32( WNDPROC32 proc, HWND32 hwnd, UINT32 msg, WPARAM32 wParam, LPARAM lParam ) { +/* dprintf_relay( stddeb, "CallTo32(wndproc=%p,hwnd=%08x,msg=%08x,wp=%08x,lp=%08lx)\n", + proc, hwnd, msg, wParam, lParam ); */ return proc( hwnd, msg, wParam, lParam ); } @@ -1843,8 +1845,8 @@ /********************************************************************** * CallWindowProc16 (USER.122) */ -LRESULT CallWindowProc16( WNDPROC16 func, HWND16 hwnd, UINT16 msg, - WPARAM16 wParam, LPARAM lParam ) +LRESULT WINAPI CallWindowProc16( WNDPROC16 func, HWND16 hwnd, UINT16 msg, + WPARAM16 wParam, LPARAM lParam ) { LRESULT result; WND *wndPtr; @@ -1899,8 +1901,8 @@ /********************************************************************** * CallWindowProc32A (USER32.17) */ -LRESULT CallWindowProc32A( WNDPROC32 func, HWND32 hwnd, UINT32 msg, - WPARAM32 wParam, LPARAM lParam ) +LRESULT WINAPI CallWindowProc32A( WNDPROC32 func, HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ) { WINDOWPROC *proc = WINPROC_GetPtr( (WNDPROC16)func ); @@ -1936,8 +1938,8 @@ /********************************************************************** * CallWindowProc32W (USER32.18) */ -LRESULT CallWindowProc32W( WNDPROC32 func, HWND32 hwnd, UINT32 msg, - WPARAM32 wParam, LPARAM lParam ) +LRESULT WINAPI CallWindowProc32W( WNDPROC32 func, HWND32 hwnd, UINT32 msg, + WPARAM32 wParam, LPARAM lParam ) { WINDOWPROC *proc = WINPROC_GetPtr( (WNDPROC16)func );
diff --git a/wine.ini b/wine.ini index af8f3ca..8da8b56 100644 --- a/wine.ini +++ b/wine.ini
@@ -48,10 +48,8 @@ AllocSystemColors=100 [fonts] -;Read documentation/fonts before changing this -Alias0 = MS Sans Serif, -adobe-helvetica- -;Alias1 = Arial, -adobe-helvetica-, subst -;Alias2 = Times New Roman, -adobe-times-, subst +;Read documentation/fonts before adding aliases +Resolution = 96 Default = -adobe-times- [serialports]