Release 950319
Sun Mar 19 16:30:20 1995 Alexandre Julliard (julliard@sunsite.unc.edu)
* [*/*]
Implemented a new memory mapping scheme. There's no longer a
one-to-one mapping between 16-bit and 32-bit pointers. Please see
file DEVELOPERS-HINTS for technical details.
* [controls/scroll.c]
Fixed bug when dragging mouse in horizontal scrollbars.
* [tools/build.c] [if1632/*.spec]
Removed support for C callback functions and for re-ordering
of the 32-bit arguments, as these were never used. This should
allow a more efficient callback scheme to be implemented.
* [if1632/olecli.spec]
Reduced the number of entries to make the 16-bit code fit in 64k.
This limitation will soon be removed.
* [loader/ldt.c]
Rewrote LDT manipulation functions and implemented LDT_GetEntry().
* [memory/global.c]
Rewrote Global*() routines to use the new selector allocation
mechanism.
* [memory/local.c]
Rewrote local heap handling to use a Windows-compatible layout
(not really finished yet).
Implemented TOOLHELP heap-walking routines.
* [memory/selector.c]
Implemented LDT manipulation API functions.
Tue Mar 14 19:50:28 EST 1995 William Magro (wmagro@tc.cornell.edu)
* [windows/defdlg.c]
Fixed problem where dialogs closed using the System menu
('Close' item or double click on close box) would
hang Wine.
Sun Mar 12 14:28:13 1995 Michael Patra <micky@marie.physik.TU-Berlin.DE>
* [controls/listbox.c]
Removed most of the statements for sending a notification message
ListBoxDirectory(), DlgDirSelect(), DlgDirList(): Improved the
code; Borland's standard file open dialog will work now.
* [misc/main.c], [misc/file.c], [miscemu/int21.c]
Added support for new command line option "-allowreadonly". If set
an attempt to open a read only file in write mode will be converted
to opening it read only (many programs try to open all files in
read/write mode even if they only intend to read it - this might
cause a few under problems under an unix-like environment where most
files are read only for a "normal" user)
* [loader/selector.c]
GetMemoryReference(): Added support for __AHIncr and __AHShift
* [misc/dos_fs.c]
DOS_SimplifyPath(): This routine simplifies path names ( e.g., it
will change "/usr///local/bin/../lib//a" to "/usr/local/lib/a" )
match(): rewritten
* [objects/text.c]
TEXT_NextLine(): Removed a bug in the handling of LF's
* [miscemu/int21.c]
GetFileDateTime(): Fixed. SetFileDateTime() is still broken.
Sat Mar 11 19:46:19 1995 Martin von Loewis <loewis@informatik.hu-berlin.de>
* [controls/menu.c]
ChangeMenu: defaults to MF_INSERT
InsertMenu: allow insertion even if position is one after last item
* [if1632/Imakefile] [if1632/compobj.spec] [if1632/relay.c]
[if1632/storage.spec] [include/dlls.h]
Added stubs for STORAGE.DLL and COMPOBJ.DLL
* [if1632/user.spec] [windows/message.c]
InSendMessage: new function
* [include/neexe.h][include/ne_image.c]
NE_FixupSegment: fixed handling of additive records
* [loader/selector.c]
GetEntryDLLName: return NULL instead of pointer to DLL.0 if not found
* [loader/signal.c]
win_fault: Enter debugger on SIGFPE, too
Wed Mar 1 21:47:42 1995 Cameron Heide (heide@ee.ualberta.ca)
* [miscemu/int*.c]
Various minor modifications to the clock tick counter,
FindFirst/FindNext funcs, and DPB handling.
diff --git a/include/atom.h b/include/atom.h
index 0336837..045c343 100644
--- a/include/atom.h
+++ b/include/atom.h
@@ -28,10 +28,7 @@
#ifdef WINELIB
#define LocalAlign(flags,bytes) LocalAlloc (flags|LMEM_WINE_ALIGN,bytes)
#else
-#define LocalAlign(flags,bytes) WIN16_LocalAlloc((flags),(bytes))
-#define LocalAlloc WIN16_LocalAlloc
-#define LocalLock WIN16_LocalLock
-#define LocalFree WIN16_LocalFree
+#define LocalAlign(flags,bytes) LocalAlloc((flags),(bytes))
#endif
#endif /* ATOM_H */
diff --git a/include/dce.h b/include/dce.h
index d95c781..e38c194 100644
--- a/include/dce.h
+++ b/include/dce.h
@@ -29,6 +29,7 @@
} DCE;
+extern void DCE_Init(void);
extern HANDLE DCE_AllocDCE( DCE_TYPE type );
extern void DCE_FreeDCE( HANDLE hdce );
diff --git a/include/debug.h b/include/debug.h
index 15c0b3a..34493c8 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -32,6 +32,7 @@
#undef DEBUG_FIXUP
#undef DEBUG_FONT
#undef DEBUG_GDI
+#undef DEBUG_GLOBAL
#undef DEBUG_GRAPHICS
#undef DEBUG_HEAP
#undef DEBUG_ICON
@@ -40,6 +41,7 @@
#undef DEBUG_KEYBOARD
#undef DEBUG_LDT
#undef DEBUG_LISTBOX
+#undef DEBUG_LOCAL
#undef DEBUG_MALLOC
#undef DEBUG_MCI
#undef DEBUG_MCIANIM
@@ -65,6 +67,7 @@
#undef DEBUG_RELAY
#undef DEBUG_RESOURCE
#undef DEBUG_SCROLL
+#undef DEBUG_SELECTOR
#undef DEBUG_SELECTORS
#undef DEBUG_STACK
#undef DEBUG_STRESS
@@ -72,6 +75,7 @@
#undef DEBUG_TASK
#undef DEBUG_TEXT
#undef DEBUG_TIMER
+#undef DEBUG_TOOLHELP
#undef DEBUG_UTILITY
#undef DEBUG_WIN
#undef DEBUG_WINSOCK
@@ -104,6 +108,7 @@
#define DEBUG_FIXUP
#define DEBUG_FONT
#define DEBUG_GDI
+#define DEBUG_GLOBAL
#define DEBUG_GRAPHICS
#define DEBUG_HEAP
#define DEBUG_ICON
@@ -112,6 +117,7 @@
#define DEBUG_KEYBOARD
#define DEBUG_LDT
#define DEBUG_LISTBOX
+#define DEBUG_LOCAL
#define DEBUG_MALLOC
#define DEBUG_MCI
#define DEBUG_MCIANIM
@@ -137,6 +143,7 @@
#define DEBUG_RELAY
#define DEBUG_RESOURCE
#define DEBUG_SCROLL
+#define DEBUG_SELECTOR
#define DEBUG_SELECTORS
#define DEBUG_STACK
#define DEBUG_STRESS
@@ -144,6 +151,7 @@
#define DEBUG_TASK
#define DEBUG_TEXT
#define DEBUG_TIMER
+#define DEBUG_TOOLHELP
#define DEBUG_UTILITY
#define DEBUG_WIN
#define DEBUG_WINSOCK
@@ -282,6 +290,11 @@
#else
0,
#endif
+#ifdef DEBUG_GLOBAL
+ 1,
+#else
+ 0,
+#endif
#ifdef DEBUG_GRAPHICS
1,
#else
@@ -322,6 +335,11 @@
#else
0,
#endif
+#ifdef DEBUG_LOCAL
+ 1,
+#else
+ 0,
+#endif
#ifdef DEBUG_MALLOC
1,
#else
@@ -447,6 +465,11 @@
#else
0,
#endif
+#ifdef DEBUG_SELECTOR
+ 1,
+#else
+ 0,
+#endif
#ifdef DEBUG_SELECTORS
1,
#else
@@ -482,6 +505,11 @@
#else
0,
#endif
+#ifdef DEBUG_TOOLHELP
+ 1,
+#else
+ 0,
+#endif
#ifdef DEBUG_UTILITY
1,
#else
@@ -843,8 +871,21 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_graphics if(!debug_msg_enabled[26]) ; else fprintf
-#define debugging_graphics debug_msg_enabled[26]
+#define dprintf_global if(!debug_msg_enabled[26]) ; else fprintf
+#define debugging_global debug_msg_enabled[26]
+#else
+#ifdef DEBUG_GLOBAL
+#define dprintf_global fprintf
+#define debugging_global 1
+#else
+#define dprintf_global while(0) fprintf
+#define debugging_global 0
+#endif
+#endif
+
+#ifdef DEBUG_RUNTIME
+#define dprintf_graphics if(!debug_msg_enabled[27]) ; else fprintf
+#define debugging_graphics debug_msg_enabled[27]
#else
#ifdef DEBUG_GRAPHICS
#define dprintf_graphics fprintf
@@ -856,8 +897,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_heap if(!debug_msg_enabled[27]) ; else fprintf
-#define debugging_heap debug_msg_enabled[27]
+#define dprintf_heap if(!debug_msg_enabled[28]) ; else fprintf
+#define debugging_heap debug_msg_enabled[28]
#else
#ifdef DEBUG_HEAP
#define dprintf_heap fprintf
@@ -869,8 +910,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_icon if(!debug_msg_enabled[28]) ; else fprintf
-#define debugging_icon debug_msg_enabled[28]
+#define dprintf_icon if(!debug_msg_enabled[29]) ; else fprintf
+#define debugging_icon debug_msg_enabled[29]
#else
#ifdef DEBUG_ICON
#define dprintf_icon fprintf
@@ -882,8 +923,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_int if(!debug_msg_enabled[29]) ; else fprintf
-#define debugging_int debug_msg_enabled[29]
+#define dprintf_int if(!debug_msg_enabled[30]) ; else fprintf
+#define debugging_int debug_msg_enabled[30]
#else
#ifdef DEBUG_INT
#define dprintf_int fprintf
@@ -895,8 +936,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_key if(!debug_msg_enabled[30]) ; else fprintf
-#define debugging_key debug_msg_enabled[30]
+#define dprintf_key if(!debug_msg_enabled[31]) ; else fprintf
+#define debugging_key debug_msg_enabled[31]
#else
#ifdef DEBUG_KEY
#define dprintf_key fprintf
@@ -908,8 +949,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_keyboard if(!debug_msg_enabled[31]) ; else fprintf
-#define debugging_keyboard debug_msg_enabled[31]
+#define dprintf_keyboard if(!debug_msg_enabled[32]) ; else fprintf
+#define debugging_keyboard debug_msg_enabled[32]
#else
#ifdef DEBUG_KEYBOARD
#define dprintf_keyboard fprintf
@@ -921,8 +962,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_ldt if(!debug_msg_enabled[32]) ; else fprintf
-#define debugging_ldt debug_msg_enabled[32]
+#define dprintf_ldt if(!debug_msg_enabled[33]) ; else fprintf
+#define debugging_ldt debug_msg_enabled[33]
#else
#ifdef DEBUG_LDT
#define dprintf_ldt fprintf
@@ -934,8 +975,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_listbox if(!debug_msg_enabled[33]) ; else fprintf
-#define debugging_listbox debug_msg_enabled[33]
+#define dprintf_listbox if(!debug_msg_enabled[34]) ; else fprintf
+#define debugging_listbox debug_msg_enabled[34]
#else
#ifdef DEBUG_LISTBOX
#define dprintf_listbox fprintf
@@ -947,8 +988,21 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_malloc if(!debug_msg_enabled[34]) ; else fprintf
-#define debugging_malloc debug_msg_enabled[34]
+#define dprintf_local if(!debug_msg_enabled[35]) ; else fprintf
+#define debugging_local debug_msg_enabled[35]
+#else
+#ifdef DEBUG_LOCAL
+#define dprintf_local fprintf
+#define debugging_local 1
+#else
+#define dprintf_local while(0) fprintf
+#define debugging_local 0
+#endif
+#endif
+
+#ifdef DEBUG_RUNTIME
+#define dprintf_malloc if(!debug_msg_enabled[36]) ; else fprintf
+#define debugging_malloc debug_msg_enabled[36]
#else
#ifdef DEBUG_MALLOC
#define dprintf_malloc fprintf
@@ -960,8 +1014,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_mci if(!debug_msg_enabled[35]) ; else fprintf
-#define debugging_mci debug_msg_enabled[35]
+#define dprintf_mci if(!debug_msg_enabled[37]) ; else fprintf
+#define debugging_mci debug_msg_enabled[37]
#else
#ifdef DEBUG_MCI
#define dprintf_mci fprintf
@@ -973,8 +1027,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_mcianim if(!debug_msg_enabled[36]) ; else fprintf
-#define debugging_mcianim debug_msg_enabled[36]
+#define dprintf_mcianim if(!debug_msg_enabled[38]) ; else fprintf
+#define debugging_mcianim debug_msg_enabled[38]
#else
#ifdef DEBUG_MCIANIM
#define dprintf_mcianim fprintf
@@ -986,8 +1040,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_mciwave if(!debug_msg_enabled[37]) ; else fprintf
-#define debugging_mciwave debug_msg_enabled[37]
+#define dprintf_mciwave if(!debug_msg_enabled[39]) ; else fprintf
+#define debugging_mciwave debug_msg_enabled[39]
#else
#ifdef DEBUG_MCIWAVE
#define dprintf_mciwave fprintf
@@ -999,8 +1053,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_mdi if(!debug_msg_enabled[38]) ; else fprintf
-#define debugging_mdi debug_msg_enabled[38]
+#define dprintf_mdi if(!debug_msg_enabled[40]) ; else fprintf
+#define debugging_mdi debug_msg_enabled[40]
#else
#ifdef DEBUG_MDI
#define dprintf_mdi fprintf
@@ -1012,8 +1066,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_menu if(!debug_msg_enabled[39]) ; else fprintf
-#define debugging_menu debug_msg_enabled[39]
+#define dprintf_menu if(!debug_msg_enabled[41]) ; else fprintf
+#define debugging_menu debug_msg_enabled[41]
#else
#ifdef DEBUG_MENU
#define dprintf_menu fprintf
@@ -1025,8 +1079,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_menucalc if(!debug_msg_enabled[40]) ; else fprintf
-#define debugging_menucalc debug_msg_enabled[40]
+#define dprintf_menucalc if(!debug_msg_enabled[42]) ; else fprintf
+#define debugging_menucalc debug_msg_enabled[42]
#else
#ifdef DEBUG_MENUCALC
#define dprintf_menucalc fprintf
@@ -1038,8 +1092,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_message if(!debug_msg_enabled[41]) ; else fprintf
-#define debugging_message debug_msg_enabled[41]
+#define dprintf_message if(!debug_msg_enabled[43]) ; else fprintf
+#define debugging_message debug_msg_enabled[43]
#else
#ifdef DEBUG_MESSAGE
#define dprintf_message fprintf
@@ -1051,8 +1105,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_metafile if(!debug_msg_enabled[42]) ; else fprintf
-#define debugging_metafile debug_msg_enabled[42]
+#define dprintf_metafile if(!debug_msg_enabled[44]) ; else fprintf
+#define debugging_metafile debug_msg_enabled[44]
#else
#ifdef DEBUG_METAFILE
#define dprintf_metafile fprintf
@@ -1064,8 +1118,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_midi if(!debug_msg_enabled[43]) ; else fprintf
-#define debugging_midi debug_msg_enabled[43]
+#define dprintf_midi if(!debug_msg_enabled[45]) ; else fprintf
+#define debugging_midi debug_msg_enabled[45]
#else
#ifdef DEBUG_MIDI
#define dprintf_midi fprintf
@@ -1077,8 +1131,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_mmio if(!debug_msg_enabled[44]) ; else fprintf
-#define debugging_mmio debug_msg_enabled[44]
+#define dprintf_mmio if(!debug_msg_enabled[46]) ; else fprintf
+#define debugging_mmio debug_msg_enabled[46]
#else
#ifdef DEBUG_MMIO
#define dprintf_mmio fprintf
@@ -1090,8 +1144,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_mmtime if(!debug_msg_enabled[45]) ; else fprintf
-#define debugging_mmtime debug_msg_enabled[45]
+#define dprintf_mmtime if(!debug_msg_enabled[47]) ; else fprintf
+#define debugging_mmtime debug_msg_enabled[47]
#else
#ifdef DEBUG_MMTIME
#define dprintf_mmtime fprintf
@@ -1103,8 +1157,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_module if(!debug_msg_enabled[46]) ; else fprintf
-#define debugging_module debug_msg_enabled[46]
+#define dprintf_module if(!debug_msg_enabled[48]) ; else fprintf
+#define debugging_module debug_msg_enabled[48]
#else
#ifdef DEBUG_MODULE
#define dprintf_module fprintf
@@ -1116,8 +1170,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_msg if(!debug_msg_enabled[47]) ; else fprintf
-#define debugging_msg debug_msg_enabled[47]
+#define dprintf_msg if(!debug_msg_enabled[49]) ; else fprintf
+#define debugging_msg debug_msg_enabled[49]
#else
#ifdef DEBUG_MSG
#define dprintf_msg fprintf
@@ -1129,8 +1183,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_msgbox if(!debug_msg_enabled[48]) ; else fprintf
-#define debugging_msgbox debug_msg_enabled[48]
+#define dprintf_msgbox if(!debug_msg_enabled[50]) ; else fprintf
+#define debugging_msgbox debug_msg_enabled[50]
#else
#ifdef DEBUG_MSGBOX
#define dprintf_msgbox fprintf
@@ -1142,8 +1196,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_nonclient if(!debug_msg_enabled[49]) ; else fprintf
-#define debugging_nonclient debug_msg_enabled[49]
+#define dprintf_nonclient if(!debug_msg_enabled[51]) ; else fprintf
+#define debugging_nonclient debug_msg_enabled[51]
#else
#ifdef DEBUG_NONCLIENT
#define dprintf_nonclient fprintf
@@ -1155,8 +1209,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_ole if(!debug_msg_enabled[50]) ; else fprintf
-#define debugging_ole debug_msg_enabled[50]
+#define dprintf_ole if(!debug_msg_enabled[52]) ; else fprintf
+#define debugging_ole debug_msg_enabled[52]
#else
#ifdef DEBUG_OLE
#define dprintf_ole fprintf
@@ -1168,8 +1222,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_palette if(!debug_msg_enabled[51]) ; else fprintf
-#define debugging_palette debug_msg_enabled[51]
+#define dprintf_palette if(!debug_msg_enabled[53]) ; else fprintf
+#define debugging_palette debug_msg_enabled[53]
#else
#ifdef DEBUG_PALETTE
#define dprintf_palette fprintf
@@ -1181,8 +1235,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_profile if(!debug_msg_enabled[52]) ; else fprintf
-#define debugging_profile debug_msg_enabled[52]
+#define dprintf_profile if(!debug_msg_enabled[54]) ; else fprintf
+#define debugging_profile debug_msg_enabled[54]
#else
#ifdef DEBUG_PROFILE
#define dprintf_profile fprintf
@@ -1194,8 +1248,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_prop if(!debug_msg_enabled[53]) ; else fprintf
-#define debugging_prop debug_msg_enabled[53]
+#define dprintf_prop if(!debug_msg_enabled[55]) ; else fprintf
+#define debugging_prop debug_msg_enabled[55]
#else
#ifdef DEBUG_PROP
#define dprintf_prop fprintf
@@ -1207,8 +1261,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_reg if(!debug_msg_enabled[54]) ; else fprintf
-#define debugging_reg debug_msg_enabled[54]
+#define dprintf_reg if(!debug_msg_enabled[56]) ; else fprintf
+#define debugging_reg debug_msg_enabled[56]
#else
#ifdef DEBUG_REG
#define dprintf_reg fprintf
@@ -1220,8 +1274,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_region if(!debug_msg_enabled[55]) ; else fprintf
-#define debugging_region debug_msg_enabled[55]
+#define dprintf_region if(!debug_msg_enabled[57]) ; else fprintf
+#define debugging_region debug_msg_enabled[57]
#else
#ifdef DEBUG_REGION
#define dprintf_region fprintf
@@ -1233,8 +1287,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_relay if(!debug_msg_enabled[56]) ; else fprintf
-#define debugging_relay debug_msg_enabled[56]
+#define dprintf_relay if(!debug_msg_enabled[58]) ; else fprintf
+#define debugging_relay debug_msg_enabled[58]
#else
#ifdef DEBUG_RELAY
#define dprintf_relay fprintf
@@ -1246,8 +1300,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_resource if(!debug_msg_enabled[57]) ; else fprintf
-#define debugging_resource debug_msg_enabled[57]
+#define dprintf_resource if(!debug_msg_enabled[59]) ; else fprintf
+#define debugging_resource debug_msg_enabled[59]
#else
#ifdef DEBUG_RESOURCE
#define dprintf_resource fprintf
@@ -1259,8 +1313,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_scroll if(!debug_msg_enabled[58]) ; else fprintf
-#define debugging_scroll debug_msg_enabled[58]
+#define dprintf_scroll if(!debug_msg_enabled[60]) ; else fprintf
+#define debugging_scroll debug_msg_enabled[60]
#else
#ifdef DEBUG_SCROLL
#define dprintf_scroll fprintf
@@ -1272,8 +1326,21 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_selectors if(!debug_msg_enabled[59]) ; else fprintf
-#define debugging_selectors debug_msg_enabled[59]
+#define dprintf_selector if(!debug_msg_enabled[61]) ; else fprintf
+#define debugging_selector debug_msg_enabled[61]
+#else
+#ifdef DEBUG_SELECTOR
+#define dprintf_selector fprintf
+#define debugging_selector 1
+#else
+#define dprintf_selector while(0) fprintf
+#define debugging_selector 0
+#endif
+#endif
+
+#ifdef DEBUG_RUNTIME
+#define dprintf_selectors if(!debug_msg_enabled[62]) ; else fprintf
+#define debugging_selectors debug_msg_enabled[62]
#else
#ifdef DEBUG_SELECTORS
#define dprintf_selectors fprintf
@@ -1285,8 +1352,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_stack if(!debug_msg_enabled[60]) ; else fprintf
-#define debugging_stack debug_msg_enabled[60]
+#define dprintf_stack if(!debug_msg_enabled[63]) ; else fprintf
+#define debugging_stack debug_msg_enabled[63]
#else
#ifdef DEBUG_STACK
#define dprintf_stack fprintf
@@ -1298,8 +1365,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_stress if(!debug_msg_enabled[61]) ; else fprintf
-#define debugging_stress debug_msg_enabled[61]
+#define dprintf_stress if(!debug_msg_enabled[64]) ; else fprintf
+#define debugging_stress debug_msg_enabled[64]
#else
#ifdef DEBUG_STRESS
#define dprintf_stress fprintf
@@ -1311,8 +1378,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_syscolor if(!debug_msg_enabled[62]) ; else fprintf
-#define debugging_syscolor debug_msg_enabled[62]
+#define dprintf_syscolor if(!debug_msg_enabled[65]) ; else fprintf
+#define debugging_syscolor debug_msg_enabled[65]
#else
#ifdef DEBUG_SYSCOLOR
#define dprintf_syscolor fprintf
@@ -1324,8 +1391,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_task if(!debug_msg_enabled[63]) ; else fprintf
-#define debugging_task debug_msg_enabled[63]
+#define dprintf_task if(!debug_msg_enabled[66]) ; else fprintf
+#define debugging_task debug_msg_enabled[66]
#else
#ifdef DEBUG_TASK
#define dprintf_task fprintf
@@ -1337,8 +1404,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_text if(!debug_msg_enabled[64]) ; else fprintf
-#define debugging_text debug_msg_enabled[64]
+#define dprintf_text if(!debug_msg_enabled[67]) ; else fprintf
+#define debugging_text debug_msg_enabled[67]
#else
#ifdef DEBUG_TEXT
#define dprintf_text fprintf
@@ -1350,8 +1417,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_timer if(!debug_msg_enabled[65]) ; else fprintf
-#define debugging_timer debug_msg_enabled[65]
+#define dprintf_timer if(!debug_msg_enabled[68]) ; else fprintf
+#define debugging_timer debug_msg_enabled[68]
#else
#ifdef DEBUG_TIMER
#define dprintf_timer fprintf
@@ -1363,8 +1430,21 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_utility if(!debug_msg_enabled[66]) ; else fprintf
-#define debugging_utility debug_msg_enabled[66]
+#define dprintf_toolhelp if(!debug_msg_enabled[69]) ; else fprintf
+#define debugging_toolhelp debug_msg_enabled[69]
+#else
+#ifdef DEBUG_TOOLHELP
+#define dprintf_toolhelp fprintf
+#define debugging_toolhelp 1
+#else
+#define dprintf_toolhelp while(0) fprintf
+#define debugging_toolhelp 0
+#endif
+#endif
+
+#ifdef DEBUG_RUNTIME
+#define dprintf_utility if(!debug_msg_enabled[70]) ; else fprintf
+#define debugging_utility debug_msg_enabled[70]
#else
#ifdef DEBUG_UTILITY
#define dprintf_utility fprintf
@@ -1376,8 +1456,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_win if(!debug_msg_enabled[67]) ; else fprintf
-#define debugging_win debug_msg_enabled[67]
+#define dprintf_win if(!debug_msg_enabled[71]) ; else fprintf
+#define debugging_win debug_msg_enabled[71]
#else
#ifdef DEBUG_WIN
#define dprintf_win fprintf
@@ -1389,8 +1469,8 @@
#endif
#ifdef DEBUG_RUNTIME
-#define dprintf_winsock if(!debug_msg_enabled[68]) ; else fprintf
-#define debugging_winsock debug_msg_enabled[68]
+#define dprintf_winsock if(!debug_msg_enabled[72]) ; else fprintf
+#define debugging_winsock debug_msg_enabled[72]
#else
#ifdef DEBUG_WINSOCK
#define dprintf_winsock fprintf
@@ -1431,6 +1511,7 @@
"fixup",
"font",
"gdi",
+ "global",
"graphics",
"heap",
"icon",
@@ -1439,6 +1520,7 @@
"keyboard",
"ldt",
"listbox",
+ "local",
"malloc",
"mci",
"mcianim",
@@ -1464,6 +1546,7 @@
"relay",
"resource",
"scroll",
+ "selector",
"selectors",
"stack",
"stress",
@@ -1471,6 +1554,7 @@
"task",
"text",
"timer",
+ "toolhelp",
"utility",
"win",
"winsock",
diff --git a/include/dlls.h b/include/dlls.h
index 0ad5c2f..cdceae5 100644
--- a/include/dlls.h
+++ b/include/dlls.h
@@ -20,7 +20,7 @@
struct ne_data {
struct ne_header_s *ne_header;
struct ne_segment_table_entry_s *seg_table;
- struct segment_descriptor_s *selector_table;
+ unsigned short *selector_table;
char *lookup_table;
char *nrname_table;
char *rname_table;
@@ -61,7 +61,6 @@
#define DLL_MAX_ARGS 16
#define DLL_HANDLERTYPE_PASCAL 16
-#define DLL_HANDLERTYPE_C 17
struct dll_table_entry_s
{
@@ -76,7 +75,6 @@
*/
char *export_name;
void *handler; /* Address of function to process request */
- char handler_type; /* C or PASCAL calling convention */
char n_args; /* Number of arguments passed to function */
short conv_reference ; /* reference to Argument conversion data */
#ifdef WINESTAT
@@ -97,7 +95,6 @@
extern struct dll_table_entry_s KERNEL_table[];
extern struct dll_table_entry_s USER_table[];
extern struct dll_table_entry_s GDI_table[];
-extern struct dll_table_entry_s UNIXLIB_table[];
extern struct dll_table_entry_s WIN87EM_table[];
extern struct dll_table_entry_s MMSYSTEM_table[];
extern struct dll_table_entry_s SHELL_table[];
@@ -116,12 +113,13 @@
extern struct dll_table_entry_s OLE2PROX_table[];
extern struct dll_table_entry_s OLECLI_table[];
extern struct dll_table_entry_s OLESVR_table[];
+extern struct dll_table_entry_s COMPOBJ_table[];
+extern struct dll_table_entry_s STORAGE_table[];
extern unsigned short KERNEL_offsets[];
extern unsigned short USER_offsets[];
extern unsigned short GDI_offsets[];
-extern unsigned short UNIXLIB_offsets[];
extern unsigned short WIN87EM_offsets[];
extern unsigned short MMSYSTEM_offsets[];
extern unsigned short SHELL_offsets[];
@@ -140,12 +138,13 @@
extern unsigned short OLE2PROX_offsets[];
extern unsigned short OLECLI_offsets[];
extern unsigned short OLESVR_offsets[];
+extern unsigned short COMPOBJ_offsets[];
+extern unsigned short STORAGE_offsets[];
extern unsigned char KERNEL_types[];
extern unsigned char USER_types[];
extern unsigned char GDI_types[];
-extern unsigned char UNIXLIB_types[];
extern unsigned char WIN87EM_types[];
extern unsigned char MMSYSTEM_types[];
extern unsigned char SHELL_types[];
@@ -164,8 +163,10 @@
extern unsigned char OLE2PROX_types[];
extern unsigned char OLECLI_types[];
extern unsigned char OLESVR_types[];
+extern unsigned char COMPOBJ_types[];
+extern unsigned char STORAGE_types[];
-#define N_BUILTINS 22
+#define N_BUILTINS 23
#endif /* DLLS_H */
diff --git a/include/gdi.h b/include/gdi.h
index 476782f..561e882 100644
--- a/include/gdi.h
+++ b/include/gdi.h
@@ -11,8 +11,8 @@
#include <X11/Xutil.h>
#include "windows.h"
-#include "segmem.h"
-#include "heap.h"
+#include "ldt.h"
+#include "local.h"
/* GDI objects magic numbers */
#define PEN_MAGIC 0x4f47
@@ -245,18 +245,26 @@
#ifdef WINELIB
-#define GDI_HEAP_ALLOC(f,size) LocalAlloc (f,size)
-#define GDI_HEAP_ADDR(handle) LocalLock (handle)
-#define GDI_HEAP_FREE(handle) LocalFree (handle)
+#define GDI_HEAP_ALLOC(f,size) LocalAlloc (f,size)
+#define GDI_HEAP_LIN_ADDR(handle) LocalLock (handle)
+#define GDI_HEAP_SEG_ADDR(handle) LocalLock (handle)
+#define GDI_HEAP_FREE(handle) LocalFree (handle)
#else
-extern MDESC *GDI_Heap;
+extern LPSTR GDI_Heap;
+extern WORD GDI_HeapSel;
-#define GDI_HEAP_ALLOC(f,size) ((int)HEAP_Alloc(&GDI_Heap,f,size) & 0xffff)
-#define GDI_HEAP_FREE(handle) (HEAP_Free(&GDI_Heap,GDI_HEAP_ADDR(handle)))
-#define GDI_HEAP_ADDR(handle) \
- ((void *)((handle) ? ((handle) | ((int)GDI_Heap & 0xffff0000)) : 0))
+#define GDI_HEAP_ALLOC(size) \
+ LOCAL_Alloc( GDI_HeapSel, LMEM_FIXED, (size) )
+#define GDI_HEAP_REALLOC(handle,size) \
+ LOCAL_ReAlloc( GDI_HeapSel, (handle), (size), LMEM_FIXED )
+#define GDI_HEAP_FREE(handle) \
+ LOCAL_Free( GDI_HeapSel, (handle) )
+#define GDI_HEAP_LIN_ADDR(handle) \
+ ((handle) ? PTR_SEG_OFF_TO_LIN(GDI_HeapSel, (handle)) : NULL)
+#define GDI_HEAP_SEG_ADDR(handle) \
+ ((handle) ? MAKELONG((handle), GDI_HeapSel) : 0)
#endif
diff --git a/include/heap.h b/include/heap.h
deleted file mode 100644
index 043d013..0000000
--- a/include/heap.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/* $Id: heap.h,v 1.2 1993/07/04 04:04:21 root Exp root $
- */
-/*
- * Copyright Robert J. Amstadt, 1993
- */
-#ifndef HEAP_H
-#define HEAP_H
-
-#include "segmem.h"
-#include "atom.h"
-#include "stackframe.h"
-
-/**********************************************************************
- * LOCAL HEAP STRUCTURES AND FUNCTIONS
- */
-typedef struct heap_mem_desc_s
-{
- struct heap_mem_desc_s *prev, *next;
- unsigned short length;
- unsigned char lock;
- unsigned char flags;
-} MDESC;
-
-typedef struct heap_local_heap_s
-{
- struct heap_local_heap_s *next;
- MDESC *free_list;
- ATOMTABLE *local_table;
- unsigned short selector;
- unsigned short delta; /* Number saved for Windows compat. */
-} LHEAP;
-
-extern void HEAP_Init(MDESC **free_list, void *start, int length);
-extern void *HEAP_Alloc(MDESC **free_list, int flags, int bytes);
-extern int HEAP_Free(MDESC **free_list, void *block);
-extern void *HEAP_ReAlloc(MDESC **free_list, void *old_block,
- int new_size, unsigned int flags);
-
-extern LHEAP *HEAP_LocalFindHeap(unsigned short owner);
-extern unsigned int HEAP_LocalSize(MDESC **free_list, unsigned int handle);
-extern void HEAP_LocalInit(unsigned short owner, void *start, int length);
-
-extern void *WIN16_LocalAlloc(int flags, int bytes);
-extern int WIN16_LocalCompact(int min_free);
-extern unsigned int WIN16_LocalFlags(unsigned int handle);
-extern unsigned int WIN16_LocalFree(unsigned int handle);
-extern void *WIN16_LocalLock(unsigned int handle);
-extern void *WIN16_LocalReAlloc(unsigned int handle, int flags, int bytes);
-extern unsigned int WIN16_LocalUnlock(unsigned int handle);
-
-/* Use ds instead of owner of cs */
-#define HEAP_OWNER (pStack16Frame->ds)
-#define LOCALHEAP() (&HEAP_LocalFindHeap(HEAP_OWNER)->free_list)
-#define LOCALATOMTABLE() (&HEAP_LocalFindHeap(HEAP_OWNER)->local_table)
-
-/**********************************************************************
- * GLOBAL HEAP STRUCTURES AND FUNCTIONS:
- *
- * Global memory pool descriptor. Segments MUST be maintained in segment
- * ascending order. If not the reallocation routine will die a horrible
- * death.
- *
- * handle = 0, this descriptor contains the address of a free pool.
- * != 0, this describes an allocated block.
- *
- * sequence = 0, this is not a huge block
- * > 0, this is a portion of a huge block
- * =-1, this is a free segment
- *
- * addr - address of this memory block.
- *
- * length - used to maintain huge blocks.
- */
-typedef struct global_mem_desc_s
-{
- struct global_mem_desc_s *next; /* Next GDESC in list */
- struct global_mem_desc_s *prev; /* Previous GDESC in list */
- unsigned short handle; /* Handle of this block. */
- short sequence; /* Block sequence # in huge block */
- void *addr; /* Address allocated with mmap() */
- int length; /* Length of block */
- int lock_count; /* Block lock count */
- unsigned short alias; /* Offset-zero alias selector */
- unsigned int alias_key; /* Offset-zero alias sh. mem. key */
- void *linear_addr; /* Linear address of huge block */
- int linear_key; /* Linear shared memory key */
- int linear_count; /* Linear lock count */
-} GDESC;
-
-extern GDESC *GlobalList;
-
-extern void *GlobalQuickAlloc(int size);
-extern unsigned int GlobalHandleFromPointer(void *block);
-extern GDESC *GlobalGetGDesc(unsigned int block);
-extern void *GlobalLinearLock(unsigned int block);
-extern unsigned int GlobalLinearUnlock(unsigned int block);
-
-#endif /* HEAP_H */
diff --git a/include/hook.h b/include/hook.h
index f70dce8..303fdd8 100644
--- a/include/hook.h
+++ b/include/hook.h
@@ -8,7 +8,7 @@
#define HOOK_H
#include "windows.h"
-#include "user.h"
+#include "ldt.h"
/* Hook data (pointed to by a HHOOK) */
typedef struct
@@ -26,7 +26,8 @@
#define SYSTEM_HOOK(id) (systemHooks[(id)-FIRST_HOOK])
#define TASK_HOOK(id) (taskHooks[(id)-FIRST_HOOK])
#define INTERNAL_CALL_HOOK(hhook,code,wparam,lparam) \
- ((hhook) ? CallHookProc(((HOOKDATA*)(hhook))->proc,code,wparam,lparam) : 0)
+ ((hhook) ? CallHookProc(((HOOKDATA*)PTR_SEG_TO_LIN(hhook))->proc,\
+ code, wparam, lparam) : 0)
#define CALL_SYSTEM_HOOK(id,code,wparam,lparam) \
INTERNAL_CALL_HOOK(SYSTEM_HOOK(id),code,wparam,lparam)
diff --git a/include/if1632.h b/include/if1632.h
index 1cf7637..03621a6 100644
--- a/include/if1632.h
+++ b/include/if1632.h
@@ -8,7 +8,6 @@
extern int CallTo16cx(unsigned long csip, unsigned long dscx);
extern int CallToDllEntry(unsigned long csip, unsigned long dscx, unsigned short di);
extern int CallBack16(void *func, int n_args, ...);
-extern void *CALLBACK_MakeProcInstance(void *func, int instance);
extern void CallLineDDAProc(FARPROC func, short xPos, short yPos, long lParam);
extern void winestat(void);
extern int DLLRelay(unsigned int func_num, unsigned int seg_off);
diff --git a/include/instance.h b/include/instance.h
new file mode 100644
index 0000000..95dde0e
--- /dev/null
+++ b/include/instance.h
@@ -0,0 +1,26 @@
+/*
+ * Instance data declaration
+ *
+ * Copyright 1995 Alexandre Julliard
+ */
+
+#ifndef __WINE_INSTANCE_H
+#define __WINE_INSTANCE_H
+
+#include "wintypes.h"
+
+ /* This structure is always located at offset 0 of the DGROUP segment */
+
+typedef struct
+{
+ WORD null; /* Always 0 */
+ WORD old_sp; /* Stack pointer; used by SwitchTaskTo() */
+ WORD old_ss; /* Stack segment; used by SwitchTaskTo() */
+ WORD heap; /* Pointer to the local heap information (if any) */
+ WORD atomtable; /* Pointer to the local atom table (if any) */
+ WORD stacktop; /* Top of the stack */
+ WORD stackmin; /* Lowest stack address used so far */
+ WORD stackbottom; /* Bottom of the stack */
+} INSTANCEDATA;
+
+#endif /* __WINE_INSTANCE_H */
diff --git a/include/ldt.h b/include/ldt.h
new file mode 100644
index 0000000..6fa19aa
--- /dev/null
+++ b/include/ldt.h
@@ -0,0 +1,62 @@
+/*
+ * LDT copy
+ *
+ * Copyright 1995 Alexandre Julliard
+ */
+
+#ifndef _WINE_LDT_H
+#define _WINE_LDT_H
+
+enum seg_type
+{
+ SEGMENT_DATA = 0,
+ SEGMENT_STACK = 1,
+ SEGMENT_CODE = 2
+};
+
+ /* This structure represents a real LDT entry. */
+ /* It is used by get_ldt_entry() and set_ldt_entry(). */
+typedef struct
+{
+ unsigned long base; /* base address */
+ unsigned long limit; /* segment limit */
+ int seg_32bit; /* is segment 32-bit? */
+ int read_only; /* is segment read-only? */
+ int limit_in_pages; /* is the limit in pages or bytes? */
+ enum seg_type type; /* segment type */
+} ldt_entry;
+
+extern int LDT_GetEntry( int entry, ldt_entry *content );
+extern int LDT_SetEntry( int entry, ldt_entry *content );
+extern void LDT_Print();
+
+
+ /* This structure is used to build the local copy of the LDT. */
+typedef struct
+{
+ unsigned long base; /* base address or 0 if entry is free */
+ unsigned long limit; /* limit in bytes or 0 if entry is free */
+} ldt_copy_entry;
+
+#define LDT_SIZE 8192
+
+extern ldt_copy_entry ldt_copy[LDT_SIZE];
+
+#define __AHSHIFT 3
+#define __AHINCR (1 << __AHSHIFT)
+
+#define SELECTOR_TO_ENTRY(sel) ((int)(sel) >> __AHSHIFT)
+#define ENTRY_TO_SELECTOR(i) ((i) ? (((int)(i) << __AHSHIFT) | 7) : 0)
+#define IS_LDT_ENTRY_FREE(i) (!(ldt_copy[(i)].base || ldt_copy[(i)].limit))
+#define IS_SELECTOR_FREE(sel) (IS_LDT_ENTRY_FREE(SELECTOR_TO_ENTRY(sel)))
+#define GET_SEL_BASE(sel) (ldt_copy[SELECTOR_TO_ENTRY(sel)].base)
+#define GET_SEL_LIMIT(sel) (ldt_copy[SELECTOR_TO_ENTRY(sel)].limit)
+
+ /* Convert a segmented ptr (16:16) to a linear (32) pointer */
+#define PTR_SEG_TO_LIN(ptr) \
+ ((void*)(GET_SEL_BASE((int)(ptr) >> 16) + ((int)(ptr) & 0xffff)))
+
+#define PTR_SEG_OFF_TO_LIN(seg,off) \
+ ((void*)(GET_SEL_BASE(seg) + ((int)(off) & 0xffff)))
+
+#endif /* _WINE_LDT_H */
diff --git a/include/listbox.h b/include/listbox.h
index 1e56b7f..c1b2278 100644
--- a/include/listbox.h
+++ b/include/listbox.h
@@ -30,7 +30,7 @@
HWND hWndLogicParent;
HFONT hFont;
BOOL bRedrawFlag;
- MDESC *Heap;
+/* MDESC *Heap; */
} HEADLIST;
typedef HEADLIST FAR* LPHEADLIST;
diff --git a/include/local.h b/include/local.h
new file mode 100644
index 0000000..eb813e9
--- /dev/null
+++ b/include/local.h
@@ -0,0 +1,24 @@
+/*
+ * Local heap declarations
+ *
+ * Copyright 1995 Alexandre Julliard
+ */
+
+#ifndef __WINE_HEAP_H
+#define __WINE_HEAP_H
+
+#include "wintypes.h"
+
+ /* These function are equivalent to the Local* API functions, */
+ /* excepted that they need DS as the first parameter. This */
+ /* allows managing several heaps from the emulation library. */
+
+extern HLOCAL LOCAL_Alloc( WORD ds, WORD flags, WORD size );
+extern HLOCAL LOCAL_ReAlloc( WORD ds, HLOCAL handle, WORD size, WORD flags );
+extern HLOCAL LOCAL_Free( WORD ds, HLOCAL handle );
+extern HLOCAL LOCAL_Handle( WORD ds, WORD addr );
+extern WORD LOCAL_Size( WORD ds, HLOCAL handle );
+extern WORD LOCAL_Flags( WORD ds, HLOCAL handle );
+extern WORD LOCAL_HeapSize( WORD ds );
+
+#endif /* __WINE_HEAP_H */
diff --git a/include/message.h b/include/message.h
index b634227..c8a1429 100644
--- a/include/message.h
+++ b/include/message.h
@@ -54,7 +54,7 @@
extern void hardware_event( WORD message, WORD wParam, LONG lParam,
int xPos, int yPos, DWORD time, DWORD extraInfo );
extern BOOL MSG_GetHardwareMessage( LPMSG msg );
-extern BOOL MSG_InternalGetMessage( LPMSG msg, HWND hwnd, HWND hwndOwner,
+extern BOOL MSG_InternalGetMessage( SEGPTR msg, HWND hwnd, HWND hwndOwner,
short code, WORD flags, BOOL sendIdle );
#endif /* MESSAGE_H */
diff --git a/include/msdos.h b/include/msdos.h
index 31bf3fb..35b8d92 100644
--- a/include/msdos.h
+++ b/include/msdos.h
@@ -15,6 +15,7 @@
char search_attribute;
long filesize;
long filetime;
+ short entnum; /* Directory entry number */
};
struct fcb {
@@ -29,16 +30,13 @@
BYTE dummy2[9];
};
-#define DOSVERSION 0x0330;
+#define DOSVERSION 0x0500; /* Might as well pretend we're DOS 5.0 */
#define MAX_DOS_DRIVES 26
extern WORD ExtendedError;
extern struct DosDeviceStruct COM[MAX_PORTS];
extern struct DosDeviceStruct LPT[MAX_PORTS];
-#define segment(a) ((DWORD)(a) >> 16)
-#define offset(a) ((DWORD)(a) & 0xffff)
-
#define setword(a,b) *(BYTE*)(a) = (b) & 0xff; \
*((BYTE*)((a)+1)) = ((b)>>8) & 0xff;
diff --git a/include/neexe.h b/include/neexe.h
index d31a0e3..ad26cbe 100644
--- a/include/neexe.h
+++ b/include/neexe.h
@@ -133,11 +133,7 @@
#define NE_RELTYPE_ORDINAL 1
#define NE_RELTYPE_NAME 2
#define NE_RELTYPE_OSFIXUP 3
-/* Used by Windows 3.0 programs, like when getting selector to be
- given to makeprocinst */
-#define NE_RELTYPE_INT1 4
-#define NE_RELTYPE_ORDINALADD 5
-#define NE_RELTYPE_NAMEADD 6
+#define NE_RELFLAG_ADDITIVE 4
/*
* DOS PSP
diff --git a/include/options.h b/include/options.h
index 317f9c1..095fa88 100644
--- a/include/options.h
+++ b/include/options.h
@@ -17,6 +17,8 @@
int backingstore; /* Use backing store */
short cmdShow;
int debug;
+ int allowReadOnly; /* Opening a read only file will succeed even
+ if write access is requested */
};
extern struct options Options;
diff --git a/include/prototypes.h b/include/prototypes.h
index d50a2db..9fa03da 100644
--- a/include/prototypes.h
+++ b/include/prototypes.h
@@ -9,22 +9,11 @@
#include <sys/types.h>
#include "neexe.h"
-#include "segmem.h"
-#include "heap.h"
#include "msdos.h"
#include "windows.h"
#ifndef WINELIB
-/* loader/ldtlib.c */
-
-struct segment_descriptor *
-make_sd(unsigned base, unsigned limit, int contents, int read_exec_only, int seg32, int inpgs);
-int get_ldt(void *buffer);
-int set_ldt_entry(int entry, unsigned long base, unsigned int limit,
- int seg_32bit_flag, int contents, int read_only_flag,
- int limit_in_pages_flag);
-
/* loader/resource.c */
extern HBITMAP ConvertCoreBitmap( HDC hdc, BITMAPCOREHEADER * image );
@@ -44,11 +33,6 @@
extern int _WinMain(int argc, char **argv);
extern void InitializeLoadedDLLs();
-extern int KERNEL_LockSegment(int segment);
-extern int KERNEL_UnlockSegment(int segment);
-extern void KERNEL_InitTask(void);
-extern int KERNEL_WaitEvent(int task);
-
/* misc/spy.c */
extern void SpyInit(void);
@@ -57,9 +41,5 @@
extern BOOL WIDGETS_Init(void);
-/* windows/dce.c */
-
-extern void DCE_Init(void);
-
#endif /* WINELIB */
#endif /* _WINE_PROTOTYPES_H */
diff --git a/include/regfunc.h b/include/regfunc.h
index 913ca86..fa91700 100644
--- a/include/regfunc.h
+++ b/include/regfunc.h
@@ -7,13 +7,11 @@
#include "wine.h"
#include "stackframe.h"
-#define _CONTEXT ((struct sigcontext_struct *) pStack16Frame->args)
+#define _CONTEXT ((struct sigcontext_struct *) CURRENT_STACK16->args)
#define _AX (_CONTEXT->sc_eax)
#define _BX (_CONTEXT->sc_ebx)
#define _CX (_CONTEXT->sc_ecx)
#define _DX (_CONTEXT->sc_edx)
-#define _SP (_CONTEXT->sc_esp)
-#define _BP (_CONTEXT->sc_ebp)
#define _SI (_CONTEXT->sc_esi)
#define _DI (_CONTEXT->sc_edi)
#define _DS (_CONTEXT->sc_ds)
diff --git a/include/segmem.h b/include/segmem.h
deleted file mode 100644
index 583adc9..0000000
--- a/include/segmem.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/* $Id: segmem.h,v 1.3 1993/07/04 04:04:21 root Exp root $
- */
-/*
- * Copyright Robert J. Amstadt, 1993
- */
-#ifndef SEGMEM_H
-#define SEGMEM_H
-
-#include "wine.h"
-
-#ifdef __linux__
-#define HAVE_IPC
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#endif
-
-#if defined(__NetBSD__) || defined(__FreeBSD__)
-#define HAVE_IPC
-#include <sys/types.h>
-#include <sys/ipc.h>
-#include <sys/shm.h>
-#define SHMSEG 32 /* XXX SEMMNI /usr/src/sys/conf/param.h */
-#define SHM_RANGE_START 0x40000000
-#endif
-
-/*
- * Array to track selector allocation.
- */
-#define SELECTOR_ISFREE 0x8000
-#define SELECTOR_IS32BIT 0x4000
-#define SELECTOR_INDEXMASK 0x0fff
-
-#define __AHSHIFT 3
-#define __AHINCR (1 << __AHSHIFT)
-
-extern unsigned short* SelectorMap;
-
-#ifdef HAVE_IPC
-#define SAFEMAKEPTR(s, o) ((void *)(((int) (s) << 16) | ((o) & 0xffff)))
-#define FIXPTR(p) (p)
-#else
-#define SAFEMAKEPTR(s, o) \
- ((void*)(((int)SelectorMap[SelectorMap[(s)>>__AHSHIFT] & SELECTOR_INDEXMASK]\
- << (16 + __AHSHIFT)) | 0x70000 | ((o) & 0xffff)))
-#define FIXPTR(p) SAFEMAKEPTR((unsigned long) (p) >> 16, (p))
-#endif
-
-#define MAKESELECTOR(fp) ((unsigned short) (fp >> (16 + __AHSHIFT)))
-
-
-/*
- * Structure to hold info about each selector we create.
- */
-
-typedef struct segment_descriptor_s
-{
- void *base_addr; /* Pointer to segment in flat memory */
- unsigned int length; /* Length of segment */
- unsigned int flags; /* Segment flags (see neexe.h and below)*/
- unsigned short selector; /* Selector used to access this segment */
- unsigned short owner; /* Handle of owner program */
- unsigned char type; /* DATA or CODE */
-#ifdef HAVE_IPC
- key_t shm_key; /* Shared memory key or -1 */
-#endif
-} SEGDESC;
-
-extern int IPCCopySelector(int i_old, unsigned long new, int swap_type);
-
-/*
- * Additional flags
- */
-#define NE_SEGFLAGS_MALLOCED 0x00010000 /* Memory allocated with malloc() */
-
-/*
- * Global memory flags
- */
-#define GLOBAL_FLAGS_MOVEABLE 0x0002
-#define GLOBAL_FLAGS_ZEROINIT 0x0040
-#define GLOBAL_FLAGS_CODE 0x00010000
-#define GLOBAL_FLAGS_EXECUTEONLY 0x00020000
-#define GLOBAL_FLAGS_READONLY 0x00020000
-
-#ifdef __ELF__
-#define FIRST_SELECTOR 2
-#define IS_16_BIT_ADDRESS(addr) \
- (!(SelectorMap[(unsigned int)(addr) >> (16+__AHSHIFT)]& SELECTOR_IS32BIT))
-#else
-#define FIRST_SELECTOR 8
-#define IS_16_BIT_ADDRESS(addr) \
- ((unsigned int)(addr) >= (((FIRST_SELECTOR << __AHSHIFT) | 7) << 16))
-#endif
-
-
-extern SEGDESC* Segments;
-
-#endif /* SEGMEM_H */
diff --git a/include/selectors.h b/include/selectors.h
index 7724f5c..55715b9 100644
--- a/include/selectors.h
+++ b/include/selectors.h
@@ -1,25 +1,28 @@
+/*
+ * Selector definitions
+ *
+ * Copyright 1995 Alexandre Julliard
+ */
+
#ifndef __WINE_SELECTORS_H
#define __WINE_SELECTORS_H
-#include "dlls.h"
-#include "segmem.h"
#include "windows.h"
+#include "ldt.h"
-extern int FindUnusedSelectors(int n_selectors);
-extern int IPCCopySelector(int i_old, unsigned long new, int swap_type);
-extern WORD AllocSelector(WORD old_selector);
-extern unsigned int PrestoChangoSelector(unsigned src_selector, unsigned dst_selector);
-extern WORD AllocDStoCSAlias(WORD ds_selector);
-extern SEGDESC *CreateSelectors(struct w_files * wpnt);
-extern WORD FreeSelector(WORD sel);
+extern WORD SELECTOR_AllocBlock( void *base, DWORD size, enum seg_type type,
+ BOOL is32bit, BOOL readonly );
+extern WORD SELECTOR_ReallocBlock( WORD sel, void *base, DWORD size,
+ enum seg_type type, BOOL is32bit,
+ BOOL readonly );
-extern SEGDESC *CreateNewSegments(int code_flag, int read_only, int length,
- int n_segments);
-extern SEGDESC *GetNextSegment(unsigned int flags, unsigned int limit);
+#include "dlls.h"
-extern unsigned int GetEntryDLLName(char *dll_name, char *function, int *sel,
+extern WORD *CreateSelectors( struct w_files * wpnt );
+
+extern unsigned int GetEntryDLLName(char *dll_name, char *function, WORD *sel,
int *addr);
-extern unsigned int GetEntryDLLOrdinal(char *dll_name, int ordinal, int *sel,
+extern unsigned int GetEntryDLLOrdinal(char *dll_name, int ordinal, WORD *sel,
int *addr);
extern unsigned int GetEntryPointFromOrdinal(struct w_files * wpnt,
int ordinal);
diff --git a/include/stackframe.h b/include/stackframe.h
index 9c008d7..d029ec1 100644
--- a/include/stackframe.h
+++ b/include/stackframe.h
@@ -8,13 +8,13 @@
#define WINE_STACKFRAME_H
#include <windows.h>
+#include "ldt.h"
typedef struct
{
WORD saved_ss;
WORD saved_bp;
WORD saved_sp;
- WORD es;
WORD ds;
WORD bp;
WORD arg_length;
@@ -23,7 +23,13 @@
WORD args[1];
} STACK16FRAME;
+extern WORD IF1632_Saved16_ss;
+extern WORD IF1632_Saved16_sp;
+extern WORD IF1632_Saved16_bp;
-extern STACK16FRAME *pStack16Frame;
+#define CURRENT_STACK16 \
+ ((STACK16FRAME *)PTR_SEG_OFF_TO_LIN(IF1632_Saved16_ss,IF1632_Saved16_sp))
+
+#define CURRENT_DS (CURRENT_STACK16->ds)
#endif /* WINE_STACKFRAME_H */
diff --git a/include/stddebug.h b/include/stddebug.h
index e9d74ce..4abb78e 100644
--- a/include/stddebug.h
+++ b/include/stddebug.h
@@ -102,6 +102,7 @@
#undef DEBUG_FIXUP
#undef DEBUG_FONT
#undef DEBUG_GDI
+#undef DEBUG_GLOBAL
#undef DEBUG_GRAPHICS
#undef DEBUG_HEAP
#undef DEBUG_ICON
@@ -110,6 +111,7 @@
#undef DEBUG_KEYBOARD
#undef DEBUG_LDT
#undef DEBUG_LISTBOX
+#undef DEBUG_LOCAL
#undef DEBUG_MALLOC
#undef DEBUG_MCI
#undef DEBUG_MCIANIM
@@ -135,6 +137,7 @@
#undef DEBUG_RELAY
#undef DEBUG_RESOURCE
#undef DEBUG_SCROLL
+#undef DEBUG_SELECTOR
#undef DEBUG_SELECTORS
#undef DEBUG_STACK
#undef DEBUG_STRESS
@@ -142,6 +145,7 @@
#undef DEBUG_TASK
#undef DEBUG_TEXT
#undef DEBUG_TIMER
+#undef DEBUG_TOOLHELP
#undef DEBUG_UTILITY
#undef DEBUG_WIN
#undef DEBUG_WINSOCK
@@ -174,6 +178,7 @@
#define DEBUG_FIXUP
#define DEBUG_FONT
#define DEBUG_GDI
+#define DEBUG_GLOBAL
#define DEBUG_GRAPHICS
#define DEBUG_HEAP
#define DEBUG_ICON
@@ -182,6 +187,7 @@
#define DEBUG_KEYBOARD
#define DEBUG_LDT
#define DEBUG_LISTBOX
+#define DEBUG_LOCAL
#define DEBUG_MALLOC
#define DEBUG_MCI
#define DEBUG_MCIANIM
@@ -207,6 +213,7 @@
#define DEBUG_RELAY
#define DEBUG_RESOURCE
#define DEBUG_SCROLL
+#define DEBUG_SELECTOR
#define DEBUG_SELECTORS
#define DEBUG_STACK
#define DEBUG_STRESS
@@ -214,6 +221,7 @@
#define DEBUG_TASK
#define DEBUG_TEXT
#define DEBUG_TIMER
+#define DEBUG_TOOLHELP
#define DEBUG_UTILITY
#define DEBUG_WIN
#define DEBUG_WINSOCK
diff --git a/include/toolhelp.h b/include/toolhelp.h
index 40d7d9b..85ab7b3 100644
--- a/include/toolhelp.h
+++ b/include/toolhelp.h
@@ -3,14 +3,93 @@
#include "windows.h"
-DECLARE_HANDLE(HMODULE);
-DECLARE_HANDLE(HGLOBAL);
-
#define MAX_DATA 11
#define MAX_MODULE_NAME 9
#define MAX_PATH 255
#define MAX_CLASSNAME 255
+/* Global heap */
+
+WORD GlobalHandleToSel( HANDLE handle );
+
+
+/* Local heap */
+
+typedef struct
+{
+ DWORD dwSize;
+ WORD wcItems;
+} LOCALINFO;
+
+typedef struct
+{
+ DWORD dwSize;
+ HLOCAL hHandle;
+ WORD wAddress;
+ WORD wSize;
+ WORD wFlags;
+ WORD wcLock;
+ WORD wType;
+ WORD hHeap;
+ WORD wHeapType;
+ WORD wNext;
+} LOCALENTRY;
+
+/* wHeapType values */
+#define NORMAL_HEAP 0
+#define USER_HEAP 1
+#define GDI_HEAP 2
+
+/* wFlags values */
+#define LF_FIXED 1
+#define LF_FREE 2
+#define LF_MOVEABLE 4
+
+/* wType values */
+#define LT_NORMAL 0
+#define LT_FREE 0xff
+#define LT_GDI_PEN 1 /* LT_GDI_* is for GDI's heap */
+#define LT_GDI_BRUSH 2
+#define LT_GDI_FONT 3
+#define LT_GDI_PALETTE 4
+#define LT_GDI_BITMAP 5
+#define LT_GDI_RGN 6
+#define LT_GDI_DC 7
+#define LT_GDI_DISABLED_DC 8
+#define LT_GDI_METADC 9
+#define LT_GDI_METAFILE 10
+#define LT_GDI_MAX LT_GDI_METAFILE
+#define LT_USER_CLASS 1 /* LT_USER_* is for USER's heap */
+#define LT_USER_WND 2
+#define LT_USER_STRING 3
+#define LT_USER_MENU 4
+#define LT_USER_CLIP 5
+#define LT_USER_CBOX 6
+#define LT_USER_PALETTE 7
+#define LT_USER_ED 8
+#define LT_USER_BWL 9
+#define LT_USER_OWNERDRAW 10
+#define LT_USER_SPB 11
+#define LT_USER_CHECKPOINT 12
+#define LT_USER_DCE 13
+#define LT_USER_MWP 14
+#define LT_USER_PROP 15
+#define LT_USER_LBIV 16
+#define LT_USER_MISC 17
+#define LT_USER_ATOMS 18
+#define LT_USER_LOCKINPUTSTATE 19
+#define LT_USER_HOOKLIST 20
+#define LT_USER_USERSEEUSERDOALLOC 21
+#define LT_USER_HOTKEYLIST 22
+#define LT_USER_POPUPMENU 23
+#define LT_USER_HANDLETABLE 32
+#define LT_USER_MAX LT_USER_HANDLETABLE
+
+BOOL LocalInfo( LOCALINFO *pLocalInfo, HGLOBAL handle );
+BOOL LocalFirst( LOCALENTRY *pLocalEntry, HGLOBAL handle );
+BOOL LocalNext( LOCALENTRY *pLocalEntry );
+
+
/* modules */
typedef struct {
@@ -73,16 +152,37 @@
} MEMMANINFO;
typedef MEMMANINFO *LPMEMMANINFO;
-typedef struct tagSYSHEAPINFO {
- DWORD dwSize;
- WORD wUserFreePercent;
- WORD wGDIFreePercent;
- HGLOBAL hUserSegment;
- HGLOBAL hGDISegment;
+typedef struct
+{
+ DWORD dwSize;
+ WORD wUserFreePercent;
+ WORD wGDIFreePercent;
+ HGLOBAL hUserSegment;
+ HGLOBAL hGDISegment;
} SYSHEAPINFO;
-typedef SYSHEAPINFO *LPSYSHEAPINFO;
BOOL MemManInfo(LPMEMMANINFO lpEnhMode);
-BOOL SystemHeapInfo(LPSYSHEAPINFO lpSysHeap);
+BOOL SystemHeapInfo( SYSHEAPINFO *pHeapInfo );
+
+
+/* Window classes */
+
+typedef struct
+{
+ DWORD dwSize;
+ HMODULE hInst; /* This is really an hModule */
+ char szClassName[MAX_CLASSNAME + 1];
+ WORD wNext;
+} CLASSENTRY;
+
+BOOL ClassFirst( CLASSENTRY *pClassEntry );
+BOOL ClassNext( CLASSENTRY *pClassEntry );
+
+
+/* Memory read/write */
+
+DWORD MemoryRead( WORD sel, DWORD offset, void *buffer, DWORD count );
+DWORD MemoryWrite( WORD sel, DWORD offset, void *buffer, DWORD count );
+
#endif /* __TOOLHELP_H */
diff --git a/include/user.h b/include/user.h
index 990428c..af0ecdf 100644
--- a/include/user.h
+++ b/include/user.h
@@ -7,8 +7,8 @@
#ifndef USER_H
#define USER_H
-#include "segmem.h"
-#include "heap.h"
+#include "ldt.h"
+#include "local.h"
/* USER local heap */
@@ -16,18 +16,24 @@
#define USER_HEAP_ALLOC(f,size) LocalAlloc (f, size)
#define USER_HEAP_REALLOC(handle,size,f) LocalReAlloc (handle,size,f)
-#define USER_HEAP_ADDR(handle) LocalLock (handle)
+#define USER_HEAP_LIN_ADDR(handle) LocalLock (handle)
+#define USER_HEAP_SEG_ADDR(handle) LocalLock (handle)
#define USER_HEAP_FREE(handle) LocalFree (handle)
#else
-extern MDESC *USER_Heap;
+extern LPSTR USER_Heap;
+extern WORD USER_HeapSel;
-#define USER_HEAP_ALLOC(f,size) ((int)HEAP_Alloc(&USER_Heap,f,size) & 0xffff)
-#define USER_HEAP_REALLOC(handle,size,f) ((int)HEAP_ReAlloc(&USER_Heap, \
- USER_HEAP_ADDR(handle),size,f) & 0xffff)
-#define USER_HEAP_FREE(handle) (HEAP_Free(&USER_Heap,USER_HEAP_ADDR(handle)))
-#define USER_HEAP_ADDR(handle) \
- ((void *)((handle) ? ((handle) | ((int)USER_Heap & 0xffff0000)) : 0))
+#define USER_HEAP_ALLOC(size) \
+ LOCAL_Alloc( USER_HeapSel, LMEM_FIXED, (size) )
+#define USER_HEAP_REALLOC(handle,size) \
+ LOCAL_ReAlloc( USER_HeapSel, (handle), (size), LMEM_FIXED )
+#define USER_HEAP_FREE(handle) \
+ LOCAL_Free( USER_HeapSel, (handle) )
+#define USER_HEAP_LIN_ADDR(handle) \
+ ((handle) ? PTR_SEG_OFF_TO_LIN(USER_HeapSel, (handle)) : NULL)
+#define USER_HEAP_SEG_ADDR(handle) \
+ ((handle) ? MAKELONG((handle), USER_HeapSel) : 0)
#endif /* WINELIB */
diff --git a/include/win.h b/include/win.h
index c33e722..e9cbb90 100644
--- a/include/win.h
+++ b/include/win.h
@@ -9,6 +9,7 @@
#include <X11/Xlib.h>
+#include "ldt.h"
#include "class.h"
#define WND_MAGIC 0x444e4957 /* 'WIND' */
diff --git a/include/windows.h b/include/windows.h
index 088d0fa..5ff1c25 100644
--- a/include/windows.h
+++ b/include/windows.h
@@ -1211,6 +1211,12 @@
#define SPIF_UPDATEINIFILE 1
#define SPIF_SENDWININICHANGE 2
+/* GetFreeSystemResources() parameters */
+
+#define GFSR_SYSTEMRESOURCES 0x0000
+#define GFSR_GDIRESOURCES 0x0001
+#define GFSR_USERRESOURCES 0x0002
+
/* GetWinFlags */
#define WF_PMODE 0x0001
@@ -1229,25 +1235,25 @@
#define WF_PAGING 0x0800
#define WF_WLO 0x8000
-#define MAKEINTRESOURCE(i) (LPSTR)((DWORD)((WORD)(i)))
+#define MAKEINTRESOURCE(i) (SEGPTR)((DWORD)((WORD)(i)))
-#define IDI_APPLICATION MAKEINTRESOURCE(32512)
-#define IDI_HAND MAKEINTRESOURCE(32513)
-#define IDI_QUESTION MAKEINTRESOURCE(32514)
-#define IDI_EXCLAMATION MAKEINTRESOURCE(32515)
-#define IDI_ASTERISK MAKEINTRESOURCE(32516)
+#define IDI_APPLICATION MAKEINTRESOURCE(32512)
+#define IDI_HAND MAKEINTRESOURCE(32513)
+#define IDI_QUESTION MAKEINTRESOURCE(32514)
+#define IDI_EXCLAMATION MAKEINTRESOURCE(32515)
+#define IDI_ASTERISK MAKEINTRESOURCE(32516)
-#define IDC_ARROW MAKEINTRESOURCE(32512)
-#define IDC_IBEAM MAKEINTRESOURCE(32513)
-#define IDC_WAIT MAKEINTRESOURCE(32514)
-#define IDC_CROSS MAKEINTRESOURCE(32515)
-#define IDC_UPARROW MAKEINTRESOURCE(32516)
-#define IDC_SIZE MAKEINTRESOURCE(32540)
-#define IDC_ICON MAKEINTRESOURCE(32541)
-#define IDC_SIZENWSE MAKEINTRESOURCE(32542)
-#define IDC_SIZENESW MAKEINTRESOURCE(32543)
-#define IDC_SIZEWE MAKEINTRESOURCE(32544)
-#define IDC_SIZENS MAKEINTRESOURCE(32545)
+#define IDC_ARROW MAKEINTRESOURCE(32512)
+#define IDC_IBEAM MAKEINTRESOURCE(32513)
+#define IDC_WAIT MAKEINTRESOURCE(32514)
+#define IDC_CROSS MAKEINTRESOURCE(32515)
+#define IDC_UPARROW MAKEINTRESOURCE(32516)
+#define IDC_SIZE MAKEINTRESOURCE(32540)
+#define IDC_ICON MAKEINTRESOURCE(32541)
+#define IDC_SIZENWSE MAKEINTRESOURCE(32542)
+#define IDC_SIZENESW MAKEINTRESOURCE(32543)
+#define IDC_SIZEWE MAKEINTRESOURCE(32544)
+#define IDC_SIZENS MAKEINTRESOURCE(32545)
/* OEM Resource Ordinal Numbers */
#define OBM_CLOSE 32754
@@ -2315,8 +2321,8 @@
F(LONG,GetVersion)
F(LONG,GetWinFlags)
F(LPINT,GetThresholdEvent)
-F(LPSTR,GetDOSEnvironment)
F(LPSTR,ValidateFreeSpaces)
+F(SEGPTR,GetDOSEnvironment)
F(WORD,GetCaretBlinkTime)
F(WORD,GetCurrentPDB)
F(WORD,GetDoubleClickTime)
@@ -2361,7 +2367,9 @@
Fa(BOOL,EndDeferWindowPos,HDWP,hWinPosInfo)
Fa(BOOL,FreeModule,HANDLE,a)
Fa(BOOL,FreeResource,HANDLE,a)
-Fa(BOOL,InitAtomTable,WORD,a)
+Fa(BOOL,GlobalUnWire,HGLOBAL,a)
+Fa(BOOL,GlobalUnlock,HGLOBAL,a)
+Fa(BOOL,IsBadCodePtr,SEGPTR,a)
Fa(BOOL,IsCharAlpha,char,ch)
Fa(BOOL,IsCharAlphaNumeric,char,ch)
Fa(BOOL,IsCharLower,char,ch)
@@ -2395,10 +2403,15 @@
Fa(DWORD,GetCurrentPosition,HDC,a)
Fa(DWORD,GetDCOrg,HDC,a)
Fa(DWORD,GetFreeSpace,WORD,a)
+Fa(DWORD,GetHeapSpaces,HMODULE,a)
Fa(DWORD,GetViewportExt,HDC,a)
Fa(DWORD,GetViewportOrg,HDC,a)
Fa(DWORD,GetWindowExt,HDC,a)
Fa(DWORD,GetWindowOrg,HDC,a)
+Fa(DWORD,GlobalCompact,DWORD,a)
+Fa(DWORD,GlobalDOSAlloc,DWORD,a)
+Fa(DWORD,GlobalHandle,WORD,a)
+Fa(DWORD,GlobalSize,HGLOBAL,a)
Fa(DWORD,OemKeyScan,WORD,a)
Fa(FARPROC,LocalNotify,FARPROC,a)
Fa(HANDLE,CreateMetaFile,LPSTR,a)
@@ -2413,9 +2426,7 @@
Fa(HANDLE,LoadLibrary,LPSTR,a)
Fa(HANDLE,LocalFree,HANDLE,a)
Fa(HANDLE,LocalHandle,WORD,a)
-Fa(HANDLE,LockSegment,WORD,a)
Fa(HANDLE,SetMetaFileBits,HANDLE,a)
-Fa(HANDLE,UnlockSegment,WORD,a)
Fa(HBITMAP,CreateBitmapIndirect,BITMAP FAR*,a)
Fa(HBRUSH,CreateBrushIndirect,LOGBRUSH FAR*,a)
Fa(HBRUSH,CreatePatternBrush,HBITMAP,a)
@@ -2427,6 +2438,10 @@
Fa(HDC,GetWindowDC,HWND,a)
Fa(HDWP,BeginDeferWindowPos,INT,nNumWindows)
Fa(HFONT,CreateFontIndirect,LOGFONT FAR*,a)
+Fa(HGLOBAL,GlobalFree,HGLOBAL,a)
+Fa(HGLOBAL,GlobalLRUNewest,HGLOBAL,a)
+Fa(HGLOBAL,GlobalLRUOldest,HGLOBAL,a)
+Fa(HGLOBAL,LockSegment,HGLOBAL,a)
Fa(HMENU,GetMenu,HWND,a)
Fa(HMENU,LoadMenuIndirect,LPSTR,a)
Fa(HMETAFILE,CloseMetaFile,HANDLE,a)
@@ -2451,13 +2466,17 @@
Fa(LONG,DispatchMessage,LPMSG,msg)
Fa(LONG,SetSwapAreaSize,WORD,a)
Fa(LPSTR,AnsiLower,LPSTR,a)
-Fa(LPSTR,AnsiNext,LPSTR,a)
+Fa(SEGPTR,AnsiNext,SEGPTR,a)
Fa(LPSTR,AnsiUpper,LPSTR,a)
+Fa(LPSTR,GlobalLock,HGLOBAL,a)
+Fa(LPSTR,GlobalWire,HGLOBAL,a)
Fa(LPSTR,LockResource,HANDLE,a)
+Fa(SEGPTR,WIN16_GlobalLock,HGLOBAL,a)
Fa(UINT,GDIRealizePalette,HDC,a)
Fa(UINT,RealizePalette,HDC,a)
Fa(WORD,AllocDStoCSAlias,WORD,a)
Fa(WORD,AllocSelector,WORD,a)
+Fa(WORD,AllocSelectorArray,WORD,a)
Fa(WORD,ArrangeIconicWindows,HWND,a)
Fa(WORD,EnumClipboardFormats,WORD,a)
Fa(WORD,FreeSelector,WORD,a)
@@ -2471,15 +2490,20 @@
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)
+Fa(WORD,GlobalPageLock,HGLOBAL,a)
+Fa(WORD,GlobalPageUnlock,HGLOBAL,a)
+Fa(WORD,InitAtomTable,WORD,a)
Fa(WORD,LocalCompact,WORD,a)
-Fa(WORD,LocalFlags,HANDLE,a)
-Fa(WORD,LocalSize,HANDLE,a)
+Fa(WORD,LocalFlags,HLOCAL,a)
+Fa(WORD,LocalLock,HLOCAL,a)
+Fa(WORD,LocalSize,HLOCAL,a)
Fa(WORD,RealizeDefaultPalette,HDC,a)
Fa(WORD,RegisterClipboardFormat,LPCSTR,a)
Fa(WORD,RegisterWindowMessage,LPCSTR,a)
Fa(WORD,SetHandleCount,WORD,a)
Fa(WORD,VkKeyScan,WORD,a)
-Fa(char NEAR*,LocalLock,HANDLE,a)
Fa(int,AddFontResource,LPSTR,a)
Fa(int,Catch,LPCATCHBUF,a)
Fa(int,ClearCommBreak,int,a)
@@ -2509,6 +2533,9 @@
Fa(void,GetCaretPos,LPPOINT,a)
Fa(void,GetCursorPos,LPPOINT,a)
Fa(void,GetKeyboardState,BYTE FAR*,a)
+Fa(void,GlobalFix,HGLOBAL,a)
+Fa(void,GlobalNotify,FARPROC,a)
+Fa(void,GlobalUnfix,HGLOBAL,a)
Fa(void,HideCaret,HWND,a)
Fa(void,LimitEmsPages,DWORD,a)
Fa(void,MessageBeep,WORD,a)
@@ -2522,8 +2549,9 @@
Fa(void,SetRectEmpty,LPRECT,a)
Fa(void,ShowCaret,HWND,a)
Fa(void,SwapRecording,WORD,a)
+Fa(void,UnlockSegment,HGLOBAL,a)
Fa(void,UpdateWindow,HWND,a)
-Fb(BOOL,CallMsgFilter,LPMSG,a,short,b)
+Fb(BOOL,CallMsgFilter,SEGPTR,a,short,b)
Fb(BOOL,ChangeClipboardChain,HWND,a,HWND,b)
Fb(BOOL,EnableWindow,HWND,a,BOOL,b)
Fb(BOOL,EnumWindows,FARPROC,a,LONG,b)
@@ -2541,6 +2569,11 @@
Fb(BOOL,GetWindowOrgEx,HDC,a,LPPOINT,b)
Fb(BOOL,GetWindowPlacement,HWND,a,LPWINDOWPLACEMENT,b)
Fb(BOOL,InvertRgn,HDC,a,HRGN,b)
+Fb(BOOL,IsBadHugeReadPtr,SEGPTR,a,DWORD,b)
+Fb(BOOL,IsBadHugeWritePtr,SEGPTR,a,DWORD,b)
+Fb(BOOL,IsBadReadPtr,SEGPTR,a,WORD,b)
+Fb(BOOL,IsBadStringPtr,SEGPTR,a,WORD,b)
+Fb(BOOL,IsBadWritePtr,SEGPTR,a,WORD,b)
Fb(BOOL,IsChild,HWND,a,HWND,b)
Fb(BOOL,IsDialogMessage,HWND,a,LPMSG,b)
Fb(BOOL,KillSystemTimer,HWND,a,WORD,b)
@@ -2568,23 +2601,24 @@
Fb(FARPROC,MakeProcInstance,FARPROC,a,HANDLE,b)
Fb(HANDLE,CopyMetaFile,HANDLE,a,LPSTR,b)
Fb(HANDLE,GetProp,HWND,a,LPSTR,b)
-Fb(HANDLE,LoadAccelerators,HANDLE,a,LPSTR,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,SelectObject,HDC,a,HANDLE,b)
Fb(HANDLE,SetClipboardData,WORD,a,HANDLE,b)
-Fb(HBITMAP,LoadBitmap,HANDLE,a,LPSTR,b)
+Fb(HBITMAP,LoadBitmap,HANDLE,a,SEGPTR,b)
Fb(HBRUSH,CreateDIBPatternBrush,HANDLE,a,WORD,b)
Fb(HBRUSH,CreateHatchBrush,short,a,COLORREF,b)
-Fb(HCURSOR,LoadCursor,HANDLE,a,LPSTR,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(HICON,LoadIcon,HANDLE,a,LPSTR,b)
+Fb(HICON,LoadIcon,HANDLE,a,SEGPTR,b)
Fb(HMENU,GetSubMenu,HMENU,a,short,b)
Fb(HMENU,GetSystemMenu,HWND,a,BOOL,b)
-Fb(HMENU,LoadMenu,HANDLE,a,LPSTR,b)
+Fb(HMENU,LoadMenu,HANDLE,a,SEGPTR,b)
Fb(HMENU,LookupMenuHandle,HMENU,a,INT,b)
Fb(HPALETTE,GDISelectPalette,HDC,a,HPALETTE,b)
Fb(HWND,ChildWindowFromPoint,HWND,a,POINT,b)
@@ -2601,9 +2635,9 @@
Fb(LONG,EscapeCommFunction,int,a,int,b)
Fb(LONG,GetClassLong,HWND,a,short,b)
Fb(LONG,GetWindowLong,HWND,a,short,b)
-Fb(LPSTR,AnsiPrev,LPSTR,a,LPSTR,b)
-Fb(LPSTR,lstrcat,LPSTR,a,LPCSTR,b )
-Fb(LPSTR,lstrcpy,LPSTR,a,LPCSTR,b )
+Fb(SEGPTR,AnsiPrev,SEGPTR,a,SEGPTR,b)
+Fb(SEGPTR,lstrcat,SEGPTR,a,SEGPTR,b)
+Fb(SEGPTR,lstrcpy,SEGPTR,a,SEGPTR,b)
Fb(WORD FAR*,SetCommEventMask,int,a,WORD,b)
Fb(WORD,AnsiLowerBuff,LPSTR,a,WORD,b)
Fb(WORD,AnsiUpperBuff,LPSTR,a,WORD,b)
@@ -2619,6 +2653,7 @@
Fb(WORD,IsDlgButtonChecked,HWND,a,WORD,b)
Fb(WORD,LocalShrink,HANDLE,a,WORD,b)
Fb(WORD,MapVirtualKey,WORD,a,WORD,b)
+Fb(WORD,PrestoChangoSelector,WORD,a,WORD,b)
Fb(WORD,SetBkMode,HDC,a,WORD,b)
Fb(WORD,SetMapMode,HDC,a,WORD,b)
Fb(WORD,SetPolyFillMode,HDC,a,WORD,b)
@@ -2711,12 +2746,13 @@
Fc(DWORD,SetWindowOrg,HDC,a,short,b,short,c)
Fc(FARPROC,SetResourceHandler,HANDLE,a,LPSTR,b,FARPROC,c)
Fc(HANDLE,AllocResource,HANDLE,a,HANDLE,b,DWORD,c)
-Fc(HANDLE,FindResource,HANDLE,a,LPSTR,b,LPSTR,c)
+Fc(HANDLE,FindResource,HANDLE,a,SEGPTR,b,SEGPTR,c)
Fc(HANDLE,LocalReAlloc,HANDLE,a,WORD,b,WORD,c)
Fc(HBITMAP,CreateCompatibleBitmap,HDC,a,short,b,short,c)
Fc(HBITMAP,CreateDiscardableBitmap,HDC,a,short,b,short,c)
Fc(HBRUSH,GetControlBrush,HWND,a,HDC,b,WORD,c)
Fc(HDC,GetDCEx,HWND,a,HRGN,b,DWORD,c)
+Fc(HGLOBAL,GlobalReAlloc,HGLOBAL,a,DWORD,b,WORD,c)
Fc(HPALETTE,SelectPalette,HDC,a,HPALETTE,b,BOOL,c)
Fc(HPEN,CreatePen,short,a,short,b,COLORREF,c)
Fc(HRGN,CreatePolygonRgn,LPPOINT,a,short,b,short,c)
@@ -2731,6 +2767,7 @@
Fc(LONG,SetClassLong,HWND,a,short,b,LONG,c)
Fc(LONG,SetWindowLong,HWND,a,short,b,LONG,c)
Fc(LONG,_llseek,INT,a,LONG,b,INT,c)
+Fc(SEGPTR,lstrcpyn,SEGPTR,a,SEGPTR,b,WORD,c)
Fc(WORD,GetAtomName,ATOM,a,LPSTR,b,short,c)
Fc(WORD,GetInternalWindowPos,HWND,a,LPRECT,b,LPPOINT,c)
Fc(WORD,GetMenuState,HMENU,a,WORD,b,WORD,c)
@@ -2769,7 +2806,7 @@
Fc(void,InvalidateRgn,HWND,a,HRGN,b,BOOL,c)
Fc(void,OemToAnsiBuff,LPSTR,a,LPSTR,b,INT,c)
Fc(void,OffsetRect,LPRECT,a,short,b,short,c)
-Fc(void,SetDlgItemText,HWND,a,WORD,b,LPSTR,c)
+Fc(void,SetDlgItemText,HWND,a,WORD,b,SEGPTR,c)
Fc(void,SetSysColors,int,a,LPINT,b,COLORREF*,c)
Fc(void,ShowScrollBar,HWND,a,WORD,b,BOOL,c)
Fc(void,SwitchStackTo,WORD,a,WORD,b,WORD,c)
@@ -2778,7 +2815,7 @@
Fd(BOOL,EnumMetaFile,HDC,a,LOCALHANDLE,b,FARPROC,c,BYTE FAR*,d)
Fd(BOOL,FloodFill,HDC,a,INT,b,INT,c,COLORREF,d)
Fd(BOOL,GetCharWidth,HDC,a,WORD,b,WORD,c,LPINT,d)
-Fd(BOOL,GetMessage,LPMSG,msg,HWND,b,WORD,c,WORD,d)
+Fd(BOOL,GetMessage,SEGPTR,msg,HWND,b,WORD,c,WORD,d)
Fd(BOOL,GetTextExtentPoint,HDC,a,LPSTR,b,short,c,LPSIZE,d)
Fd(BOOL,HiliteMenuItem,HWND,a,HMENU,b,WORD,c,WORD,d)
Fd(BOOL,MoveToEx,HDC,a,short,b,short,c,LPPOINT,d)
@@ -2804,7 +2841,7 @@
Fd(HRGN,CreateEllipticRgn,short,a,short,b,short,c,short,d)
Fd(HRGN,CreatePolyPolygonRgn,LPPOINT,a,LPINT,b,short,c,short,d)
Fd(HRGN,CreateRectRgn,short,a,short,b,short,c,short,d)
-Fd(HWND,CreateDialog,HANDLE,a,LPCSTR,b,HWND,c,WNDPROC,d)
+Fd(HWND,CreateDialog,HANDLE,a,SEGPTR,b,HWND,c,WNDPROC,d)
Fd(HWND,CreateDialogIndirect,HANDLE,a,LPCSTR,b,HWND,c,WNDPROC,d)
Fd(INT,GetTempFileName,BYTE,a,LPCSTR,b,UINT,c,LPSTR,d)
Fd(LONG,DefDlgProc,HWND,a,WORD,b,WORD,c,LONG,d)
@@ -2819,11 +2856,11 @@
Fd(WORD,SetSystemTimer,HWND,a,WORD,d,WORD,b,FARPROC,c)
Fd(WORD,SetTimer,HWND,a,WORD,d,WORD,b,FARPROC,c)
Fd(int,CombineRgn,HRGN,a,HRGN,b,HRGN,c,short,d)
-Fd(int,DialogBox,HINSTANCE,a,LPCSTR,b,HWND,c,WNDPROC,d)
+Fd(int,DialogBox,HINSTANCE,a,SEGPTR,b,HWND,c,WNDPROC,d)
Fd(int,DialogBoxIndirect,HANDLE,a,HANDLE,b,HWND,c,WNDPROC,d)
Fd(int,EnumFonts,HDC,a,LPSTR,b,FARPROC,c,LPSTR,d)
Fd(int,EnumObjects,HDC,a,int,b,FARPROC,c,LPSTR,d)
-Fd(int,GetDlgItemText,HWND,a,WORD,b,LPSTR,c,WORD,d)
+Fd(int,GetDlgItemText,HWND,a,WORD,b,SEGPTR,c,WORD,d)
Fd(int,LoadString,HANDLE,a,WORD,b,LPSTR,c,int,d)
Fd(int,MessageBox,HWND,a,LPSTR,b,LPSTR,c,WORD,d)
Fd(int,SetScrollPos,HWND,a,int,b,int,c,BOOL,d)
@@ -2853,14 +2890,14 @@
Fe(DWORD,ScaleWindowExt,HDC,a,short,b,short,c,short,d,short,e)
Fe(HBITMAP,CreateBitmap,short,a,short,b,BYTE,c,BYTE,d,LPSTR,e)
Fe(HWND,CreateDialogIndirectParam,HANDLE,a,LPCSTR,b,HWND,c,WNDPROC,d,LPARAM,e)
-Fe(HWND,CreateDialogParam,HANDLE,a,LPCSTR,b,HWND,c,WNDPROC,d,LPARAM,e)
+Fe(HWND,CreateDialogParam,HANDLE,a,SEGPTR,b,HWND,c,WNDPROC,d,LPARAM,e)
Fe(LONG,CallWindowProc,WNDPROC,a,HWND,b,WORD,c,WORD,d,LONG,e)
Fe(LONG,DefFrameProc,HWND,a,HWND,b,WORD,c,WORD,d,LONG,e)
Fe(LONG,SendDlgItemMessage,HWND,a,WORD,b,WORD,c,WORD,d,LONG,e)
Fe(int,DialogBoxIndirectParam,HANDLE,a,HANDLE,b,HWND,c,WNDPROC,d,LONG,e)
-Fe(int,DialogBoxParam,HANDLE,a,LPCSTR,b,HWND,c,WNDPROC,d,LONG,e)
+Fe(int,DialogBoxParam,HANDLE,a,SEGPTR,b,HWND,c,WNDPROC,d,LONG,e)
Fe(int,DlgDirList,HWND,a,LPSTR,b,int,c,int,d,WORD,e)
-Fe(int,DlgDirListComboBox,HWND,a,LPSTR,b,int,c,int,d,WORD,e)
+Fe(int,DlgDirListComboBox,HWND,a,SEGPTR,b,int,c,int,d,WORD,e)
Fe(int,DrawText,HDC,a,LPSTR,str,int,c,LPRECT,d,WORD,flag)
Fe(int,Escape,HDC,a,int,b,int,c,LPSTR,d,LPSTR,e)
Fe(int,ExcludeClipRect,HDC,a,short,b,short,c,short,d,short,e)
@@ -2902,33 +2939,12 @@
Fi(BOOL,GrayString,HDC,a,HBRUSH,b,FARPROC,gsprc,LPARAM,lParam,INT,cch,INT,x,INT,y,INT,cx,INT,cy)
Fi(BOOL,Pie,HDC,a,int,xLeft,int,yTop,int,xRight,int,yBottom,int,xStart,int,yStart,int,xEnd,int,yEnd)
Fk(BOOL,StretchBlt,HDC,a,short,b,short,c,short,d,short,e,HDC,f,short,g,short,h,short,i,short,j,DWORD,k)
-Fk(HWND,CreateWindow,LPSTR,szAppName,LPSTR,Label,DWORD,ol,short,x,short,y,short,w,short,h,HWND,d,HMENU,e,,HANDLE i,LPSTR,g)
-Fl(HWND,CreateWindowEx,DWORD,a,LPSTR,b,LPSTR,c,DWORD,d,short,e,short,f,short,g,short,h,HWND,i,HMENU,j,HANDLE,k,LPSTR,l)
+Fk(HWND,CreateWindow,LPSTR,szAppName,LPSTR,Label,DWORD,ol,short,x,short,y,short,w,short,h,HWND,d,HMENU,e,,HANDLE i,SEGPTR,g)
+Fl(HWND,CreateWindowEx,DWORD,a,LPSTR,b,LPSTR,c,DWORD,d,short,e,short,f,short,g,short,h,HWND,i,HMENU,j,HANDLE,k,SEGPTR,l)
Fl(int,SetDIBitsToDevice,HDC,a,short,b,short,c,WORD,d,WORD,e,WORD,f,WORD,g,WORD,h,WORD,i,LPSTR,j,LPBITMAPINFO,k,WORD,l)
Fm(int,StretchDIBits,HDC,a,WORD,b,WORD,c,WORD,d,WORD,e,WORD,f,WORD,g,WORD,h,WORD,i,LPSTR,j,LPBITMAPINFO,k,WORD,l,DWORD,m)
Fn(HFONT,CreateFont,int,a,int,b,int,c,int,d,int,e,BYTE,f,BYTE,g,BYTE,h,BYTE,i,BYTE,j,BYTE,k,BYTE,l,BYTE,m,LPSTR,n)
-#ifndef GLOBAL_SOURCE
-Fa(BOOL,GlobalUnWire,HANDLE,a)
-Fa(BOOL,GlobalUnfix,HANDLE,a)
-Fa(BOOL,GlobalUnlock,HANDLE,a)
-Fa(DWORD,GlobalCompact,DWORD,a)
-Fa(DWORD,GlobalHandle,WORD,a)
-Fa(DWORD,GlobalSize,HANDLE,a)
-Fa(HANDLE,GlobalFree,HANDLE,a)
-Fa(HANDLE,GlobalLRUNewest,HANDLE,a)
-Fa(HANDLE,GlobalLRUOldest,HANDLE,a)
-Fa(LPSTR,GlobalLock,HANDLE,a)
-Fa(LPSTR,GlobalWire,HANDLE,a)
-Fa(WORD,GlobalFlags,HANDLE,a)
-Fa(WORD,GlobalPageLock,HANDLE,a)
-Fa(WORD,GlobalPageUnlock,HANDLE,a)
-Fa(void,GlobalFix,HANDLE,a)
-Fa(void,GlobalNotify,FARPROC,a)
-Fb(HANDLE,GlobalAlloc,WORD,a,DWORD,b)
-Fc(HANDLE,GlobalReAlloc,HANDLE,a,DWORD,b,WORD,c)
-#endif
-
#ifdef WINELIB
#define WINELIB_UNIMP(x) fprintf (stderr, "WineLib: Unimplemented %s\n", x)
#endif
diff --git a/include/wintypes.h b/include/wintypes.h
index a74457e..88c627f 100644
--- a/include/wintypes.h
+++ b/include/wintypes.h
@@ -13,6 +13,7 @@
typedef LONG LRESULT;
typedef WORD HANDLE;
typedef DWORD HHOOK;
+typedef DWORD SEGPTR;
typedef char *LPSTR;
typedef const char *LPCSTR;
typedef char *NPSTR;
@@ -30,25 +31,28 @@
#define DECLARE_HANDLE(a) typedef HANDLE a;
-DECLARE_HANDLE(HTASK);
-DECLARE_HANDLE(HDRVR);
-DECLARE_HANDLE(HWND);
-DECLARE_HANDLE(HDC);
-DECLARE_HANDLE(HCLASS);
-DECLARE_HANDLE(HCURSOR);
-DECLARE_HANDLE(HFONT);
-DECLARE_HANDLE(HPEN);
-DECLARE_HANDLE(HRGN);
-DECLARE_HANDLE(HPALETTE);
-DECLARE_HANDLE(HICON);
-DECLARE_HANDLE(HINSTANCE);
-DECLARE_HANDLE(HMENU);
DECLARE_HANDLE(HBITMAP);
DECLARE_HANDLE(HBRUSH);
-DECLARE_HANDLE(LOCALHANDLE);
-DECLARE_HANDLE(HMETAFILE);
-DECLARE_HANDLE(HDWP);
+DECLARE_HANDLE(HCLASS);
+DECLARE_HANDLE(HCURSOR);
+DECLARE_HANDLE(HDC);
DECLARE_HANDLE(HDROP);
+DECLARE_HANDLE(HDRVR);
+DECLARE_HANDLE(HDWP);
+DECLARE_HANDLE(HFONT);
+DECLARE_HANDLE(HGLOBAL);
+DECLARE_HANDLE(HICON);
+DECLARE_HANDLE(HINSTANCE);
+DECLARE_HANDLE(HLOCAL);
+DECLARE_HANDLE(HMENU);
+DECLARE_HANDLE(HMETAFILE);
+DECLARE_HANDLE(HMODULE);
+DECLARE_HANDLE(HPALETTE);
+DECLARE_HANDLE(HPEN);
+DECLARE_HANDLE(HRGN);
+DECLARE_HANDLE(HTASK);
+DECLARE_HANDLE(HWND);
+DECLARE_HANDLE(LOCALHANDLE);
#define TRUE 1
#define FALSE 0
@@ -70,15 +74,18 @@
#define WINE_PACKED __attribute__ ((packed))
#endif
-#define LOBYTE(w) ((BYTE)(w))
+#define LOBYTE(w) ((BYTE)(UINT)(w))
#define HIBYTE(w) ((BYTE)((UINT)(w) >> 8))
-#define LOWORD(l) ((WORD)(l))
+#define LOWORD(l) ((WORD)(DWORD)(l))
#define HIWORD(l) ((WORD)((DWORD)(l) >> 16))
#define MAKELONG(low, high) ((LONG)(((WORD)(low)) | \
(((DWORD)((WORD)(high))) << 16)))
+#define SELECTOROF(ptr) (HIWORD(ptr))
+#define OFFSETOF(ptr) (LOWORD(ptr))
+
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif