Release 960811

Sun Aug 11 13:00:20 1996  Alexandre Julliard  <julliard@lrc.epfl.ch>

	* [configure.in] [include/acconfig.h] [tools/build.c]
	Added check for underscore on external symbols.

	* [memory/selector.c] [memory/global.c]
	Fixed FreeSelector() to free only one selector.
	Added SELECTOR_FreeBlock() to free an array of selectors.

	* [objects/color.c]
	Fixed a bug in COLOR_ToLogical() that caused GetPixel() to fail on
	hi-color displays.

	* [tools/build.c] [if1632/crtdll.spec]
	Added 'extern' type, used for external variables or functions.

	* [windows/winpos.c]
	Allow de-activating a window in WINPOS_ChangeActiveWindow().

	* [windows/winproc.c]
	Added 32-to-16 translation for button messages.
	Fixed WINPROC_GetPtr() to avoid crashes on 32-bit procedures that
	happen to be valid SEGPTRs.

Sat Aug 10 18:22:25 1996  Albrecht Kleine  <kleine@ak.sax.de>

	* [windows/message.c]
	Removed a FIXME in MSG_PeekHardwareMsg(): produces correct 
	data for the JOURNALRECORD-hook (using EVENTMSG16 structure).

	* [if1632/gdi.spec] [include/windows.h] [objects/metafile.c]
	Introduced undocumented API function IsValidMetaFile(), plus a
 	minor fix in last patch of CopyMetaFile().

	* [objects/gdiobj.c]
	Removed a FIXME in IsGDIObject(): added magic word check.

Sun Aug 10 18:10:10 1996  Bruce Milner <Bruce.Milner@genetics.utah.edu>

	* [controls/statuswin.c]
	First pass at implementing the StatusWindow class.

	* [include/commctrl.h]
	Header file for common controls.

	* [controls/widgets.c]
	Added InitCommonControls().

	* [if1632/comctl32.spec]
	Add DrawStatusTextA, CreateStatusWindowA, InitCommonControls.

	* [win32/findfile.c] [if1632/kernel32.spec]
	Add FindNextFile32A, FindClose.
	Modified FindFirstFile32A so it works with FindNextFile32A.

	* [include/winbase.h]
	Fixed WIN32_FIND_DATA structure member names.

Sat Aug 10 09:00:00 1996  Alex Korobka <alex@phm30.pharm.sunysb.edu>

	* [windows/scroll.c]
	Changed scrolling routines to benefit from DCE code update.

Thu Aug  8 18:05:09 1996  Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>

	* [files/file.c]
	SearchPath* could get NULL for lastpart argument.

	* [if1632/build-spec.txt] [documentation/debugging]
	Varargs documentation added, debugging hints updated.

	* [if1632/crtdll.spec][misc/crtdll.c][misc/Makefile.in]
	Started to implement CRTDLL.

	* [if1632/wsock32.spec]
	Some thunks to standard libc functions (structures have the same
 	elements, but perhaps wrong offset due to packing).

	* [include/kernel32.h][include/windows.h][win32/*.c][loader/main.c]
	Merged kernel32.h into windows.h.

	* [misc/lstr.c]
	Enhanced FormatMessage().

	* [misc/main.c] [if1632/kernel.spec] [include/windows.h]
	GetVersion() updated to new naming standard.
	Changed language handling to support language ids.

	* [misc/shell.c]
	Enhanced FindExecutable, so it finds files in the search path too.

	* [win32/environment.c]
	GetCommandLine* updated.

	* [loader/resource.c] [loader/pe_resource.c]
	FindResourceEx32* added.
	Loading of messagetables added.
	Language handling now uses Wine default language id.
This commit is contained in:
Alexandre Julliard 1996-08-11 15:49:51 +00:00
parent f1aa3030a6
commit 8cc3a5e4d4
112 changed files with 2738 additions and 1359 deletions

View File

@ -1,13 +1,14 @@
This is release 960805 of Wine, the MS Windows emulator. This is still a
This is release 960811 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-960805: (see ChangeLog for details)
- More metafile features.
- Some more Win32 code.
WHAT'S NEW with Wine-960811: (see ChangeLog for details)
- Status window class.
- Some CRTDLL support.
- Fixes to scrolling code.
- Lots of bug fixes.
See the README file in the distribution for installation instructions.
@ -16,10 +17,10 @@ Because of lags created by using mirror, this message may reach you before
the release is available at the ftp sites. The sources will be available
from the following locations:
sunsite.unc.edu:/pub/Linux/ALPHA/wine/development/Wine-960805.tar.gz
tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-960805.tar.gz
ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-960805.tar.gz
aris.com:/pub/linux/ALPHA/Wine/development/Wine-960805.tar.gz
sunsite.unc.edu:/pub/Linux/ALPHA/wine/development/Wine-960811.tar.gz
tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-960811.tar.gz
ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-960811.tar.gz
aris.com:/pub/linux/ALPHA/Wine/development/Wine-960811.tar.gz
It should also be available from any site that mirrors tsx-11 or sunsite.

100
ChangeLog
View File

@ -1,3 +1,103 @@
----------------------------------------------------------------------
Sun Aug 11 13:00:20 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [configure.in] [include/acconfig.h] [tools/build.c]
Added check for underscore on external symbols.
* [memory/selector.c] [memory/global.c]
Fixed FreeSelector() to free only one selector.
Added SELECTOR_FreeBlock() to free an array of selectors.
* [objects/color.c]
Fixed a bug in COLOR_ToLogical() that caused GetPixel() to fail on
hi-color displays.
* [tools/build.c] [if1632/crtdll.spec]
Added 'extern' type, used for external variables or functions.
* [windows/winpos.c]
Allow de-activating a window in WINPOS_ChangeActiveWindow().
* [windows/winproc.c]
Added 32-to-16 translation for button messages.
Fixed WINPROC_GetPtr() to avoid crashes on 32-bit procedures that
happen to be valid SEGPTRs.
Sat Aug 10 18:22:25 1996 Albrecht Kleine <kleine@ak.sax.de>
* [windows/message.c]
Removed a FIXME in MSG_PeekHardwareMsg(): produces correct
data for the JOURNALRECORD-hook (using EVENTMSG16 structure).
* [if1632/gdi.spec] [include/windows.h] [objects/metafile.c]
Introduced undocumented API function IsValidMetaFile(), plus a
minor fix in last patch of CopyMetaFile().
* [objects/gdiobj.c]
Removed a FIXME in IsGDIObject(): added magic word check.
Sun Aug 10 18:10:10 1996 Bruce Milner <Bruce.Milner@genetics.utah.edu>
* [controls/statuswin.c]
First pass at implementing the StatusWindow class.
* [include/commctrl.h]
Header file for common controls.
* [controls/widgets.c]
Added InitCommonControls().
* [if1632/comctl32.spec]
Add DrawStatusTextA, CreateStatusWindowA, InitCommonControls.
* [win32/findfile.c] [if1632/kernel32.spec]
Add FindNextFile32A, FindClose.
Modified FindFirstFile32A so it works with FindNextFile32A.
* [include/winbase.h]
Fixed WIN32_FIND_DATA structure member names.
Sat Aug 10 09:00:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu>
* [windows/scroll.c]
Changed scrolling routines to benefit from DCE code update.
Thu Aug 8 18:05:09 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [files/file.c]
SearchPath* could get NULL for lastpart argument.
* [if1632/build-spec.txt] [documentation/debugging]
Varargs documentation added, debugging hints updated.
* [if1632/crtdll.spec][misc/crtdll.c][misc/Makefile.in]
Started to implement CRTDLL.
* [if1632/wsock32.spec]
Some thunks to standard libc functions (structures have the same
elements, but perhaps wrong offset due to packing).
* [include/kernel32.h][include/windows.h][win32/*.c][loader/main.c]
Merged kernel32.h into windows.h.
* [misc/lstr.c]
Enhanced FormatMessage().
* [misc/main.c] [if1632/kernel.spec] [include/windows.h]
GetVersion() updated to new naming standard.
Changed language handling to support language ids.
* [misc/shell.c]
Enhanced FindExecutable, so it finds files in the search path too.
* [win32/environment.c]
GetCommandLine* updated.
* [loader/resource.c] [loader/pe_resource.c]
FindResourceEx32* added.
Loading of messagetables added.
Language handling now uses Wine default language id.
----------------------------------------------------------------------
Sun Aug 4 18:18:48 1996 Alexandre Julliard <julliard@lrc.epfl.ch>

View File

@ -137,4 +137,10 @@ distclean: clean
$(RM) config.* Make.rules include/config.h
$(RM) `find . \( -name Makefile -o -size 0 \) -print`
configure: configure.in
autoconf
include/config.h.in: configure.in include/acconfig.h
autoheader -l include
dummy:

66
configure vendored
View File

@ -1615,6 +1615,48 @@ echo "$ac_t""$ac_cv_c_gcc_strength_bug" 1>&6
fi
echo $ac_n "checking "whether external symbols need an underscore prefix"""... $ac_c" 1>&6
if eval "test \"`echo '$''{'ac_cv_c_extern_prefix'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
saved_libs=$LIBS
LIBS="conftest_asm.s $LIBS"
cat > conftest_asm.s <<EOF
.globl _ac_test
_ac_test:
.long 0
EOF
cat > conftest.$ac_ext <<EOF
#line 1631 "configure"
#include "confdefs.h"
extern int ac_test;
int main() { return 0; }
int t() {
if (ac_test) return 1
; return 0; }
EOF
if { (eval echo configure:1639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
ac_cv_c_extern_prefix="yes"
else
rm -rf conftest*
ac_cv_c_extern_prefix="no"
fi
rm -f conftest*
LIBS=$saved_libs
fi
echo "$ac_t""$ac_cv_c_extern_prefix" 1>&6
if test "$ac_cv_c_extern_prefix" = "yes"
then
cat >> confdefs.h <<\EOF
#define NEED_UNDERSCORE_PREFIX 1
EOF
fi
for ac_func in memmove tcgetattr usleep
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
@ -1622,7 +1664,7 @@ if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1626 "configure"
#line 1668 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@ -1646,7 +1688,7 @@ $ac_func();
; return 0; }
EOF
if { (eval echo configure:1650: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
if { (eval echo configure:1692: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@ -1673,7 +1715,7 @@ if eval "test \"`echo '$''{'ac_cv_header_stat_broken'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1677 "configure"
#line 1719 "configure"
#include "confdefs.h"
#include <sys/types.h>
#include <sys/stat.h>
@ -1728,7 +1770,7 @@ if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1732 "configure"
#line 1774 "configure"
#include "confdefs.h"
int main() { return 0; }
@ -1778,7 +1820,7 @@ ccp = (char const *const *) p;
; return 0; }
EOF
if { (eval echo configure:1782: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
if { (eval echo configure:1824: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
ac_cv_c_const=yes
else
@ -1802,7 +1844,7 @@ if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1806 "configure"
#line 1848 "configure"
#include "confdefs.h"
#include <stdlib.h>
#include <stdarg.h>
@ -1810,7 +1852,7 @@ else
#include <float.h>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
{ (eval echo configure:1814: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
{ (eval echo configure:1856: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out`
if test -z "$ac_err"; then
rm -rf conftest*
@ -1825,7 +1867,7 @@ rm -f conftest*
if test $ac_cv_header_stdc = yes; then
# SunOS 4.x string.h does not declare mem*, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 1829 "configure"
#line 1871 "configure"
#include "confdefs.h"
#include <string.h>
EOF
@ -1843,7 +1885,7 @@ fi
if test $ac_cv_header_stdc = yes; then
# ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
cat > conftest.$ac_ext <<EOF
#line 1847 "configure"
#line 1889 "configure"
#include "confdefs.h"
#include <stdlib.h>
EOF
@ -1864,7 +1906,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
#line 1868 "configure"
#line 1910 "configure"
#include "confdefs.h"
#include <ctype.h>
#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@ -1875,7 +1917,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
exit (0); }
EOF
{ (eval echo configure:1879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
{ (eval echo configure:1921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }
if test -s conftest && (./conftest; exit) 2>/dev/null; then
:
else
@ -1899,7 +1941,7 @@ if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
#line 1903 "configure"
#line 1945 "configure"
#include "confdefs.h"
#include <sys/types.h>
#if STDC_HEADERS

View File

@ -66,6 +66,25 @@ int main(void) {
fi
fi
dnl **** Check for underscore on external symbols ****
AC_CACHE_CHECK("whether external symbols need an underscore prefix",
ac_cv_c_extern_prefix,
[saved_libs=$LIBS
LIBS="conftest_asm.s $LIBS"
cat > conftest_asm.s <<EOF
.globl _ac_test
_ac_test:
.long 0
EOF
AC_TRY_LINK([extern int ac_test;],[if (ac_test) return 1],
ac_cv_c_extern_prefix="yes",ac_cv_c_extern_prefix="no")
LIBS=$saved_libs])
if test "$ac_cv_c_extern_prefix" = "yes"
then
AC_DEFINE(NEED_UNDERSCORE_PREFIX)
fi
dnl **** Check for functions and header files ****
AC_CHECK_FUNCS(memmove tcgetattr usleep)

View File

@ -11,6 +11,7 @@ C_SRCS = \
menu.c \
scroll.c \
static.c \
status.c \
widgets.c
all: $(MODULE).o

View File

@ -163,7 +163,7 @@ static LRESULT CBCreate(HWND hwnd, WPARAM wParam, LPARAM lParam)
lphc->RectButton.bottom = lphc->RectButton.top + lphl->StdItemHeight;
SetWindowPos(hwnd, 0, 0, 0, rect.right -rect.left + 2*SYSMETRICS_CXBORDER,
lphl->StdItemHeight + 2*SYSMETRICS_CYBORDER,
SWP_NOMOVE | SWP_NOZORDER | SWP_NOSENDCHANGING);
SWP_NOMOVE | SWP_NOZORDER | SWP_NOSENDCHANGING | SWP_NOACTIVATE);
dprintf_combo(stddeb,(cstyle & 3)==CBS_DROPDOWN ? "CBS_DROPDOWN\n": "CBS_DROPDOWNLIST\n");
break;
@ -615,7 +615,8 @@ static LRESULT CBShowDropDown(HWND hwnd, WPARAM wParam, LPARAM lParam)
lphc->DropDownVisible = wParam;
GetWindowRect32(hwnd,&rect);
SetWindowPos(lphc->hWndLBox, 0, rect.left, rect.top+lphc->LBoxTop, 0, 0,
SWP_NOSIZE | (wParam ? SWP_SHOWWINDOW : SWP_HIDEWINDOW));
SWP_NOSIZE | SWP_NOACTIVATE |
(wParam ? SWP_SHOWWINDOW : SWP_HIDEWINDOW));
if (!wParam) SetFocus(hwnd);
}
return 0;
@ -1005,7 +1006,7 @@ static LRESULT CBLLButtonDown( HWND hwnd, WPARAM wParam, LPARAM lParam )
int y;
RECT16 rectsel;
SetFocus(hwnd);
/* SetFocus(hwnd); */
SetCapture(hwnd);
lphl->PrevFocused = lphl->ItemFocused;
@ -1213,6 +1214,8 @@ LRESULT ComboLBoxWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
case WM_MOUSEMOVE: return CBLMouseMove(hwnd, wParam, lParam);
case WM_VSCROLL: return CBLVScroll(hwnd, wParam, lParam);
case WM_SIZE: return CBLCheckSize(hwnd);
case WM_MOUSEACTIVATE: /* We don't want to be activated */
return MA_NOACTIVATE;
}
return DefWindowProc16(hwnd, message, wParam, lParam);
}

View File

@ -2177,7 +2177,7 @@ static LRESULT EDIT_WM_Copy(WND *wndPtr, WPARAM wParam, LPARAM lParam)
{
UINT s = LOWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
UINT e = HIWORD(EDIT_EM_GetSel(wndPtr, 0, 0L));
HGLOBAL hdst;
HGLOBAL16 hdst;
char *text;
char *dst;
char *src;
@ -2717,7 +2717,7 @@ static LRESULT EDIT_WM_Paint(WND *wndPtr, WPARAM wParam, LPARAM lParam)
*/
static LRESULT EDIT_WM_Paste(WND *wndPtr, WPARAM wParam, LPARAM lParam)
{
HGLOBAL hsrc;
HGLOBAL16 hsrc;
char *src;
OpenClipboard(wndPtr->hwndSelf);

View File

@ -107,7 +107,7 @@ static UINT uSubPWndLevel = 0;
static HMENU MENU_CopySysMenu(void)
{
HMENU hMenu;
HGLOBAL handle;
HGLOBAL16 handle;
POPUPMENU *menu;
if (!(handle = SYSRES_LoadResource( SYSRES_MENU_SYSMENU ))) return 0;

View File

@ -46,9 +46,9 @@ static pfPaint staticPaintFunc[LAST_STATIC_TYPE+1] =
*
* Set the icon for an SS_ICON control.
*/
static HICON STATIC_SetIcon( WND *wndPtr, HICON hicon )
static HICON16 STATIC_SetIcon( WND *wndPtr, HICON16 hicon )
{
HICON prevIcon;
HICON16 prevIcon;
STATICINFO *infoPtr = (STATICINFO *)wndPtr->wExtra;
if ((wndPtr->dwStyle & 0x0f) != SS_ICON) return 0;
@ -167,7 +167,7 @@ LRESULT StaticWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
return infoPtr->hIcon;
case STM_SETICON:
lResult = STATIC_SetIcon( wndPtr, (HICON)wParam );
lResult = STATIC_SetIcon( wndPtr, (HICON16)wParam );
InvalidateRect32( hWnd, NULL, FALSE );
UpdateWindow( hWnd );
break;

499
controls/status.c Normal file
View File

@ -0,0 +1,499 @@
/*
* Interface code to StatusWindow widget/control
*
* Copyright 1996 Bruce Milner
*/
#include <stdio.h>
#include <stdlib.h>
#include "windows.h"
#include "status.h"
#include "commctrl.h"
#include "heap.h"
#include "syscolor.h"
#include "win.h"
/*
* Run tests using Waite Group Windows95 API Bible Vol. 1&2
* The second cdrom contains executables drawstat.exe,gettext.exe,
* simple.exe, getparts.exe, setparts.exe, statwnd.exe
*/
/*
* Fixme/Todo
* 1) Add size grip to status bar - SBARS_SIZEGRIP
* 2) Don't hard code bar to bottom of window, allow CCS_TOP also
* 3) Fix SBT_OWNERDRAW
* 4) Add DrawStatusText32A funtion
*/
static STATUSWINDOWINFO *GetStatusInfo(HWND32 hwnd)
{
WND *wndPtr;
wndPtr = WIN_FindWndPtr(hwnd);
return ((STATUSWINDOWINFO *) &wndPtr->wExtra[0]);
}
/***********************************************************************
* DrawStatusText32A (COMCTL32.3)
*/
void DrawStatusText32A( HDC32 hdc, LPRECT32 lprc, LPCSTR text, UINT32 style )
{
RECT32 r, rt;
int oldbkmode;
r = *lprc;
if (style == 0 ||
style == SBT_POPOUT) {
InflateRect32(&r, -1, -1);
SelectObject(hdc, sysColorObjects.hbrushScrollbar);
Rectangle(hdc, r.left, r.top, r.right, r.bottom);
/* draw border */
SelectObject(hdc, sysColorObjects.hpenWindowFrame);
if (style == 0)
DrawEdge32(hdc, &r, EDGE_SUNKEN, BF_RECT);
else
DrawEdge32(hdc, &r, EDGE_RAISED, BF_RECT);
}
else if (style == SBT_NOBORDERS) {
SelectObject(hdc, sysColorObjects.hbrushScrollbar);
Rectangle(hdc, r.left, r.top, r.right, r.bottom);
}
else { /* fixme for SBT_OWNERDRAW, SBT_RTLREADING */
}
/* now draw text */
if ((style != SBT_OWNERDRAW) && text) {
SelectObject(hdc, sysColorObjects.hpenWindowText);
oldbkmode = SetBkMode(hdc, TRANSPARENT);
rt = r;
rt.left += 3;
DrawText32A(hdc, text, lstrlen32A(text),
&rt, DT_LEFT | DT_VCENTER | DT_SINGLELINE);
if (oldbkmode != TRANSPARENT)
SetBkMode(hdc, oldbkmode);
}
}
static BOOL32 SW_Refresh( HWND32 hwnd, HDC32 hdc, STATUSWINDOWINFO *self )
{
int i;
if (!IsWindowVisible(hwnd)) {
return (TRUE);
}
if (self->simple) {
DrawStatusText32A(hdc,
&self->part0.bound,
self->part0.text,
self->part0.style);
}
else {
for (i = 0; i < self->numParts; i++) {
DrawStatusText32A(hdc,
&self->parts[i].bound,
self->parts[i].text,
self->parts[i].style);
}
}
return TRUE;
}
static LRESULT
SW_GetBorders(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
LPINT32 out;
/* FIXME for sizegrips */
out = (LPINT32) lParam;
out[0] = 1; /* vertical border width */
out[1] = 1; /* horizontal border width */
out[2] = 1; /* width of border between rectangles */
return TRUE;
}
static void
SW_SetPartBounds(HWND32 hwnd, STATUSWINDOWINFO *self)
{
int i;
RECT32 rect, *r;
STATUSWINDOWPART *part;
int sep = 1;
/* get our window size */
GetClientRect32(hwnd, &rect);
/* set bounds for simple rectangle */
self->part0.bound = rect;
/* set bounds for non-simple rectangles */
for (i = 0; i < self->numParts; i++) {
part = &self->parts[i];
r = &self->parts[i].bound;
r->top = rect.top;
r->bottom = rect.bottom;
if (i == 0)
r->left = 0;
else
r->left = self->parts[i-1].bound.right+sep;
if (part->x == -1)
r->right = rect.right;
else
r->right = part->x;
}
}
static LRESULT
SW_SetText(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
int part_num;
int style;
LPSTR text;
int len;
STATUSWINDOWPART *part;
text = (LPSTR) lParam;
part_num = ((INT32) wParam) & 0x00ff;
style = ((INT32) wParam) & 0xff00;
if (part_num > 255)
return FALSE;
if (self->simple)
part = &self->part0;
else
part = &self->parts[part_num];
part->style = style;
if (style == SBT_OWNERDRAW) {
part->text = text;
}
else {
/* duplicate string */
if (part->text)
HeapFree(SystemHeap, 0, part->text);
part->text = 0;
if (text && (len = lstrlen32A(text))) {
part->text = HeapAlloc(SystemHeap, 0, len+1);
lstrcpy32A(part->text, text);
}
}
InvalidateRect32(hwnd, &part->bound, FALSE);
return TRUE;
}
static LRESULT
SW_SetParts(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
HDC32 hdc;
LPINT32 parts;
STATUSWINDOWPART * tmp;
int i;
int oldNumParts;
if (self->simple) {
self->simple = FALSE;
}
oldNumParts = self->numParts;
self->numParts = (INT32) wParam;
parts = (LPINT32) lParam;
if (oldNumParts > self->numParts) {
for (i = self->numParts ; i < oldNumParts; i++) {
if (self->parts[i].text && (self->parts[i].style != SBT_OWNERDRAW))
HeapFree(SystemHeap, 0, self->parts[i].text);
}
}
else if (oldNumParts < self->numParts) {
tmp = HeapAlloc(SystemHeap, HEAP_ZERO_MEMORY,
sizeof(STATUSWINDOWPART) * self->numParts);
for (i = 0; i < oldNumParts; i++) {
tmp[i] = self->parts[i];
}
if (self->parts)
HeapFree(SystemHeap, 0, self->parts);
self->parts = tmp;
}
for (i = 0; i < self->numParts; i++) {
self->parts[i].x = parts[i];
}
SW_SetPartBounds(hwnd, self);
hdc = GetDC(hwnd);
SW_Refresh(hwnd, hdc, self);
ReleaseDC(hwnd, hdc);
return TRUE;
}
static LRESULT
SW_GetParts(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
LPINT32 parts;
INT32 num_parts;
int i;
self = GetStatusInfo(hwnd);
num_parts = (INT32) wParam;
parts = (LPINT32) lParam;
if (parts) {
return (self->numParts);
for (i = 0; i < num_parts; i++) {
parts[i] = self->parts[i].x;
}
}
return (self->numParts);
}
static LRESULT
SW_Create(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
RECT32 rect;
LPCREATESTRUCT32A lpCreate = (LPCREATESTRUCT32A) lParam;
int height, width;
HDC32 hdc;
HWND32 parent;
self->numParts = 0;
self->parts = 0;
self->simple = TRUE;
GetClientRect32(hwnd, &rect);
/* initialize simple case */
self->part0.bound = rect;
self->part0.text = 0;
self->part0.x = 0;
self->part0.style = 0;
height = 40;
if ((hdc = GetDC(0))) {
TEXTMETRIC32A tm;
GetTextMetrics32A(hdc, &tm);
self->textHeight = tm.tmHeight;
ReleaseDC(0, hdc);
}
parent = GetParent(hwnd);
GetClientRect32(parent, &rect);
width = rect.right - rect.left;
height = (self->textHeight * 3)/2;
MoveWindow(hwnd, lpCreate->x, lpCreate->y-1, width, height, FALSE);
SW_SetPartBounds(hwnd, self);
return 0;
}
static LRESULT
SW_GetRect(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
int part_num;
LPRECT32 rect;
part_num = ((INT32) wParam) & 0x00ff;
rect = (LPRECT32) lParam;
if (self->simple)
*rect = self->part0.bound;
else
*rect = self->parts[part_num].bound;
return TRUE;
}
static LRESULT
SW_GetText(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
int part_num;
LRESULT result;
STATUSWINDOWPART *part;
LPSTR out_text;
part_num = ((INT32) wParam) & 0x00ff;
out_text = (LPSTR) lParam;
if (self->simple)
part = &self->part0;
else
part = &self->parts[part_num];
if (part->style == SBT_OWNERDRAW)
result = (LRESULT) part->text;
else {
result = part->text ? lstrlen32A(part->text) : 0;
result |= (part->style << 16);
if (out_text) {
lstrcpy32A(out_text, part->text);
}
}
return result;
}
static LRESULT
SW_GetTextLength(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
int part_num;
STATUSWINDOWPART *part;
DWORD result;
part_num = ((INT32) wParam) & 0x00ff;
if (self->simple)
part = &self->part0;
else
part = &self->parts[part_num];
if (part->text)
result = lstrlen32A(part->text);
else
result = 0;
result |= (part->style << 16);
return result;
}
static LRESULT
SW_SetMinHeight(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
/* FIXME */
/* size is wParam | 2*pixels_of_horz_border */
return TRUE;
}
static LRESULT
SW_Simple(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
BOOL32 simple;
HDC32 hdc;
simple = (BOOL32) wParam;
self->simple = simple;
hdc = GetDC(hwnd);
SW_Refresh(hwnd, hdc, self);
ReleaseDC(hwnd, hdc);
return TRUE;
}
static LRESULT
SW_Size(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
/* Need to resize width to match parent */
INT32 width, height, x, y;
RECT32 parent_rect;
HWND32 parent;
INT32 flags;
flags = (INT32) wParam;
/* FIXME for flags =
* SIZE_MAXIMIZED, SIZE_MAXSHOW, SIZE_MINIMIZED, SIZE_RESTORED
*/
if (flags == SIZE_RESTORED) {
/* width and height don't apply */
parent = GetParent(hwnd);
GetClientRect32(parent, &parent_rect);
height = (self->textHeight * 3)/2;
width = parent_rect.right - parent_rect.left;
x = parent_rect.left;
y = parent_rect.bottom - height;
MoveWindow(hwnd, parent_rect.left, parent_rect.bottom - height - 1,
width, height, TRUE);
SW_SetPartBounds(hwnd, self);
}
return 0;
}
static LRESULT
SW_Destroy(STATUSWINDOWINFO *self, HWND32 hwnd, WPARAM32 wParam, LPARAM lParam)
{
int i;
for (i = 0; i < self->numParts; i++) {
if (self->parts[i].text && (self->parts[i].style != SBT_OWNERDRAW))
HeapFree(SystemHeap, 0, self->parts[i].text);
}
if (self->part0.text && (self->part0.style != SBT_OWNERDRAW))
HeapFree(SystemHeap, 0, self->part0.text);
HeapFree(SystemHeap, 0, self->parts);
return 0;
}
static LRESULT
SW_Paint(STATUSWINDOWINFO *self, HWND32 hwnd)
{
HDC32 hdc;
PAINTSTRUCT32 ps;
hdc = BeginPaint32(hwnd, &ps);
SW_Refresh(hwnd, hdc, self);
EndPaint32(hwnd, &ps);
return 0;
}
LRESULT StatusWindowProc( HWND32 hwnd, UINT32 msg,
WPARAM32 wParam, LPARAM lParam )
{
STATUSWINDOWINFO *self;
self = GetStatusInfo(hwnd);
switch (msg) {
case SB_GETBORDERS:
return SW_GetBorders(self, hwnd, wParam, lParam);
case SB_GETPARTS:
return SW_GetParts(self, hwnd, wParam, lParam);
case SB_GETRECT:
return SW_GetRect(self, hwnd, wParam, lParam);
case SB_GETTEXT32A:
return SW_GetText(self, hwnd, wParam, lParam);
case SB_GETTEXTLENGTH32A:
return SW_GetTextLength(self, hwnd, wParam, lParam);
case SB_SETMINHEIGHT:
return SW_SetMinHeight(self, hwnd, wParam, lParam);
case SB_SETPARTS:
return SW_SetParts(self, hwnd, wParam, lParam);
case SB_SETTEXT32A:
return SW_SetText(self, hwnd, wParam, lParam);
case SB_SIMPLE:
return SW_Simple(self, hwnd, wParam, lParam);
case WM_CREATE:
return SW_Create(self, hwnd, wParam, lParam);
case WM_DESTROY:
return SW_Destroy(self, hwnd, wParam, lParam);
case WM_PAINT:
return SW_Paint(self, hwnd);
case WM_SIZE:
return SW_Size(self, hwnd, wParam, lParam);
default:
return DefWindowProc32A(hwnd, msg, wParam, lParam);
}
return 0;
}
/***********************************************************************
* CreateStatusWindow32A (COMCTL32.4)
*/
HWND32 CreateStatusWindow32A( INT32 style, LPCSTR text, HWND32 parent,
UINT32 wid )
{
HWND32 ret;
ATOM atom;
atom = GlobalFindAtom32A(STATUSCLASSNAME32A);
if (!atom) {
/* Some apps don't call InitCommonControls */
InitCommonControls();
}
ret = CreateWindowEx32A(0, STATUSCLASSNAME32A, "Status Window",
style, CW_USEDEFAULT32, CW_USEDEFAULT32,
CW_USEDEFAULT32, CW_USEDEFAULT32, parent, 0, 0, 0);
return (ret);
}

View File

@ -5,8 +5,10 @@
*/
#include "win.h"
#include "commctrl.h"
#include "button.h"
#include "static.h"
#include "status.h"
#include "scroll.h"
#include "desktop.h"
#include "mdi.h"
@ -49,6 +51,7 @@ static const BUILTIN_CLASS_INFO16 WIDGETS_BuiltinClasses16[] =
#define NB_BUILTIN_CLASSES16 \
(sizeof(WIDGETS_BuiltinClasses16)/sizeof(WIDGETS_BuiltinClasses16[0]))
static WNDCLASS32A WIDGETS_BuiltinClasses32[] =
{
{ CS_GLOBALCLASS | CS_DBLCLKS | CS_VREDRAW | CS_HREDRAW | CS_PARENTDC,
@ -61,6 +64,16 @@ static WNDCLASS32A WIDGETS_BuiltinClasses32[] =
(sizeof(WIDGETS_BuiltinClasses32)/sizeof(WIDGETS_BuiltinClasses32[0]))
static WNDCLASS32A WIDGETS_CommonControls32[] =
{
{ CS_GLOBALCLASS | CS_VREDRAW | CS_HREDRAW, StatusWindowProc, 0,
sizeof(STATUSWINDOWINFO), 0, 0, 0, 0, 0, STATUSCLASSNAME32A },
};
#define NB_COMMON_CONTROLS32 \
(sizeof(WIDGETS_CommonControls32)/sizeof(WIDGETS_CommonControls32[0]))
/***********************************************************************
* WIDGETS_Init
*
@ -108,3 +121,23 @@ BOOL WIDGETS_Init(void)
SEGPTR_FREE(name);
return TRUE;
}
/***********************************************************************
* InitCommonControls (COMCTL32.15)
*/
void InitCommonControls(void)
{
int i;
char name[30];
WNDCLASS32A *class32 = WIDGETS_CommonControls32;
for (i = 0; i < NB_COMMON_CONTROLS32; i++, class32++)
{
/* Just to make sure the string is > 0x10000 */
strcpy( name, (char *)class32->lpszClassName );
class32->lpszClassName = name;
class32->hCursor = LoadCursor16( 0, IDC_ARROW );
RegisterClass32A( class32 );
}
}

View File

@ -63,6 +63,7 @@ relevant developer as feasonable.
^^^^^^
|Returnvalue is 16 bit and has the value 7.
3. If you have found a misbehaving function, try to find out why it
misbehaves. Find the function in the source code. Try to make sense of
the arguments passed. Usually there is a
@ -70,15 +71,30 @@ relevant developer as feasonable.
function. Rerun wine with "-debugmsg +xyz,+relay" added to the
commandline.
4. If the crash happened in a function in WINE, find out the exact line using
gdb (the sample crash has another reason):
|... somewhere in the backtrace ...
|5 0x080e5ad8 (CreateWindowEx32A+0xd8)
|...
|$ gdb wine
|...
|(gdb) l *0x080e5ad8
|0x80e5ad8 is in CreateWindowEx32A (win.c:837).
|...
|837 return WIN_CreateWindowEx( &cs, classAtom, FALSE );
|...
4. If those information isn't clear enough or if you want to know more about
5. If those information isn't clear enough or if you want to know more about
what's happening in the function itself, try running wine with "-debugmsg
+all", which dumps ALL included debug information in wine.
5. If that isn't enough add more debug output for yourself into the
6. If that isn't enough add more debug output for yourself into the
functions you find relevant.
You might also try to run the program in gdb instead of using the
WINE-debugger.
6. You can also set a breakpoint for that function. Start wine with the
7. You can also set a breakpoint for that function. Start wine with the
"-debug" option added to the commandline. After loading the executable
wine will enter the internal debugger. Use "break KERNEL.LSTRLEN"
(replace by function you want to debug, CASE IS RELEVANT.) to set a
@ -95,7 +111,7 @@ Program hangs, nothing happens
Switch to UNIX shell, get the process-ID using "ps -a|grep wine", and do a
"kill -HUP <pid>" (without " and <>). Wine will then enter its internal
debugger and you can procede as explained above.
debugger and you can proceed as explained above.
Program reports an error with a Messagebox
==========================================
@ -113,6 +129,44 @@ Program reports an error with a Messagebox
above.
Disassembling programs:
=======================
You may also try to disassemble the offending program to check for
undocumented features and/or use of them.
The best, freely available, disassembler for win16 programs is
Windows Codeback, archivename wcbxxx.zip, which usually can be found
in the Cica-Mirror subdirectory on the WINE ftpsites. (See ANNOUNCE).
Disassembling win32 programs is currenty only possible using
Windows Disassembler 32, archivename something like wdasm32x.zip on
ftp.winsite.com and mirrors.
Understanding disassembled code is just a question of exercise.
Most code out there uses standard C function entries (for it is usually
written in C). Win16 function entries usually look like that:
| push bp
| mov bp, sp
| ... function code ..
| retf XXXX <--------- XXXX is number of bytes of arguments
This is a FAR function with no local storage. The arguments usually start
at [bp+6] with increasing offsets. Note, that [bp+6] belongs to the RIGHTMOST
argument, for exported win16 functions use the PASCAL calling convention.
So, if we use strcmp(a,b) with a and b both 32 bit variables b would be at
[bp+6] and a at [bp+10].
Most functions make also use of local storage in the stackframe:
| enter 0086, 00
| ... function code ...
| leave
| retf XXXX
This does mostly the same as above, but also adds 0x86 bytes of
stackstorage, which is accessed using [bp-xx].
Before calling a function, arguments are pushed on the stack using something
like this:
| push word ptr [bp-02] <- will be at [bp+8]
| push di <- will be at [bp+6]
| call KERNEL.LSTRLEN
Here first the selector and then the offset to the passed string are pushed.
Sample debugging session:
=========================

View File

@ -205,13 +205,13 @@ located in windows/, controls/, and misc/ directories.
b) Intertask/interthread SendMessage. The system has to inform the
target queue about the forthcoming message, then it has to
carry out the context switch and wait until the result is
available. In Win16 it is done by putting necessary parameters
into the queue structure and do a DirectedYield() call.
However, in Win32 there could be several messages pending sent
by preemptively executing threads, and in this case SendMessage
has to build some sort of message queue for sent
messages. Another issue is what to do with messages sent to the
sender when it is blocked inside its own SendMessage. At this
point Wine does not address any of these problems.
target queue about the forthcoming message, then it has to carry
out the context switch and wait until the result is available.
Win16 stores necessary parameters in the queue structure and then
calls DirectedYield() function. However, in Win32 there could be
several messages pending sent by preemptively executing threads,
and in this case SendMessage has to build some sort of message
queue for sent messages. Another issue is what to do with messages
sent to the sender when it is blocked inside its own SendMessage.
At this point Wine addresses very few of these problems.

View File

@ -906,10 +906,12 @@ found:
p=p+1;
else
p=testpath;
if (p-testpath<buflen)
*lastpart=(p-testpath)+buf;
else
*lastpart=NULL;
if (lastpart) {
if (p-testpath<buflen)
*lastpart=(p-testpath)+buf;
else
*lastpart=NULL;
}
dprintf_file(stddeb," -> found %s,last part is %s\n",testpath,p);
return strlen(testpath);
}
@ -930,10 +932,12 @@ DWORD SearchPath32W(
ret=SearchPath32A(pathA,fnA,extA,buflen,bufA,&lastpartA);
lstrcpynAtoW(buf,bufA,buflen);
if (lastpartA)
*lastpart = buf+(lastpartA-bufA);
else
*lastpart = NULL;
if (lastpart) {
if (lastpartA)
*lastpart = buf+(lastpartA-bufA);
else
*lastpart = NULL;
}
free(bufA);
free(fnA);
if (pathA) free(pathA);

View File

@ -5,8 +5,8 @@ base 2
00 stub MenuHelp
01 stub ShowHideMenuCtl
02 stub GetEffectiveClientRect
03 stub DrawStatusTextA
04 stub CreateStatusWindowA
03 stdcall DrawStatusTextA(long ptr ptr long) DrawStatusText32A
04 stdcall CreateStatusWindowA(long ptr long long) CreateStatusWindow32A
05 stub CreateToolbar
06 stub CreateMappedBitmap
07 stub CreatePropertySheetPage
@ -17,7 +17,7 @@ base 2
12 stub LBItemFromPt
13 stub DrawInsert
14 stub CreateUpDownControl
15 return InitCommonControls 4 0
15 stdcall InitCommonControls() InitCommonControls
16 stub CreateStatusWindowW
17 stub CreateToolbarEx
18 stub DestroyPropertySheetPage

View File

@ -1,3 +1,4 @@
# C RunTime DLL. All functions use cdecl!
name crtdll
type win32
base 1
@ -23,9 +24,9 @@ base 1
019 stub _CItanh
020 stub _HUGE_dll
021 stub _XcptFilter
022 stub __GetMainArgs
023 stub __argc_dll
024 stub __argv_dll
022 cdecl __GetMainArgs(ptr ptr ptr long) CRTDLL__GetMainArgs
023 extern __argc_dll CRTDLL_argc_dll
024 extern __argv_dll CRTDLL_argv_dll
025 stub __dllonexit
026 stub __doserrno
027 stub __fpecode
@ -39,13 +40,13 @@ base 1
035 stub __toascii
036 stub _abnormal_termination
037 stub _access
038 stub _acmdln_dll
038 extern _acmdln_dll CRTDLL_acmdln_dll
039 stub _aexit_rtn_dll
040 stub _amsg_exit
041 stub _assert
042 stub _basemajor_dll
043 stub _baseminor_dll
044 stub _baseversion_dll
042 extern _basemajor_dll CRTDLL_basemajor_dll
043 extern _baseminor_dll CRTDLL_baseminor_dll
044 extern _baseversion_dll CRTDLL_baseversion_dll
045 stub _beep
046 stub _beginthread
047 stub _c_exit
@ -76,7 +77,7 @@ base 1
072 stub _dup2
073 stub _ecvt
074 stub _endthread
075 stub _environ_dll
075 extern _environ_dll CRTDLL_environ_dll
076 stub _eof
077 stub _errno
078 stub _except_handler2
@ -136,9 +137,9 @@ base 1
132 stub _heapset
133 stub _heapwalk
134 stub _hypot
135 stub _initterm
135 cdecl _initterm(ptr ptr) CRTDLL__initterm
136 stub _iob
137 stub _isatty
137 cdecl _isatty(long) CRTDLL__isatty
138 stub _isctype
139 stub _ismbbalnum
140 stub _ismbbalpha
@ -242,11 +243,11 @@ base 1
238 stub _onexit
239 stub _open
240 stub _open_osfhandle
241 stub _osmajor_dll
242 stub _osminor_dll
243 stub _osmode_dll
244 stub _osver_dll
245 stub _osversion_dll
241 extern _osmajor_dll CRTDLL_osmajor_dll
242 extern _osminor_dll CRTDLL_osminor_dll
243 long _osmode_dll(0)
244 extern _osver_dll CRTDLL_osver_dll
245 extern _osversion_dll CRTDLL_osversion_dll
246 stub _pclose
247 stub _pctype_dll
248 stub _pgmptr_dll
@ -330,10 +331,10 @@ base 1
326 stub _wcsrev
327 stub _wcsset
328 stub _wcsupr
329 stub _winmajor_dll
330 stub _winminor_dll
331 stub _winver_dll
332 stub _write
329 extern _winmajor_dll CRTDLL_winmajor_dll
330 extern _winminor_dll CRTDLL_winminor_dll
331 extern _winver_dll CRTDLL_winver_dll
332 cdecl _write(long ptr long) CRTDLL__write
333 stub _wtoi
334 stub _wtol
335 stub _y0
@ -360,13 +361,13 @@ base 1
356 stub ctime
357 stub difftime
358 stub div
359 stub exit
359 cdecl exit(long) CRTDLL_exit
360 stub exp
361 stub fabs
362 stub fclose
363 stub feof
364 stub ferror
365 stub fflush
365 cdecl fflush(ptr) CRTDLL_fflush
366 stub fgetc
367 stub fgetpos
368 stub fgets
@ -374,7 +375,7 @@ base 1
370 stub floor
371 stub fmod
372 stub fopen
373 stub fprintf
373 cdecl fprintf() CRTDLL_fprintf
374 stub fputc
375 stub fputs
376 stub fputwc
@ -392,7 +393,7 @@ base 1
388 stub getc
389 stub getchar
390 stub getenv
391 stub gets
391 cdecl gets(ptr) CRTDLL_gets
392 stub gmtime
393 stub is_wctype
394 stub isalnum
@ -441,9 +442,9 @@ base 1
437 stub modf
438 stub perror
439 stub pow
440 stub printf
440 cdecl printf() CRTDLL_printf
441 stub putc
442 stub putchar
442 cdecl putchar(long) CRTDLL_putchar
443 stub puts
444 stub qsort
445 stub raise
@ -461,7 +462,7 @@ base 1
457 stub sinh
458 stub sprintf
459 stub sqrt
460 stub srand
460 cdecl srand(long) CRTDLL_srand
461 stub sscanf
462 stub strcat
463 stub strchr
@ -489,11 +490,11 @@ base 1
485 stub system
486 stub tan
487 stub tanh
488 stub time
488 cdecl time(ptr) CRTDLL_time
489 stub tmpfile
490 stub tmpnam
491 stub tolower
492 stub toupper
492 cdecl toupper(long) CRTDLL_toupper
493 stub towlower
494 stub towupper
495 stub ungetc

View File

@ -4,28 +4,26 @@
* Copyright (c) 1996 Onno Hovers, (onno@stack.urc.tue.nl)
*
*/
#if defined(__svr4__) || defined(_SCO_DS)
#define __ELF__ 1
#endif
#include "../include/config.h"
#ifndef __ELF__
#ifdef NEED_UNDERSCORE_PREFIX
.globl _EXC_CallUnhandledExceptionFilter
_EXC_CallUnhandledExceptionFilter:
#else /* __ELF__ */
#else
.globl EXC_CallUnhandledExceptionFilter
EXC_CallUnhandledExceptionFilter:
#endif /* __ELF__ */
#endif /* NEED_UNDERSCORE_PREFIX */
leal 4(%esp),%eax
pushl %eax
#ifndef __ELF__
#ifdef NEED_UNDERSCORE_PREFIX
call *_pTopExcHandler
#else /* __ELF__ */
#else
call *pTopExcHandler
#endif /* __ELF__ */
#endif /* NEED_UNDERSCORE_PREFIX */
movl %ebp,%esp
ret
@ -95,7 +93,7 @@
#define PARM_EBP 4
#define PARM_EFLAGS 0
#ifndef __ELF__
#ifdef NEED_UNDERSCORE_PREFIX
.globl _RaiseException
_RaiseException:
@ -107,7 +105,7 @@
_RtlUnwind:
push $_EXC_RtlUnwind
#else /* __ELF__ */
#else /* NEED_UNDERSCORE_PREFIX */
.globl RaiseException
RaiseException:
@ -118,7 +116,7 @@
RtlUnwind:
push $EXC_RtlUnwind
#endif /* __ELF__ */
#endif /* NEED_UNDERSCORE_PREFIX */
ContextCall:
pushl %ebp

View File

@ -269,7 +269,7 @@ heap 65488 # 65536 - 16 (instance data) - 32 (stock objects)
405 stub FINALGDIINIT
407 stub CREATEUSERBITMAP
409 stub CREATEUSERDISCARDABLEBITMAP
410 stub ISVALIDMETAFILE
410 pascal16 IsValidMetaFile (word) IsValidMetaFile
411 pascal16 GetCurLogFont(word) GetCurLogFont
412 pascal16 IsDCCurrentPalette(word) IsDCCurrentPalette
439 pascal16 StretchDIBits (word s_word s_word word word word word

View File

@ -3,7 +3,7 @@ type win16
1 stub FatalExit
2 stub ExitKernel
3 pascal GetVersion() GetVersion
3 pascal GetVersion() GetVersion16
4 pascal16 LocalInit(word word word) LocalInit
5 pascal16 LocalAlloc(word word) LocalAlloc16
6 pascal16 LocalReAlloc(word word word) LocalReAlloc16

View File

@ -121,18 +121,18 @@ base 1
0116 stub FillConsoleOutputCharacterW
0117 stub FindAtomA
0118 stub FindAtomW
0119 stub FindClose
0119 stdcall FindClose(long) FindClose
0120 stub FindCloseChangeNotification
0121 stub FindFirstChangeNotificationA
0122 stub FindFirstChangeNotificationW
0123 stdcall FindFirstFileA(ptr ptr) FindFirstFile32A
0124 stub FindFirstFileW
0125 stub FindNextChangeNotification
0126 stub FindNextFileA
0126 stdcall FindNextFileA(long ptr) FindNextFile32A
0127 stub FindNextFileW
0128 stdcall FindResourceA(long ptr ptr) FindResource32A
0129 stub FindResourceExA
0130 stub FindResourceExW
0129 stdcall FindResourceExA(long ptr ptr long) FindResourceEx32A
0130 stdcall FindResourceExW(long ptr ptr long) FindResourceEx32W
0131 stdcall FindResourceW(long ptr ptr) FindResource32W
0132 stub FlushConsoleInputBuffer
0133 stdcall FlushFileBuffers(long) FlushFileBuffers
@ -140,7 +140,7 @@ base 1
0135 stub FlushViewOfFile
0136 stub FoldStringA
0137 stub FoldStringW
0138 stdcall FormatMessageA(long ptr long long ptr long ptr) FormatMessage32A
0138 stdcall FormatMessageA() WIN32_FormatMessage32A
0139 stub FormatMessageW
0140 stub FreeConsole
0141 stdcall FreeEnvironmentStringsA(ptr) FreeEnvironmentStringsA
@ -163,8 +163,8 @@ base 1
0158 stub GetCommProperties
0159 stdcall GetCommState(long ptr) GetCommState32
0160 stdcall GetCommTimeouts(long ptr) GetCommTimeouts
0161 stdcall GetCommandLineA() GetCommandLineA
0162 stub GetCommandLineW
0161 stdcall GetCommandLineA() GetCommandLine32A
0162 stdcall GetCommandLineW() GetCommandLine32W
0163 stub GetCompressedFileSizeA
0164 stub GetCompressedFileSizeW
0165 stub GetComputerNameA

View File

@ -33,7 +33,7 @@ base 1
0028 stub FindExeDlgProc
0029 stub FindExecutableA
0030 stub FindExecutableW
0031 stub FreeIconList
0031 return FreeIconList 4 0
0032 stub InternalExtractIconListA
0033 stub InternalExtractIconListW
0034 stub OpenAs_RunDLL

View File

@ -11,8 +11,8 @@ base 0
007 stub getsockopt
008 stub htonl
009 stub htons
010 stub inet_addr
011 stub inet_ntoa
010 stdcall inet_addr(ptr) inet_addr
011 stdcall inet_ntoa(ptr) inet_ntoa
012 stub ioctlsocket
013 stub listen
014 stub ntohl
@ -25,11 +25,11 @@ base 0
021 stub setsockopt
022 stub shutdown
023 stub socket
051 stub gethostbyaddr
051 stdcall gethostbyaddr(ptr long long) gethostbyaddr
052 stub gethostbyname
053 stub getprotobyname
054 stub getprotobynumber
055 stub getservbyname
055 stdcall getservbyname(ptr ptr) getservbyname
056 stub getservbyport
057 stub gethostname
101 stub WSAAsyncSelect
@ -46,21 +46,21 @@ base 0
112 stub WSASetLastError
113 stub WSACancelBlockingCall
114 stub WSAIsBlocking
115 stub WSAStartup
116 stub WSACleanup
115 stdcall WSAStartup(long ptr) WSAStartup
116 stdcall WSACleanup() WSACleanup
151 stub __WSAFDIsSet
#500 stub WEP
# applications *should* 'degrade gracefully if these are not present
# ... as it is, they don't
#1000 stub WSApSetPostRoutine
#1100 stub inet_network
#1101 stub getnetbyname
1100 stub inet_network
1101 stub getnetbyname
#1102 stub rcmd
#1103 stub rexec
#1104 stub rresvport
#1105 stub sethostname
#1106 stub dn_expand
#1107 stub WSARecvEx
1107 stub WSARecvEx
1108 stub s_perror
1109 stub GetAddressByNameA
1110 stub GetAddressByNameW

7
include/acconfig.h Normal file
View File

@ -0,0 +1,7 @@
/*
* This file is used by 'autoheader' to generate the list of symbols
* defined in the 'configure' script.
*/
/* Define if symbols declared in assembly code need an underscore prefix */
#undef NEED_UNDERSCORE_PREFIX

View File

@ -1,7 +1,6 @@
#ifndef __WINE_ADVAPI32_H
#define __WINE_ADVAPI32_H
#include "shell.h"
#include "kernel32.h"
BOOL GetUserNameA (char * lpBuffer, DWORD *nSize);

View File

@ -48,7 +48,7 @@ extern int DIB_GetImageWidthBytes( int width, int depth );
extern int DIB_BitmapInfoSize( BITMAPINFO * info, WORD coloruse );
/* objects/oembitmap.c */
extern HBITMAP OBM_LoadBitmap( WORD id );
extern HANDLE OBM_LoadCursorIcon( WORD id, BOOL fCursor );
extern HBITMAP16 OBM_LoadBitmap( WORD id );
extern HGLOBAL16 OBM_LoadCursorIcon( WORD id, BOOL32 fCursor );
#endif /* __WINE_BITMAP_H */

View File

@ -64,6 +64,8 @@ extern WORD CallTo16_regs_( FARPROC16 func, WORD ds, WORD es, WORD bp, WORD ax,
style, MAKELONG(y,x), MAKELONG(cy,cx), \
MAKELONG(hmenu,hparent), instance, params, \
hwnd, msg, wParam, lParam )
#define _InitTermProc( func ) CallTo32_0( (FARPROC32)func )
/* List of the 32-bit callback functions. This list is used */
/* by the build program to generate the file if1632/callto32.S */
@ -99,6 +101,8 @@ extern LONG CallTo32_4( FARPROC32, DWORD, DWORD, DWORD, DWORD );
(*func)( hwnd, msg, wParam, lParam )
#define CallWordBreakProc( func, lpch, ichCurrent, cch, code ) \
(*func)( lpch, ichCurrent, cch, code )
#define _InitTermProc( func ) (*func)()
#endif /* WINELIB */

51
include/commctrl.h Normal file
View File

@ -0,0 +1,51 @@
/*
* Common controls definitions
*/
#ifndef __WINE_COMMCTRL_H
#define __WINE_COMMCTRL_H
#include "windows.h"
void InitCommonControls(void);
/* StatusWindow */
#define STATUSCLASSNAME16 "msctls_statusbar"
#define STATUSCLASSNAME32A "msctls_statusbar32"
#define STATUSCLASSNAME32W "msctls_statusbar32"
#define STATUSCLASSNAME WINELIB_NAME_AW(STATUSCLASSNAME)
#define SB_SETTEXT32A (WM_USER+1)
#define SB_SETTEXT32W (WM_USER+11)
#define SB_SETTEXT WINELIB_NAME_AW(SB_SETTEXT)
#define SB_GETTEXT32A (WM_USER+2)
#define SB_GETTEXT32W (WM_USER+13)
#define SB_GETTEXT WINELIB_NAME_AW(SB_GETTEXT)
#define SB_GETTEXTLENGTH32A (WM_USER+3)
#define SB_GETTEXTLENGTH32W (WM_USER+12)
#define SB_GETTEXTLENGTH WINELIB_NAME_AW(SB_GETTEXTLENGTH)
#define SB_SETPARTS (WM_USER+4)
#define SB_GETPARTS (WM_USER+6)
#define SB_GETBORDERS (WM_USER+7)
#define SB_SETMINHEIGHT (WM_USER+8)
#define SB_SIMPLE (WM_USER+9)
#define SB_GETRECT (WM_USER+10)
#define SBT_NOBORDERS 0x0100
#define SBT_POPOUT 0x0200
#define SBT_RTLREADING 0x0400
#define SBT_OWNERDRAW 0x1000
#define CCS_BOTTOM 0x0003
#define SBARS_SIZEGRIP 0x0100
HWND32 CreateStatusWindow32A(INT32,LPCSTR,HWND32,UINT32);
HWND32 CreateStatusWindow32W(INT32,LPCWSTR,HWND32,UINT32);
#define CreateStatusWindow WINELIB_NAME_AW(CreateStatusWindow)
VOID DrawStatusText32A(HDC32,LPRECT32,LPCSTR,UINT32);
VOID DrawStatusText32W(HDC32,LPRECT32,LPCWSTR,UINT32);
#define DrawStatusText WINELIB_NAME_AW(DrawStatusText)
#endif /* __WINE_COMMCTRL_H */

View File

@ -206,8 +206,8 @@ typedef CHOOSEFONT *LPCHOOSEFONT;
typedef struct {
DWORD lStructSize;
HWND hwndOwner;
HGLOBAL hDevMode;
HGLOBAL hDevNames;
HGLOBAL16 hDevMode;
HGLOBAL16 hDevNames;
HDC hDC;
DWORD Flags;
UINT nFromPage;
@ -221,8 +221,8 @@ typedef struct {
WNDPROC16 lpfnSetupHook;
SEGPTR lpPrintTemplateName;
SEGPTR lpSetupTemplateName;
HGLOBAL hPrintTemplate;
HGLOBAL hSetupTemplate;
HGLOBAL16 hPrintTemplate;
HGLOBAL16 hSetupTemplate;
} PRINTDLG;
typedef PRINTDLG * LPPRINTDLG;

View File

@ -15,6 +15,9 @@
/* Define if you have the ANSI C header files. */
#undef STDC_HEADERS
/* Define if symbols declared in assembly code need an underscore prefix */
#undef NEED_UNDERSCORE_PREFIX
/* Define if you have the memmove function. */
#undef HAVE_MEMMOVE

View File

@ -23,12 +23,12 @@ typedef struct {
REL_PTR rel;
}DDE_HWND;
WORD DDE_SyncHandle(HGLOBAL handle, WORD sel);
WORD DDE_SyncHandle(HGLOBAL16 handle, WORD sel);
void *DDE_malloc(unsigned int flags,unsigned long size, SHMDATA *shmdata);
HANDLE DDE_GlobalReAlloc(WORD,long,WORD);
HGLOBAL DDE_GlobalFree(HGLOBAL block);
void *DDE_AttachHandle(HGLOBAL handle, SEGPTR *segptr);
WORD DDE_GlobalHandleToSel( HGLOBAL handle );
HGLOBAL16 DDE_GlobalFree(HGLOBAL16 block);
void *DDE_AttachHandle(HGLOBAL16 handle, SEGPTR *segptr);
WORD DDE_GlobalHandleToSel( HGLOBAL16 handle );
int DDE_GlobalUnlock(int);
HANDLE DDE_GlobalSize(WORD);
HANDLE DDE_GlobalHandle(WORD);

View File

@ -28,6 +28,7 @@
#undef DEBUG_COMBO
#undef DEBUG_COMM
#undef DEBUG_COMMDLG
#undef DEBUG_CRTDLL
#undef DEBUG_CURSOR
#undef DEBUG_DC
#undef DEBUG_DDE
@ -105,6 +106,7 @@
#define DEBUG_COMBO
#define DEBUG_COMM
#define DEBUG_COMMDLG
#define DEBUG_CRTDLL
#define DEBUG_CURSOR
#define DEBUG_DC
#define DEBUG_DDE
@ -232,6 +234,11 @@ short debug_msg_enabled[]={
#else
0,
#endif
#ifdef DEBUG_CRTDLL
1,
#else
0,
#endif
#ifdef DEBUG_CURSOR
1,
#else
@ -706,8 +713,21 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_cursor if(!debug_msg_enabled[12]) ; else fprintf
#define debugging_cursor debug_msg_enabled[12]
#define dprintf_crtdll if(!debug_msg_enabled[12]) ; else fprintf
#define debugging_crtdll debug_msg_enabled[12]
#else
#ifdef DEBUG_CRTDLL
#define dprintf_crtdll fprintf
#define debugging_crtdll 1
#else
#define dprintf_crtdll while(0) fprintf
#define debugging_crtdll 0
#endif
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_cursor if(!debug_msg_enabled[13]) ; else fprintf
#define debugging_cursor debug_msg_enabled[13]
#else
#ifdef DEBUG_CURSOR
#define dprintf_cursor fprintf
@ -719,8 +739,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_dc if(!debug_msg_enabled[13]) ; else fprintf
#define debugging_dc debug_msg_enabled[13]
#define dprintf_dc if(!debug_msg_enabled[14]) ; else fprintf
#define debugging_dc debug_msg_enabled[14]
#else
#ifdef DEBUG_DC
#define dprintf_dc fprintf
@ -732,8 +752,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_dde if(!debug_msg_enabled[14]) ; else fprintf
#define debugging_dde debug_msg_enabled[14]
#define dprintf_dde if(!debug_msg_enabled[15]) ; else fprintf
#define debugging_dde debug_msg_enabled[15]
#else
#ifdef DEBUG_DDE
#define dprintf_dde fprintf
@ -745,8 +765,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_dialog if(!debug_msg_enabled[15]) ; else fprintf
#define debugging_dialog debug_msg_enabled[15]
#define dprintf_dialog if(!debug_msg_enabled[16]) ; else fprintf
#define debugging_dialog debug_msg_enabled[16]
#else
#ifdef DEBUG_DIALOG
#define dprintf_dialog fprintf
@ -758,8 +778,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_dll if(!debug_msg_enabled[16]) ; else fprintf
#define debugging_dll debug_msg_enabled[16]
#define dprintf_dll if(!debug_msg_enabled[17]) ; else fprintf
#define debugging_dll debug_msg_enabled[17]
#else
#ifdef DEBUG_DLL
#define dprintf_dll fprintf
@ -771,8 +791,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_dosfs if(!debug_msg_enabled[17]) ; else fprintf
#define debugging_dosfs debug_msg_enabled[17]
#define dprintf_dosfs if(!debug_msg_enabled[18]) ; else fprintf
#define debugging_dosfs debug_msg_enabled[18]
#else
#ifdef DEBUG_DOSFS
#define dprintf_dosfs fprintf
@ -784,8 +804,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_driver if(!debug_msg_enabled[18]) ; else fprintf
#define debugging_driver debug_msg_enabled[18]
#define dprintf_driver if(!debug_msg_enabled[19]) ; else fprintf
#define debugging_driver debug_msg_enabled[19]
#else
#ifdef DEBUG_DRIVER
#define dprintf_driver fprintf
@ -797,8 +817,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_edit if(!debug_msg_enabled[19]) ; else fprintf
#define debugging_edit debug_msg_enabled[19]
#define dprintf_edit if(!debug_msg_enabled[20]) ; else fprintf
#define debugging_edit debug_msg_enabled[20]
#else
#ifdef DEBUG_EDIT
#define dprintf_edit fprintf
@ -810,8 +830,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_env if(!debug_msg_enabled[20]) ; else fprintf
#define debugging_env debug_msg_enabled[20]
#define dprintf_env if(!debug_msg_enabled[21]) ; else fprintf
#define debugging_env debug_msg_enabled[21]
#else
#ifdef DEBUG_ENV
#define dprintf_env fprintf
@ -823,8 +843,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_event if(!debug_msg_enabled[21]) ; else fprintf
#define debugging_event debug_msg_enabled[21]
#define dprintf_event if(!debug_msg_enabled[22]) ; else fprintf
#define debugging_event debug_msg_enabled[22]
#else
#ifdef DEBUG_EVENT
#define dprintf_event fprintf
@ -836,8 +856,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_exec if(!debug_msg_enabled[22]) ; else fprintf
#define debugging_exec debug_msg_enabled[22]
#define dprintf_exec if(!debug_msg_enabled[23]) ; else fprintf
#define debugging_exec debug_msg_enabled[23]
#else
#ifdef DEBUG_EXEC
#define dprintf_exec fprintf
@ -849,8 +869,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_file if(!debug_msg_enabled[23]) ; else fprintf
#define debugging_file debug_msg_enabled[23]
#define dprintf_file if(!debug_msg_enabled[24]) ; else fprintf
#define debugging_file debug_msg_enabled[24]
#else
#ifdef DEBUG_FILE
#define dprintf_file fprintf
@ -862,8 +882,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_fixup if(!debug_msg_enabled[24]) ; else fprintf
#define debugging_fixup debug_msg_enabled[24]
#define dprintf_fixup if(!debug_msg_enabled[25]) ; else fprintf
#define debugging_fixup debug_msg_enabled[25]
#else
#ifdef DEBUG_FIXUP
#define dprintf_fixup fprintf
@ -875,8 +895,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_font if(!debug_msg_enabled[25]) ; else fprintf
#define debugging_font debug_msg_enabled[25]
#define dprintf_font if(!debug_msg_enabled[26]) ; else fprintf
#define debugging_font debug_msg_enabled[26]
#else
#ifdef DEBUG_FONT
#define dprintf_font fprintf
@ -888,8 +908,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_gdi if(!debug_msg_enabled[26]) ; else fprintf
#define debugging_gdi debug_msg_enabled[26]
#define dprintf_gdi if(!debug_msg_enabled[27]) ; else fprintf
#define debugging_gdi debug_msg_enabled[27]
#else
#ifdef DEBUG_GDI
#define dprintf_gdi fprintf
@ -901,8 +921,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_global if(!debug_msg_enabled[27]) ; else fprintf
#define debugging_global debug_msg_enabled[27]
#define dprintf_global if(!debug_msg_enabled[28]) ; else fprintf
#define debugging_global debug_msg_enabled[28]
#else
#ifdef DEBUG_GLOBAL
#define dprintf_global fprintf
@ -914,8 +934,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_graphics if(!debug_msg_enabled[28]) ; else fprintf
#define debugging_graphics debug_msg_enabled[28]
#define dprintf_graphics if(!debug_msg_enabled[29]) ; else fprintf
#define debugging_graphics debug_msg_enabled[29]
#else
#ifdef DEBUG_GRAPHICS
#define dprintf_graphics fprintf
@ -927,8 +947,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_heap if(!debug_msg_enabled[29]) ; else fprintf
#define debugging_heap debug_msg_enabled[29]
#define dprintf_heap if(!debug_msg_enabled[30]) ; else fprintf
#define debugging_heap debug_msg_enabled[30]
#else
#ifdef DEBUG_HEAP
#define dprintf_heap fprintf
@ -940,8 +960,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_hook if(!debug_msg_enabled[30]) ; else fprintf
#define debugging_hook debug_msg_enabled[30]
#define dprintf_hook if(!debug_msg_enabled[31]) ; else fprintf
#define debugging_hook debug_msg_enabled[31]
#else
#ifdef DEBUG_HOOK
#define dprintf_hook fprintf
@ -953,8 +973,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_icon if(!debug_msg_enabled[31]) ; else fprintf
#define debugging_icon debug_msg_enabled[31]
#define dprintf_icon if(!debug_msg_enabled[32]) ; else fprintf
#define debugging_icon debug_msg_enabled[32]
#else
#ifdef DEBUG_ICON
#define dprintf_icon fprintf
@ -966,8 +986,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_int if(!debug_msg_enabled[32]) ; else fprintf
#define debugging_int debug_msg_enabled[32]
#define dprintf_int if(!debug_msg_enabled[33]) ; else fprintf
#define debugging_int debug_msg_enabled[33]
#else
#ifdef DEBUG_INT
#define dprintf_int fprintf
@ -979,8 +999,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_key if(!debug_msg_enabled[33]) ; else fprintf
#define debugging_key debug_msg_enabled[33]
#define dprintf_key if(!debug_msg_enabled[34]) ; else fprintf
#define debugging_key debug_msg_enabled[34]
#else
#ifdef DEBUG_KEY
#define dprintf_key fprintf
@ -992,8 +1012,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_keyboard if(!debug_msg_enabled[34]) ; else fprintf
#define debugging_keyboard debug_msg_enabled[34]
#define dprintf_keyboard if(!debug_msg_enabled[35]) ; else fprintf
#define debugging_keyboard debug_msg_enabled[35]
#else
#ifdef DEBUG_KEYBOARD
#define dprintf_keyboard fprintf
@ -1005,8 +1025,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_ldt if(!debug_msg_enabled[35]) ; else fprintf
#define debugging_ldt debug_msg_enabled[35]
#define dprintf_ldt if(!debug_msg_enabled[36]) ; else fprintf
#define debugging_ldt debug_msg_enabled[36]
#else
#ifdef DEBUG_LDT
#define dprintf_ldt fprintf
@ -1018,8 +1038,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_listbox if(!debug_msg_enabled[36]) ; else fprintf
#define debugging_listbox debug_msg_enabled[36]
#define dprintf_listbox if(!debug_msg_enabled[37]) ; else fprintf
#define debugging_listbox debug_msg_enabled[37]
#else
#ifdef DEBUG_LISTBOX
#define dprintf_listbox fprintf
@ -1031,8 +1051,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_local if(!debug_msg_enabled[37]) ; else fprintf
#define debugging_local debug_msg_enabled[37]
#define dprintf_local if(!debug_msg_enabled[38]) ; else fprintf
#define debugging_local debug_msg_enabled[38]
#else
#ifdef DEBUG_LOCAL
#define dprintf_local fprintf
@ -1044,8 +1064,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_mci if(!debug_msg_enabled[38]) ; else fprintf
#define debugging_mci debug_msg_enabled[38]
#define dprintf_mci if(!debug_msg_enabled[39]) ; else fprintf
#define debugging_mci debug_msg_enabled[39]
#else
#ifdef DEBUG_MCI
#define dprintf_mci fprintf
@ -1057,8 +1077,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_mcianim if(!debug_msg_enabled[39]) ; else fprintf
#define debugging_mcianim debug_msg_enabled[39]
#define dprintf_mcianim if(!debug_msg_enabled[40]) ; else fprintf
#define debugging_mcianim debug_msg_enabled[40]
#else
#ifdef DEBUG_MCIANIM
#define dprintf_mcianim fprintf
@ -1070,8 +1090,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_mciwave if(!debug_msg_enabled[40]) ; else fprintf
#define debugging_mciwave debug_msg_enabled[40]
#define dprintf_mciwave if(!debug_msg_enabled[41]) ; else fprintf
#define debugging_mciwave debug_msg_enabled[41]
#else
#ifdef DEBUG_MCIWAVE
#define dprintf_mciwave fprintf
@ -1083,8 +1103,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_mdi if(!debug_msg_enabled[41]) ; else fprintf
#define debugging_mdi debug_msg_enabled[41]
#define dprintf_mdi if(!debug_msg_enabled[42]) ; else fprintf
#define debugging_mdi debug_msg_enabled[42]
#else
#ifdef DEBUG_MDI
#define dprintf_mdi fprintf
@ -1096,8 +1116,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_menu if(!debug_msg_enabled[42]) ; else fprintf
#define debugging_menu debug_msg_enabled[42]
#define dprintf_menu if(!debug_msg_enabled[43]) ; else fprintf
#define debugging_menu debug_msg_enabled[43]
#else
#ifdef DEBUG_MENU
#define dprintf_menu fprintf
@ -1109,8 +1129,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_message if(!debug_msg_enabled[43]) ; else fprintf
#define debugging_message debug_msg_enabled[43]
#define dprintf_message if(!debug_msg_enabled[44]) ; else fprintf
#define debugging_message debug_msg_enabled[44]
#else
#ifdef DEBUG_MESSAGE
#define dprintf_message fprintf
@ -1122,8 +1142,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_metafile if(!debug_msg_enabled[44]) ; else fprintf
#define debugging_metafile debug_msg_enabled[44]
#define dprintf_metafile if(!debug_msg_enabled[45]) ; else fprintf
#define debugging_metafile debug_msg_enabled[45]
#else
#ifdef DEBUG_METAFILE
#define dprintf_metafile fprintf
@ -1135,8 +1155,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_midi if(!debug_msg_enabled[45]) ; else fprintf
#define debugging_midi debug_msg_enabled[45]
#define dprintf_midi if(!debug_msg_enabled[46]) ; else fprintf
#define debugging_midi debug_msg_enabled[46]
#else
#ifdef DEBUG_MIDI
#define dprintf_midi fprintf
@ -1148,8 +1168,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_mmio if(!debug_msg_enabled[46]) ; else fprintf
#define debugging_mmio debug_msg_enabled[46]
#define dprintf_mmio if(!debug_msg_enabled[47]) ; else fprintf
#define debugging_mmio debug_msg_enabled[47]
#else
#ifdef DEBUG_MMIO
#define dprintf_mmio fprintf
@ -1161,8 +1181,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_mmsys if(!debug_msg_enabled[47]) ; else fprintf
#define debugging_mmsys debug_msg_enabled[47]
#define dprintf_mmsys if(!debug_msg_enabled[48]) ; else fprintf
#define debugging_mmsys debug_msg_enabled[48]
#else
#ifdef DEBUG_MMSYS
#define dprintf_mmsys fprintf
@ -1174,8 +1194,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_mmtime if(!debug_msg_enabled[48]) ; else fprintf
#define debugging_mmtime debug_msg_enabled[48]
#define dprintf_mmtime if(!debug_msg_enabled[49]) ; else fprintf
#define debugging_mmtime debug_msg_enabled[49]
#else
#ifdef DEBUG_MMTIME
#define dprintf_mmtime fprintf
@ -1187,8 +1207,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_module if(!debug_msg_enabled[49]) ; else fprintf
#define debugging_module debug_msg_enabled[49]
#define dprintf_module if(!debug_msg_enabled[50]) ; else fprintf
#define debugging_module debug_msg_enabled[50]
#else
#ifdef DEBUG_MODULE
#define dprintf_module fprintf
@ -1200,8 +1220,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_msg if(!debug_msg_enabled[50]) ; else fprintf
#define debugging_msg debug_msg_enabled[50]
#define dprintf_msg if(!debug_msg_enabled[51]) ; else fprintf
#define debugging_msg debug_msg_enabled[51]
#else
#ifdef DEBUG_MSG
#define dprintf_msg fprintf
@ -1213,8 +1233,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_nonclient if(!debug_msg_enabled[51]) ; else fprintf
#define debugging_nonclient debug_msg_enabled[51]
#define dprintf_nonclient if(!debug_msg_enabled[52]) ; else fprintf
#define debugging_nonclient debug_msg_enabled[52]
#else
#ifdef DEBUG_NONCLIENT
#define dprintf_nonclient fprintf
@ -1226,8 +1246,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_ole if(!debug_msg_enabled[52]) ; else fprintf
#define debugging_ole debug_msg_enabled[52]
#define dprintf_ole if(!debug_msg_enabled[53]) ; else fprintf
#define debugging_ole debug_msg_enabled[53]
#else
#ifdef DEBUG_OLE
#define dprintf_ole fprintf
@ -1239,8 +1259,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_palette if(!debug_msg_enabled[53]) ; else fprintf
#define debugging_palette debug_msg_enabled[53]
#define dprintf_palette if(!debug_msg_enabled[54]) ; else fprintf
#define debugging_palette debug_msg_enabled[54]
#else
#ifdef DEBUG_PALETTE
#define dprintf_palette fprintf
@ -1252,8 +1272,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_profile if(!debug_msg_enabled[54]) ; else fprintf
#define debugging_profile debug_msg_enabled[54]
#define dprintf_profile if(!debug_msg_enabled[55]) ; else fprintf
#define debugging_profile debug_msg_enabled[55]
#else
#ifdef DEBUG_PROFILE
#define dprintf_profile fprintf
@ -1265,8 +1285,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_prop if(!debug_msg_enabled[55]) ; else fprintf
#define debugging_prop debug_msg_enabled[55]
#define dprintf_prop if(!debug_msg_enabled[56]) ; else fprintf
#define debugging_prop debug_msg_enabled[56]
#else
#ifdef DEBUG_PROP
#define dprintf_prop fprintf
@ -1278,8 +1298,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_reg if(!debug_msg_enabled[56]) ; else fprintf
#define debugging_reg debug_msg_enabled[56]
#define dprintf_reg if(!debug_msg_enabled[57]) ; else fprintf
#define debugging_reg debug_msg_enabled[57]
#else
#ifdef DEBUG_REG
#define dprintf_reg fprintf
@ -1291,8 +1311,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_region if(!debug_msg_enabled[57]) ; else fprintf
#define debugging_region debug_msg_enabled[57]
#define dprintf_region if(!debug_msg_enabled[58]) ; else fprintf
#define debugging_region debug_msg_enabled[58]
#else
#ifdef DEBUG_REGION
#define dprintf_region fprintf
@ -1304,8 +1324,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_relay if(!debug_msg_enabled[58]) ; else fprintf
#define debugging_relay debug_msg_enabled[58]
#define dprintf_relay if(!debug_msg_enabled[59]) ; else fprintf
#define debugging_relay debug_msg_enabled[59]
#else
#ifdef DEBUG_RELAY
#define dprintf_relay fprintf
@ -1317,8 +1337,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_resource if(!debug_msg_enabled[59]) ; else fprintf
#define debugging_resource debug_msg_enabled[59]
#define dprintf_resource if(!debug_msg_enabled[60]) ; else fprintf
#define debugging_resource debug_msg_enabled[60]
#else
#ifdef DEBUG_RESOURCE
#define dprintf_resource fprintf
@ -1330,8 +1350,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_scroll if(!debug_msg_enabled[60]) ; else fprintf
#define debugging_scroll debug_msg_enabled[60]
#define dprintf_scroll if(!debug_msg_enabled[61]) ; else fprintf
#define debugging_scroll debug_msg_enabled[61]
#else
#ifdef DEBUG_SCROLL
#define dprintf_scroll fprintf
@ -1343,8 +1363,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_selector if(!debug_msg_enabled[61]) ; else fprintf
#define debugging_selector debug_msg_enabled[61]
#define dprintf_selector if(!debug_msg_enabled[62]) ; else fprintf
#define debugging_selector debug_msg_enabled[62]
#else
#ifdef DEBUG_SELECTOR
#define dprintf_selector fprintf
@ -1356,8 +1376,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_sem if(!debug_msg_enabled[62]) ; else fprintf
#define debugging_sem debug_msg_enabled[62]
#define dprintf_sem if(!debug_msg_enabled[63]) ; else fprintf
#define debugging_sem debug_msg_enabled[63]
#else
#ifdef DEBUG_SEM
#define dprintf_sem fprintf
@ -1369,8 +1389,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_shm if(!debug_msg_enabled[63]) ; else fprintf
#define debugging_shm debug_msg_enabled[63]
#define dprintf_shm if(!debug_msg_enabled[64]) ; else fprintf
#define debugging_shm debug_msg_enabled[64]
#else
#ifdef DEBUG_SHM
#define dprintf_shm fprintf
@ -1382,8 +1402,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_stress if(!debug_msg_enabled[64]) ; else fprintf
#define debugging_stress debug_msg_enabled[64]
#define dprintf_stress if(!debug_msg_enabled[65]) ; else fprintf
#define debugging_stress debug_msg_enabled[65]
#else
#ifdef DEBUG_STRESS
#define dprintf_stress fprintf
@ -1395,8 +1415,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_syscolor if(!debug_msg_enabled[65]) ; else fprintf
#define debugging_syscolor debug_msg_enabled[65]
#define dprintf_syscolor if(!debug_msg_enabled[66]) ; else fprintf
#define debugging_syscolor debug_msg_enabled[66]
#else
#ifdef DEBUG_SYSCOLOR
#define dprintf_syscolor fprintf
@ -1408,8 +1428,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_task if(!debug_msg_enabled[66]) ; else fprintf
#define debugging_task debug_msg_enabled[66]
#define dprintf_task if(!debug_msg_enabled[67]) ; else fprintf
#define debugging_task debug_msg_enabled[67]
#else
#ifdef DEBUG_TASK
#define dprintf_task fprintf
@ -1421,8 +1441,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_text if(!debug_msg_enabled[67]) ; else fprintf
#define debugging_text debug_msg_enabled[67]
#define dprintf_text if(!debug_msg_enabled[68]) ; else fprintf
#define debugging_text debug_msg_enabled[68]
#else
#ifdef DEBUG_TEXT
#define dprintf_text fprintf
@ -1434,8 +1454,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_timer if(!debug_msg_enabled[68]) ; else fprintf
#define debugging_timer debug_msg_enabled[68]
#define dprintf_timer if(!debug_msg_enabled[69]) ; else fprintf
#define debugging_timer debug_msg_enabled[69]
#else
#ifdef DEBUG_TIMER
#define dprintf_timer fprintf
@ -1447,8 +1467,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_toolhelp if(!debug_msg_enabled[69]) ; else fprintf
#define debugging_toolhelp debug_msg_enabled[69]
#define dprintf_toolhelp if(!debug_msg_enabled[70]) ; else fprintf
#define debugging_toolhelp debug_msg_enabled[70]
#else
#ifdef DEBUG_TOOLHELP
#define dprintf_toolhelp fprintf
@ -1460,8 +1480,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_vxd if(!debug_msg_enabled[70]) ; else fprintf
#define debugging_vxd debug_msg_enabled[70]
#define dprintf_vxd if(!debug_msg_enabled[71]) ; else fprintf
#define debugging_vxd debug_msg_enabled[71]
#else
#ifdef DEBUG_VXD
#define dprintf_vxd fprintf
@ -1473,8 +1493,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_win if(!debug_msg_enabled[71]) ; else fprintf
#define debugging_win debug_msg_enabled[71]
#define dprintf_win if(!debug_msg_enabled[72]) ; else fprintf
#define debugging_win debug_msg_enabled[72]
#else
#ifdef DEBUG_WIN
#define dprintf_win fprintf
@ -1486,8 +1506,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_win32 if(!debug_msg_enabled[72]) ; else fprintf
#define debugging_win32 debug_msg_enabled[72]
#define dprintf_win32 if(!debug_msg_enabled[73]) ; else fprintf
#define debugging_win32 debug_msg_enabled[73]
#else
#ifdef DEBUG_WIN32
#define dprintf_win32 fprintf
@ -1499,8 +1519,8 @@ extern short debug_msg_enabled[];
#endif
#ifdef DEBUG_RUNTIME
#define dprintf_winsock if(!debug_msg_enabled[73]) ; else fprintf
#define debugging_winsock debug_msg_enabled[73]
#define dprintf_winsock if(!debug_msg_enabled[74]) ; else fprintf
#define debugging_winsock debug_msg_enabled[74]
#else
#ifdef DEBUG_WINSOCK
#define dprintf_winsock fprintf
@ -1527,6 +1547,7 @@ static char *debug_msg_name[] = {
"combo",
"comm",
"commdlg",
"crtdll",
"cursor",
"dc",
"dde",

View File

@ -54,7 +54,7 @@ typedef struct tagDRIVERITEM
DRIVERPROC lpDrvProc;
} DRIVERITEM, *LPDRIVERITEM;
LRESULT DefDriverProc(DWORD dwDevID, HDRVR hDriv, UINT16 wMsg,
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);

View File

@ -1,124 +0,0 @@
/* kernel32.h - 95-09-14 Cameron Heide
*
* Win32 functions, structures, and types related to kernel functions
*/
#ifndef __WINE_KERNEL32_H
#define __WINE_KERNEL32_H
#include <stddef.h>
int KERN32_Init(void);
void SetLastError(DWORD error);
DWORD ErrnoToLastError(int errno_num);
void ExitProcess(DWORD exitcode);
/* Code page information.
*/
typedef struct {
DWORD MaxCharSize;
BYTE DefaultChar[2];
BYTE LeadBytes[5];
} CPINFO, *LPCPINFO;
/* The 'overlapped' data structure used by async I/O functions.
*/
typedef struct {
DWORD Internal;
DWORD InternalHigh;
DWORD Offset;
DWORD OffsetHigh;
HANDLE32 hEvent;
} OVERLAPPED, *LPOVERLAPPED;
/* Process startup information.
*/
typedef struct {
DWORD cb;
LPSTR lpReserved;
LPSTR lpDesktop;
LPSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
BYTE *lpReserved2;
HANDLE32 hStdInput;
HANDLE32 hStdOutput;
HANDLE32 hStdError;
} STARTUPINFO, *LPSTARTUPINFO;
typedef struct {
LONG Bias;
WCHAR StandardName[32];
SYSTEMTIME StandardDate;
LONG StandardBias;
WCHAR DaylightName[32];
SYSTEMTIME DaylightDate;
LONG DaylightBias;
} TIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
#define TIME_ZONE_ID_UNKNOWN 0
#define TIME_ZONE_ID_STANDARD 1
#define TIME_ZONE_ID_DAYLIGHT 2
/* File object type definitions
*/
#define FILE_TYPE_UNKNOWN 0
#define FILE_TYPE_DISK 1
#define FILE_TYPE_CHAR 2
#define FILE_TYPE_PIPE 3
#define FILE_TYPE_REMOTE 32768
/* File creation flags
*/
#define GENERIC_READ 0x80000000L
#define GENERIC_WRITE 0x40000000L
#define CREATE_NEW 1
#define CREATE_ALWAYS 2
#define OPEN_EXISTING 3
#define OPEN_ALWAYS 4
#define TRUNCATE_EXISTING 5
/* Standard handle identifiers
*/
#define STD_INPUT_HANDLE ((DWORD) -10)
#define STD_OUTPUT_HANDLE ((DWORD) -11)
#define STD_ERROR_HANDLE ((DWORD) -12)
typedef struct
{
int dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
int dwVolumeSerialNumber;
int nFileSizeHigh;
int nFileSizeLow;
int nNumberOfLinks;
int nFileIndexHigh;
int nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION ;
/* File attribute flags
*/
#define FILE_ATTRIBUTE_ARCHIVE 0x0020
#define FILE_ATTRIBUTE_COMPRESSED 0x0800
#define FILE_ATTRIBUTE_DIRECTORY 0x0010
#define FILE_ATTRIBUTE_HIDDEN 0x0002
#define FILE_ATTRIBUTE_NORMAL 0x0080
#define FILE_ATTRIBUTE_READONLY 0x0001
#define FILE_ATTRIBUTE_SYSTEM 0x0004
#define FILE_ATTRIBUTE_TEMPORARY 0x0100
#define FILE_ATTRIBUTE_ATOMIC_WRITE 0x0200
#define FILE_ATTRIBUTE_XACTION_WRITE 0x0400
BOOL32 SetTimeZoneInformation(const TIME_ZONE_INFORMATION*);
#endif /* __WINE_KERNEL32_H */

View File

@ -9,10 +9,10 @@
#include "wintypes.h"
#include "resource.h"
extern INT LIBRES_AccessResource( HINSTANCE hModule, HRSRC hRsrc );
extern HGLOBAL LIBRES_AllocResource( HINSTANCE hModule, HRSRC hRsrc, DWORD size );
extern INT LIBRES_AccessResource( HINSTANCE hModule, HRSRC32 hRsrc );
extern HGLOBAL32 LIBRES_AllocResource( HINSTANCE hModule, HRSRC32 hRsrc, DWORD size );
extern HRSRC32 LIBRES_FindResource( HINSTANCE hModule, LPCSTR name, LPCSTR type );
extern BOOL LIBRES_FreeResource( HGLOBAL handle );
extern BOOL LIBRES_FreeResource( HGLOBAL32 handle );
extern HGLOBAL32 LIBRES_LoadResource( HINSTANCE hModule, HRSRC32 hRsrc );
extern LPVOID LIBRES_LockResource( HGLOBAL32 handle );
extern DWORD LIBRES_SizeofResource( HINSTANCE hModule, HRSRC32 hRsrc );

View File

@ -13,7 +13,7 @@
#define MFVERSION 0x300
#define META_EOF 0x0000
HMETAFILE MF_WriteRecord(HMETAFILE hmf, METARECORD *mr, WORD rlen);
HMETAFILE16 MF_WriteRecord(HMETAFILE16 hmf, METARECORD *mr, WORD rlen);
int MF_AddHandle(HANDLETABLE16 *ht, WORD htlen, HANDLE hobj);
int MF_AddHandleInternal(HANDLE hobj);
BOOL MF_MetaParam0(DC *dc, short func);

View File

@ -108,7 +108,7 @@ typedef struct {
#define CALLBACK_TASK 0x00020000l /* dwCallback is a HTASK */
#define CALLBACK_FUNCTION 0x00030000l /* dwCallback is a FARPROC */
typedef void (*LPDRVCALLBACK) (HDRVR h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
typedef void (*LPDRVCALLBACK) (HDRVR16 h, UINT uMessage, DWORD dwUser, DWORD dw1, DWORD dw2);
#define MM_MICROSOFT 1 /* Microsoft Corp. */
@ -148,8 +148,8 @@ BOOL sndPlaySound(LPCSTR lpszSoundName, UINT uFlags);
#define WAVERR_SYNC (WAVERR_BASE + 3) /* device is synchronous */
#define WAVERR_LASTERROR (WAVERR_BASE + 3) /* last error in range */
typedef HWAVEIN *LPHWAVEIN;
typedef HWAVEOUT *LPHWAVEOUT;
typedef HWAVEIN16 *LPHWAVEIN16;
typedef HWAVEOUT16 *LPHWAVEOUT16;
typedef LPDRVCALLBACK LPWAVECALLBACK;
#define WOM_OPEN MM_WOM_OPEN
@ -243,50 +243,50 @@ UINT waveOutGetVolume(UINT uDeviceID, DWORD * lpdwVolume);
UINT waveOutSetVolume(UINT uDeviceID, DWORD dwVolume);
UINT waveOutGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
UINT waveGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
UINT waveOutOpen(HWAVEOUT * lphWaveOut, UINT uDeviceID,
UINT waveOutOpen(HWAVEOUT16 * lphWaveOut, UINT uDeviceID,
const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
UINT waveOutClose(HWAVEOUT hWaveOut);
UINT waveOutPrepareHeader(HWAVEOUT hWaveOut,
UINT waveOutClose(HWAVEOUT16 hWaveOut);
UINT waveOutPrepareHeader(HWAVEOUT16 hWaveOut,
WAVEHDR * lpWaveOutHdr, UINT uSize);
UINT waveOutUnprepareHeader(HWAVEOUT hWaveOut,
UINT waveOutUnprepareHeader(HWAVEOUT16 hWaveOut,
WAVEHDR * lpWaveOutHdr, UINT uSize);
UINT waveOutWrite(HWAVEOUT hWaveOut, WAVEHDR * lpWaveOutHdr,
UINT waveOutWrite(HWAVEOUT16 hWaveOut, WAVEHDR * lpWaveOutHdr,
UINT uSize);
UINT waveOutPause(HWAVEOUT hWaveOut);
UINT waveOutRestart(HWAVEOUT hWaveOut);
UINT waveOutReset(HWAVEOUT hWaveOut);
UINT waveOutBreakLoop(HWAVEOUT hWaveOut);
UINT waveOutGetPosition(HWAVEOUT hWaveOut, MMTIME * lpInfo,
UINT waveOutPause(HWAVEOUT16 hWaveOut);
UINT waveOutRestart(HWAVEOUT16 hWaveOut);
UINT waveOutReset(HWAVEOUT16 hWaveOut);
UINT waveOutBreakLoop(HWAVEOUT16 hWaveOut);
UINT waveOutGetPosition(HWAVEOUT16 hWaveOut, MMTIME * lpInfo,
UINT uSize);
UINT waveOutGetPitch(HWAVEOUT hWaveOut, DWORD * lpdwPitch);
UINT waveOutSetPitch(HWAVEOUT hWaveOut, DWORD dwPitch);
UINT waveOutGetPlaybackRate(HWAVEOUT hWaveOut, DWORD * lpdwRate);
UINT waveOutSetPlaybackRate(HWAVEOUT hWaveOut, DWORD dwRate);
UINT waveOutGetID(HWAVEOUT hWaveOut, UINT * lpuDeviceID);
UINT waveOutGetPitch(HWAVEOUT16 hWaveOut, DWORD * lpdwPitch);
UINT waveOutSetPitch(HWAVEOUT16 hWaveOut, DWORD dwPitch);
UINT waveOutGetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD * lpdwRate);
UINT waveOutSetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD dwRate);
UINT waveOutGetID(HWAVEOUT16 hWaveOut, UINT * lpuDeviceID);
DWORD waveOutMessage(HWAVEOUT hWaveOut, UINT uMessage, DWORD dw1, DWORD dw2);
DWORD waveOutMessage(HWAVEOUT16 hWaveOut, UINT uMessage, DWORD dw1, DWORD dw2);
UINT waveInGetNumDevs(void);
UINT waveInGetDevCaps(UINT uDeviceID, WAVEINCAPS * lpCaps,
UINT uSize);
UINT waveInGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
UINT waveInOpen(HWAVEIN * lphWaveIn, UINT uDeviceID,
UINT waveInOpen(HWAVEIN16 * lphWaveIn, UINT uDeviceID,
const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
UINT waveInClose(HWAVEIN hWaveIn);
UINT waveInPrepareHeader(HWAVEIN hWaveIn,
UINT waveInClose(HWAVEIN16 hWaveIn);
UINT waveInPrepareHeader(HWAVEIN16 hWaveIn,
WAVEHDR * lpWaveInHdr, UINT uSize);
UINT waveInUnprepareHeader(HWAVEIN hWaveIn,
UINT waveInUnprepareHeader(HWAVEIN16 hWaveIn,
WAVEHDR * lpWaveInHdr, UINT uSize);
UINT waveInAddBuffer(HWAVEIN hWaveIn,
UINT waveInAddBuffer(HWAVEIN16 hWaveIn,
WAVEHDR * lpWaveInHdr, UINT uSize);
UINT waveInStart(HWAVEIN hWaveIn);
UINT waveInStop(HWAVEIN hWaveIn);
UINT waveInReset(HWAVEIN hWaveIn);
UINT waveInGetPosition(HWAVEIN hWaveIn, MMTIME * lpInfo,
UINT waveInStart(HWAVEIN16 hWaveIn);
UINT waveInStop(HWAVEIN16 hWaveIn);
UINT waveInReset(HWAVEIN16 hWaveIn);
UINT waveInGetPosition(HWAVEIN16 hWaveIn, MMTIME * lpInfo,
UINT uSize);
UINT waveInGetID(HWAVEIN hWaveIn, UINT * lpuDeviceID);
UINT waveInGetID(HWAVEIN16 hWaveIn, UINT * lpuDeviceID);
DWORD waveInMessage(HWAVEIN hWaveIn, UINT uMessage, DWORD dw1, DWORD dw2);
DWORD waveInMessage(HWAVEIN16 hWaveIn, UINT uMessage, DWORD dw1, DWORD dw2);
#define MIDIERR_UNPREPARED (MIDIERR_BASE + 0) /* header not prepared */
#define MIDIERR_STILLPLAYING (MIDIERR_BASE + 1) /* still something playing */
@ -296,8 +296,8 @@ DWORD waveInMessage(HWAVEIN hWaveIn, UINT uMessage, DWORD dw1, DWORD dw2);
#define MIDIERR_INVALIDSETUP (MIDIERR_BASE + 5) /* invalid setup */
#define MIDIERR_LASTERROR (MIDIERR_BASE + 5) /* last error in range */
typedef HMIDIIN *LPHMIDIIN;
typedef HMIDIOUT *LPHMIDIOUT;
typedef HMIDIIN16 *LPHMIDIIN16;
typedef HMIDIOUT16 *LPHMIDIOUT16;
typedef LPDRVCALLBACK LPMIDICALLBACK;
#define MIDIPATCHSIZE 128
typedef WORD PATCHARRAY[MIDIPATCHSIZE];
@ -376,44 +376,44 @@ UINT midiOutGetVolume(UINT uDeviceID, DWORD * lpdwVolume);
UINT midiOutSetVolume(UINT uDeviceID, DWORD dwVolume);
UINT midiOutGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
UINT midiGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
UINT midiOutOpen(HMIDIOUT * lphMidiOut, UINT uDeviceID,
UINT midiOutOpen(HMIDIOUT16 * lphMidiOut, UINT uDeviceID,
DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
UINT midiOutClose(HMIDIOUT hMidiOut);
UINT midiOutPrepareHeader(HMIDIOUT hMidiOut,
UINT midiOutClose(HMIDIOUT16 hMidiOut);
UINT midiOutPrepareHeader(HMIDIOUT16 hMidiOut,
MIDIHDR * lpMidiOutHdr, UINT uSize);
UINT midiOutUnprepareHeader(HMIDIOUT hMidiOut,
UINT midiOutUnprepareHeader(HMIDIOUT16 hMidiOut,
MIDIHDR * lpMidiOutHdr, UINT uSize);
UINT midiOutShortMsg(HMIDIOUT hMidiOut, DWORD dwMsg);
UINT midiOutLongMsg(HMIDIOUT hMidiOut,
UINT midiOutShortMsg(HMIDIOUT16 hMidiOut, DWORD dwMsg);
UINT midiOutLongMsg(HMIDIOUT16 hMidiOut,
MIDIHDR * lpMidiOutHdr, UINT uSize);
UINT midiOutReset(HMIDIOUT hMidiOut);
UINT midiOutCachePatches(HMIDIOUT hMidiOut,
UINT midiOutReset(HMIDIOUT16 hMidiOut);
UINT midiOutCachePatches(HMIDIOUT16 hMidiOut,
UINT uBank, WORD * lpwPatchArray, UINT uFlags);
UINT midiOutCacheDrumPatches(HMIDIOUT hMidiOut,
UINT midiOutCacheDrumPatches(HMIDIOUT16 hMidiOut,
UINT uPatch, WORD * lpwKeyArray, UINT uFlags);
UINT midiOutGetID(HMIDIOUT hMidiOut, UINT * lpuDeviceID);
UINT midiOutGetID(HMIDIOUT16 hMidiOut, UINT * lpuDeviceID);
DWORD midiOutMessage(HMIDIOUT hMidiOut, UINT uMessage, DWORD dw1, DWORD dw2);
DWORD midiOutMessage(HMIDIOUT16 hMidiOut, UINT uMessage, DWORD dw1, DWORD dw2);
UINT midiInGetNumDevs(void);
UINT midiInGetDevCaps(UINT uDeviceID,
LPMIDIINCAPS lpCaps, UINT uSize);
UINT midiInGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
UINT midiInOpen(HMIDIIN * lphMidiIn, UINT uDeviceID,
UINT midiInOpen(HMIDIIN16 * lphMidiIn, UINT uDeviceID,
DWORD dwCallback, DWORD dwInstance, DWORD dwFlags);
UINT midiInClose(HMIDIIN hMidiIn);
UINT midiInPrepareHeader(HMIDIIN hMidiIn,
UINT midiInClose(HMIDIIN16 hMidiIn);
UINT midiInPrepareHeader(HMIDIIN16 hMidiIn,
MIDIHDR * lpMidiInHdr, UINT uSize);
UINT midiInUnprepareHeader(HMIDIIN hMidiIn,
UINT midiInUnprepareHeader(HMIDIIN16 hMidiIn,
MIDIHDR * lpMidiInHdr, UINT uSize);
UINT midiInAddBuffer(HMIDIIN hMidiIn,
UINT midiInAddBuffer(HMIDIIN16 hMidiIn,
MIDIHDR * lpMidiInHdr, UINT uSize);
UINT midiInStart(HMIDIIN hMidiIn);
UINT midiInStop(HMIDIIN hMidiIn);
UINT midiInReset(HMIDIIN hMidiIn);
UINT midiInGetID(HMIDIIN hMidiIn, UINT * lpuDeviceID);
UINT midiInStart(HMIDIIN16 hMidiIn);
UINT midiInStop(HMIDIIN16 hMidiIn);
UINT midiInReset(HMIDIIN16 hMidiIn);
UINT midiInGetID(HMIDIIN16 hMidiIn, UINT * lpuDeviceID);
DWORD midiInMessage(HMIDIIN hMidiIn, UINT uMessage, DWORD dw1, DWORD dw2);
DWORD midiInMessage(HMIDIIN16 hMidiIn, UINT uMessage, DWORD dw1, DWORD dw2);
#define AUX_MAPPER (-1)
@ -547,7 +547,7 @@ typedef struct {
/* other fields maintained by MMIO */
DWORD dwReserved1; /* reserved for MMIO use */
DWORD dwReserved2; /* reserved for MMIO use */
HMMIO hmmio; /* handle to open file */
HMMIO16 hmmio; /* handle to open file */
} MMIOINFO, *LPMMIOINFO;
typedef struct _MMCKINFO
@ -624,28 +624,28 @@ typedef struct _MMCKINFO
FOURCC mmioStringToFOURCC(LPCSTR sz, UINT uFlags);
LPMMIOPROC mmioInstallIOProc(FOURCC fccIOProc, LPMMIOPROC pIOProc,
DWORD dwFlags);
HMMIO mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo,
HMMIO16 mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo,
DWORD dwOpenFlags);
UINT mmioRename(LPCSTR szFileName, LPCSTR szNewFileName,
MMIOINFO * lpmmioinfo, DWORD dwRenameFlags);
UINT mmioClose(HMMIO hmmio, UINT uFlags);
LONG mmioRead(HMMIO hmmio, HPSTR pch, LONG cch);
LONG mmioWrite(HMMIO hmmio, HPCSTR pch, LONG cch);
LONG mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin);
UINT mmioGetInfo(HMMIO hmmio, MMIOINFO * lpmmioinfo, UINT uFlags);
UINT mmioSetInfo(HMMIO hmmio, const MMIOINFO * lpmmioinfo, UINT uFlags);
UINT mmioSetBuffer(HMMIO hmmio, LPSTR pchBuffer, LONG cchBuffer,
UINT mmioClose(HMMIO16 hmmio, UINT 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);
UINT mmioGetInfo(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT uFlags);
UINT mmioSetInfo(HMMIO16 hmmio, const MMIOINFO * lpmmioinfo, UINT uFlags);
UINT mmioSetBuffer(HMMIO16 hmmio, LPSTR pchBuffer, LONG cchBuffer,
UINT uFlags);
UINT mmioFlush(HMMIO hmmio, UINT uFlags);
UINT mmioAdvance(HMMIO hmmio, MMIOINFO * lpmmioinfo, UINT uFlags);
LONG mmioSendMessage(HMMIO hmmio, UINT uMessage,
UINT mmioFlush(HMMIO16 hmmio, UINT uFlags);
UINT mmioAdvance(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT uFlags);
LONG mmioSendMessage(HMMIO16 hmmio, UINT uMessage,
LPARAM lParam1, LPARAM lParam2);
UINT mmioDescend(HMMIO hmmio, MMCKINFO * lpck,
UINT mmioDescend(HMMIO16 hmmio, MMCKINFO * lpck,
const MMCKINFO * lpckParent, UINT uFlags);
UINT mmioAscend(HMMIO hmmio, MMCKINFO * lpck, UINT uFlags);
UINT mmioCreateChunk(HMMIO hmmio, MMCKINFO * lpck, UINT uFlags);
UINT mmioAscend(HMMIO16 hmmio, MMCKINFO * lpck, UINT uFlags);
UINT mmioCreateChunk(HMMIO16 hmmio, MMCKINFO * lpck, UINT uFlags);
typedef UINT (*YIELDPROC) (UINT uDeviceID, DWORD dwYieldData);
@ -1476,19 +1476,19 @@ typedef struct {
typedef struct {
DWORD dwCallback;
DWORD dwInstance;
HMIDIOUT hMidi;
HMIDIOUT16 hMidi;
DWORD dwFlags;
} PORTALLOC, *LPPORTALLOC;
typedef struct {
HWAVE hWave;
HWAVE16 hWave;
LPWAVEFORMAT lpFormat;
DWORD dwCallBack;
DWORD dwInstance;
} WAVEOPENDESC, *LPWAVEOPENDESC;
typedef struct {
HMIDI hMidi;
HMIDI16 hMidi;
DWORD dwCallback;
DWORD dwInstance;
} MIDIOPENDESC, *LPMIDIOPENDESC;

View File

@ -170,7 +170,7 @@ typedef struct _OLESERVERDOCVTBL {
OLESTATUS (*GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT);
OLESTATUS (*Release)(LPOLESERVERDOC);
OLESTATUS (*SetColorScheme)(LPOLESERVERDOC,LPLOGPALETTE);
OLESTATUS (*Execute)(LPOLESERVERDOC,HGLOBAL);
OLESTATUS (*Execute)(LPOLESERVERDOC,HGLOBAL16);
} OLESERVERDOCVTBL;
typedef OLESERVERDOCVTBL* LPOLESERVERDOCVTBL;
typedef struct _OLESERVERDOC {
@ -210,7 +210,7 @@ typedef struct _OLEOBJECTVTBL {
OLESTATUS (*DoVerb)(LPOLEOBJECT,UINT,BOOL,BOOL);
OLESTATUS (*GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE *);
OLESTATUS (*SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE);
OLESTATUS (*SetTargetDevice)(LPOLEOBJECT,HGLOBAL);
OLESTATUS (*SetTargetDevice)(LPOLEOBJECT,HGLOBAL16);
OLESTATUS (*SetBounds)(LPOLEOBJECT,LPRECT16);
OLESTATUS (*EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT);
OLESTATUS (*SetColorScheme)(LPOLEOBJECT,LPLOGPALETTE);
@ -223,7 +223,7 @@ typedef struct _OLEOBJECTVTBL {
OLESTATUS (*CopyToClipBoard)(LPOLEOBJECT);
OLESTATUS (*Draw)(LPOLEOBJECT,HDC,LPRECT16,LPRECT16,HDC);
OLESTATUS (*Activate)(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,LPRECT16);
OLESTATUS (*Execute)(LPOLEOBJECT,HGLOBAL,UINT);
OLESTATUS (*Execute)(LPOLEOBJECT,HGLOBAL16,UINT);
OLESTATUS (*Close)(LPOLEOBJECT);
OLESTATUS (*Update)(LPOLEOBJECT);
OLESTATUS (*Reconnect)(LPOLEOBJECT);

View File

@ -68,6 +68,8 @@ typedef struct tagMESSAGEQUEUE
extern void QUEUE_DumpQueue( HQUEUE16 hQueue );
extern void QUEUE_WalkQueues(void);
extern HQUEUE16 QUEUE_GetDoomedQueue();
extern void QUEUE_SetDoomedQueue( HQUEUE16 hQueue );
extern MESSAGEQUEUE *QUEUE_GetSysQueue(void);
extern void QUEUE_SetWakeBit( MESSAGEQUEUE *queue, WORD bit );
extern void QUEUE_ClearWakeBit( MESSAGEQUEUE *queue, WORD bit );

View File

@ -18,6 +18,7 @@ typedef struct
extern BOOL16 REGION_DeleteObject( HRGN32 hrgn, RGNOBJ * obj );
extern BOOL16 REGION_UnionRectWithRgn( HRGN32 hrgn, LPRECT16 lpRect );
extern BOOL16 REGION_FrameRgn( HRGN32 dest, HRGN32 src, INT32 x, INT32 y );
#endif /* __WINE_REGION_H */

View File

@ -43,15 +43,16 @@ extern void LIBRES_RegisterResources(const struct resource* const * Res);
#define WINE_CONSTRUCTOR
#endif
extern int NE_AccessResource( HMODULE16 hModule, HRSRC hRsrc );
extern BOOL NE_FreeResource( HMODULE16 hModule, HGLOBAL handle );
extern HRSRC NE_FindResource( HMODULE16 hModule, SEGPTR typeId, SEGPTR resId );
extern DWORD NE_SizeofResource( HMODULE16 hModule, HRSRC hRsrc );
extern SEGPTR NE_LockResource( HMODULE16 hModule, HGLOBAL handle );
extern HGLOBAL NE_AllocResource( HMODULE16 hModule, HRSRC hRsrc, DWORD size );
extern HGLOBAL NE_LoadResource( HMODULE16 hModule, HRSRC hRsrc );
extern int NE_AccessResource( HMODULE16 hModule, HRSRC16 hRsrc );
extern BOOL NE_FreeResource( HMODULE16 hModule, HGLOBAL16 handle );
extern HRSRC16 NE_FindResource(HMODULE16 hModule, SEGPTR typeId, SEGPTR resId);
extern DWORD NE_SizeofResource( HMODULE16 hModule, HRSRC16 hRsrc );
extern SEGPTR NE_LockResource( HMODULE16 hModule, HGLOBAL16 handle );
extern HGLOBAL16 NE_AllocResource( HMODULE16 hModule, HRSRC16 hRsrc,
DWORD size );
extern HGLOBAL16 NE_LoadResource( HMODULE16 hModule, HRSRC16 hRsrc );
extern HANDLE SYSRES_LoadResource( SYSTEM_RESOURCE id );
extern void SYSRES_FreeResource( HANDLE handle );
extern HGLOBAL16 SYSRES_LoadResource( SYSTEM_RESOURCE id );
extern void SYSRES_FreeResource( HGLOBAL16 handle );
#endif /* __WINE_RESOURCE_H */

View File

@ -16,5 +16,6 @@ extern WORD SELECTOR_AllocBlock( const void *base, DWORD size,
extern WORD SELECTOR_ReallocBlock( WORD sel, const void *base, DWORD size,
enum seg_type type, BOOL32 is32bit,
BOOL32 readonly );
extern void SELECTOR_FreeBlock( WORD sel, WORD count );
#endif /* __WINE_SELECTORS_H */

View File

@ -9,7 +9,8 @@
#include "windows.h"
#include "winreg.h"
extern INT ShellAbout(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon);
extern INT ShellAbout(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff,
HICON16 hIcon);
extern void SHELL_LoadRegistry();
extern void SHELL_SaveRegistry();
extern void SHELL_Init();

View File

@ -12,9 +12,9 @@
/* Extra info for STATIC windows */
typedef struct
{
HFONT hFont; /* Control font (or 0 for system font) */
WORD dummy; /* Don't know what MS-Windows puts in there */
HICON hIcon; /* Icon handle for SS_ICON controls */
HFONT16 hFont; /* Control font (or 0 for system font) */
WORD dummy; /* Don't know what MS-Windows puts in there */
HICON16 hIcon; /* Icon handle for SS_ICON controls */
} STATICINFO;
extern LRESULT StaticWndProc(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam );

30
include/status.h Normal file
View File

@ -0,0 +1,30 @@
/*
* Status window definitions
*
* Copyright 1996 Bruce Milner
*/
#ifndef __WINE_STATUS_H
#define __WINE_STATUS_H
LRESULT StatusWindowProc( HWND32 hwnd, UINT32 msg,
WPARAM32 wParam, LPARAM lParam );
typedef struct
{
INT32 x;
INT32 style;
RECT32 bound;
LPSTR text;
} STATUSWINDOWPART;
typedef struct
{
UINT16 numParts;
UINT16 textHeight;
BOOL32 simple;
STATUSWINDOWPART part0; /* simple window */
STATUSWINDOWPART *parts;
} STATUSWINDOWINFO;
#endif /* __WINE_STATUS_H */

View File

@ -88,6 +88,7 @@
#undef DEBUG_COMBO
#undef DEBUG_COMM
#undef DEBUG_COMMDLG
#undef DEBUG_CRTDLL
#undef DEBUG_CURSOR
#undef DEBUG_DC
#undef DEBUG_DDE
@ -165,6 +166,7 @@
#define DEBUG_COMBO
#define DEBUG_COMM
#define DEBUG_COMMDLG
#define DEBUG_CRTDLL
#define DEBUG_CURSOR
#define DEBUG_DC
#define DEBUG_DDE

View File

@ -11,27 +11,27 @@
struct SysColorObjects
{
HBRUSH hbrushScrollbar; /* COLOR_SCROLLBAR */
/* COLOR_BACKGROUND */
HBRUSH hbrushActiveCaption; /* COLOR_ACTIVECAPTION */
HBRUSH hbrushInactiveCaption; /* COLOR_INACTIVECAPTION */
HBRUSH hbrushMenu; /* COLOR_MENU */
HBRUSH hbrushWindow; /* COLOR_WINDOW */
HPEN16 hpenWindowFrame; /* COLOR_WINDOWFRAME */
/* COLOR_MENUTEXT */
HPEN16 hpenWindowText; /* COLOR_WINDOWTEXT */
/* COLOR_CAPTIONTEXT */
HBRUSH hbrushActiveBorder; /* COLOR_ACTIVEBORDER */
HBRUSH hbrushInactiveBorder; /* COLOR_INACTIVEBORDER */
/* COLOR_APPWORKSPACE */
HBRUSH hbrushHighlight; /* COLOR_HIGHLIGHT */
/* COLOR_HIGHLIGHTTEXT */
HBRUSH hbrushBtnFace; /* COLOR_BTNFACE */
HBRUSH hbrushBtnShadow; /* COLOR_BTNSHADOW */
/* COLOR_GRAYTEXT */
/* COLOR_BTNTEXT */
/* COLOR_INACTIVECAPTIONTEXT */
HBRUSH hbrushBtnHighlight; /* COLOR_BTNHIGHLIGHT */
HBRUSH16 hbrushScrollbar; /* COLOR_SCROLLBAR */
/* COLOR_BACKGROUND */
HBRUSH16 hbrushActiveCaption; /* COLOR_ACTIVECAPTION */
HBRUSH16 hbrushInactiveCaption; /* COLOR_INACTIVECAPTION */
HBRUSH16 hbrushMenu; /* COLOR_MENU */
HBRUSH16 hbrushWindow; /* COLOR_WINDOW */
HPEN16 hpenWindowFrame; /* COLOR_WINDOWFRAME */
/* COLOR_MENUTEXT */
HPEN16 hpenWindowText; /* COLOR_WINDOWTEXT */
/* COLOR_CAPTIONTEXT */
HBRUSH16 hbrushActiveBorder; /* COLOR_ACTIVEBORDER */
HBRUSH16 hbrushInactiveBorder; /* COLOR_INACTIVEBORDER */
/* COLOR_APPWORKSPACE */
HBRUSH16 hbrushHighlight; /* COLOR_HIGHLIGHT */
/* COLOR_HIGHLIGHTTEXT */
HBRUSH16 hbrushBtnFace; /* COLOR_BTNFACE */
HBRUSH16 hbrushBtnShadow; /* COLOR_BTNSHADOW */
/* COLOR_GRAYTEXT */
/* COLOR_BTNTEXT */
/* COLOR_INACTIVECAPTIONTEXT */
HBRUSH16 hbrushBtnHighlight; /* COLOR_BTNHIGHLIGHT */
};
extern void SYSCOLOR_Init(void);

View File

@ -135,28 +135,30 @@ DECL_WINELIB_TYPE_AW(OSVERSIONINFO);
typedef struct
{
DWORD FileAttributes;
FILETIME CreationTime;
FILETIME LastAccessTime;
FILETIME LastWriteTime;
DWORD FileSizeHigh;
DWORD FileSizeLow;
DWORD reserved[2];
CHAR FileName[260];
CHAR AlternateName[14];
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
CHAR cFileName[260];
CHAR cAlternateFileName[14];
} WIN32_FIND_DATA32A, *LPWIN32_FIND_DATA32A;
typedef struct
{
DWORD FileAttributes;
FILETIME CreationTime;
FILETIME LastAccessTime;
FILETIME LastWriteTime;
DWORD FileSizeHigh;
DWORD FileSizeLow;
DWORD reserved[2];
WCHAR FileName[260];
WCHAR AlternateName[14];
DWORD dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
DWORD nFileSizeHigh;
DWORD nFileSizeLow;
DWORD dwReserved0;
DWORD dwReserved1;
WCHAR cFileName[260];
WCHAR cAlternateName[14];
} WIN32_FIND_DATA32W, *LPWIN32_FIND_DATA32W;
DECL_WINELIB_TYPE_AW(WIN32_FIND_DATA);

View File

@ -1795,6 +1795,7 @@ typedef struct tagCOMSTAT
#define RT_FONT MAKEINTRESOURCE(8)
#define RT_ACCELERATOR MAKEINTRESOURCE(9)
#define RT_RCDATA MAKEINTRESOURCE(10)
#define RT_MESSAGELIST MAKEINTRESOURCE(11)
#define RT_GROUP_CURSOR MAKEINTRESOURCE(12)
#define RT_GROUP_ICON MAKEINTRESOURCE(14)
@ -3180,6 +3181,115 @@ typedef struct {
WORD wMilliseconds;
} SYSTEMTIME, *LPSYSTEMTIME;
/* Code page information.
*/
typedef struct {
DWORD MaxCharSize;
BYTE DefaultChar[2];
BYTE LeadBytes[5];
} CPINFO, *LPCPINFO;
/* The 'overlapped' data structure used by async I/O functions.
*/
typedef struct {
DWORD Internal;
DWORD InternalHigh;
DWORD Offset;
DWORD OffsetHigh;
HANDLE32 hEvent;
} OVERLAPPED, *LPOVERLAPPED;
/* Process startup information.
*/
typedef struct {
DWORD cb;
LPSTR lpReserved;
LPSTR lpDesktop;
LPSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
BYTE *lpReserved2;
HANDLE32 hStdInput;
HANDLE32 hStdOutput;
HANDLE32 hStdError;
} STARTUPINFO, *LPSTARTUPINFO;
typedef struct {
LONG Bias;
WCHAR StandardName[32];
SYSTEMTIME StandardDate;
LONG StandardBias;
WCHAR DaylightName[32];
SYSTEMTIME DaylightDate;
LONG DaylightBias;
} TIME_ZONE_INFORMATION, *LPTIME_ZONE_INFORMATION;
#define TIME_ZONE_ID_UNKNOWN 0
#define TIME_ZONE_ID_STANDARD 1
#define TIME_ZONE_ID_DAYLIGHT 2
/* File object type definitions
*/
#define FILE_TYPE_UNKNOWN 0
#define FILE_TYPE_DISK 1
#define FILE_TYPE_CHAR 2
#define FILE_TYPE_PIPE 3
#define FILE_TYPE_REMOTE 32768
/* File creation flags
*/
#define GENERIC_READ 0x80000000L
#define GENERIC_WRITE 0x40000000L
#define CREATE_NEW 1
#define CREATE_ALWAYS 2
#define OPEN_EXISTING 3
#define OPEN_ALWAYS 4
#define TRUNCATE_EXISTING 5
/* Standard handle identifiers
*/
#define STD_INPUT_HANDLE ((DWORD) -10)
#define STD_OUTPUT_HANDLE ((DWORD) -11)
#define STD_ERROR_HANDLE ((DWORD) -12)
typedef struct
{
int dwFileAttributes;
FILETIME ftCreationTime;
FILETIME ftLastAccessTime;
FILETIME ftLastWriteTime;
int dwVolumeSerialNumber;
int nFileSizeHigh;
int nFileSizeLow;
int nNumberOfLinks;
int nFileIndexHigh;
int nFileIndexLow;
} BY_HANDLE_FILE_INFORMATION ;
/* File attribute flags
*/
#define FILE_ATTRIBUTE_ARCHIVE 0x0020
#define FILE_ATTRIBUTE_COMPRESSED 0x0800
#define FILE_ATTRIBUTE_DIRECTORY 0x0010
#define FILE_ATTRIBUTE_HIDDEN 0x0002
#define FILE_ATTRIBUTE_NORMAL 0x0080
#define FILE_ATTRIBUTE_READONLY 0x0001
#define FILE_ATTRIBUTE_SYSTEM 0x0004
#define FILE_ATTRIBUTE_TEMPORARY 0x0100
#define FILE_ATTRIBUTE_ATOMIC_WRITE 0x0200
#define FILE_ATTRIBUTE_XACTION_WRITE 0x0400
/* WinHelp internal structure */
typedef struct {
WORD size;
@ -3337,7 +3447,14 @@ INT32 EnumPropsEx32A(HWND32,PROPENUMPROCEX32A,LPARAM);
INT32 EnumPropsEx32W(HWND32,PROPENUMPROCEX32W,LPARAM);
#define EnumPropsEx WINELIB_NAME_AW(EnumPropsEx)
BOOL32 EnumThreadWindows(DWORD,WNDENUMPROC32,LPARAM);
void ExitProcess(DWORD);
HRSRC32 FindResourceEx32A(HINSTANCE32,LPCSTR,LPCSTR,WORD);
HRSRC32 FindResourceEx32W(HINSTANCE32,LPCWSTR,LPCWSTR,WORD);
#define FindResourceEx WINELIB_NAME_AW(FindResourceEx)
BOOL32 FlushFileBuffers(HFILE);
LPCSTR GetCommandLine32A();
LPCWSTR GetCommandLine32W();
#define GetCommandLine WINELIB_NAME_AW(GetCommandLine)
BOOL32 GetCommTimeouts(HANDLE32,LPCOMMTIMEOUTS);
DWORD GetLogicalDrives(void);
HANDLE32 GetProcessHeap(void);
@ -3377,6 +3494,7 @@ DWORD SearchPath32W(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPWSTR,LPWSTR*);
BOOL32 SetCommMask(HANDLE32,DWORD);
BOOL32 SetCommTimeouts(HANDLE32,LPCOMMTIMEOUTS);
BOOL32 SetBrushOrgEx(HDC32,INT32,INT32,LPPOINT32);
BOOL32 SetTimeZoneInformation(const LPTIME_ZONE_INFORMATION);
LPVOID VirtualAlloc(LPVOID,DWORD,DWORD,DWORD);
BOOL32 VirtualFree(LPVOID,DWORD,DWORD);
@ -3426,6 +3544,7 @@ BOOL16 SetCaretPos(INT32,INT32);
WORD SetClassWord(HWND32,INT32,WORD);
INT16 SetDIBits(HDC32,HBITMAP32,UINT32,UINT32,LPCVOID,const BITMAPINFO*,UINT32);
INT16 SetDIBitsToDevice(HDC32,INT32,INT32,DWORD,DWORD,INT32,INT32,UINT32,UINT32,LPCVOID,const BITMAPINFO*,UINT32);
void SetLastError(DWORD); /* FIXME: not 100% sure about that */
VOID SetRectRgn(HRGN32,INT32,INT32,INT32,INT32);
WORD SetWindowWord(HWND32,INT32,WORD);
BOOL16 ShowCaret(HWND32);
@ -3822,6 +3941,9 @@ BOOL32 GetTextMetrics32W(HDC32,LPTEXTMETRIC32W);
BOOL16 GetUpdateRect16(HWND16,LPRECT16,BOOL16);
BOOL32 GetUpdateRect32(HWND32,LPRECT32,BOOL32);
#define GetUpdateRect WINELIB_NAME(GetUpdateRect)
LONG GetVersion16(void);
LONG GetVersion32(void);
#define GetVersion WINELIB_NAME(GetVersion)
BOOL16 GetViewportExtEx16(HDC16,LPPOINT16);
BOOL32 GetViewportExtEx32(HDC32,LPPOINT32);
#define GetViewportExtEx WINELIB_NAME(GetViewportExtEx)
@ -4310,6 +4432,8 @@ INT32 wvsprintf32W(LPWSTR,LPCWSTR,LPCVOID);
/* Extra functions that don't exist in the Windows API */
INT32 LoadMessage32A(HINSTANCE32,UINT32,WORD,LPSTR,INT32);
INT32 LoadMessage32W(HINSTANCE32,UINT32,WORD,LPWSTR,INT32);
INT32 lstrncmp32A(LPCSTR,LPCSTR,INT32);
INT32 lstrncmp32W(LPCWSTR,LPCWSTR,INT32);
INT32 lstrncmpi32A(LPCSTR,LPCSTR,INT32);
@ -4331,26 +4455,12 @@ typedef WPARAM32 WPARAM;
typedef HANDLE32 HANDLE;
typedef HANDLE32 HBITMAP;
typedef HANDLE32 HBRUSH;
typedef HANDLE32 HCURSOR;
typedef HANDLE32 HDC;
typedef HANDLE32 HDRVR;
typedef HANDLE32 HFONT;
typedef HANDLE32 HGLOBAL;
typedef HANDLE32 HICON;
typedef HANDLE32 HINSTANCE;
typedef HANDLE32 HMENU;
typedef HANDLE32 HMETAFILE;
typedef HANDLE32 HMIDI;
typedef HANDLE32 HMIDIIN;
typedef HANDLE32 HMIDIOUT;
typedef HANDLE32 HMMIO;
typedef HANDLE32 HQUEUE;
typedef HANDLE32 HRGN;
typedef HANDLE32 HRSRC;
typedef HANDLE32 HTASK;
typedef HANDLE32 HWAVE;
typedef HANDLE32 HWAVEIN;
typedef HANDLE32 HWAVEOUT;
typedef HANDLE32 HWND;
# else /* WINELIB32 */
typedef INT16 INT;
@ -4360,26 +4470,12 @@ typedef WPARAM16 WPARAM;
typedef HANDLE16 HANDLE;
typedef HANDLE16 HBITMAP;
typedef HANDLE16 HBRUSH;
typedef HANDLE16 HCURSOR;
typedef HANDLE16 HDC;
typedef HANDLE16 HDRVR;
typedef HANDLE16 HFONT;
typedef HANDLE16 HGLOBAL;
typedef HANDLE16 HICON;
typedef HANDLE16 HINSTANCE;
typedef HANDLE16 HMENU;
typedef HANDLE16 HMETAFILE;
typedef HANDLE16 HMIDI;
typedef HANDLE16 HMIDIIN;
typedef HANDLE16 HMIDIOUT;
typedef HANDLE16 HMMIO;
typedef HANDLE16 HQUEUE;
typedef HANDLE16 HRGN;
typedef HANDLE16 HRSRC;
typedef HANDLE16 HTASK;
typedef HANDLE16 HWAVE;
typedef HANDLE16 HWAVEIN;
typedef HANDLE16 HWAVEOUT;
typedef HANDLE16 HWND;
# endif /* WINELIB32 */
#endif /* __WINE__ */
@ -4387,7 +4483,7 @@ typedef HANDLE16 HWND;
/* Callback function pointers types. */
#ifdef WINELIB
typedef LONG (*DRIVERPROC)(DWORD, HDRVR, UINT, LPARAM, LPARAM);
typedef LONG (*DRIVERPROC)(DWORD, HDRVR16, UINT, LPARAM, LPARAM);
typedef int (*EDITWORDBREAKPROC)(LPSTR lpch, int ichCurrent, int cch,int code);
#else
typedef SEGPTR DRIVERPROC;
@ -4421,23 +4517,23 @@ WORD ChangeSelector(WORD,WORD);
INT CheckMenuItem(HMENU,UINT,UINT);
BOOL Chord(HDC,INT,INT,INT,INT,INT,INT,INT,INT);
BOOL CloseClipboard(void);
HMETAFILE CloseMetaFile(HDC);
HMETAFILE16 CloseMetaFile(HDC);
void CloseSound(void);
BOOL CloseWindow(HWND);
int ConvertRequest(HWND,LPKANJISTRUCT);
HMETAFILE CopyMetaFile(HMETAFILE,LPCSTR);
HMETAFILE16 CopyMetaFile(HMETAFILE16,LPCSTR);
INT CountClipboardFormats(void);
INT CountVoiceNotes(INT);
HBRUSH CreateBrushIndirect(const LOGBRUSH16*);
HDC CreateCompatibleDC(HDC);
HCURSOR CreateCursor(HANDLE,INT,INT,INT,INT,const BYTE*,const BYTE*);
HCURSOR16 CreateCursor(HANDLE,INT,INT,INT,INT,const BYTE*,const BYTE*);
HANDLE CreateCursorIconIndirect(HANDLE,CURSORICONINFO*,const BYTE*,const BYTE*);
HDC CreateDC(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*);
HBRUSH CreateDIBPatternBrush(HGLOBAL,UINT);
HBRUSH CreateDIBPatternBrush(HGLOBAL16,UINT);
HBITMAP CreateDIBitmap(HDC,BITMAPINFOHEADER*,DWORD,LPVOID,BITMAPINFO*,UINT);
HBRUSH CreateHatchBrush(INT,COLORREF);
HDC CreateIC(LPCSTR,LPCSTR,LPCSTR,const DEVMODE*);
HICON CreateIcon(HINSTANCE,INT,INT,BYTE,BYTE,const BYTE*,const BYTE*);
HICON16 CreateIcon(HINSTANCE,INT,INT,BYTE,BYTE,const BYTE*,const BYTE*);
HMENU CreateMenu(void);
HDC CreateMetaFile(LPCSTR);
HPALETTE16 CreatePalette(const LOGPALETTE*);
@ -4452,10 +4548,10 @@ HDWP16 DeferWindowPos(HDWP16,HWND,HWND,INT,INT,INT,INT,UINT);
ATOM DeleteAtom(ATOM);
BOOL DeleteDC(HDC);
BOOL DeleteMenu(HMENU,UINT,UINT);
BOOL DeleteMetaFile(HMETAFILE);
BOOL DeleteMetaFile(HMETAFILE16);
BOOL DeleteObject(HGDIOBJ16);
BOOL DestroyCursor(HCURSOR);
BOOL DestroyIcon(HICON);
BOOL DestroyCursor(HCURSOR16);
BOOL DestroyIcon(HICON16);
BOOL DestroyMenu(HMENU);
BOOL DestroyWindow(HWND);
HANDLE DirectResAlloc(HANDLE,WORD,WORD);
@ -4465,8 +4561,8 @@ INT DlgDirList(HWND,SEGPTR,INT,INT,UINT);
BOOL DlgDirSelect(HWND,LPSTR,INT);
BOOL DlgDirSelectComboBox(HWND,LPSTR,INT);
BOOL16 DragDetect(HWND16,POINT16);
DWORD DragObject(HWND, HWND, WORD, HANDLE, WORD, HCURSOR);
BOOL DrawIcon(HDC,INT,INT,HICON);
DWORD DragObject(HWND, HWND, WORD, HANDLE, WORD, HCURSOR16);
BOOL DrawIcon(HDC,INT,INT,HICON16);
void DrawMenuBar(HWND);
DWORD DumpIcon(SEGPTR,WORD*,SEGPTR*,SEGPTR*);
BOOL Ellipse(HDC,INT,INT,INT,INT);
@ -4479,13 +4575,13 @@ BOOL EndDeferWindowPos(HDWP16);
UINT EnumClipboardFormats(UINT);
INT EnumFontFamilies(HDC,LPCSTR,FONTENUMPROC16,LPARAM);
INT EnumFonts(HDC,LPCSTR,FONTENUMPROC16,LPARAM);
BOOL EnumMetaFile(HDC,HMETAFILE,MFENUMPROC16,LPARAM);
BOOL EnumMetaFile(HDC,HMETAFILE16,MFENUMPROC16,LPARAM);
INT EnumObjects(HDC,INT,GOBJENUMPROC16,LPARAM);
INT Escape(HDC,INT,INT,LPCSTR,LPVOID);
int ExcludeClipRect(HDC,short,short,short,short);
int ExcludeVisRect(HDC,short,short,short,short);
BOOL ExitWindows(DWORD,WORD);
HICON ExtractIcon(HINSTANCE,LPCSTR,WORD);
HICON16 ExtractIcon(HINSTANCE,LPCSTR,WORD);
void FatalAppExit(UINT,LPCSTR);
void FatalExit(int);
BOOL FillRgn(HDC,HRGN,HBRUSH);
@ -4518,7 +4614,7 @@ HBRUSH GetControlBrush(HWND,HDC,WORD);
HANDLE GetCurrentPDB(void);
DWORD GetCurrentPosition(HDC);
DWORD GetCurrentTime(void);
HCURSOR GetCursor(void);
HCURSOR16 GetCursor(void);
HDC GetDC(HWND);
HDC GetDCEx(HWND,HRGN,DWORD);
DWORD GetDCHook(HDC,FARPROC16*);
@ -4608,7 +4704,6 @@ INT GetTextFace(HDC,INT,LPSTR);
LPINT16 GetThresholdEvent(void);
int GetThresholdStatus(void);
HWND GetTopWindow(HWND);
LONG GetVersion(void);
DWORD GetViewportExt(HDC);
DWORD GetViewportOrg(HDC);
BOOL GetWinDebugInfo(LPWINDEBUGINFO,UINT);
@ -4656,6 +4751,7 @@ BOOL IsIconic(HWND);
BOOL IsMenu(HMENU);
BOOL IsTask(HTASK);
HTASK IsTaskLocked(void);
BOOL IsValidMetaFile(HMETAFILE16);
BOOL IsWindowEnabled(HWND);
BOOL IsWindowVisible(HWND);
BOOL IsZoomed(HWND);
@ -4730,7 +4826,7 @@ HWND SetClipboardViewer(HWND);
void SetConvertHook(BOOL);
BOOL SetConvertParams(int,int);
BOOL32 SetCurrentDirectory(LPCSTR);
HCURSOR SetCursor(HCURSOR);
HCURSOR16 SetCursor(HCURSOR16);
void SetCursorPos(short,short);
BOOL SetDCHook(HDC,FARPROC16,DWORD);
void SetDCState(HDC,HDC);
@ -4767,7 +4863,7 @@ void SetSysColors(int,LPINT16,COLORREF*);
WORD SetSystemPaletteUse(HDC,WORD);
BOOL SetSystemPowerState(BOOL, BOOL);
BOOL SetSystemTime(const SYSTEMTIME*);
HQUEUE SetTaskQueue(HTASK,HQUEUE);
HQUEUE16 SetTaskQueue(HTASK16,HQUEUE16);
WORD SetTextAlign(HDC,WORD);
short SetTextCharacterExtra(HDC,short);
DWORD SetTextColor(HDC,DWORD);
@ -4787,7 +4883,7 @@ int ShowCursor(BOOL);
void ShowOwnedPopups(HWND,BOOL);
void ShowScrollBar(HWND,WORD,BOOL);
BOOL ShowWindow(HWND,int);
DWORD SizeofResource(HMODULE16,HRSRC);
DWORD SizeofResource(HMODULE16,HRSRC16);
VOID Sleep(DWORD); /* Win32 */
int StartSound(void);
int StopSound(void);

View File

@ -116,13 +116,13 @@ typedef UINT32 *LPUINT32;
typedef HKEY *LPHKEY;
typedef HMIXEROBJ *LPHMIXEROBJ;
/* Special case: a segmented pointer is just a pointer in the library. */
/* Special case: a segmented pointer is just a pointer in the user's code. */
#ifdef WINELIB
typedef void* SEGPTR;
#else /* WINELIB */
#ifdef __WINE__
typedef DWORD SEGPTR;
#endif /* WINELIB */
#else
typedef void* SEGPTR;
#endif /* __WINE__ */
/* Handle types that exist both in Win16 and Win32. */

View File

@ -55,7 +55,7 @@ int debug_last_handle_size= 0; /* for debugging purpose only */
* h - the handle.
* RETURN: pointer to handle info.
*/
static struct handle_info *locate_handle(HGLOBAL h, struct local_shm_map *map)
static struct handle_info *locate_handle(HGLOBAL16 h, struct local_shm_map *map)
{
struct shm_block *block;
@ -79,7 +79,7 @@ static struct handle_info *locate_handle(HGLOBAL h, struct local_shm_map *map)
}
/* dde_alloc_handle: allocate shared DDE handle */
static HGLOBAL dde_alloc_handle()
static HGLOBAL16 dde_alloc_handle()
{
int bit_nr;
@ -101,7 +101,7 @@ DDE_malloc(unsigned int flags, unsigned long size, SHMDATA *shmdata)
struct shm_block *block;
struct handle_info *h_info;
struct local_shm_map *curr;
HGLOBAL handle;
HGLOBAL16 handle;
dprintf_global(stddeb,"DDE_malloc flags %4X, size %ld\n", flags, size);
DDE_IPC_init(); /* make sure main shm block allocated */
@ -167,7 +167,7 @@ DDE_malloc(unsigned int flags, unsigned long size, SHMDATA *shmdata)
return (char *)HINFO2DATAPTR(h_info);
}
HGLOBAL DDE_GlobalFree(HGLOBAL h)
HGLOBAL16 DDE_GlobalFree(HGLOBAL16 h)
{
struct handle_info *h_info;
int handle_index= h & 0x7fff;
@ -193,7 +193,7 @@ HGLOBAL DDE_GlobalFree(HGLOBAL h)
return 0;
}
WORD DDE_SyncHandle(HGLOBAL handle, WORD sel)
WORD DDE_SyncHandle(HGLOBAL16 handle, WORD sel)
{
struct handle_info *h_info;
@ -228,12 +228,12 @@ WORD DDE_SyncHandle(HGLOBAL handle, WORD sel)
* 32 bit pointer to the memory.
*/
void *DDE_AttachHandle(HGLOBAL handle, SEGPTR *segptr)
void *DDE_AttachHandle(HGLOBAL16 handle, SEGPTR *segptr)
{
struct handle_info *h_info;
SHMDATA shmdata;
void *ptr;
HGLOBAL hOwner = GetCurrentPDB();
HGLOBAL16 hOwner = GetCurrentPDB();
assert(is_dde_handle(handle));
if (segptr != NULL)

View File

@ -75,8 +75,8 @@ WORD FreeSelector(WORD a)
}
/* stub that partially emulates the true GLOBAL_CreateBlock function */
HGLOBAL GLOBAL_CreateBlock( WORD flags, void *ptr, DWORD size,
HGLOBAL hOwner, BOOL isCode,
HGLOBAL16 GLOBAL_CreateBlock( WORD flags, void *ptr, DWORD size,
HGLOBAL16 hOwner, BOOL isCode,
BOOL is32Bit, BOOL isReadOnly,
SHMDATA *shmdata )
{

View File

@ -99,7 +99,7 @@ LPVOID LIBRES_LockResource( HGLOBAL32 handle )
/**********************************************************************
* LIBRES_FreeResource
*/
BOOL LIBRES_FreeResource( HGLOBAL handle )
BOOL LIBRES_FreeResource( HGLOBAL32 handle )
{
return 0; /* Obsolete in Win32 */
}
@ -108,7 +108,7 @@ BOOL LIBRES_FreeResource( HGLOBAL handle )
/**********************************************************************
* LIBRES_AccessResource
*/
INT LIBRES_AccessResource( HINSTANCE hModule, HRSRC hRsrc )
INT LIBRES_AccessResource( HINSTANCE hModule, HRSRC32 hRsrc )
{
WINELIB_UNIMP("LIBRES_AccessResource()");
return -1; /* Obsolete in Win32 */
@ -127,7 +127,7 @@ DWORD LIBRES_SizeofResource( HINSTANCE hModule, HRSRC32 hRsrc )
/**********************************************************************
* LIBRES_AllocResource
*/
HGLOBAL LIBRES_AllocResource( HINSTANCE hModule, HRSRC hRsrc, DWORD size )
HGLOBAL32 LIBRES_AllocResource( HINSTANCE hModule, HRSRC32 hRsrc, DWORD size )
{
WINELIB_UNIMP("LIBRES_AllocResource()");
return 0; /* Obsolete in Win32 */

View File

@ -16,7 +16,6 @@ static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
#include "comm.h"
#include "win.h"
#include "menu.h"
#include "kernel32.h"
#include "atom.h"
#include "dialog.h"
#include "directory.h"
@ -59,6 +58,7 @@ int MAIN_Init(void)
extern BOOL32 RELAY_Init(void);
extern BOOL32 SIGNAL_Init(void);
extern BOOL32 WIDGETS_Init(void);
extern int KERN32_Init(void);
int queueSize;

View File

@ -20,6 +20,7 @@
#include "arch.h"
#include "selectors.h"
#include "callback.h"
#include "file.h"
#include "module.h"
#include "stackframe.h"
#include "stddebug.h"

View File

@ -35,7 +35,7 @@ static DWORD NE_FindNameTableId( HMODULE16 hModule, SEGPTR typeId, SEGPTR resId
NE_MODULE *pModule;
NE_TYPEINFO *pTypeInfo;
NE_NAMEINFO *pNameInfo;
HGLOBAL handle;
HGLOBAL16 handle;
WORD *p;
DWORD ret = 0;
int count;
@ -101,8 +101,8 @@ static DWORD NE_FindNameTableId( HMODULE16 hModule, SEGPTR typeId, SEGPTR resId
*
* Find a resource once the type info structure has been found.
*/
static HRSRC NE_FindResourceFromType( NE_MODULE *pModule,
NE_TYPEINFO *pTypeInfo, SEGPTR resId )
static HRSRC16 NE_FindResourceFromType( NE_MODULE *pModule,
NE_TYPEINFO *pTypeInfo, SEGPTR resId )
{
BYTE *p;
int count;
@ -117,7 +117,7 @@ static HRSRC NE_FindResourceFromType( NE_MODULE *pModule,
if (pNameInfo->id & 0x8000) continue;
p = (BYTE *)pModule + pModule->res_table + pNameInfo->id;
if ((*p == len) && !lstrncmpi32A( p+1, str, len ))
return (HRSRC)((int)pNameInfo - (int)pModule);
return (HRSRC16)((int)pNameInfo - (int)pModule);
}
}
else /* Numeric resource id */
@ -125,7 +125,7 @@ static HRSRC NE_FindResourceFromType( NE_MODULE *pModule,
WORD id = LOWORD(resId) | 0x8000;
for (count = pTypeInfo->count; count > 0; count--, pNameInfo++)
if (pNameInfo->id == id)
return (HRSRC)((int)pNameInfo - (int)pModule);
return (HRSRC16)((int)pNameInfo - (int)pModule);
}
return 0;
}
@ -134,10 +134,10 @@ static HRSRC NE_FindResourceFromType( NE_MODULE *pModule,
/***********************************************************************
* NE_FindResource
*/
HRSRC NE_FindResource( HMODULE16 hModule, SEGPTR typeId, SEGPTR resId )
HRSRC16 NE_FindResource( HMODULE16 hModule, SEGPTR typeId, SEGPTR resId )
{
NE_TYPEINFO *pTypeInfo;
HRSRC hRsrc;
HRSRC16 hRsrc;
NE_MODULE *pModule = MODULE_GetPtr( hModule );
if (!pModule || !pModule->res_table) return 0;
@ -211,7 +211,7 @@ HRSRC NE_FindResource( HMODULE16 hModule, SEGPTR typeId, SEGPTR resId )
/***********************************************************************
* NE_AllocResource
*/
HGLOBAL NE_AllocResource( HMODULE16 hModule, HRSRC hRsrc, DWORD size )
HGLOBAL16 NE_AllocResource( HMODULE16 hModule, HRSRC16 hRsrc, DWORD size )
{
NE_NAMEINFO *pNameInfo=NULL;
WORD sizeShift;
@ -231,7 +231,7 @@ HGLOBAL NE_AllocResource( HMODULE16 hModule, HRSRC hRsrc, DWORD size )
/***********************************************************************
* NE_AccessResource
*/
int NE_AccessResource( HMODULE16 hModule, HRSRC hRsrc )
int NE_AccessResource( HMODULE16 hModule, HRSRC16 hRsrc )
{
NE_NAMEINFO *pNameInfo=NULL;
int fd;
@ -254,7 +254,7 @@ int NE_AccessResource( HMODULE16 hModule, HRSRC hRsrc )
/***********************************************************************
* NE_SizeofResource
*/
DWORD NE_SizeofResource( HMODULE16 hModule, HRSRC hRsrc )
DWORD NE_SizeofResource( HMODULE16 hModule, HRSRC16 hRsrc )
{
NE_NAMEINFO *pNameInfo=NULL;
WORD sizeShift;
@ -272,7 +272,7 @@ DWORD NE_SizeofResource( HMODULE16 hModule, HRSRC hRsrc )
/***********************************************************************
* NE_LoadResource
*/
HGLOBAL NE_LoadResource( HMODULE16 hModule, HRSRC hRsrc )
HGLOBAL16 NE_LoadResource( HMODULE16 hModule, HRSRC16 hRsrc )
{
NE_NAMEINFO *pNameInfo=NULL;
WORD sizeShift;
@ -307,7 +307,7 @@ HGLOBAL NE_LoadResource( HMODULE16 hModule, HRSRC hRsrc )
/***********************************************************************
* NE_LockResource
*/
SEGPTR NE_LockResource( HMODULE16 hModule, HGLOBAL handle )
SEGPTR NE_LockResource( HMODULE16 hModule, HGLOBAL16 handle )
{
/* May need to reload the resource if discarded */
@ -318,7 +318,7 @@ SEGPTR NE_LockResource( HMODULE16 hModule, HGLOBAL handle )
/***********************************************************************
* NE_FreeResource
*/
BOOL NE_FreeResource( HMODULE16 hModule, HGLOBAL handle )
BOOL NE_FreeResource( HMODULE16 hModule, HGLOBAL16 handle )
{
NE_TYPEINFO *pTypeInfo;
NE_NAMEINFO *pNameInfo;

View File

@ -15,7 +15,6 @@
#include <sys/types.h>
#include "wintypes.h"
#include "windows.h"
#include "kernel32.h"
#include "pe_image.h"
#include "module.h"
#include "handle32.h"
@ -29,8 +28,6 @@
#include "stddebug.h"
#include "debug.h"
int language = 0x0409;
#define PrintIdA(name) \
if (HIWORD((DWORD)name)) \
dprintf_resource( stddeb, "'%s'", name); \
@ -116,9 +113,11 @@ PIMAGE_RESOURCE_DIRECTORY GetResDirEntryA(PIMAGE_RESOURCE_DIRECTORY resdirptr,
}
/**********************************************************************
* PE_FindResource32W
* PE_FindResourceEx32W
*/
HANDLE32 PE_FindResource32W( HINSTANCE hModule, LPCWSTR name, LPCWSTR type )
HANDLE32 PE_FindResourceEx32W(
HINSTANCE hModule, LPCWSTR name, LPCWSTR type, WORD lang
)
{
PE_MODULE *pe;
NE_MODULE *pModule;
@ -142,7 +141,7 @@ HANDLE32 PE_FindResource32W( HINSTANCE hModule, LPCWSTR name, LPCWSTR type )
return 0;
if ((resdirptr = GetResDirEntryW(resdirptr, name, root)) == NULL)
return 0;
result = (HANDLE32)GetResDirEntryW(resdirptr, (LPCWSTR)language, root);
result = (HANDLE32)GetResDirEntryW(resdirptr, (LPCWSTR)(UINT32)lang, root);
/* Try LANG_NEUTRAL, too */
if(!result)
return (HANDLE32)GetResDirEntryW(resdirptr, (LPCWSTR)0, root);

View File

@ -32,6 +32,7 @@
else \
dprintf_resource( stddeb, "#%04x", LOWORD(name));
extern WORD WINE_LanguageId;
/**********************************************************************
* FindResource16 (KERNEL.60)
@ -72,6 +73,15 @@ HRSRC16 FindResource16( HMODULE16 hModule, SEGPTR name, SEGPTR type )
*/
HANDLE32 FindResource32A( HINSTANCE32 hModule, LPCSTR name, LPCSTR type )
{
return FindResourceEx32A(hModule,name,type,WINE_LanguageId);
}
/**********************************************************************
* FindResourceEx32A (KERNEL32.129)
*/
HANDLE32 FindResourceEx32A(
HINSTANCE32 hModule,LPCSTR name,LPCSTR type,WORD lang
) {
LPWSTR xname,xtype;
HANDLE32 ret;
@ -79,7 +89,7 @@ HANDLE32 FindResource32A( HINSTANCE32 hModule, LPCSTR name, LPCSTR type )
else xname = (LPWSTR)name;
if (HIWORD((DWORD)type)) xtype = STRING32_DupAnsiToUni(type);
else xtype = (LPWSTR)type;
ret = FindResource32W(hModule,xname,xtype);
ret = FindResourceEx32W(hModule,xname,xtype,lang);
if (HIWORD((DWORD)name)) free(xname);
if (HIWORD((DWORD)type)) free(xtype);
return ret;
@ -87,16 +97,14 @@ HANDLE32 FindResource32A( HINSTANCE32 hModule, LPCSTR name, LPCSTR type )
/**********************************************************************
* FindResource32W (KERNEL32.131)
* FindResourceEx32W (KERNEL32.130)
*/
HRSRC32 FindResource32W( HINSTANCE32 hModule, LPCWSTR name, LPCWSTR type )
{
HRSRC32 FindResourceEx32W(
HINSTANCE32 hModule, LPCWSTR name, LPCWSTR type, WORD lang
) {
#ifndef WINELIB
NE_MODULE *pModule;
/* Sometimes we get passed hModule = 0x00000000. FIXME: is GetTaskDS()
* ok?
*/
if (!hModule) hModule = GetTaskDS();
hModule = GetExePtr( hModule ); /* In case we were passed an hInstance */
dprintf_resource(stddeb, "FindResource32W: module=%08x type=", hModule );
@ -106,12 +114,20 @@ HRSRC32 FindResource32W( HINSTANCE32 hModule, LPCWSTR name, LPCWSTR type )
dprintf_resource( stddeb, "\n" );
if (!(pModule = MODULE_GetPtr( hModule ))) return 0;
if (!(pModule->flags & NE_FFLAGS_WIN32)) return 0;
return PE_FindResource32W(hModule,name,type);
return PE_FindResourceEx32W(hModule,name,type,lang);
#else
return LIBRES_FindResource( hModule, name, type );
#endif
}
/**********************************************************************
* FindResource32W (KERNEL32.131)
*/
HRSRC32 FindResource32W( HINSTANCE32 hModule, LPCWSTR name, LPCWSTR type )
{
return FindResourceEx32W(hModule,name,type,WINE_LanguageId);
}
/**********************************************************************
* LoadResource16 (KERNEL.61)
@ -642,11 +658,121 @@ LoadString32W(HINSTANCE32 instance,UINT32 resource_id,LPWSTR buffer,int buflen)
INT32
LoadString32A(HINSTANCE32 instance,UINT32 resource_id,LPSTR buffer,int buflen)
{
LPWSTR buffer2 = (LPWSTR)xmalloc(buflen*2);
LPWSTR buffer2 = buffer?(LPWSTR)xmalloc(buflen*2):NULL;
INT32 retval = LoadString32W(instance,resource_id,buffer2,buflen);
STRING32_UniToAnsi(buffer,buffer2);
free(buffer2);
if (buffer) {
STRING32_UniToAnsi(buffer,buffer2);
free(buffer2);
}
return retval;
}
/* Messages...used by FormatMessage32* (KERNEL32.something)
*
* They can be specified either directly or using a message ID and
* loading them from the resource.
*
* The resourcedata has following format:
* start:
* 0: DWORD nrofentries
* nrofentries * subentry:
* 0: DWORD firstentry
* 4: DWORD lastentry
* 8: DWORD offset from start to the stringentries
*
* (lastentry-firstentry) * stringentry:
* 0: WORD len (0 marks end)
* 2: WORD unknown (flags?)
* 4: CHAR[len-4]
* (stringentry i of a subentry refers to the ID 'firstentry+i')
*
* Yes, ANSI strings in win32 resources. Go figure.
*/
/**********************************************************************
* LoadMessage32A (internal)
*/
INT32
LoadMessage32A(
HINSTANCE32 instance,UINT32 id,WORD lang,LPSTR buffer,int buflen
) {
HGLOBAL32 hmem;
HRSRC32 hrsrc;
BYTE *p;
int nrofentries,i,slen;
struct _subentry {
DWORD firstentry;
DWORD lastentry;
DWORD offset;
} *se;
struct _stringentry {
WORD len;
WORD unknown;
CHAR str[1];
} *stre;
dprintf_resource(stddeb, "LoadMessage: instance = %04x, id = %04x, buffer = %08x, "
"length = %d\n", instance, (int)id, (int) buffer, buflen);
/*FIXME: I am not sure about the '1' ... But I've only seen those entries*/
hrsrc = FindResourceEx32W(instance,(LPWSTR)1,(LPCWSTR)RT_MESSAGELIST,lang);
if (!hrsrc) return 0;
hmem = LoadResource32( instance, hrsrc );
if (!hmem) return 0;
p = LockResource32(hmem);
nrofentries = *(DWORD*)p;
stre = NULL;
se = (struct _subentry*)(p+4);
for (i=nrofentries;i--;) {
if ((id>=se->firstentry) && (id<se->lastentry)) {
stre = (struct _stringentry*)(p+se->offset);
id -= se->firstentry;
break;
}
se++;
}
if (!stre)
return 0;
for (i=id;i--;) {
if (!(slen=stre->len))
return 0;
stre = (struct _stringentry*)(((char*)stre)+slen);
}
slen=stre->len;
dprintf_resource(stddeb," - strlen=%d\n",slen);
i = MIN(buflen - 1, slen);
if (buffer == NULL)
return slen; /* different to LoadString */
if (i>0) {
lstrcpyn32A(buffer,stre->str,i);
buffer[i]=0;
} else {
if (buflen>1) {
buffer[0]=0;
return 0;
}
}
if (buffer)
dprintf_resource(stddeb,"LoadMessage // '%s' copied !\n", buffer);
return i;
}
/**********************************************************************
* LoadMessage32W (internal)
*/
INT32
LoadMessage32W(
HINSTANCE32 instance,UINT32 id,WORD lang,LPWSTR buffer,int buflen
) {
LPSTR buffer2 = buffer?(LPSTR)xmalloc(buflen):NULL;
INT32 retval = LoadMessage32A(instance,id,lang,buffer2,buflen);
if (buffer) {
STRING32_AnsiToUni(buffer,buffer2);
free(buffer2);
}
return retval;
}

View File

@ -38,7 +38,7 @@
/* Must not be greater than 64k, or MAKE_SEGPTR won't work */
#define STACK32_SIZE 0x10000
extern void USER_AppExit(HTASK, HINSTANCE, HQUEUE );
extern void USER_AppExit( HTASK16, HINSTANCE16, HQUEUE16 );
/* Saved 16-bit stack for current process (Win16 only) */
WORD IF1632_Saved16_ss = 0;
@ -254,7 +254,7 @@ static void TASK_UnlinkTask( HTASK16 hTask )
* Create a thunk free-list in segment 'handle', starting from offset 'offset'
* and containing 'count' entries.
*/
static void TASK_CreateThunks( HGLOBAL handle, WORD offset, WORD count )
static void TASK_CreateThunks( HGLOBAL16 handle, WORD offset, WORD count )
{
int i;
WORD free;
@ -1030,9 +1030,9 @@ HANDLE GetCodeHandle( FARPROC16 proc )
/***********************************************************************
* SetTaskQueue (KERNEL.34)
*/
HQUEUE SetTaskQueue( HANDLE hTask, HQUEUE hQueue )
HQUEUE16 SetTaskQueue( HTASK16 hTask, HQUEUE16 hQueue )
{
HQUEUE hPrev;
HQUEUE16 hPrev;
TDB *pTask;
if (!hTask) hTask = hCurrentTask;

View File

@ -111,7 +111,7 @@ HGLOBAL16 GLOBAL_CreateBlock( WORD flags, const void *ptr, DWORD size,
if (!(pArena = GLOBAL_GetArena( sel, selcount )))
{
FreeSelector( sel );
SELECTOR_FreeBlock( sel, selcount );
return 0;
}
@ -159,11 +159,13 @@ HGLOBAL16 GLOBAL_CreateBlock( WORD flags, const void *ptr, DWORD size,
BOOL16 GLOBAL_FreeBlock( HGLOBAL16 handle )
{
WORD sel;
GLOBALARENA *pArena;
if (!handle) return TRUE;
sel = GlobalHandleToSel( handle );
if (FreeSelector( sel )) return FALSE; /* failed */
memset( GET_ARENA_PTR(sel), 0, sizeof(GLOBALARENA) );
sel = GlobalHandleToSel( handle );
pArena = GET_ARENA_PTR(sel);
SELECTOR_FreeBlock( sel, (pArena->size + 0xffff) / 0x10000 );
memset( pArena, 0, sizeof(GLOBALARENA) );
return TRUE;
}
@ -226,7 +228,7 @@ HGLOBAL16 GLOBAL_Alloc( UINT16 flags, DWORD size, HGLOBAL16 hOwner,
* Find the arena for a given handle
* (when handle is not serial - e.g. DDE)
*/
static GLOBALARENA *GLOBAL_FindArena( HGLOBAL handle)
static GLOBALARENA *GLOBAL_FindArena( HGLOBAL16 handle)
{
int i;
for (i = globalArenaSize-1 ; i>=0 ; i--) {
@ -241,7 +243,7 @@ static GLOBALARENA *GLOBAL_FindArena( HGLOBAL handle)
* DDE_GlobalHandleToSel
*/
WORD DDE_GlobalHandleToSel( HGLOBAL handle )
WORD DDE_GlobalHandleToSel( HGLOBAL16 handle )
{
GLOBALARENA *pArena;
SEGPTR segptr;
@ -341,7 +343,7 @@ HGLOBAL16 GlobalReAlloc16( HGLOBAL16 handle, DWORD size, UINT16 flags )
ptr = HeapReAlloc( SystemHeap, 0, ptr, size );
if (!ptr)
{
FreeSelector( sel );
SELECTOR_FreeBlock( sel, (oldsize + 0xffff) / 0x10000 );
memset( pArena, 0, sizeof(GLOBALARENA) );
return 0;
}
@ -360,7 +362,7 @@ HGLOBAL16 GlobalReAlloc16( HGLOBAL16 handle, DWORD size, UINT16 flags )
if (!(pNewArena = GLOBAL_GetArena( sel, selcount )))
{
HeapFree( SystemHeap, 0, ptr );
FreeSelector( sel );
SELECTOR_FreeBlock( sel, selcount );
return 0;
}

View File

@ -10,7 +10,6 @@
#include <string.h>
#include "windows.h"
#include "debugger.h"
#include "kernel32.h" /* for CRITICAL_SECTION */
#include "selectors.h"
#include "winbase.h"
#include "winerror.h"

View File

@ -64,31 +64,8 @@ WORD AllocSelector( WORD sel )
*/
WORD FreeSelector( WORD sel )
{
WORD i, count, nextsel;
ldt_entry entry;
STACK16FRAME *frame;
dprintf_selector( stddeb, "FreeSelector(%04x)\n", sel );
if (IS_SELECTOR_FREE(sel)) return sel; /* error */
count = (GET_SEL_LIMIT(sel) >> 16) + 1;
sel &= ~(__AHINCR - 1); /* clear bottom bits of selector */
nextsel = sel + (count << __AHSHIFT);
memset( &entry, 0, sizeof(entry) ); /* clear the LDT entries */
/* FIXME: is it correct to free the whole array? */
for (i = SELECTOR_TO_ENTRY(sel); count; i++, count--)
{
LDT_SetEntry( i, &entry );
ldt_flags_copy[i] &= ~LDT_FLAGS_ALLOCATED;
}
/* Clear the saved 16-bit selector */
frame = CURRENT_STACK16;
while (frame)
{
if ((frame->ds >= sel) && (frame->ds < nextsel)) frame->ds = 0;
if ((frame->es >= sel) && (frame->es < nextsel)) frame->es = 0;
frame = PTR_SEG_OFF_TO_LIN(frame->saved_ss, frame->saved_sp);
}
SELECTOR_FreeBlock( sel, 1 );
return 0;
}
@ -146,6 +123,38 @@ WORD SELECTOR_AllocBlock( const void *base, DWORD size, enum seg_type type,
}
/***********************************************************************
* SELECTOR_FreeBlock
*
* Free a block of selectors.
*/
void SELECTOR_FreeBlock( WORD sel, WORD count )
{
WORD i, nextsel;
ldt_entry entry;
STACK16FRAME *frame;
dprintf_selector( stddeb, "SELECTOR_FreeBlock(%04x,%d)\n", sel, count );
sel &= ~(__AHINCR - 1); /* clear bottom bits of selector */
nextsel = sel + (count << __AHSHIFT);
memset( &entry, 0, sizeof(entry) ); /* clear the LDT entries */
for (i = SELECTOR_TO_ENTRY(sel); count; i++, count--)
{
LDT_SetEntry( i, &entry );
ldt_flags_copy[i] &= ~LDT_FLAGS_ALLOCATED;
}
/* Clear the saved 16-bit selector */
frame = CURRENT_STACK16;
while (frame)
{
if ((frame->ds >= sel) && (frame->ds < nextsel)) frame->ds = 0;
if ((frame->es >= sel) && (frame->es < nextsel)) frame->es = 0;
frame = PTR_SEG_OFF_TO_LIN(frame->saved_ss, frame->saved_sp);
}
}
/***********************************************************************
* SELECTOR_ReallocBlock
*
@ -155,7 +164,6 @@ WORD SELECTOR_ReallocBlock( WORD sel, const void *base, DWORD size,
enum seg_type type, BOOL32 is32bit, BOOL32 readonly)
{
WORD i, oldcount, newcount;
ldt_entry entry;
if (!size) size = 1;
oldcount = (GET_SEL_LIMIT(sel) >> 16) + 1;
@ -171,7 +179,7 @@ WORD SELECTOR_ReallocBlock( WORD sel, const void *base, DWORD size,
if (i < newcount) /* they are not free */
{
FreeSelector( sel );
SELECTOR_FreeBlock( sel, oldcount );
sel = AllocSelectorArray( newcount );
}
else /* mark the selectors as allocated */
@ -182,12 +190,8 @@ WORD SELECTOR_ReallocBlock( WORD sel, const void *base, DWORD size,
}
else if (oldcount > newcount) /* We need to remove selectors */
{
memset( &entry, 0, sizeof(entry) ); /* clear the LDT entries */
for (i = oldcount; i < newcount; i++)
{
LDT_SetEntry( SELECTOR_TO_ENTRY(sel) + i, &entry );
ldt_flags_copy[SELECTOR_TO_ENTRY(sel) + i] &= ~LDT_FLAGS_ALLOCATED;
}
SELECTOR_FreeBlock( ENTRY_TO_SELECTOR(SELECTOR_TO_ENTRY(sel)+newcount),
oldcount - newcount );
}
if (sel) SELECTOR_SetEntries( sel, base, size, type, is32bit, readonly );
return sel;

View File

@ -7,6 +7,7 @@ C_SRCS = \
comm.c \
commdlg.c \
compobj.c \
crtdll.c \
driver.c \
exec.c \
escape.c \

View File

@ -1571,7 +1571,7 @@ static void CC_PrepareColorGraph(HWND hDlg)
HBRUSH hbrush;
HDC hdc ;
RECT16 rect,client;
HCURSOR hcursor=SetCursor(LoadCursor16(0,IDC_WAIT));
HCURSOR16 hcursor=SetCursor(LoadCursor16(0,IDC_WAIT));
GetClientRect16(hwnd,&client);
hdc=GetDC(hwnd);
@ -2383,7 +2383,7 @@ LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam)
int i,j,res,init=0;
long l;
LPLOGFONT16 lpxx;
HCURSOR hcursor=SetCursor(LoadCursor16(0,IDC_WAIT));
HCURSOR16 hcursor=SetCursor(LoadCursor16(0,IDC_WAIT));
LPCHOOSEFONT lpcf;
SetWindowLong32A(hDlg, DWL_USER, lParam);
@ -2635,7 +2635,7 @@ LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam)
i=SendDlgItemMessage16(hDlg,cmb1,CB_GETCURSEL,0,0);
if (i!=CB_ERR)
{
HCURSOR hcursor=SetCursor(LoadCursor16(0,IDC_WAIT));
HCURSOR16 hcursor=SetCursor(LoadCursor16(0,IDC_WAIT));
SendDlgItemMessage16(hDlg,cmb1,CB_GETLBTEXT,i,(LPARAM)MAKE_SEGPTR(buffer));
dprintf_commdlg(stddeb,"WM_COMMAND/cmb1 =>%s\n",buffer);
EnumFontFamilies(hdc,buffer,FontStyleEnumProc,

178
misc/crtdll.c Normal file
View File

@ -0,0 +1,178 @@
/*
* The C RunTime DLL
*
* Implements C run-time functionality as known from UNIX.
*
* Copyright 1996 Marcus Meissner
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
#include <ctype.h>
#include "win.h"
#include "windows.h"
#include "stddebug.h"
#include "debug.h"
#include "module.h"
#include "callback.h"
#include "xmalloc.h"
UINT32 CRTDLL_argc_dll; /* CRTDLL.23 */
LPSTR *CRTDLL_argv_dll; /* CRTDLL.24 */
LPSTR CRTDLL_acmdln_dll; /* CRTDLL.38 */
UINT32 CRTDLL_basemajor_dll; /* CRTDLL.42 */
UINT32 CRTDLL_baseminor_dll; /* CRTDLL.43 */
UINT32 CRTDLL_baseversion_dll; /* CRTDLL.44 */
LPSTR CRTDLL_environ_dll; /* CRTDLL.75 */
UINT32 CRTDLL_osmajor_dll; /* CRTDLL.241 */
UINT32 CRTDLL_osminor_dll; /* CRTDLL.242 */
UINT32 CRTDLL_osver_dll; /* CRTDLL.244 */
UINT32 CRTDLL_osversion_dll; /* CRTDLL.245 */
UINT32 CRTDLL_winmajor_dll; /* CRTDLL.329 */
UINT32 CRTDLL_winminor_dll; /* CRTDLL.330 */
UINT32 CRTDLL_winver_dll; /* CRTDLL.331 */
DWORD
CRTDLL__GetMainArgs(LPDWORD argc,LPSTR **argv,LPSTR *environ,DWORD flag)
{
char *cmdline;
char **xargv;
int xargc,i,afterlastspace;
DWORD version;
dprintf_crtdll(stderr,"__GetMainArgs(%p,%p,%p,%ld).\n",
argc,argv,environ,flag
);
CRTDLL_acmdln_dll = cmdline = xstrdup( GetCommandLine32A() );
version = GetVersion32();
CRTDLL_osver_dll = version >> 16;
CRTDLL_winminor_dll = version & 0xFF;
CRTDLL_winmajor_dll = (version>>8) & 0xFF;
CRTDLL_baseversion_dll = version >> 16;
CRTDLL_winver_dll = ((version >> 8) & 0xFF) + ((version & 0xFF) << 8);
CRTDLL_baseminor_dll = (version >> 16) & 0xFF;
CRTDLL_basemajor_dll = (version >> 24) & 0xFF;
CRTDLL_osversion_dll = version & 0xFFFF;
CRTDLL_osminor_dll = version & 0xFF;
CRTDLL_osmajor_dll = (version>>8) & 0xFF;
/* missing heapinit */
/* missing threading init */
i=0;xargv=NULL;xargc=0;afterlastspace=0;
while (cmdline[i]) {
if (cmdline[i]==' ') {
xargv=(char**)xrealloc(xargv,sizeof(char*)*(++xargc));
cmdline[i]='\0';
xargv[xargc-1] = xstrdup(cmdline+afterlastspace);
i++;
while (cmdline[i]==' ')
i++;
if (cmdline[i])
afterlastspace=i;
} else
i++;
}
xargv=(char**)xrealloc(xargv,sizeof(char*)*(++xargc));
cmdline[i]='\0';
xargv[xargc-1] = xstrdup(cmdline+afterlastspace);
CRTDLL_argc_dll = xargc;
*argc = xargc;
CRTDLL_argv_dll = xargv;
*argv = xargv;
/* FIXME ... use real environment */
*environ = xmalloc(sizeof(LPSTR));
CRTDLL_environ_dll = *environ;
(*environ)[0] = NULL;
return 0;
}
typedef void (*_INITTERMFUN)();
DWORD
CRTDLL__initterm(_INITTERMFUN *start,_INITTERMFUN *end)
{
_INITTERMFUN *current;
dprintf_crtdll(stddeb,"_initterm(%p,%p)\n",start,end);
current=start;
while (current<end) {
if (*current)
_InitTermProc(*current);
current++;
}
return 0;
}
void
CRTDLL_srand(DWORD seed) {
/* FIXME: should of course be thread? process? local */
srand(seed);
}
int
CRTDLL_fprintf(DWORD *args) {
/* FIXME: use args[0] */
return vfprintf(stderr,(LPSTR)(args[1]),args+2);
}
int
CRTDLL_printf(DWORD *args) {
return vfprintf(stdout,(LPSTR)(args[0]),args+1);
}
time_t
CRTDLL_time(time_t *timeptr) {
time_t curtime = time(NULL);
if (timeptr)
*timeptr = curtime;
return curtime;
}
BOOL32
CRTDLL__isatty(DWORD x) {
dprintf_crtdll(stderr,"CRTDLL__isatty(%ld)\n",x);
return TRUE;
}
INT32
CRTDLL__write(DWORD x,LPVOID buf,DWORD len) {
if (x<=2)
return write(x,buf,len);
/* hmm ... */
dprintf_crtdll(stderr,"CRTDLL__write(%ld,%p,%ld)\n",x,buf,len);
return len;
}
void
CRTDLL_exit(DWORD ret) {
dprintf_crtdll(stderr,"CRTDLL_exit(%ld)\n",ret);
ExitProcess(ret);
}
void
CRTDLL_fflush(DWORD x) {
dprintf_crtdll(stderr,"CRTDLL_fflush(%ld)\n",x);
}
/* BAD, for the whole WINE process blocks... just done this way to test
* windows95's ftp.exe.
*/
LPSTR
CRTDLL_gets(LPSTR buf) {
return gets(buf);
}
CHAR
CRTDLL_toupper(CHAR x) {
return toupper(x);
}
void
CRTDLL_putchar(INT32 x) {
putchar(x);
}

View File

@ -211,7 +211,7 @@ HMODULE16 GetDriverModuleHandle(HDRVR16 hDrvr)
/**************************************************************************
* DefDriverProc [USER.255]
*/
LRESULT DefDriverProc(DWORD dwDevID, HDRVR hDriv, UINT16 wMsg,
LRESULT DefDriverProc(DWORD dwDevID, HDRVR16 hDriv, UINT16 wMsg,
LPARAM lParam1, LPARAM lParam2)
{
switch(wMsg)

View File

@ -559,6 +559,8 @@ BOOL32 IsCharUpper32W(WCHAR x)
*/
BOOL32 CharToOem32A(LPSTR s,LPSTR d)
{
if (!s || !d)
return TRUE;
AnsiToOem(s,d);
return TRUE;
}
@ -633,8 +635,8 @@ BOOL32 OemToChar32W(LPCSTR s,LPWSTR d)
}
/***********************************************************************
* FormatMessageA (KERNEL32.138)
* FIXME: missing wrap, function has no clue about varargs handling
* FormatMessageA (KERNEL32.138) Library Version
* FIXME: missing wrap,FROM_SYSTEM message-loading,
*/
DWORD
FormatMessage32A(
@ -644,29 +646,36 @@ FormatMessage32A(
DWORD dwLanguageId,
LPSTR lpBuffer,
DWORD nSize,
LPDWORD *Arguments /* va_list *Arguments */
LPDWORD args /* va_list *args */
) {
LPSTR target,t;
DWORD talloced;
LPSTR from,f;
DWORD width = dwFlags & FORMAT_MESSAGE_MAX_WIDTH_MASK;
DWORD nolinefeed = 0;
fprintf(stddeb,"FormatMessage32A(0x%lx,%p,%ld,0x%lx,%p,%ld,%p)\n",
dwFlags,lpSource,dwMessageId,dwLanguageId,lpBuffer,
nSize,Arguments
dprintf_resource(stddeb,
"FormatMessage32A(0x%lx,%p,%ld,0x%lx,%p,%ld,%p)\n",
dwFlags,lpSource,dwMessageId,dwLanguageId,lpBuffer,nSize,args
);
if (width)
fprintf(stdnimp," - line wrapping not supported.\n");
from = NULL;
if (dwFlags & FORMAT_MESSAGE_FROM_STRING)
from = (LPSTR)lpSource;
from = xstrdup((LPSTR)lpSource);
if (dwFlags & FORMAT_MESSAGE_FROM_SYSTEM) {
/* gather information from system message tables ... */
fprintf(stdnimp," - FORMAT_MESSAGE_FROM_SYSTEM not implemented.\n");
}
if (dwFlags & FORMAT_MESSAGE_FROM_HMODULE) {
/* gather information from module's message tables ... */
fprintf(stdnimp," - FORMAT_MESSAGE_FROM_HMODULE not implemented.\n");
INT32 bufsize;
dwMessageId &= 0xFFFF;
bufsize=LoadMessage32A(0,dwMessageId,dwLanguageId,NULL,100);
if (bufsize) {
from = (char*)xmalloc(bufsize+1);
LoadMessage32A(0,dwMessageId,dwLanguageId,from,bufsize+1);
}
}
target = (char*)xmalloc(100);
t = target;
@ -683,12 +692,11 @@ FormatMessage32A(
if (from) {
f=from;
fprintf(stddeb," from is %s\n",from);
while (*f) {
if (*f=='%') {
int insertnr;
char *fmtstr,*sprintfbuf,*x;
DWORD arg1,arg2,arg3;
DWORD *argliststart;
f++;
if (!*f) {
@ -705,47 +713,35 @@ FormatMessage32A(
case '8':case '9':
f++;
insertnr=insertnr*10+*f-'0';
f++;
break;
default:
f++;
break;
default:break;
}
if (f[1]=='!') {
f+=2;
if (*f=='!') {
f++;
if (NULL!=(x=strchr(f,'!'))) {
*x='\0';
fmtstr=strdup(f);
fmtstr=xmalloc(strlen(f)+2);
sprintf(fmtstr,"%%%s",f);
f=x+1;
}
} else {
} else
fmtstr=strdup("%s");
}
if (dwFlags & FORMAT_MESSAGE_ARGUMENT_ARRAY)
argliststart=args+insertnr-1;
else
/* FIXME: not sure that this is
* correct for unix-c-varargs.
*/
argliststart=((DWORD*)&args)+insertnr-1;
if (dwFlags & FORMAT_MESSAGE_ARGUMENT_ARRAY) {
DWORD *args = (DWORD*)Arguments;
arg1 = args[insertnr-1];
arg2 = args[insertnr+0];
arg3 = args[insertnr+1];
} else {
/*
int i;
va_list vl;
vl=va_start(Arguments,7);
for (i=insertnr;i--;)
va_arg(vl,DWORD);
arg1 = va_arg(vl,DWORD);
arg2 = va_arg(vl,DWORD);
arg3 = va_arg(vl,DWORD);
va_end(vl);
*/
fprintf(stdnimp," - varargs not supported yet.\n");
}
if (fmtstr[strlen(fmtstr)]=='s') {
sprintfbuf=(char*)xmalloc(strlen((LPSTR)arg1)+1);
} else {
if (fmtstr[strlen(fmtstr)]=='s')
sprintfbuf=(char*)xmalloc(strlen((LPSTR)argliststart[0])+1);
else
sprintfbuf=(char*)xmalloc(100);
}
sprintf(sprintfbuf,fmtstr,arg1,arg2,arg3);
vsprintf(sprintfbuf,fmtstr,argliststart);
x=sprintfbuf;
while (*x) {
ADD_TO_T(*x++);
@ -753,6 +749,10 @@ FormatMessage32A(
free(sprintfbuf);
free(fmtstr);
break;
case '0':
nolinefeed=1;
f++;
break;
default:ADD_TO_T(*f++)
break;
@ -763,6 +763,8 @@ FormatMessage32A(
}
*t='\0';
}
if (!nolinefeed && t[-1]!='\n')
ADD_TO_T('\n');
talloced = strlen(target)+1;
if (nSize && talloced<nSize) {
target = (char*)xrealloc(target,nSize);
@ -774,5 +776,46 @@ FormatMessage32A(
} else
strncpy(lpBuffer,target,nSize);
free(target);
return strlen(lpBuffer);
if (from) free(from);
return (dwFlags & FORMAT_MESSAGE_ALLOCATE_BUFFER) ?
strlen(*(LPSTR*)lpBuffer):
strlen(lpBuffer);
}
/***********************************************************************
* FormatMessageA (KERNEL32.138) Emulator Version
*/
DWORD
WIN32_FormatMessage32A(DWORD *args) {
DWORD dwFlags = args[0];
LPCVOID lpSource = (LPCVOID)args[1];
DWORD dwMessageId = args[2];
DWORD dwLanguageId = args[3];
LPSTR lpBuffer = (LPSTR)args[4];
DWORD nSize = args[5];
DWORD *xargs;
/* convert possible varargs to an argument array look-a-like */
if (dwFlags & FORMAT_MESSAGE_ARGUMENT_ARRAY) {
xargs=(DWORD*)args[6];
} else {
/* args[6] is a pointer to a pointer to the start of
* a list of arguments.
*/
if (args[6])
xargs=(DWORD*)(((DWORD*)args[6])[0]);
else
xargs=NULL;
dwFlags|=FORMAT_MESSAGE_ARGUMENT_ARRAY;
}
return FormatMessage32A(
dwFlags,
lpSource,
dwMessageId,
dwLanguageId,
lpBuffer,
nSize,
xargs
);
}

View File

@ -55,22 +55,27 @@ const char people[] = "Wine is available thanks to the work of "
"Jan Willamowius, Carl Williams, Karl Guenter Wuensch, Eric Youngdale, "
"and James Youngman. ";
const char * langNames[] =
const struct _langentry {
char *name;
WORD langid;
} languages[] =
{
"En", /* LANG_En */
"Es", /* LANG_Es */
"De", /* LANG_De */
"No", /* LANG_No */
"Fr", /* LANG_Fr */
"Fi", /* LANG_Fi */
"Da", /* LANG_Da */
"Cz", /* LANG_Cz */
"Eo", /* LANG_Eo */
"It", /* LANG_It */
"Ko", /* LANG_Ko */
NULL
{"En",0x0409}, /* LANG_En */
{"Es",0x040A}, /* LANG_Es */
{"De",0x0407}, /* LANG_De */
{"No",0x0414}, /* LANG_No */
{"Fr",0x0400}, /* LANG_Fr */
{"Fi",0x040B}, /* LANG_Fi */
{"Da",0x0406}, /* LANG_Da */
{"Cz",0x0405}, /* LANG_Cz */
{"Eo", 0}, /* LANG_Eo */ /* FIXME languageid */
{"It",0x0410}, /* LANG_It */
{"Ko",0x0412}, /* LANG_Ko */
{NULL,0}
};
WORD WINE_LanguageId = 0;
#define WINE_CLASS "Wine" /* Class name for resources */
typedef struct tagENVENTRY {
@ -284,16 +289,19 @@ BOOL ParseDebugOptions(char *options)
*/
static void MAIN_ParseLanguageOption( char *arg )
{
const char **p = langNames;
const struct _langentry *p = languages;
Options.language = LANG_En; /* First language */
for (p = langNames; *p; p++)
for (;p->name;p++)
{
if (!lstrcmpi32A( *p, arg )) return;
if (!lstrcmpi32A( p->name, arg )) {
WINE_LanguageId = p->langid;
return;
}
Options.language++;
}
fprintf( stderr, "Invalid language specified '%s'. Supported languages are: ", arg );
for (p = langNames; *p; p++) fprintf( stderr, "%s ", *p );
for (p = languages; p->name; p++) fprintf( stderr, "%s ", p->name );
fprintf( stderr, "\n" );
exit(1);
}
@ -678,9 +686,9 @@ BOOL32 Beep( DWORD dwFreq, DWORD dwDur )
/***********************************************************************
* GetVersion (KERNEL.3)
* GetVersion16 (KERNEL.3)
*/
LONG GetVersion(void)
LONG GetVersion16(void)
{
if (getVersion16) return getVersion16;
return MAKELONG( WINVERSION, WINDOSVER );

View File

@ -19,6 +19,7 @@
#include "windows.h"
#include "win.h"
#include "winerror.h"
#include "file.h"
#include "string32.h"
#include "stddebug.h"
#include "debug.h"

View File

@ -124,6 +124,7 @@ static HINSTANCE SHELL_FindExecutable( LPCSTR lpFile,
HINSTANCE 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:"-"),
@ -132,18 +133,19 @@ static HINSTANCE SHELL_FindExecutable( LPCSTR lpFile,
lpResult[0]='\0'; /* Start off with an empty return string */
/* trap NULL parameters on entry */
if (( lpFile == NULL ) || ( lpDirectory == NULL ) ||
( lpResult == NULL ) || ( lpOperation == NULL ))
if (( lpFile == NULL ) || ( lpResult == NULL ) || ( lpOperation == NULL ))
{
/* FIXME - should throw a warning, perhaps! */
return 2; /* File not found. Close enough, I guess. */
}
if (SearchPath32A(lpDirectory,lpFile,NULL,sizeof(xlpFile),xlpFile,NULL))
lpFile = xlpFile;
/* First thing we need is the file's extension */
extension = strrchr( lpFile, '.' ); /* Assume last "." is the one; */
extension = strrchr( xlpFile, '.' ); /* Assume last "." is the one; */
/* File->Run in progman uses */
/* .\FILE.EXE :( */
if ((extension == NULL) || (extension == &lpFile[strlen(lpFile)]))
if ((extension == NULL) || (extension == &xlpFile[strlen(xlpFile)]))
{
return 31; /* no association */
}
@ -176,7 +178,7 @@ static HINSTANCE SHELL_FindExecutable( LPCSTR lpFile,
{
if (strcmp(tok, &tmpext[1])==0) /* have to skip the leading "." */
{
strcpy(lpResult, lpFile); /* Need to perhaps check that */
strcpy(lpResult, xlpFile); /* Need to perhaps check that */
/* the file has a path attached */
dprintf_exec(stddeb, "SHELL_FindExecutable: found %s\n",
lpResult);
@ -212,7 +214,7 @@ static HINSTANCE SHELL_FindExecutable( LPCSTR lpFile,
if (tok != NULL)
{
tok[0]='\0'; /* truncate string at the percent */
strcat( lpResult, lpFile ); /* what if no dir in lpFile? */
strcat( lpResult, xlpFile ); /* what if no dir in xlpFile? */
tok=strstr( command, "%1" );
if ((tok!=NULL) && (strlen(tok)>2))
{
@ -235,7 +237,7 @@ static HINSTANCE SHELL_FindExecutable( LPCSTR lpFile,
if (tok != NULL)
{
tok[0]='\0';
strcat( lpResult, lpFile ); /* what if no dir in lpFile? */
strcat( lpResult, xlpFile ); /* what if no dir in xlpFile? */
tok=strstr( command, "^" ); /* see above */
if ((tok != NULL) && (strlen(tok)>5))
{
@ -300,8 +302,7 @@ HINSTANCE FindExecutable(LPCSTR lpFile, LPCSTR lpDirectory, LPSTR lpResult)
lpResult[0]='\0'; /* Start off with an empty return string */
/* trap NULL parameters on entry */
if (( lpFile == NULL ) || ( lpDirectory == NULL ) ||
( lpResult == NULL ))
if (( lpFile == NULL ) || ( lpResult == NULL ))
{
/* FIXME - should throw a warning, perhaps! */
return 2; /* File not found. Close enough, I guess. */
@ -346,7 +347,7 @@ LRESULT AboutDlgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
/*************************************************************************
* ShellAbout [SHELL.22]
*/
INT ShellAbout(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON hIcon)
INT ShellAbout(HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff, HICON16 hIcon)
{
HANDLE handle;
BOOL bRet;
@ -435,10 +436,10 @@ HANDLE SHELL_LoadResource(HINSTANCE hInst, HFILE hFile, NE_NAMEINFO* pNInfo, WOR
*
* This abortion is called directly by Progman
*/
HICON InternalExtractIcon(HINSTANCE hInstance, LPCSTR lpszExeFileName, UINT nIconIndex, WORD n )
HICON16 InternalExtractIcon(HINSTANCE hInstance, LPCSTR lpszExeFileName, UINT nIconIndex, WORD n )
{
HANDLE hRet = 0;
HICON* RetPtr = NULL;
HICON16* RetPtr = NULL;
BYTE* pData;
OFSTRUCT ofs;
HFILE hFile = OpenFile( lpszExeFileName, &ofs, OF_READ );
@ -448,8 +449,8 @@ HICON InternalExtractIcon(HINSTANCE hInstance, LPCSTR lpszExeFileName, UINT nIco
if( hFile == HFILE_ERROR || !n ) return 0;
hRet = GlobalAlloc16( GMEM_FIXED, sizeof(HICON)*n);
RetPtr = (HICON*)GlobalLock16(hRet);
hRet = GlobalAlloc16( GMEM_FIXED, sizeof(HICON16)*n);
RetPtr = (HICON16*)GlobalLock16(hRet);
*RetPtr = (n == 0xFFFF)? 0: 1; /* error return values */
@ -495,7 +496,7 @@ HICON InternalExtractIcon(HINSTANCE hInstance, LPCSTR lpszExeFileName, UINT nIco
if( nIconIndex == (UINT)-1 ) RetPtr[0] = iconDirCount;
else if( nIconIndex < iconDirCount )
{
HANDLE hIcon;
HICON16 hIcon;
UINT i, icon;
if( n > iconDirCount - nIconIndex ) n = iconDirCount - nIconIndex;
@ -531,14 +532,14 @@ HICON InternalExtractIcon(HINSTANCE hInstance, LPCSTR lpszExeFileName, UINT nIco
/*************************************************************************
* ExtractIcon [SHELL.34]
*/
HICON ExtractIcon(HINSTANCE hInstance, LPCSTR lpszExeFileName, WORD nIconIndex)
HICON16 ExtractIcon(HINSTANCE hInstance, LPCSTR lpszExeFileName, WORD nIconIndex)
{
HANDLE handle = InternalExtractIcon(hInstance,lpszExeFileName,nIconIndex, 1);
if( handle )
{
HICON* ptr = (HICON*)GlobalLock16(handle);
HICON hIcon = *ptr;
HICON16* ptr = (HICON16*)GlobalLock16(handle);
HICON16 hIcon = *ptr;
GlobalFree16(handle);
return hIcon;

View File

@ -21,7 +21,6 @@ WORD USER_HeapSel = 0;
extern HTASK TASK_GetNextTask(HTASK);
extern void QUEUE_SetDoomedQueue(HQUEUE);
/***********************************************************************
* GetFreeSystemResources (USER.284)
@ -109,7 +108,7 @@ int USER_InitApp(HINSTANCE hInstance)
/**********************************************************************
* USER_AppExit
*/
void USER_AppExit(HTASK hTask, HINSTANCE hInstance, HQUEUE hQueue)
void USER_AppExit( HTASK16 hTask, HINSTANCE16 hInstance, HQUEUE16 hQueue )
{
/* FIXME: flush send messages (which are not implemented yet),
* empty clipboard if needed, maybe destroy menus (Windows

View File

@ -71,7 +71,7 @@ typedef struct {
BOOL fShareable; /* TRUE if first open was shareable */
WORD wNotifyDeviceID; /* MCI device ID with a pending notification */
HANDLE hCallback; /* Callback handle for pending notification */
HMMIO hFile; /* mmio file handle open as Element */
HMMIO16 hFile; /* mmio file handle open as Element */
MCI_WAVE_OPEN_PARMS openParms;
PCMWAVEFORMAT WaveFormat;
WAVEHDR WaveHdr;
@ -1580,7 +1580,7 @@ DWORD widMessage(WORD wDevID, WORD wMsg, DWORD dwUser,
/**************************************************************************
* AUDIO_DriverProc [sample driver]
*/
LONG WAVE_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG WAVE_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2)
{
#ifdef linux

View File

@ -605,7 +605,7 @@ static DWORD ANIM_mciSet(UINT wDevID, DWORD dwFlags, LPMCI_SET_PARMS lpParms)
/**************************************************************************
* ANIM_DriverProc [sample driver]
*/
LONG ANIM_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG ANIM_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2)
{
#ifdef linux

View File

@ -834,7 +834,7 @@ static DWORD CDAUDIO_mciSet(UINT wDevID, DWORD dwFlags, LPMCI_SET_PARMS lpParms)
/**************************************************************************
* CDAUDIO_DriverProc [sample driver]
*/
LONG CDAUDIO_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG CDAUDIO_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2)
{
#ifdef linux

View File

@ -19,6 +19,7 @@
#include "user.h"
#include "driver.h"
#include "mmsystem.h"
#include "stackframe.h"
#include "stddebug.h"
#include "debug.h"
#include "xmalloc.h"
@ -31,16 +32,16 @@ extern MCI_OPEN_DRIVER_PARMS mciDrv[MAXMCIDRIVERS];
*/
extern MCI_OPEN_PARMS mciOpenDrv[MAXMCIDRIVERS];
LONG DrvDefDriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG DrvDefDriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2);
LONG WAVE_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG WAVE_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2);
LONG MIDI_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG MIDI_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2);
LONG CDAUDIO_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG CDAUDIO_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2);
LONG ANIM_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG ANIM_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2);
/* The reason why I just don't lowercase the keywords array in

View File

@ -66,7 +66,7 @@ typedef struct {
BOOL fShareable; /* TRUE if first open was shareable */
WORD wNotifyDeviceID; /* MCI device ID with a pending notification */
HANDLE hCallback; /* Callback handle for pending notification */
HMMIO hFile; /* mmio file handle open as Element */
HMMIO16 hFile; /* mmio file handle open as Element */
DWORD dwBeginData;
DWORD dwTotalLen;
WORD wFormat;
@ -1267,7 +1267,7 @@ DWORD modMessage(WORD wDevID, WORD wMsg, DWORD dwUser,
/**************************************************************************
* MIDI_DriverProc [sample driver]
*/
LONG MIDI_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG MIDI_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2)
{
#ifdef linux

View File

@ -37,16 +37,16 @@ MCI_OPEN_PARMS mciOpenDrv[MAXMCIDRIVERS];
UINT midiGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
UINT waveGetErrorText(UINT uError, LPSTR lpText, UINT uSize);
LONG DrvDefDriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG DrvDefDriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2);
LONG WAVE_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG WAVE_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2);
LONG MIDI_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG MIDI_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2);
LONG CDAUDIO_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG CDAUDIO_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2);
LONG ANIM_DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LONG ANIM_DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2);
/**************************************************************************
@ -65,7 +65,7 @@ int MMSYSTEM_WEP(HANDLE hInstance, WORD wDataSeg,
*/
BOOL sndPlaySound(LPCSTR lpszSoundName, UINT uFlags)
{
HMMIO hmmio;
HMMIO16 hmmio;
MMCKINFO mmckInfo;
MMCKINFO ckMainRIFF;
HANDLE hFormat;
@ -192,7 +192,7 @@ WORD mmsystemGetVersion()
/**************************************************************************
* DriverProc [MMSYSTEM.6]
*/
LRESULT DriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LRESULT DriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2)
{
return DrvDefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2);
@ -751,7 +751,7 @@ DWORD mciSound(UINT wDevID, DWORD dwParam, LPMCI_SOUND_PARMS lpParms)
*/
DWORD mciSendCommand(UINT wDevID, UINT wMsg, DWORD dwParam1, DWORD dwParam2)
{
HDRVR hDrv = 0;
HDRVR16 hDrv = 0;
dprintf_mci(stddeb, "mciSendCommand(%04X, %04X, %08lX, %08lX)\n",
wDevID, wMsg, dwParam1, dwParam2);
switch(wMsg) {
@ -913,10 +913,10 @@ msg# 343 : There are no MIDI devices installed on the system. Use the Drivers op
/**************************************************************************
* midiOutOpen [MMSYSTEM.204]
*/
UINT midiOutOpen(HMIDIOUT * lphMidiOut, UINT uDeviceID,
UINT midiOutOpen(HMIDIOUT16 * lphMidiOut, UINT uDeviceID,
DWORD dwCallback, DWORD dwInstance, DWORD dwFlags)
{
HMIDI hMidiOut;
HMIDI16 hMidiOut;
LPMIDIOPENDESC lpDesc;
LPMIDIOPENDESC lp16Desc;
DWORD dwRet = 0;
@ -951,7 +951,7 @@ UINT midiOutOpen(HMIDIOUT * lphMidiOut, UINT uDeviceID,
/**************************************************************************
* midiOutClose [MMSYSTEM.205]
*/
UINT midiOutClose(HMIDIOUT hMidiOut)
UINT midiOutClose(HMIDIOUT16 hMidiOut)
{
LPMIDIOPENDESC lpDesc;
dprintf_mmsys(stddeb, "midiOutClose(%04X)\n", hMidiOut);
@ -963,7 +963,7 @@ UINT midiOutClose(HMIDIOUT hMidiOut)
/**************************************************************************
* midiOutPrepareHeader [MMSYSTEM.206]
*/
UINT midiOutPrepareHeader(HMIDIOUT hMidiOut,
UINT midiOutPrepareHeader(HMIDIOUT16 hMidiOut,
MIDIHDR * lpMidiOutHdr, UINT uSize)
{
LPMIDIOPENDESC lpDesc;
@ -978,7 +978,7 @@ UINT midiOutPrepareHeader(HMIDIOUT hMidiOut,
/**************************************************************************
* midiOutUnprepareHeader [MMSYSTEM.207]
*/
UINT midiOutUnprepareHeader(HMIDIOUT hMidiOut,
UINT midiOutUnprepareHeader(HMIDIOUT16 hMidiOut,
MIDIHDR * lpMidiOutHdr, UINT uSize)
{
LPMIDIOPENDESC lpDesc;
@ -993,7 +993,7 @@ UINT midiOutUnprepareHeader(HMIDIOUT hMidiOut,
/**************************************************************************
* midiOutShortMsg [MMSYSTEM.208]
*/
UINT midiOutShortMsg(HMIDIOUT hMidiOut, DWORD dwMsg)
UINT midiOutShortMsg(HMIDIOUT16 hMidiOut, DWORD dwMsg)
{
LPMIDIOPENDESC lpDesc;
dprintf_mmsys(stddeb, "midiOutShortMsg(%04X, %08lX)\n", hMidiOut, dwMsg);
@ -1005,7 +1005,7 @@ UINT midiOutShortMsg(HMIDIOUT hMidiOut, DWORD dwMsg)
/**************************************************************************
* midiOutLongMsg [MMSYSTEM.209]
*/
UINT midiOutLongMsg(HMIDIOUT hMidiOut,
UINT midiOutLongMsg(HMIDIOUT16 hMidiOut,
MIDIHDR * lpMidiOutHdr, UINT uSize)
{
LPMIDIOPENDESC lpDesc;
@ -1020,7 +1020,7 @@ UINT midiOutLongMsg(HMIDIOUT hMidiOut,
/**************************************************************************
* midiOutReset [MMSYSTEM.210]
*/
UINT midiOutReset(HMIDIOUT hMidiOut)
UINT midiOutReset(HMIDIOUT16 hMidiOut)
{
LPMIDIOPENDESC lpDesc;
dprintf_mmsys(stddeb, "midiOutReset(%04X)\n", hMidiOut);
@ -1052,7 +1052,7 @@ UINT midiOutSetVolume(UINT uDeviceID, DWORD dwVolume)
/**************************************************************************
* midiOutCachePatches [MMSYSTEM.213]
*/
UINT midiOutCachePatches(HMIDIOUT hMidiOut,
UINT midiOutCachePatches(HMIDIOUT16 hMidiOut,
UINT uBank, WORD * lpwPatchArray, UINT uFlags)
{
/* not really necessary to support this */
@ -1063,7 +1063,7 @@ UINT midiOutCachePatches(HMIDIOUT hMidiOut,
/**************************************************************************
* midiOutCacheDrumPatches [MMSYSTEM.214]
*/
UINT midiOutCacheDrumPatches(HMIDIOUT hMidiOut,
UINT midiOutCacheDrumPatches(HMIDIOUT16 hMidiOut,
UINT uPatch, WORD * lpwKeyArray, UINT uFlags)
{
fprintf(stdnimp, "midiOutCacheDrumPatchesi: not supported yet\n");
@ -1073,7 +1073,7 @@ UINT midiOutCacheDrumPatches(HMIDIOUT hMidiOut,
/**************************************************************************
* midiOutGetID [MMSYSTEM.215]
*/
UINT midiOutGetID(HMIDIOUT hMidiOut, UINT * lpuDeviceID)
UINT midiOutGetID(HMIDIOUT16 hMidiOut, UINT * lpuDeviceID)
{
dprintf_mmsys(stddeb, "midiOutGetID\n");
return 0;
@ -1082,7 +1082,7 @@ UINT midiOutGetID(HMIDIOUT hMidiOut, UINT * lpuDeviceID)
/**************************************************************************
* midiOutMessage [MMSYSTEM.216]
*/
DWORD midiOutMessage(HMIDIOUT hMidiOut, UINT uMessage,
DWORD midiOutMessage(HMIDIOUT16 hMidiOut, UINT uMessage,
DWORD dwParam1, DWORD dwParam2)
{
LPMIDIOPENDESC lpDesc;
@ -1128,10 +1128,10 @@ UINT midiInGetErrorText(UINT uError, LPSTR lpText, UINT uSize)
/**************************************************************************
* midiInOpen [MMSYSTEM.304]
*/
UINT midiInOpen(HMIDIIN * lphMidiIn, UINT uDeviceID,
UINT midiInOpen(HMIDIIN16 * lphMidiIn, UINT uDeviceID,
DWORD dwCallback, DWORD dwInstance, DWORD dwFlags)
{
HMIDI hMidiIn;
HMIDI16 hMidiIn;
LPMIDIOPENDESC lpDesc;
LPMIDIOPENDESC lp16Desc;
DWORD dwRet = 0;
@ -1166,7 +1166,7 @@ UINT midiInOpen(HMIDIIN * lphMidiIn, UINT uDeviceID,
/**************************************************************************
* midiInClose [MMSYSTEM.305]
*/
UINT midiInClose(HMIDIIN hMidiIn)
UINT midiInClose(HMIDIIN16 hMidiIn)
{
LPMIDIOPENDESC lpDesc;
dprintf_mmsys(stddeb, "midiInClose(%04X)\n", hMidiIn);
@ -1178,7 +1178,7 @@ UINT midiInClose(HMIDIIN hMidiIn)
/**************************************************************************
* midiInPrepareHeader [MMSYSTEM.306]
*/
UINT midiInPrepareHeader(HMIDIIN hMidiIn,
UINT midiInPrepareHeader(HMIDIIN16 hMidiIn,
MIDIHDR * lpMidiInHdr, UINT uSize)
{
LPMIDIOPENDESC lpDesc;
@ -1193,7 +1193,7 @@ UINT midiInPrepareHeader(HMIDIIN hMidiIn,
/**************************************************************************
* midiInUnprepareHeader [MMSYSTEM.307]
*/
UINT midiInUnprepareHeader(HMIDIIN hMidiIn,
UINT midiInUnprepareHeader(HMIDIIN16 hMidiIn,
MIDIHDR * lpMidiInHdr, UINT uSize)
{
LPMIDIOPENDESC lpDesc;
@ -1208,7 +1208,7 @@ UINT midiInUnprepareHeader(HMIDIIN hMidiIn,
/**************************************************************************
* midiInAddBuffer [MMSYSTEM.308]
*/
UINT midiInAddBuffer(HMIDIIN hMidiIn,
UINT midiInAddBuffer(HMIDIIN16 hMidiIn,
MIDIHDR * lpMidiInHdr, UINT uSize)
{
dprintf_mmsys(stddeb, "midiInAddBuffer\n");
@ -1218,7 +1218,7 @@ UINT midiInAddBuffer(HMIDIIN hMidiIn,
/**************************************************************************
* midiInStart [MMSYSTEM.309]
*/
UINT midiInStart(HMIDIIN hMidiIn)
UINT midiInStart(HMIDIIN16 hMidiIn)
{
dprintf_mmsys(stddeb, "midiInStart\n");
return 0;
@ -1227,7 +1227,7 @@ UINT midiInStart(HMIDIIN hMidiIn)
/**************************************************************************
* midiInStop [MMSYSTEM.310]
*/
UINT midiInStop(HMIDIIN hMidiIn)
UINT midiInStop(HMIDIIN16 hMidiIn)
{
dprintf_mmsys(stddeb, "midiInStop\n");
return 0;
@ -1236,7 +1236,7 @@ UINT midiInStop(HMIDIIN hMidiIn)
/**************************************************************************
* midiInReset [MMSYSTEM.311]
*/
UINT midiInReset(HMIDIIN hMidiIn)
UINT midiInReset(HMIDIIN16 hMidiIn)
{
dprintf_mmsys(stddeb, "midiInReset\n");
return 0;
@ -1245,7 +1245,7 @@ UINT midiInReset(HMIDIIN hMidiIn)
/**************************************************************************
* midiInGetID [MMSYSTEM.312]
*/
UINT midiInGetID(HMIDIIN hMidiIn, UINT * lpuDeviceID)
UINT midiInGetID(HMIDIIN16 hMidiIn, UINT * lpuDeviceID)
{
dprintf_mmsys(stddeb, "midiInGetID\n");
return 0;
@ -1254,7 +1254,7 @@ UINT midiInGetID(HMIDIIN hMidiIn, UINT * lpuDeviceID)
/**************************************************************************
* midiInMessage [MMSYSTEM.313]
*/
DWORD midiInMessage(HMIDIIN hMidiIn, UINT uMessage,
DWORD midiInMessage(HMIDIIN16 hMidiIn, UINT uMessage,
DWORD dwParam1, DWORD dwParam2)
{
LPMIDIOPENDESC lpDesc;
@ -1366,10 +1366,10 @@ UINT waveGetErrorText(UINT uError, LPSTR lpText, UINT uSize)
/**************************************************************************
* waveOutOpen [MMSYSTEM.404]
*/
UINT waveOutOpen(HWAVEOUT * lphWaveOut, UINT uDeviceID,
UINT waveOutOpen(HWAVEOUT16 * lphWaveOut, UINT uDeviceID,
const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags)
{
HWAVE hWaveOut;
HWAVEOUT16 hWaveOut;
LPWAVEOPENDESC lpDesc;
LPWAVEOPENDESC lp16Desc;
DWORD dwRet = 0;
@ -1412,7 +1412,7 @@ UINT waveOutOpen(HWAVEOUT * lphWaveOut, UINT uDeviceID,
/**************************************************************************
* waveOutClose [MMSYSTEM.405]
*/
UINT waveOutClose(HWAVEOUT hWaveOut)
UINT waveOutClose(HWAVEOUT16 hWaveOut)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveOutClose(%04X)\n", hWaveOut);
@ -1424,7 +1424,7 @@ UINT waveOutClose(HWAVEOUT hWaveOut)
/**************************************************************************
* waveOutPrepareHeader [MMSYSTEM.406]
*/
UINT waveOutPrepareHeader(HWAVEOUT hWaveOut,
UINT waveOutPrepareHeader(HWAVEOUT16 hWaveOut,
WAVEHDR * lpWaveOutHdr, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
@ -1439,7 +1439,7 @@ UINT waveOutPrepareHeader(HWAVEOUT hWaveOut,
/**************************************************************************
* waveOutUnprepareHeader [MMSYSTEM.407]
*/
UINT waveOutUnprepareHeader(HWAVEOUT hWaveOut,
UINT waveOutUnprepareHeader(HWAVEOUT16 hWaveOut,
WAVEHDR * lpWaveOutHdr, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
@ -1454,7 +1454,7 @@ UINT waveOutUnprepareHeader(HWAVEOUT hWaveOut,
/**************************************************************************
* waveOutWrite [MMSYSTEM.408]
*/
UINT waveOutWrite(HWAVEOUT hWaveOut, WAVEHDR * lpWaveOutHdr, UINT uSize)
UINT waveOutWrite(HWAVEOUT16 hWaveOut, WAVEHDR * lpWaveOutHdr, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveOutWrite(%04X, %p, %u);\n", hWaveOut, lpWaveOutHdr, uSize);
@ -1467,7 +1467,7 @@ UINT waveOutWrite(HWAVEOUT hWaveOut, WAVEHDR * lpWaveOutHdr, UINT uSize)
/**************************************************************************
* waveOutPause [MMSYSTEM.409]
*/
UINT waveOutPause(HWAVEOUT hWaveOut)
UINT waveOutPause(HWAVEOUT16 hWaveOut)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveOutPause(%04X)\n", hWaveOut);
@ -1479,7 +1479,7 @@ UINT waveOutPause(HWAVEOUT hWaveOut)
/**************************************************************************
* waveOutRestart [MMSYSTEM.410]
*/
UINT waveOutRestart(HWAVEOUT hWaveOut)
UINT waveOutRestart(HWAVEOUT16 hWaveOut)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveOutRestart(%04X)\n", hWaveOut);
@ -1491,7 +1491,7 @@ UINT waveOutRestart(HWAVEOUT hWaveOut)
/**************************************************************************
* waveOutReset [MMSYSTEM.411]
*/
UINT waveOutReset(HWAVEOUT hWaveOut)
UINT waveOutReset(HWAVEOUT16 hWaveOut)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveOutReset(%04X)\n", hWaveOut);
@ -1503,7 +1503,7 @@ UINT waveOutReset(HWAVEOUT hWaveOut)
/**************************************************************************
* waveOutGetPosition [MMSYSTEM.412]
*/
UINT waveOutGetPosition(HWAVEOUT hWaveOut, MMTIME * lpTime, UINT uSize)
UINT waveOutGetPosition(HWAVEOUT16 hWaveOut, MMTIME * lpTime, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveOutGetPosition(%04X, %p, %u);\n", hWaveOut, lpTime, uSize);
@ -1516,7 +1516,7 @@ UINT waveOutGetPosition(HWAVEOUT hWaveOut, MMTIME * lpTime, UINT uSize)
/**************************************************************************
* waveOutGetPitch [MMSYSTEM.413]
*/
UINT waveOutGetPitch(HWAVEOUT hWaveOut, DWORD * lpdwPitch)
UINT waveOutGetPitch(HWAVEOUT16 hWaveOut, DWORD * lpdwPitch)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveOutGetPitch(%04X, %p);\n", hWaveOut, lpdwPitch);
@ -1529,7 +1529,7 @@ UINT waveOutGetPitch(HWAVEOUT hWaveOut, DWORD * lpdwPitch)
/**************************************************************************
* waveOutSetPitch [MMSYSTEM.414]
*/
UINT waveOutSetPitch(HWAVEOUT hWaveOut, DWORD dwPitch)
UINT waveOutSetPitch(HWAVEOUT16 hWaveOut, DWORD dwPitch)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveOutSetPitch(%04X, %08lX);\n", hWaveOut, dwPitch);
@ -1559,7 +1559,7 @@ UINT waveOutSetVolume(UINT uDeviceID, DWORD dwVolume)
/**************************************************************************
* waveOutGetPlaybackRate [MMSYSTEM.417]
*/
UINT waveOutGetPlaybackRate(HWAVEOUT hWaveOut, DWORD * lpdwRate)
UINT waveOutGetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD * lpdwRate)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveOutGetPlaybackRate(%04X, %p);\n", hWaveOut, lpdwRate);
@ -1572,7 +1572,7 @@ UINT waveOutGetPlaybackRate(HWAVEOUT hWaveOut, DWORD * lpdwRate)
/**************************************************************************
* waveOutSetPlaybackRate [MMSYSTEM.418]
*/
UINT waveOutSetPlaybackRate(HWAVEOUT hWaveOut, DWORD dwRate)
UINT waveOutSetPlaybackRate(HWAVEOUT16 hWaveOut, DWORD dwRate)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveOutSetPlaybackRate(%04X, %08lX);\n", hWaveOut, dwRate);
@ -1585,7 +1585,7 @@ UINT waveOutSetPlaybackRate(HWAVEOUT hWaveOut, DWORD dwRate)
/**************************************************************************
* waveOutBreakLoop [MMSYSTEM.419]
*/
UINT waveOutBreakLoop(HWAVEOUT hWaveOut)
UINT waveOutBreakLoop(HWAVEOUT16 hWaveOut)
{
dprintf_mmsys(stddeb, "waveOutBreakLoop(%04X)\n", hWaveOut);
return MMSYSERR_INVALHANDLE;
@ -1594,7 +1594,7 @@ UINT waveOutBreakLoop(HWAVEOUT hWaveOut)
/**************************************************************************
* waveOutGetID [MMSYSTEM.420]
*/
UINT waveOutGetID(HWAVEOUT hWaveOut, UINT * lpuDeviceID)
UINT waveOutGetID(HWAVEOUT16 hWaveOut, UINT * lpuDeviceID)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveOutGetID(%04X, %p);\n", hWaveOut, lpuDeviceID);
@ -1610,7 +1610,7 @@ UINT waveOutGetID(HWAVEOUT hWaveOut, UINT * lpuDeviceID)
/**************************************************************************
* waveOutMessage [MMSYSTEM.421]
*/
DWORD waveOutMessage(HWAVEOUT hWaveOut, UINT uMessage,
DWORD waveOutMessage(HWAVEOUT16 hWaveOut, UINT uMessage,
DWORD dwParam1, DWORD dwParam2)
{
LPWAVEOPENDESC lpDesc;
@ -1657,10 +1657,10 @@ UINT waveInGetErrorText(UINT uError, LPSTR lpText, UINT uSize)
/**************************************************************************
* waveInOpen [MMSYSTEM.504]
*/
UINT waveInOpen(HWAVEIN * lphWaveIn, UINT uDeviceID,
UINT waveInOpen(HWAVEIN16 * lphWaveIn, UINT uDeviceID,
const LPWAVEFORMAT lpFormat, DWORD dwCallback, DWORD dwInstance, DWORD dwFlags)
{
HWAVE hWaveIn;
HWAVEIN16 hWaveIn;
LPWAVEOPENDESC lpDesc;
LPWAVEOPENDESC lp16Desc;
DWORD dwRet = 0;
@ -1704,7 +1704,7 @@ UINT waveInOpen(HWAVEIN * lphWaveIn, UINT uDeviceID,
/**************************************************************************
* waveInClose [MMSYSTEM.505]
*/
UINT waveInClose(HWAVEIN hWaveIn)
UINT waveInClose(HWAVEIN16 hWaveIn)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveInClose(%04X)\n", hWaveIn);
@ -1717,7 +1717,7 @@ UINT waveInClose(HWAVEIN hWaveIn)
/**************************************************************************
* waveInPrepareHeader [MMSYSTEM.506]
*/
UINT waveInPrepareHeader(HWAVEIN hWaveIn,
UINT waveInPrepareHeader(HWAVEIN16 hWaveIn,
WAVEHDR * lpWaveInHdr, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
@ -1740,7 +1740,7 @@ UINT waveInPrepareHeader(HWAVEIN hWaveIn,
/**************************************************************************
* waveInUnprepareHeader [MMSYSTEM.507]
*/
UINT waveInUnprepareHeader(HWAVEIN hWaveIn,
UINT waveInUnprepareHeader(HWAVEIN16 hWaveIn,
WAVEHDR * lpWaveInHdr, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
@ -1762,7 +1762,7 @@ UINT waveInUnprepareHeader(HWAVEIN hWaveIn,
/**************************************************************************
* waveInAddBuffer [MMSYSTEM.508]
*/
UINT waveInAddBuffer(HWAVEIN hWaveIn,
UINT waveInAddBuffer(HWAVEIN16 hWaveIn,
WAVEHDR * lpWaveInHdr, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
@ -1784,7 +1784,7 @@ UINT waveInAddBuffer(HWAVEIN hWaveIn,
/**************************************************************************
* waveInStart [MMSYSTEM.509]
*/
UINT waveInStart(HWAVEIN hWaveIn)
UINT waveInStart(HWAVEIN16 hWaveIn)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveInStart(%04X)\n", hWaveIn);
@ -1797,7 +1797,7 @@ UINT waveInStart(HWAVEIN hWaveIn)
/**************************************************************************
* waveInStop [MMSYSTEM.510]
*/
UINT waveInStop(HWAVEIN hWaveIn)
UINT waveInStop(HWAVEIN16 hWaveIn)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveInStop(%04X)\n", hWaveIn);
@ -1810,7 +1810,7 @@ UINT waveInStop(HWAVEIN hWaveIn)
/**************************************************************************
* waveInReset [MMSYSTEM.511]
*/
UINT waveInReset(HWAVEIN hWaveIn)
UINT waveInReset(HWAVEIN16 hWaveIn)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveInReset(%04X)\n", hWaveIn);
@ -1823,7 +1823,7 @@ UINT waveInReset(HWAVEIN hWaveIn)
/**************************************************************************
* waveInGetPosition [MMSYSTEM.512]
*/
UINT waveInGetPosition(HWAVEIN hWaveIn, MMTIME * lpTime, UINT uSize)
UINT waveInGetPosition(HWAVEIN16 hWaveIn, MMTIME * lpTime, UINT uSize)
{
LPWAVEOPENDESC lpDesc;
dprintf_mmsys(stddeb, "waveInGetPosition(%04X, %p, %u);\n", hWaveIn, lpTime, uSize);
@ -1837,7 +1837,7 @@ UINT waveInGetPosition(HWAVEIN hWaveIn, MMTIME * lpTime, UINT uSize)
/**************************************************************************
* waveInGetID [MMSYSTEM.513]
*/
UINT waveInGetID(HWAVEIN hWaveIn, UINT * lpuDeviceID)
UINT waveInGetID(HWAVEIN16 hWaveIn, UINT * lpuDeviceID)
{
dprintf_mmsys(stddeb, "waveInGetID\n");
if (lpuDeviceID == NULL) return MMSYSERR_INVALPARAM;
@ -1848,7 +1848,7 @@ UINT waveInGetID(HWAVEIN hWaveIn, UINT * lpuDeviceID)
/**************************************************************************
* waveInMessage [MMSYSTEM.514]
*/
DWORD waveInMessage(HWAVEIN hWaveIn, UINT uMessage,
DWORD waveInMessage(HWAVEIN16 hWaveIn, UINT uMessage,
DWORD dwParam1, DWORD dwParam2)
{
LPWAVEOPENDESC lpDesc;
@ -1863,10 +1863,10 @@ DWORD waveInMessage(HWAVEIN hWaveIn, UINT uMessage,
/**************************************************************************
* mmioOpen [MMSYSTEM.1210]
*/
HMMIO mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo, DWORD dwOpenFlags)
HMMIO16 mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo, DWORD dwOpenFlags)
{
int hFile;
HANDLE hmmio;
HMMIO16 hmmio;
OFSTRUCT ofs;
LPMMIOINFO lpmminfo;
dprintf_mmsys(stddeb, "mmioOpen('%s', %p, %08lX);\n", szFileName, lpmmioinfo, dwOpenFlags);
@ -1887,7 +1887,7 @@ HMMIO mmioOpen(LPSTR szFileName, MMIOINFO * lpmmioinfo, DWORD dwOpenFlags)
/**************************************************************************
* mmioClose [MMSYSTEM.1211]
*/
UINT mmioClose(HMMIO hmmio, UINT uFlags)
UINT mmioClose(HMMIO16 hmmio, UINT uFlags)
{
LPMMIOINFO lpmminfo;
dprintf_mmsys(stddeb, "mmioClose(%04X, %04X);\n", hmmio, uFlags);
@ -1904,7 +1904,7 @@ UINT mmioClose(HMMIO hmmio, UINT uFlags)
/**************************************************************************
* mmioRead [MMSYSTEM.1212]
*/
LONG mmioRead(HMMIO hmmio, HPSTR pch, LONG cch)
LONG mmioRead(HMMIO16 hmmio, HPSTR pch, LONG cch)
{
LONG count;
LPMMIOINFO lpmminfo;
@ -1922,7 +1922,7 @@ LONG mmioRead(HMMIO hmmio, HPSTR pch, LONG cch)
/**************************************************************************
* mmioWrite [MMSYSTEM.1213]
*/
LONG mmioWrite(HMMIO hmmio, HPCSTR pch, LONG cch)
LONG mmioWrite(HMMIO16 hmmio, HPCSTR pch, LONG cch)
{
LONG count;
LPMMIOINFO lpmminfo;
@ -1937,7 +1937,7 @@ LONG mmioWrite(HMMIO hmmio, HPCSTR pch, LONG cch)
/**************************************************************************
* mmioSeek [MMSYSTEM.1214]
*/
LONG mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin)
LONG mmioSeek(HMMIO16 hmmio, LONG lOffset, int iOrigin)
{
int count;
LPMMIOINFO lpmminfo;
@ -1955,7 +1955,7 @@ LONG mmioSeek(HMMIO hmmio, LONG lOffset, int iOrigin)
/**************************************************************************
* mmioGetInfo [MMSYSTEM.1215]
*/
UINT mmioGetInfo(HMMIO hmmio, MMIOINFO * lpmmioinfo, UINT uFlags)
UINT mmioGetInfo(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT uFlags)
{
LPMMIOINFO lpmminfo;
dprintf_mmsys(stddeb, "mmioGetInfo\n");
@ -1969,7 +1969,7 @@ UINT mmioGetInfo(HMMIO hmmio, MMIOINFO * lpmmioinfo, UINT uFlags)
/**************************************************************************
* mmioSetInfo [MMSYSTEM.1216]
*/
UINT mmioSetInfo(HMMIO hmmio, const MMIOINFO * lpmmioinfo, UINT uFlags)
UINT mmioSetInfo(HMMIO16 hmmio, const MMIOINFO * lpmmioinfo, UINT uFlags)
{
LPMMIOINFO lpmminfo;
dprintf_mmsys(stddeb, "mmioSetInfo\n");
@ -1982,7 +1982,7 @@ UINT mmioSetInfo(HMMIO hmmio, const MMIOINFO * lpmmioinfo, UINT uFlags)
/**************************************************************************
* mmioSetBuffer [MMSYSTEM.1217]
*/
UINT mmioSetBuffer(HMMIO hmmio, LPSTR pchBuffer,
UINT mmioSetBuffer(HMMIO16 hmmio, LPSTR pchBuffer,
LONG cchBuffer, UINT uFlags)
{
dprintf_mmsys(stddeb, "mmioSetBuffer // empty stub \n");
@ -1992,7 +1992,7 @@ UINT mmioSetBuffer(HMMIO hmmio, LPSTR pchBuffer,
/**************************************************************************
* mmioFlush [MMSYSTEM.1218]
*/
UINT mmioFlush(HMMIO hmmio, UINT uFlags)
UINT mmioFlush(HMMIO16 hmmio, UINT uFlags)
{
LPMMIOINFO lpmminfo;
dprintf_mmsys(stddeb, "mmioFlush(%04X, %04X)\n", hmmio, uFlags);
@ -2005,7 +2005,7 @@ UINT mmioFlush(HMMIO hmmio, UINT uFlags)
/**************************************************************************
* mmioAdvance [MMSYSTEM.1219]
*/
UINT mmioAdvance(HMMIO hmmio, MMIOINFO * lpmmioinfo, UINT uFlags)
UINT mmioAdvance(HMMIO16 hmmio, MMIOINFO * lpmmioinfo, UINT uFlags)
{
int count = 0;
LPMMIOINFO lpmminfo;
@ -2048,7 +2048,7 @@ LPMMIOPROC mmioInstallIOProc(FOURCC fccIOProc,
/**************************************************************************
* mmioSendMessage [MMSYSTEM.1222]
*/
LRESULT mmioSendMessage(HMMIO hmmio, UINT uMessage,
LRESULT mmioSendMessage(HMMIO16 hmmio, UINT uMessage,
LPARAM lParam1, LPARAM lParam2)
{
dprintf_mmsys(stddeb, "mmioSendMessage // empty stub \n");
@ -2058,7 +2058,7 @@ LRESULT mmioSendMessage(HMMIO hmmio, UINT uMessage,
/**************************************************************************
* mmioDescend [MMSYSTEM.1223]
*/
UINT mmioDescend(HMMIO hmmio, MMCKINFO * lpck,
UINT mmioDescend(HMMIO16 hmmio, MMCKINFO * lpck,
const MMCKINFO * lpckParent, UINT uFlags)
{
DWORD dwfcc, dwOldPos;
@ -2119,7 +2119,7 @@ UINT mmioDescend(HMMIO hmmio, MMCKINFO * lpck,
/**************************************************************************
* mmioAscend [MMSYSTEM.1224]
*/
UINT mmioAscend(HMMIO hmmio, MMCKINFO * lpck, UINT uFlags)
UINT mmioAscend(HMMIO16 hmmio, MMCKINFO * lpck, UINT uFlags)
{
dprintf_mmsys(stddeb, "mmioAscend // empty stub !\n");
return 0;
@ -2128,7 +2128,7 @@ UINT mmioAscend(HMMIO hmmio, MMCKINFO * lpck, UINT uFlags)
/**************************************************************************
* mmioCreateChunk [MMSYSTEM.1225]
*/
UINT mmioCreateChunk(HMMIO hmmio, MMCKINFO * lpck, UINT uFlags)
UINT mmioCreateChunk(HMMIO16 hmmio, MMCKINFO * lpck, UINT uFlags)
{
dprintf_mmsys(stddeb, "mmioCreateChunk // empty stub \n");
return 0;
@ -2149,7 +2149,7 @@ UINT mmioRename(LPCSTR szFileName, LPCSTR szNewFileName,
/**************************************************************************
* DrvOpen [MMSYSTEM.1100]
*/
HDRVR DrvOpen(LPSTR lpDriverName, LPSTR lpSectionName, LPARAM lParam)
HDRVR16 DrvOpen(LPSTR lpDriverName, LPSTR lpSectionName, LPARAM lParam)
{
dprintf_mmsys(stddeb, "DrvOpen('%s', '%s', %08lX);\n",
lpDriverName, lpSectionName, lParam);
@ -2160,7 +2160,7 @@ HDRVR DrvOpen(LPSTR lpDriverName, LPSTR lpSectionName, LPARAM lParam)
/**************************************************************************
* DrvClose [MMSYSTEM.1101]
*/
LRESULT DrvClose(HDRVR hDrvr, LPARAM lParam1, LPARAM lParam2)
LRESULT DrvClose(HDRVR16 hDrvr, LPARAM lParam1, LPARAM lParam2)
{
dprintf_mmsys(stddeb, "DrvClose(%04X, %08lX, %08lX);\n", hDrvr, lParam1, lParam2);
return CloseDriver(hDrvr, lParam1, lParam2);
@ -2170,7 +2170,7 @@ LRESULT DrvClose(HDRVR hDrvr, LPARAM lParam1, LPARAM lParam2)
/**************************************************************************
* DrvSendMessage [MMSYSTEM.1102]
*/
LRESULT DrvSendMessage(HDRVR hDriver, WORD msg, LPARAM lParam1, LPARAM lParam2)
LRESULT DrvSendMessage(HDRVR16 hDriver, WORD msg, LPARAM lParam1, LPARAM lParam2)
{
DWORD dwDevID = 0;
dprintf_mmsys(stddeb, "DrvSendMessage(%04X, %04X, %08lX, %08lX);\n",
@ -2183,7 +2183,7 @@ LRESULT DrvSendMessage(HDRVR hDriver, WORD msg, LPARAM lParam1, LPARAM lParam2)
/**************************************************************************
* DrvGetModuleHandle [MMSYSTEM.1103]
*/
HANDLE DrvGetModuleHandle(HDRVR hDrvr)
HANDLE DrvGetModuleHandle(HDRVR16 hDrvr)
{
dprintf_mmsys(stddeb, "DrvGetModuleHandle(%04X);\n", hDrvr);
return 0;
@ -2193,7 +2193,7 @@ HANDLE DrvGetModuleHandle(HDRVR hDrvr)
/**************************************************************************
* DrvDefDriverProc [MMSYSTEM.1104]
*/
LRESULT DrvDefDriverProc(DWORD dwDevID, HDRVR hDriv, WORD wMsg,
LRESULT DrvDefDriverProc(DWORD dwDevID, HDRVR16 hDriv, WORD wMsg,
DWORD dwParam1, DWORD dwParam2)
{
return DefDriverProc(dwDevID, hDriv, wMsg, dwParam1, dwParam2);

View File

@ -660,8 +660,9 @@ static void BITBLT_StretchImage( XImage *srcImage, XImage *dstImage,
memset( rowDst, (mode == STRETCH_ANDSCANS) ? 0xff : 0x00,
widthDst*sizeof(int) );
hstretch = ((widthSrc < widthDst) || (mode == STRETCH_DELETESCANS));
vstretch = ((heightSrc < heightDst) || (mode == STRETCH_DELETESCANS));
hstretch = (widthSrc < widthDst);
vstretch = (heightSrc < heightDst);
xinc = hstretch ? ((int)widthSrc << 16) / widthDst :
((int)widthDst << 16) / widthSrc;

View File

@ -190,7 +190,7 @@ HBRUSH CreatePatternBrush( HBITMAP hbitmap )
/***********************************************************************
* CreateDIBPatternBrush (GDI.445)
*/
HBRUSH CreateDIBPatternBrush( HGLOBAL hbitmap, UINT coloruse )
HBRUSH CreateDIBPatternBrush( HGLOBAL16 hbitmap, UINT coloruse )
{
LOGBRUSH16 logbrush = { BS_DIBPATTERN, coloruse, 0 };
BITMAPINFO *info, *newInfo;

View File

@ -736,9 +736,9 @@ COLORREF COLOR_ToLogical(int pixel)
if ( cSpace.flags & COLOR_FIXED && !COLOR_Graymax )
{
color.red = pixel >> COLOR_Redshift;
color.green = pixel >> COLOR_Greenshift;
color.blue = pixel >> COLOR_Blueshift;
color.red = (pixel >> COLOR_Redshift) & COLOR_Redmax;
color.green = (pixel >> COLOR_Greenshift) & COLOR_Greenmax;
color.blue = (pixel >> COLOR_Blueshift) & COLOR_Bluemax;
}
else if ((screenDepth <= 8) && (pixel < 256) &&
!(cSpace.flags & (COLOR_VIRTUAL | COLOR_FIXED)) )

View File

@ -38,7 +38,7 @@
extern UINT16 COLOR_GetSystemPaletteSize();
Cursor CURSORICON_XCursor = None; /* Current X cursor */
static HCURSOR hActiveCursor = 0; /* Active cursor */
static HCURSOR16 hActiveCursor = 0; /* Active cursor */
static int CURSOR_ShowCount = 0; /* Cursor display count */
static RECT32 CURSOR_ClipRect; /* Cursor clipping rect */
@ -371,7 +371,7 @@ static HANDLE CURSORICON_Load( HANDLE hInstance, SEGPTR name, int width,
int height, int colors, BOOL fCursor )
{
HANDLE handle,hRet;
HRSRC hRsrc;
HRSRC16 hRsrc;
CURSORICONDIRENTRY dirEntry;
if (!hInstance) /* OEM cursor/icon */
@ -433,7 +433,7 @@ static HANDLE CURSORICON_Copy( HANDLE hInstance, HANDLE handle )
* FIXME: if icon is passed returns a copy of OCR_DRAGOBJECT cursor
* but should actually convert icon to cursor.
*/
HCURSOR CURSORICON_IconToCursor(HICON hIcon)
HCURSOR16 CURSORICON_IconToCursor(HICON16 hIcon)
{
CURSORICONINFO *ptr = NULL;
@ -499,9 +499,9 @@ HICON16 LoadIcon16(HINSTANCE16 hInstance,SEGPTR name)
/***********************************************************************
* CreateCursor (USER.406)
*/
HCURSOR CreateCursor( HINSTANCE hInstance, INT xHotSpot, INT yHotSpot,
INT nWidth, INT nHeight,
const BYTE *lpANDbits, const BYTE *lpXORbits )
HCURSOR16 CreateCursor( HINSTANCE hInstance, INT xHotSpot, INT yHotSpot,
INT nWidth, INT nHeight,
const BYTE *lpANDbits, const BYTE *lpXORbits )
{
CURSORICONINFO info = { { xHotSpot, yHotSpot }, nWidth, nHeight, 0, 1, 1 };
@ -514,7 +514,7 @@ HCURSOR CreateCursor( HINSTANCE hInstance, INT xHotSpot, INT yHotSpot,
/***********************************************************************
* CreateIcon (USER.407)
*/
HICON CreateIcon( HINSTANCE hInstance, INT nWidth, INT nHeight, BYTE bPlanes,
HICON16 CreateIcon( HINSTANCE hInstance, INT nWidth, INT nHeight, BYTE bPlanes,
BYTE bBitsPixel, const BYTE* lpANDbits, const BYTE* lpXORbits)
{
CURSORICONINFO info = { { 0, 0 }, nWidth, nHeight, 0, bPlanes, bBitsPixel };
@ -585,7 +585,7 @@ HCURSOR16 CopyCursor16( HINSTANCE16 hInstance, HCURSOR16 hCursor )
/***********************************************************************
* DestroyIcon (USER.457)
*/
BOOL DestroyIcon( HICON hIcon )
BOOL DestroyIcon( HICON16 hIcon )
{
dprintf_icon( stddeb, "DestroyIcon: %04x\n", hIcon );
/* FIXME: should check for OEM icon here */
@ -596,7 +596,7 @@ BOOL DestroyIcon( HICON hIcon )
/***********************************************************************
* DestroyCursor (USER.458)
*/
BOOL DestroyCursor( HCURSOR hCursor )
BOOL DestroyCursor( HCURSOR16 hCursor )
{
dprintf_cursor( stddeb, "DestroyCursor: %04x\n", hCursor );
/* FIXME: should check for OEM cursor here */
@ -607,7 +607,7 @@ BOOL DestroyCursor( HCURSOR hCursor )
/***********************************************************************
* DrawIcon (USER.84)
*/
BOOL DrawIcon( HDC hdc, INT x, INT y, HICON hIcon )
BOOL DrawIcon( HDC hdc, INT x, INT y, HICON16 hIcon )
{
CURSORICONINFO *ptr;
HDC hMemDC;
@ -665,7 +665,7 @@ DWORD DumpIcon( SEGPTR pInfo, WORD *lpLen,
*
* Change the X cursor. Helper function for SetCursor() and ShowCursor().
*/
static BOOL CURSORICON_SetCursor( HCURSOR hCursor )
static BOOL CURSORICON_SetCursor( HCURSOR16 hCursor )
{
Pixmap pixmapBits, pixmapMask, pixmapAll;
XColor fg, bg;
@ -803,9 +803,9 @@ static BOOL CURSORICON_SetCursor( HCURSOR hCursor )
/***********************************************************************
* SetCursor (USER.69)
*/
HCURSOR SetCursor( HCURSOR hCursor )
HCURSOR16 SetCursor( HCURSOR16 hCursor )
{
HCURSOR hOldCursor;
HCURSOR16 hOldCursor;
if (hCursor == hActiveCursor) return hActiveCursor; /* No change */
dprintf_cursor( stddeb, "SetCursor: %04x\n", hCursor );
@ -852,7 +852,7 @@ int ShowCursor( BOOL bShow )
/***********************************************************************
* GetCursor (USER.247)
*/
HCURSOR GetCursor(void)
HCURSOR16 GetCursor(void)
{
return hActiveCursor;
}
@ -973,7 +973,7 @@ WORD GetIconID( HANDLE hResource, DWORD resType )
/**********************************************************************
* LoadIconHandler (USER.456)
*/
HICON LoadIconHandler( HANDLE hResource, BOOL bNew )
HICON16 LoadIconHandler( HANDLE hResource, BOOL bNew )
{
dprintf_cursor(stddeb,"LoadIconHandler: hRes=%04x\n",hResource);

View File

@ -515,11 +515,10 @@ INT EnumObjects( HDC hdc, INT nObjType, GOBJENUMPROC16 lpEnumFunc,
*/
BOOL IsGDIObject(HANDLE handle)
{
GDIOBJHDR *object;
object = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle );
/* FIXME: should check magic here */
return (object != NULL);
GDIOBJHDR *object = (GDIOBJHDR *) GDI_HEAP_LIN_ADDR( handle );
if (object)
return (object->wMagic>=PEN_MAGIC && object->wMagic<= METAFILE_DC_MAGIC);
return FALSE;
}

View File

@ -25,9 +25,9 @@ static int HTLen; /* allocated length of handle table */
* GetMetafile GDI.124 By Kenny MacDonald 30 Nov 94
*/
HMETAFILE GetMetaFile(LPSTR lpFilename)
HMETAFILE16 GetMetaFile(LPSTR lpFilename)
{
HMETAFILE hmf;
HMETAFILE16 hmf;
METAHEADER *mh;
HFILE hFile;
DWORD size;
@ -146,9 +146,9 @@ HANDLE CreateMetaFile(LPCSTR lpFilename)
* CopyMetafile GDI.151 Niels de Carpentier, April 1996
*/
HMETAFILE CopyMetaFile(HMETAFILE hSrcMetaFile, LPCSTR lpFilename)
HMETAFILE16 CopyMetaFile(HMETAFILE16 hSrcMetaFile, LPCSTR lpFilename)
{
HMETAFILE handle = 0;
HMETAFILE16 handle = 0;
METAHEADER *mh;
METAHEADER *mh2;
int hFile;
@ -168,12 +168,9 @@ HMETAFILE CopyMetaFile(HMETAFILE hSrcMetaFile, LPCSTR lpFilename)
mh->mtType=1; /* disk file version stores 1 here */
i=_lwrite(hFile, (char *)mh, mh->mtSize * 2) ;
mh->mtType=j; /* restore old value [0 or 1] */
_lclose(hFile);
if (i == -1)
{
_lclose(hFile);
return 0;
}
_lclose(hFile);
}
else /* memory based metafile */
{
@ -186,16 +183,35 @@ HMETAFILE CopyMetaFile(HMETAFILE hSrcMetaFile, LPCSTR lpFilename)
return handle;
}
/******************************************************************
* IsValidMetaFile (GDI.410)
* (This is not exactly what windows does, see "Undoc Win")
*/
BOOL IsValidMetaFile(HMETAFILE16 hmf)
{
BOOL resu=FALSE;
METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf);
if (mh)
if (mh->mtType == 1 || mh->mtType == 0)
if (mh->mtHeaderSize == MFHEADERSIZE/sizeof(INT16))
if (mh->mtVersion == MFVERSION)
resu=TRUE;
GlobalUnlock16(hmf);
dprintf_metafile(stddeb,"IsValidMetaFile %x => %d\n",hmf,resu);
return resu;
}
/******************************************************************
* CloseMetafile GDI.126
*/
HMETAFILE CloseMetaFile(HDC hdc)
HMETAFILE16 CloseMetaFile(HDC hdc)
{
DC *dc;
METAHEADER *mh;
HMETAFILE hmf;
HMETAFILE16 hmf;
HFILE hFile;
dprintf_metafile(stddeb,"CloseMetaFile\n");
@ -248,7 +264,7 @@ HMETAFILE CloseMetaFile(HDC hdc)
* DeleteMetafile GDI.127
*/
BOOL DeleteMetaFile(HMETAFILE hmf)
BOOL DeleteMetaFile(HMETAFILE16 hmf)
{
METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf);
@ -264,7 +280,7 @@ BOOL DeleteMetaFile(HMETAFILE hmf)
* PlayMetafile GDI.123
*/
BOOL PlayMetaFile(HDC hdc, HMETAFILE hmf)
BOOL PlayMetaFile(HDC hdc, HMETAFILE16 hmf)
{
METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf);
METARECORD *mr;
@ -307,7 +323,7 @@ BOOL PlayMetaFile(HDC hdc, HMETAFILE hmf)
* Niels de carpentier, april 1996
*/
BOOL EnumMetaFile(HDC hdc, HMETAFILE hmf, MFENUMPROC16 lpEnumFunc,LPARAM lpData)
BOOL EnumMetaFile(HDC hdc, HMETAFILE16 hmf, MFENUMPROC16 lpEnumFunc,LPARAM lpData)
{
METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf);
METARECORD *mr;
@ -740,7 +756,7 @@ void PlayMetaFileRecord(HDC hdc, HANDLETABLE16 *ht, METARECORD *mr,
* Trade in a meta file object handle for a handle to the meta file memory
*/
HANDLE GetMetaFileBits(HMETAFILE hmf)
HANDLE GetMetaFileBits(HMETAFILE16 hmf)
{
dprintf_metafile(stddeb,"GetMetaFileBits: hMem out: %04x\n", hmf);
@ -753,7 +769,7 @@ HANDLE GetMetaFileBits(HMETAFILE hmf)
* Trade in a meta file memory handle for a handle to a meta file object
*/
HMETAFILE SetMetaFileBits(HANDLE hMem)
HMETAFILE16 SetMetaFileBits(HANDLE hMem)
{
dprintf_metafile(stddeb,"SetMetaFileBits: hmf out: %04x\n", hMem);
@ -764,7 +780,7 @@ HMETAFILE SetMetaFileBits(HANDLE hMem)
* MF_WriteRecord
*/
HMETAFILE MF_WriteRecord(HMETAFILE hmf, METARECORD *mr, WORD rlen)
HMETAFILE16 MF_WriteRecord(HMETAFILE16 hmf, METARECORD *mr, WORD rlen)
{
DWORD len;
METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf);
@ -860,7 +876,7 @@ BOOL MF_MetaParam0(DC *dc, short func)
{
char buffer[8];
METARECORD *mr = (METARECORD *)&buffer;
HMETAFILE handle;
HMETAFILE16 handle;
mr->rdSize = 3;
mr->rdFunction = func;
@ -878,7 +894,7 @@ BOOL MF_MetaParam1(DC *dc, short func, short param1)
{
char buffer[8];
METARECORD *mr = (METARECORD *)&buffer;
HMETAFILE handle;
HMETAFILE16 handle;
mr->rdSize = 4;
mr->rdFunction = func;
@ -897,7 +913,7 @@ BOOL MF_MetaParam2(DC *dc, short func, short param1, short param2)
{
char buffer[10];
METARECORD *mr = (METARECORD *)&buffer;
HMETAFILE handle;
HMETAFILE16 handle;
mr->rdSize = 5;
mr->rdFunction = func;
@ -919,7 +935,7 @@ BOOL MF_MetaParam4(DC *dc, short func, short param1, short param2,
{
char buffer[14];
METARECORD *mr = (METARECORD *)&buffer;
HMETAFILE handle;
HMETAFILE16 handle;
mr->rdSize = 7;
mr->rdFunction = func;
@ -943,7 +959,7 @@ BOOL MF_MetaParam6(DC *dc, short func, short param1, short param2,
{
char buffer[18];
METARECORD *mr = (METARECORD *)&buffer;
HMETAFILE handle;
HMETAFILE16 handle;
mr->rdSize = 9;
mr->rdFunction = func;
@ -969,7 +985,7 @@ BOOL MF_MetaParam8(DC *dc, short func, short param1, short param2,
{
char buffer[22];
METARECORD *mr = (METARECORD *)&buffer;
HMETAFILE handle;
HMETAFILE16 handle;
mr->rdSize = 11;
mr->rdFunction = func;
@ -995,7 +1011,7 @@ BOOL MF_MetaParam8(DC *dc, short func, short param1, short param2,
BOOL MF_CreateBrushIndirect(DC *dc, HBRUSH hBrush, LOGBRUSH16 *logbrush)
{
int index;
HMETAFILE handle;
HMETAFILE16 handle;
char buffer[sizeof(METARECORD) - 2 + sizeof(LOGBRUSH16)];
METARECORD *mr = (METARECORD *)&buffer;
METAHEADER *mh;
@ -1039,7 +1055,7 @@ BOOL MF_CreatePatternBrush(DC *dc, HBRUSH hBrush, LOGBRUSH16 *logbrush)
BITMAPINFO *info;
BITMAPINFOHEADER *infohdr;
int index;
HMETAFILE handle;
HMETAFILE16 handle;
char buffer[sizeof(METARECORD)];
METAHEADER *mh;
@ -1124,7 +1140,7 @@ BOOL MF_CreatePatternBrush(DC *dc, HBRUSH hBrush, LOGBRUSH16 *logbrush)
BOOL MF_CreatePenIndirect(DC *dc, HPEN16 hPen, LOGPEN16 *logpen)
{
int index;
HMETAFILE handle;
HMETAFILE16 handle;
char buffer[sizeof(METARECORD) - 2 + sizeof(LOGPEN16)];
METARECORD *mr = (METARECORD *)&buffer;
METAHEADER *mh;
@ -1161,7 +1177,7 @@ BOOL MF_CreatePenIndirect(DC *dc, HPEN16 hPen, LOGPEN16 *logpen)
BOOL MF_CreateFontIndirect(DC *dc, HFONT hFont, LOGFONT16 *logfont)
{
int index;
HMETAFILE handle;
HMETAFILE16 handle;
char buffer[sizeof(METARECORD) - 2 + sizeof(LOGFONT16)];
METARECORD *mr = (METARECORD *)&buffer;
METAHEADER *mh;
@ -1196,7 +1212,7 @@ BOOL MF_CreateFontIndirect(DC *dc, HFONT hFont, LOGFONT16 *logfont)
*/
BOOL MF_TextOut(DC *dc, short x, short y, LPCSTR str, short count)
{
HMETAFILE handle;
HMETAFILE16 handle;
DWORD len;
HANDLE hmr;
METARECORD *mr;
@ -1225,7 +1241,7 @@ BOOL MF_TextOut(DC *dc, short x, short y, LPCSTR str, short count)
BOOL MF_ExtTextOut(DC *dc, short x, short y, UINT16 flags, const RECT16 *rect,
LPCSTR str, short count, const INT16 *lpDx)
{
HMETAFILE handle;
HMETAFILE16 handle;
DWORD len;
HANDLE hmr;
METARECORD *mr;
@ -1259,7 +1275,7 @@ BOOL MF_ExtTextOut(DC *dc, short x, short y, UINT16 flags, const RECT16 *rect,
*/
BOOL MF_MetaPoly(DC *dc, short func, LPPOINT16 pt, short count)
{
HMETAFILE handle;
HMETAFILE16 handle;
DWORD len;
HANDLE hmr;
METARECORD *mr;
@ -1287,7 +1303,7 @@ BOOL MF_MetaPoly(DC *dc, short func, LPPOINT16 pt, short count)
BOOL MF_BitBlt(DC *dcDest, short xDest, short yDest, short width,
short height, HDC hdcSrc, short xSrc, short ySrc, DWORD rop)
{
HMETAFILE handle;
HMETAFILE16 handle;
DWORD len;
HANDLE hmr;
METARECORD *mr;
@ -1339,7 +1355,7 @@ BOOL MF_StretchBlt(DC *dcDest, short xDest, short yDest, short widthDest,
short heightDest, HDC hdcSrc, short xSrc, short ySrc,
short widthSrc, short heightSrc, DWORD rop)
{
HMETAFILE handle;
HMETAFILE16 handle;
DWORD len;
HANDLE hmr;
METARECORD *mr;

View File

@ -216,7 +216,7 @@ static char **OBM_Cursors_Data[NB_CURSORS] =
#endif
};
static HCURSOR OBM_Cursors[NB_CURSORS];
static HGLOBAL16 OBM_Cursors[NB_CURSORS];
/* All the colors used in the xpm files must be included in this */
@ -299,10 +299,10 @@ static BOOL OBM_InitColorSymbols()
*
* Allocate a GDI bitmap.
*/
static HBITMAP OBM_MakeBitmap( WORD width, WORD height,
WORD bpp, Pixmap pixmap )
static HBITMAP16 OBM_MakeBitmap( WORD width, WORD height,
WORD bpp, Pixmap pixmap )
{
HBITMAP hbitmap;
HBITMAP16 hbitmap;
BITMAPOBJ * bmpObjPtr;
if (!pixmap) return 0;
@ -330,8 +330,8 @@ static HBITMAP OBM_MakeBitmap( WORD width, WORD height,
*
* Create the 2 bitmaps from XPM data.
*/
static BOOL OBM_CreateBitmaps( char **data, BOOL color, HBITMAP *hBitmap,
HBITMAP *hBitmapMask, POINT16 *hotspot )
static BOOL OBM_CreateBitmaps( char **data, BOOL color, HBITMAP16 *hBitmap,
HBITMAP16 *hBitmapMask, POINT16 *hotspot )
{
Pixmap pixmap, pixmask;
XpmAttributes *attrs;
@ -377,9 +377,9 @@ static BOOL OBM_CreateBitmaps( char **data, BOOL color, HBITMAP *hBitmap,
/***********************************************************************
* OBM_LoadBitmap
*/
HBITMAP OBM_LoadBitmap( WORD id )
HBITMAP16 OBM_LoadBitmap( WORD id )
{
HBITMAP hbitmap;
HBITMAP16 hbitmap;
if ((id < OBM_FIRST) || (id > OBM_LAST)) return 0;
id -= OBM_FIRST;
@ -401,12 +401,12 @@ HBITMAP OBM_LoadBitmap( WORD id )
/***********************************************************************
* OBM_LoadCursorIcon
*/
HANDLE OBM_LoadCursorIcon( WORD id, BOOL fCursor )
HGLOBAL16 OBM_LoadCursorIcon( WORD id, BOOL32 fCursor )
{
HANDLE handle;
HGLOBAL16 handle;
CURSORICONINFO *pInfo;
BITMAPOBJ *bmpXor, *bmpAnd;
HBITMAP hXorBits, hAndBits;
HBITMAP16 hXorBits, hAndBits;
POINT16 hotspot;
int sizeXor, sizeAnd;

View File

@ -423,6 +423,35 @@ static int REGION_CopyRegion( RGNOBJ *src, RGNOBJ *dest )
}
}
/***********************************************************************
* REGION_UnionRectWithRgn
*
* Add rectangle to region
*/
BOOL16 REGION_UnionRectWithRgn( HRGN32 hRgn, LPRECT16 rc )
{
RGNOBJ *rgnObj = (RGNOBJ*) GDI_GetObjPtr( hRgn, REGION_MAGIC );
XRectangle rect = { rc->left, rc->top, rc->right - rc->left, rc->bottom - rc->top };
BOOL16 ret = 0;
if( rgnObj )
{
if( !rgnObj->xrgn )
{
if (!(rgnObj->xrgn = XCreateRegion()))
{
GDI_FreeObject( hRgn );
return 0;
}
ret = SIMPLEREGION;
}
else
ret = COMPLEXREGION;
XUnionRectWithRegion( &rect, rgnObj->xrgn, rgnObj->xrgn );
}
return ret;
}
/***********************************************************************
* REGION_CreateFrameRgn
*

View File

@ -42,7 +42,7 @@ static const struct resource * const * SYSRES_Resources[] =
*
* Create a global memory block for a system resource.
*/
HANDLE SYSRES_LoadResource( SYSTEM_RESOURCE id )
HGLOBAL16 SYSRES_LoadResource( SYSTEM_RESOURCE id )
{
const struct resource *resPtr;
@ -57,7 +57,7 @@ HANDLE SYSRES_LoadResource( SYSTEM_RESOURCE id )
*
* Free a global memory block for a system resource.
*/
void SYSRES_FreeResource( HANDLE handle )
void SYSRES_FreeResource( HGLOBAL16 handle )
{
GLOBAL_FreeBlock( handle );
}

View File

@ -13,10 +13,13 @@ ORDINAL equate EXPORTNAME DATA
ORDINAL return EXPORTNAME ARGLENGTH RETVALUE
ORDINAL extern EXPORTNAME SYMBOLNAME
# COMMENT_TEXT
--------------------
General:
========
"name" and "type" fields are mandatory. Specific ordinal
declarations are optional, but the default handler will print an error
@ -26,6 +29,7 @@ modules); default is no local heap. Lines whose first character is a
'#' will be ignored as comments.
Variable ordinals:
==================
This type defines data storage at the ordinal specified. You may
store items as bytes, 16-bit words, or 32-bit words.
@ -39,6 +43,7 @@ ordinal 2 and containing 4 bytes:
2 byte VariableA(-1 0xff 0 0)
Function ordinals:
==================
This type defines a function entry point. The prototype defined by
"EXPORTNAME ([ARGTYPE [ARGTYPE [...]]])" specifies the name available for
@ -79,13 +84,21 @@ call (the ordinal 100 is just an example):
100 pascal GetFocus() WIN_GetFocus()
To declare a function using a variable number of arguments, specify
the function as taking no arguments. In this special case, in Win32
the called function will be passed a pointer to the first arg; in
Win16, the args are available with CURRENT_STACK16->args. See the
wsprintf* functions in user.spec and user32.spec for an example.
Stub ordinals:
==============
This type defines a stub function. It makes the name and ordinal
available for dynamic linking, but will terminate execution with an
error message if the function is ever called.
Equate ordinals:
================
This type defines an ordinal as an absolute value.
"ORDINAL" is replaced by the ordinal number corresponding to the
@ -93,6 +106,7 @@ variable. "EXPORTNAME" will be the name available for dynamic linking.
"DATA" can be a decimal number or a hex number preceeded by "0x".
Return ordinals:
================
This type defines a function entry point whose handler should do
nothing but return a value.
@ -100,3 +114,11 @@ nothing but return a value.
variable. ARGLENGTH is the number of bytes that need to be removed
from the stack before returning to the caller. RETVALUE is the
return value which will be passed back to the caller.
Extern ordinals:
================
This type defines an entry that simply maps to a Wine symbol
(variable or function); "EXPORTNAME" will point to the symbol
"SYMBOLNAME" that must be defined in C code. This type only works with
Win32.

View File

@ -10,31 +10,53 @@
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "wintypes.h"
#include "registers.h"
#include "winerror.h" /* for ERROR_CALL_NOT_IMPLEMENTED */
#include "module.h"
#include "neexe.h"
#include "windows.h"
/* ELF symbols do not have an underscore in front */
#if defined (__ELF__) || defined (__svr4__) || defined(_SCO_DS)
#define PREFIX
#ifdef NEED_UNDERSCORE_PREFIX
# define PREFIX "_"
#else
#define PREFIX "_"
# define PREFIX
#endif
#define TYPE_INVALID 0
#define TYPE_BYTE 1 /* byte variable */
#define TYPE_WORD 2 /* word variable */
#define TYPE_LONG 3 /* long variable */
#define TYPE_PASCAL_16 4 /* pascal function with 16-bit return (Win16) */
#define TYPE_PASCAL 5 /* pascal function with 32-bit return (Win16) */
#define TYPE_REGISTER 6 /* register function (Win16) */
#define TYPE_ABS 7 /* absolute value */
#define TYPE_RETURN 8 /* simple return value function */
#define TYPE_STUB 9 /* unimplemented stub */
#define TYPE_STDCALL 10 /* stdcall function (Win32) */
#define TYPE_CDECL 11 /* cdecl function (Win32) */
typedef enum
{
TYPE_INVALID,
TYPE_BYTE, /* byte variable */
TYPE_WORD, /* word variable */
TYPE_LONG, /* long variable */
TYPE_PASCAL_16, /* pascal function with 16-bit return (Win16) */
TYPE_PASCAL, /* pascal function with 32-bit return (Win16) */
TYPE_REGISTER, /* register function (Win16) */
TYPE_ABS, /* absolute value */
TYPE_RETURN, /* simple return value function */
TYPE_STUB, /* unimplemented stub */
TYPE_STDCALL, /* stdcall function (Win32) */
TYPE_CDECL, /* cdecl function (Win32) */
TYPE_EXTERN, /* external symbol (Win32) */
TYPE_NBTYPES
} ORD_TYPE;
static const char * const TypeNames[TYPE_NBTYPES] =
{
NULL,
"byte", /* TYPE_BYTE */
"word", /* TYPE_WORD */
"long", /* TYPE_LONG */
"pascal16", /* TYPE_PASCAL_16 */
"pascal", /* TYPE_PASCAL */
"register", /* TYPE_REGISTER */
"equate", /* TYPE_ABS */
"return", /* TYPE_RETURN */
"stub", /* TYPE_STUB */
"stdcall", /* TYPE_STDCALL */
"cdecl", /* TYPE_CDECL */
"extern" /* TYPE_EXTERN */
};
#define MAX_ORDINALS 1299
@ -42,43 +64,60 @@
#define STUB_CALLBACK \
((SpecType == SPEC_WIN16) ? "RELAY_Unimplemented16": "RELAY_Unimplemented32")
enum SPEC_TYPE
typedef enum
{
SPEC_INVALID,
SPEC_WIN16,
SPEC_WIN32
};
} SPEC_TYPE;
typedef struct ordinal_definition_s
{
int type;
int offset;
char export_name[80];
void *additional_data;
} ORDDEF;
typedef struct ordinal_variable_definition_s
typedef struct
{
int n_values;
int *values;
} ORDVARDEF;
} ORD_VARIABLE;
typedef struct ordinal_function_definition_s
typedef struct
{
int n_args;
char arg_types[32];
char internal_name[80];
} ORDFUNCDEF;
char link_name[80];
} ORD_FUNCTION;
typedef struct ordinal_return_definition_s
typedef struct
{
int arg_size;
int ret_value;
} ORDRETDEF;
} ORD_RETURN;
typedef struct
{
int value;
} ORD_ABS;
typedef struct
{
char link_name[80];
} ORD_EXTERN;
typedef struct
{
ORD_TYPE type;
int offset;
char name[80];
union
{
ORD_VARIABLE var;
ORD_FUNCTION func;
ORD_RETURN ret;
ORD_ABS abs;
ORD_EXTERN ext;
} u;
} ORDDEF;
static ORDDEF OrdinalDefinitions[MAX_ORDINALS];
static enum SPEC_TYPE SpecType = SPEC_INVALID;
static SPEC_TYPE SpecType = SPEC_INVALID;
char DLLName[80];
int Limit = 0;
int Base = 0;
@ -211,20 +250,14 @@ static char * GetToken(void)
return token;
}
static int ParseVariable(int ordinal, int type)
static int ParseVariable( ORDDEF *odp )
{
ORDDEF *odp;
ORDVARDEF *vdp;
char export_name[80];
char *token;
char *endptr;
int *value_array;
int n_values;
int value_array_size;
strcpy(export_name, GetToken());
token = GetToken();
char *token = GetToken();
if (*token != '(')
{
fprintf(stderr, "%d: Expected '(' got '%s'\n", Line, token);
@ -262,48 +295,33 @@ static int ParseVariable(int ordinal, int type)
exit(1);
}
if (ordinal >= MAX_ORDINALS)
{
fprintf(stderr, "%d: Ordinal number too large\n", Line);
exit(1);
}
odp = &OrdinalDefinitions[ordinal];
odp->type = type;
strcpy(odp->export_name, export_name);
vdp = xmalloc(sizeof(*vdp));
odp->additional_data = vdp;
vdp->n_values = n_values;
vdp->values = xrealloc(value_array, sizeof(*value_array) * n_values);
odp->u.var.n_values = n_values;
odp->u.var.values = xrealloc(value_array, sizeof(*value_array) * n_values);
return 0;
}
static int ParseExportFunction(int ordinal, int type)
static int ParseExportFunction( ORDDEF *odp )
{
char *token;
ORDDEF *odp;
ORDFUNCDEF *fdp;
int i;
switch(SpecType)
{
case SPEC_WIN16:
if (type == TYPE_STDCALL)
if (odp->type == TYPE_STDCALL)
{
fprintf( stderr, "%d: 'stdcall' not supported for Win16\n", Line );
exit(1);
}
if (type == TYPE_CDECL)
if (odp->type == TYPE_CDECL)
{
fprintf( stderr, "%d: 'cdecl' not supported for Win16\n", Line );
exit(1);
}
break;
case SPEC_WIN32:
if ((type == TYPE_PASCAL) || (type == TYPE_PASCAL_16))
if ((odp->type == TYPE_PASCAL) || (odp->type == TYPE_PASCAL_16))
{
fprintf( stderr, "%d: 'pascal' not supported for Win32\n", Line );
exit(1);
@ -312,11 +330,6 @@ static int ParseExportFunction(int ordinal, int type)
default:
break;
}
odp = &OrdinalDefinitions[ordinal];
strcpy(odp->export_name, GetToken());
odp->type = type;
fdp = xmalloc(sizeof(*fdp));
odp->additional_data = fdp;
token = GetToken();
if (*token != '(')
@ -325,20 +338,20 @@ static int ParseExportFunction(int ordinal, int type)
exit(1);
}
for (i = 0; i < sizeof(fdp->arg_types)-1; i++)
for (i = 0; i < sizeof(odp->u.func.arg_types)-1; i++)
{
token = GetToken();
if (*token == ')')
break;
if (!strcmp(token, "byte") || !strcmp(token, "word"))
fdp->arg_types[i] = 'w';
odp->u.func.arg_types[i] = 'w';
else if (!strcmp(token, "s_byte") || !strcmp(token, "s_word"))
fdp->arg_types[i] = 's';
odp->u.func.arg_types[i] = 's';
else if (!strcmp(token, "long") || !strcmp(token, "segptr"))
fdp->arg_types[i] = 'l';
odp->u.func.arg_types[i] = 'l';
else if (!strcmp(token, "ptr"))
fdp->arg_types[i] = 'p';
odp->u.func.arg_types[i] = 'p';
else
{
fprintf(stderr, "%d: Unknown variable type '%s'\n", Line, token);
@ -359,25 +372,25 @@ static int ParseExportFunction(int ordinal, int type)
fprintf( stderr, "%d: Too many arguments\n", Line );
exit(1);
}
fdp->arg_types[i] = '\0';
if ((type == TYPE_STDCALL) && !i)
odp->u.func.arg_types[i] = '\0';
if ((odp->type == TYPE_STDCALL) && !i)
odp->type = TYPE_CDECL; /* stdcall is the same as cdecl for 0 args */
strcpy(fdp->internal_name, GetToken());
strcpy(odp->u.func.link_name, GetToken());
return 0;
}
static int ParseEquate(int ordinal)
{
ORDDEF *odp;
char *token;
char *endptr;
int value;
odp = &OrdinalDefinitions[ordinal];
strcpy(odp->export_name, GetToken());
token = GetToken();
value = strtol(token, &endptr, 0);
/*******************************************************************
* ParseEquate
*
* Parse an 'equate' definition.
*/
static int ParseEquate( ORDDEF *odp )
{
char *endptr;
char *token = GetToken();
int value = strtol(token, &endptr, 0);
if (endptr == NULL || *endptr != '\0')
{
fprintf(stderr, "%d: Expected number value, got '%s'\n", Line,
@ -385,28 +398,23 @@ static int ParseEquate(int ordinal)
exit(1);
}
odp->type = TYPE_ABS;
odp->additional_data = (void *) value;
odp->u.abs.value = value;
return 0;
}
static int ParseReturn(int ordinal)
/*******************************************************************
* ParseReturn
*
* Parse a 'return' definition.
*/
static int ParseReturn( ORDDEF *odp )
{
ORDDEF *odp;
ORDRETDEF *rdp;
char *token;
char *endptr;
rdp = xmalloc(sizeof(*rdp));
odp = &OrdinalDefinitions[ordinal];
strcpy(odp->export_name, GetToken());
odp->type = TYPE_RETURN;
odp->additional_data = rdp;
token = GetToken();
rdp->arg_size = strtol(token, &endptr, 0);
odp->u.ret.arg_size = strtol(token, &endptr, 0);
if (endptr == NULL || *endptr != '\0')
{
fprintf(stderr, "%d: Expected number value, got '%s'\n", Line,
@ -415,7 +423,7 @@ static int ParseReturn(int ordinal)
}
token = GetToken();
rdp->ret_value = strtol(token, &endptr, 0);
odp->u.ret.ret_value = strtol(token, &endptr, 0);
if (endptr == NULL || *endptr != '\0')
{
fprintf(stderr, "%d: Expected number value, got '%s'\n", Line,
@ -427,26 +435,46 @@ static int ParseReturn(int ordinal)
}
static int ParseStub( int ordinal )
/*******************************************************************
* ParseStub
*
* Parse a 'stub' definition.
*/
static int ParseStub( ORDDEF *odp )
{
ORDDEF *odp;
ORDFUNCDEF *fdp;
odp = &OrdinalDefinitions[ordinal];
strcpy( odp->export_name, GetToken() );
odp->type = TYPE_STUB;
fdp = xmalloc(sizeof(*fdp));
odp->additional_data = fdp;
fdp->arg_types[0] = '\0';
strcpy( fdp->internal_name, STUB_CALLBACK );
odp->u.func.arg_types[0] = '\0';
strcpy( odp->u.func.link_name, STUB_CALLBACK );
return 0;
}
/*******************************************************************
* ParseExtern
*
* Parse an 'extern' definition.
*/
static int ParseExtern( ORDDEF *odp )
{
if (SpecType == SPEC_WIN16)
{
fprintf( stderr, "%d: 'extern' not supported for Win16\n", Line );
exit(1);
}
strcpy( odp->u.ext.link_name, GetToken() );
return 0;
}
/*******************************************************************
* ParseOrdinal
*
* Parse an ordinal definition.
*/
static int ParseOrdinal(int ordinal)
{
ORDDEF *odp;
char *token;
if (ordinal >= MAX_ORDINALS)
{
fprintf(stderr, "%d: Ordinal number too large\n", Line);
@ -454,39 +482,56 @@ static int ParseOrdinal(int ordinal)
}
if (ordinal > Limit) Limit = ordinal;
token = GetToken();
if (token == NULL)
odp = &OrdinalDefinitions[ordinal];
if (!(token = GetToken()))
{
fprintf(stderr, "%d: Expected type after ordinal\n", Line);
exit(1);
}
if (strcmp(token, "byte") == 0)
return ParseVariable(ordinal, TYPE_BYTE);
if (strcmp(token, "word") == 0)
return ParseVariable(ordinal, TYPE_WORD);
if (strcmp(token, "long") == 0)
return ParseVariable(ordinal, TYPE_LONG);
if (strcmp(token, "pascal") == 0)
return ParseExportFunction(ordinal, TYPE_PASCAL);
if (strcmp(token, "pascal16") == 0)
return ParseExportFunction(ordinal, TYPE_PASCAL_16);
if (strcmp(token, "register") == 0)
return ParseExportFunction(ordinal, TYPE_REGISTER);
if (strcmp(token, "stdcall") == 0)
return ParseExportFunction(ordinal, TYPE_STDCALL);
if (strcmp(token, "cdecl") == 0)
return ParseExportFunction(ordinal, TYPE_CDECL);
if (strcmp(token, "equate") == 0)
return ParseEquate(ordinal);
if (strcmp(token, "return") == 0)
return ParseReturn(ordinal);
if (strcmp(token, "stub") == 0)
return ParseStub(ordinal);
fprintf(stderr,
"%d: Expected type after ordinal, found '%s' instead\n",
Line, token);
exit(1);
for (odp->type = 0; odp->type < TYPE_NBTYPES; odp->type++)
if (TypeNames[odp->type] && !strcmp( token, TypeNames[odp->type] ))
break;
if (odp->type >= TYPE_NBTYPES)
{
fprintf( stderr,
"%d: Expected type after ordinal, found '%s' instead\n",
Line, token );
exit(1);
}
if (!(token = GetToken()))
{
fprintf( stderr, "%d: Expected name after type\n", Line );
exit(1);
}
strcpy( odp->name, token );
switch(odp->type)
{
case TYPE_BYTE:
case TYPE_WORD:
case TYPE_LONG:
return ParseVariable( odp );
case TYPE_PASCAL_16:
case TYPE_PASCAL:
case TYPE_REGISTER:
case TYPE_STDCALL:
case TYPE_CDECL:
return ParseExportFunction( odp );
case TYPE_ABS:
return ParseEquate( odp );
case TYPE_RETURN:
return ParseReturn( odp );
case TYPE_STUB:
return ParseStub( odp );
case TYPE_EXTERN:
return ParseExtern( odp );
default:
fprintf( stderr, "Should not happen\n" );
exit(1);
}
}
static int ParseTopLevel(void)
@ -559,26 +604,24 @@ static int ParseTopLevel(void)
*/
static int StoreVariableCode( unsigned char *buffer, int size, ORDDEF *odp )
{
ORDVARDEF *vdp;
int i;
vdp = odp->additional_data;
switch(size)
{
case 1:
for (i = 0; i < vdp->n_values; i++)
buffer[i] = vdp->values[i];
for (i = 0; i < odp->u.var.n_values; i++)
buffer[i] = odp->u.var.values[i];
break;
case 2:
for (i = 0; i < vdp->n_values; i++)
((unsigned short *)buffer)[i] = vdp->values[i];
for (i = 0; i < odp->u.var.n_values; i++)
((unsigned short *)buffer)[i] = odp->u.var.values[i];
break;
case 4:
for (i = 0; i < vdp->n_values; i++)
((unsigned int *)buffer)[i] = vdp->values[i];
for (i = 0; i < odp->u.var.n_values; i++)
((unsigned int *)buffer)[i] = odp->u.var.values[i];
break;
}
return vdp->n_values * size;
return odp->u.var.n_values * size;
}
@ -719,9 +762,9 @@ static int BuildModule16( int max_code_offset, int max_data_offset )
odp = OrdinalDefinitions + 1;
for (i = 1; i <= Limit; i++, odp++)
{
if (!odp->export_name[0]) continue;
*pstr = strlen( odp->export_name );
strcpy( pstr + 1, odp->export_name );
if (!odp->name[0]) continue;
*pstr = strlen( odp->name );
strcpy( pstr + 1, odp->name );
strupper( pstr + 1 );
pstr += *pstr + 1;
*(WORD *)pstr = i;
@ -740,10 +783,6 @@ static int BuildModule16( int max_code_offset, int max_data_offset )
switch (odp->type)
{
case TYPE_INVALID:
selector = 0; /* Invalid selector */
break;
case TYPE_PASCAL:
case TYPE_PASCAL_16:
case TYPE_REGISTER:
@ -761,6 +800,10 @@ static int BuildModule16( int max_code_offset, int max_data_offset )
case TYPE_ABS:
selector = 0xfe; /* Constant selector */
break;
default:
selector = 0; /* Invalid selector */
break;
}
/* create a new bundle if necessary */
@ -908,8 +951,6 @@ static int BuildModule32(void)
static void BuildSpec32Files(void)
{
ORDDEF *odp;
ORDFUNCDEF *fdp;
ORDRETDEF *rdp;
int i, module_size, len;
char buffer[1024];
@ -921,9 +962,6 @@ static void BuildSpec32Files(void)
odp = OrdinalDefinitions;
for (i = 0; i <= Limit; i++, odp++)
{
fdp = odp->additional_data;
rdp = odp->additional_data;
switch (odp->type)
{
case TYPE_INVALID:
@ -933,26 +971,26 @@ static void BuildSpec32Files(void)
case TYPE_CDECL:
case TYPE_STUB:
printf( "/* %s.%d (%s) */\n",
DLLName, i, odp->export_name);
DLLName, i, odp->name);
printf( "%s_%d:\n", DLLName, i );
printf( "\tpushl %%ebp\n" );
printf( "\tpushl $" PREFIX "%s\n", fdp->internal_name );
printf( "\tpushl $" PREFIX "%s\n", odp->u.func.link_name );
printf( "\tcall " PREFIX "CallFrom32_%s_%d\n",
(odp->type == TYPE_STDCALL) ? "stdcall" : "cdecl",
strlen(fdp->arg_types));
strlen(odp->u.func.arg_types));
printf( "\tnop\n" );
break;
case TYPE_RETURN:
printf( "/* %s.%d (%s) */\n",
DLLName, i, odp->export_name);
DLLName, i, odp->name);
printf( "%s_%d:\n", DLLName, i );
printf( "\tmovl $%d,%%eax\n", ERROR_CALL_NOT_IMPLEMENTED );
printf( "\tmovl %%eax," PREFIX "WIN32_LastError\n" );
printf( "\tmovl $%d,%%eax\n", rdp->ret_value );
if (rdp->arg_size)
printf( "\tmovl $%d,%%eax\n", odp->u.ret.ret_value );
if (odp->u.ret.arg_size)
{
printf( "\tret $%d\n", rdp->arg_size );
printf( "\tret $%d\n", odp->u.ret.arg_size );
printf( "\tnop\n" );
printf( "\tnop\n" );
}
@ -961,7 +999,7 @@ static void BuildSpec32Files(void)
case TYPE_BYTE:
printf( "/* %s.%d (%s) */\n",
DLLName, i, odp->export_name);
DLLName, i, odp->name);
printf( "\t.data\n" );
printf( "%s_%d:\n", DLLName, i );
len = StoreVariableCode( buffer, 1, odp );
@ -971,7 +1009,7 @@ static void BuildSpec32Files(void)
case TYPE_WORD:
printf( "/* %s.%d (%s) */\n",
DLLName, i, odp->export_name);
DLLName, i, odp->name);
printf( "\t.data\n" );
printf( "%s_%d:\n", DLLName, i );
len = StoreVariableCode( buffer, 2, odp );
@ -981,7 +1019,7 @@ static void BuildSpec32Files(void)
case TYPE_LONG:
printf( "/* %s.%d (%s) */\n",
DLLName, i, odp->export_name);
DLLName, i, odp->name);
printf( "\t.data\n" );
printf( "%s_%d:\n", DLLName, i );
len = StoreVariableCode( buffer, 4, odp );
@ -989,6 +1027,9 @@ static void BuildSpec32Files(void)
printf( "\t.text\n" );
break;
case TYPE_EXTERN:
break;
default:
fprintf(stderr,"build: function type %d not available for Win32\n",
odp->type);
@ -1006,8 +1047,18 @@ static void BuildSpec32Files(void)
odp = OrdinalDefinitions;
for (i = 0; i <= Limit; i++, odp++)
{
if (odp->type == TYPE_INVALID) printf( "\t.long 0\n" );
else printf("\t.long %s_%d\n", DLLName, i);
switch(odp->type)
{
case TYPE_INVALID:
printf( "\t.long 0\n" );
break;
case TYPE_EXTERN:
printf( "\t.long " PREFIX "%s\n", odp->u.ext.link_name );
break;
default:
printf( "\t.long %s_%d\n", DLLName, i );
break;
}
}
/* Output the DLL names table */
@ -1025,7 +1076,7 @@ static void BuildSpec32Files(void)
for (i = 0, odp = OrdinalDefinitions; i <= Limit; i++, odp++)
{
if (odp->type != TYPE_INVALID)
printf( "Name_%d:\t.ascii \"%s\\0\"\n", i, odp->export_name );
printf( "Name_%d:\t.ascii \"%s\\0\"\n", i, odp->name );
}
/* Output the DLL descriptor */
@ -1052,8 +1103,6 @@ static void BuildSpec32Files(void)
static void BuildSpec16Files(void)
{
ORDDEF *odp;
ORDFUNCDEF *fdp;
ORDRETDEF *rdp;
int i;
int code_offset, data_offset, module_size;
unsigned char *data;
@ -1070,9 +1119,6 @@ static void BuildSpec16Files(void)
odp = OrdinalDefinitions;
for (i = 0; i <= Limit; i++, odp++)
{
fdp = odp->additional_data;
rdp = odp->additional_data;
switch (odp->type)
{
case TYPE_INVALID:
@ -1080,7 +1126,7 @@ static void BuildSpec16Files(void)
break;
case TYPE_ABS:
odp->offset = (int)odp->additional_data & 0xffff;
odp->offset = LOWORD(odp->u.abs.value);
break;
case TYPE_BYTE:
@ -1100,11 +1146,11 @@ static void BuildSpec16Files(void)
case TYPE_RETURN:
printf( "/* %s.%d */\n", DLLName, i);
printf( "\tmovw $%d,%%ax\n", rdp->ret_value & 0xffff );
printf( "\tmovw $%d,%%dx\n", (rdp->ret_value >> 16) & 0xffff);
printf( "\tmovw $%d,%%ax\n", LOWORD(odp->u.ret.ret_value) );
printf( "\tmovw $%d,%%dx\n", HIWORD(odp->u.ret.ret_value) );
printf( "\t.byte 0x66\n");
if (rdp->arg_size != 0)
printf( "\tlret $%d\n\n", rdp->arg_size);
if (odp->u.ret.arg_size != 0)
printf( "\tlret $%d\n\n", odp->u.ret.arg_size);
else
{
printf( "\tlret\n");
@ -1121,13 +1167,13 @@ static void BuildSpec16Files(void)
case TYPE_STUB:
printf( "/* %s.%d */\n", DLLName, i);
printf( "\tpushw %%bp\n" );
printf( "\tpushl $" PREFIX "%s\n", fdp->internal_name );
printf( "\tpushl $" PREFIX "%s\n", odp->u.func.link_name );
/* FreeBSD does not understand lcall, so do it the hard way */
printf( "\t.byte 0x9a /*lcall*/\n" );
printf( "\t.long " PREFIX "CallFrom16_%s_%s\n",
(odp->type == TYPE_REGISTER) ? "regs" :
(odp->type == TYPE_PASCAL) ? "long" : "word",
fdp->arg_types );
odp->u.func.arg_types );
printf( "\t.byte 0x%02x,0x%02x\n", /* Some asms don't have .word */
LOBYTE(WINE_CODE_SELECTOR), HIBYTE(WINE_CODE_SELECTOR) );
printf( "\tnop\n" );

View File

@ -7,7 +7,6 @@
#include <stdio.h>
#include "windows.h"
#include "winerror.h"
#include "kernel32.h"
#include "winnls.h"
#include "stddebug.h"
#include "debug.h"

View File

@ -7,7 +7,6 @@
#include <stdio.h>
#include "windows.h"
#include "winerror.h"
#include "kernel32.h"
#include "wincon.h"
#include "stddebug.h"
#include "debug.h"

View File

@ -9,7 +9,6 @@
#include <unistd.h>
#include "windows.h"
#include "winerror.h"
#include "kernel32.h"
#include "module.h"
#include "task.h"
#include "stddebug.h"
@ -19,7 +18,7 @@
/***********************************************************************
* GetCommandLineA (KERNEL32.161)
*/
LPSTR GetCommandLineA(void)
LPCSTR GetCommandLine32A(void)
{
static char buffer[256];
char *cp;
@ -37,6 +36,17 @@ LPSTR GetCommandLineA(void)
return buffer;
}
/***********************************************************************
* GetCommandLineW (KERNEL32.162)
*/
LPCWSTR GetCommandLine32W(void)
{
static WCHAR buffer[256];
lstrcpynAtoW(buffer,GetCommandLine32A(),256);
return buffer;
}
/***********************************************************************
* GetSystemPowerStatus (KERNEL32.621)

View File

@ -8,7 +8,6 @@
#include <errno.h>
#include "windows.h"
#include "winerror.h"
#include "kernel32.h"
#include "stddebug.h"
#include "debug.h"

View File

@ -35,7 +35,6 @@
#include <stdio.h>
#include "windows.h"
#include "winerror.h"
#include "kernel32.h"
#include "stddebug.h"
#include "debug.h"
#include "except.h"

View File

@ -16,7 +16,6 @@
#include "windows.h"
#include "winbase.h"
#include "winerror.h"
#include "kernel32.h"
#include "handle32.h"
#include "dos_fs.h"
#include "stddebug.h"

View File

@ -5,50 +5,150 @@
#include "windows.h"
#include "winbase.h"
#include "dos_fs.h"
#include "heap.h"
#include <ctype.h>
#define PATH_LEN 260
struct FindFileContext32 {
DIR * dir;
char mask[PATH_LEN];
char path[PATH_LEN];
};
typedef struct FindFileContext32 FindFileContext32;
const char *DOSFS_Hash(const char *, int);
/* example D:\*.dbs */
static BOOL32 MatchWildCard(LPCSTR file, LPCSTR mask)
{
int len;
/* We should check volume information to see if long filenames possible.
*/
len = strlen(file);
while (*file) {
if (*mask == '*') {
if (*(mask+1)) {
while (*file && (toupper(*file) != *(mask+1))) file++;
if (!*file)
return FALSE;
}
else
break;
}
else {
if (*mask != '?' && *mask != toupper(*file)) {
return FALSE;
}
file++;
}
mask++;
}
return (TRUE);
}
/*************************************************************************
* FindNextFile32A (KERNEL32.126)
*/
BOOL32 FindNextFile32A(HANDLE32 handle, LPWIN32_FIND_DATA32A data)
{
FindFileContext32 *context;
struct dirent *dirent;
char dosname[14];
memset(data, 0, sizeof(WIN32_FIND_DATA32A));
context = (FindFileContext32 *) handle;
while ((dirent = readdir(context->dir)) != NULL) {
if (strcmp(dirent->d_name, "..") == 0 ||
strcmp(dirent->d_name, ".") == 0)
continue;
strcpy(dosname, DOSFS_Hash(dirent->d_name, FALSE));
if (MatchWildCard(dirent->d_name, context->mask)) {
/* Full file name - is this a long file name?
* If it is, we should probably use the dirent
* instead of the dos hashed name.
*/
strcpy(data->cFileName, dosname);
/* file name expressed in 8.3 format */
strcpy(data->cAlternateFileName, dosname);
return (TRUE);
}
}
return (FALSE);
}
/*************************************************************************
* FindFirstFile32A (KERNEL32.123)
*/
HANDLE32 FindFirstFile32A(LPCSTR lpfilename,
LPWIN32_FIND_DATA32A lpFindFileData)
{
char *unixpath = DOSFS_GetUnixFileName(lpfilename, FALSE);
char *p;
char *path;
char *mask;
DIR *dir;
struct dirent *dirent;
int namelen;
char *foundname;
const char *unixpath;
char *slash, *p;
FindFileContext32 *context;
context = HeapAlloc(SystemHeap, 0, sizeof(FindFileContext32));
if (!context)
return (INVALID_HANDLE_VALUE);
slash = strrchr(lpfilename, '\\');
if (slash) {
lstrcpyn32A(context->path, lpfilename, slash - lpfilename + 1);
context->path[slash - lpfilename + 1] = '\0';
unixpath = DOSFS_GetUnixFileName(context->path, FALSE);
if (!unixpath) {
/* FIXME: SetLastError(??) */
return INVALID_HANDLE_VALUE;
}
p = strrchr(unixpath, '/');
if (p) {
*p = '\0';
path = unixpath;
mask = p + 1;
} else {
path = ".";
mask = unixpath;
}
dir = opendir(path);
if (!dir) {
/* FIXME: SetLastError(??) */
return INVALID_HANDLE_VALUE;
}
while ((dirent = readdir(dir)) != NULL) {
if (!DOSFS_Match(DOSFS_Hash(dirent->d_name, TRUE)))
continue;
/* FIXME: Ought to fiddle to avoid
returning ./.. in drive root */
namelen = strlen(path) + strlen(dirent->d_name);
foundname = xmalloc(namelen+1);
strcpy(foundname, path);
strcat(foundname, dirent->d_name);
strcpy(lpFindFileData->FileName, DOSFS_GetDosTrueName(foundname, TRUE));
free(foundname);
return dir;
/* FIXME: SetLastError(??) */
HeapFree(SystemHeap, 0, context);
return INVALID_HANDLE_VALUE;
}
lstrcpy32A(context->mask, slash+1);
}
else {
context->path[0] = '\0';
unixpath = ".";
lstrcpy32A(context->mask, lpfilename);
}
context->dir = opendir(unixpath);
if (!context->dir) {
/* FIXME: SetLastError(??) */
HeapFree(SystemHeap, 0, context);
return INVALID_HANDLE_VALUE;
}
strcpy(context->mask, slash+1);
/* uppercase mask in place */
for (p = context->mask ; *p; p++)
*p = toupper(*p);
if (!FindNextFile32A((HANDLE32) context, lpFindFileData))
return (INVALID_HANDLE_VALUE);
return ((HANDLE32) context);
}
/*************************************************************************
* FindClose (KERNEL32.119)
*/
BOOL32 FindClose(HANDLE32 handle)
{
FindFileContext32 *context;
context = (FindFileContext32 *) handle;
if (context->dir)
closedir(context->dir);
HeapFree(SystemHeap, 0, context);
return (TRUE);
}

View File

@ -9,7 +9,6 @@
#include <unistd.h>
#include "windows.h"
#include "winerror.h"
#include "kernel32.h"
#include "handle32.h"
#include "except.h"
#include "task.h"

View File

@ -14,7 +14,6 @@
#include <stdlib.h>
#include "windows.h"
#include "winerror.h"
#include "kernel32.h"
#include "winbase.h"
#include "handle32.h"
#include "stddebug.h"

View File

@ -10,7 +10,6 @@ at a later date. */
#include <stdio.h>
#include "windows.h"
#include "winerror.h"
#include "kernel32.h"
#include "stddebug.h"
#include "debug.h"

View File

@ -9,7 +9,6 @@
#include <unistd.h>
#include "windows.h"
#include "winerror.h"
#include "kernel32.h"
#include "handle32.h"
#include "task.h"
#include "stddebug.h"

View File

@ -10,7 +10,6 @@
#include "windows.h"
#include "winbase.h"
#include "winerror.h"
#include "kernel32.h"
#include "stddebug.h"
#include "debug.h"
#include "xmalloc.h"

Some files were not shown because too many files have changed in this diff Show More