Commit 594997c9 authored by Alexandre Julliard's avatar Alexandre Julliard

Release 950430

Sat Apr 29 20:42:01 1995 Alexandre Julliard (julliard@sunsite.unc.edu) * [controls/static.c] Fixed painting of SS_*FRAME controls. * [if1632/callback.c] Pass the window instance as DS to the 16-bit window procedure. Rewrote Catch() and Throw() to make them work with multiple tasks. * [loader/main.c] New function MAIN_Init() to perform initializations before the first task is started instead of doing them in InitApp(). Temporary hack to command-line parsing to load one program per command-line argument, to make testing task-switching easier. * [loader/*.c] Reimplemented modules to use a Windows-compatible layout and to allow multiple tasks and multiple module instances. Not really finished yet. * [loader/task.c] [misc/exec.c] Reimplemented tasks to use a common address space, and implemented preliminary task-switching capabilities. * [memory/global.c] Fixed bug in GlobalNext(). * [misc/main.c] Updated the list of contributors. Let me know if I forgot someone. * [miscemu/int21.c] Use one DTA per task instead of a global one. * [objects/bitblt.c] Fixed bug in BitBlt() that could cause BadMatch errors. * [tools/build.c] Added new function type 'stub', that makes possible to export an unimplemented function by name as well as by ordinal. This will avoid loading errors for unimplemented functions. Generate an in-memory module layout for built-in DLLs so that the same code can be used for built-in and loaded modules. Changed relay code to make it unnecessary to save the value of the BP register. * [windows/message.c] Implemented multiple message queues and preliminary task-switching capabilities. Inter-task SendMessage() calls are not implemented yet and will probably cause crashes if used. * [windows/property.c] Reimplemented properties and allocate them on the USER heap. * [windows/win.c] Fixed bug in SetWindowWord(). Reimplemented EnumWindows() and EnumTaskWindows(). Tue Apr 18 09:48:38 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de> * [misc/main.c] GetSystemParametersInfo(): Additional action SPI_GETICONTITLEFONT. * [loader/resource.c] Removed the check for NE_SEGFLAGS_EXECUTEONLY, since it broke control.exe. Fixed icon loading. * [objects/font.c] [include/windows.h] Fixed a bug in InitFontsList() and worked on the EnumFonts() functions to make them comprehensible. * [controls/button.c] Fixed my previous patch to handle LBUTTONUP messages. Fri Apr 14 11:41:28 1995 Cameron Heide (heide@ee.ualberta.ca) * [misc/network.c, misc/dos_fs.c] Implemented WNetGetConnection. All that is currently supported are drives, for which the remote name is simply the redirected UNIX directory name. * [miscemu/int2?.c] More drive number validity checking. Wed Apr 12 11:28:37 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de> * [controls/listbox.c] Oops, my previous change to ListBoxDirectory broke the Borland file open dialog. Fixed. Mon Apr 10 23:17:12 1995 Martin von Loewis <loewis@informatik.hu-berlin.de> * [if1632/ole2nls.spec] [misc/ole2nls.c] [misc/Imakefile] New file ole2nls.c. Added stubs for GetUserDefaultLCID, GetSystemDefaultLCID, GetUserDefaultLangID, GetSystemDefaultLangID. Mon Apr 10 10:05:18 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de> * [memory/global.c] [memory/local.c] [include/windows.h] GlobalReAlloc(): If GMEM_MODIFY is set, don't resize the block. LocalReAlloc(): Same for LMEM_MODIFY. * [controls/listbox.c] Fixed a bug in ListBoxDirectory that prevented commdlg from working. Check for errors in some more places. * [if1632/gdi.spec] [if1632/user.spec] 16 bit callback functions should be passed as segptrs. * [include/dlls.h] [loader/ne_image.c] [loader/selector.c] [loader/library.c] Prevent a DLL from being initialized twice (Borlands Resource Workshop used to do this). Provide an additional flag for each w_file that indicates whether it's an EXE or a DLL, for combinations like pbrush.exe/.dll. * [controls/button.c] Handle LBUTTONUP messages even if the button no longer has the capture (for WinHelp). * [include/wintypes.h] FARPROC is now a segptr for the emulator and a function pointer for the library. * [misc/commdlg.c] [misc/commdlg.h] Cleaned the file dialogs up a little. They now work reasonably well, although there are still some problems (e.g. files are initially invisible). * [windows/class.c] [if1632/user.spec] [include/windows.h] GetClassInfo() must take a segptr, as it checks whether the highword is zero. GetClassName() called the wrong atom function. No surprise it didn't find anything. * [misc/lstr.c] AnsiToOem() and OemToAnsi() didn't terminate the strings. Fixed. Removed some warnings. * [if1632/relay.c] [if1632/ddeml.spec] [include/dlls.h] New spec file for the 3.1 DDEML DDL. * [controls/menu.c] Small fix to ChangeMenu - mask out the obsolete flags (MF_APPEND == MF_OWNERDRAW, this led to problems). It also had problems with the MF_BYPOSITION flag. * [windows/message.c] SendMessage(): call the WH_CALLWNDPROC hook function. This is rather ugly, I'm afraid. Windows probably passes a pointer to the 16 bit stack for speed reasons. * [windows/hook.c] [include/windows.h] Set/HookWindowsHook() shouldn't just call their *Ex counterparts, as they have slightly different semantics. MS Hearts now works somewhat, if you disable the new builtin DDEML. The graphics are completely messed up, though.
parent fa68b75b
This is release 950403 of Wine the MS Windows emulator. This is still a
This is release 950430 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.
Patches should be submitted to "wine-new@amscons.com". Please don't forget
to include a ChangeLog entry. I'll make a new release every other Sunday.
WHAT'S NEW with Wine-950403: (see ChangeLog for details)
- Compiled callbacks for better performance.
- Many listbox fixes.
- Many edit control fixes.
- 16-bit entry points for built-in window procedures to make
Borland programs happy.
WHAT'S NEW with Wine-950430: (see ChangeLog for details)
- Preliminary multitasking support.
- Better DOS drives support.
- Stubs for DDEML library.
- Lots of bug fixes.
See the README file in the distribution for installation instructions.
......@@ -19,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/Wine-950403.tar.gz
tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-950403.tar.gz
ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-950403.tar.gz
ftp.funet.fi:/pub/OS/Linux/ALPHA/Wine/Wine-950403.tar.gz
sunsite.unc.edu:/pub/Linux/ALPHA/wine/Wine-950430.tar.gz
tsx-11.mit.edu:/pub/linux/ALPHA/Wine/development/Wine-950430.tar.gz
ftp.infomagic.com:/pub/mirrors/linux/wine/development/Wine-950430.tar.gz
ftp.funet.fi:/pub/OS/Linux/ALPHA/Wine/Wine-950430.tar.gz
It should also be available from any site that mirrors tsx-11 or sunsite.
......@@ -34,13 +32,16 @@ The files NEWBIE-PROJECTS, DEVELOPERS-HINTS and Wine.FAQ are required
reading for new developers.
Wine is available thanks to the work of Bob Amstadt, Dag Asheim,
Martin Ayotte, Erik Bos, John Brezak, Andrew Bulhak, John Burton,
Paul Falstad, Peter Galbavy, Jeffrey Hsu, Miguel de Icaza,
Alexandre Julliard, Jon Konrath, Scott A. Laird, Martin von Loewis,
Kenneth MacDonald, Peter MacDonald, David Metcalfe, Michael Patra,
John Richardson, Johannes Ruscheinski, Yngvi Sigurjonsson,
Rick Sladkey, William Smith, Jon Tombs, Linus Torvalds, Carl Williams,
Karl Guenter Wuensch, and Eric Youngdale.
Martin Ayotte, Ross Biro, Erik Bos, Fons Botman, John Brezak,
Andrew Bulhak, John Burton, Paul Falstad, Olaf Flebbe, Peter Galbavy,
Cameron Heide, Jeffrey Hsu, Miguel de Icaza, Alexandre Julliard,
Jon Konrath, Scott A. Laird, Martin von Loewis, Kenneth MacDonald,
Peter MacDonald, William Magro, David Metcalfe, Michael Patra,
John Richardson, Johannes Ruscheinski, Thomas Sandford,
Constantine Sapuntzakis, Bernd Schmidt, Yngvi Sigurjonsson, Rick Sladkey,
William Smith, Erik Svendsen, Goran Thyni, Jimmy Tirtawangsa, Jon Tombs,
Linus Torvalds, Michael Veksler, Carl Williams, Karl Guenter Wuensch,
Eric Youngdale, and James Youngman.
--
Alexandre Julliard
......
----------------------------------------------------------------------
Sat Apr 29 20:42:01 1995 Alexandre Julliard (julliard@sunsite.unc.edu)
* [controls/static.c]
Fixed painting of SS_*FRAME controls.
* [if1632/callback.c]
Pass the window instance as DS to the 16-bit window procedure.
Rewrote Catch() and Throw() to make them work with multiple tasks.
* [loader/main.c]
New function MAIN_Init() to perform initializations before the
first task is started instead of doing them in InitApp().
Temporary hack to command-line parsing to load one program per
command-line argument, to make testing task-switching easier.
* [loader/*.c]
Reimplemented modules to use a Windows-compatible layout and to
allow multiple tasks and multiple module instances. Not really
finished yet.
* [loader/task.c] [misc/exec.c]
Reimplemented tasks to use a common address space, and implemented
preliminary task-switching capabilities.
* [memory/global.c]
Fixed bug in GlobalNext().
* [misc/main.c]
Updated the list of contributors. Let me know if I forgot someone.
* [miscemu/int21.c]
Use one DTA per task instead of a global one.
* [objects/bitblt.c]
Fixed bug in BitBlt() that could cause BadMatch errors.
* [tools/build.c]
Added new function type 'stub', that makes possible to export an
unimplemented function by name as well as by ordinal. This will
avoid loading errors for unimplemented functions.
Generate an in-memory module layout for built-in DLLs so that the
same code can be used for built-in and loaded modules.
Changed relay code to make it unnecessary to save the value of the
BP register.
* [windows/message.c]
Implemented multiple message queues and preliminary task-switching
capabilities. Inter-task SendMessage() calls are not implemented
yet and will probably cause crashes if used.
* [windows/property.c]
Reimplemented properties and allocate them on the USER heap.
* [windows/win.c]
Fixed bug in SetWindowWord().
Reimplemented EnumWindows() and EnumTaskWindows().
Tue Apr 18 09:48:38 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [misc/main.c]
GetSystemParametersInfo(): Additional action SPI_GETICONTITLEFONT.
* [loader/resource.c]
Removed the check for NE_SEGFLAGS_EXECUTEONLY, since it broke
control.exe.
Fixed icon loading.
* [objects/font.c] [include/windows.h]
Fixed a bug in InitFontsList() and worked on the EnumFonts()
functions to make them comprehensible.
* [controls/button.c]
Fixed my previous patch to handle LBUTTONUP messages.
Fri Apr 14 11:41:28 1995 Cameron Heide (heide@ee.ualberta.ca)
* [misc/network.c, misc/dos_fs.c]
Implemented WNetGetConnection. All that is currently
supported are drives, for which the remote name is simply
the redirected UNIX directory name.
* [miscemu/int2?.c]
More drive number validity checking.
Wed Apr 12 11:28:37 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [controls/listbox.c]
Oops, my previous change to ListBoxDirectory broke the Borland
file open dialog. Fixed.
Mon Apr 10 23:17:12 1995 Martin von Loewis <loewis@informatik.hu-berlin.de>
* [if1632/ole2nls.spec] [misc/ole2nls.c] [misc/Imakefile]
New file ole2nls.c. Added stubs for GetUserDefaultLCID,
GetSystemDefaultLCID, GetUserDefaultLangID, GetSystemDefaultLangID.
Mon Apr 10 10:05:18 1995 Bernd Schmidt <crux@pool.informatik.rwth-aachen.de>
* [memory/global.c] [memory/local.c] [include/windows.h]
GlobalReAlloc(): If GMEM_MODIFY is set, don't resize the block.
LocalReAlloc(): Same for LMEM_MODIFY.
* [controls/listbox.c]
Fixed a bug in ListBoxDirectory that prevented commdlg from working.
Check for errors in some more places.
* [if1632/gdi.spec] [if1632/user.spec]
16 bit callback functions should be passed as segptrs.
* [include/dlls.h] [loader/ne_image.c] [loader/selector.c]
[loader/library.c]
Prevent a DLL from being initialized twice (Borlands Resource
Workshop used to do this).
Provide an additional flag for each w_file that indicates whether
it's an EXE or a DLL, for combinations like pbrush.exe/.dll.
* [controls/button.c]
Handle LBUTTONUP messages even if the button no longer has the
capture (for WinHelp).
* [include/wintypes.h]
FARPROC is now a segptr for the emulator and a function
pointer for the library.
* [misc/commdlg.c] [misc/commdlg.h]
Cleaned the file dialogs up a little. They now work reasonably well,
although there are still some problems (e.g. files are initially
invisible).
* [windows/class.c] [if1632/user.spec] [include/windows.h]
GetClassInfo() must take a segptr, as it checks whether the
highword is zero.
GetClassName() called the wrong atom function. No surprise it didn't
find anything.
* [misc/lstr.c]
AnsiToOem() and OemToAnsi() didn't terminate the strings. Fixed.
Removed some warnings.
* [if1632/relay.c] [if1632/ddeml.spec] [include/dlls.h]
New spec file for the 3.1 DDEML DDL.
* [controls/menu.c]
Small fix to ChangeMenu - mask out the obsolete flags
(MF_APPEND == MF_OWNERDRAW, this led to problems). It also had
problems with the MF_BYPOSITION flag.
* [windows/message.c]
SendMessage(): call the WH_CALLWNDPROC hook function. This is rather
ugly, I'm afraid. Windows probably passes a pointer to the 16 bit
stack for speed reasons.
* [windows/hook.c] [include/windows.h]
Set/HookWindowsHook() shouldn't just call their *Ex counterparts, as
they have slightly different semantics.
MS Hearts now works somewhat, if you disable the new builtin DDEML.
The graphics are completely messed up, though.
----------------------------------------------------------------------
Sun Apr 2 18:31:12 1995 Alexandre Julliard (julliard@sunsite.unc.edu)
* [Configure] [if1632/Imakefile]
......
......@@ -14,7 +14,8 @@ static char Copyright3[] = "Copyright Alexandre Julliard, 1994";
#include "syscolor.h"
#include "graphics.h"
#include "button.h"
#include "stddebug.h"
#include "debug.h"
extern void DEFWND_SetText( HWND hwnd, LPSTR text ); /* windows/defwnd.c */
static void PB_Paint( HWND hWnd, HDC hDC, WORD action );
......@@ -138,8 +139,8 @@ LONG ButtonWndProc(HWND hWnd, WORD uMsg, WORD wParam, LONG lParam)
break;
case WM_LBUTTONUP:
if (GetCapture() != hWnd) break;
ReleaseCapture();
ReleaseCapture();
if (!(infoPtr->state & BUTTON_HIGHLIGHTED)) break;
SendMessage( hWnd, BM_SETSTATE, FALSE, 0 );
GetClientRect( hWnd, &rect );
if (PtInRect( &rect, MAKEPOINT(lParam) ))
......
......@@ -16,6 +16,7 @@ static char Copyright[] = "Copyright Alexandre Julliard, 1994";
#include "dos_fs.h"
#include "graphics.h"
/***********************************************************************
* DESKTOP_LoadBitmap
*
......@@ -113,6 +114,31 @@ static LONG DESKTOP_DoEraseBkgnd( HWND hwnd, HDC hdc, DESKTOPINFO *infoPtr )
/***********************************************************************
* DESKTOP_Init
*
* Initialize the desktop window private information.
*/
BOOL DESKTOP_Init()
{
HWND hwnd = GetDesktopWindow();
WND *wndPtr = WIN_FindWndPtr( hwnd );
DESKTOPINFO *infoPtr = (DESKTOPINFO *)wndPtr->wExtra;
infoPtr->hbrushPattern = 0;
infoPtr->hbitmapWallPaper = 0;
SetDeskPattern();
SetDeskWallPaper( (LPSTR)-1 );
if (rootWindow != DefaultRootWindow(display))
{
HDC hdc = GetDC( hwnd );
DESKTOP_DoEraseBkgnd( hwnd, hdc, infoPtr );
ReleaseDC( hwnd, hdc );
}
return TRUE;
}
/***********************************************************************
* DesktopWndProc
*
* Window procedure for the desktop window.
......
......@@ -65,9 +65,11 @@ void ListBoxSendNotification(HWND hwnd, WORD code);
#define LIST_HEAP_ADDR(lphl,handle) \
((void *)((handle) ? ((handle) | ((int)lphl->Heap & 0xffff0000)) : 0))
#else
/* FIXME: shouldn't each listbox have its own heap? */
#define LIST_HEAP_ALLOC(lphl,f,size) USER_HEAP_ALLOC(size)
#define LIST_HEAP_FREE(lphl,handle) USER_HEAP_FREE(handle)
#define LIST_HEAP_ADDR(lphl,handle) USER_HEAP_LIN_ADDR(handle)
#define LIST_HEAP_SEG_ADDR(lphl,handle) USER_HEAP_SEG_ADDR(handle)
#endif
#define LIST_HEAP_SIZE 0x10000
......@@ -440,7 +442,7 @@ LONG LBLButtonUp( HWND hwnd, WORD message, WORD wParam, LONG lParam )
LPHEADLIST lphl;
WND *wndPtr;
ReleaseCapture();
if (GetCapture() == hwnd) ReleaseCapture();
lphl = ListBoxGetWindowAndStorage(hwnd, &wndPtr);
if (lphl == NULL) return 0;
......@@ -1214,7 +1216,6 @@ LONG ListBoxWndProc( HWND hwnd, WORD message, WORD wParam, LONG lParam )
}
idx++;
}
return DefWindowProc (hwnd, message, wParam, lParam);
}
......@@ -1280,15 +1281,14 @@ void ListBoxDrawItem (HWND hwnd, HDC hdc, LPLISTSTRUCT lpls,
dis->CtlID = ParentWndPtr->wIDmenu;
}
if (HasStrings(wndPtr)) dis->itemData = (DWORD)lpls->itemText;
if (HasStrings(wndPtr)) dis->itemData = LIST_HEAP_SEG_ADDR(lpls,lpls->hData);
dis->itemAction = itemAction;
dis->itemState = itemState;
SendMessage(lphl->hWndLogicParent, WM_DRAWITEM,
0, (LPARAM)USER_HEAP_SEG_ADDR(lphl->hDrawItemStruct));
}
else {
} else {
if (itemAction == ODA_DRAWENTIRE ||
itemAction == ODA_SELECT) {
......@@ -1476,7 +1476,7 @@ void ListBoxAskMeasure(WND *wndPtr, LPHEADLIST lphl, LPLISTSTRUCT lpls)
lpmeasure->itemHeight = 0;
if (HasStrings(wndPtr))
lpmeasure->itemData = (DWORD)lpls->itemText;
lpmeasure->itemData = LIST_HEAP_SEG_ADDR(lpls,lpls->hData);
else
lpmeasure->itemData = lpls->dis.itemData;
......@@ -1563,8 +1563,7 @@ int ListBoxInsertString(HWND hwnd, UINT uIndex, LPSTR newstr)
newstr = str;
lplsnew->itemText = str;
dprintf_listbox(stddeb,"ListBoxInsertString // LBS_HASSTRINGS after strcpy '%s'\n", str);
}
else {
} else {
lplsnew->itemText = NULL;
lplsnew->dis.itemData = (DWORD)newstr;
}
......@@ -1614,7 +1613,7 @@ int ListBoxGetText(HWND hwnd, UINT uIndex, LPSTR OutStr, BOOL bItemData)
if (!bItemData) *OutStr=0;
if ((lpls = ListBoxGetItem (hwnd, uIndex)) == NULL)
return 0;
return LB_ERR;
if (bItemData)
return lpls->dis.itemData;
......@@ -1634,7 +1633,7 @@ int ListBoxSetItemData(HWND hwnd, UINT uIndex, DWORD ItemData)
LPLISTSTRUCT lpls;
if ((lpls = ListBoxGetItem(hwnd, uIndex)) == NULL)
return 0;
return LB_ERR;
lpls->dis.itemData = ItemData;
return 1;
......@@ -1807,12 +1806,14 @@ int ListBoxSetCurSel(HWND hwnd, WORD wIndex)
if (lphl->ItemFocused != -1) {
lpls = ListBoxGetItem(hwnd, lphl->ItemFocused);
if (lpls == 0) return LB_ERR;
lpls->dis.itemState = 0;
}
if (wIndex != (UINT)-1) {
lphl->ItemFocused = wIndex;
lpls = ListBoxGetItem(hwnd, wIndex);
if (lpls == 0) return LB_ERR;
lpls->dis.itemState = ODS_SELECTED | ODS_FOCUS;
return 0;
......@@ -1867,10 +1868,11 @@ int ListBoxDirectory(HWND hwnd, UINT attrib, LPSTR filespec)
{
struct dosdirent *dp, *dp_old;
int x, wRet = LB_OKAY;
BOOL OldFlag;
BOOL OldFlag;
char temp[256];
LPHEADLIST lphl;
int drive;
int drive;
LPSTR tstr;
dprintf_listbox(stddeb,"ListBoxDirectory: %s, %4x\n",filespec,attrib);
......@@ -1880,19 +1882,15 @@ int ListBoxDirectory(HWND hwnd, UINT attrib, LPSTR filespec)
drive = toupper(filespec[0]) - 'A';
filespec += 2;
}
if( !strchr( filespec, '\\' ) )
strcpy(temp,filespec);
tstr = strrchr(temp, '\\');
if( tstr == NULL )
DOS_SetDefaultDrive( drive );
else {
int i;
strcpy( temp, filespec );
for( i=0; i<strlen(temp); i++ )
if( temp[i] == '\\' ) {
temp[i] = 0;
filespec += ( i+1 );
break;
}
*tstr = 0;
filespec = tstr + 1;
DOS_ChangeDir( drive, temp );
DOS_SetDefaultDrive( drive );
if (!DOS_ChangeDir( drive, temp )) return 0;
}
dprintf_listbox(stddeb,"Changing directory to %c:%s, filemask is %s\n",
drive+'A', temp, filespec );
......@@ -1908,15 +1906,14 @@ int ListBoxDirectory(HWND hwnd, UINT attrib, LPSTR filespec)
dprintf_listbox( stddeb, "ListBoxDirectory %p '%s' !\n", dp->filename,
dp->filename);
if (dp->attribute & FA_DIREC) {
if (attrib & DDL_DIRECTORY &&
strcmp(dp->filename, ".")) {
if (attrib & DDL_DIRECTORY && strcmp(dp->filename, ".") != 0) {
sprintf(temp, "[%s]", dp->filename);
if ( (wRet = ListBoxAddString(hwnd, temp)) == LB_ERR) break;
}
}
else {
if (attrib & DDL_EXCLUSIVE) {
if (attrib & (DDL_READWRITE | DDL_READONLY | DDL_HIDDEN |
if (attrib & (DDL_READWRITE | DDL_READONLY | DDL_HIDDEN |
DDL_SYSTEM) )
if ( (wRet = ListBoxAddString(hwnd, dp->filename))
== LB_ERR) break;
......
......@@ -738,8 +738,8 @@ static void MENU_SelectItem( HMENU hmenu, WORD wIndex )
items[lppop->FocusedItem].item_flags |= MF_HILITE;
MENU_DrawMenuItem( lppop->hWnd, hdc, &items[lppop->FocusedItem], lppop->Height,
!(lppop->wFlags & MF_POPUP) );
SendMessage(lppop->hWnd, WM_MENUSELECT,
items[lppop->FocusedItem].item_id,
dprintf_menu(stddeb,"Sending WM_MENUSELECT %04x %04x\n", items[lppop->FocusedItem].item_id,items[lppop->FocusedItem].item_flags);
SendMessage(lppop->hWnd, WM_MENUSELECT, items[lppop->FocusedItem].item_id,
MAKELONG( hmenu, items[lppop->FocusedItem].item_flags));
}
}
......@@ -1494,18 +1494,24 @@ WORD MENU_GetMenuBarHeight( HWND hwnd, WORD menubarWidth, int orgX, int orgY )
BOOL ChangeMenu(HMENU hMenu, WORD nPos, LPSTR lpNewItem,
WORD wItemID, WORD wFlags)
{
dprintf_menu(stddeb,"ChangeMenu(%04X, %X, '%s', %X, %X)\n",
hMenu, nPos, lpNewItem, wItemID, wFlags);
if (wFlags & MF_APPEND)
return AppendMenu(hMenu, wFlags, wItemID, lpNewItem);
if (wFlags & MF_DELETE)
return DeleteMenu(hMenu, wItemID, wFlags);
if (wFlags & MF_CHANGE)
return ModifyMenu(hMenu, nPos, wFlags, wItemID, lpNewItem);
if (wFlags & MF_REMOVE)
return RemoveMenu(hMenu, wItemID, wFlags);
/* Default: MF_INSERT */
return InsertMenu(hMenu, nPos, wFlags, wItemID, lpNewItem);
dprintf_menu(stddeb,"ChangeMenu(%04X, %X, '%s', %X, %X)\n",
hMenu, nPos, lpNewItem, wItemID, wFlags);
if (wFlags & MF_APPEND) {
return AppendMenu(hMenu, wFlags & ~MF_APPEND, wItemID, lpNewItem);
}
if (wFlags & MF_DELETE) {
return DeleteMenu(hMenu, wFlags & MF_BYPOSITION ? nPos : wItemID,
wFlags & ~MF_DELETE);
}
if (wFlags & MF_CHANGE) {
return ModifyMenu(hMenu, nPos, wFlags & ~MF_CHANGE, wItemID, lpNewItem);
}
if (wFlags & MF_REMOVE) {
return RemoveMenu(hMenu, wFlags & MF_BYPOSITION ? nPos : wItemID,
wFlags & ~MF_REMOVE);
}
/* Default: MF_INSERT */
return InsertMenu(hMenu, nPos, wFlags, wItemID, lpNewItem);
}
......@@ -2075,6 +2081,34 @@ HMENU LookupMenuHandle( HMENU hmenu, INT id )
/**********************************************************************
* LoadMenu (USER.150)
*/
HMENU LoadMenu( HINSTANCE instance, SEGPTR name )
{
HRSRC hRsrc;
HGLOBAL handle;
HMENU hMenu;
if (HIWORD(name))
{
char *str = (char *)PTR_SEG_TO_LIN( name );
dprintf_menu( stddeb, "LoadMenu(%04x,'%s')\n", instance, str );
if (str[0] == '#') name = (SEGPTR)atoi( str + 1 );
}
else
dprintf_resource(stddeb,"LoadMenu(%04x,%04x)\n",instance,LOWORD(name));
if (!name) return 0;
if (!(hRsrc = FindResource( instance, name, RT_MENU ))) return 0;
if (!(handle = LoadResource( instance, hRsrc ))) return 0;
hMenu = LoadMenuIndirect( LockResource(handle) );
FreeResource( handle );
return hMenu;
}
/**********************************************************************
* LoadMenuIndirect [USER.220]
*/
HMENU LoadMenuIndirect(LPSTR menu_template)
......
......@@ -99,6 +99,7 @@ static SCROLLINFO *SCROLL_GetScrollInfo( HWND hwnd, int nBar )
HANDLE handle;
WND *wndPtr = WIN_FindWndPtr( hwnd );
if (!wndPtr) return NULL;
switch(nBar)
{
case SB_HORZ: handle = wndPtr->hHScroll; break;
......@@ -588,7 +589,8 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
if (hittest == trackHitTest)
{
SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY, NULL );
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,
(FARPROC)0 );
if ((msg == WM_LBUTTONDOWN) || (msg == WM_SYSTIMER))
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
SB_LINEUP, MAKELONG( 0, hwndCtl ));
......@@ -603,7 +605,8 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
if (hittest == trackHitTest)
{
SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY, NULL );
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,
(FARPROC)0 );
if ((msg == WM_LBUTTONDOWN) || (msg == WM_SYSTIMER))
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
SB_PAGEUP, MAKELONG( 0, hwndCtl ));
......@@ -646,7 +649,8 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
if (hittest == trackHitTest)
{
SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY, NULL );
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,
(FARPROC)0 );
if ((msg == WM_LBUTTONDOWN) || (msg == WM_SYSTIMER))
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
SB_PAGEDOWN, MAKELONG( 0, hwndCtl ));
......@@ -660,7 +664,8 @@ void SCROLL_HandleScrollEvent( HWND hwnd, int nBar, WORD msg, POINT pt )
if (hittest == trackHitTest)
{
SetSystemTimer( hwnd, SCROLL_TIMER, (msg == WM_LBUTTONDOWN) ?
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY, NULL );
SCROLL_FIRST_DELAY : SCROLL_REPEAT_DELAY,
(FARPROC)0 );
if ((msg == WM_LBUTTONDOWN) || (msg == WM_SYSTIMER))
SendMessage( hwndOwner, vertical ? WM_VSCROLL : WM_HSCROLL,
SB_LINEDOWN, MAKELONG( 0, hwndCtl ));
......
......@@ -17,7 +17,6 @@ extern void DEFWND_SetText( HWND hwnd, LPSTR text ); /* windows/defwnd.c */
static void PaintTextfn( HWND hwnd, HDC hdc );
static void PaintRectfn( HWND hwnd, HDC hdc );
static void PaintFramefn( HWND hwnd, HDC hdc );
static void PaintIconfn( HWND hwnd, HDC hdc );
......@@ -37,9 +36,9 @@ static pfPaint staticPaintFunc[LAST_STATIC_TYPE+1] =
PaintRectfn, /* SS_BLACKRECT */
PaintRectfn, /* SS_GRAYRECT */
PaintRectfn, /* SS_WHITERECT */
PaintFramefn, /* SS_BLACKFRAME */
PaintFramefn, /* SS_GRAYFRAME */
PaintFramefn, /* SS_WHITEFRAME */
PaintRectfn, /* SS_BLACKFRAME */
PaintRectfn, /* SS_GRAYFRAME */
PaintRectfn, /* SS_WHITEFRAME */
NULL, /* Not defined */
PaintTextfn, /* SS_SIMPLE */
PaintTextfn /* SS_LEFTNOWORDWRAP */
......@@ -241,63 +240,36 @@ static void PaintRectfn( HWND hwnd, HDC hdc )
GetClientRect(hwnd, &rc);
switch (wndPtr->dwStyle & 0x0000000F)
switch (wndPtr->dwStyle & 0x0f)
{
case SS_BLACKRECT:
hBrush = CreateSolidBrush(color_windowframe);
FillRect( hdc, &rc, hBrush );
break;
case SS_GRAYRECT:
hBrush = CreateSolidBrush(color_background);
FillRect( hdc, &rc, hBrush );
break;
case SS_WHITERECT:
hBrush = CreateSolidBrush(color_window);
FillRect( hdc, &rc, hBrush );
break;
default:
return;
}
FillRect( hdc, &rc, hBrush );
}
static void PaintFramefn( HWND hwnd, HDC hdc )
{
RECT rc;
HPEN hOldPen, hPen;
HBRUSH hOldBrush, hBrush;
WND *wndPtr = WIN_FindWndPtr(hwnd);
GetClientRect(hwnd, &rc);
switch (wndPtr->dwStyle & 0x0000000F)
{
case SS_BLACKFRAME:
hPen = CreatePen(PS_SOLID, 1, color_windowframe);
hBrush = CreateSolidBrush(color_windowframe);
FrameRect( hdc, &rc, hBrush );
break;
case SS_GRAYFRAME:
hPen = CreatePen(PS_SOLID, 1, color_background);
hBrush = CreateSolidBrush(color_background);
FrameRect( hdc, &rc, hBrush );
break;
case SS_WHITEFRAME:
hPen = CreatePen(PS_SOLID, 1, color_window);
hBrush = CreateSolidBrush(color_window);
FrameRect( hdc, &rc, hBrush );
break;
default:
return;
}
hBrush = CreateSolidBrush(color_window);
hOldPen = (HPEN)SelectObject(hdc, (HANDLE)hPen);
hOldBrush = (HBRUSH)SelectObject(hdc, (HANDLE)hBrush);
Rectangle(hdc, rc.left, rc.top, rc.right, rc.bottom);
SelectObject(hdc, (HANDLE)hOldPen);
SelectObject(hdc, (HANDLE)hOldBrush);
DeleteObject((HANDLE)hPen);
DeleteObject((HANDLE)hBrush);
DeleteObject( hBrush );
}
......
......@@ -154,6 +154,7 @@ load_entrypoints(){
int j, ordinal, len;
unsigned int address;
#if 0
struct w_files * wpnt;
for(wpnt = wine_files; wpnt; wpnt = wpnt->next){
cpnt = wpnt->ne->nrname_table;
......@@ -174,4 +175,5 @@ load_entrypoints(){
};
};
return;
#endif
}
......@@ -288,12 +288,8 @@ void dbg_bt(){
if (frame->u.win16.saved_bp & 1) cs = frame->u.win16.saved_cs;
fprintf(stderr,"%d %4.4x:%4.4x\n", frameno++, cs,
frame->u.win16.saved_ip);
if (!frame->u.win16.saved_bp) break;
frame = (struct frame *) PTR_SEG_OFF_TO_LIN( SC_SS, frame->u.win16.saved_bp & ~1);
if ((cs & 7) != 7) /* switching to 32-bit mode */
{
extern int IF1632_Saved32_ebp;
frame = (struct frame *)IF1632_Saved32_ebp;
}
}
}
putchar('\n');
......
......@@ -17,6 +17,7 @@ CALLOBJS = \
DLLS = \
commdlg \
compobj \
ddeml \
gdi \
kernel \
keyboard \
......@@ -41,7 +42,7 @@ DLLS = \
winsock
#endif
OBJS = $(DLLS:%=dll_%.o) $(CALLOBJS) $(SRCS:.c=.o) $(DLLS:%=tab_%.o)
OBJS = $(SRCS:.c=.o) $(CALLOBJS) $(DLLS:%=dll_%.o) $(DLLS:%=tab_%.o)
BUILD = $(TOP)/tools/build
......@@ -54,6 +55,7 @@ Concat(dll_,name.S) Concat(tab_,name.c): name.spec $(BUILD) @@\
*/
MakeDllFromSpec(commdlg)
MakeDllFromSpec(compobj)
MakeDllFromSpec(ddeml)
MakeDllFromSpec(gdi)
MakeDllFromSpec(kernel)
MakeDllFromSpec(keyboard)
......
......@@ -6,169 +6,78 @@ static char Copyright[] = "Copyright Robert J. Amstadt, 1993";
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <setjmp.h>
#include "windows.h"
#include "callback.h"
#include "wine.h"
#include "global.h"
#include "stackframe.h"
#include "dlls.h"
#include "win.h"
#include "stddebug.h"
#include "debug.h"
#include "if1632.h"
extern unsigned long IF1632_Saved32_ebp;
extern unsigned long IF1632_Saved32_esp;
static WORD ThunkSelector = 0;
struct thunk_s
{
int used;
unsigned char thunk[8];
};
/**********************************************************************
* MakeProcInstance
* CallWindowProc (USER.122)
*/
FARPROC MakeProcInstance( FARPROC func, WORD instance )
LONG CallWindowProc( WNDPROC func, HWND hwnd, WORD message,
WORD wParam, LONG lParam )
{
char *thunks;
struct thunk_s *tp;
int i;
if (!ThunkSelector)
{
HGLOBAL handle = GLOBAL_Alloc( GMEM_ZEROINIT, 0x10000, 0, TRUE, FALSE);
ThunkSelector = GlobalHandleToSel(handle);
}
thunks = (char *)PTR_SEG_OFF_TO_LIN( ThunkSelector, 0 );
tp = (struct thunk_s *) thunks;
for (i = 0; i < 0x10000 / sizeof(*tp); i++, tp++)
if (!tp->used)
break;
if (tp->used) return (FARPROC)0;
tp->thunk[0] = 0xb8; /* movw instance, %ax */
tp->thunk[1] = (unsigned char) instance;
tp->thunk[2] = (unsigned char) (instance >> 8);
tp->thunk[3] = 0xea; /* ljmp func */
*(LONG *)&tp->thunk[4] = (LONG)func;
tp->used = 1;
return (FARPROC)MAKELONG( (char *)tp->thunk - thunks, ThunkSelector );
}
WND *wndPtr = WIN_FindWndPtr( hwnd );
/**********************************************************************
* FreeProcInstance (KERNEL.52)
*/
void FreeProcInstance(FARPROC func)
{
struct thunk_s *tp;
int i;
tp = (struct thunk_s *) PTR_SEG_OFF_TO_LIN( ThunkSelector, 0 );
for (i = 0; i < 0x10000 / sizeof(*tp); i++, tp++)
{
if ((void *) tp->thunk == (void *) func)
{
tp->used = 0;
break;
}
}
if (!wndPtr) return 0;
SpyMessage(hwnd, message, wParam, lParam);
return CallWndProc( (FARPROC)func, wndPtr->hInstance,
hwnd, message, wParam, lParam );
}
/**********************************************************************
* GetCodeHandle (KERNEL.93)
* Catch (KERNEL.55)
*/
HANDLE GetCodeHandle( FARPROC proc )
int Catch( LPCATCHBUF lpbuf )
{
struct thunk_s *tp = (struct thunk_s *)proc;
/* Return the code segment containing 'proc'. */
/* Not sure if this is really correct (shouldn't matter that much). */
printf( "STUB: GetCodeHandle(%p) returning %x\n",
proc, tp->thunk[8] + (tp->thunk[9] << 8) );
return tp->thunk[8] + (tp->thunk[9] << 8);
STACK16FRAME *pFrame = CURRENT_STACK16;
dprintf_catch( stddeb, "Catch: buf=%p ss:sp=%04x:%04x\n",
lpbuf, IF1632_Saved16_ss, IF1632_Saved16_sp );
/* Note: we don't save the current ss, as the catch buffer is */
/* only 9 words long. Hopefully no one will have the silly */
/* idea to change the current stack before calling Throw()... */
lpbuf[0] = IF1632_Saved16_sp;
lpbuf[1] = LOWORD(IF1632_Saved32_esp);
lpbuf[2] = HIWORD(IF1632_Saved32_esp);
lpbuf[3] = pFrame->saved_ss;
lpbuf[4] = pFrame->saved_sp;
lpbuf[5] = pFrame->ds;
lpbuf[6] = pFrame->bp;
lpbuf[7] = pFrame->ip;
lpbuf[8] = pFrame->cs;
return 0;
}
/**********************************************************************
* CallWindowProc (USER.122)
* Throw (KERNEL.56)
*/
LONG CallWindowProc( WNDPROC func, HWND hwnd, WORD message,
WORD wParam, LONG lParam )
int Throw( LPCATCHBUF lpbuf, int retval )
{
SpyMessage(hwnd, message, wParam, lParam);
return CallWndProc( (FARPROC)func, hwnd, message, wParam, lParam );
STACK16FRAME *pFrame;
dprintf_catch( stddeb, "Throw: buf=%p val=%04x ss:sp=%04x:%04x\n",
lpbuf, retval, IF1632_Saved16_ss, IF1632_Saved16_sp );
IF1632_Saved16_sp = lpbuf[0] - sizeof(WORD);
IF1632_Saved32_esp = MAKELONG( lpbuf[1], lpbuf[2] );
pFrame = CURRENT_STACK16;
pFrame->saved_ss = lpbuf[3];
pFrame->saved_sp = lpbuf[4];
pFrame->ds = lpbuf[5];
pFrame->bp = lpbuf[6];
pFrame->ip = lpbuf[7];
pFrame->cs = lpbuf[8];
return retval;
}
/* ------------------------------------------------------------------------ */
/*
* The following functions realize the Catch/Throw functionality.
* My thought is to use the setjmp, longjmp combination to do the
* major part of this one. All I have to remember, in addition to
* whatever the jmp_buf contains, is the contents of the 16-bit
* sp, bp and ss. I do this by storing them in the structure passed
* to me by the 16-bit program (including my own jmp_buf...).
* Hopefully there isn't any program that modifies the contents!
* Bad thing: I have to save part of the stack, since this will
* get reused on the next call after my return, leaving it in an
* undefined state.
*/
#define STACK_DEPTH_16 28
struct special_buffer {
jmp_buf buffer;
long regs [5];
char stack_part [STACK_DEPTH_16];
} *sb;
int Catch (LPCATCHBUF cbuf)
{
WORD retval;
jmp_buf *tmp_jmp;
sb = malloc (sizeof (struct special_buffer));
sb -> regs [0] = IF1632_Saved16_sp & 0xffff;
sb -> regs [1] = IF1632_Saved16_bp & 0xffff;
sb -> regs [2] = IF1632_Saved16_ss & 0xffff;
sb -> regs [3] = IF1632_Saved32_esp;
sb -> regs [4] = IF1632_Saved32_ebp;
memcpy (sb -> stack_part, CURRENT_STACK16, STACK_DEPTH_16);
tmp_jmp = &sb -> buffer;
*((struct special_buffer **)cbuf) = sb;
if ((retval = setjmp (*tmp_jmp)))
{
IF1632_Saved16_sp = sb -> regs [0] & 0xffff;
IF1632_Saved16_bp = sb -> regs [1] & 0xffff;
IF1632_Saved16_ss = sb -> regs [2] & 0xffff;
IF1632_Saved32_esp = sb -> regs [3];
IF1632_Saved32_ebp = sb -> regs [4];
memcpy (CURRENT_STACK16, sb -> stack_part, STACK_DEPTH_16);
dprintf_catch (stddeb, "Been thrown here: %d, retval = %d\n",
(int) sb, (int) retval);
free ((void *) sb);
return (retval);
} else {
dprintf_catch (stddeb, "Will somtime get thrown here: %d\n",
(int) sb);
return (retval);
}
}
void Throw (LPCATCHBUF cbuf, int val)
{
sb = *((struct special_buffer **)cbuf);
dprintf_catch (stddeb, "Throwing to: %d\n", (int) sb);
longjmp (sb -> buffer, val);
}
#endif /* !WINELIB */
# $Id: commdlg.spec,v 1.3 1994/20/08 04:04:21 root Exp root $
#
name commdlg
id 14
length 31
1 pascal GETOPENFILENAME(ptr) GetOpenFileName
2 pascal GETSAVEFILENAME(ptr) GetSaveFileName
......
name compobj
id 22
length 163
#1 COBUILDVERSION
#2 COINITIALIZE
#3 COUNINITIALIZE
#4 COGETMALLOC
#5 COREGISTERCLASSOBJECT
#6 COREVOKECLASSOBJECT
#7 COGETCLASSOBJECT
#8 COMARSHALINTERFACE
#9 COUNMARSHALINTERFACE
#10 COLOADLIBRARY
#11 COFREELIBRARY
#12 COFREEALLLIBRARIES
#13 COCREATEINSTANCE
#14 STRINGFROMIID
1 stub COBUILDVERSION
2 stub COINITIALIZE
3 stub COUNINITIALIZE
4 stub COGETMALLOC
5 stub COREGISTERCLASSOBJECT
6 stub COREVOKECLASSOBJECT
7 stub COGETCLASSOBJECT
8 stub COMARSHALINTERFACE
9 stub COUNMARSHALINTERFACE
10 stub COLOADLIBRARY
11 stub COFREELIBRARY
12 stub COFREEALLLIBRARIES
13 stub COCREATEINSTANCE
14 stub STRINGFROMIID
15 pascal CoDisconnectObject(ptr long) CoDisconnectObject
#16 CORELEASEMARSHALDATA
#17 COFREEUNUSEDLIBRARIES
#18 ISEQUALGUID
#19 STRINGFROMCLSID
#20 CLSIDFROMSTRING
#21 ISVALIDPTRIN
#22 ISVALIDPTROUT
#23 ISVALIDINTERFACE
#24 ISVALIDIID
#25 RESULTFROMSCODE
#26 GETSCODE
#27 COREGISTERMESSAGEFILTER
#28 COISHANDLERCONNECTED
16 stub CORELEASEMARSHALDATA
17 stub COFREEUNUSEDLIBRARIES
18 stub ISEQUALGUID
19 stub STRINGFROMCLSID
20 stub CLSIDFROMSTRING
21 stub ISVALIDPTRIN
22 stub ISVALIDPTROUT
23 stub ISVALIDINTERFACE
24 stub ISVALIDIID
25 stub RESULTFROMSCODE
26 stub GETSCODE
27 stub COREGISTERMESSAGEFILTER
28 stub COISHANDLERCONNECTED
#29 WEP
#30 COFILETIMETODOSDATETIME
#31 CODOSDATETIMETOFILETIME
#32 COMARSHALHRESULT
#33 COUNMARSHALHRESULT
#34 COGETCURRENTPROCESS
30 stub COFILETIMETODOSDATETIME
31 stub CODOSDATETIMETOFILETIME
32 stub COMARSHALHRESULT
33 stub COUNMARSHALHRESULT
34 stub COGETCURRENTPROCESS
#35 ___EXPORTEDSTUB
#36 COISOLE1CLASS
#37 _GUID_NULL
#38 _IID_IUNKNOWN
#39 _IID_ICLASSFACTORY
#40 _IID_IMALLOC
#41 _IID_IMARSHAL
#42 _IID_IRPCCHANNEL
#43 _IID_IRPCSTUB
#44 _IID_ISTUBMANAGER
#45 _IID_IRPCPROXY
#46 _IID_IPROXYMANAGER
#47 _IID_IPSFACTORY
#48 _IID_ILOCKBYTES
#49 _IID_ISTORAGE
#50 _IID_ISTREAM
#51 _IID_IENUMSTATSTG
#52 _IID_IBINDCTX
#53 _IID_IMONIKER
#54 _IID_IRUNNINGOBJECTTABLE
#55 _IID_IINTERNALMONIKER
#56 _IID_IROOTSTORAGE
#57 _IID_IDFRESERVED1
#58 _IID_IDFRESERVED2
#59 _IID_IDFRESERVED3
#60 _IID_IMESSAGEFILTER
#61 CLSIDFROMPROGID
#62 PROGIDFROMCLSID
#63 COLOCKOBJECTEXTERNAL
#64 _CLSID_STDMARSHAL
#65 COGETTREATASCLASS
#66 COTREATASCLASS
#67 COGETSTANDARDMARSHAL
#68 PROPAGATERESULT
#69 IIDFROMSTRING
#70 _IID_ISTDMARSHALINFO
#71 COCREATESTANDARDMALLOC
#72 _IID_IEXTERNALCONNECTION
#73 COCREATEGUID
#75 FNASSERT
#76 STRINGFROMGUID2
#77 COGETCLASSEXT
#78 OLE1CLASSFROMCLSID2
#79 CLSIDFROMOLE1CLASS
#80 COOPENCLASSKEY
#81 GUIDFROMSTRING
#82 COFILETIMENOW
#83 REMALLOCOID
#84 REMFREEOID
#85 REMCREATEREMOTEHANDLER
#86 REMCONNECTTOOBJECT
#87 REMGETINFOFORCID
#88 LRPCCALL
#89 LRPCDISPATCH
#90 LRPCREGISTERMONITOR
#91 LRPCREVOKEMONITOR
#92 LRPCGETTHREADWINDOW
#93 TIMERCALLBACKPROC
#94 LOOKUPETASK
#95 SETETASK
#96 LRPCFREEMONITORDATA
#97 REMLOOKUPSHUNK
36 stub COISOLE1CLASS
37 stub _GUID_NULL
38 stub _IID_IUNKNOWN
39 stub _IID_ICLASSFACTORY
40 stub _IID_IMALLOC
41 stub _IID_IMARSHAL
42 stub _IID_IRPCCHANNEL
43 stub _IID_IRPCSTUB
44 stub _IID_ISTUBMANAGER
45 stub _IID_IRPCPROXY
46 stub _IID_IPROXYMANAGER
47 stub _IID_IPSFACTORY
48 stub _IID_ILOCKBYTES
49 stub _IID_ISTORAGE
50 stub _IID_ISTREAM
51 stub _IID_IENUMSTATSTG
52 stub _IID_IBINDCTX
53 stub _IID_IMONIKER
54 stub _IID_IRUNNINGOBJECTTABLE
55 stub _IID_IINTERNALMONIKER
56 stub _IID_IROOTSTORAGE
57 stub _IID_IDFRESERVED1
58 stub _IID_IDFRESERVED2
59 stub _IID_IDFRESERVED3
60 stub _IID_IMESSAGEFILTER
61 stub CLSIDFROMPROGID
62 stub PROGIDFROMCLSID
63 stub COLOCKOBJECTEXTERNAL
64 stub _CLSID_STDMARSHAL
65 stub COGETTREATASCLASS
66 stub COTREATASCLASS
67 stub COGETSTANDARDMARSHAL
68 stub PROPAGATERESULT
69 stub IIDFROMSTRING
70 stub _IID_ISTDMARSHALINFO
71 stub COCREATESTANDARDMALLOC
72 stub _IID_IEXTERNALCONNECTION
73 stub COCREATEGUID
75 stub FNASSERT
76 stub STRINGFROMGUID2
77 stub COGETCLASSEXT
78 stub OLE1CLASSFROMCLSID2
79 stub CLSIDFROMOLE1CLASS
80 stub COOPENCLASSKEY
81 stub GUIDFROMSTRING
82 stub COFILETIMENOW
83 stub REMALLOCOID
84 stub REMFREEOID
85 stub REMCREATEREMOTEHANDLER
86 stub REMCONNECTTOOBJECT
87 stub REMGETINFOFORCID
88 stub LRPCCALL
89 stub LRPCDISPATCH
90 stub LRPCREGISTERMONITOR
91 stub LRPCREVOKEMONITOR
92 stub LRPCGETTHREADWINDOW
93 stub TIMERCALLBACKPROC
94 stub LOOKUPETASK
95 stub SETETASK
96 stub LRPCFREEMONITORDATA
97 stub REMLOOKUPSHUNK
#100 ??0CARRAYFVALUE@@REC@KI@Z
#101 ??1CARRAYFVALUE@@REC@XZ
#102 ?ASSERTVALID@CARRAYFVALUE@@RFCXXZ
......
name ddeml
id 25
2 stub DdeInitialize #(ptr segptr long long) DdeInitialize
3 stub DdeUnInitialize #(long) DdeUnInitialize
4 stub DdeConnectList #(long word word word ptr) DdeConnectList
5 stub DdeQueryNextServer #(word word) DdeQueryNextServer
6 stub DdeDisconnectList #(word) DdeDisconnectList
7 stub DdeConnect #(long word word ptr) DdeConnect
8 stub DdeDisconnect #(word) DdeDisconnect
9 stub DdeQueryConvInfo #(word long ptr) DdeQueryConvInfo
10 stub DdeSetUserHandle #(word long long) DdeSetUserHandle
11 stub DdeClientTransaction #(ptr long word word word word long ptr) DdeClientTransaction
12 stub DdeAbandonTransaction #(long word long) DdeAbandonTransaction
13 stub DdePostAdvise #(long word word) DdePostAdvise
14 stub DdeCreateDataHandle #(long ptr long long word word word) DdeCreateDataHandle
15 stub DdeAddData #(word ptr long long) DdeAddData
16 stub DdeGetData #(word ptr long long) DdeGetData
17 stub DdeAccessData #(word ptr) DdeAccessData
18 stub DdeUnaccessData #(word) DdeUnaccessData
19 stub DdeFreeDataHandle #(word) DdeFreeDataHandle
20 stub DdeGetLastError #(long) DdeGetLastError
21 stub DdeCreateStringHandle #(long ptr word) DdeCreateStringHandle
22 stub DdeFreeStringHandle #(long word) DdeFreeStringHandle
23 stub DdeQueryString #(long word ptr long word) DdeQueryString
24 stub DdeKeepStringHandle #(long word) DdeKeepStringHandle
26 stub DdeEnableCallback #(long word word) DdeEnableCallback
27 stub DdeNameService #(long word word word)
36 stub DdeCmpStringHandles #(word word) DdeCmpStringHandles
37 stub DdeReconnect #(word) DdeReconnect
# $Id: gdi.spec,v 1.3 1993/07/04 04:04:21 root Exp root $
#
name gdi
id 3
length 490
1 pascal SetBkColor(word long) SetBkColor
2 pascal16 SetBkMode(word word) SetBkMode
......@@ -50,7 +47,7 @@ length 490
38 pascal Escape(word word word ptr ptr) Escape
39 pascal16 RestoreDC(word s_word) RestoreDC
40 pascal16 FillRgn(word word word) FillRgn
#41 pascal FrameRgn
41 stub FrameRgn
42 pascal16 InvertRgn(word word) InvertRgn
43 pascal16 PaintRgn(word word) PaintRgn
44 pascal16 SelectClipRgn(word word) SelectClipRgn
......@@ -80,7 +77,7 @@ length 490
68 pascal16 DeleteDC(word) DeleteDC
69 pascal16 DeleteObject(word) DeleteObject
70 pascal16 EnumFonts(word ptr segptr long) EnumFonts
71 pascal16 EnumObjects(word word ptr long) EnumObjects
71 pascal16 EnumObjects(word word segptr long) EnumObjects
72 pascal16 EqualRgn(word word) EqualRgn
73 pascal16 ExcludeVisRect(word s_word s_word s_word s_word) ExcludeVisRect
74 pascal GetBitmapBits(word long ptr) GetBitmapBits
......@@ -138,84 +135,84 @@ length 490
148 pascal SetBrushOrg(word s_word s_word) SetBrushOrg
149 pascal GetBrushOrg(word) GetBrushOrg
150 pascal16 UnrealizeObject(word) UnrealizeObject
#151 pascal CopyMetaFile
151 stub CopyMetaFile
153 pascal16 CreateIC(ptr ptr ptr ptr) CreateIC
154 pascal GetNearestColor(word long) GetNearestColor
#155 pascal QueryAbort
155 stub QueryAbort
156 pascal16 CreateDiscardableBitmap(word word word) CreateDiscardableBitmap
#159 pascal GetMetaFileBits
#160 pascal SetMetaFileBits
159 stub GetMetaFileBits
160 stub SetMetaFileBits
161 pascal16 PtInRegion(word s_word s_word) PtInRegion
162 pascal GetBitmapDimension(word) GetBitmapDimension
163 pascal SetBitmapDimension(word s_word s_word) SetBitmapDimension
#169 pascal IsDCDirty
#170 pascal SetDCStatus
169 stub IsDCDirty
170 stub SetDCStatus
172 pascal16 SetRectRgn(word s_word s_word s_word s_word) SetRectRgn
173 pascal16 GetClipRgn(word) GetClipRgn
#175 pascal EnumMetaFile
175 stub EnumMetaFile
176 pascal16 PlayMetaFileRecord(word ptr ptr word) PlayMetaFileRecord
179 pascal16 GetDCState(word) GetDCState
180 pascal16 SetDCState(word word) SetDCState
181 pascal16 RectInRegionOld(word ptr) RectInRegion
#190 pascal SetDCHook
#191 pascal GetDCHook
#192 pascal SetHookFlags
#193 pascal SetBoundsRect
#194 pascal GetBoundsRect
#195 pascal SelectBitmap
#196 pascal SetMetaFileBitsBetter
#201 pascal DMBITBLT
#202 pascal DMCOLORINFO
#206 pascal DMENUMDFONTS
#207 pascal DMENUMOBJ
#208 pascal DMOUTPUT
#209 pascal DMPIXEL
#210 pascal DMREALIZEOBJECT
#211 pascal DMSTRBLT
#212 pascal DMSCANLR
#213 pascal BRUTE
#214 pascal DMEXTTEXTOUT
#215 pascal DMGETCHARWIDTH
#216 pascal DMSTRETCHBLT
#217 pascal DMDIBBITS
#218 pascal DMSTRETCHDIBITS
#219 pascal DMSETDIBTODEV
#220 pascal DMTRANSPOSE
#230 pascal CREATEPQ
#231 pascal MINPQ
#232 pascal EXTRACTPQ
#233 pascal INSERTPQ
#234 pascal SIZEPQ
#235 pascal DELETEPQ
#240 pascal OPENJOB
#241 pascal WRITESPOOL
#242 pascal WRITEDIALOG
#243 pascal CLOSEJOB
#244 pascal DELETEJOB
#245 pascal GETSPOOLJOB
#246 pascal STARTSPOOLPAGE
#247 pascal ENDSPOOLPAGE
#248 pascal QUERYJOB
190 stub SetDCHook
191 stub GetDCHook
192 stub SetHookFlags
193 stub SetBoundsRect
194 stub GetBoundsRect
195 stub SelectBitmap
196 stub SetMetaFileBitsBetter
201 stub DMBITBLT
202 stub DMCOLORINFO
206 stub DMENUMDFONTS
207 stub DMENUMOBJ
208 stub DMOUTPUT
209 stub DMPIXEL
210 stub DMREALIZEOBJECT
211 stub DMSTRBLT
212 stub DMSCANLR
213 stub BRUTE
214 stub DMEXTTEXTOUT
215 stub DMGETCHARWIDTH
216 stub DMSTRETCHBLT
217 stub DMDIBBITS
218 stub DMSTRETCHDIBITS
219 stub DMSETDIBTODEV
220 stub DMTRANSPOSE
230 stub CREATEPQ
231 stub MINPQ
232 stub EXTRACTPQ
233 stub INSERTPQ
234 stub SIZEPQ
235 stub DELETEPQ
240 stub OPENJOB
241 stub WRITESPOOL
242 stub WRITEDIALOG
243 stub CLOSEJOB
244 stub DELETEJOB
245 stub GetSpoolJob
246 stub StartSpoolPage
247 stub EndSpoolPage
248 stub QueryJob
250 pascal16 Copy(ptr ptr word) Copy
#253 pascal DeleteSpoolPage
#254 pascal SpoolFile
#300 pascal ENGINEENUMERATEFONT
#301 pascal ENGINEDELETEFONT
#302 pascal ENGINEREALIZEFONT
#303 pascal ENGINEGETCHARWIDTH
#304 pascal ENGINESETFONTCONTEXT
#305 pascal ENGINEGETGLYPHBMP
#306 pascal ENGINEMAKEFONTDIR
#307 pascal GETCHARABCWIDTHS
#308 pascal GETOUTLINETEXTMETRICS
#309 pascal GETGLYPHOUTLINE
#310 pascal CREATESCALABLEFONTRESOURCE
#311 pascal GETFONTDATA
#312 pascal CONVERTOUTLINEFONTFILE
253 stub DeleteSpoolPage
254 stub SpoolFile
300 stub ENGINEENUMERATEFONT
301 stub ENGINEDELETEFONT
302 stub ENGINEREALIZEFONT
303 stub ENGINEGETCHARWIDTH
304 stub ENGINESETFONTCONTEXT
305 stub ENGINEGETGLYPHBMP
306 stub ENGINEMAKEFONTDIR
307 stub GetCharABCWidths
308 stub GetOutLineTextMetrics
309 stub GetGlyphOutLine
310 stub CreateScalableFontResource
311 stub GetFontData
312 stub ConvertOutLineFontFile
313 pascal16 GetRasterizerCaps(ptr word) GetRasterizerCaps
#314 pascal ENGINEEXTTEXTOUT
314 stub EngineExtTextOut
330 pascal16 EnumFontFamilies(word ptr segptr long) EnumFontFamilies
#332 pascal GETKERNINGPAIRS
332 stub GetKerningPairs
345 pascal16 GetTextAlign(word) GetTextAlign
346 pascal16 SetTextAlign(word word) SetTextAlign
348 pascal16 Chord(word s_word s_word s_word s_word s_word s_word
......@@ -223,39 +220,39 @@ length 490
349 pascal SetMapperFlags(word word) SetMapperFlags
350 pascal16 GetCharWidth(word word word ptr) GetCharWidth
351 pascal16 ExtTextOut(word s_word s_word word ptr ptr s_word ptr) ExtTextOut
#352 pascal GETPHYSICALFONTHANDLE
#353 pascal GETASPECTRATIOFILTER
#354 pascal SHRINKGDIHEAP
352 stub GetPhysicalFontHandle
353 stub GetAspectRatioFilter
354 stub ShrinkGDIHeap
360 pascal16 CreatePalette(ptr) CreatePalette
361 pascal16 GDISelectPalette(word word) GDISelectPalette
362 pascal16 GDIRealizePalette(word) GDIRealizePalette
363 pascal16 GetPaletteEntries(word word word ptr) GetPaletteEntries
364 pascal16 SetPaletteEntries(word word word ptr) SetPaletteEntries
365 pascal16 RealizeDefaultPalette(word) RealizeDefaultPalette
#366 pascal UPDATECOLORS
#367 pascal ANIMATEPALETTE
#368 pascal RESIZEPALETTE
366 stub UpdateColors
367 stub AnimatePalette
368 stub ResizePalette
370 pascal16 GetNearestPaletteIndex(word long) GetNearestPaletteIndex
372 pascal16 ExtFloodFill(word s_word s_word long word) ExtFloodFill
375 pascal16 GetSystemPaletteEntries(word word word ptr)
GetSystemPaletteEntries
#376 pascal RESETDC
#377 pascal STARTDOC
#378 pascal ENDDOC
#379 pascal STARTPAGE
#380 pascal ENDPAGE
#381 pascal SETABORTPROC
#382 pascal ABORTDOC
#400 pascal FASTWINDOWFRAME
#401 pascal GDIMOVEBITMAP
#403 pascal GDIINIT2
#405 pascal FINALGDIINIT
#407 pascal CREATEUSERBITMAP
#409 pascal CREATEUSERDISCARDABLEBITMAP
#410 pascal ISVALIDMETAFILE
376 stub ResetDC
377 stub STARTDOC
378 stub ENDDOC
379 stub STARTPAGE
380 stub ENDPAGE
381 stub SETABORTPROC
382 stub ABORTDOC
400 stub FASTWINDOWFRAME
401 stub GDIMOVEBITMAP
403 stub GDIINIT2
405 stub FINALGDIINIT
407 stub CREATEUSERBITMAP
409 stub CREATEUSERDISCARDABLEBITMAP
410 stub ISVALIDMETAFILE
411 pascal16 GetCurLogFont(word) GetCurLogFont
#412 pascal ISDCCURRENTPALETTE
#439 pascal STRETCHDIBITS
412 stub IsDCCurrentPalette
439 stub StretchDIBits
440 pascal16 SetDIBits(word word word word ptr ptr word) SetDIBits
441 pascal16 GetDIBits(word word word word ptr ptr word) GetDIBits
442 pascal16 CreateDIBitmap(word ptr long ptr ptr word) CreateDIBitmap
......@@ -264,18 +261,18 @@ length 490
444 pascal16 CreateRoundRectRgn(s_word s_word s_word s_word s_word s_word)
CreateRoundRectRgn
445 pascal16 CreateDIBPatternBrush(word word) CreateDIBPatternBrush
#449 pascal DEVICECOLORMATCH
449 stub DEVICECOLORMATCH
450 pascal16 PolyPolygon(word ptr ptr word) PolyPolygon
451 pascal16 CreatePolyPolygonRgn(ptr ptr word word) CreatePolyPolygonRgn
#452 pascal GDISEEGDIDO
#460 pascal GDITASKTERMINATION
452 stub GDISEEGDIDO
460 stub GDITASKTERMINATION
461 return SetObjectOwner 4 0
462 pascal16 IsGDIObject(word) IsGDIObject
#463 pascal MAKEOBJECTPRIVATE
#464 pascal FIXUPBOGUSPUBLISHERMETAFILE
463 stub MAKEOBJECTPRIVATE
464 stub FIXUPBOGUSPUBLISHERMETAFILE
465 pascal16 RectVisible(word ptr) RectVisible
466 pascal16 RectInRegion(word ptr) RectInRegion
#467 pascal UNICODETOANSI
467 stub UNICODETOANSI
468 pascal16 GetBitmapDimensionEx(word ptr) GetBitmapDimensionEx
469 pascal16 GetBrushOrgEx(word ptr) GetBrushOrgEx
470 pascal16 GetCurrentPositionEx(word ptr) GetCurrentPositionEx
......@@ -296,4 +293,4 @@ length 490
ScaleViewportExtEx
485 pascal16 ScaleWindowExtEx(word s_word s_word s_word s_word ptr)
ScaleWindowExtEx
#486 pascal GETASPECTRATIOFILEREX
486 stub GETASPECTRATIOFILEREX
# $Id: kernel.spec,v 1.3 1993/07/04 04:04:21 root Exp root $
#
name kernel
id 1
length 415
#1 FATALEXIT
#2 EXITKERNEL
1 stub FatalExit
2 stub ExitKernel
3 pascal GetVersion() GetVersion
4 pascal16 LocalInit(word word word) LocalInit
5 pascal16 LocalAlloc(word word) LocalAlloc
......@@ -29,18 +26,18 @@ length 415
23 pascal16 LockSegment(word) LockSegment
24 pascal16 UnlockSegment(word) UnlockSegment
25 pascal GlobalCompact(long) GlobalCompact
#26 GLOBALFREEALL
#28 GLOBALMASTERHANDLE
29 return Yield 0 0
30 pascal WaitEvent(word) KERNEL_WaitEvent
#31 POSTEVENT
#32 SETPRIORITY
#33 LOCKCURRENTTASK
26 pascal16 GlobalFreeAll(word) GlobalFreeAll
28 stub GlobalMasterHandle
29 pascal16 Yield() Yield
30 pascal16 WaitEvent(word) WaitEvent
31 pascal16 PostEvent(word) PostEvent
32 pascal16 SetPriority(word s_word) SetPriority
33 stub LockCurrentTask
34 pascal SetTaskQueue(word word) SetTaskQueue
35 pascal GetTaskQueue(word) GetTaskQueue
36 pascal16 GetCurrentTask() GetCurrentTask
37 pascal16 GetCurrentPDB() GetCurrentPDB
#38 SETTASKSIGNALPROC
35 pascal16 GetTaskQueue(word) GetTaskQueue
36 pascal GetCurrentTask() GetCurrentTask
37 pascal GetCurrentPDB() GetCurrentPDB
38 stub SetTaskSignalProc
41 return EnableDos 0 0
42 return DisableDos 0 0
45 pascal16 LoadModule(ptr ptr) LoadModule
......@@ -48,13 +45,13 @@ length 415
47 pascal16 GetModuleHandle(ptr) GetModuleHandle
48 pascal16 GetModuleUsage(word) GetModuleUsage
49 pascal16 GetModuleFileName(word ptr s_word) GetModuleFileName
50 pascal GetProcAddress(word ptr) GetProcAddress
50 pascal GetProcAddress(word segptr) GetProcAddress
51 pascal MakeProcInstance(segptr word) MakeProcInstance
52 pascal FreeProcInstance(segptr) FreeProcInstance
#53 CALLPROCINSTANCE
#54 pascal16 GETINSTANCEDATA
52 pascal16 FreeProcInstance(segptr) FreeProcInstance
53 stub CallProcInstance
54 stub GetInstanceData
55 pascal16 Catch(ptr) Catch
56 pascal Throw(ptr word) Throw
56 pascal16 Throw(ptr word) Throw
57 pascal16 GetProfileInt(ptr ptr word) GetProfileInt
58 pascal16 GetProfileString(ptr ptr ptr ptr word) GetProfileString
59 pascal16 WriteProfileString(ptr ptr ptr) WriteProfileString
......@@ -65,7 +62,7 @@ length 415
64 pascal16 AccessResource(word word) AccessResource
65 pascal SizeofResource(word word) SizeofResource
66 pascal16 AllocResource(word word long) AllocResource
#67 SETRESOURCEHANDLER
67 stub SetResourceHandler
68 pascal16 InitAtomTable(word) InitAtomTable
69 pascal16 FindAtom(ptr) FindAtom
70 pascal16 AddAtom(ptr) AddAtom
......@@ -73,8 +70,8 @@ length 415
72 pascal16 GetAtomName(word ptr word) GetAtomName
73 pascal16 GetAtomHandle(word) GetAtomHandle
74 pascal16 OpenFile(ptr ptr word) OpenFile
#75 OPENPATHNAME
#76 DELETEPATHNAME
75 stub OpenPathName
76 stub DeletePathName
#77 RESERVED1
#78 RESERVED2
#79 RESERVED3
......@@ -91,40 +88,40 @@ length 415
90 pascal16 lstrlen(ptr) lstrlen
91 register InitTask() KERNEL_InitTask
92 pascal16 GetTempDrive(byte) GetTempDrive
93 pascal16 GetCodeHandle(ptr) GetCodeHandle
#94 DEFINEHANDLETABLE
93 pascal16 GetCodeHandle(segptr) GetCodeHandle
94 stub DefineHandleTable
95 pascal16 LoadLibrary(ptr) LoadLibrary
96 pascal16 FreeLibrary(word) FreeLibrary
97 pascal16 GetTempFileName(byte ptr word ptr) GetTempFileName
#98 GETLASTDISKCHANGE
#99 GETLPERRMODE
#100 VALIDATECODESEGMENTS
#101 NOHOOKDOSCALL
98 stub GetLastDiskChange
99 stub GetLPErrMode
100 stub ValidateCodeSegments
101 stub NoHookDosCall
102 register DOS3Call() DOS3Call
#103 NETBIOSCALL
#104 GETCODEINFO
#105 GETEXEVERSION
103 stub NetBiosCall
104 stub GetCodeInfo
105 stub GetExeVersion
106 pascal SetSwapAreaSize(word) SetSwapAreaSize
107 pascal SetErrorMode(word) SetErrorMode
#108 SWITCHSTACKTO
#109 SWITCHSTACKBACK
#110 PATCHCODEHANDLE
108 stub SwitchStackTo
109 stub SwitchStackBack
110 stub PatchCodeHandle
111 pascal GlobalWire(word) GlobalWire
112 pascal16 GlobalUnWire(word) GlobalUnWire
113 equate __AHSHIFT 3
114 equate __AHINCR 8
115 pascal OutputDebugString(ptr) OutputDebugString
#116 INITLIB
117 return OldYield 0 0
#118 GETTASKQUEUEDS
#119 GETTASKQUEUEES
#120 UNDEFDYNLINK
116 stub InitLib
117 pascal16 OldYield() OldYield
118 stub GetTaskQueueDS
119 stub GetTaskQueueES
120 stub UndefDynLink
121 pascal16 LocalShrink(word word) LocalShrink
#122 ISTASKLOCKED
#123 KBDRST
122 stub IsTaskLocked
123 stub KbdRst
124 return EnableKernel 0 0
125 return DisableKernel 0 0
#126 MEMORYFREED
126 stub MemoryFreed
127 pascal16 GetPrivateProfileInt(ptr ptr s_word ptr) GetPrivateProfileInt
128 pascal16 GetPrivateProfileString(ptr ptr ptr ptr s_word ptr)
GetPrivateProfileString
......@@ -133,33 +130,33 @@ length 415
130 pascal FileCDR(ptr) FileCDR
131 pascal GetDOSEnvironment() GetDOSEnvironment
132 pascal GetWinFlags() GetWinFlags
#133 GETEXEPTR
133 pascal16 GetExePtr(word) GetExePtr
134 pascal16 GetWindowsDirectory(ptr word) GetWindowsDirectory
135 pascal16 GetSystemDirectory(ptr word) GetSystemDirectory
136 pascal16 GetDriveType(byte) GetDriveType
137 pascal FatalAppExit(word ptr) FatalAppExit
138 pascal GetHeapSpaces(word) GetHeapSpaces
#139 DOSIGNAL
#140 SETSIGHANDLER
#141 INITTASK1
150 return DirectedYield 2 0
#151 WINOLDAPCALL
139 stub DoSignal
140 stub SetSigHandler
141 stub InitTask1
150 pascal16 DirectedYield(word) DirectedYield
151 stub WinOldApCall
152 pascal16 GetNumTasks() GetNumTasks
154 return GlobalNotify 4 0
#155 GETTASKDS
#156 LIMITEMSPAGES
#157 GETCURPID
#158 ISWINOLDAPTASK
#159 GLOBALHANDLENORIP
#160 EMSCOPY
155 pascal16 GetTaskDS() GetTaskDS
156 stub LimitEMSPages
157 return GetCurPID 4 0
158 stub IsWinOldApTask
159 stub GlobalHandleNoRIP
160 stub EMSCopy
161 pascal16 LocalCountFree() LocalCountFree
162 pascal16 LocalHeapSize() LocalHeapSize
163 pascal16 GlobalLRUOldest(word) GlobalLRUOldest
164 pascal16 GlobalLRUNewest(word) GlobalLRUNewest
#165 A20PROC
165 stub A20Proc
166 pascal16 WinExec(ptr word) WinExec
#167 GETEXPWINVER
#168 DIRECTRESALLOC
167 stub GetExpWinVer
168 stub DirectResAlloc
169 pascal GetFreeSpace(word) GetFreeSpace
170 pascal16 AllocCStoDSAlias(word) AllocCStoDSAlias
171 pascal16 AllocDStoCSAlias(word) AllocDStoCSAlias
......@@ -191,42 +188,42 @@ length 415
197 pascal16 GlobalFix(word) GlobalFix
198 pascal16 GlobalUnfix(word) GlobalUnfix
199 pascal16 SetHandleCount(word) SetHandleCount
#200 VALIDATEFREESPACES
#201 REPLACEINST
#202 REGISTERPTRACE
#203 DEBUGBREAK
#204 SWAPRECORDING
#205 CVWBREAK
200 stub ValidateFreeSpaces
201 stub ReplaceInst
202 stub RegisterPtrace
203 stub DebugBreak
204 stub SwapRecording
205 stub CVWBreak
206 pascal16 AllocSelectorArray(word) AllocSelectorArray
207 return IsDBCSLeadByte 2 0
310 pascal16 LocalHandleDelta(word) LocalHandleDelta
#311 GETSETKERNELDOSPROC
#314 DEBUGDEFINESEGMENT
311 stub GetSetKernelDosProc
314 stub DebugDefineSegment
315 pascal WriteOutProfiles() sync_profiles
#316 GETFREEMEMINFO
#318 FATALEXITHOOK
#319 FLUSHCACHEDFILEHANDLE
#320 ISTASK
316 stub GetFreeMemInfo
318 stub FatalExitHook
319 stub FlushCachedFileHandle
320 pascal16 IsTask(word) IsTask
323 return IsRomModule 2 0
#324 LOGERROR
#325 LOGPARAMERROR
324 stub LogError
325 stub LogParamError
326 return IsRomFile 2 0
#327 K327
#328 _DEBUGOUTPUT
328 stub _DebugOutput
#329 K329
#332 THHOOK
332 stub THHOOK
334 pascal16 IsBadReadPtr(segptr word) IsBadReadPtr
335 pascal16 IsBadWritePtr(segptr word) IsBadWritePtr
336 pascal16 IsBadCodePtr(segptr) IsBadCodePtr
337 pascal16 IsBadStringPtr(segptr word) IsBadStringPtr
#338 HASGPHANDLER
#339 DIAGQUERY
#340 DIAGOUTPUT
#341 TOOLHELPHOOK
#342 __GP
#343 REGISTERWINOLDAPHOOK
#344 GETWINOLDAPHOOKS
#345 ISSHAREDSELECTOR
338 stub HasGPHandler
339 stub DiagQuery
340 stub DiagOutput
341 stub ToolHelpHook
342 stub __GP
343 stub RegisterWinOldApHook
344 stub GetWinOldApHooks
345 stub IsSharedSelector
346 pascal16 IsBadHugeReadPtr(segptr long) IsBadHugeReadPtr
347 pascal16 IsBadHugeWritePtr(segptr long) IsBadHugeWritePtr
348 pascal hmemcpy(ptr ptr long) hmemcpy
......@@ -234,8 +231,8 @@ length 415
350 pascal16 _hwrite(word ptr long) _hwrite
#351 BUNNY_351
353 pascal lstrcpyn(segptr segptr word) lstrcpyn
#354 GETAPPCOMPATFLAGS
#355 GETWINDEBUGINFO
#356 SETWINDEBUGINFO
354 stub GetAppCompatFlags
355 stub GetWinDebugInfo
356 stub SetWinDebugInfo
403 pascal16 FarSetOwner(word word) FarSetOwner
404 pascal16 FarGetOwner(word) FarGetOwner
# $Id: keyboard.spec,v 1.1 1993/09/10 05:32:12 scott Exp $
#
name keyboard
id 7
length 137
#1 pascal Inquire
#2 pascal Enable
......
# $Id: mmsystem.spec,v 1.3 1993/07/04 04:04:21 root Exp root $
#
name mmsystem
id 10
length 1226
1 pascal MMSYSTEM_WEP(word word word ptr) MMSYSTEM_WEP
2 pascal SNDPLAYSOUND(ptr word) sndPlaySound
......
name mouse
id 13
length 8
#1 pascal INQUIRE
#2 pascal ENABLE
#3 pascal DISABLE
#4 pascal MOUSEGETINTVECT
#5 pascal GETSETMOUSEDATA
#6 pascal CPLAPPLET
#7 pascal POWEREVENTPROC
1 stub INQUIRE
2 stub ENABLE
3 stub DISABLE
4 stub MOUSEGETINTVECT
5 stub GETSETMOUSEDATA
6 stub CPLAPPLET
7 stub POWEREVENTPROC
name OLE2
id 15
length 161
#1 OLEBUILDVERSION
#2 OLEINITIALIZE
#3 OLEUNINITIALIZE
#4 DLLGETCLASSOBJECT
1 stub OLEBUILDVERSION
2 stub OLEINITIALIZE
3 stub OLEUNINITIALIZE
4 stub DLLGETCLASSOBJECT
#5 WEP
#6 OLEQUERYLINKFROMDATA
#7 OLEQUERYCREATEFROMDATA
#8 OLECREATEFROMDATA
#9 OLECREATELINKFROMDATA
#10 OLECREATE
#11 OLECREATELINK
#12 OLELOAD
#13 OLESAVE
#14 OLERUN
6 stub OLEQUERYLINKFROMDATA
7 stub OLEQUERYCREATEFROMDATA
8 stub OLECREATEFROMDATA
9 stub OLECREATELINKFROMDATA
10 stub OLECREATE
11 stub OLECREATELINK
12 stub OLELOAD
13 stub OLESAVE
14 stub OLERUN
#15 ___EXPORTEDSTUB
#16 OLEISRUNNING
#17 OLELOCKRUNNING
#18 READCLASSSTG
#19 WRITECLASSSTG
#20 READCLASSSTM
#21 WRITECLASSSTM
#22 BINDMONIKER
#23 MKPARSEDISPLAYNAME
#24 OLESAVETOSTREAM
#25 OLELOADFROMSTREAM
#26 CREATEBINDCTX
#27 CREATEITEMMONIKER
#28 CREATEFILEMONIKER
#29 CREATEGENERICCOMPOSITE
#30 GETRUNNINGOBJECTTABLE
#31 OLEGETMALLOC
#32 RELEASESTGMEDIUM
#33 READSTRINGSTREAM
#34 WRITESTRINGSTREAM
#35 REGISTERDRAGDROP
#36 REVOKEDRAGDROP
#37 DODRAGDROP
#38 CREATEOLEADVISEHOLDER
#39 CREATEDATAADVISEHOLDER
#40 OLECREATEMENUDESCRIPTOR
#41 OLESETMENUDESCRIPTOR
#42 OLEDESTROYMENUDESCRIPTOR
#43 OPENORCREATESTREAM
#44 CREATEANTIMONIKER
#45 CREATEPOINTERMONIKER
#46 MONIKERRELATIVEPATHTO
#47 MONIKERCOMMONPREFIXWITH
#48 ISACCELERATOR
#49 OLESETCLIPBOARD
#50 OLEGETCLIPBOARD
#51 OLEDUPLICATEDATA
#52 OLEGETICONOFFILE
#53 OLEGETICONOFCLASS
#54 CREATEILOCKBYTESONHGLOBAL
#55 GETHGLOBALFROMILOCKBYTES
#56 OLEMETAFILEPICTFROMICONANDLABEL
#57 GETCLASSFILE
#58 OLEDRAW
#59 OLECREATEDEFAULTHANDLER
#60 OLECREATEEMBEDDINGHELPER
#61 OLECONVERTISTORAGETOOLESTREAMEX
#62 OLECONVERTOLESTREAMTOISTORAGEEX
#63 SETDOCUMENTBITSTG
#64 GETDOCUMENTBITSTG
#65 WRITEOLESTG
#66 READOLESTG
#67 OLECREATEFROMFILE
#68 OLECREATELINKTOFILE
#69 CREATEDATACACHE
#70 OLECONVERTISTORAGETOOLESTREAM
#71 OLECONVERTOLESTREAMTOISTORAGE
#74 READFMTUSERTYPESTG
#75 WRITEFMTUSERTYPESTG
#76 OLEFLUSHCLIPBOARD
#77 OLEISCURRENTCLIPBOARD
#78 OLETRANSLATEACCELERATOR
#79 OLEDOAUTOCONVERT
#80 OLEGETAUTOCONVERT
#81 OLESETAUTOCONVERT
#82 GETCONVERTSTG
#83 SETCONVERTSTG
#84 CREATESTREAMONHGLOBAL
#85 GETHGLOBALFROMSTREAM
#86 OLESETCONTAINEDOBJECT
#87 OLENOTEOBJECTVISIBLE
#88 OLECREATESTATICFROMDATA
#89 OLEREGGETUSERTYPE
#90 OLEREGGETMISCSTATUS
#91 OLEREGENUMFORMATETC
#92 OLEREGENUMVERBS
#93 OLEGETENUMFORMATETC
#100 MAKEDEBUGSTREAM
#104 DBGLOGOPEN
#105 DBGLOGCLOSE
#106 DBGLOGOUTPUTDEBUGSTRING
#107 DBGLOGWRITE
#108 DBGLOGTIMESTAMP
#109 DBGLOGWRITEBANNER
#110 DBGDUMPOBJECT
#111 DBGISOBJECTVALID
#112 DUMPALLOBJECTS
#113 VALIDATEALLOBJECTS
#114 DBGDUMPCLASSNAME
#115 DBGDUMPEXTERNALOBJECT
#120 _IID_IENUMUNKNOWN
#121 _IID_IENUMSTRING
#122 _IID_IENUMMONIKER
#123 _IID_IENUMFORMATETC
#124 _IID_IENUMOLEVERB
#125 _IID_IENUMSTATDATA
#126 _IID_IENUMGENERIC
#127 _IID_IENUMHOLDER
#128 _IID_IENUMCALLBACK
#129 _IID_IPERSISTSTREAM
#130 _IID_IPERSISTSTORAGE
#131 _IID_IPERSISTFILE
#132 _IID_IPERSIST
#133 _IID_IVIEWOBJECT
#134 _IID_IDATAOBJECT
#135 _IID_IADVISESINK
#136 _IID_IDATAADVISEHOLDER
#137 _IID_IOLEADVISEHOLDER
#138 _IID_IOLEOBJECT
#139 _IID_IOLEINPLACEOBJECT
#140 _IID_IOLEWINDOW
#141 _IID_IOLEINPLACEUIWINDOW
#142 _IID_IOLEINPLACEFRAME
#143 _IID_IOLEINPLACEACTIVEOBJECT
#144 _IID_IOLECLIENTSITE
#145 _IID_IOLEINPLACESITE
#146 _IID_IPARSEDISPLAYNAME
#147 _IID_IOLECONTAINER
#148 _IID_IOLEITEMCONTAINER
#149 _IID_IOLELINK
#150 _IID_IOLECACHE
#151 _IID_IOLEMANAGER
#152 _IID_IOLEPRESOBJ
#153 _IID_IDROPSOURCE
#154 _IID_IDROPTARGET
#155 _IID_IDEBUG
#156 _IID_IDEBUGSTREAM
#157 _IID_IADVISESINK2
#158 _IID_IVIEWOBJECT2
#159 _IID_IOLECACHE2
#160 _IID_IOLECACHECONTROL
#161 _IID_IRUNNABLEOBJECT
16 stub OLEISRUNNING
17 stub OLELOCKRUNNING
18 stub READCLASSSTG
19 stub WRITECLASSSTG
20 stub READCLASSSTM
21 stub WRITECLASSSTM
22 stub BINDMONIKER
23 stub MKPARSEDISPLAYNAME
24 stub OLESAVETOSTREAM
25 stub OLELOADFROMSTREAM
26 stub CREATEBINDCTX
27 stub CREATEITEMMONIKER
28 stub CREATEFILEMONIKER
29 stub CREATEGENERICCOMPOSITE
30 stub GETRUNNINGOBJECTTABLE
31 stub OLEGETMALLOC
32 stub RELEASESTGMEDIUM
33 stub READSTRINGSTREAM
34 stub WRITESTRINGSTREAM
35 stub REGISTERDRAGDROP
36 stub REVOKEDRAGDROP
37 stub DODRAGDROP
38 stub CREATEOLEADVISEHOLDER
39 stub CREATEDATAADVISEHOLDER
40 stub OLECREATEMENUDESCRIPTOR
41 stub OLESETMENUDESCRIPTOR
42 stub OLEDESTROYMENUDESCRIPTOR
43 stub OPENORCREATESTREAM
44 stub CREATEANTIMONIKER
45 stub CREATEPOINTERMONIKER
46 stub MONIKERRELATIVEPATHTO
47 stub MONIKERCOMMONPREFIXWITH
48 stub ISACCELERATOR
49 stub OLESETCLIPBOARD
50 stub OLEGETCLIPBOARD
51 stub OLEDUPLICATEDATA
52 stub OLEGETICONOFFILE
53 stub OLEGETICONOFCLASS
54 stub CREATEILOCKBYTESONHGLOBAL
55 stub GETHGLOBALFROMILOCKBYTES
56 stub OLEMETAFILEPICTFROMICONANDLABEL
57 stub GETCLASSFILE
58 stub OLEDRAW
59 stub OLECREATEDEFAULTHANDLER
60 stub OLECREATEEMBEDDINGHELPER
61 stub OLECONVERTISTORAGETOOLESTREAMEX
62 stub OLECONVERTOLESTREAMTOISTORAGEEX
63 stub SETDOCUMENTBITSTG
64 stub GETDOCUMENTBITSTG
65 stub WRITEOLESTG
66 stub READOLESTG
67 stub OLECREATEFROMFILE
68 stub OLECREATELINKTOFILE
69 stub CREATEDATACACHE
70 stub OLECONVERTISTORAGETOOLESTREAM
71 stub OLECONVERTOLESTREAMTOISTORAGE
74 stub READFMTUSERTYPESTG
75 stub WRITEFMTUSERTYPESTG
76 stub OLEFLUSHCLIPBOARD
77 stub OLEISCURRENTCLIPBOARD
78 stub OLETRANSLATEACCELERATOR
79 stub OLEDOAUTOCONVERT
80 stub OLEGETAUTOCONVERT
81 stub OLESETAUTOCONVERT
82 stub GETCONVERTSTG
83 stub SETCONVERTSTG
84 stub CREATESTREAMONHGLOBAL
85 stub GETHGLOBALFROMSTREAM
86 stub OLESETCONTAINEDOBJECT
87 stub OLENOTEOBJECTVISIBLE
88 stub OLECREATESTATICFROMDATA
89 stub OLEREGGETUSERTYPE
90 stub OLEREGGETMISCSTATUS
91 stub OLEREGENUMFORMATETC
92 stub OLEREGENUMVERBS
93 stub OLEGETENUMFORMATETC
100 stub MAKEDEBUGSTREAM
104 stub DBGLOGOPEN
105 stub DBGLOGCLOSE
106 stub DBGLOGOUTPUTDEBUGSTRING
107 stub DBGLOGWRITE
108 stub DBGLOGTIMESTAMP
109 stub DBGLOGWRITEBANNER
110 stub DBGDUMPOBJECT
111 stub DBGISOBJECTVALID
112 stub DUMPALLOBJECTS
113 stub VALIDATEALLOBJECTS
114 stub DBGDUMPCLASSNAME
115 stub DBGDUMPEXTERNALOBJECT
120 stub _IID_IENUMUNKNOWN
121 stub _IID_IENUMSTRING
122 stub _IID_IENUMMONIKER
123 stub _IID_IENUMFORMATETC
124 stub _IID_IENUMOLEVERB
125 stub _IID_IENUMSTATDATA
126 stub _IID_IENUMGENERIC
127 stub _IID_IENUMHOLDER
128 stub _IID_IENUMCALLBACK
129 stub _IID_IPERSISTSTREAM
130 stub _IID_IPERSISTSTORAGE
131 stub _IID_IPERSISTFILE
132 stub _IID_IPERSIST
133 stub _IID_IVIEWOBJECT
134 stub _IID_IDATAOBJECT
135 stub _IID_IADVISESINK
136 stub _IID_IDATAADVISEHOLDER
137 stub _IID_IOLEADVISEHOLDER
138 stub _IID_IOLEOBJECT
139 stub _IID_IOLEINPLACEOBJECT
140 stub _IID_IOLEWINDOW
141 stub _IID_IOLEINPLACEUIWINDOW
142 stub _IID_IOLEINPLACEFRAME
143 stub _IID_IOLEINPLACEACTIVEOBJECT
144 stub _IID_IOLECLIENTSITE
145 stub _IID_IOLEINPLACESITE
146 stub _IID_IPARSEDISPLAYNAME
147 stub _IID_IOLECONTAINER
148 stub _IID_IOLEITEMCONTAINER
149 stub _IID_IOLELINK
150 stub _IID_IOLECACHE
151 stub _IID_IOLEMANAGER
152 stub _IID_IOLEPRESOBJ
153 stub _IID_IDROPSOURCE
154 stub _IID_IDROPTARGET
155 stub _IID_IDEBUG
156 stub _IID_IDEBUGSTREAM
157 stub _IID_IADVISESINK2
158 stub _IID_IVIEWOBJECT2
159 stub _IID_IOLECACHE2
160 stub _IID_IOLECACHECONTROL
161 stub _IID_IRUNNABLEOBJECT
name ole2conv
id 16
length 10
#1 GETFILTERINFO
#2 IMPORTGR
#3 GETFILTERPREF
#4 IMPORTEMBEDDEDGR
#5 QD2GDI
#6 STATUSPROC
#7 ENUMFONTFUNC
1 stub GETFILTERINFO
2 stub IMPORTGR
3 stub GETFILTERPREF
4 stub IMPORTEMBEDDEDGR
5 stub QD2GDI
6 stub STATUSPROC
7 stub ENUMFONTFUNC
#8 WEP
#9 ___EXPORTEDSTUB
name ole2disp
id 17
length 110
#1 DLLGETCLASSOBJECT
#2 SYSALLOCSTRING
#3 SYSREALLOCSTRING
#4 SYSALLOCSTRINGLEN
#5 SYSREALLOCSTRINGLEN
#6 SYSFREESTRING
#7 SYSSTRINGLEN
#8 VARIANTINIT
#9 VARIANTCLEAR
#10 VARIANTCOPY
#11 VARIANTCOPYIND
#12 VARIANTCHANGETYPE
#13 VARIANTTIMETODOSDATETIME
#14 DOSDATETIMETOVARIANTTIME
#15 SAFEARRAYCREATE
#16 SAFEARRAYDESTROY
#17 SAFEARRAYGETDIM
#18 SAFEARRAYGETELEMSIZE
#19 SAFEARRAYGETUBOUND
#20 SAFEARRAYGETLBOUND
#21 SAFEARRAYLOCK
#22 SAFEARRAYUNLOCK
#23 SAFEARRAYACCESSDATA
#24 SAFEARRAYUNACCESSDATA
#25 SAFEARRAYGETELEMENT
#26 SAFEARRAYPUTELEMENT
#27 SAFEARRAYCOPY
#28 DISPGETPARAM
#29 DISPGETIDSOFNAMES
#30 DISPINVOKE
#31 CREATEDISPTYPEINFO
#32 CREATESTDDISPATCH
#33 _IID_IDISPATCH
#34 _IID_IENUMVARIANT
#35 REGISTERACTIVEOBJECT
#36 REVOKEACTIVEOBJECT
#37 GETACTIVEOBJECT
#38 SAFEARRAYALLOCDESCRIPTOR
#39 SAFEARRAYALLOCDATA
#40 SAFEARRAYDESTROYDESCRIPTOR
#41 SAFEARRAYDESTROYDATA
#42 SAFEARRAYREDIM
#43 VARI2FROMI4
#44 VARI2FROMR4
#45 VARI2FROMR8
#46 VARI2FROMCY
#47 VARI2FROMDATE
#48 VARI2FROMSTR
#49 VARI2FROMDISP
#50 VARI2FROMBOOL
#51 VARI4FROMI2
#52 VARI4FROMR4
#53 VARI4FROMR8
#54 VARI4FROMCY
#55 VARI4FROMDATE
#56 VARI4FROMSTR
#57 VARI4FROMDISP
#58 VARI4FROMBOOL
#59 VARR4FROMI2
#60 VARR4FROMI4
#61 VARR4FROMR8
#62 VARR4FROMCY
#63 VARR4FROMDATE
#64 VARR4FROMSTR
#65 VARR4FROMDISP
#66 VARR4FROMBOOL
#67 VARR8FROMI2
#68 VARR8FROMI4
#69 VARR8FROMR4
#70 VARR8FROMCY
#71 VARR8FROMDATE
#72 VARR8FROMSTR
#73 VARR8FROMDISP
#74 VARR8FROMBOOL
#75 VARDATEFROMI2
#76 VARDATEFROMI4
#77 VARDATEFROMR4
#78 VARDATEFROMR8
#79 VARDATEFROMCY
#80 VARDATEFROMSTR
#81 VARDATEFROMDISP
#82 VARDATEFROMBOOL
#83 VARCYFROMI2
#84 VARCYFROMI4
#85 VARCYFROMR4
#86 VARCYFROMR8
#87 VARCYFROMDATE
#88 VARCYFROMSTR
#89 VARCYFROMDISP
#90 VARCYFROMBOOL
#91 VARBSTRFROMI2
#92 VARBSTRFROMI4
#93 VARBSTRFROMR4
#94 VARBSTRFROMR8
#95 VARBSTRFROMCY
#96 VARBSTRFROMDATE
#97 VARBSTRFROMDISP
#98 VARBSTRFROMBOOL
#99 VARBOOLFROMI2
#100 VARBOOLFROMI4
#101 VARBOOLFROMR4
#102 VARBOOLFROMR8
#103 VARBOOLFROMDATE
#104 VARBOOLFROMCY
#105 VARBOOLFROMSTR
#106 VARBOOLFROMDISP
#107 DOINVOKEMETHOD
#108 VARIANTCHANGETYPEEX
1 stub DLLGETCLASSOBJECT
2 stub SYSALLOCSTRING
3 stub SYSREALLOCSTRING
4 stub SYSALLOCSTRINGLEN
5 stub SYSREALLOCSTRINGLEN
6 stub SYSFREESTRING
7 stub SYSSTRINGLEN
8 stub VARIANTINIT
9 stub VARIANTCLEAR
10 stub VARIANTCOPY
11 stub VARIANTCOPYIND
12 stub VARIANTCHANGETYPE
13 stub VARIANTTIMETODOSDATETIME
14 stub DOSDATETIMETOVARIANTTIME
15 stub SAFEARRAYCREATE
16 stub SAFEARRAYDESTROY
17 stub SAFEARRAYGETDIM
18 stub SAFEARRAYGETELEMSIZE
19 stub SAFEARRAYGETUBOUND
20 stub SAFEARRAYGETLBOUND
21 stub SAFEARRAYLOCK
22 stub SAFEARRAYUNLOCK
23 stub SAFEARRAYACCESSDATA
24 stub SAFEARRAYUNACCESSDATA
25 stub SAFEARRAYGETELEMENT
26 stub SAFEARRAYPUTELEMENT
27 stub SAFEARRAYCOPY
28 stub DISPGETPARAM
29 stub DISPGETIDSOFNAMES
30 stub DISPINVOKE
31 stub CREATEDISPTYPEINFO
32 stub CREATESTDDISPATCH
33 stub _IID_IDISPATCH
34 stub _IID_IENUMVARIANT
35 stub REGISTERACTIVEOBJECT
36 stub REVOKEACTIVEOBJECT
37 stub GETACTIVEOBJECT
38 stub SAFEARRAYALLOCDESCRIPTOR
39 stub SAFEARRAYALLOCDATA
40 stub SAFEARRAYDESTROYDESCRIPTOR
41 stub SAFEARRAYDESTROYDATA
42 stub SAFEARRAYREDIM
43 stub VARI2FROMI4
44 stub VARI2FROMR4
45 stub VARI2FROMR8
46 stub VARI2FROMCY
47 stub VARI2FROMDATE
48 stub VARI2FROMSTR
49 stub VARI2FROMDISP
50 stub VARI2FROMBOOL
51 stub VARI4FROMI2
52 stub VARI4FROMR4
53 stub VARI4FROMR8
54 stub VARI4FROMCY
55 stub VARI4FROMDATE
56 stub VARI4FROMSTR
57 stub VARI4FROMDISP
58 stub VARI4FROMBOOL
59 stub VARR4FROMI2
60 stub VARR4FROMI4
61 stub VARR4FROMR8
62 stub VARR4FROMCY
63 stub VARR4FROMDATE
64 stub VARR4FROMSTR
65 stub VARR4FROMDISP
66 stub VARR4FROMBOOL
67 stub VARR8FROMI2
68 stub VARR8FROMI4
69 stub VARR8FROMR4
70 stub VARR8FROMCY
71 stub VARR8FROMDATE
72 stub VARR8FROMSTR
73 stub VARR8FROMDISP
74 stub VARR8FROMBOOL
75 stub VARDATEFROMI2
76 stub VARDATEFROMI4
77 stub VARDATEFROMR4
78 stub VARDATEFROMR8
79 stub VARDATEFROMCY
80 stub VARDATEFROMSTR
81 stub VARDATEFROMDISP
82 stub VARDATEFROMBOOL
83 stub VARCYFROMI2
84 stub VARCYFROMI4
85 stub VARCYFROMR4
86 stub VARCYFROMR8
87 stub VARCYFROMDATE
88 stub VARCYFROMSTR
89 stub VARCYFROMDISP
90 stub VARCYFROMBOOL
91 stub VARBSTRFROMI2
92 stub VARBSTRFROMI4
93 stub VARBSTRFROMR4
94 stub VARBSTRFROMR8
95 stub VARBSTRFROMCY
96 stub VARBSTRFROMDATE
97 stub VARBSTRFROMDISP
98 stub VARBSTRFROMBOOL
99 stub VARBOOLFROMI2
100 stub VARBOOLFROMI4
101 stub VARBOOLFROMR4
102 stub VARBOOLFROMR8
103 stub VARBOOLFROMDATE
104 stub VARBOOLFROMCY
105 stub VARBOOLFROMSTR
106 stub VARBOOLFROMDISP
107 stub DOINVOKEMETHOD
108 stub VARIANTCHANGETYPEEX
#109 WEP
#110 ___EXPORTEDSTUB
name ole2nls
id 18
length 11
#1 GETUSERDEFAULTLCID
#2 GETSYSTEMDEFAULTLCID
#3 GETUSERDEFAULTLANGID
#4 GETSYSTEMDEFAULTLANGID
#5 GETLOCALEINFOA
#6 LCMAPSTRINGA
#7 GETSTRINGTYPEA
#8 COMPARESTRINGA
1 pascal GetUserDefaultLCID() GetUserDefaultLCID
2 pascal GetSystemDefaultLCID() GetSystemDefaultLCID
3 pascal GetUserDefaultLangID() GetUserDefaultLangID
4 pascal GetSystemDefaultLangID() GetSystemDefaultLangID
5 stub GETLOCALEINFOA
6 stub LCMAPSTRINGA
7 stub GETSTRINGTYPEA
8 stub COMPARESTRINGA
#9 WEP
#10 LIBMAIN
#11 NOTIFYWINDOWPROC
10 stub LIBMAIN
11 stub NOTIFYWINDOWPROC
name ole2prox
id 19
length 3
#1 DLLGETCLASSOBJECT
1 stub DLLGETCLASSOBJECT
#2 WEP
#3 ___EXPORTEDSTUB
name olecli
id 20
length 954
#1 WEP
#2 OLEDELETE
#3 OLESAVETOSTREAM
#4 OLELOADFROMSTREAM
#6 OLECLONE
#7 OLECOPYFROMLINK
#8 OLEEQUAL
#9 OLEQUERYLINKFROMCLIP
#10 OLEQUERYCREATEFROMCLIP
#11 OLECREATELINKFROMCLIP
#12 OLECREATEFROMCLIP
#13 OLECOPYTOCLIPBOARD
#14 OLEQUERYTYPE
#15 OLESETHOSTNAMES
#16 OLESETTARGETDEVICE
#17 OLESETBOUNDS
#18 OLEQUERYBOUNDS
#19 OLEDRAW
#20 OLEQUERYOPEN
#21 OLEACTIVATE
#22 OLEUPDATE
#23 OLERECONNECT
#24 OLEGETLINKUPDATEOPTIONS
#25 OLESETLINKUPDATEOPTIONS
#26 OLEENUMFORMATS
#27 OLECLOSE
#28 OLEGETDATA
#29 OLESETDATA
#30 OLEQUERYPROTOCOL
#31 OLEQUERYOUTOFDATE
#32 OLEOBJECTCONVERT
#33 OLECREATEFROMTEMPLATE
#34 OLECREATE
#35 OLEQUERYRELEASESTATUS
#36 OLEQUERYRELEASEERROR
#37 OLEQUERYRELEASEMETHOD
#38 OLECREATEFROMFILE
#39 OLECREATELINKFROMFILE
#40 OLERELEASE
2 stub OLEDELETE
3 stub OLESAVETOSTREAM
4 stub OLELOADFROMSTREAM
6 stub OLECLONE
7 stub OLECOPYFROMLINK
8 stub OLEEQUAL
9 stub OLEQUERYLINKFROMCLIP
10 stub OLEQUERYCREATEFROMCLIP
11 stub OLECREATELINKFROMCLIP
12 stub OLECREATEFROMCLIP
13 stub OLECOPYTOCLIPBOARD
14 stub OLEQUERYTYPE
15 stub OLESETHOSTNAMES
16 stub OLESETTARGETDEVICE
17 stub OLESETBOUNDS
18 stub OLEQUERYBOUNDS
19 stub OLEDRAW
20 stub OLEQUERYOPEN
21 stub OLEACTIVATE
22 stub OLEUPDATE
23 stub OLERECONNECT
24 stub OLEGETLINKUPDATEOPTIONS
25 stub OLESETLINKUPDATEOPTIONS
26 stub OLEENUMFORMATS
27 stub OLECLOSE
28 stub OLEGETDATA
29 stub OLESETDATA
30 stub OLEQUERYPROTOCOL
31 stub OLEQUERYOUTOFDATE
32 stub OLEOBJECTCONVERT
33 stub OLECREATEFROMTEMPLATE
34 stub OLECREATE
35 stub OLEQUERYRELEASESTATUS
36 stub OLEQUERYRELEASEERROR
37 stub OLEQUERYRELEASEMETHOD
38 stub OLECREATEFROMFILE
39 stub OLECREATELINKFROMFILE
40 stub OLERELEASE
41 pascal OleRegisterClientDoc(ptr ptr long ptr) OleRegisterClientDoc
42 pascal OleRevokeClientDoc(long) OleRevokeClientDoc
43 pascal OleRenameClientDoc(long ptr) OleRenameClientDoc
#44 OLEREVERTCLIENTDOC
#45 OLESAVEDCLIENTDOC
#46 OLERENAME
#47 OLEENUMOBJECTS
#48 OLEQUERYNAME
#49 OLESETCOLORSCHEME
#50 OLEREQUESTDATA
#54 OLELOCKSERVER
#55 OLEUNLOCKSERVER
#56 OLEQUERYSIZE
#57 OLEEXECUTE
#58 OLECREATEINVISIBLE
#59 OLEQUERYCLIENTVERSION
#60 OLEISDCMETA
#100 DOCWNDPROC
#101 SRVRWNDPROC
#102 MFCALLBACKFUNC
#110 DEFLOADFROMSTREAM
#111 DEFCREATEFROMCLIP
#112 DEFCREATELINKFROMCLIP
#113 DEFCREATEFROMTEMPLATE
#114 DEFCREATE
#115 DEFCREATEFROMFILE
#116 DEFCREATELINKFROMFILE
#117 DEFCREATEINVISIBLE
#200 LERELEASE
#201 LESHOW
#202 LEGETDATA
#203 LESETDATA
#204 LESETHOSTNAMES
#205 LESETTARGETDEVICE
#206 LESETBOUNDS
#207 LESAVETOSTREAM
#208 LECLONE
#209 LECOPYFROMLINK
#210 LEEQUAL
#211 LECOPY
#212 LEQUERYTYPE
#213 LEQUERYBOUNDS
#214 LEDRAW
#215 LEQUERYOPEN
#216 LEACTIVATE
#218 LEUPDATE
#219 LERECONNECT
#220 LEENUMFORMAT
#221 LEQUERYPROTOCOL
#222 LEQUERYOUTOFDATE
#223 LEOBJECTCONVERT
#224 LECHANGEDATA
#225 LECLOSE
#226 LEGETUPDATEOPTIONS
#227 LESETUPDATEOPTIONS
#228 LEEXECUTE
#229 LEOBJECTLONG
#230 LECREATEINVISIBLE
#300 MFRELEASE
#301 MFGETDATA
#302 MFSAVETOSTREAM
#303 MFCLONE
#304 MFEQUAL
#305 MFCOPY
#307 MFQUERYBOUNDS
#308 MFDRAW
#309 MFENUMFORMAT
#310 MFCHANGEDATA
#400 BMRELEASE
#401 BMGETDATA
#402 BMSAVETOSTREAM
#403 BMCLONE
#404 BMEQUAL
#405 BMCOPY
#407 BMQUERYBOUNDS
#408 BMDRAW
#409 BMENUMFORMAT
#410 BMCHANGEDATA
#500 DIBRELEASE
#501 DIBGETDATA
#502 DIBSAVETOSTREAM
#503 DIBCLONE
#504 DIBEQUAL
#505 DIBCOPY
#507 DIBQUERYBOUNDS
#508 DIBDRAW
#509 DIBENUMFORMAT
#510 DIBCHANGEDATA
#600 GENRELEASE
#601 GENGETDATA
#602 GENSETDATA
#603 GENSAVETOSTREAM
#604 GENCLONE
#605 GENEQUAL
#606 GENCOPY
#608 GENQUERYBOUNDS
#609 GENDRAW
#610 GENENUMFORMAT
#611 GENCHANGEDATA
#701 ERRSHOW
#702 ERRSETDATA
#703 ERRSETHOSTNAMES
#704 ERRSETTARGETDEVICE
#705 ERRSETBOUNDS
#706 ERRCOPYFROMLINK
#707 ERRQUERYOPEN
#708 ERRACTIVATE
#709 ERRCLOSE
#710 ERRUPDATE
#711 ERRRECONNECT
#712 ERRQUERYPROTOCOL
#713 ERRQUERYOUTOFDATE
#714 ERROBJECTCONVERT
#715 ERRGETUPDATEOPTIONS
#716 ERRSETUPDATEOPTIONS
#717 ERREXECUTE
#718 ERROBJECTLONG
#800 PBLOADFROMSTREAM
#801 PBCREATEFROMCLIP
#802 PBCREATELINKFROMCLIP
#803 PBCREATEFROMTEMPLATE
#804 PBCREATE
#805 PBDRAW
#806 PBQUERYBOUNDS
#807 PBCOPYTOCLIPBOARD
#808 PBCREATEFROMFILE
#809 PBCREATELINKFROMFILE
#810 PBENUMFORMATS
#811 PBGETDATA
#812 PBCREATEINVISIBLE
#910 OBJQUERYNAME
#911 OBJRENAME
#912 OBJQUERYTYPE
#913 OBJQUERYSIZE
#950 CONNECTDLGPROC
#951 SETNETNAME
#952 CHECKNETDRIVE
#953 SETNEXTNETDRIVE
#954 GETTASKVISIBLEWINDOW
44 stub OLEREVERTCLIENTDOC
45 stub OLESAVEDCLIENTDOC
46 stub OLERENAME
47 stub OLEENUMOBJECTS
48 stub OLEQUERYNAME
49 stub OLESETCOLORSCHEME
50 stub OLEREQUESTDATA
54 stub OLELOCKSERVER
55 stub OLEUNLOCKSERVER
56 stub OLEQUERYSIZE
57 stub OLEEXECUTE
58 stub OLECREATEINVISIBLE
59 stub OLEQUERYCLIENTVERSION
60 stub OLEISDCMETA
100 stub DOCWNDPROC
101 stub SRVRWNDPROC
102 stub MFCALLBACKFUNC
110 stub DEFLOADFROMSTREAM
111 stub DEFCREATEFROMCLIP
112 stub DEFCREATELINKFROMCLIP
113 stub DEFCREATEFROMTEMPLATE
114 stub DEFCREATE
115 stub DEFCREATEFROMFILE
116 stub DEFCREATELINKFROMFILE
117 stub DEFCREATEINVISIBLE
200 stub LERELEASE
201 stub LESHOW
202 stub LEGETDATA
203 stub LESETDATA
204 stub LESETHOSTNAMES
205 stub LESETTARGETDEVICE
206 stub LESETBOUNDS
207 stub LESAVETOSTREAM
208 stub LECLONE
209 stub LECOPYFROMLINK
210 stub LEEQUAL
211 stub LECOPY
212 stub LEQUERYTYPE
213 stub LEQUERYBOUNDS
214 stub LEDRAW
215 stub LEQUERYOPEN
216 stub LEACTIVATE
218 stub LEUPDATE
219 stub LERECONNECT
220 stub LEENUMFORMAT
221 stub LEQUERYPROTOCOL
222 stub LEQUERYOUTOFDATE
223 stub LEOBJECTCONVERT
224 stub LECHANGEDATA
225 stub LECLOSE
226 stub LEGETUPDATEOPTIONS
227 stub LESETUPDATEOPTIONS
228 stub LEEXECUTE
229 stub LEOBJECTLONG
230 stub LECREATEINVISIBLE
300 stub MFRELEASE
301 stub MFGETDATA
302 stub MFSAVETOSTREAM
303 stub MFCLONE
304 stub MFEQUAL
305 stub MFCOPY
307 stub MFQUERYBOUNDS
308 stub MFDRAW
309 stub MFENUMFORMAT
310 stub MFCHANGEDATA
400 stub BMRELEASE
401 stub BMGETDATA
402 stub BMSAVETOSTREAM
403 stub BMCLONE
404 stub BMEQUAL
405 stub BMCOPY
407 stub BMQUERYBOUNDS
408 stub BMDRAW
409 stub BMENUMFORMAT
410 stub BMCHANGEDATA
500 stub DIBRELEASE
501 stub DIBGETDATA
502 stub DIBSAVETOSTREAM
503 stub DIBCLONE
504 stub DIBEQUAL
505 stub DIBCOPY
507 stub DIBQUERYBOUNDS
508 stub DIBDRAW
509 stub DIBENUMFORMAT
510 stub DIBCHANGEDATA
600 stub GENRELEASE
601 stub GENGETDATA
602 stub GENSETDATA
603 stub GENSAVETOSTREAM
604 stub GENCLONE
605 stub GENEQUAL
606 stub GENCOPY
608 stub GENQUERYBOUNDS
609 stub GENDRAW
610 stub GENENUMFORMAT
611 stub GENCHANGEDATA
701 stub ERRSHOW
702 stub ERRSETDATA
703 stub ERRSETHOSTNAMES
704 stub ERRSETTARGETDEVICE
705 stub ERRSETBOUNDS
706 stub ERRCOPYFROMLINK
707 stub ERRQUERYOPEN
708 stub ERRACTIVATE
709 stub ERRCLOSE
710 stub ERRUPDATE
711 stub ERRRECONNECT
712 stub ERRQUERYPROTOCOL
713 stub ERRQUERYOUTOFDATE
714 stub ERROBJECTCONVERT
715 stub ERRGETUPDATEOPTIONS
716 stub ERRSETUPDATEOPTIONS
717 stub ERREXECUTE
718 stub ERROBJECTLONG
800 stub PBLOADFROMSTREAM
801 stub PBCREATEFROMCLIP
802 stub PBCREATELINKFROMCLIP
803 stub PBCREATEFROMTEMPLATE
804 stub PBCREATE
805 stub PBDRAW
806 stub PBQUERYBOUNDS
807 stub PBCOPYTOCLIPBOARD
808 stub PBCREATEFROMFILE
809 stub PBCREATELINKFROMFILE
810 stub PBENUMFORMATS
811 stub PBGETDATA
812 stub PBCREATEINVISIBLE
910 stub OBJQUERYNAME
911 stub OBJRENAME
912 stub OBJQUERYTYPE
913 stub OBJQUERYSIZE
950 stub CONNECTDLGPROC
951 stub SETNETNAME
952 stub CHECKNETDRIVE
953 stub SETNEXTNETDRIVE
954 stub GETTASKVISIBLEWINDOW
name olesvr
id 21
length 31
#1 WEP
2 pascal OleRegisterServer(ptr ptr ptr word word) OleRegisterServer
3 pascal OleRevokeServer(long) OleRevokeServer
......@@ -8,19 +8,19 @@ length 31
5 pascal OleUnblockServer(long ptr) OleUnblockServer
6 pascal OleRegisterServerDoc(long ptr ptr ptr) OleRegisterServerDoc
7 pascal OleRevokeServerDoc(long) OleRevokeServerDoc
#8 OLERENAMESERVERDOC
#9 OLEREVERTSERVERDOC
#10 OLESAVEDSERVERDOC
#11 OLEREVOKEOBJECT
#12 OLEQUERYSERVERVERSION
#21 SRVRWNDPROC
#22 DOCWNDPROC
#23 ITEMWNDPROC
#24 SENDDATAMSG
#25 FINDITEMWND
#26 ITEMCALLBACK
#27 TERMINATECLIENTS
#28 TERMINATEDOCCLIENTS
#29 DELETECLIENTINFO
#30 SENDRENAMEMSG
#31 ENUMFORTERMINATE
8 stub OLERENAMESERVERDOC
9 stub OLEREVERTSERVERDOC
10 stub OLESAVEDSERVERDOC
11 stub OLEREVOKEOBJECT
12 stub OLEQUERYSERVERVERSION
21 stub SRVRWNDPROC
22 stub DOCWNDPROC
23 stub ITEMWNDPROC
24 stub SENDDATAMSG
25 stub FINDITEMWND
26 stub ITEMCALLBACK
27 stub TERMINATECLIENTS
28 stub TERMINATEDOCCLIENTS
29 stub DELETECLIENTINFO
30 stub SENDRENAMEMSG
31 stub ENUMFORTERMINATE
......@@ -67,27 +67,25 @@ struct dll_name_table_entry_s dll_builtin_table[N_BUILTINS] =
{ "COMPOBJ", WineLibSkip(&COMPOBJ_table), 1 },
{ "STORAGE", WineLibSkip(&STORAGE_table), 1 },
{ "WINPROCS", WineLibSkip(&WINPROCS_table), 1 },
{ "DDEML", WineLibSkip(&DDEML_table), 1 }
};
/* don't forget to increase N_BUILTINS in dlls.h if you add a dll */
/* Saved 16-bit stack */
WORD IF1632_Saved16_ss = 0;
WORD IF1632_Saved16_sp = 0;
WORD IF1632_Saved16_bp = 0;
/* Saved 32-bit stack */
DWORD IF1632_Saved32_esp = 0;
DWORD IF1632_Saved32_ebp = 0;
/***********************************************************************
* RELAY_Init
*/
BOOL RELAY_Init(void)
{
WORD codesel, datasel;
struct dll_table_s *table;
struct dll_table_entry_s *entry;
int i, j;
WORD codesel;
/* Allocate the code selector for CallTo16 routines */
......@@ -107,31 +105,6 @@ BOOL RELAY_Init(void)
CALL16_RetAddr_long = MAKELONG( (int)CALL16_Ret_long - (int)CALL16_Start,
codesel );
/* Allocate the selectors for built-in dlls */
for (i = 0; i < N_BUILTINS; i++)
{
table = dll_builtin_table[i].table;
codesel = SELECTOR_AllocBlock( table->code_start,
(int)table->code_end-(int)table->code_start,
SEGMENT_CODE, TRUE, FALSE );
if (!codesel) return FALSE;
if (table->data_start != table->data_end)
datasel = SELECTOR_AllocBlock( table->data_start,
(int)table->data_end-(int)table->data_start,
SEGMENT_DATA, TRUE, FALSE );
else datasel = 0;
entry = table->dll_table;
for (j = 0; j < table->dll_table_length; j++, entry++)
{
if (entry->selector == 1) /* code selector */
entry->selector = codesel;
else if (entry->selector == 2) /* data selector */
entry->selector = datasel;
else entry->selector = 0; /* constant selector */
}
}
return TRUE;
}
......@@ -212,9 +185,10 @@ void RELAY_Unimplemented(void)
{
STACK16FRAME *frame = CURRENT_STACK16;
fprintf( stderr, "No handler for routine %s.%d\n",
fprintf( stderr, "No handler for routine %s.%d (%s)\n",
dll_builtin_table[frame->dll_id-1].dll_name,
frame->ordinal_number );
frame->ordinal_number,
dll_builtin_table[frame->dll_id-1].table->dll_table[frame->ordinal_number].export_name );
exit(1);
}
......
# $Id: shell.spec,v 1.3 1993/07/04 04:04:21 root Exp root $
#
name shell
id 5
length 103
#
# WARNING ! These functions are not documented, so I didn't look for
......
# $Id: sound.spec,v 1.3 1993/07/04 04:04:21 root Exp root $
#
name sound
id 6
length 20
1 pascal OPENSOUND() OpenSound
2 pascal CLOSESOUND() CloseSound
......
name storage
id 23
length 104
#1 STGCREATEDOCFILE
#2 STGCREATEDOCFILEONILOCKBYTES
......
......@@ -2,7 +2,6 @@
#
name stress
id 9
length 15
2 pascal allocmem(long) AllocMem
3 pascal freeallmem() FreeAllMem
......
name system
id 11
length 20
6 pascal GetSystemmsecCount() GetTickCount
name toolhelp
id 12
length 83
50 pascal16 GlobalHandleToSel(word) GlobalHandleToSel
51 pascal16 GlobalFirst(ptr word) GlobalFirst
......@@ -18,21 +17,21 @@ length 83
63 pascal16 TaskFirst(ptr) TaskFirst
64 pascal16 TaskNext(ptr) TaskNext
65 pascal16 TaskFindHandle(ptr word) TaskFindHandle
# 66 1 0f1c STACKTRACEFIRST exported, shared data
# 67 1 0f67 STACKTRACECSIPFIRST exported, shared data
# 68 1 0fca STACKTRACENEXT exported, shared data
66 stub STACKTRACEFIRST
67 stub STACKTRACECSIPFIRST
68 stub STACKTRACENEXT
69 pascal16 ClassFirst(ptr) ClassFirst
70 pascal16 ClassNext(ptr) ClassNext
71 pascal16 SystemHeapInfo(ptr) SystemHeapInfo
72 pascal16 MemManInfo(ptr) MemManInfo
# 73 1 1b72 NOTIFYREGISTER exported, shared data
# 74 1 1c29 NOTIFYUNREGISTER exported, shared data
# 75 1 2060 INTERRUPTREGISTER exported, shared data
# 76 1 2111 INTERRUPTUNREGISTER exported, shared data
# 77 1 26ea TERMINATEAPP exported, shared data
73 stub NOTIFYREGISTER
74 stub NOTIFYUNREGISTER
75 stub INTERRUPTREGISTER
76 stub INTERRUPTUNREGISTER
77 stub TERMINATEAPP
78 pascal MemoryRead(word long ptr long) MemoryRead
79 pascal MemoryWrite(word long ptr long) MemoryWrite
# 80 1 2dae TIMERCOUNT exported, shared data
# 81 1 0d68 TASKSETCSIP exported, shared data
# 82 1 0d97 TASKGETCSIP exported, shared data
# 83 1 0dc0 TASKSWITCH exported, shared data
80 stub TIMERCOUNT
81 stub TASKSETCSIP
82 stub TASKGETCSIP
83 stub TASKSWITCH
# $Id: user.spec,v 1.3 1993/07/04 04:04:21 root Exp root $
#
name user
id 2
length 540
1 pascal MessageBox(word ptr ptr word) MessageBox
#2 OLDEXITWINDOWS
#3 ENABLEOEMLAYER
#4 DISABLEOEMLAYER
2 stub OldExitWindows
3 stub EnableOEMLayer
4 stub DisableOEMLayer
5 pascal InitApp(word) USER_InitApp
6 pascal PostQuitMessage(word) PostQuitMessage
7 pascal ExitWindows(long word) ExitWindows
......@@ -25,10 +22,10 @@ length 540
21 pascal GetDoubleClickTime() GetDoubleClickTime
22 pascal SetFocus(word) SetFocus
23 pascal GetFocus() GetFocus
24 pascal RemoveProp(word ptr) RemoveProp
25 pascal GetProp(word ptr) GetProp
26 pascal SetProp(word ptr word) SetProp
27 pascal EnumProps(word ptr) EnumProps
24 pascal16 RemoveProp(word segptr) RemoveProp
25 pascal16 GetProp(word segptr) GetProp
26 pascal16 SetProp(word segptr word) SetProp
27 pascal16 EnumProps(word segptr) EnumProps
28 pascal ClientToScreen(word ptr) ClientToScreen
29 pascal ScreenToClient(word ptr) ScreenToClient
30 pascal WindowFromPoint(long) WindowFromPoint
......@@ -56,8 +53,8 @@ length 540
#51 BEAR51
52 pascal AnyPopup() AnyPopup
53 pascal DestroyWindow(word) DestroyWindow
54 pascal EnumWindows(ptr long) EnumWindows
55 pascal EnumChildWindows(word ptr long) EnumChildWindows
54 pascal EnumWindows(segptr long) EnumWindows
55 pascal EnumChildWindows(word segptr long) EnumChildWindows
56 pascal MoveWindow(word word word word word word) MoveWindow
57 pascal RegisterClass(ptr) RegisterClass
58 pascal GetClassName(word ptr word) GetClassName
......@@ -116,8 +113,8 @@ length 540
112 pascal WaitMessage() WaitMessage
113 pascal TranslateMessage(ptr) TranslateMessage
114 pascal DispatchMessage(ptr) DispatchMessage
#115 REPLYMESSAGE
#116 POSTAPPMESSAGE
115 stub ReplyMessage
116 stub PostAppMessage
118 pascal RegisterWindowMessage(ptr) RegisterWindowMessage
119 pascal GetMessagePos() GetMessagePos
120 pascal GetMessageTime() GetMessageTime
......@@ -172,7 +169,7 @@ length 540
169 pascal GetCaretBlinkTime() GetCaretBlinkTime
170 pascal ArrangeIconicWindows(word) ArrangeIconicWindows
171 pascal WinHelp(word ptr word long) WinHelp
#172 SWITCHTOTHISWINDOW
172 stub SwitchToThisWindow
173 pascal16 LoadCursor(word segptr) LoadCursor
174 pascal16 LoadIcon(word segptr) LoadIcon
175 pascal16 LoadBitmap(word segptr) LoadBitmap
......@@ -184,7 +181,7 @@ length 540
181 pascal SetSysColors(word ptr ptr) SetSysColors
182 pascal KillSystemTimer(word word) KillSystemTimer
183 pascal GetCaretPos(ptr) GetCaretPos
#184 QUERYSENDMESSAGE
184 stub QuerySendMessage
185 pascal GrayString(word word ptr ptr word word word word word) GrayString
186 pascal SwapMouseButton(word) SwapMouseButton
187 pascal EndMenu() EndMenu
......@@ -224,15 +221,15 @@ length 540
220 pascal LoadMenuIndirect(ptr) LoadMenuIndirect
221 pascal ScrollDC(word s_word s_word ptr ptr word ptr) ScrollDC
222 pascal16 GetKeyboardState(ptr) GetKeyboardState
#223 SETKEYBOARDSTATE
223 stub SetKeyboardState
224 pascal16 GetWindowTask(word) GetWindowTask
225 pascal EnumTaskWindows(word segptr long) EnumTaskWindows
#226 LOCKINPUT
226 stub LockInput
227 pascal GetNextDlgGroupItem(word word word) GetNextDlgGroupItem
228 pascal GetNextDlgTabItem(word word word) GetNextDlgTabItem
229 pascal GetTopWindow(word) GetTopWindow
230 pascal GetNextWindow(word word) GetNextWindow
#231 GETSYSTEMDEBUGSTATE
231 stub GetSystemDebugState
232 pascal SetWindowPos(word word word word word word word) SetWindowPos
233 pascal SetParent(word word) SetParent
234 pascal UnhookWindowsHook(s_word segptr) UnhookWindowsHook
......@@ -248,8 +245,8 @@ length 540
CreateDialogIndirectParam
243 pascal GetDialogBaseUnits() GetDialogBaseUnits
244 pascal EqualRect(ptr ptr) EqualRect
#245 ENABLECOMMNOTIFICATION
#246 EXITWINDOWSEXEC
245 stub EnableCommNotification
246 stub ExitWindowsExec
247 pascal GetCursor() GetCursor
248 pascal GetOpenClipboardWindow() GetOpenClipboardWindow
249 pascal GetAsyncKeyState(word) GetAsyncKeyState
......@@ -269,7 +266,7 @@ length 540
262 pascal GetWindow(word word) GetWindow
263 pascal GetMenuItemCount(word) GetMenuItemCount
264 pascal GetMenuItemID(word word) GetMenuItemID
#265 SHOWOWNEDPOPUPS
265 stub ShowOwnedPopups
266 pascal SetMessageQueue(word) SetMessageQueue
267 pascal ShowScrollBar(word word word) ShowScrollBar
268 pascal GlobalAddAtom(ptr) GlobalAddAtom
......@@ -277,14 +274,14 @@ length 540
270 pascal GlobalFindAtom(ptr) GlobalFindAtom
271 pascal GlobalGetAtomName(word ptr s_word) GlobalGetAtomName
272 pascal IsZoomed(word) IsZoomed
#273 CONTROLPANELINFO
#274 GETNEXTQUEUEWINDOW
#275 REPAINTSCREEN
#276 LOCKMYTASK
273 stub ControlPanelInfo
274 stub GetNextQueueWindow
275 stub RepaintScreen
276 stub LockMyTask
277 pascal GetDlgCtrlID(word) GetDlgCtrlID
278 pascal GetDeskTopHwnd() GetDesktopWindow
#279 OLDSETDESKPATTERN
#280 SETSYSTEMMENU
279 stub OldSetDeskPattern
280 stub SetSystemMenu
281 pascal GetSysColorBrush(word) GetSysColorBrush
282 pascal SelectPalette(word word word) SelectPalette
283 pascal RealizePalette(word) RealizePalette
......@@ -298,49 +295,49 @@ length 540
291 pascal SetWindowsHookEx(s_word segptr word word) SetWindowsHookEx
292 pascal UnhookWindowsHookEx(segptr) UnhookWindowsHookEx
293 pascal CallNextHookEx(segptr s_word word long) CallNextHookEx
#294 LOCKWINDOWUPDATE
294 stub LockWindowUpdate
#299 MOUSE_EVENT
#301 BOZOSLIVEHERE :-))
#306 BEAR306
308 pascal DefDlgProc(word word word long) DefDlgProc
#314 SIGNALPROC
314 stub SignalProc
319 pascal ScrollWindowEx(word s_word s_word ptr ptr word ptr word)
ScrollWindowEx
#320 SYSERRORBOX
#321 SETEVENTHOOK
#322 WINOLDAPPHACKOMATIC
#323 GETMESSAGE2
320 stub SysErrorBox
321 stub SetEventHook
322 stub WinOldAppHackOMatic
323 stub GetMessage2
324 pascal FillWindow(word word word word) FillWindow
325 pascal PaintRect(word word word word ptr) PaintRect
326 pascal16 GetControlBrush(word word word) GetControlBrush
331 pascal EnableHardwareInput(word) EnableHardwareInput
332 return UserYield 0 0
#333 ISUSERIDLE
333 stub IsUserIdle
334 pascal GetQueueStatus(word) GetQueueStatus
335 pascal GetInputState() GetInputState
#336 LOADCURSORICONHANDLER
#337 GETMOUSEEVENTPROC
336 stub LoadCursorIconHandler
337 stub GetMouseEventProc
#341 _FFFE_FARFRAME
#343 GETFILEPORTNAME
#356 LOADDIBCURSORHANDLER
#357 LOADDIBICONHANDLER
343 stub GetFilePortName
356 stub LoadDIBCursorHandler
357 stub LoadDIBIconHandler
358 pascal IsMenu(word) IsMenu
359 pascal GetDCEx(word word long) GetDCEx
#362 DCHOOK
#368 COPYICON
#369 COPYCURSOR
362 stub DCHook
368 stub CopyIcon
369 stub CopyCursor
370 pascal GetWindowPlacement(word ptr) GetWindowPlacement
371 pascal SetWindowPlacement(word ptr) SetWindowPlacement
#372 GETINTERNALICONHEADER
372 stub GetInternalIconHeader
373 pascal SubtractRect(ptr ptr ptr) SubtractRect
#400 FINALUSERINIT
400 stub FinalUserInit
402 pascal GetPriorityClipboardFormat(word ptr s_word)
GetPriorityClipboardFormat
403 pascal UnregisterClass(ptr word) UnregisterClass
404 pascal GetClassInfo(word ptr ptr) GetClassInfo
404 pascal GetClassInfo(word segptr ptr) GetClassInfo
406 pascal CreateCursor(word word word word word ptr ptr) CreateCursor
407 pascal CreateIcon(word word word byte byte ptr ptr) CreateIcon
#408 CREATECURSORICONINDIRECT
408 stub CreateCursorIconIndirect
410 pascal InsertMenu(word word word word ptr) InsertMenu
411 pascal AppendMenu(word word word ptr) AppendMenu
412 pascal RemoveMenu(word word word) RemoveMenu
......@@ -354,8 +351,8 @@ length 540
# windows_wsprintf() handles arguments itself, as libc can't handle an
# 16-bit stack. DLLRelay() will pass 16-bit stack pointer as 1st arg.
421 pascal wvsprintf(ptr ptr ptr) wvsprintf
#422 DLGDIRSELECTEX
#423 DLGDIRSELECTCOMBOBOXEX
422 stub DlgDirSelectEx
423 stub DlgDirSelectComboBoxEx
430 pascal16 lstrcmp(ptr ptr) lstrcmp
431 pascal AnsiUpper(segptr) WIN16_AnsiUpper
432 pascal AnsiLower(segptr) WIN16_AnsiLower
......@@ -371,23 +368,23 @@ length 540
452 pascal CreateWindowEx(long ptr ptr long s_word s_word s_word s_word
word word word segptr) CreateWindowEx
454 pascal AdjustWindowRectEx(ptr long word long) AdjustWindowRectEx
#455 GETICONID
#456 LOADICONHANDLER
455 stub GetIconId
456 stub LoadIconHandler
457 pascal DestroyIcon(word) DestroyIcon
458 pascal DestroyCursor(word) DestroyCursor
#459 DUMPICON
459 stub DumpIcon
460 pascal GetInternalWindowPos(word ptr ptr) GetInternalWindowPos
461 pascal SetInternalWindowPos(word word ptr ptr) SetInternalWindowPos
#462 CALCCHILDSCROLL
#463 SCROLLCHILDREN
#464 DRAGOBJECT
#465 DRAGDETECT
462 stub CalcChildScroll
463 stub ScrollChildren
464 stub DragObject
465 stub DragDetect
466 pascal DrawFocusRect(word ptr) DrawFocusRect
#470 STRINGFUNC
470 stub StringFunc
471 pascal16 lstrcmpi(ptr ptr) lstrcmpi
472 pascal AnsiNext(segptr) AnsiNext
473 pascal AnsiPrev(segptr segptr) AnsiPrev
#480 GETUSERLOCALOBJTYPE
480 stub GetUserLocalObjType
#481 HARDWARE_EVENT
482 pascal16 EnableScrollBar(word word word) EnableScrollBar
483 pascal SystemParametersInfo(word word ptr word) SystemParametersInfo
......@@ -413,8 +410,8 @@ length 540
518 pascal16 WNetCancelConnection(ptr word) WNetCancelConnection
519 pascal WNetGetError(ptr) WNetGetError
520 pascal WNetGetErrorText(word ptr ptr) WNetGetErrorText
#521 WNETENABLE
#522 WNETDISABLE
521 stub WNetEnable
522 stub WNetDisable
523 pascal WNetRestoreConnection(word ptr) WNetRestoreConnection
524 pascal WNetWriteJob(word ptr ptr) WNetWriteJob
525 pascal WnetConnectDialog(word word) WNetConnectDialog
......
name win87em
id 4
length 10
1 register _fpMath() WIN87_fpmath
3 pascal __WinEm87Info(ptr word) WIN87_WinEm87Info
......
name winprocs
id 24
length 23
1 pascal ButtonWndProc(word word word long) ButtonWndProc
2 pascal StaticWndProc(word word word long) StaticWndProc
......@@ -25,3 +24,4 @@ length 23
21 pascal AboutDlgProc(word word word long) AboutDlgProc
22 pascal AboutWine_Proc(word word word long) AboutWine_Proc
23 pascal16 CARET_Callback(word word word long) CARET_Callback
24 pascal16 TASK_Reschedule() TASK_Reschedule
......@@ -5,7 +5,6 @@
#
name winsock
id 8
length 155
1 pascal16 accept(word ptr ptr) WINSOCK_accept
2 pascal16 bind(word ptr word) WINSOCK_bind
......
......@@ -11,8 +11,8 @@
#define CONV_CHAR_TO_LONG(x) ((unsigned long)(x) >> 24)
#define CONV_SHORT_TO_LONG(x) ((unsigned long)(x) >> 16)
#define CONV_BITMAPINFO ARCH_ConvBitmapInfo
#define CONV_BITMAPCOREHEADER ARCH_ConvCoreHeader
#define CONV_BITMAPINFO(a) ARCH_ConvBitmapInfo(a)
#define CONV_BITMAPCOREHEADER(a) ARCH_ConvCoreHeader(a)
#else
#define CONV_LONG(a) (a)
#define CONV_SHORT(a) (a)
......
......@@ -18,6 +18,7 @@
/* by the build program to generate the file if1632/call16.S */
/* func ds parameters */
extern WORD CallTo16_word_ ( FARPROC, WORD );
extern WORD CallTo16_word_wl ( FARPROC, WORD, WORD, LONG );
extern WORD CallTo16_word_ll ( FARPROC, WORD, LONG, LONG );
extern WORD CallTo16_word_wwl ( FARPROC, WORD, WORD, WORD, LONG );
......@@ -28,8 +29,8 @@ extern LONG CallTo16_long_wwwl ( FARPROC, WORD, WORD, WORD, WORD, LONG );
extern WORD CallTo16_word_wllwl( FARPROC, WORD, WORD, LONG, LONG, WORD, LONG );
extern WORD CallTo16_word_wwlll( FARPROC, WORD, WORD, WORD, LONG, LONG, LONG );
extern WORD CallTo16_regs_( FARPROC func, WORD ds, WORD es, WORD ax, WORD bx,
WORD cx, WORD dx, WORD si, WORD di );
extern WORD CallTo16_regs_( FARPROC func, WORD ds, WORD es, WORD bp, WORD ax,
WORD bx, WORD cx, WORD dx, WORD si, WORD di );
#define CallEnumChildProc( func, hwnd, lParam ) \
CallTo16_word_wl( func, CURRENT_DS, hwnd, lParam )
......@@ -55,8 +56,8 @@ extern WORD CallTo16_regs_( FARPROC func, WORD ds, WORD es, WORD ax, WORD bx,
CallTo16_long_wwl( func, CURRENT_DS, code, wParam, lParam )
#define CallTimeFuncProc( func, id, msg, dwUser, dw1, dw2 ) \
CallTo16_word_wwlll( func, CURRENT_DS, id, msg, dwUser, dw1, dw2 )
#define CallWndProc( func, hwnd, msg, wParam, lParam ) \
CallTo16_long_wwwl( func, CURRENT_DS, hwnd, msg, wParam, lParam )
#define CallWndProc( func, ds, hwnd, msg, wParam, lParam ) \
CallTo16_long_wwwl( func, ds, hwnd, msg, wParam, lParam )
#else /* WINELIB */
......
......@@ -12,7 +12,6 @@ struct DosDeviceStruct {
int baudrate;
};
extern void Comm_Init(void);
extern void Comm_DeInit(void);
extern void COMM_Init(void);
#endif /* COMM_H */
......@@ -50,23 +50,24 @@ typedef struct {
DWORD lStructSize;
HWND hwndOwner;
HINSTANCE hInstance;
LPCSTR lpstrFilter;
LPSTR lpstrCustomFilter;
SEGPTR lpstrFilter;
SEGPTR lpstrCustomFilter;
DWORD nMaxCustFilter;
DWORD nFilterIndex;
LPSTR lpstrFile;
SEGPTR lpstrFile;
DWORD nMaxFile;
LPSTR lpstrFileTitle;
SEGPTR lpstrFileTitle;
DWORD nMaxFileTitle;
LPCSTR lpstrInitialDir;
LPCSTR lpstrTitle;
SEGPTR lpstrInitialDir;
SEGPTR lpstrTitle;
DWORD Flags;
UINT nFileOffset;
UINT nFileExtension;
LPCSTR lpstrDefExt;
SEGPTR lpstrDefExt;
LPARAM lCustData;
UINT (CALLBACK *lpfnHook)(HWND, UINT, WPARAM, LPARAM);
LPCSTR lpTemplateName;
/* UINT (CALLBACK *lpfnHook)(HWND, UINT, WPARAM, LPARAM);*/
FARPROC lpfnHook;
SEGPTR lpTemplateName;
} OPENFILENAME;
typedef OPENFILENAME * LPOPENFILENAME;
......@@ -98,13 +99,14 @@ typedef struct {
HINSTANCE hInstance; /* instance handle of.EXE that */
/* contains cust. dlg. template */
DWORD Flags; /* one or more of the FR_?? */
LPSTR lpstrFindWhat; /* ptr. to search string */
LPSTR lpstrReplaceWith; /* ptr. to replace string */
SEGPTR lpstrFindWhat; /* ptr. to search string */
SEGPTR lpstrReplaceWith; /* ptr. to replace string */
UINT wFindWhatLen; /* size of find buffer */
UINT wReplaceWithLen; /* size of replace buffer */
LPARAM lCustData; /* data passed to hook fn. */
UINT (CALLBACK* lpfnHook)(HWND, UINT, WPARAM, LPARAM);
LPCSTR lpTemplateName; /* custom template name */
/* UINT (CALLBACK* lpfnHook)(HWND, UINT, WPARAM, LPARAM); */
FARPROC lpfnHook;
SEGPTR lpTemplateName; /* custom template name */
} FINDREPLACE;
typedef FINDREPLACE *LPFINDREPLACE;
......@@ -130,17 +132,18 @@ typedef FINDREPLACE *LPFINDREPLACE;
typedef struct {
DWORD lStructSize;
HWND hwndOwner; /* caller's window handle */
HDC hDC; /* printer DC/IC or NULL */
LOGFONT FAR* lpLogFont; /* ptr. to a LOGFONT struct */
HDC hDC; /* printer DC/IC or NULL */
SEGPTR lpLogFont; /* ptr. to a LOGFONT struct */
short iPointSize; /* 10 * size in points of selected font */
DWORD Flags; /* enum. type flags */
COLORREF rgbColors; /* returned text color */
LPARAM lCustData; /* data passed to hook fn. */
UINT (CALLBACK* lpfnHook)(HWND, UINT, WPARAM, LPARAM);
LPCSTR lpTemplateName; /* custom template name */
LPARAM lCustData; /* data passed to hook fn. */
/* UINT (CALLBACK* lpfnHook)(HWND, UINT, WPARAM, LPARAM);*/
FARPROC lpfnHook;
SEGPTR lpTemplateName; /* custom template name */
HINSTANCE hInstance; /* instance handle of.EXE that */
/* contains cust. dlg. template */
LPSTR lpszStyle; /* return the style field here */
SEGPTR lpszStyle; /* return the style field here */
/* must be LF_FACESIZE or bigger */
UINT nFontType; /* same value reported to the */
/* EnumFonts callback with the */
......@@ -204,7 +207,7 @@ typedef struct {
HWND hwndOwner;
HGLOBAL hDevMode;
HGLOBAL hDevNames;
HDC hDC;
HDC hDC;
DWORD Flags;
UINT nFromPage;
UINT nToPage;
......@@ -213,10 +216,12 @@ typedef struct {
UINT nCopies;
HINSTANCE hInstance;
LPARAM lCustData;
UINT (CALLBACK* lpfnPrintHook)(HWND, UINT, WPARAM, LPARAM);
UINT (CALLBACK* lpfnSetupHook)(HWND, UINT, WPARAM, LPARAM);
LPCSTR lpPrintTemplateName;
LPCSTR lpSetupTemplateName;
/* UINT (CALLBACK* lpfnPrintHook)(HWND, UINT, WPARAM, LPARAM);
UINT (CALLBACK* lpfnSetupHook)(HWND, UINT, WPARAM, LPARAM);*/
FARPROC lpfnPrintHook;
FARPROC lpfnSetupHook;
SEGPTR lpPrintTemplateName;
SEGPTR lpSetupTemplateName;
HGLOBAL hPrintTemplate;
HGLOBAL hSetupTemplate;
} PRINTDLG;
......
......@@ -17,6 +17,7 @@ typedef struct
BOOL fTileWallPaper;
} DESKTOPINFO;
extern BOOL DESKTOP_Init();
extern BOOL DESKTOP_SetPattern(char *pattern );
#endif /* DESKTOP_H */
......@@ -11,22 +11,9 @@
#define MAX_NAME_LENGTH 64
typedef struct resource_name_table
{
struct resource_name_table *next;
unsigned short type_ord;
unsigned short id_ord;
char id[MAX_NAME_LENGTH];
} RESNAMTAB;
struct ne_data {
struct ne_header_s *ne_header;
struct ne_segment_table_entry_s *seg_table;
unsigned short *selector_table;
char *lookup_table;
char *nrname_table;
char *rname_table;
RESNAMTAB *resnamtab;
};
struct pe_data {
......@@ -43,8 +30,10 @@ struct w_files
struct w_files * next;
char * name; /* Name, as it appears in the windows binaries */
char * filename; /* Actual name of the unix file that satisfies this */
int type; /* DLL or EXE */
int fd;
unsigned short hinstance;
HANDLE hModule;
int initialised;
struct mz_header_s *mz_header;
struct ne_data *ne;
......@@ -59,12 +48,6 @@ extern struct w_files *wine_files;
struct dll_table_entry_s
{
/*
* Relocation data
*/
WORD selector; /* Selector of entry point */
WORD offset; /* Offset in segment of entry point */
/*
* 16->32 bit interface data
*/
char *export_name;
......@@ -78,10 +61,11 @@ struct dll_table_s
struct dll_table_entry_s *dll_table;
int dll_table_length;
int dll_number;
void *code_start; /* 32-bit address of DLL code */
void *code_end;
void *data_start; /* 32-bit address of DLL data */
void *data_end;
BYTE *code_start; /* 32-bit address of DLL code */
BYTE *data_start; /* 32-bit address of DLL data */
BYTE *module_start; /* 32-bit address of the module data */
BYTE *module_end;
HMODULE hModule;
};
struct dll_name_table_entry_s
......@@ -115,8 +99,9 @@ extern struct dll_table_s OLESVR_table;
extern struct dll_table_s COMPOBJ_table;
extern struct dll_table_s STORAGE_table;
extern struct dll_table_s WINPROCS_table;
extern struct dll_table_s DDEML_table;
#define N_BUILTINS 24
#define N_BUILTINS 25
#endif /* DLLS_H */
......
......@@ -31,6 +31,7 @@ extern struct dosdirent *DOS_readdir(struct dosdirent *de);
extern void DOS_closedir(struct dosdirent *de);
extern void DOS_ExpandToFullPath(char *filename, int drive);
extern void DOS_ExpandToFullUnixPath(char *filename);
extern char *DOS_GetRedirectedDir(int drive);
extern char WindowsPath[256];
......
......@@ -9,8 +9,12 @@
#include "wintypes.h"
extern HGLOBAL GLOBAL_CreateBlock( WORD flags, void *ptr, DWORD size,
HGLOBAL hOwner, BOOL isCode,
BOOL is32Bit, BOOL isReadOnly );
extern BOOL GLOBAL_FreeBlock( HGLOBAL handle );
extern HGLOBAL GLOBAL_Alloc( WORD flags, DWORD size, HGLOBAL hOwner,
BOOL isCode, BOOL isReadOnly );
BOOL isCode, BOOL is32Bit, BOOL isReadOnly );
extern WORD GlobalHandleToSel( HGLOBAL handle );
#endif /* __WINE_GLOBAL_H */
/*
* Module definitions
*
* Copyright 1995 Alexandre Julliard
*/
#ifndef _WINE_MODULE_H
#define _WINE_MODULE_H
#include "wintypes.h"
#ifndef WINELIB
#pragma pack(1)
#endif
/* In-memory module structure. See 'Windows Internals' p. 219 */
typedef struct
{
WORD magic; /* 'NE' signature */
WORD count; /* Usage count */
WORD entry_table; /* Near ptr to entry table */
WORD next; /* Selector to next module */
WORD dgroup_entry; /* Near ptr to segment entry for DGROUP */
WORD fileinfo; /* Near ptr to file info (LOADEDFILEINFO) */
WORD flags; /* Module flags */
WORD dgroup; /* Logical segment for DGROUP */
WORD heap_size; /* Initial heap size */
WORD stack_size; /* Initial stack size */
WORD ip; /* Initial ip */
WORD cs; /* Initial cs (logical segment) */
WORD sp; /* Initial stack pointer */
WORD ss; /* Initial ss (logical segment) */
WORD seg_count; /* Number of segments in segment table */
WORD modref_count; /* Number of module references */
WORD nrname_size; /* Size of non-resident names table */
WORD seg_table; /* Near ptr to segment table */
WORD res_table; /* Near ptr to resource table */
WORD name_table; /* Near ptr to resident names table */
WORD modref_table; /* Near ptr to module reference table */
WORD import_table; /* Near ptr to imported names table */
DWORD nrname_fpos; /* File offset of non-resident names table */
WORD moveable_entries; /* Number of moveable entries in entry table */
WORD alignment; /* Alignment shift count */
WORD truetype; /* Set to 2 if TrueType font */
BYTE os_flags; /* Operating system flags */
BYTE misc_flags; /* Misc. flags */
WORD reserved; /* Same value as import_table */
HANDLE nrname_handle; /* Handle to non-resident name table in memory */
WORD min_swap_area; /* Min. swap area size */
WORD expected_version; /* Expected Windows version */
} NE_MODULE;
/* Loaded file info */
typedef struct
{
BYTE length; /* Length of the structure, not counting this byte */
BYTE fixed_media; /* File is on removable media */
WORD error; /* Error code (?) */
WORD date; /* File date in MS-DOS format */
WORD time; /* File time in MS-DOS format */
char filename[1]; /* File name */
} LOADEDFILEINFO;
/* In-memory segment table */
typedef struct
{
WORD filepos; /* Position in file, in sectors */
WORD size; /* Segment size on disk */
WORD flags; /* Segment flags */
WORD minsize; /* Min. size of segment in memory */
WORD selector; /* Selector of segment in memory */
} SEGTABLEENTRY;
#define NE_SEG_TABLE(pModule) \
((SEGTABLEENTRY *)((char *)(pModule) + (pModule)->seg_table))
#define NE_MODULE_TABLE(pModule) \
((WORD *)((char *)(pModule) + (pModule)->modref_table))
#ifndef WINELIB
#pragma pack(4)
#endif
extern BOOL MODULE_Init(void);
extern int MODULE_OpenFile( HMODULE hModule );
extern LPSTR MODULE_GetModuleName( HMODULE hModule );
extern WORD MODULE_GetOrdinal( HMODULE hModule, char *name );
extern DWORD MODULE_GetEntryPoint( HMODULE hModule, WORD ordinal );
extern void MODULE_FixupPrologs( HMODULE hModule );
#endif /* _WINE_MODULE_H */
......@@ -3,8 +3,8 @@
extern int NE_FixupSegment(struct w_files *wpnt, int segment_num);
extern int NE_unloadImage(struct w_files *wpnt);
extern int NE_StartProgram(struct w_files *wpnt);
extern void NE_InitDLL(struct w_files *wpnt);
extern int NE_StartProgram( HMODULE hModule );
extern BOOL NE_InitDLL( HMODULE hModule );
extern HINSTANCE NE_LoadImage(struct w_files *wpnt);
#endif /* __WINE_NE_IMAGE_H */
......@@ -6,15 +6,17 @@
#ifndef NEEXE_H
#define NEEXE_H
#include "wintypes.h"
/*
* Old MZ header for DOS programs. Actually just a couple of fields
* from it, so that we can find the start of the NE header.
*/
struct mz_header_s
{
u_short mz_magic; /* MZ Header signature */
u_char dont_care[0x3a]; /* MZ Header stuff */
u_short ne_offset; /* Offset to extended header */
WORD mz_magic; /* MZ Header signature */
BYTE dont_care[0x3a]; /* MZ Header stuff */
WORD ne_offset; /* Offset to extended header */
};
#define MZ_SIGNATURE ('M' | ('Z' << 8))
......@@ -24,38 +26,38 @@ struct mz_header_s
*/
struct ne_header_s
{
u_short ne_magic; /* NE signature 'NE' */
u_char linker_version; /* Linker version number */
u_char linker_revision; /* Linker revision number */
u_short entry_tab_offset; /* Offset to entry table relative to NE */
u_short entry_tab_length; /* Length of entry table in bytes */
u_long reserved1; /* Reserved by Microsoft */
u_short format_flags; /* Flags about segments in this file */
u_short auto_data_seg; /* Automatic data segment number */
u_short local_heap_length; /* Initial size of local heap */
u_short stack_length; /* Initial size of stack */
u_short ip; /* Initial IP */
u_short cs; /* Initial CS */
u_short sp; /* Initial SP */
u_short ss; /* Initial SS */
u_short n_segment_tab; /* # of entries in segment table */
u_short n_mod_ref_tab; /* # of entries in module reference tab.*/
u_short nrname_tab_length; /* Length of nonresident-name table */
u_short segment_tab_offset; /* Offset to segment table */
u_short resource_tab_offset;/* Offset to resource table */
u_short rname_tab_offset; /* Offset to resident-name table */
u_short moduleref_tab_offset;/* Offset to module reference table */
u_short iname_tab_offset; /* Offset to imported name table */
u_long nrname_tab_offset; /* Offset to nonresident-name table */
u_short n_mov_entry_points; /* # of movable entry points */
u_short align_shift_count; /* Logical sector alignment shift count */
u_short n_resource_seg; /* # of resource segments */
u_char operating_system; /* Flags indicating target OS */
u_char additional_flags; /* Additional information flags */
u_short fastload_offset; /* Offset to fast load area */
u_short fastload_length; /* Length of fast load area */
u_short reserved2; /* Reserved by Microsoft */
u_short expect_version; /* Expected Windows version number */
WORD ne_magic; /* NE signature 'NE' */
BYTE linker_version; /* Linker version number */
BYTE linker_revision; /* Linker revision number */
WORD entry_tab_offset; /* Offset to entry table relative to NE */
WORD entry_tab_length; /* Length of entry table in bytes */
DWORD reserved1; /* Reserved by Microsoft */
WORD format_flags; /* Flags about segments in this file */
WORD auto_data_seg; /* Automatic data segment number */
WORD local_heap_length; /* Initial size of local heap */
WORD stack_length; /* Initial size of stack */
WORD ip; /* Initial IP */
WORD cs; /* Initial CS */
WORD sp; /* Initial SP */
WORD ss; /* Initial SS */
WORD n_segment_tab; /* # of entries in segment table */
WORD n_mod_ref_tab; /* # of entries in module reference tab.*/
WORD nrname_tab_length; /* Length of nonresident-name table */
WORD segment_tab_offset; /* Offset to segment table */
WORD resource_tab_offset;/* Offset to resource table */
WORD rname_tab_offset; /* Offset to resident-name table */
WORD moduleref_tab_offset;/* Offset to module reference table */
WORD iname_tab_offset; /* Offset to imported name table */
DWORD nrname_tab_offset; /* Offset to nonresident-name table */
WORD n_mov_entry_points; /* # of movable entry points */
WORD align_shift_count; /* Logical sector alignment shift count */
WORD n_resource_seg; /* # of resource segments */
BYTE operating_system; /* Flags indicating target OS */
BYTE additional_flags; /* Additional information flags */
WORD fastload_offset; /* Offset to fast load area */
WORD fastload_length; /* Length of fast load area */
WORD reserved2; /* Reserved by Microsoft */
WORD expect_version; /* Expected Windows version number */
};
#define NE_SIGNATURE ('N' | ('E' << 8))
......@@ -88,10 +90,10 @@ struct ne_header_s
*/
struct ne_segment_table_entry_s
{
u_short seg_data_offset; /* Sector offset of segment data */
u_short seg_data_length; /* Length of segment data */
u_short seg_flags; /* Flags associated with this segment */
u_short min_alloc; /* Minimum allocation size for this */
WORD seg_data_offset; /* Sector offset of segment data */
WORD seg_data_length; /* Length of segment data */
WORD seg_flags; /* Flags associated with this segment */
WORD min_alloc; /* Minimum allocation size for this */
};
/*
......@@ -113,11 +115,11 @@ struct ne_segment_table_entry_s
*/
struct relocation_entry_s
{
u_char address_type; /* Relocation address type */
u_char relocation_type; /* Relocation type */
u_short offset; /* Offset in segment to fixup */
u_short target1; /* Target specification */
u_short target2; /* Target specification */
BYTE address_type; /* Relocation address type */
BYTE relocation_type; /* Relocation type */
WORD offset; /* Offset in segment to fixup */
WORD target1; /* Target specification */
WORD target2; /* Target specification */
};
/*
......
/*
* Resource definitions
*
* Copyright 1995 Alexandre Julliard
*/
#ifndef __WINE_RESOURCE_H
#define __WINE_RESOURCE_H
#include "dlls.h"
#include "wintypes.h"
typedef struct resource_s {
struct resource_s *next;
HANDLE info_mem; /* this struct */
HANDLE rsc_mem; /* resource data */
/* */
HANDLE instance; /* resource instance */
LPSTR name; /* resource name */
LPSTR type; /* resource type */
int count; /* lock count */
int size; /* resource size */
int fd; /* fd */
int offset; /* offset */
struct w_files *wpnt;
} RESOURCE;
extern int NE_AccessResource( HMODULE hModule, HRSRC hRsrc );
extern BOOL NE_FreeResource( HMODULE hModule, HGLOBAL handle );
extern HRSRC NE_FindResource( HMODULE hModule, SEGPTR typeId, SEGPTR resId );
extern DWORD NE_SizeofResource( HMODULE hModule, HRSRC hRsrc );
extern SEGPTR NE_LockResource( HMODULE hModule, HGLOBAL handle );
extern HGLOBAL NE_AllocResource( HMODULE hModule, HRSRC hRsrc, DWORD size );
extern HGLOBAL NE_LoadResource( HMODULE hModule, HRSRC hRsrc );
struct ResourceTable{
struct ResourceTable
{
int id,type;
char *name;
unsigned char* value;
unsigned size;
};
#endif /* __WINE_RESOURCE_H */
......@@ -18,14 +18,12 @@ extern WORD SELECTOR_ReallocBlock( WORD sel, void *base, DWORD size,
#include "dlls.h"
extern WORD *CreateSelectors( struct w_files * wpnt );
extern void CreateSelectors(void);
extern unsigned int GetEntryDLLName(char *dll_name, char *function,
WORD *sel, WORD *offset);
extern unsigned int GetEntryDLLOrdinal(char *dll_name, int ordinal,
WORD *sel, WORD *offset);
extern unsigned int GetEntryPointFromOrdinal(struct w_files * wpnt,
int ordinal);
extern void InitSelectors(void);
extern WNDPROC GetWndProcEntry16( char *name );
......
......@@ -14,10 +14,10 @@
#pragma pack(1)
#endif
/* 16-bit stack layout after CallTo32() */
typedef struct
{
WORD saved_ss; /* saved previous 16-bit stack */
WORD saved_bp;
WORD saved_sp;
WORD ds; /* 16-bit ds */
DWORD entry_point WINE_PACKED; /* entry point to call */
......@@ -29,13 +29,32 @@ typedef struct
WORD args[1]; /* arguments to API function */
} STACK16FRAME;
/* 32-bit stack layout after CallTo16() */
typedef struct
{
DWORD saved_esp; /* saved previous 32-bit stack */
DWORD edi; /* saved registers */
DWORD esi;
DWORD edx;
DWORD ecx;
DWORD ebx;
DWORD ebp; /* saved 32-bit frame pointer */
DWORD retaddr; /* return address */
DWORD codeselector; /* code selector for return address */
DWORD args[1]; /* arguments to 16-bit function */
} STACK32FRAME;
#ifndef WINELIB
#pragma pack(4)
#endif
/* Saved 16-bit stack */
extern WORD IF1632_Saved16_ss;
extern WORD IF1632_Saved16_sp;
extern WORD IF1632_Saved16_bp;
/* Saved 32-bit stack */
extern DWORD IF1632_Saved32_esp;
#define CURRENT_STACK16 \
((STACK16FRAME *)PTR_SEG_OFF_TO_LIN(IF1632_Saved16_ss,IF1632_Saved16_sp))
......
/*
* Task definitions
*
* Copyright 1995 Alexandre Julliard
*/
#ifndef TASK_H
#define TASK_H
#ifndef _WINE_TASK_H
#define _WINE_TASK_H
#include "toolhelp.h"
#include "wintypes.h"
typedef struct {
TASKENTRY te;
int unix_pid;
HICON hIcon;
HWND *lpWndList;
void *lpPrevTask;
void *lpNextTask;
} WINETASKENTRY;
typedef WINETASKENTRY *LPWINETASKENTRY;
#ifndef WINELIB
#pragma pack(1)
#endif
#define MAXWIN_PER_TASK 256
/* Process database (i.e. a normal DOS PSP) */
HANDLE CreateNewTask(HINSTANCE hInst, HTASK hTaskParent);
BOOL RemoveWindowFromTask(HTASK hTask, HWND hWnd);
BOOL AddWindowToTask(HTASK hTask, HWND hWnd);
typedef struct
{
WORD int20; /* int 20h instruction */
WORD nextParagraph; /* Segment of next paragraph */
BYTE reserved1;
BYTE dispatcher[5]; /* Long call to DOS */
DWORD savedint22; /* Saved int 22h handler */
DWORD savedint23; /* Saved int 23h handler */
DWORD savedint24; /* Saved int 24h handler */
WORD parentPSP; /* Selector of parent PSP */
BYTE fileHandles[20]; /* Open file handles */
HANDLE environment; /* Selector of environment */
WORD reserved2[23];
BYTE fcb1[16]; /* First FCB */
BYTE fcb2[20]; /* Second FCB */
BYTE cmdLine[128]; /* Command-line (first byte is length) */
} PDB;
#endif /* TASK_H */
/* Segment containing MakeProcInstance() thunks */
typedef struct
{
WORD next; /* Selector of next segment */
WORD magic; /* Thunks signature */
WORD unused;
WORD free; /* Head of the free list */
WORD thunks[4]; /* Each thunk is 4 words long */
} THUNKS;
#define THUNK_MAGIC ('P' | ('T' << 8))
/* Task database. See 'Windows Internals' p. 226 */
typedef struct
{
HTASK hNext; /* Selector of next TDB */
WORD sp; /* Stack pointer of task */
WORD ss; /* Stack segment of task */
WORD nEvents; /* Events for this task */
char priority; /* Task priority, between -32 and 15 */
BYTE unused1;
HGLOBAL hStack32; /* Handle to 32-bit stack */
WORD hSelf; /* Selector of this TDB */
WORD unused3;
DWORD esp; /* 32-bit stack pointer */
WORD ctrlword8087; /* 80x87 control word */
WORD flags; /* Task flags */
WORD error_flags; /* Error handling flags */
WORD version; /* Expected Windows version */
HANDLE hInstance; /* Instance handle for this task */
HMODULE hModule; /* Module handle */
HANDLE hQueue; /* Selector of task message queue */
HTASK hParent; /* Selector of TDB of parent task */
WORD signal_flags; /* Flags related to signal handler */
DWORD sighandler WINE_PACKED; /* Signal handler */
DWORD userhandler WINE_PACKED; /* USER signal handler */
DWORD discardhandler WINE_PACKED; /* Handler for GlobalDiscard() */
DWORD int0 WINE_PACKED; /* int 0 (divide by zero) handler */
DWORD int2 WINE_PACKED; /* int 2 (NMI) handler */
DWORD int4 WINE_PACKED; /* int 4 (INTO) handler */
DWORD int6 WINE_PACKED; /* int 6 (invalid opcode) handler */
DWORD int7 WINE_PACKED; /* int 7 (coprocessor) handler */
DWORD int3e WINE_PACKED; /* int 3e (80x87 emulator) handler */
DWORD int75 WINE_PACKED; /* int 75 (80x87 error) handler */
DWORD compat_flags WINE_PACKED; /* Compatibility flags */
BYTE unused4[14];
HANDLE hPDB; /* Selector of PDB (i.e. PSP) */
DWORD dta WINE_PACKED; /* Current DTA */
BYTE curdrive; /* Current drive */
BYTE curdir[65]; /* Current directory */
WORD unused5;
HTASK hYieldTo; /* Next task to schedule */
DWORD dlls_to_init; /* Ptr to list of DLL to initialize */
HANDLE hCSAlias; /* Code segment alias for this TDB */
THUNKS thunks WINE_PACKED; /* Make proc instance thunks */
WORD more_thunks[6*4]; /* Space for 6 more thunks */
BYTE module_name[8]; /* Module name for task */
WORD magic; /* TDB signature */
DWORD unused7;
PDB pdb; /* PDB for this task */
} TDB;
#define TDB_MAGIC ('T' | ('D' << 8))
/* TDB flags */
#define TDBF_WINOLDAP 0x0001
#define TDBF_OS2APP 0x0008
#define TDBF_WIN32S 0x0010
#ifndef WINELIB
#pragma pack(4)
#endif
/* TASK_Reschedule() 16-bit entry point */
extern FARPROC RELAY_RescheduleProcAddr;
#endif /* _WINE_TASK_H */
......@@ -35,7 +35,7 @@ typedef struct tagWND
RECT rectNormal; /* Window rect. when in normal state */
POINT ptIconPos; /* Icon position */
POINT ptMaxPos; /* Maximized window position */
HANDLE hmemTaskQ; /* Task queue global memory handle */
HGLOBAL hmemTaskQ; /* Task queue global memory handle */
HRGN hrgnUpdate; /* Update region */
HWND hwndPrevActive; /* Previous active top-level window */
HWND hwndLastActive; /* Last active popup hwnd */
......@@ -51,7 +51,6 @@ typedef struct tagWND
Window window; /* X window (only for top-level windows) */
HMENU hSysMenu; /* window's copy of System Menu */
HANDLE hProp; /* Handle of Properties List */
HTASK hTask; /* Task Handle of the owner */
WORD wExtra[1]; /* Window extra bytes */
} WND;
......
......@@ -567,7 +567,9 @@ typedef struct tagLOGBRUSH
/* Fonts */
#define LF_FACESIZE 32
#define LF_FACESIZE 32
#define LF_FULLFACESIZE 64
typedef struct tagLOGFONT
{
INT lfHeight, lfWidth, lfEscapement, lfOrientation, lfWeight;
......@@ -576,6 +578,13 @@ typedef struct tagLOGFONT
BYTE lfFaceName[LF_FACESIZE] WINE_PACKED;
} LOGFONT, *PLOGFONT, *NPLOGFONT, *LPLOGFONT;
typedef struct tagENUMLOGFONT
{
LOGFONT elfLogFont;
BYTE elfFullName[LF_FULLFACESIZE] WINE_PACKED;
BYTE elfStyle[LF_FACESIZE] WINE_PACKED;
} ENUMLOGFONT,*PENUMLOGFONT,*NPENUMLOGFONT,*LPENUMLOGFONT;
/* lfWeight values */
#define FW_DONTCARE 0
#define FW_THIN 100
......@@ -1248,6 +1257,21 @@ typedef struct tagCOMSTAT
#define MAKEINTRESOURCE(i) (SEGPTR)((DWORD)((WORD)(i)))
/* Predefined resource types */
#define RT_CURSOR MAKEINTRESOURCE(1)
#define RT_BITMAP MAKEINTRESOURCE(2)
#define RT_ICON MAKEINTRESOURCE(3)
#define RT_MENU MAKEINTRESOURCE(4)
#define RT_DIALOG MAKEINTRESOURCE(5)
#define RT_STRING MAKEINTRESOURCE(6)
#define RT_FONTDIR MAKEINTRESOURCE(7)
#define RT_FONT MAKEINTRESOURCE(8)
#define RT_ACCELERATOR MAKEINTRESOURCE(9)
#define RT_RCDATA MAKEINTRESOURCE(10)
#define RT_GROUP_CURSOR MAKEINTRESOURCE(12)
#define RT_GROUP_ICON MAKEINTRESOURCE(14)
/* Predefined resources */
#define IDI_APPLICATION MAKEINTRESOURCE(32512)
#define IDI_HAND MAKEINTRESOURCE(32513)
#define IDI_QUESTION MAKEINTRESOURCE(32514)
......@@ -2091,6 +2115,7 @@ typedef COMPAREITEMSTRUCT FAR* LPCOMPAREITEMSTRUCT;
#define LMEM_FIXED 0
#define LMEM_MOVEABLE 0x0002
#define LMEM_ZEROINIT 0x0040
#define LMEM_MODIFY 0x0080
#define LMEM_DISCARDABLE 0x0F00
#define LMEM_WINE_ALIGN 0x1000
......@@ -2431,7 +2456,7 @@ Fa(HANDLE,GetClipboardData,WORD,a)
Fa(HANDLE,GetCodeHandle,FARPROC,a)
Fa(HANDLE,GetMetaFile,LPSTR,a)
Fa(HANDLE,GetMetaFileBits,HANDLE,a)
Fa(HANDLE,GetModuleHandle,LPSTR,a)
Fa(HANDLE,GetModuleHandle,LPCSTR,a)
Fa(HANDLE,GetStockObject,int,a)
Fa(HANDLE,GetWindowTask,HWND,a)
Fa(HANDLE,LoadLibrary,LPSTR,a)
......@@ -2449,6 +2474,7 @@ Fa(HDC,GetDCState,HDC,a)
Fa(HDC,GetWindowDC,HWND,a)
Fa(HDWP,BeginDeferWindowPos,INT,nNumWindows)
Fa(HFONT,CreateFontIndirect,LOGFONT FAR*,a)
Fa(HGLOBAL,GetTaskQueue,HTASK,a)
Fa(HGLOBAL,GlobalFree,HGLOBAL,a)
Fa(HGLOBAL,GlobalLRUNewest,HGLOBAL,a)
Fa(HGLOBAL,GlobalLRUOldest,HGLOBAL,a)
......@@ -2456,6 +2482,7 @@ Fa(HGLOBAL,LockSegment,HGLOBAL,a)
Fa(HMENU,GetMenu,HWND,a)
Fa(HMENU,LoadMenuIndirect,LPSTR,a)
Fa(HMETAFILE,CloseMetaFile,HANDLE,a)
Fa(HMODULE, GetExePtr,HANDLE,a)
Fa(HPALETTE,CreatePalette,LPLOGPALETTE,a)
Fa(HPEN,CreatePenIndirect,LOGPEN FAR*,a)
Fa(HRGN,CreateEllipticRgnIndirect,LPRECT,a)
......@@ -2477,11 +2504,12 @@ Fa(INT,lstrlen,LPCSTR,a)
Fa(LONG,DispatchMessage,LPMSG,msg)
Fa(LONG,SetSwapAreaSize,WORD,a)
Fa(LPSTR,AnsiLower,LPSTR,a)
Fa(SEGPTR,AnsiNext,SEGPTR,a)
Fa(LPSTR,AnsiUpper,LPSTR,a)
Fa(LPSTR,GlobalLock,HGLOBAL,a)
Fa(LPSTR,LockResource,HANDLE,a)
Fa(SEGPTR,AnsiNext,SEGPTR,a)
Fa(SEGPTR,GlobalWire,HGLOBAL,a)
Fa(SEGPTR,WIN16_LockResource,HANDLE,a)
Fa(SEGPTR,WIN16_GlobalLock,HGLOBAL,a)
Fa(UINT,GDIRealizePalette,HDC,a)
Fa(UINT,RealizePalette,HDC,a)
......@@ -2490,6 +2518,7 @@ Fa(WORD,AllocSelector,WORD,a)
Fa(WORD,AllocSelectorArray,WORD,a)
Fa(WORD,ArrangeIconicWindows,HWND,a)
Fa(WORD,EnumClipboardFormats,WORD,a)
Fa(WORD,FarGetOwner,HANDLE,a)
Fa(WORD,FreeSelector,WORD,a)
Fa(WORD,GetBkMode,HDC,a)
Fa(WORD,GetDriveType,INT,a)
......@@ -2499,7 +2528,6 @@ Fa(WORD,GetPolyFillMode,HDC,a)
Fa(WORD,GetROP2,HDC,a)
Fa(WORD,GetRelAbs,HDC,a)
Fa(WORD,GetStretchBltMode,HDC,a)
Fa(WORD,GetTaskQueue,HANDLE,a)
Fa(WORD,GetTextAlign,HDC,a)
Fa(WORD,GlobalDOSFree,WORD,a)
Fa(WORD,GlobalFlags,HGLOBAL,a)
......@@ -2545,6 +2573,7 @@ Fa(void,GetCaretPos,LPPOINT,a)
Fa(void,GetCursorPos,LPPOINT,a)
Fa(void,GetKeyboardState,BYTE FAR*,a)
Fa(void,GlobalFix,HGLOBAL,a)
Fa(void,GlobalFreeAll,HANDLE,a)
Fa(void,GlobalNotify,FARPROC,a)
Fa(void,GlobalUnfix,HGLOBAL,a)
Fa(void,HideCaret,HWND,a)
......@@ -2602,21 +2631,23 @@ Fb(BOOL,SetMenu,HWND,a,HMENU,b)
Fb(BOOL,SetWindowPlacement,HWND,a,LPWINDOWPLACEMENT,b)
Fb(BOOL,ShowWindow,HWND,a,int,b)
Fb(BOOL,TranslateMDISysAccel,HWND,a,LPMSG,b)
Fb(BOOL,UnhookWindowsHook,short,a,HHOOK,b)
Fb(BOOL,UnhookWindowsHook,short,a,FARPROC,b)
Fb(BOOL,UnregisterClass,LPSTR,a,HANDLE,b)
Fb(DWORD,GetNearestColor,HDC,a,DWORD,b)
Fb(DWORD,SetBkColor,HDC,a,COLORREF,b)
Fb(DWORD,SetMapperFlags,HDC,a,DWORD,b)
Fb(DWORD,SetTextColor,HDC,a,DWORD,b)
Fb(FARPROC,GetProcAddress,HANDLE,a,LPSTR,b)
Fb(DWORD,SizeofResource,HANDLE,a,HRSRC,b)
Fb(FARPROC,GetProcAddress,HANDLE,a,SEGPTR,b)
Fb(FARPROC,MakeProcInstance,FARPROC,a,HANDLE,b)
Fb(FARPROC,SetWindowsHook,short,a,FARPROC,b)
Fb(HANDLE,CopyMetaFile,HANDLE,a,LPSTR,b)
Fb(HANDLE,GetProp,HWND,a,LPSTR,b)
Fb(HANDLE,GetProp,HWND,a,SEGPTR,b)
Fb(HANDLE,LoadAccelerators,HANDLE,a,SEGPTR,b)
Fb(HANDLE,LoadModule,LPSTR,a,LPVOID,b)
Fb(HANDLE,LoadResource,HANDLE,a,HANDLE,b)
Fb(HANDLE,LocalAlloc,WORD,a,WORD,b)
Fb(HANDLE,RemoveProp,HWND,a,LPSTR,b)
Fb(HANDLE,RemoveProp,HWND,a,SEGPTR,b)
Fb(HANDLE,SelectObject,HDC,a,HANDLE,b)
Fb(HANDLE,SetClipboardData,WORD,a,HANDLE,b)
Fb(HBITMAP,LoadBitmap,HANDLE,a,SEGPTR,b)
......@@ -2625,7 +2656,7 @@ Fb(HBRUSH,CreateHatchBrush,short,a,COLORREF,b)
Fb(HCURSOR,LoadCursor,HANDLE,a,SEGPTR,b)
Fb(HDC,BeginPaint,HWND,a,LPPAINTSTRUCT,b)
Fb(HGLOBAL,GlobalAlloc,WORD,a,DWORD,b)
Fb(HHOOK,SetWindowsHook,short,a,HOOKPROC,b)
Fb(HGLOBAL,SetTaskQueue,HTASK,a,HGLOBAL,b)
Fb(HICON,LoadIcon,HANDLE,a,SEGPTR,b)
Fb(HMENU,GetSubMenu,HMENU,a,short,b)
Fb(HMENU,GetSystemMenu,HWND,a,BOOL,b)
......@@ -2672,9 +2703,7 @@ Fb(WORD,SetROP2,HDC,a,WORD,b)
Fb(WORD,SetRelAbs,HDC,a,WORD,b)
Fb(WORD,SetStretchBltMode,HDC,a,WORD,b)
Fb(WORD,SetSystemPaletteUse,HDC,a,WORD,b)
Fb(WORD,SetTaskQueue,HANDLE,a,HANDLE,b)
Fb(WORD,SetTextAlign,HDC,a,WORD,b)
Fb(WORD,SizeofResource,HANDLE,a,HANDLE,b)
Fb(WORD,WinExec,LPSTR,a,WORD,b)
Fb(int,AccessResource,HANDLE,a,HANDLE,b)
Fb(int,BuildCommDCB,LPSTR,a,DCB*,b)
......@@ -2695,6 +2724,7 @@ Fb(int,SelectVisRgn,HDC,a,HRGN,b)
Fb(int,SetSoundNoise,int,a,int,b)
Fb(int,SetVoiceQueueSize,int,a,int,b)
Fb(int,SetVoiceThreshold,int,a,int,b)
Fb(int,Throw,LPCATCHBUF,a,int,b)
Fb(int,TransmitCommChar,int,a,char,b)
Fb(int,UngetCommChar,int,a,char,b)
Fb(short,SetTextCharacterExtra,HDC,a,short,b)
......@@ -2703,6 +2733,7 @@ Fb(void,CopyRect,LPRECT,a,LPRECT,b)
Fb(void,DrawFocusRect,HDC,a,LPRECT,b)
Fb(void,EndDialog,HWND,a,short,b)
Fb(void,EndPaint,HWND,a,LPPAINTSTRUCT,b)
Fb(void,FarSetOwner,HANDLE,a,WORD,b)
Fb(void,GetClientRect,HWND,a,LPRECT,b)
Fb(void,GetCodeInfo,FARPROC,lpProc,LPVOID,lpSegInfo)
Fb(void,GetWindowRect,HWND,a,LPRECT,b)
......@@ -2716,7 +2747,6 @@ Fb(void,SetCursorPos,short,a,short,b)
Fb(void,SetDCState,HDC,a,HDC,b)
Fb(void,SetWindowText,HWND,a,LPSTR,b)
Fb(void,ShowOwnedPopups,HWND,a,BOOL,b)
Fb(void,Throw,LPCATCHBUF,a,int,b)
Fb(void,ValidateRect,HWND,a,LPRECT,b)
Fb(void,ValidateRgn,HWND,a,HRGN,b)
Fc(BOOL,CheckMenuItem,HMENU,a,WORD,b,WORD,c)
......@@ -2729,7 +2759,7 @@ Fc(BOOL,EnableScrollBar,HWND,a,INT,b,UINT,c)
Fc(BOOL,EnumChildWindows,HWND,a,FARPROC,b,LONG,c)
Fc(BOOL,EnumTaskWindows,HANDLE,a,FARPROC,b,LONG,c)
Fc(BOOL,FillRgn,HDC,a,HRGN,b,HBRUSH,c)
Fc(BOOL,GetClassInfo,HANDLE,a,LPSTR,b,LPWNDCLASS,c)
Fc(BOOL,GetClassInfo,HANDLE,a,SEGPTR,b,LPWNDCLASS,c)
Fc(BOOL,GetUpdateRect,HWND,a,LPRECT,b,BOOL,c)
Fc(BOOL,IntersectRect,LPRECT,a,LPRECT,b,LPRECT,c)
Fc(BOOL,LPtoDP,HDC,a,LPPOINT,b,int,c)
......@@ -2740,7 +2770,7 @@ Fc(BOOL,Polyline,HDC,a,LPPOINT,b,int,c)
Fc(BOOL,PtInRegion,HRGN,a,short,b,short,c)
Fc(BOOL,PtVisible,HDC,a,short,b,short,c)
Fc(BOOL,RemoveMenu,HMENU,a,WORD,b,WORD,c)
Fc(BOOL,SetProp,HWND,a,LPSTR,b,HANDLE,c)
Fc(BOOL,SetProp,HWND,a,SEGPTR,b,HANDLE,c)
Fc(BOOL,SubtractRect,LPRECT,a,LPRECT,b,LPRECT,c)
Fc(BOOL,UnionRect,LPRECT,a,LPRECT,b,LPRECT,c)
Fc(BOOL,WriteProfileString,LPSTR,a,LPSTR,b,LPSTR,c)
......
......@@ -23,7 +23,11 @@ typedef WORD *LPWORD;
typedef DWORD *LPDWORD;
typedef LONG *LPLONG;
typedef void *LPVOID;
#ifdef WINELIB
typedef long (*FARPROC)();
#else
typedef SEGPTR FARPROC;
#endif
typedef FARPROC DLGPROC;
typedef int CATCHBUF[9];
typedef int *LPCATCHBUF;
......@@ -50,6 +54,7 @@ DECLARE_HANDLE(HMODULE);
DECLARE_HANDLE(HPALETTE);
DECLARE_HANDLE(HPEN);
DECLARE_HANDLE(HRGN);
DECLARE_HANDLE(HRSRC);
DECLARE_HANDLE(HTASK);
DECLARE_HANDLE(HWND);
DECLARE_HANDLE(LOCALHANDLE);
......@@ -65,7 +70,7 @@ DECLARE_HANDLE(LOCALHANDLE);
#define CALLBACK PASCAL
#ifndef NULL
#define NULL (void *)0
#define NULL (0)
#endif
#ifdef WINELIB
......
......@@ -6,6 +6,7 @@ SRCS = \
dump.c \
ldt.c \
main.c \
module.c \
ne_image.c \
ne_resource.c \
pe_image.c \
......
......@@ -40,24 +40,6 @@ PrintFileHeader(struct ne_header_s *ne_header)
}
/**********************************************************************
* PrintSegmentTable
*/
void
PrintSegmentTable(struct ne_segment_table_entry_s *seg_table, int nentries)
{
int i;
for (i = 0; i < nentries; i++)
{
printf(" %2d: OFFSET %04x, LENGTH %04x, ",
i + 1, seg_table[i].seg_data_offset,
seg_table[i].seg_data_length);
printf("FLAGS %04x, MIN ALLOC %04x\n",
seg_table[i].seg_flags, seg_table[i].min_alloc);
}
}
/**********************************************************************
* PrintRelocationTable
*/
void
......
......@@ -30,7 +30,6 @@ char **Argv;
int Argc;
HINSTANCE hSysRes, hInstMain;
unsigned short WIN_StackSize;
unsigned short WIN_HeapSize;
/**********************************************************************
* myerror
......@@ -45,21 +44,90 @@ myerror(const char *s)
exit(1);
}
/***********************************************************************
* Main initialisation routine
*/
int MAIN_Init(void)
{
int queueSize;
SpyInit();
/* Initialize relay code */
if (!RELAY_Init()) return 0;
/* Create built-in modules */
if (!MODULE_Init()) return 0;
/* Initialize tasks */
if (!TASK_Init()) return 0;
/* Initialize the DOS file system */
DOS_InitFS();
/* Initialize communications */
COMM_Init();
#ifndef WINELIB
/* Initialize the DOS memory */
INT21_Init();
/* Create USER heap */
if (!USER_HeapInit()) return 0;
#endif
/* Global atom table initialisation */
if (!ATOM_Init()) return 0;
/* GDI initialisation */
if (!GDI_Init()) return 0;
/* Initialize system colors and metrics*/
SYSMETRICS_Init();
SYSCOLOR_Init();
/* Create the DCEs */
DCE_Init();
/* Initialize built-in window classes */
if (!WIDGETS_Init()) return 0;
/* Initialize dialog manager */
if (!DIALOG_Init()) return 0;
/* Initialize menus */
if (!MENU_Init()) return 0;
/* Create desktop window */
if (!WIN_CreateDesktopWindow()) return 0;
if (!DESKTOP_Init()) return 0;
/* Create system message queue */
queueSize = GetProfileInt( "windows", "TypeAhead", 120 );
if (!MSG_CreateSysMsgQueue( queueSize )) return 0;
return 1;
}
#ifndef WINELIB
/**********************************************************************
* main
*/
int _WinMain(int argc, char **argv)
{
char *p, filename[256];
HANDLE hTaskMain;
char *p, filename[256];
int i;
struct w_files *wpnt;
struct w_files *wpnt;
#ifdef WINESTAT
char * cp;
char * cp;
#endif
if (!MAIN_Init()) return 0;
Argc = argc - 1;
Argv = argv + 1;
......@@ -76,13 +144,13 @@ int _WinMain(int argc, char **argv)
strcat(WindowsPath, filename);
}
if ((hInstMain = LoadImage(Argv[0], EXE, 1)) < 32) {
fprintf(stderr, "wine: can't load %s!.\n", Argv[0]);
for (i = 0; i < Argc; i++)
{
if ((hInstMain = LoadImage(Argv[i], EXE, 1)) < 32) {
fprintf(stderr, "wine: can't load %s!.\n", Argv[i]);
exit(1);
}
hTaskMain = CreateNewTask(hInstMain, 0);
dprintf_dll(stddeb,"_WinMain // hTaskMain=%04X hInstMain=%04X !\n",
hTaskMain, hInstMain);
}
}
GetPrivateProfileString("wine", "SystemResources", "sysres.dll",
filename, sizeof(filename), WINE_INI);
......@@ -110,15 +178,14 @@ int _WinMain(int argc, char **argv)
* Initialize signal handling.
*/
init_wine_signals();
wpnt = GetFileInfo(hInstMain);
if (Options.debug)
wine_debug(0, NULL);
if (wpnt->ne)
return(NE_StartProgram(wpnt));
else
return(PE_StartProgram(wpnt));
Yield(); /* Start the first task */
fprintf( stderr, "WinMain: Should never happen: returned from Yield()\n" );
return 0;
}
#endif /* #ifndef WINELIB */
This diff is collapsed. Click to expand it.
......@@ -198,12 +198,6 @@ int PE_UnloadImage(struct w_files *wpnt)
return 1;
}
int PE_StartProgram(struct w_files *wpnt)
{
printf("StartPEprogram() called!\n");
return 0;
}
void PE_InitDLL(struct w_files *wpnt)
{
/* Is this a library? */
......
......@@ -24,6 +24,7 @@
/* #define DEBUG_RESOURCE */
#include "debug.h"
#if 0
static int
find_lang(char *root, struct PE_Resource_Directory *resource, RESOURCE *r)
......@@ -88,7 +89,7 @@ find_resource(char *root, struct PE_Resource_Directory *resource,
static int
find_type(struct PE_Resource_Directory *resource, LPSTR resource_name,
LPSTR type_name, RESOURCE *r)
LPSTR type_name)
{
int i;
char *root, res_name[256];
......@@ -146,5 +147,6 @@ PE_FindResource(HANDLE instance, SEGPTR resource_name, SEGPTR type_name,
else
type_name = (SEGPTR) type_name_ptr;
}
return find_type(r->wpnt->pe->pe_resource, resource_name, type_name,r);
return find_type(r->wpnt->pe->pe_resource, resource_name, type_name);
}
#endif
......@@ -59,42 +59,26 @@ static GLOBALARENA *GLOBAL_GetArena( WORD sel, WORD selcount )
/***********************************************************************
* GLOBAL_Alloc
* GLOBAL_CreateBlock
*
* Implementation of GlobalAlloc()
* Create a global heap block for a fixed range of linear memory.
*/
HGLOBAL GLOBAL_Alloc( WORD flags, DWORD size, HGLOBAL hOwner,
BOOL isCode, BOOL isReadOnly )
HGLOBAL GLOBAL_CreateBlock( WORD flags, void *ptr, DWORD size,
HGLOBAL hOwner, BOOL isCode,
BOOL is32Bit, BOOL isReadOnly )
{
WORD sel, selcount;
void *ptr;
GLOBALARENA *pArena;
/* Fixup the size */
if (size >= GLOBAL_MAX_ALLOC_SIZE - 0x0f) return 0;
if (size == 0) size = 0x10;
else size = (size + 0x0f) & ~0x0f;
/* Allocate the linear memory */
ptr = malloc( size );
if (!ptr) return 0;
/* Allocate the selector(s) */
sel = SELECTOR_AllocBlock( ptr, size, isCode ? SEGMENT_CODE : SEGMENT_DATA,
0, isReadOnly );
if (!sel)
{
free( ptr );
return 0;
}
is32Bit, isReadOnly );
if (!sel) return 0;
selcount = (size + 0xffff) / 0x10000;
if (!(pArena = GLOBAL_GetArena( sel, selcount )))
{
free( ptr );
FreeSelector( sel );
return 0;
}
......@@ -114,19 +98,78 @@ HGLOBAL GLOBAL_Alloc( WORD flags, DWORD size, HGLOBAL hOwner,
if (selcount > 1) /* clear the next arena blocks */
memset( pArena + 1, 0, (selcount - 1) * sizeof(GLOBALARENA) );
if (flags & GMEM_ZEROINIT) memset( ptr, 0, size );
return pArena->handle;
}
/***********************************************************************
* GLOBAL_FreeBlock
*
* Free a block allocated by GLOBAL_CreateBlock, without touching
* the associated linear memory range.
*/
BOOL GLOBAL_FreeBlock( HGLOBAL handle )
{
WORD sel;
if (!handle) return TRUE;
sel = GlobalHandleToSel( handle );
if (FreeSelector( sel )) return FALSE; /* failed */
memset( GET_ARENA_PTR(handle), 0, sizeof(GLOBALARENA) );
return TRUE;
}
/***********************************************************************
* GLOBAL_Alloc
*
* Implementation of GlobalAlloc()
*/
HGLOBAL GLOBAL_Alloc( WORD flags, DWORD size, HGLOBAL hOwner,
BOOL isCode, BOOL is32Bit, BOOL isReadOnly )
{
void *ptr;
HGLOBAL handle;
dprintf_global( stddeb, "GlobalAlloc: %ld flags=%04x\n", size, flags );
/* Fixup the size */
if (size >= GLOBAL_MAX_ALLOC_SIZE - 0x0f) return 0;
if (size == 0) size = 0x20;
else size = (size + 0x1f) & ~0x1f;
/* Allocate the linear memory */
ptr = malloc( size );
if (!ptr) return 0;
/* Allocate the selector(s) */
handle = GLOBAL_CreateBlock( flags, ptr, size, hOwner,
isCode, is32Bit, isReadOnly);
if (!handle)
{
free( ptr );
return 0;
}
if (flags & GMEM_ZEROINIT) memset( ptr, 0, size );
return handle;
}
/***********************************************************************
* GlobalAlloc (KERNEL.15)
*/
HGLOBAL GlobalAlloc( WORD flags, DWORD size )
{
dprintf_global( stddeb, "GlobalAlloc: %ld flags=%04x\n", size, flags );
HANDLE owner = GetCurrentPDB();
return GLOBAL_Alloc( flags, size, GetCurrentPDB(), 0, 0 );
if (flags & GMEM_DDESHARE)
owner = GetExePtr(owner); /* Make it a module handle */
return GLOBAL_Alloc( flags, size, owner, FALSE, FALSE, FALSE );
}
......@@ -142,11 +185,8 @@ HGLOBAL GlobalReAlloc( HGLOBAL handle, DWORD size, WORD flags )
dprintf_global( stddeb, "GlobalReAlloc: %04x %ld flags=%04x\n",
handle, size, flags );
if (!handle)
{
printf( "GlobalReAlloc: handle is 0.\n" );
return 0;
}
if (!handle) return 0;
pArena = GET_ARENA_PTR( handle );
/* Fixup the size */
......@@ -154,12 +194,23 @@ HGLOBAL GlobalReAlloc( HGLOBAL handle, DWORD size, WORD flags )
if (size == 0) size = 0x10;
else size = (size + 0x0f) & ~0x0f;
/* Change the flags */
if (flags & GMEM_MODIFY)
{
/* Change the flags, leaving GA_DGROUP alone */
pArena->flags = (pArena->flags & GA_DGROUP) |
(flags & ~GA_DGROUP);
if (flags & GMEM_DISCARDABLE) pArena->flags |= GA_DISCARDABLE;
return handle;
}
/* Reallocate the linear memory */
pArena = GET_ARENA_PTR( handle );
sel = GlobalHandleToSel( handle );
ptr = (void *)pArena->base;
oldsize = pArena->size;
dprintf_global(stddeb,"oldsize %08lx\n",oldsize);
if (size == oldsize) return handle; /* Nothing to do */
ptr = realloc( ptr, size );
......@@ -194,13 +245,6 @@ HGLOBAL GlobalReAlloc( HGLOBAL handle, DWORD size, WORD flags )
pNewArena->base = (DWORD)ptr;
pNewArena->size = GET_SEL_LIMIT(sel) + 1;
pNewArena->selCount = selcount;
if (flags & GMEM_MODIFY)
{
/* Change the flags, leaving GA_DGROUP alone */
pNewArena->flags = (pNewArena->flags & GA_DGROUP) |
(flags & ~GA_DGROUP);
if (flags & GMEM_DISCARDABLE) pNewArena->flags |= GA_DISCARDABLE;
}
pNewArena->handle = (pNewArena->flags & GMEM_MOVEABLE) ? sel - 1 : sel;
if (selcount > 1) /* clear the next arena blocks */
......@@ -217,16 +261,12 @@ HGLOBAL GlobalReAlloc( HGLOBAL handle, DWORD size, WORD flags )
*/
HGLOBAL GlobalFree( HGLOBAL handle )
{
WORD sel;
void *ptr;
dprintf_global( stddeb, "GlobalFree: %04x\n", handle );
if (!handle) return 0;
sel = GlobalHandleToSel( handle );
ptr = (void *)GET_SEL_BASE(sel);
if (FreeSelector( sel )) return handle; /* failed */
if (!(ptr = GlobalLock( handle ))) return handle; /* failed */
if (!GLOBAL_FreeBlock( handle )) return handle; /* failed */
free( ptr );
memset( GET_ARENA_PTR(handle), 0, sizeof(GLOBALARENA) );
return 0;
}
......@@ -238,7 +278,8 @@ HGLOBAL GlobalFree( HGLOBAL handle )
*/
SEGPTR WIN16_GlobalLock( HGLOBAL handle )
{
dprintf_global( stddeb, "WIN16_GlobalLock: %04x\n", handle );
dprintf_global( stddeb, "WIN16_GlobalLock(%04x) -> %08lx\n",
handle, MAKELONG( 0, GlobalHandleToSel(handle)) );
if (!handle) return 0;
return (SEGPTR)MAKELONG( 0, GlobalHandleToSel(handle) );
}
......@@ -336,6 +377,23 @@ DWORD GlobalCompact( DWORD desired )
/***********************************************************************
* GlobalFreeAll (KERNEL.26)
*/
void GlobalFreeAll( HANDLE owner )
{
DWORD i;
GLOBALARENA *pArena;
pArena = pGlobalArena;
for (i = 0; i < globalArenaSize; i++, pArena++)
{
if ((pArena->size != 0) && (pArena->hOwner == owner))
GlobalFree( pArena->handle );
}
}
/***********************************************************************
* GlobalWire (KERNEL.111)
*/
SEGPTR GlobalWire( HGLOBAL handle )
......@@ -506,6 +564,7 @@ BOOL GlobalNext( GLOBALENTRY *pGlobal, WORD wFlags)
{
GLOBALARENA *pArena;
if (pGlobal->dwNext >= globalArenaSize) return FALSE;
pArena = pGlobalArena + pGlobal->dwNext;
if (wFlags == GLOBAL_FREE) /* only free blocks */
{
......
......@@ -377,7 +377,7 @@ HLOCAL LOCAL_Alloc( WORD ds, WORD flags, WORD size )
/* Find a suitable free block */
if (!(pInfo = LOCAL_GetHeap( ds ))) {
LOCAL_PrintHeap(ds);
LOCAL_PrintHeap(ds);
return 0;
}
size += ARENA_HEADER_SIZE;
......@@ -388,7 +388,7 @@ HLOCAL LOCAL_Alloc( WORD ds, WORD flags, WORD size )
{
if (arena == pArena->free_next) {
LOCAL_PrintHeap(ds);
return 0; /* not found */
return 0; /* not found */
}
arena = pArena->free_next;
pArena = ARENA_PTR( ptr, arena );
......@@ -428,6 +428,10 @@ HLOCAL LOCAL_ReAlloc( WORD ds, HLOCAL handle, WORD size, WORD flags )
if (!(pInfo = LOCAL_GetHeap( ds ))) return 0;
arena = handle - ARENA_HEADER_SIZE;
pArena = ARENA_PTR( ptr, arena );
if (flags & LMEM_MODIFY) {
dprintf_local( stddeb, "LMEM_MODIFY set\n");
return handle;
}
if (!size) size = 1;
size = LALIGN( size );
......
......@@ -16,12 +16,12 @@ SRCS = \
keyboard.c \
lstr.c \
main.c \
ole2nls.c \
olecli.c \
olesvr.c \
message.c \
network.c \
profile.c \
property.c \
rect.c \
shell.c \
sound.c \
......
......@@ -29,7 +29,7 @@ int commerror = 0, eventmask = 0;
struct DosDeviceStruct COM[MAX_PORTS];
struct DosDeviceStruct LPT[MAX_PORTS];
void Comm_Init(void)
void COMM_Init(void)
{
int x;
char option[10], temp[256], *btemp;
......@@ -90,24 +90,6 @@ void Comm_Init(void)
}
}
void Comm_DeInit(void)
{
int x;
for (x=0; x!=MAX_PORTS; x++) {
if (COM[x].devicename) {
if (COM[x].fd)
close(COM[x].fd);
free(COM[x].devicename);
}
if (LPT[x].devicename) {
if (LPT[x].fd)
close(LPT[x].fd);
free(LPT[x].devicename);
}
}
}
struct DosDeviceStruct *GetDeviceStruct(int fd)
{
......
......@@ -957,3 +957,11 @@ void DOS_closedir(struct dosdirent *de)
de->inuse = 0;
}
}
char *DOS_GetRedirectedDir(int drive)
{
if(DOS_ValidDrive(drive))
return (DosDrives[drive].rootdir);
else
return ("/");
}
......@@ -42,102 +42,6 @@ typedef struct {
typedef BOOL (CALLBACK * LPFNWINMAIN)(HANDLE, HANDLE, LPSTR, int);
HANDLE CreateNewTask(HINSTANCE hInst);
#ifndef WINELIB
void InitializeLoadedNewDLLs(HINSTANCE hInst)
{
struct w_files * w;
struct w_files * wpnt;
int cs_reg, ds_reg, ip_reg;
int rv;
dprintf_exec(stddeb, "Initializing New DLLs\n");
/*
* Initialize libraries
*/
dprintf_exec(stddeb,
"InitializeLoadedNewDLLs() before searching hInst=%04X !\n", hInst);
w = wine_files;
while (w && w->hinstance != hInst) w = w->next;
if (w == NULL) return;
dprintf_exec(stddeb,"InitializeLoadedNewDLLs() // before InitLoop !\n");
for(wpnt = w; wpnt; wpnt = wpnt->next)
{
/*
* Is this a library?
*/
if (wpnt->ne->ne_header->format_flags & 0x8000)
{
if (!(wpnt->ne->ne_header->format_flags & 0x0001))
{
/* Not SINGLEDATA */
fprintf(stderr, "Library is not marked SINGLEDATA\n");
exit(1);
}
ds_reg = wpnt->ne->selector_table[wpnt->ne->
ne_header->auto_data_seg-1];
cs_reg = wpnt->ne->selector_table[wpnt->ne->ne_header->cs-1];
ip_reg = wpnt->ne->ne_header->ip;
dprintf_exec(stddeb, "Initializing %s, cs:ip %04x:%04x, ds %04x\n",
wpnt->name, cs_reg, ip_reg, ds_reg);
rv = CallTo16_regs_( (FARPROC)(cs_reg << 16 | ip_reg), ds_reg,
0 /*es*/, 0 /*ax*/, 0 /*bx*/, 0 /*cx*/,
0 /*dx*/, 0 /*si*/, wpnt->hinstance /*di*/ );
dprintf_exec(stddeb,"rv = %x\n", rv);
}
}
}
void StartNewTask(HINSTANCE hInst)
{
struct w_files * wpnt;
struct w_files * w;
int cs_reg, ds_reg, ss_reg, ip_reg, sp_reg;
int rv;
int segment;
dprintf_exec(stddeb,
"StartNewTask() before searching hInst=%04X !\n", hInst);
wpnt = wine_files;
while (wpnt && wpnt->hinstance != hInst) wpnt = wpnt->next;
if (wpnt == NULL) return;
dprintf_exec(stddeb,"StartNewTask() // before FixupSegment !\n");
for(w = wpnt; w; w = w->next) {
for (segment = 0; segment < w->ne->ne_header->n_segment_tab; segment++) {
if (NE_FixupSegment(w, segment) < 0) {
myerror("fixup failed.");
}
}
}
dprintf_exec(stddeb,"StartNewTask() before InitializeLoadedNewDLLs !\n");
InitializeLoadedNewDLLs(hInst);
dprintf_exec(stddeb,"StartNewTask() before setup register !\n");
ds_reg = (wpnt->ne->selector_table[wpnt->ne->ne_header->auto_data_seg-1]);
cs_reg = wpnt->ne->selector_table[wpnt->ne->ne_header->cs-1];
ip_reg = wpnt->ne->ne_header->ip;
ss_reg = wpnt->ne->selector_table[wpnt->ne->ne_header->ss-1];
sp_reg = wpnt->ne->ne_header->sp;
dprintf_exec(stddeb,"StartNewTask() before CallToInit16() !\n");
/*
rv = CallToInit16(cs_reg << 16 | ip_reg, ss_reg << 16 | sp_reg, ds_reg);
*/
dprintf_exec(stddeb,"rv = %x\n", rv);
}
#else
void StartNewTask (HINSTANCE hInst)
{
fprintf(stdnimp, "StartNewTask(): Not yet implemented\n");
}
#endif
/**********************************************************************
* LoadModule [KERNEL.45]
......@@ -177,6 +81,11 @@ WORD WinExec(LPSTR lpCmdLine, WORD nCmdShow)
ArgV[c] = NULL;
for (c = 0; ArgV[c] != NULL; c++)
dprintf_exec(stddeb,"--> '%s' \n", ArgV[c]);
if ((hInst = LoadImage(ArgV[0], EXE, 1)) == (HINSTANCE) NULL ) {
fprintf(stderr, "wine: can't find %s!.\n", ArgV[0]);
}
#if 0
switch(fork()) {
case -1:
fprintf(stderr,"Can't 'fork' process !\n");
......@@ -187,20 +96,7 @@ WORD WinExec(LPSTR lpCmdLine, WORD nCmdShow)
fprintf(stderr,"Child process died !\n");
exit(1);
}
hTask = CreateNewTask(hInst);
dprintf_exec(stddeb,
"WinExec // hTask=%04X hInst=%04X !\n", hTask, hInst);
StartNewTask(hInst);
/*
lpfnMain = (LPFNWINMAIN)GetProcAddress(hInst, (LPSTR)0L);
dprintf_exec(stddeb,
"WineExec() // lpfnMain=%08X\n", (LONG)lpfnMain);
if (lpfnMain != NULL) {
(lpfnMain)(hInst, 0, lpCmdLine, nCmdShow);
dprintf_exec(stddeb,
"WineExec() // after lpfnMain\n");
}
*/
/* hTask = CreateNewTask(0);
dprintf_exec(stddeb,
"WinExec // New Task hTask=%04X !\n", hTask);
......@@ -214,6 +110,7 @@ WORD WinExec(LPSTR lpCmdLine, WORD nCmdShow)
hTask);
break;
}
#endif
for (c = 0; ArgV[c] != NULL; c++) free(ArgV[c]);
return hTask;
}
......
......@@ -11,6 +11,8 @@ static char Copyright[] = "Copyright Yngvi Sigurjonsson (yngvi@hafro.is), 1993"
#include "ldt.h"
#include "windows.h"
#include "stddebug.h"
#include "debug.h"
#define ToUpper(c) toupper(c)
#define ToLower(c) tolower(c)
......@@ -220,8 +222,9 @@ INT AnsiToOem(LPSTR lpAnsiStr, LPSTR lpOemStr) /* why is this int ??? */
{
InitOemAnsiTranslations(); /* should called called in some init function*/
while(*lpAnsiStr){
*lpOemStr++=Ansi2Oem[*lpAnsiStr++];
*lpOemStr++=Ansi2Oem[(unsigned char)(*lpAnsiStr++)];
}
*lpOemStr = 0;
return -1;
}
......@@ -230,8 +233,9 @@ BOOL OemToAnsi(LPSTR lpOemStr, LPSTR lpAnsiStr) /* why is this BOOL ???? */
{
InitOemAnsiTranslations(); /* should called called in some init function*/
while(*lpOemStr){
*lpAnsiStr++=Oem2Ansi[*lpOemStr++];
*lpAnsiStr++=Oem2Ansi[(unsigned char)(*lpOemStr++)];
}
*lpAnsiStr = 0;
return -1;
}
......@@ -241,7 +245,7 @@ void AnsiToOemBuff(LPSTR lpAnsiStr, LPSTR lpOemStr, INT nLength)
int i;
InitOemAnsiTranslations(); /* should called called in some init function*/
for(i=0;i<nLength;i++)
lpOemStr[i]=Ansi2Oem[lpAnsiStr[i]];
lpOemStr[i]=Ansi2Oem[(unsigned char)(lpAnsiStr[i])];
}
/* OemToAnsi Keyboard.135 */
......@@ -250,5 +254,5 @@ void OemToAnsiBuff(LPSTR lpOemStr, LPSTR lpAnsiStr, INT nLength)
int i;
InitOemAnsiTranslations(); /* should called called in some init function*/
for(i=0;i<nLength;i++)
lpAnsiStr[i]=Oem2Ansi[lpOemStr[i]];
lpAnsiStr[i]=Oem2Ansi[(unsigned char)(lpOemStr[i])];
}
This diff is collapsed. Click to expand it.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment