Release 980927
Sun Sep 27 14:25:38 1998 Petter Reinholdtsen <pere@td.org.uit.no>
* [files/drive.c]
Make sure GetDriveType32A() handles param NULL. Added some
doc on function.
Sun Sep 27 14:07:26 1998 Huw D M Davies <daviesh@abacus.physics.ox.ac.uk>
* [controls/edit.c] [windows/win.c]
Don't call SetWindowLong() in EDIT_WM_NCREATE.
Fix SetWindowLong(GWL_[EX]STYLE) to work for 16bit windows. Remove
UpdateWindow() call.
Sun Sep 27 13:41:22 1998 Alexandre Julliard <julliard@lrc.epfl.ch>
* [scheduler/*.c] [server/event.c] [server/mutex.c]
[server/semaphore.c]
Implemented server-side synchronisation objects.
Sun Sep 27 01:13:35 1998 Alex Priem <alexp@sci.kun.nl>
* [dlls/comctl32/treeview.c] [include/treeview.h] [include/comctl.h]
Treeview implementation.
* [dlls/comctl32/trackbar.c] [include/trackbar.h]
Trackbar implementation.
Sat Sep 26 20:49:13 1998 Ulrich Weigand <weigand@informatik.uni-erlangen.de>
* [if1632/thunk.c] [tools/build.c] [win32/kernel32.c]
Bugfix: several problems with flat thunks fixed.
* [memory/selector.c]
Bugfix: IsBad...Ptr16 didn't work for limit_in_pages segments.
* [scheduler/thread.c]
Bugfix: CreateThread: Allow id parameter == NULL.
* [objects/gdiobj.c]
Bugfix: IsGDIObject: Return correct object type for stock objects.
* [msdos/dpmi.c]
Bugfix: fixed typo in INT_DoRealModeInt.
* [msdos/int21.c]
Bugfix: int21 READ *must* use WIN16_hread, not _hread16.
* [if1632/kernel.spec] [if1632/dummy.c] [if1632/thunk.c]
[loader/ne/module.c] [scheduler/event.c] [scheduler/synchro.c]
[scheduler/thread.c] [win32/kernel32.c] [win32/ordinals.c]
Added names/stubs for all undocumented KERNEL routines (Win95).
Added the following undoc. 16-bit equivalents to Win32 routines:
KERNEL.441-443,449-453,456-462,471-476,479-486,488.
Added stubs for some other KERNEL routines.
* [memory/heap.c] [memory/global.c] [include/global.h]
Implemented Local32... 32-bit local heap routines (KERNEL.208-215, 229).
* [miscemu/instr.c] [loader/module.c] [include/module.h]
Implemented __GP fault handling and HasGPHandler (KERNEL.338).
* [misc/error.c]
Implemented LogParamErrorRegs (KERNEL.327).
* [loader/task.c] [include/windows.h]
Implemented GetCodeInfo (KERNEL.104).
* [loader/task.c] [scheduler/thread.c] [include/thread.h]
Implemented [GS]etThreadQueue and [GS]etFastQueue (KERNEL.463/4, 624/5).
* [if1632/gdi.spec] [objects/dc.c] [objects/dib.c]
[objects/bitmap.c] [include/windows.h]
Bugfix: fixed wrong parameter for CreateDIBSection16.
Added [GS]etDIBColorTable16, stub for GetBoundsRect16.
Partially implemented BITMAP_GetObject16 for DIBs.
* [if1632/gdi.spec] [relay32/gdi32.spec] [objects/palette.c]
Added some GDI stubs.
* [if1632/Makefile.in] [if1632/display.spec] [if1632/mouse.spec]
[if1632/keyboard.spec] [if1632/builtin.c] [windows/keyboard.c]
Added some stubs for Win16 drivers: KEYBOARD, MOUSE, DISPLAY.
* [if1632/wprocs.spec] [msdos/vxd.c]
Added some stubs for VxDs: VMM, ConfigMG, TimerAPI.
* [msdos/int2f.c]
Added some stubs for real-mode network drivers.
Sat Sep 26 18:18:18 1998 Marcus Meissner <marcus@jet.franken.de>
* [configure.in]
Merged in some more of the FreeBSD ports/emulators/wine patches.
(Maintainer(s) of this port: You can just submit these
patches to Alexandre directly.)
* [loader/pe_image.c]
Check filesize of image against size derived from header
to spot truncated executeables without crashing.
* [files/directory.c]
Set envvar "COMSPEC". One win32(!!) program crashes without it.
* [multimedia/mmio.c]
Added mmioSetInfo32.
* [include/file.h]
Return STD_ERROR_HANDLE for AUX and PRT dos handles.
* [loader/module.c]
Handle executeables with spaces in their names a bit better in
CreateProcess.
* [relay32/msvfw32.spec][if1632/msvideo.spec][multimedia/msvideo.c][include/vfw.h]
Started on MS Video support (can load Win32 ICMs).
* [tools/testrun]
A bit smarter use of ps.
* [memory/virtual.c]
Report PAGE_GUARDed pages as PAGE_PROTECTED (AutoCAD LT R17 fails
without that check (since Win95 doesn't know about PAGE_GUARD)).
Sat Sep 26 15:04:05 1998 Ove Kaaven <ovek@arcticnet.no>
* [include/miscemu.h] [if1632/builtin.c] [loader/task.c]
[miscemu/instr.c] [msdos/dpmi.c] [msdos/int21.c]
[msdos/interrupts.c] [windows/user.c]
INT_[S|G]etHandler was renamed to INT_[S|G]etPMHandler.
Added handlers to deal with real-mode interrupts; DOS
programs are now able to hook real-mode interrupts.
* [loader/dos/module.c] [msdos/dosmem.c] [msdos/int21.c]
Moved real-mode interrupt table initialization to
msdos/dosmem.c, and made new V86 tasks get a full copy
of the existing "system memory" instead of almost empty
space. Misc fixes.
* [include/dosexe.h] [loader/dos/module.c] [msdos/dpmi.c]
[msdos/int2f.c]
First shot at letting DOS programs start up DPMI (but DPMI
is still disabled for DOS programs, for pkunzip's sake).
* [include/debugger.h] [debugger/break.c] [debugger/dbg.y]
[debugger/registers.c] [debugger/memory.c] [debugger/info.c]
[loader/dos/dosvm.c]
First shot at making Wine's debugger work for DOS programs.
The -debug flag works, as do "nexti" and "stepi".
Sat Sep 26 13:13:13 1998 Juergen Schmied <juergen.schmied@metronet.de>
* [dlls/shell32/dataobject.c]
New classes IEnumFORMATETC implemented, IDataObject stubs.
* [dlls/shell32/*.*][relay32/shell32.spec]
Bugfixes.
New: ICM_InsertItem(), ILCreateFromPath().
Implemented: ILCloneFirst().
Stubs: ILIsEqual(), ILFindChild(), SHLogILFromFSIL(),
PathMatchSpec(), PathIsExe().
Changed: ILGetSize(), _ILIsDesktop(), PathCombine().
* [include/shlobj.h]
New SHLGUID's
New structures: DVTARGETDEVICE32, STGMEDIUM32, FORMATETC32,
CLIPFORMAT32.
New interfaces: IEnumFORMATETC, IDataObject, ICommDlgBrowser
IDockingWindowFrame, IServiceProvider.
* [dlls/shell32/folders.c]
Stubs for IShellLink.
* [loader/resource.c]
Small fixes.
* [misc/crtdll.c][relay32/crtdll.spec]
New __dllonexit().
* [windows/message.c]
SendNotifyMessageA, SendMessageCallBack32A half implemented.
* [controls/edit.c]
EDIT_WM_SetText set EF_UPDATE flag not for ES_MULTILINE.
* [files/file.c]
Handling of fileposition fixed.
Fri Sep 25 18:13:30 1998 Patrik Stridvall <ps@leissner.se>
* [include/windows.h] [include/wintypes.h]
[ole/ole2nls.h] [relay32/kernel32.spec]
Implemented EnumDateFormats and EnumTimeFormats.
Only adds US English support.
* [Makefile.in] [configure.in]
[dlls/Makefile.in] [dlls/psapi/Makefile.in]
[dlls/psapi/psapi_main.c]
New files to implement stubs for PSAPI.DLL (NT only).
* [relay32/Makefile.in] [relay32/builtin32.c]
[relay32/psapi.spec]
New spec file for PSAPI.DLL (NT only).
* [scheduler/handle.c]
HANDLE_GetObjPtr should only interpret the pseudo handles as the
current thread or the current process if a thread or a process is
requested.
* [include/winversion.h] [misc/version.c]
Adds the global function VERSION_GetVersion() so functions can
have different behavior depending on the -winver flag.
* [include/oledlg.h] [ole/oledlg.c]
Minor fixes.
* [windows/winproc.c]
Minor changes.
* [include/imm.h] [misc/imm.c]
Now returns correct values under both Windows 95 and NT 4.0.
Thu Sep 24 22:11:44 1998 Kristian Nielsen <kristian.nielsen@risoe.dk>
* [configure.in] [include/acconfig.h] [include/thread.h]
[scheduler/sysdeps.c]
Autoconfig test for non-reentrant libc.
Wed Sep 23 19:52:12 1998 Matthew Becker <mbecker@glasscity.net>
* [*/*.c]
Miscellaneous documentation updates and debugging output
standardizations.
* [objects/clipping.c]
Added ExtSelectClipRgn.
Wed Sep 23 00:03:28 EDT 1998 Pete Ratzlaff <pratzlaff@cfa.harvard.edu>
* [include/windows.h] [if1632/user.spec] [relay32/user32.spec]
[windows/keyboard.c]
Added, marginally implemented, GetKeyboardLayoutName().
Only returns US English keyboard name.
Tue Sep 22 16:32:41 1998 Marcel Baur <mbaur@iiic.ethz.ch>
* [programs/control/*]
New Winelib application.
Mon Sep 21 00:29:18 1998 Peter Hunnisett <hunnise@nortel.ca>
* [include/dplay.h][multimedia/dplay.c][ole/compobj.c]
Added all DirectPlayLobby interfaces and enhanced DirectPlay
and DirectPlayLobby support. Still not all that much. Useful
enough if you just need to start a program, don't try any
real dplay/lobby stuff.
* [documentation/status/directplay]
Added a very little bit.
* [graphics/ddraw.c]
- Call to SetWindowLong32A wasn't working because there was no
memory set aside when the window class was registered.
- Fixed some xlib reference counting and change the behaviour
of DirectDrawSurface3_SetPalette to mimic observed behaviour
(palette is associated will all backbuffers)
- Also stored all palette colour fields and spit back our saved
colour fields rather than query X for them.
- Added plenty of AddRef and Release traces.
- Added Xlib support for using -desktop option.
- Fixed Xlib message handling. Messages weren't being passed to
the application. Fixes mouse movements in some xlib DDraw games.
- Added a few stubs.
* [windows/win.c][include/winerror.h]
Fixed up some error handling in WIN_SetWindowLong. SetLastError
wasn't being used. Could cause problems with 0 return codes.
Added new error in winerror (1400).
* [AUTHORS] [include/authors.h]
Added myself as a Wine author.
Sun Sep 20 21:22:44 1998 Alexander Larsson <alla@lysator.liu.se>
* [loader/module.c]
Changed GetModuleFileName32A so that is returns the
long version of the filename. Note that just the name
is long, not the directories.
Sat Sep 19 20:05:30 1998 Per Ångström <pang@mind.nu>
* [controls/menu.c]
Made a couple of fixes to make life easier for applications that alter
their menus at runtime.
* [windows/defdlg.c]
Removed the cast of the return value from dialog procedures to a 16-bit
bool. The return value needs to retain all its 32 bits, since it is not
always a bool, such as when responding to the WM_NCHITTEST message.
Fri Sep 18 11:30:38 1998 Sergey Turchanov <turchanov@usa.net>
* [loader/resource.c]
Fixed very funny bug (though gravely affecting further excecution)
with FindResource[Ex]32 functions.
* [include/multimon.h] [windows/multimon.c] [relay32/user32.spec]
[include/windows.h] [windows/sysmetrics.c]
Default implementation for Multimonitor API.
* [include/windows.h] [windows/winpos.c]
Fixed incorrect declaration (and behaviour) of GetWindowRect32.
Wed Sep 16 10:21:15 1998 Gerard Patel <G.Patel@Wanadoo.fr>
* [controls/edit.c]
Fixed EDIT_EM_GetLine to use correctly length of lines.
Tue Sep 15 20:40:16 1998 Eric Kohl <ekohl@abo.rhein-zeitung.de>
* [misc/tweak.c][include/tweak.h][controls/menu.c]
Replaced the tweak graphic routines by calls to DrawEdge32().
* [misc/tweak.c][include/tweak.h][documentation/win95look]
[wine.ini][*/*]
Changed "look and feel" selection. Allows Win3.1, Win95 and
Win98 (no GUI code implemented) look and feel.
* [dlls/comctl32/header.c][include/header.h][include/commctrl.h]
Started callback item support and did some minor improvements.
* [dlls/comctl32/imagelist.c]
Fixed bug in transparent image display.
ImageList_GetIcon is still buggy :-(
* [dlls/comctl32/toolbar.c]
Fixed button drawing (partial hack).
* [dlls/comctl32/commctrl.c]
Fixed MenuHelp().
* [controls/button.c]
Added 3d effect for groupbox.
* [windows/msgbox.c]
Added font support for message boxes.
* [windows/nonclient.c]
Fixed window moving bug.
* [dlls/comctl32/*.c]
Various improvements.
* [dlls/comctl32/listview.c][dlls/comctl32/rebar.c]
[include/commctrl.h]
More messages.
* [windows/syscolor.c][include/windows.h]
Introduced new Win98 system colors.
Tue Sep 15 18:29:45 1998 Wesley Filardo <eightknots@aol.com>
* [files/profile.c]
Added support in PROFILE_LoadWineIni for -config option
* [misc/main.c] [include/options.h]
Added -config option.
Tue Sep 15 18:22:26 1998 Petter Reinholdtsen <pere@td.org.uit.no>
* [documentation/Makefile.in]
Make sure directory exists before installing into it.
Tue Sep 15 01:47:33 1998 Pablo Saratxaga <pablo.sarachaga@ping.be>
* [ole/nls/*] [ole/ole2nls.c] [include/winnls.h]
Fixed a few errors and completed some NLS files.
Mon Sep 14 01:23:45 1998 Joseph Pranevich <knight@baltimore.wwaves.com>
* [include/miscemu.h] [msdos/interrupts.c]
Removed a compilation warning, added INT 25 to the list of interrupts
callable from DOS applications, added a debug message when unsupported
interrupts are used.
Sun Sep 13 19:55:22 1998 Lawson Whitney <lawson_whitney@juno.com>
* [if1632/relay.c]
CallProcEx32W should not reverse arguments.
Sun Aug 17 21:18:12 1998 Eric Pouech <eric.pouech@lemel.fr>
* [multimedia/midi.c] [multimedia/init.c] [multimedia/mmsys.c]
[include/multimedia.h] [include/mmsystem.h]
[multimedia/Makefile.in] [multimedia/midipatch.c]
[if1632/multimedia.spec]
Made MIDI input and output functional on OSS capable systems.
* [multimedia/timer.c]
Changes to trigger callbacks at the accurate pace even when
fake timers are used.
diff --git a/include/acconfig.h b/include/acconfig.h
index f0287ea..66ece2f 100644
--- a/include/acconfig.h
+++ b/include/acconfig.h
@@ -24,6 +24,9 @@
/* Define if X libraries are not reentrant (compiled without -D_REENTRANT). */
#undef NO_REENTRANT_X11
+/* Define if libc is not reentrant */
+#undef NO_REENTRANT_LIBC
+
/* Define if all debug messages are to be compiled out */
#undef NO_DEBUG_MSGS
diff --git a/include/animate.h b/include/animate.h
index 8867a9f..665fc62 100644
--- a/include/animate.h
+++ b/include/animate.h
@@ -10,7 +10,8 @@
typedef struct tagANIMATE_INFO
{
- DWORD dwDummy;
+ LPVOID lpAvi; /* pointer to avi data */
+ HFILE32 hFile; /* handle to avi file */
} ANIMATE_INFO;
diff --git a/include/aspi.h b/include/aspi.h
index 9ceafd9..e19d390 100644
--- a/include/aspi.h
+++ b/include/aspi.h
@@ -1,173 +1,118 @@
+/* ASPI definitions used for both WNASPI16 and WNASPI32 */
+
#if !defined(ASPI_H)
#define ASPI_H
#pragma pack(1)
-#define SS_PENDING 0x00
-#define SS_COMP 0x01
-#define SS_ABORTED 0x02
-#define SS_ERR 0x04
-#define SS_OLD_MANAGE 0xe1
-#define SS_ILLEGAL_MODE 0xe2
-#define SS_NO_ASPI 0xe3
-#define SS_FAILED_INIT 0xe4
-#define SS_INVALID_HA 0x81
-#define SS_INVALID_SRB 0xe0
-#define SS_ASPI_IS_BUSY 0xe5
-#define SS_BUFFER_TO_BIG 0xe6
+#define SS_PENDING 0x00
+#define SS_COMP 0x01
+#define SS_ABORTED 0x02
+#define SS_ERR 0x04
+#define SS_OLD_MANAGE 0xe1
+#define SS_ILLEGAL_MODE 0xe2
+#define SS_NO_ASPI 0xe3
+#define SS_FAILED_INIT 0xe4
+#define SS_INVALID_HA 0x81
+#define SS_INVALID_SRB 0xe0
+#define SS_ASPI_IS_BUSY 0xe5
+#define SS_BUFFER_TO_BIG 0xe6
-#define SC_HA_INQUIRY 0x00
-#define SC_GET_DEV_TYPE 0x01
-#define SC_EXEC_SCSI_CMD 0x02
-#define SC_ABORT_SRB 0x03
-#define SC_RESET_DEV 0x04
+#define SC_HA_INQUIRY 0x00
+#define SC_GET_DEV_TYPE 0x01
+#define SC_EXEC_SCSI_CMD 0x02
+#define SC_ABORT_SRB 0x03
+#define SC_RESET_DEV 0x04
+
/* Host adapter status codes */
-#define HASTAT_OK 0x00
-#define HASTAT_SEL_TO 0x11
-#define HASTAT_DO_DU 0x12
-#define HASTAT_BUS_FREE 0x13
-#define HASTAT_PHASE_ERR 0x14
+#define HASTAT_OK 0x00
+#define HASTAT_SEL_TO 0x11
+#define HASTAT_DO_DU 0x12
+#define HASTAT_BUS_FREE 0x13
+#define HASTAT_PHASE_ERR 0x14
/* Target status codes */
-#define STATUS_GOOD 0x00
-#define STATUS_CHKCOND 0x02
-#define STATUS_BUSY 0x08
-#define STATUS_RESCONF 0x18
+#define STATUS_GOOD 0x00
+#define STATUS_CHKCOND 0x02
+#define STATUS_BUSY 0x08
+#define STATUS_RESCONF 0x18
+
+#ifdef linux
+
+/* This is a duplicate of the sg_header from /usr/src/linux/include/scsi/sg.h
+ * kernel 2.0.30
+ * This will probably break at some point, but for those who don't have
+ * kernels installed, I think this should still work.
+ *
+ */
+
+struct sg_header
+ {
+ int pack_len; /* length of incoming packet <4096 (including header) */
+ int reply_len; /* maximum length <4096 of expected reply */
+ int pack_id; /* id number of packet */
+ int result; /* 0==ok, otherwise refer to errno codes */
+ unsigned int twelve_byte:1; /* Force 12 byte command length for group 6 & 7
+commands */
+ unsigned int other_flags:31; /* for future use */
+ unsigned char sense_buffer[16]; /* used only by reads */
+ /* command follows then data for command */
+ };
+
+#define SCSI_OFF sizeof(struct sg_header)
+#endif
+
+#define ASPI_POSTING(prb) (prb->SRB_Flags & 0x1)
+
+#define HOST_TO_TARGET(prb) (((prb->SRB_Flags>>3) & 0x3) == 0x2)
+#define TARGET_TO_HOST(prb) (((prb->SRB_Flags>>3) & 0x3) == 0x1)
+#define NO_DATA_TRANSFERED(prb) (((prb->SRB_Flags>>3) & 0x3) == 0x3)
+
+#define SRB_ENABLE_RESIDUAL_COUNT 0x4
+#define SRB_EVENT_NOTIFY 0x40 /* Enable ASPI event notification */
+
+#define INQUIRY_VENDOR 8
+
+#define MUSTEK_SCSI_AREA_AND_WINDOWS 0x04
+#define MUSTEK_SCSI_READ_SCANNED_DATA 0x08
+#define MUSTEK_SCSI_GET_IMAGE_STATUS 0x0f
+#define MUSTEK_SCSI_ADF_AND_BACKTRACE 0x10
+#define MUSTEK_SCSI_CCD_DISTANCE 0x11
+#define MUSTEK_SCSI_START_STOP 0x1b
+
+#define CMD_TEST_UNIT_READY 0x00
+#define CMD_REQUEST_SENSE 0x03
+#define CMD_INQUIRY 0x12
+
+/* scanner commands - just for debug */
+#define CMD_SCAN_GET_DATA_BUFFER_STATUS 0x34
+#define CMD_SCAN_GET_WINDOW 0x25
+#define CMD_SCAN_OBJECT_POSITION 0x31
+#define CMD_SCAN_READ 0x28
+#define CMD_SCAN_RELEASE_UNIT 0x17
+#define CMD_SCAN_RESERVE_UNIT 0x16
+#define CMD_SCAN_SCAN 0x1b
+#define CMD_SCAN_SEND 0x2a
+#define CMD_SCAN_CHANGE_DEFINITION 0x40
+
+#define INQURIY_CMDLEN 6
+#define INQURIY_REPLY_LEN 96
+#define INQUIRY_VENDOR 8
+
+#define SENSE_BUFFER(prb) (&prb->CDBByte[prb->SRB_CDBLen])
-typedef union SRB16 * LPSRB16;
-
-struct SRB_HaInquiry16 {
- BYTE SRB_cmd;
- BYTE SRB_Status;
- BYTE SRB_HaId;
- BYTE SRB_Flags;
- WORD SRB_55AASignature;
- WORD SRB_ExtBufferSize;
- BYTE HA_Count;
- BYTE HA_SCSI_ID;
- BYTE HA_ManagerId[16];
- BYTE HA_Identifier[16];
- BYTE HA_Unique[16];
- BYTE HA_ExtBuffer[4];
-} WINE_PACKED;
-
-typedef struct SRB_HaInquiry16 SRB_HaInquiry16;
-
-struct SRB_ExecSCSICmd16 {
- BYTE SRB_Cmd; /* ASPI command code (W) */
- BYTE SRB_Status; /* ASPI command status byte (R) */
- BYTE SRB_HaId; /* ASPI host adapter number (W) */
- BYTE SRB_Flags; /* ASPI request flags (W) */
- DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 (-) */
- BYTE SRB_Target; /* Target's SCSI ID (W) */
- BYTE SRB_Lun; /* Target's LUN number (W) */
- DWORD SRB_BufLen; /* Data Allocation LengthPG (W/R)*/
- BYTE SRB_SenseLen; /* Sense Allocation Length (W) */
- SEGPTR SRB_BufPointer; /* Data Buffer Pointer (W) */
- DWORD SRB_Rsvd1; /* Reserved, MUST = 0 (-/W)*/
- BYTE SRB_CDBLen; /* CDB Length = 6 (W) */
- BYTE SRB_HaStat; /* Host Adapter Status (R) */
- BYTE SRB_TargStat; /* Target Status (R) */
- FARPROC16 SRB_PostProc; /* Post routine (W) */
- BYTE SRB_Rsvd2[34]; /* Reserved, MUST = 0 */
- BYTE CDBByte[0]; /* SCSI CBD - variable length (W) */
- /* variable example for 6 byte cbd
- * BYTE CDBByte[6]; * SCSI CDB (W) *
- * BYTE SenseArea6[SENSE_LEN]; * Request Sense buffer (R) *
- */
-} WINE_PACKED ;
-
-typedef struct SRB_ExecSCSICmd16 SRB_ExecSCSICmd16;
-
-struct SRB_ExecSCSICmd32 {
- BYTE SRB_Cmd; /* ASPI command code = SC_EXEC_SCSI_CMD */
- BYTE SRB_Status; /* ASPI command status byte */
- BYTE SRB_HaId; /* ASPI host adapter number */
- BYTE SRB_Flags; /* ASPI request flags */
- DWORD SRB_Hdr_Rsvd; /* Reserved */
- BYTE SRB_Target; /* Target's SCSI ID */
- BYTE SRB_Lun; /* Target's LUN number */
- WORD SRB_Rsvd1; /* Reserved for Alignment */
- DWORD SRB_BufLen; /* Data Allocation Length */
- BYTE *SRB_BufPointer; /* Data Buffer Point */
- BYTE SRB_SenseLen; /* Sense Allocation Length */
- BYTE SRB_CDBLen; /* CDB Length */
- BYTE SRB_HaStat; /* Host Adapter Status */
- BYTE SRB_TargStat; /* Target Status */
- void (*SRB_PostProc)(); /* Post routine */
- void *SRB_Rsvd2; /* Reserved */
- BYTE SRB_Rsvd3[16]; /* Reserved for expansion */
- BYTE CDBByte[16]; /* SCSI CDB */
- BYTE SenseArea[0]; /* Request sense buffer - var length */
+/* Just a container for seeing what devices are open */
+struct ASPI_DEVICE_INFO {
+ struct ASPI_DEVICE_INFO * next;
+ int fd;
+ int hostId;
+ int target;
+ int lun;
};
-typedef struct SRB_ExecSCSICmd32 SRB_ExecSCSICmd32;
-
-struct SRB_Abort16 {
- BYTE SRB_Cmd; /* ASPI command code = SC_ABORT_SRB */
- BYTE SRB_Status; /* ASPI command status byte */
- BYTE SRB_HaId; /* ASPI host adapter number */
- BYTE SRB_Flags; /* ASPI request flags */
- DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
- LPSRB16 SRB_ToAbort; /* Pointer to SRB to abort */
-} WINE_PACKED;
-
-typedef struct SRB_Abort16 SRB_Abort16;
-
-struct SRB_BusDeviceReset16 {
- BYTE SRB_Cmd; /* ASPI command code = SC_RESET_DEV */
- BYTE SRB_Status; /* ASPI command status byte */
- BYTE SRB_HaId; /* ASPI host adapter number */
- BYTE SRB_Flags; /* ASPI request flags */
- DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
- BYTE SRB_Target; /* Target's SCSI ID */
- BYTE SRB_Lun; /* Target's LUN number */
- BYTE SRB_ResetRsvd1[14]; /* Reserved, MUST = 0 */
- BYTE SRB_HaStat; /* Host Adapter Status */
- BYTE SRB_TargStat; /* Target Status */
- SEGPTR SRB_PostProc; /* Post routine */
- BYTE SRB_ResetRsvd2[34]; /* Reserved, MUST = 0 */
-} WINE_PACKED;
-
-typedef struct SRB_BusDeviceReset16 SRB_BusDeviceReset16;
-
-struct SRB_GDEVBlock16 {
- BYTE SRB_Cmd; /* ASPI command code = SC_GET_DEV_TYPE */
- BYTE SRB_Status; /* ASPI command status byte */
- BYTE SRB_HaId; /* ASPI host adapter number */
- BYTE SRB_Flags; /* ASPI request flags */
- DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
- BYTE SRB_Target; /* Target's SCSI ID */
- BYTE SRB_Lun; /* Target's LUN number */
- BYTE SRB_DeviceType; /* Target's peripheral device type */
-} WINE_PACKED;
-
-typedef struct SRB_GDEVBlock16 SRB_GDEVBlock16;
-
-
-
-struct SRB_Common16 {
- BYTE SRB_cmd;
-};
-
-
-typedef struct SRB_Common16 SRB_Common16;
-
-
-union SRB16 {
- SRB_Common16 common;
- SRB_HaInquiry16 inquiry;
- SRB_ExecSCSICmd16 cmd;
- SRB_Abort16 abort;
- SRB_BusDeviceReset16 reset;
- SRB_GDEVBlock16 devtype;
-};
-
-typedef union SRB16 SRB16;
-
-
-
+typedef struct ASPI_DEVICE_INFO ASPI_DEVICE_INFO;
+static ASPI_DEVICE_INFO *ASPI_open_devices = NULL;
#endif
diff --git a/include/authors.h b/include/authors.h
index 8481837..e930c97 100644
--- a/include/authors.h
+++ b/include/authors.h
@@ -30,6 +30,7 @@
"Carsten Fallesen",
"Paul Falstad",
"David Faure",
+ "Wesley Filardo",
"Claus Fischer",
"Olaf Flebbe",
"Chad Fraleigh",
@@ -47,6 +48,7 @@
"Jochen Hoenicke",
"Onno Hovers",
"Jeffrey Hsu",
+ "Peter Hunnisett",
"Miguel de Icaza",
"Jukka Iivonen",
"Lee Jaekil",
@@ -89,6 +91,7 @@
"Dimitrie O. Paun",
"Jim Peterson",
"Robert Pouliot",
+ "Petter Reinholdtsen",
"Keith Reynolds",
"Slaven Rezic",
"John Richardson",
diff --git a/include/commctrl.h b/include/commctrl.h
index 4d41405..cf72b0c 100644
--- a/include/commctrl.h
+++ b/include/commctrl.h
@@ -415,26 +415,27 @@
#define HDM_GETITEMCOUNT (HDM_FIRST+0)
#define HDM_INSERTITEM32A (HDM_FIRST+1)
#define HDM_INSERTITEM32W (HDM_FIRST+10)
-#define HDM_INSERTITEM WINELIB_NAME_AW(HDM_INSERTITEM)
+#define HDM_INSERTITEM WINELIB_NAME_AW(HDM_INSERTITEM)
#define HDM_DELETEITEM (HDM_FIRST+2)
#define HDM_GETITEM32A (HDM_FIRST+3)
#define HDM_GETITEM32W (HDM_FIRST+11)
-#define HDM_GETITEM WINELIB_NAME_AW(HDM_GETITEM)
+#define HDM_GETITEM WINELIB_NAME_AW(HDM_GETITEM)
#define HDM_SETITEM32A (HDM_FIRST+4)
#define HDM_SETITEM32W (HDM_FIRST+12)
-#define HDM_SETITEM WINELIB_NAME_AW(HDM_SETITEM)
+#define HDM_SETITEM WINELIB_NAME_AW(HDM_SETITEM)
#define HDM_LAYOUT (HDM_FIRST+5)
#define HDM_HITTEST (HDM_FIRST+6)
#define HDM_GETITEMRECT (HDM_FIRST+7)
#define HDM_SETIMAGELIST (HDM_FIRST+8)
#define HDM_GETIMAGELIST (HDM_FIRST+9)
-
#define HDM_ORDERTOINDEX (HDM_FIRST+15)
#define HDM_CREATEDRAGIMAGE (HDM_FIRST+16)
#define HDM_GETORDERARRAY (HDM_FIRST+17)
#define HDM_SETORDERARRAY (HDM_FIRST+18)
#define HDM_SETHOTDIVIDER (HDM_FIRST+19)
+#define HDM_GETUNICODEFORMAT CCM_GETUNICODEFORMAT
+#define HDM_SETUNICODEFORMAT CCM_SETUNICODEFORMAT
#define HDN_FIRST (0U-300U)
#define HDN_LAST (0U-399U)
@@ -468,7 +469,6 @@
#define HDN_BEGINDRACK (HDN_FIRST-10)
#define HDN_ENDDRACK (HDN_FIRST-11)
-
typedef struct _HD_LAYOUT
{
RECT32 *prc;
@@ -477,7 +477,7 @@
#define HD_LAYOUT HDLAYOUT
-typedef struct _HD_ITEMA
+typedef struct _HD_ITEM32A
{
UINT32 mask;
INT32 cxy;
@@ -490,7 +490,7 @@
INT32 iOrder;
} HDITEM32A, *LPHDITEM32A;
-typedef struct _HD_ITEMW
+typedef struct _HD_ITEM32W
{
UINT32 mask;
INT32 cxy;
@@ -519,48 +519,91 @@
#define HD_HITTESTINFO HDHITTESTINFO
-typedef struct tagNMHEADERA
+typedef struct tagNMHEADER32A
{
NMHDR hdr;
INT32 iItem;
INT32 iButton;
HDITEM32A *pitem;
-} NMHEADERA, *LPNMHEADERA;
+} NMHEADER32A, *LPNMHEADER32A;
-#ifndef __WINE__
+typedef struct tagNMHEADER32W
+{
+ NMHDR hdr;
+ INT32 iItem;
+ INT32 iButton;
+ HDITEM32W *pitem;
+} NMHEADER32W, *LPNMHEADER32W;
+
+#define NMHEADER WINELIB_NAME_AW(NMHEADER)
+#define LPNMHEADER WINELIB_NAME_AW(LPNMHEADER)
+
+typedef struct tagNMHDDISPINFO32A
+{
+ NMHDR hdr;
+ INT32 iItem;
+ UINT32 mask;
+ LPSTR pszText;
+ INT32 cchTextMax;
+ INT32 iImage;
+ LPARAM lParam;
+} NMHDDISPINFO32A, *LPNMHDDISPINFO32A;
+
+typedef struct tagNMHDDISPINFO32W
+{
+ NMHDR hdr;
+ INT32 iItem;
+ UINT32 mask;
+ LPWSTR pszText;
+ INT32 cchTextMax;
+ INT32 iImage;
+ LPARAM lParam;
+} NMHDDISPINFO32W, *LPNMHDDISPINFO32W;
+
+#define NMHDDISPINFO WINELIB_NAME_AW(NMHDDISPINFO)
+#define LPNMHDDISPINFO WINELIB_NAME_AW(LPNMHDDISPINFO)
+
#define Header_GetItemCount(hwndHD) \
- (INT32)SNDMSG((hwndHD),HDM_GETITEMCOUNT,0,0L)
-#define Header_InsertItem(hwndHD,i,phdi) \
- (INT32)SNDMSG((hwndHD),HDM_INSERTITEM,(WPARAM32)(INT32)(i),(LPARAM)(const HDITEM *)(phdi))
+ (INT32)SendMessage32A((hwndHD),HDM_GETITEMCOUNT,0,0L)
+#define Header_InsertItem32A(hwndHD,i,phdi) \
+ (INT32)SendMessage32A((hwndHD),HDM_INSERTITEM32A,(WPARAM32)(INT32)(i),(LPARAM)(const HDITEM32A*)(phdi))
+#define Header_InsertItem32W(hwndHD,i,phdi) \
+ (INT32)SendMessage32W((hwndHD),HDM_INSERTITEM32W,(WPARAM32)(INT32)(i),(LPARAM)(const HDITEM32W*)(phdi))
+#define Header_InsertItem WINELIB_NAME_AW(Header_InsertItem)
#define Header_DeleteItem(hwndHD,i) \
- (BOOL32)SNDMSG((hwndHD),HDM_DELETEITEM,(WPARAM32)(INT32)(i),0L)
-#define Header_GetItem(hwndHD,i,phdi) \
- (BOOL32)SNDMSG((hwndHD),HDM_GETITEM,(WPARAM32)(INT32)(i),(LPARAM)(HDITEM *)(phdi))
-#define Header_SetItem(hwndHD,i,phdi) \
- (BOOL32)SNDMSG((hwndHD),HDM_SETITEM,(WPARAM32)(INT32)(i),(LPARAM)(const HDITEM *)(phdi))
+ (BOOL32)SendMessage32A((hwndHD),HDM_DELETEITEM,(WPARAM32)(INT32)(i),0L)
+#define Header_GetItem32A(hwndHD,i,phdi) \
+ (BOOL32)SendMessage32A((hwndHD),HDM_GETITEM32A,(WPARAM32)(INT32)(i),(LPARAM)(HDITEM32A*)(phdi))
+#define Header_GetItem32W(hwndHD,i,phdi) \
+ (BOOL32)SendMessage32W((hwndHD),HDM_GETITEM32W,(WPARAM32)(INT32)(i),(LPARAM)(HDITEM32W*)(phdi))
+#define Header_GetItem WINELIB_NAME_AW(Header_GetItem)
+#define Header_SetItem32A(hwndHD,i,phdi) \
+ (BOOL32)SendMessage32A((hwndHD),HDM_SETITEM32A,(WPARAM32)(INT32)(i),(LPARAM)(const HDITEM32A*)(phdi))
+#define Header_SetItem32W(hwndHD,i,phdi) \
+ (BOOL32)SendMessage32W((hwndHD),HDM_SETITEM32W,(WPARAM32)(INT32)(i),(LPARAM)(const HDITEM32W*)(phdi))
+#define Header_SetItem WINELIB_NAME_AW(Header_SetItem)
#define Header_Layout(hwndHD,playout) \
- (BOOL32)SNDMSG((hwndHD),HDM_LAYOUT,0,(LPARAM)(LPHDLAYOUT)(playout))
+ (BOOL32)SendMessage32A((hwndHD),HDM_LAYOUT,0,(LPARAM)(LPHDLAYOUT)(playout))
#define Header_GetItemRect(hwnd,iItem,lprc) \
- (BOOL32)SNDMSG((hwnd),HDM_GETITEMRECT,(WPARAM32)iItem,(LPARAM)lprc)
+ (BOOL32)SendMessage32A((hwnd),HDM_GETITEMRECT,(WPARAM32)iItem,(LPARAM)lprc)
#define Header_SetImageList(hwnd,himl) \
- (HIMAGELIST)SNDMSG((hwnd),HDM_SETIMAGELIST,0,(LPARAM)himl)
+ (HIMAGELIST)SendMessage32A((hwnd),HDM_SETIMAGELIST,0,(LPARAM)himl)
#define Header_GetImageList(hwnd) \
- (HIMAGELIST)SNDMSG((hwnd),HDM_GETIMAGELIST,0,0)
+ (HIMAGELIST)SendMessage32A((hwnd),HDM_GETIMAGELIST,0,0)
#define Header_OrderToIndex(hwnd,i) \
- (INT32)SNDMSG((hwnd),HDM_ORDERTOINDEX,(WPARAM32)i,0)
+ (INT32)SendMessage32A((hwnd),HDM_ORDERTOINDEX,(WPARAM32)i,0)
#define Header_CreateDragImage(hwnd,i) \
- (HIMAGELIST)SNDMSG((hwnd),HDM_CREATEDRAGIMAGE,(WPARAM32)i,0)
+ (HIMAGELIST)SendMessage32A((hwnd),HDM_CREATEDRAGIMAGE,(WPARAM32)i,0)
#define Header_GetOrderArray(hwnd,iCount,lpi) \
- (BOOL32)SNDMSG((hwnd),HDM_GETORDERARRAY,(WPARAM32)iCount,(LPARAM)lpi)
+ (BOOL32)SendMessage32A((hwnd),HDM_GETORDERARRAY,(WPARAM32)iCount,(LPARAM)lpi)
#define Header_SetOrderArray(hwnd,iCount,lpi) \
- (BOOL32)SNDMSG((hwnd),HDM_SETORDERARRAY,(WPARAM32)iCount,(LPARAM)lpi)
+ (BOOL32)SendMessage32A((hwnd),HDM_SETORDERARRAY,(WPARAM32)iCount,(LPARAM)lpi)
#define Header_SetHotDivider(hwnd,fPos,dw) \
- (INT32)SNDMSG((hwnd),HDM_SETHOTDIVIDER,(WPARAM32)fPos,(LPARAM)dw)
+ (INT32)SendMessage32A((hwnd),HDM_SETHOTDIVIDER,(WPARAM32)fPos,(LPARAM)dw)
#define Header_SetUnicodeFormat(hwnd,fUnicode) \
- (BOOL32)SNDMSG((hwnd),HDM_SETUNICODEFORMAT,(WPARAM32)(fUnicode),0)
+ (BOOL32)SendMessage32A((hwnd),HDM_SETUNICODEFORMAT,(WPARAM32)(fUnicode),0)
#define Header_GetUnicodeFormat(hwnd) \
- (BOOL32)SNDMSG((hwnd),HDM_GETUNICODEFORMAT,0,0)
-#endif /* #ifndef __WINE__ */
+ (BOOL32)SendMessage32A((hwnd),HDM_GETUNICODEFORMAT,0,0)
/* Toolbar */
@@ -602,7 +645,8 @@
#define TBIF_LPARAM 0x00000010
#define TBIF_COMMAND 0x00000020
#define TBIF_SIZE 0x00000040
-
+
+#define TBBF_LARGE 0x0001
#define TB_ENABLEBUTTON (WM_USER+1)
#define TB_CHECKBUTTON (WM_USER+2)
@@ -1342,6 +1386,330 @@
#define TVN_FIRST (0U-400U)
#define TVN_LAST (0U-499U)
+#define TVN_SELCHANGING (TVN_FIRST-1)
+#define TVN_SELCHANGED (TVN_FIRST-2)
+#define TVN_GETDISPINFO (TVN_FIRST-3)
+#define TVN_SETDISPINFO (TVN_FIRST-4)
+#define TVN_ITEMEXPANDING (TVN_FIRST-5)
+#define TVN_ITEMEXPANDED (TVN_FIRST-6)
+#define TVN_BEGINDRAG (TVN_FIRST-7)
+#define TVN_BEGINRDRAG (TVN_FIRST-8)
+#define TVN_DELETEITEM (TVN_FIRST-9)
+#define TVN_BEGINLABELEDIT (TVN_FIRST-10)
+#define TVN_ENDLABELEDIT (TVN_FIRST-11)
+#define TVN_KEYDOWN (TVN_FIRST-12)
+#define TVN_GETINFOTIPA (TVN_FIRST-13)
+#define TVN_GETINFOTIPW (TVN_FIRST-14)
+#define TVN_SINGLEEXPAND (TVN_FIRST-15)
+
+
+#define TVN_SELCHANGINGW (TVN_FIRST-50)
+#define TVN_SELCHANGEDW (TVN_FIRST-51)
+#define TVN_GETDISPINFOW (TVN_FIRST-52)
+#define TVN_SETDISPINFOW (TVN_FIRST-53)
+#define TVN_ITEMEXPANDINGW (TVN_FIRST-54)
+#define TVN_ITEMEXPANDEDW (TVN_FIRST-55)
+#define TVN_BEGINDRAGW (TVN_FIRST-56)
+#define TVN_BEGINRDRAGW (TVN_FIRST-57)
+#define TVN_DELETEITEMW (TVN_FIRST-58)
+#define TVN_BEGINLABELEDITW (TVN_FIRST-59)
+#define TVN_ENDLABELEDITW (TVN_FIRST-60)
+
+
+
+#define TVIF_TEXT 0x0001
+#define TVIF_IMAGE 0x0002
+#define TVIF_PARAM 0x0004
+#define TVIF_STATE 0x0008
+#define TVIF_HANDLE 0x0010
+#define TVIF_SELECTEDIMAGE 0x0020
+#define TVIF_CHILDREN 0x0040
+#define TVIF_INTEGRAL 0x0080
+#define TVIF_DI_SETITEM 0x1000
+
+#define TVI_ROOT 0xffff0000 /* -65536 */
+#define TVI_FIRST 0xffff0001 /* -65535 */
+#define TVI_LAST 0xffff0002 /* -65534 */
+#define TVI_SORT 0xffff0003 /* -65533 */
+
+#define TVIS_FOCUSED 0x0001
+#define TVIS_SELECTED 0x0002
+#define TVIS_CUT 0x0004
+#define TVIS_DROPHILITED 0x0008
+#define TVIS_BOLD 0x0010
+#define TVIS_EXPANDED 0x0020
+#define TVIS_EXPANDEDONCE 0x0040
+#define TVIS_OVERLAYMASK 0x0f00
+#define TVIS_STATEIMAGEMASK 0xf000
+#define TVIS_USERMASK 0xf000
+
+#define TVHT_NOWHERE 0x0001
+#define TVHT_ONITEMICON 0x0002
+#define TVHT_ONITEMLABEL 0x0004
+#define TVHT_ONITEMINDENT 0x0008
+#define TVHT_ONITEMBUTTON 0x0010
+#define TVHT_ONITEMRIGHT 0x0020
+#define TVHT_ONITEMSTATEICON 0x0040
+#define TVHT_ONITEM 0x0046
+#define TVHT_ABOVE 0x0100
+#define TVHT_BELOW 0x0200
+#define TVHT_TORIGHT 0x0400
+#define TVHT_TOLEFT 0x0800
+
+#define TVS_HASBUTTONS 0x0001
+#define TVS_HASLINES 0x0002
+#define TVS_LINESATROOT 0x0004
+#define TVS_EDITLABELS 0x0008
+#define TVS_DISABLEDRAGDROP 0x0010
+#define TVS_SHOWSELALWAYS 0x0020
+#define TVS_RTLREADING 0x0040
+#define TVS_NOTOOLTIPS 0x0080
+#define TVS_CHECKBOXES 0x0100
+#define TVS_TRACKSELECT 0x0200
+#define TVS_SINGLEEXPAND 0x0400
+#define TVS_INFOTIP 0x0800
+#define TVS_FULLROWSELECT 0x1000
+#define TVS_NOSCROLL 0x2000
+#define TVS_NONEVENHEIGHT 0x4000
+
+#define TVS_SHAREDIMAGELISTS 0x0000
+#define TVS_PRIVATEIMAGELISTS 0x0400
+
+
+#define TVE_COLLAPSE 0x0001
+#define TVE_EXPAND 0x0002
+#define TVE_TOGGLE 0x0003
+#define TVE_EXPANDPARTIAL 0x4000
+#define TVE_COLLAPSERESET 0x8000
+
+#define TVGN_ROOT 0
+#define TVGN_NEXT 1
+#define TVGN_PREVIOUS 2
+#define TVGN_PARENT 3
+#define TVGN_CHILD 4
+#define TVGN_FIRSTVISIBLE 5
+#define TVGN_NEXTVISIBLE 6
+#define TVGN_PREVIOUSVISIBLE 7
+#define TVGN_DROPHILITE 8
+#define TVGN_CARET 9
+#define TVGN_LASTVISIBLE 10
+
+#define TVC_UNKNOWN 0x00
+#define TVC_BYMOUSE 0x01
+#define TVC_BYKEYBOARD 0x02
+
+
+typedef HANDLE32 HTREEITEM;
+
+typedef struct {
+ UINT32 mask;
+ HTREEITEM hItem;
+ UINT32 state;
+ UINT32 stateMask;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+ int iSelectedImage;
+ int cChildren;
+ LPARAM lParam;
+} TV_ITEM, *LPTVITEM;
+
+typedef struct {
+ UINT32 mask;
+ HTREEITEM hItem;
+ UINT32 state;
+ UINT32 stateMask;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+ int iSelectedImage;
+ int cChildren;
+ LPARAM lParam;
+ int iIntegral;
+} TV_ITEMEX, *LPTVITEMEX;
+
+#define TVITEM TV_ITEM
+
+
+
+typedef struct tagTVINSERTSTRUCT {
+ HTREEITEM hParent;
+ HTREEITEM hInsertAfter;
+ TV_ITEM item;
+} TVINSERTSTRUCT, *LPTVINSERTSTRUCT;
+
+typedef struct tagNMTREEVIEW {
+ NMHDR hdr;
+ UINT32 action;
+ TVITEM itemOld;
+ TVITEM itemNew;
+ POINT32 ptDrag;
+} NMTREEVIEW, *LPNMTREEVIEW;
+
+typedef struct tagTVDISPINFO {
+ NMHDR hdr;
+ TVITEM item;
+} NMTVDISPINFO, *LPNMTVDISPINFO;
+
+
+
+typedef struct tagTVHITTESTINFO {
+ POINT32 pt;
+ UINT32 flags;
+ HTREEITEM hItem;
+} TVHITTESTINFO, *LPTVHITTESTINFO;
+
+
+#define TreeView_InsertItem(hwndHD, phdi) \
+ (INT32)SendMessage32A((hwnd), TVM_INSERTITEM, 0, \
+ (LPARAM)(LPTV_INSERTSTRUCT)(phdi))
+#define TreeView_DeleteItem(hwnd, hItem) \
+ (BOOL32)SendMessage32A((hwnd), TVM_DELETEITEM, 0, (LPARAM)(HTREEITEM)(hItem))
+#define TreeView_DeleteAllItems(hwnd) \
+ (BOOL32)SendMessage32A((hwnd), TVM_DELETEITEM, 0, (LPARAM)TVI_ROOT)
+#define TreeView_Expand(hwnd, hitem, code) \
+ (BOOL32)SendMessage32A((hwnd), TVM_EXPAND, (WPARAM)code, \
+ (LPARAM)(HTREEITEM)(hitem))
+
+#define TreeView_GetItemRect(hwnd, hitem, prc, code) \
+ (*(HTREEITEM *)prc = (hitem), (BOOL)SendMessage32A((hwnd), \
+ TVM_GETITEMRECT, (WPARAM32)(code), (LPARAM)(RECT *)(prc)))
+
+#define TreeView_GetCount(hwnd) \
+ (UINT32)SendMessage32A((hwnd), TVM_GETCOUNT, 0, 0)
+#define TreeView_GetIndent(hwnd) \
+ (UINT32)SendMessage32A((hwnd), TVM_GETINDENT, 0, 0)
+#define TreeView_SetIndent(hwnd, indent) \
+ (BOOL32)SendMessage32A((hwnd), TVM_SETINDENT, (WPARAM)indent, 0)
+
+#define TreeView_GetImageList(hwnd, iImage) \
+ (HIMAGELIST)SendMessage32A((hwnd), TVM_GETIMAGELIST, iImage, 0)
+
+#define TreeView_SetImageList(hwnd, himl, iImage) \
+ (HIMAGELIST)SendMessage32A((hwnd), TVM_SETIMAGELIST, iImage, \
+ (LPARAM)(UINT32)(HIMAGELIST)(himl))
+
+#define TreeView_GetNextItem(hwnd, hitem, code) \
+ (HTREEITEM)SendMessage32A((hwnd), TVM_GETNEXTITEM, (WPARAM)code,\
+(LPARAM)(HTREEITEM) (hitem))
+
+#define TreeView_GetChild(hwnd, hitem) \
+ TreeView_GetNextItem(hwnd, hitem , TVGN_CHILD)
+#define TreeView_GetNextSibling(hwnd, hitem) \
+ TreeView_GetNextItem(hwnd, hitem , TVGN_NEXT)
+#define TreeView_GetPrevSibling(hwnd, hitem) \
+ TreeView_GetNextItem(hwnd, hitem , TVGN_PREVIOUS)
+#define TreeView_GetParent(hwnd, hitem) \
+ TreeView_GetNextItem(hwnd, hitem , TVGN_PARENT)
+#define TreeView_GetFirstVisible(hwnd) \
+ TreeView_GetNextItem(hwnd, NULL, TVGN_FIRSTVISIBLE)
+#define TreeView_GetLastVisible(hwnd) \
+ TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE)
+#define TreeView_GetNextVisible(hwnd, hitem) \
+ TreeView_GetNextItem(hwnd, hitem , TVGN_NEXTVISIBLE)
+#define TreeView_GetPrevVisible(hwnd, hitem) \
+ TreeView_GetNextItem(hwnd, hitem , TVGN_PREVIOUSVISIBLE)
+#define TreeView_GetSelection(hwnd) \
+ TreeView_GetNextItem(hwnd, NULL, TVGN_CARET)
+#define TreeView_GetDropHilight(hwnd) \
+ TreeView_GetNextItem(hwnd, NULL, TVGN_DROPHILITE)
+#define TreeView_GetRoot(hwnd) \
+ TreeView_GetNextItem(hwnd, NULL, TVGN_ROOT)
+#define TreeView_GetLastVisible(hwnd) \
+ TreeView_GetNextItem(hwnd, NULL, TVGN_LASTVISIBLE)
+
+
+#define TreeView_Select(hwnd, hitem, code) \
+ (UINT32)SendMessage32A((hwnd), TVM_SELECTITEM, (WPARAM)code, \
+(LPARAM)(UINT32)(hitem))
+
+
+#define TreeView_SelectItem(hwnd, hitem) \
+ TreeView_Select(hwnd, hitem, TVGN_CARET)
+#define TreeView_SelectDropTarget(hwnd, hitem) \
+ TreeView_Select(hwnd, hitem, TVGN_DROPHILITE)
+/* FIXME
+#define TreeView_SelectSetFirstVisible(hwnd, hitem) \
+ TreeView_Select(hwnd, hitem, TVGN_FIRSTVISIBLE)
+*/
+
+#define TreeView_GetItem(hwnd, pitem) \
+ (BOOL32)SendMessage32A((hwnd), TVM_GETITEM, 0, (LPARAM) (TV_ITEM *)(pitem))
+
+#define TreeView_SetItem(hwnd, pitem) \
+ (BOOL32)SendMessage32A((hwnd), TVM_SETITEM, 0, (LPARAM)(const TV_ITEM *)(pitem))
+
+#define TreeView_EditLabel(hwnd, hitem) \
+ (HWND)SendMessage32A((hwnd), TVM_EDITLABEL, 0, (LPARAM)(HTREEITEM)(hitem))
+
+
+#define TreeView_GetEditControl(hwnd) \
+ (HWND)SendMessage32A((hwnd), TVM_GETEDITCONTROL, 0, 0)
+
+#define TreeView_GetVisibleCount(hwnd) \
+ (UINT32)SendMessage32A((hwnd), TVM_GETVISIBLECOUNT, 0, 0)
+
+#define TreeView_HitTest(hwnd, lpht) \
+ (HTREEITEM)SendMessage32A((hwnd), TVM_HITTEST, 0,\
+(LPARAM)(LPTV_HITTESTINFO)(lpht))
+
+#define TreeView_CreateDragImage(hwnd, hitem) \
+ (HIMAGELIST)SendMessage32A((hwnd), TVM_CREATEDRAGIMAGE, 0,\
+(LPARAM)(HTREEITEM)(hitem))
+
+#define TreeView_SortChildren(hwnd, hitem, recurse) \
+ (BOOL)SendMessage32A((hwnd), TVM_SORTCHILDREN, (WPARAM)recurse,\
+(LPARAM)(HTREEITEM)(hitem))
+
+#define TreeView_EnsureVisible(hwnd, hitem) \
+ (BOOL)SendMessage32A((hwnd), TVM_ENSUREVISIBLE, 0, (LPARAM)(UINT32)(hitem))
+
+#define TreeView_SortChildrenCB(hwnd, psort, recurse) \
+ (BOOL)SendMessage32A((hwnd), TVM_SORTCHILDRENCB, (WPARAM)recurse, \
+ (LPARAM)(LPTV_SORTCB)(psort))
+
+#define TreeView_EndEditLabelNow(hwnd, fCancel) \
+ (BOOL)SendMessage32A((hwnd), TVM_ENDEDITLABELNOW, (WPARAM)fCancel, 0)
+
+#define TreeView_GetISearchString(hwndTV, lpsz) \
+ (BOOL)SendMessage32A((hwndTV), TVM_GETISEARCHSTRING, 0, \
+ (LPARAM)(LPTSTR)lpsz)
+
+#define TreeView_SetItemHeight(hwnd, iHeight) \
+ (INT32)SendMessage32A((hwnd), TVM_SETITEMHEIGHT, (WPARAM)iHeight, 0)
+#define TreeView_GetItemHeight(hwnd) \
+ (INT32)SendMessage32A((hwnd), TVM_GETITEMHEIGHT, 0, 0)
+
+#define TreeView_SetBkColor(hwnd, clr) \
+ (COLORREF)SendMessage32A((hwnd), TVM_SETBKCOLOR, 0, (LPARAM)clr)
+
+#define TreeView_SetTextColor(hwnd, clr) \
+ (COLORREF)SendMessage32A((hwnd), TVM_SETTEXTCOLOR, 0, (LPARAM)clr)
+
+#define TreeView_GetBkColor(hwnd) \
+ (COLORREF)SendMessage32A((hwnd), TVM_GETBKCOLOR, 0, 0)
+
+#define TreeView_GetTextColor(hwnd) \
+ (COLORREF)SendMessage32A((hwnd), TVM_GETTEXTCOLOR, 0, 0)
+
+#define TreeView_SetScrollTime(hwnd, uTime) \
+ (UINT32)SendMessage32A((hwnd), TVM_SETSCROLLTIME, uTime, 0)
+
+#define TreeView_GetScrollTime(hwnd) \
+ (UINT32)SendMessage32A((hwnd), TVM_GETSCROLLTIME, 0, 0)
+
+#define TreeView_SetInsertMarkColor(hwnd, clr) \
+ (COLORREF)SendMessage32A((hwnd), TVM_SETINSERTMARKCOLOR, 0, (LPARAM)clr)
+#define TreeView_GetInsertMarkColor(hwnd) \
+ (COLORREF)SendMessage32A((hwnd), TVM_GETINSERTMARKCOLOR, 0, 0)
+
+
+
+
+
+
+
+
/* Listview control */
@@ -1456,14 +1824,63 @@
#define LVM_INSERTCOLUMN WINELIB_NAME_AW(LVM_INSERTCOLUMN)
#define LVM_DELETECOLUMN (LVM_FIRST+28)
#define LVM_GETCOLUMNWIDTH (LVM_FIRST+29)
-#define LVM_GETHEADER (LVM_FIRST+30)
+#define LVM_SETCOLUMNWIDTH (LVM_FIRST+30)
+#define LVM_GETHEADER (LVM_FIRST+31)
+#define LVM_CREATEDRAGIMAGE (LVM_FIRST+33)
+#define LVM_GETVIEWRECT (LVM_FIRST+34)
+#define LVM_GETTEXTCOLOR (LVM_FIRST+35)
+#define LVM_SETTEXTCOLOR (LVM_FIRST+36)
+#define LVM_GETTEXTBKCOLOR (LVM_FIRST+37)
+#define LVM_SETTEXTBKCOLOR (LVM_FIRST+38)
+#define LVM_GETTOPINDEX (LVM_FIRST+39)
+#define LVM_GETCOUNTPERPAGE (LVM_FIRST+40)
+#define LVM_GETORIGIN (LVM_FIRST+41)
+#define LVM_UPDATE (LVM_FIRST+42)
+#define LVM_SETITEMSTATE (LVM_FIRST+43)
+#define LVM_GETITEMSTATE (LVM_FIRST+44)
+#define LVM_GETITEMTEXT32A (LVM_FIRST+45)
+#define LVM_GETITEMTEXT32W (LVM_FIRST+115)
+#define LVM_GETITEMTEXT WINELIB_NAME_AW(LVM_GETITEMTEXT)
+#define LVM_SETITEMTEXT32A (LVM_FIRST+46)
+#define LVM_SETITEMTEXT32W (LVM_FIRST+116)
+#define LVM_SETITEMTEXT WINELIB_NAME_AW(LVM_SETITEMTEXT)
+#define LVM_SETITEMCOUNT (LVM_FIRST+47)
#define LVM_SORTITEMS (LVM_FIRST+48)
+#define LVM_SETITEMPOSITION32 (LVM_FIRST+49)
#define LVM_GETSELECTEDCOUNT (LVM_FIRST+50)
-
+#define LVM_GETITEMSPACING (LVM_FIRST+51)
+#define LVM_GETISEARCHSTRING32A (LVM_FIRST+52)
+#define LVM_GETISEARCHSTRING32W (LVM_FIRST+117)
+#define LVM_GETISEARCHSTRING WINELIB_NAME_AW(LVM_GETISEARCHSTRING)
+#define LVM_SETICONSPACING (LVM_FIRST+53)
#define LVM_SETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+54)
#define LVM_GETEXTENDEDLISTVIEWSTYLE (LVM_FIRST+55)
+#define LVM_GETSUBITEMRECT (LVM_FIRST+56)
+#define LVM_SUBITEMHITTEST (LVM_FIRST+57)
+#define LVM_SETCOLUMNORDERARRAY (LVM_FIRST+58)
+#define LVM_GETCOLUMNORDERARRAY (LVM_FIRST+59)
+#define LVM_SETHOTITEM (LVM_FIRST+60)
+#define LVM_GETHOTITEM (LVM_FIRST+61)
+#define LVM_SETHOTCURSOR (LVM_FIRST+62)
+#define LVM_GETHOTCURSOR (LVM_FIRST+63)
+#define LVM_APPROXIMATEVIEWRECT (LVM_FIRST+64)
+#define LVM_SETWORKAREAS (LVM_FIRST+65)
+#define LVM_GETSELECTIONMARK (LVM_FIRST+66)
+#define LVM_SETSELECTIONMARK (LVM_FIRST+67)
+#define LVM_SETBKIMAGE32A (LVM_FIRST+68)
+#define LVM_SETBKIMAGE32W (LVM_FIRST+138)
+#define LVM_SETBKIMAGE WINELIB_NAME_AW(LVM_SETBKIMAGE)
+#define LVM_GETBKIMAGE32A (LVM_FIRST+69)
+#define LVM_GETBKIMAGE32W (LVM_FIRST+139)
+#define LVM_GETBKIMAGE WINELIB_NAME_AW(LVM_GETBKIMAGE)
+#define LVM_GETWORKAREAS (LVM_FIRST+70)
+#define LVM_SETHOVERTIME (LVM_FIRST+71)
+#define LVM_GETHOVERTIME (LVM_FIRST+72)
+#define LVM_GETNUMBEROFWORKAREAS (LVM_FIRST+73)
+#define LVM_SETTOOLTIPS (LVM_FIRST+74)
+#define LVM_GETTOOLTIPS (LVM_FIRST+78)
#define LVN_FIRST (0U-100U)
#define LVN_LAST (0U-199U)
@@ -1747,22 +2164,29 @@
#define ACN_START 1
#define ACN_STOP 2
-#ifndef __WINE__
-#define Animate_Create(hwndP,id,dwStyle,hInstance) \
- CreateWindow(ANIMATE_CLASS,NULL,dwStyle,0,0,0,0,hwndP,(HMENU32)(id),hInstance,NULL)
-#define Animate_Open(hwnd,szName) \
- (BOOL32)SNDMSG(hwnd,ACM_OPEN,0,(LPARAM)(LPTSTR)(szName))
-#define Animate_OpenEx(hwnd,hInst,szName) \
- (BOOL32)SNDMSG(hwnd,ACM_OPEN,(WPARAM32)hInst,(LPARAM)(LPTSTR)(szName))
+#define Animate_Create32A(hwndP,id,dwStyle,hInstance) \
+ CreateWindow32A(ANIMATE_CLASS32A,NULL,dwStyle,0,0,0,0,hwndP,(HMENU32)(id),hInstance,NULL)
+#define Animate_Create32W(hwndP,id,dwStyle,hInstance) \
+ CreateWindow32W(ANIMATE_CLASS32W,NULL,dwStyle,0,0,0,0,hwndP,(HMENU32)(id),hInstance,NULL)
+#define Animate_Create WINELIB_NAME_AW(Animate_Create)
+#define Animate_Open32A(hwnd,szName) \
+ (BOOL32)SendMessage32A(hwnd,ACM_OPEN32A,0,(LPARAM)(LPSTR)(szName))
+#define Animate_Open32W(hwnd,szName) \
+ (BOOL32)SendMessage32W(hwnd,ACM_OPEN32W,0,(LPARAM)(LPWSTR)(szName))
+#define Animate_Open WINELIB_NAME_AW(Animate_Open)
+#define Animate_OpenEx32A(hwnd,hInst,szName) \
+ (BOOL32)SendMessage32A(hwnd,ACM_OPEN32A,(WPARAM32)hInst,(LPARAM)(LPSTR)(szName))
+#define Animate_OpenEx32W(hwnd,hInst,szName) \
+ (BOOL32)SendMessage32W(hwnd,ACM_OPEN32W,(WPARAM32)hInst,(LPARAM)(LPWSTR)(szName))
+#define Animate_OpenEx WINELIB_NAME_AW(Animate_OpenEx)
#define Animate_Play(hwnd,from,to,rep) \
- (BOOL32)SNDMSG(hwnd,ACM_PLAY,(WPARAM32)(UINT32)(rep),(LPARAM)MAKELONG(from,to))
+ (BOOL32)SendMessage32A(hwnd,ACM_PLAY,(WPARAM32)(UINT32)(rep),(LPARAM)MAKELONG(from,to))
#define Animate_Stop(hwnd) \
- (BOOL32)SNDMSG(hwnd,ACM_STOP,0,0)
+ (BOOL32)SendMessage32A(hwnd,ACM_STOP,0,0)
#define Animate_Close(hwnd) \
- Animate_Open(hwnd,NULL)
+ (BOOL32)SendMessage32A(hwnd,ACM_OPEN32A,0,0)
#define Animate_Seek(hwnd,frame) \
- Animate_Play(hwnd,frame,frame,1)
-#endif /* __WINE__ */
+ (BOOL32)SendMessage32A(hwnd,ACM_PLAY,1,(LPARAM)MAKELONG(frame,frame))
@@ -1778,6 +2202,14 @@
DWORD WINAPI COMCTL32_GetSize (LPVOID lpMem);
+INT32 WINAPI Str_GetPtr32A (LPCSTR lpSrc, LPSTR lpDest, INT32 nMaxLen);
+BOOL32 WINAPI Str_SetPtr32A (LPSTR *lppDest, LPCSTR lpSrc);
+INT32 WINAPI Str_GetPtr32W (LPCWSTR lpSrc, LPWSTR lpDest, INT32 nMaxLen);
+BOOL32 WINAPI Str_SetPtr32W (LPWSTR *lppDest, LPCWSTR lpSrc);
+#define Str_GetPtr WINELIB_NAME_AW(Str_GetPtr)
+#define Str_SetPtr WINELIB_NAME_AW(Str_SetPtr)
+
+
/* Dynamic Storage Array */
typedef struct _DSA
diff --git a/include/config.h.in b/include/config.h.in
index 73fc304..0fb133b 100644
--- a/include/config.h.in
+++ b/include/config.h.in
@@ -36,6 +36,9 @@
/* Define if X libraries are not reentrant (compiled without -D_REENTRANT). */
#undef NO_REENTRANT_X11
+/* Define if libc is not reentrant */
+#undef NO_REENTRANT_LIBC
+
/* Define if all debug messages are to be compiled out */
#undef NO_DEBUG_MSGS
@@ -161,3 +164,6 @@
/* Define if you have the w library (-lw). */
#undef HAVE_LIBW
+
+/* Define if you have the xpg4 library (-lxpg4). */
+#undef HAVE_LIBXPG4
diff --git a/include/ddraw.h b/include/ddraw.h
index db87666..9c20ee6 100644
--- a/include/ddraw.h
+++ b/include/ddraw.h
@@ -431,6 +431,14 @@
#define DDCAPS2_CANFLIPODDEVEN 0x00002000
#define DDCAPS2_CANBOBHARDWARE 0x00004000
+
+/* Set/Get Colour Key Flags */
+#define DDCKEY_COLORSPACE 0x00000001 /* Struct is ingle colour space */
+#define DDCKEY_DESTBLT 0x00000002 /* To be used as dest for blt */
+#define DDCKEY_DESTOVERLAY 0x00000004 /* To be used as dest for CK overlays */
+#define DDCKEY_SRCBLT 0x00000008 /* To be used as src for blt */
+#define DDCKEY_SRCOVERLAY 0x00000010 /* To be used as src for CK overlays */
+
typedef struct _DDCOLORKEY
{
DWORD dwColorSpaceLowValue;/* low boundary of color space that is to
@@ -876,6 +884,7 @@
struct _common_directdrawdata {
DWORD depth;
DWORD height,width; /* SetDisplayMode */
+ HWND32 mainWindow; /* SetCooperativeLevel */
};
struct _dga_directdrawdata {
diff --git a/include/debug.h b/include/debug.h
index 971d472..2d279ac 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -59,32 +59,32 @@
#define dbch_hotkey 51
#define dbch_icon 52
#define dbch_imagelist 53
-#define dbch_int 54
-#define dbch_int10 55
-#define dbch_int21 56
-#define dbch_int31 57
-#define dbch_key 58
-#define dbch_keyboard 59
-#define dbch_ldt 60
-#define dbch_listbox 61
-#define dbch_listview 62
-#define dbch_local 63
-#define dbch_mci 64
-#define dbch_mcianim 65
-#define dbch_mciwave 66
-#define dbch_mdi 67
-#define dbch_menu 68
-#define dbch_message 69
-#define dbch_metafile 70
-#define dbch_midi 71
-#define dbch_mmaux 72
-#define dbch_mmio 73
-#define dbch_mmsys 74
-#define dbch_mmtime 75
-#define dbch_module 76
-#define dbch_mpr 77
-#define dbch_msg 78
-#define dbch_msvideo 79
+#define dbch_imm 54
+#define dbch_int 55
+#define dbch_int10 56
+#define dbch_int21 57
+#define dbch_int31 58
+#define dbch_key 59
+#define dbch_keyboard 60
+#define dbch_ldt 61
+#define dbch_listbox 62
+#define dbch_listview 63
+#define dbch_local 64
+#define dbch_mci 65
+#define dbch_mcianim 66
+#define dbch_mciwave 67
+#define dbch_mdi 68
+#define dbch_menu 69
+#define dbch_message 70
+#define dbch_metafile 71
+#define dbch_midi 72
+#define dbch_mmaux 73
+#define dbch_mmio 74
+#define dbch_mmsys 75
+#define dbch_mmtime 76
+#define dbch_module 77
+#define dbch_mpr 78
+#define dbch_msg 79
#define dbch_nonclient 80
#define dbch_ntdll 81
#define dbch_ole 82
@@ -96,54 +96,55 @@
#define dbch_profile 88
#define dbch_progress 89
#define dbch_prop 90
-#define dbch_psdrv 91
-#define dbch_rebar 92
-#define dbch_reg 93
-#define dbch_region 94
-#define dbch_relay 95
-#define dbch_resource 96
-#define dbch_s 97
-#define dbch_scroll 98
-#define dbch_security 99
-#define dbch_segment 100
-#define dbch_selector 101
-#define dbch_sem 102
-#define dbch_sendmsg 103
-#define dbch_shell 104
-#define dbch_shm 105
-#define dbch_snoop 106
-#define dbch_sound 107
-#define dbch_static 108
-#define dbch_statusbar 109
-#define dbch_stress 110
-#define dbch_string 111
-#define dbch_syscolor 112
-#define dbch_system 113
-#define dbch_tab 114
-#define dbch_task 115
-#define dbch_text 116
-#define dbch_thread 117
-#define dbch_thunk 118
-#define dbch_timer 119
-#define dbch_toolbar 120
-#define dbch_toolhelp 121
-#define dbch_tooltips 122
-#define dbch_trackbar 123
-#define dbch_treeview 124
-#define dbch_tweak 125
-#define dbch_uitools 126
-#define dbch_updown 127
-#define dbch_ver 128
-#define dbch_virtual 129
-#define dbch_vxd 130
-#define dbch_win 131
-#define dbch_win16drv 132
-#define dbch_win32 133
-#define dbch_wing 134
-#define dbch_winsock 135
-#define dbch_wnet 136
-#define dbch_x11 137
-#define dbch_x11drv 138
+#define dbch_psapi 91
+#define dbch_psdrv 92
+#define dbch_rebar 93
+#define dbch_reg 94
+#define dbch_region 95
+#define dbch_relay 96
+#define dbch_resource 97
+#define dbch_s 98
+#define dbch_scroll 99
+#define dbch_security 100
+#define dbch_segment 101
+#define dbch_selector 102
+#define dbch_sem 103
+#define dbch_sendmsg 104
+#define dbch_shell 105
+#define dbch_shm 106
+#define dbch_snoop 107
+#define dbch_sound 108
+#define dbch_static 109
+#define dbch_statusbar 110
+#define dbch_stress 111
+#define dbch_string 112
+#define dbch_syscolor 113
+#define dbch_system 114
+#define dbch_tab 115
+#define dbch_task 116
+#define dbch_text 117
+#define dbch_thread 118
+#define dbch_thunk 119
+#define dbch_timer 120
+#define dbch_toolbar 121
+#define dbch_toolhelp 122
+#define dbch_tooltips 123
+#define dbch_trackbar 124
+#define dbch_treeview 125
+#define dbch_tweak 126
+#define dbch_uitools 127
+#define dbch_updown 128
+#define dbch_ver 129
+#define dbch_virtual 130
+#define dbch_vxd 131
+#define dbch_win 132
+#define dbch_win16drv 133
+#define dbch_win32 134
+#define dbch_wing 135
+#define dbch_winsock 136
+#define dbch_wnet 137
+#define dbch_x11 138
+#define dbch_x11drv 139
/* Definitions for classes identifiers */
#define dbcl_fixme 0
#define dbcl_err 1
diff --git a/include/debugdefs.h b/include/debugdefs.h
index 7ff6fd7..104fbb0 100644
--- a/include/debugdefs.h
+++ b/include/debugdefs.h
@@ -4,7 +4,7 @@
#include "debugtools.h"
#endif
-#define DEBUG_CHANNEL_COUNT 139
+#define DEBUG_CHANNEL_COUNT 140
#ifdef DEBUG_RUNTIME
short debug_msg_enabled[][DEBUG_CLASS_COUNT] = {
{1, 1, 0, 0},
@@ -146,6 +146,7 @@
{1, 1, 0, 0},
{1, 1, 0, 0},
{1, 1, 0, 0},
+{1, 1, 0, 0},
};
const char* debug_ch_name[] = {
"1",
@@ -202,6 +203,7 @@
"hotkey",
"icon",
"imagelist",
+"imm",
"int",
"int10",
"int21",
@@ -227,7 +229,6 @@
"module",
"mpr",
"msg",
-"msvideo",
"nonclient",
"ntdll",
"ole",
@@ -239,6 +240,7 @@
"profile",
"progress",
"prop",
+"psapi",
"psdrv",
"rebar",
"reg",
diff --git a/include/debugger.h b/include/debugger.h
index 866634d..90d45a8 100644
--- a/include/debugger.h
+++ b/include/debugger.h
@@ -11,6 +11,7 @@
#include "selectors.h"
#include "sig_context.h"
#include "pe_image.h"
+#include "miscemu.h"
#define STEP_FLAG 0x100 /* single step flag */
@@ -85,13 +86,20 @@
typedef struct wine_locals WineLocals;
+#define DBG_V86_MODULE(seg) ((seg)>>16)
+#define IS_SELECTOR_V86(seg) DBG_V86_MODULE(seg)
+
#define DBG_FIX_ADDR_SEG(addr,default) { \
if ((addr)->seg == 0xffffffff) (addr)->seg = (default); \
+ if (!IS_SELECTOR_V86((addr)->seg)) \
if (IS_SELECTOR_SYSTEM((addr)->seg)) (addr)->seg = 0; }
#define DBG_ADDR_TO_LIN(addr) \
+ (IS_SELECTOR_V86((addr)->seg) \
+ ? (char*)(DOSMEM_MemoryBase(DBG_V86_MODULE((addr)->seg)) + \
+ ((((addr)->seg)&0xFFFF)<<4)+(addr)->off) : \
(IS_SELECTOR_SYSTEM((addr)->seg) ? (char *)(addr)->off \
- : (char *)PTR_SEG_OFF_TO_LIN((addr)->seg,(addr)->off))
+ : (char *)PTR_SEG_OFF_TO_LIN((addr)->seg,(addr)->off)))
#define DBG_CHECK_READ_PTR(addr,len) \
(!DEBUG_IsBadReadPtr((addr),(len)) || \
@@ -310,6 +318,7 @@
extern void DEBUG_Disassemble( const DBG_ADDR *, const DBG_ADDR*, int offset );
/* debugger/dbg.y */
+extern void ctx_debug( int signal, CONTEXT *regs );
extern void wine_debug( int signal, SIGCONTEXT *regs );
#endif /* __WINE_DEBUGGER_H */
diff --git a/include/debugtools.h b/include/debugtools.h
index 40fcb1e..7b6356b 100644
--- a/include/debugtools.h
+++ b/include/debugtools.h
@@ -37,8 +37,8 @@
#define DPRINTF(format, args...) fprintf(stddeb, format, ## args)
#define DPRINTF_(cl, ch, format, args...) \
- if(!DEBUGGING(cl, ch)) ; \
- else DPRINTF(# cl ":" # ch ":%s " format, __FUNCTION__ , ## args)
+ do {if(!DEBUGGING(cl, ch)) ; \
+ else DPRINTF(# cl ":" # ch ":%s " format, __FUNCTION__ , ## args); } while (0)
/* use configure to allow user to compile out debugging messages */
diff --git a/include/dosexe.h b/include/dosexe.h
index 3eb82f5..04d9ffb 100644
--- a/include/dosexe.h
+++ b/include/dosexe.h
@@ -16,6 +16,7 @@
LPVOID img;
unsigned img_ofs;
WORD psp_seg,load_seg;
+ WORD dpmi_seg,dpmi_sel,dpmi_flag;
HMODULE16 hModule;
struct vm86plus_struct VM86;
int fn, state;
diff --git a/include/dplay.h b/include/dplay.h
index f9d649e..d9a1147 100644
--- a/include/dplay.h
+++ b/include/dplay.h
@@ -2,9 +2,9 @@
#ifndef __WINE_DPLAY_H
#define __WINE_DPLAY_H
-#include "mmsystem.h"
+#pragma pack(1)
-/* Return Values */
+/* Return Values for Direct Play */
#define _FACDP 0x877
#define MAKE_DPHRESULT( code ) MAKE_HRESULT( 1, _FACDP, code )
@@ -34,8 +34,8 @@
#define DPERR_NONAMESERVERFOUND MAKE_DPHRESULT( 200 )
#define DPERR_NOPLAYERS MAKE_DPHRESULT( 210 )
#define DPERR_NOSESSIONS MAKE_DPHRESULT( 220 )
-#define DPERR_PENDING E_PENDING
-#define DPERR_SENDTOOBIG MAKE_DPHRESULT( 230 )
+#define DPERR_PENDING E_PENDING
+#define DPERR_SENDTOOBIG MAKE_DPHRESULT( 230 )
#define DPERR_TIMEOUT MAKE_DPHRESULT( 240 )
#define DPERR_UNAVAILABLE MAKE_DPHRESULT( 250 )
#define DPERR_UNSUPPORTED E_NOTIMPL
@@ -107,11 +107,7 @@
/* GUID for Modem service provider {44EAA760-CB68-11cf-9C4E-00A0C905425E} */
DEFINE_GUID(DPSPGUID_MODEM, 0x44eaa760, 0xcb68, 0x11cf, 0x9c, 0x4e, 0x0, 0xa0, 0xc9, 0x5, 0x42, 0x5e);
-
-#pragma pack(1)
-
-/* Direct Play */
-typedef struct IDirectPlay IDirectPlay, *LPDIRECTPLAY;
+typedef struct IDirectPlay IDirectPlay, *LPDIRECTPLAY;
/* Direct Play 2 */
typedef struct IDirectPlay2 IDirectPlay2, *LPDIRECTPLAY2;
@@ -154,60 +150,110 @@
{
DWORD dwSize;
DWORD dwFlags; /* Not used must be 0 */
- union playerShortName /* Player's Handle? */
+
+ union /*playerShortName */ /* Player's Handle? */
{
LPWSTR lpszShortName;
LPSTR lpszShortNameA;
- };
- union playerLongName /* Player's formal/real name */
+ }psn;
+
+ union /*playerLongName */ /* Player's formal/real name */
{
LPWSTR lpszLongName;
LPSTR lpszLongNameA;
- };
+ }pln;
} DPNAME, *LPDPNAME;
+#define DPLONGNAMELEN 52
+#define DPSHORTNAMELEN 20
+#define DPSESSIONNAMELEN 32
+#define DPPASSWORDLEN 16
+#define DPUSERRESERVED 16
+
+typedef struct tagDPSESSIONDESC
+{
+ DWORD dwSize;
+ GUID guidSession;
+ DWORD dwSession;
+ DWORD dwMaxPlayers;
+ DWORD dwCurrentPlayers;
+ DWORD dwFlags;
+ char szSessionName[ DPSESSIONNAMELEN ];
+ char szUserField[ DPUSERRESERVED ];
+ DWORD dwReserved1;
+ char szPassword[ DPPASSWORDLEN ];
+ DWORD dwReserved2;
+ DWORD dwUser1;
+ DWORD dwUser2;
+ DWORD dwUser3;
+ DWORD dwUser4;
+} DPSESSIONDESC, *LPDPSESSIONDESC;
+
typedef struct tagDPSESSIONDESC2
{
DWORD dwSize;
DWORD dwFlags;
GUID guidInstance;
- GUID guidApplication;
+ GUID guidApplication; /* GUID of the DP application, GUID_NULL if
+ * all applications! */
DWORD dwMaxPlayers;
- DWORD dwCurrentPlayers;
+ DWORD dwCurrentPlayers; /* (read only value) */
- union sessionName
+ union /* Session name */
{
LPWSTR lpszSessionName;
LPSTR lpszSessionNameA;
- };
+ }sess;
- union optnlSessionPasswd
+ union /* Optional password */
{
LPWSTR lpszPassword;
LPSTR lpszPasswordA;
- };
+ }pass;
DWORD dwReserved1;
DWORD dwReserved2;
- DWORD dwUser1;
+
+ DWORD dwUser1; /* For use by the application */
DWORD dwUser2;
DWORD dwUser3;
DWORD dwUser4;
} DPSESSIONDESC2, *LPDPSESSIONDESC2;
+typedef const DPSESSIONDESC2* LPCDPSESSIONDESC2;
+
+#define DPOPEN_JOIN 0x00000001
+#define DPOPEN_CREATE 0x00000002
+#define DPOPEN_RETURNSTATUS DPENUMSESSIONS_RETURNSTATUS
+
+#define DPSESSION_NEWPLAYERSDISABLED 0x00000001
+#define DPSESSION_MIGRATEHOST 0x00000004
+#define DPSESSION_NOMESSAGEID 0x00000008
+#define DPSESSION_JOINDISABLED 0x00000020
+#define DPSESSION_KEEPALIVE 0x00000040
+#define DPSESSION_NODATAMESSAGES 0x00000080
+#define DPSESSION_SECURESERVER 0x00000100
+#define DPSESSION_PRIVATE 0x00000200
+#define DPSESSION_PASSWORDREQUIRED 0x00000400
+#define DPSESSION_MULTICASTSERVER 0x00000800
+#define DPSESSION_CLIENTSERVER 0x00001000
typedef struct tagDPLCONNECTION
{
DWORD dwSize;
DWORD dwFlags;
- LPDPSESSIONDESC2 lpSessionDesc;
- LPDPNAME lpPlayerName;
- GUID guidSP;
- LPVOID lpAddress;
- DWORD dwAddressSize;
+ LPDPSESSIONDESC2 lpSessionDesc; /* Ptr to session desc to use for connect */
+ LPDPNAME lpPlayerName; /* Ptr to player name structure */
+ GUID guidSP; /* GUID of Service Provider to use */
+ LPVOID lpAddress; /* Ptr to Address of Service Provider to use */
+ DWORD dwAddressSize; /* Size of address data */
} DPLCONNECTION, *LPDPLCONNECTION;
+/* DPLCONNECTION flags (for dwFlags) */
+#define DPLCONNECTION_CREATESESSION DPOPEN_CREATE
+#define DPLCONNECTION_JOINSESSION DPOPEN_JOIN
+
typedef struct tagDPLAPPINFO
{
DWORD dwSize;
@@ -230,6 +276,62 @@
} DPCOMPOUNDADDRESSELEMENT, *LPDPCOMPOUNDADDRESSELEMENT;
typedef const DPCOMPOUNDADDRESSELEMENT *LPCDPCOMPOUNDADDRESSELEMENT;
+typedef struct tagDPCHAT
+{
+ DWORD dwSize;
+ DWORD dwFlags;
+ union
+ { // Message string
+ LPWSTR lpszMessage; // Unicode
+ LPSTR lpszMessageA; // ANSI
+ }msgstr;
+} DPCHAT, *LPDPCHAT;
+
+typedef struct tagDPSECURITYDESC
+{
+ DWORD dwSize; // Size of structure
+ DWORD dwFlags; // Not used. Must be zero.
+ union
+ { // SSPI provider name
+ LPWSTR lpszSSPIProvider; // Unicode
+ LPSTR lpszSSPIProviderA; // ANSI
+ }sspi;
+ union
+ { // CAPI provider name
+ LPWSTR lpszCAPIProvider; // Unicode
+ LPSTR lpszCAPIProviderA; // ANSI
+ }capi;
+ DWORD dwCAPIProviderType; // Crypto Service Provider type
+ DWORD dwEncryptionAlgorithm; // Encryption Algorithm type
+} DPSECURITYDESC, *LPDPSECURITYDESC;
+
+typedef const DPSECURITYDESC *LPCDPSECURITYDESC;
+
+typedef struct tagDPCREDENTIALS
+{
+ DWORD dwSize; // Size of structure
+ DWORD dwFlags; // Not used. Must be zero.
+ union
+ { // User name of the account
+ LPWSTR lpszUsername; // Unicode
+ LPSTR lpszUsernameA; // ANSI
+ }name;
+ union
+ { // Password of the account
+ LPWSTR lpszPassword; // Unicode
+ LPSTR lpszPasswordA; // ANSI
+ }pass;
+ union
+ { // Domain name of the account
+ LPWSTR lpszDomain; // Unicode
+ LPSTR lpszDomainA; // ANSI
+ }domain;
+} DPCREDENTIALS, *LPDPCREDENTIALS;
+
+typedef const DPCREDENTIALS *LPCDPCREDENTIALS;
+
+
+
typedef BOOL32 (CALLBACK* LPDPENUMDPCALLBACKW)(
LPGUID lpguidSP,
LPWSTR lpSPName,
@@ -255,9 +357,16 @@
DWORD dwFlags,
LPVOID lpContext);
+typedef BOOL32 (CALLBACK* LPDPENUMSESSIONSCALLBACK)(
+ LPDPSESSIONDESC lpDPSessionDesc,
+ LPVOID lpContext,
+ LPDWORD lpdwTimeOut,
+ DWORD dwFlags);
+
+
extern HRESULT WINAPI DirectPlayEnumerateA( LPDPENUMDPCALLBACKA, LPVOID );
extern HRESULT WINAPI DirectPlayEnumerateW( LPDPENUMDPCALLBACKW, LPVOID );
-extern HRESULT WINAPI DirectPlayCreate( LPGUID lpGUID, LPDIRECTPLAY *lplpDP, IUnknown *pUnk);
+extern HRESULT WINAPI DirectPlayCreate( LPGUID lpGUID, LPDIRECTPLAY2 *lplpDP, IUnknown *pUnk);
/* Direct Play Lobby 1 */
@@ -268,8 +377,8 @@
typedef struct IDirectPlayLobby2 IDirectPlayLobby2, *LPDIRECTPLAYLOBBY2;
typedef struct IDirectPlayLobby2 IDirectPlayLobby2A, *LPDIRECTPLAYLOBBY2A;
-extern HRESULT WINAPI DirectPlayLobbyCreateW(LPGUID, LPDIRECTPLAYLOBBY2 *, IUnknown *, LPVOID, DWORD );
-extern HRESULT WINAPI DirectPlayLobbyCreateA(LPGUID, LPDIRECTPLAYLOBBY2A *, IUnknown *, LPVOID, DWORD );
+extern HRESULT WINAPI DirectPlayLobbyCreateW(LPGUID, LPDIRECTPLAYLOBBY *, IUnknown *, LPVOID, DWORD );
+extern HRESULT WINAPI DirectPlayLobbyCreateA(LPGUID, LPDIRECTPLAYLOBBYA *, IUnknown *, LPVOID, DWORD );
@@ -277,17 +386,31 @@
REFGUID guidDataType,
DWORD dwDataSize,
LPCVOID lpData,
- LPVOID lpContext);
+ LPVOID lpContext );
typedef BOOL32 (CALLBACK* LPDPLENUMADDRESSTYPESCALLBACK)(
REFGUID guidDataType,
LPVOID lpContext,
- DWORD dwFlags);
+ DWORD dwFlags );
typedef BOOL32 (CALLBACK* LPDPLENUMLOCALAPPLICATIONSCALLBACK)(
LPCDPLAPPINFO lpAppInfo,
LPVOID lpContext,
- DWORD dwFlags);
+ DWORD dwFlags );
+
+typedef BOOL32 (CALLBACK* LPDPENUMPLAYERSCALLBACK2)(
+ DPID dpId,
+ DWORD dwPlayerType,
+ LPCDPNAME lpName,
+ DWORD dwFlags,
+ LPVOID lpContext );
+
+typedef BOOL32 (CALLBACK* LPDPENUMSESSIONSCALLBACK2)(
+ LPCDPSESSIONDESC2 lpThisSD,
+ LPDWORD lpdwTimeOut,
+ DWORD dwFlags,
+ LPVOID lpContext );
+
#define STDMETHOD(xfn) HRESULT (CALLBACK *fn##xfn)
@@ -296,36 +419,334 @@
#define FAR
#define THIS_ THIS,
-#define THIS LPDIRECTPLAYLOBBY2 this
-typedef struct tagLPDIRECTPLAYLOBBY2_VTABLE {
+#define THIS LPDIRECTPLAY2 this
+typedef struct tagLPDIRECTPLAY2_VTABLE
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /*** IDirectPlay2 methods ***/
+ STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE32,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE;
+ STDMETHOD(DestroyGroup) (THIS_ DPID) PURE;
+ STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE;
+ STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE;
+ STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
+ STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE;
+ STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE;
+ STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
+ STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE;
+ STDMETHOD(Initialize) (THIS_ LPGUID) PURE;
+ STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
+ STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE;
+ STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE;
+ STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
+ STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
+ STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
+} DIRECTPLAY2_VTABLE, *LPDIRECTPLAY2_VTABLE;
+#undef THIS
+
+#define THIS LPDIRECTPLAY3 this
+typedef struct tagLPDIRECTPLAY3_VTABLE
+{
+ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /*** IDirectPlay2 methods ***/
+ STDMETHOD(AddPlayerToGroup) (THIS_ DPID, DPID) PURE;
+ STDMETHOD(Close) (THIS) PURE;
+ STDMETHOD(CreateGroup) (THIS_ LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(CreatePlayer) (THIS_ LPDPID,LPDPNAME,HANDLE32,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(DeletePlayerFromGroup)(THIS_ DPID,DPID) PURE;
+ STDMETHOD(DestroyGroup) (THIS_ DPID) PURE;
+ STDMETHOD(DestroyPlayer) (THIS_ DPID) PURE;
+ STDMETHOD(EnumGroupPlayers) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumGroups) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumPlayers) (THIS_ LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumSessions) (THIS_ LPDPSESSIONDESC2,DWORD,LPDPENUMSESSIONSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(GetCaps) (THIS_ LPDPCAPS,DWORD) PURE;
+ STDMETHOD(GetGroupData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
+ STDMETHOD(GetGroupName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetMessageCount) (THIS_ DPID, LPDWORD) PURE;
+ STDMETHOD(GetPlayerAddress) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetPlayerCaps) (THIS_ DPID,LPDPCAPS,DWORD) PURE;
+ STDMETHOD(GetPlayerData) (THIS_ DPID,LPVOID,LPDWORD,DWORD) PURE;
+ STDMETHOD(GetPlayerName) (THIS_ DPID,LPVOID,LPDWORD) PURE;
+ STDMETHOD(GetSessionDesc) (THIS_ LPVOID,LPDWORD) PURE;
+ STDMETHOD(Initialize) (THIS_ LPGUID) PURE;
+ STDMETHOD(Open) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
+ STDMETHOD(Receive) (THIS_ LPDPID,LPDPID,DWORD,LPVOID,LPDWORD) PURE;
+ STDMETHOD(Send) (THIS_ DPID, DPID, DWORD, LPVOID, DWORD) PURE;
+ STDMETHOD(SetGroupData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(SetGroupName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
+ STDMETHOD(SetPlayerData) (THIS_ DPID,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(SetPlayerName) (THIS_ DPID,LPDPNAME,DWORD) PURE;
+ STDMETHOD(SetSessionDesc) (THIS_ LPDPSESSIONDESC2,DWORD) PURE;
+
+ /*** IDirectPlay3 methods ***/
+ STDMETHOD(AddGroupToGroup) (THIS_ DPID, DPID) PURE;
+ STDMETHOD(CreateGroupInGroup) (THIS_ DPID,LPDPID,LPDPNAME,LPVOID,DWORD,DWORD) PURE;
+ STDMETHOD(DeleteGroupFromGroup) (THIS_ DPID,DPID) PURE;
+ STDMETHOD(EnumConnections) (THIS_ LPCGUID,LPDPENUMCONNECTIONSCALLBACK,LPVOID,DWORD) PURE;
+ STDMETHOD(EnumGroupsInGroup) (THIS_ DPID,LPGUID,LPDPENUMPLAYERSCALLBACK2,LPVOID,DWORD) PURE;
+ STDMETHOD(GetGroupConnectionSettings) (THIS_ DWORD, DPID, LPVOID, LPDWORD) PURE;
+ STDMETHOD(InitializeConnection) (THIS_ LPVOID,DWORD) PURE;
+ STDMETHOD(SecureOpen) (THIS_ LPCDPSESSIONDESC2,DWORD,LPCDPSECURITYDESC,LPCDPCREDENTIALS) PURE;
+ STDMETHOD(SendChatMessage) (THIS_ DPID,DPID,DWORD,LPDPCHAT);
+ STDMETHOD(SetGroupConnectionSettings) (THIS_ DWORD,DPID,LPDPLCONNECTION) PURE;
+ STDMETHOD(StartSession) (THIS_ DWORD,DPID);
+ STDMETHOD(GetGroupFlags) (THIS_ DPID,LPDWORD);
+ STDMETHOD(GetGroupParent) (THIS_ DPID,LPDPID);
+ STDMETHOD(GetPlayerAccount) (THIS_ DPID, DWORD, LPVOID, LPDWORD) PURE;
+ STDMETHOD(GetPlayerFlags) (THIS_ DPID,LPDWORD);
+} DIRECTPLAY3_VTABLE, *LPDIRECTPLAY3_VTABLE;
+#undef THIS
+
+
+/**********************************************************************************
+ *
+ * Macros for a nicer interface to DirectPlay
+ *
+ **********************************************************************************/
+
+/* COM Interface */
+#define IDirectPlay_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlay_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectPlay_Release(p) (p)->lpVtbl->Release(p)
+
+#define IDirectPlay2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlay2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectPlay2_Release(p) (p)->lpVtbl->Release(p)
+
+#define IDirectPlay3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlay3_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectPlay3_Release(p) (p)->lpVtbl->Release(p)
+
+/* Direct Play 1&2 Interface */
+#define IDirectPlay_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b)
+#define IDirectPlay_Close(p) (p)->lpVtbl->Close(p)
+#define IDirectPlay_CreateGroup(p,a,b,c) (p)->lpVtbl->CreateGroup(p,a,b,c)
+#define IDirectPlay_CreatePlayer(p,a,b,c,d) (p)->lpVtbl->CreatePlayer(p,a,b,c,d)
+#define IDirectPlay_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
+#define IDirectPlay_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a)
+#define IDirectPlay_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a)
+#define IDirectPlay_EnableNewPlayers(p,a) (p)->lpVtbl->EnableNewPlayers(p,a)
+#define IDirectPlay_EnumGroupPlayers(p,a,b,c,d) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d)
+#define IDirectPlay_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d)
+#define IDirectPlay_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
+#define IDirectPlay_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
+#define IDirectPlay_GetCaps(p,a) (p)->lpVtbl->GetCaps(p,a)
+#define IDirectPlay_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b)
+#define IDirectPlay_GetPlayerCaps(p,a,b) (p)->lpVtbl->GetPlayerCaps(p,a,b)
+#define IDirectPlay_GetPlayerName(p,a,b,c,d,e) (p)->lpVtbl->GetPlayerName(p,a,b,c,d,e)
+#define IDirectPlay_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirectPlay_Open(p,a) (p)->lpVtbl->Open(p,a)
+#define IDirectPlay_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e)
+#define IDirectPlay_SaveSession(p,a) (p)->lpVtbl->SaveSession(p,a)
+#define IDirectPlay_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e)
+#define IDirectPlay_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c)
+
+#define IDirectPlay2_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b)
+#define IDirectPlay2_Close(p) (p)->lpVtbl->Close(p)
+#define IDirectPlay2_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
+#define IDirectPlay2_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
+#define IDirectPlay2_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
+#define IDirectPlay2_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a)
+#define IDirectPlay2_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a)
+#define IDirectPlay2_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
+#define IDirectPlay2_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d)
+#define IDirectPlay2_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
+#define IDirectPlay2_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
+#define IDirectPlay2_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectPlay2_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b)
+#define IDirectPlay2_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d)
+#define IDirectPlay2_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c)
+#define IDirectPlay2_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
+#define IDirectPlay2_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
+#define IDirectPlay2_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
+#define IDirectPlay2_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c)
+#define IDirectPlay2_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b)
+#define IDirectPlay2_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirectPlay2_Open(p,a,b) (p)->lpVtbl->Open(p,a,b)
+#define IDirectPlay2_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e)
+#define IDirectPlay2_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e)
+#define IDirectPlay2_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d)
+#define IDirectPlay2_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c)
+#define IDirectPlay2_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
+#define IDirectPlay2_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c)
+#define IDirectPlay2_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b)
+
+#define IDirectPlay3_AddPlayerToGroup(p,a,b) (p)->lpVtbl->AddPlayerToGroup(p,a,b)
+#define IDirectPlay3_Close(p) (p)->lpVtbl->Close(p)
+#define IDirectPlay3_CreateGroup(p,a,b,c,d,e) (p)->lpVtbl->CreateGroup(p,a,b,c,d,e)
+#define IDirectPlay3_CreatePlayer(p,a,b,c,d,e,f) (p)->lpVtbl->CreatePlayer(p,a,b,c,d,e,f)
+#define IDirectPlay3_DeletePlayerFromGroup(p,a,b) (p)->lpVtbl->DeletePlayerFromGroup(p,a,b)
+#define IDirectPlay3_DestroyGroup(p,a) (p)->lpVtbl->DestroyGroup(p,a)
+#define IDirectPlay3_DestroyPlayer(p,a) (p)->lpVtbl->DestroyPlayer(p,a)
+#define IDirectPlay3_EnumGroupPlayers(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupPlayers(p,a,b,c,d,e)
+#define IDirectPlay3_EnumGroups(p,a,b,c,d) (p)->lpVtbl->EnumGroups(p,a,b,c,d)
+#define IDirectPlay3_EnumPlayers(p,a,b,c,d) (p)->lpVtbl->EnumPlayers(p,a,b,c,d)
+#define IDirectPlay3_EnumSessions(p,a,b,c,d,e) (p)->lpVtbl->EnumSessions(p,a,b,c,d,e)
+#define IDirectPlay3_GetCaps(p,a,b) (p)->lpVtbl->GetCaps(p,a,b)
+#define IDirectPlay3_GetMessageCount(p,a,b) (p)->lpVtbl->GetMessageCount(p,a,b)
+#define IDirectPlay3_GetGroupData(p,a,b,c,d) (p)->lpVtbl->GetGroupData(p,a,b,c,d)
+#define IDirectPlay3_GetGroupName(p,a,b,c) (p)->lpVtbl->GetGroupName(p,a,b,c)
+#define IDirectPlay3_GetPlayerAddress(p,a,b,c) (p)->lpVtbl->GetPlayerAddress(p,a,b,c)
+#define IDirectPlay3_GetPlayerCaps(p,a,b,c) (p)->lpVtbl->GetPlayerCaps(p,a,b,c)
+#define IDirectPlay3_GetPlayerData(p,a,b,c,d) (p)->lpVtbl->GetPlayerData(p,a,b,c,d)
+#define IDirectPlay3_GetPlayerName(p,a,b,c) (p)->lpVtbl->GetPlayerName(p,a,b,c)
+#define IDirectPlay3_GetSessionDesc(p,a,b) (p)->lpVtbl->GetSessionDesc(p,a,b)
+#define IDirectPlay3_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
+#define IDirectPlay3_Open(p,a,b) (p)->lpVtbl->Open(p,a,b)
+#define IDirectPlay3_Receive(p,a,b,c,d,e) (p)->lpVtbl->Receive(p,a,b,c,d,e)
+#define IDirectPlay3_Send(p,a,b,c,d,e) (p)->lpVtbl->Send(p,a,b,c,d,e)
+#define IDirectPlay3_SetGroupData(p,a,b,c,d) (p)->lpVtbl->SetGroupData(p,a,b,c,d)
+#define IDirectPlay3_SetGroupName(p,a,b,c) (p)->lpVtbl->SetGroupName(p,a,b,c)
+#define IDirectPlay3_SetPlayerData(p,a,b,c,d) (p)->lpVtbl->SetPlayerData(p,a,b,c,d)
+#define IDirectPlay3_SetPlayerName(p,a,b,c) (p)->lpVtbl->SetPlayerName(p,a,b,c)
+#define IDirectPlay3_SetSessionDesc(p,a,b) (p)->lpVtbl->SetSessionDesc(p,a,b)
+
+
+/* Direct Play 3 Interface. */
+
+#define IDirectPlay3_AddGroupToGroup(p,a,b) (p)->lpVtbl->AddGroupToGroup(p,a,b)
+#define IDirectPlay3_CreateGroupInGroup(p,a,b,c,d,e,f) (p)->lpVtbl->CreateGroupInGroup(p,a,b,c,d,e,f)
+#define IDirectPlay3_DeleteGroupFromGroup(p,a,b) (p)->lpVtbl->DeleteGroupFromGroup(p,a,b)
+#define IDirectPlay3_EnumConnections(p,a,b,c,d) (p)->lpVtbl->EnumConnections(p,a,b,c,d)
+#define IDirectPlay3_EnumGroupsInGroup(p,a,b,c,d,e) (p)->lpVtbl->EnumGroupsInGroup(p,a,b,c,d,e)
+#define IDirectPlay3_GetGroupConnectionSettings(p,a,b,c,d) (p)->lpVtbl->GetGroupConnectionSettings(p,a,b,c,d)
+#define IDirectPlay3_InitializeConnection(p,a,b) (p)->lpVtbl->InitializeConnection(p,a,b)
+#define IDirectPlay3_SecureOpen(p,a,b,c,d) (p)->lpVtbl->SecureOpen(p,a,b,c,d)
+#define IDirectPlay3_SendChatMessage(p,a,b,c,d) (p)->lpVtbl->SendChatMessage(p,a,b,c,d)
+#define IDirectPlay3_SetGroupConnectionSettings(p,a,b,c) (p)->lpVtbl->SetGroupConnectionSettings(p,a,b,c)
+#define IDirectPlay3_StartSession(p,a,b) (p)->lpVtbl->StartSession(p,a,b)
+#define IDirectPlay3_GetGroupFlags(p,a,b) (p)->lpVtbl->GetGroupFlags(p,a,b)
+#define IDirectPlay3_GetGroupParent(p,a,b) (p)->lpVtbl->GetGroupParent(p,a,b)
+#define IDirectPlay3_GetPlayerAccount(p,a,b,c,d) (p)->lpVtbl->GetPlayerAccount(p,a,b,c,d)
+#define IDirectPlay3_GetPlayerFlags(p,a,b) (p)->lpVtbl->GetPlayerFlags(p,a,b)
+
+
+/****************************************************************************
+ *
+ * DIRECT PLAY LOBBY VIRTUAL TABLE DEFINITIONS
+ *
+ ****************************************************************************/
+
+
+#define THIS LPDIRECTPLAYLOBBY this
+typedef struct tagLPDIRECTPLAYLOBBY_VTABLE
+{
/* IUnknown Methods "Inherited Methods" */
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
- STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
/* IDirectPlayLobby Methods */
- STDMETHOD(Connect) (THIS_ DWORD, LPDIRECTPLAY2 *, IUnknown *) PURE;
- STDMETHOD(CreateAddress) (THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE;
- STDMETHOD(EnumAddress) (THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE;
- STDMETHOD(EnumAddressTypes) (THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE;
- STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE;
- STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE;
- STDMETHOD(ReceiveLobbyMessage) (THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE;
- STDMETHOD(RunApplication) (THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE32) PURE;
- STDMETHOD(SendLobbyMessage) (THIS_ DWORD, DWORD, LPVOID, DWORD) PURE;
- STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE;
+ STDMETHOD(Connect) (THIS_ DWORD, LPDIRECTPLAY *, IUnknown *) PURE;
+ STDMETHOD(CreateAddress) (THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE;
+ STDMETHOD(EnumAddress) (THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE;
+ STDMETHOD(EnumAddressTypes) (THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE;
+ STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE;
+ STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE;
+ STDMETHOD(ReceiveLobbyMessage) (THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE;
+ STDMETHOD(RunApplication) (THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE32) PURE;
+ STDMETHOD(SendLobbyMessage) (THIS_ DWORD, DWORD, LPVOID, DWORD) PURE;
+ STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE;
+ STDMETHOD(SetLobbyMessageEvent) (THIS_ DWORD, DWORD, HANDLE32) PURE;
+
+
+} DIRECTPLAYLOBBY_VTABLE, *LPDIRECTPLAYLOBBY_VTABLE;
+#undef THIS
+
+#define THIS LPDIRECTPLAYLOBBY2 this
+typedef struct tagLPDIRECTPLAYLOBBY2_VTABLE
+{
+ /* IUnknown Methods "Inherited Methods" */
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IDirectPlayLobby Methods */
+ STDMETHOD(Connect) (THIS_ DWORD, LPDIRECTPLAY2 *, IUnknown *) PURE;
+ STDMETHOD(CreateAddress) (THIS_ REFGUID, REFGUID, LPCVOID, DWORD, LPVOID, LPDWORD) PURE;
+ STDMETHOD(EnumAddress) (THIS_ LPDPENUMADDRESSCALLBACK, LPCVOID, DWORD, LPVOID) PURE;
+ STDMETHOD(EnumAddressTypes) (THIS_ LPDPLENUMADDRESSTYPESCALLBACK, REFGUID, LPVOID, DWORD) PURE;
+ STDMETHOD(EnumLocalApplications)(THIS_ LPDPLENUMLOCALAPPLICATIONSCALLBACK, LPVOID, DWORD) PURE;
+ STDMETHOD(GetConnectionSettings)(THIS_ DWORD, LPVOID, LPDWORD) PURE;
+ STDMETHOD(ReceiveLobbyMessage) (THIS_ DWORD, DWORD, LPDWORD, LPVOID, LPDWORD) PURE;
+ STDMETHOD(RunApplication) (THIS_ DWORD, LPDWORD, LPDPLCONNECTION, HANDLE32) PURE;
+ STDMETHOD(SendLobbyMessage) (THIS_ DWORD, DWORD, LPVOID, DWORD) PURE;
+ STDMETHOD(SetConnectionSettings)(THIS_ DWORD, DWORD, LPDPLCONNECTION) PURE;
STDMETHOD(SetLobbyMessageEvent) (THIS_ DWORD, DWORD, HANDLE32) PURE;
/* IDirectPlayLobby2 Methods */
STDMETHOD(CreateCompoundAddress)(THIS_ LPCDPCOMPOUNDADDRESSELEMENT, DWORD, LPVOID, LPDWORD) PURE;
} DIRECTPLAYLOBBY2_VTABLE, *LPDIRECTPLAYLOBBY2_VTABLE;
+#undef THIS
-/* Is this right? How does one know? */
-struct IDirectPlayLobby2 {
- LPDIRECTPLAYLOBBY2_VTABLE lpvtbl;
- DWORD ref;
-};
+/**********************************************************************************
+ *
+ * Macros for a nicer interface to DirectPlayLobby
+ *
+ **********************************************************************************/
+
+/* COM Interface */
+
+#define IDirectPlayLobby_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlayLobby_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectPlayLobby_Release(p) (p)->lpVtbl->Release(p)
+
+#define IDirectPlayLobby2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
+#define IDirectPlayLobby2_AddRef(p) (p)->lpVtbl->AddRef(p)
+#define IDirectPlayLobby2_Release(p) (p)->lpVtbl->Release(p)
+
+/* Direct Play Lobby 1 */
+
+#define IDirectPlayLobby_Connect(p,a,b,c) (p)->lpVtbl->Connect(p,a,b,c)
+#define IDirectPlayLobby_CreateAddress(p,a,b,c,d,e,f) (p)->lpVtbl->CreateAddress(p,a,b,c,d,e,f)
+#define IDirectPlayLobby_EnumAddress(p,a,b,c,d) (p)->lpVtbl->EnumAddress(p,a,b,c,d)
+#define IDirectPlayLobby_EnumAddressTypes(p,a,b,c,d) (p)->lpVtbl->EnumAddressTypes(p,a,b,c,d)
+#define IDirectPlayLobby_EnumLocalApplications(p,a,b,c) (p)->lpVtbl->EnumLocalApplications(p,a,b,c)
+#define IDirectPlayLobby_GetConnectionSettings(p,a,b,c) (p)->lpVtbl->GetConnectionSettings(p,a,b,c)
+#define IDirectPlayLobby_ReceiveLobbyMessage(p,a,b,c,d,e) (p)->lpVtbl->ReceiveLobbyMessage(p,a,b,c,d,e)
+#define IDirectPlayLobby_RunApplication(p,a,b,c,d) (p)->lpVtbl->RunApplication(p,a,b,c,d)
+#define IDirectPlayLobby_SendLobbyMessage(p,a,b,c,d) (p)->lpVtbl->SendLobbyMessage(p,a,b,c,d)
+#define IDirectPlayLobby_SetConnectionSettings(p,a,b,c) (p)->lpVtbl->SetConnectionSettings(p,a,b,c)
+#define IDirectPlayLobby_SetLobbyMessageEvent(p,a,b,c) (p)->lpVtbl->SetLobbyMessageEvent(p,a,b,c)
+
+#define IDirectPlayLobby2_Connect(p,a,b,c) (p)->lpVtbl->Connect(p,a,b,c)
+#define IDirectPlayLobby2_CreateAddress(p,a,b,c,d,e,f) (p)->lpVtbl->CreateAddress(p,a,b,c,d,e,f)
+#define IDirectPlayLobby2_EnumAddress(p,a,b,c,d) (p)->lpVtbl->EnumAddress(p,a,b,c,d)
+#define IDirectPlayLobby2_EnumAddressTypes(p,a,b,c,d) (p)->lpVtbl->EnumAddressTypes(p,a,b,c,d)
+#define IDirectPlayLobby2_EnumLocalApplications(p,a,b,c) (p)->lpVtbl->EnumLocalApplications(p,a,b,c)
+#define IDirectPlayLobby2_GetConnectionSettings(p,a,b,c) (p)->lpVtbl->GetConnectionSettings(p,a,b,c)
+#define IDirectPlayLobby2_ReceiveLobbyMessage(p,a,b,c,d,e) (p)->lpVtbl->ReceiveLobbyMessage(p,a,b,c,d,e)
+#define IDirectPlayLobby2_RunApplication(p,a,b,c,d) (p)->lpVtbl->RunApplication(p,a,b,c,d)
+#define IDirectPlayLobby2_SendLobbyMessage(p,a,b,c,d) (p)->lpVtbl->SendLobbyMessage(p,a,b,c,d)
+#define IDirectPlayLobby2_SetConnectionSettings(p,a,b,c) (p)->lpVtbl->SetConnectionSettings(p,a,b,c)
+#define IDirectPlayLobby2_SetLobbyMessageEvent(p,a,b,c) (p)->lpVtbl->SetLobbyMessageEvent(p,a,b,c)
+
+
+/* Direct Play Lobby 2 */
+
+#define IDirectPlayLobby2_CreateCompoundAddress(p,a,b,c,d) (p)->lpVtbl->CreateCompoundAddress(p,a,b,c,d)
#pragma pack(4)
diff --git a/include/file.h b/include/file.h
index eb54708..b8fdff4 100644
--- a/include/file.h
+++ b/include/file.h
@@ -47,6 +47,8 @@
(((handle)==0) ? GetStdHandle(STD_INPUT_HANDLE) : \
((handle)==1) ? GetStdHandle(STD_OUTPUT_HANDLE) : \
((handle)==2) ? GetStdHandle(STD_ERROR_HANDLE) : \
+ ((handle)==3) ? GetStdHandle(STD_ERROR_HANDLE) : \
+ ((handle)==4) ? GetStdHandle(STD_ERROR_HANDLE) : \
((handle)>=0x400) ? handle : \
(handle)-5)
diff --git a/include/global.h b/include/global.h
index 775f31e..06074ee 100644
--- a/include/global.h
+++ b/include/global.h
@@ -22,6 +22,7 @@
BOOL16 is32Bit, BOOL16 isReadOnly,
SHMDATA *shmdata);
extern BOOL16 GLOBAL_FreeBlock( HGLOBAL16 handle );
+extern BOOL16 GLOBAL_MoveBlock( HGLOBAL16 handle, const void *ptr, DWORD size );
extern HGLOBAL16 GLOBAL_Alloc( WORD flags, DWORD size, HGLOBAL16 hOwner,
BOOL16 isCode, BOOL16 is32Bit,
BOOL16 isReadOnly );
diff --git a/include/header.h b/include/header.h
index 298f67b..0ab962a 100644
--- a/include/header.h
+++ b/include/header.h
@@ -10,11 +10,9 @@
typedef struct
{
- UINT32 mask;
INT32 cxy;
HBITMAP32 hbm;
LPSTR pszText;
- INT32 cchTextMax;
INT32 fmt;
LPARAM lParam;
INT32 iImage;
diff --git a/include/imm.h b/include/imm.h
index 5b40a6b..31ee343 100644
--- a/include/imm.h
+++ b/include/imm.h
@@ -5,8 +5,10 @@
#ifndef __WINE_IMM_H
#define __WINE_IMM_H
-typedef DWORD HIMC32;
-typedef DWORD HIMCC32;
+#include "wintypes.h"
+
+typedef HANDLE32 HIMC32;
+typedef HANDLE32 HIMCC32;
typedef HKL32 *LPHKL32;
diff --git a/include/k32obj.h b/include/k32obj.h
index 0e1dad3..b0e8633 100644
--- a/include/k32obj.h
+++ b/include/k32obj.h
@@ -62,8 +62,8 @@
extern BOOL32 K32OBJ_IsValid( K32OBJ *ptr, K32OBJ_TYPE type );
extern BOOL32 K32OBJ_AddName( K32OBJ *obj, LPCSTR name );
extern K32OBJ *K32OBJ_Create( K32OBJ_TYPE type, DWORD size, LPCSTR name,
- DWORD access, SECURITY_ATTRIBUTES *sa,
- HANDLE32 *handle );
+ int server_handle, DWORD access,
+ SECURITY_ATTRIBUTES *sa, HANDLE32 *handle );
extern K32OBJ *K32OBJ_FindName( LPCSTR name );
extern K32OBJ *K32OBJ_FindNameType( LPCSTR name, K32OBJ_TYPE type );
diff --git a/include/listview.h b/include/listview.h
index 10795e7..869c798 100644
--- a/include/listview.h
+++ b/include/listview.h
@@ -16,23 +16,26 @@
LPARAM lParam;
INT32 iIndent;
- HDSA hdsaItem;
} LISTVIEW_ITEM;
typedef struct tagLISTVIEW_INFO
{
COLORREF clrBk;
+ COLORREF clrText;
+ COLORREF clrTextBk;
HIMAGELIST himlNormal;
HIMAGELIST himlSmall;
HIMAGELIST himlState;
INT32 nItemCount;
+ INT32 nColumnCount;
HWND32 hwndHeader;
HFONT32 hDefaultFont;
HFONT32 hFont;
RECT32 rcList; /* "client" area of the list (without header) */
+ BOOL32 bFocus;
- HDSA hdsaItems;
+ HDPA hdpaItems;
} LISTVIEW_INFO;
diff --git a/include/miscemu.h b/include/miscemu.h
index 9c2b26a..a9cb741 100644
--- a/include/miscemu.h
+++ b/include/miscemu.h
@@ -30,8 +30,12 @@
extern UINT32 DOSMEM_MapLinearToDos(LPVOID); /* linear Wine to DOS */
/* msdos/interrupts.c */
-extern FARPROC16 INT_GetHandler( BYTE intnum );
-extern void INT_SetHandler( BYTE intnum, FARPROC16 handler );
+extern FARPROC16 INT_GetPMHandler( BYTE intnum );
+extern void INT_SetPMHandler( BYTE intnum, FARPROC16 handler );
+extern FARPROC16 INT_GetRMHandler( BYTE intnum );
+extern void INT_SetRMHandler( BYTE intnum, FARPROC16 handler );
+extern FARPROC16 INT_CtxGetHandler( CONTEXT *context, BYTE intnum );
+extern void INT_CtxSetHandler( CONTEXT *context, BYTE intnum, FARPROC16 handler );
extern int INT_RealModeInterrupt( BYTE intnum, PCONTEXT context );
/* msdos/ioports.c */
@@ -39,6 +43,9 @@
extern DWORD IO_inport( int port, int count );
extern void IO_outport( int port, int count, DWORD value );
+/* msdos/int10.c */
+extern void WINAPI INT_Int10Handler(CONTEXT*);
+
/* msdos/int1a.c */
extern DWORD INT1A_GetTicksSinceMidnight(void);
extern void WINAPI INT_Int1aHandler(CONTEXT*);
@@ -46,9 +53,15 @@
/* msdos/int20.c */
extern void WINAPI INT_Int20Handler(CONTEXT*);
+/* msdos/int25.c */
+extern void WINAPI INT_Int25Handler(CONTEXT*);
+
/* msdos/int2f.c */
extern void WINAPI INT_Int2fHandler(CONTEXT*);
+/* msdos/int31.c */
+extern void WINAPI INT_Int31Handler(CONTEXT*);
+
/* loader/signal.c */
extern BOOL32 SIGNAL_Init(void);
extern void SIGNAL_SetHandler( int sig, void (*func)(), int flags );
diff --git a/include/mmsystem.h b/include/mmsystem.h
index 1e10215..bf34f17 100644
--- a/include/mmsystem.h
+++ b/include/mmsystem.h
@@ -2759,6 +2759,7 @@
HMIDI16 hMidi;
DWORD dwCallback;
DWORD dwInstance;
+ UINT16 wDevID;
} MIDIOPENDESC, *LPMIDIOPENDESC;
typedef struct {
diff --git a/include/module.h b/include/module.h
index bc0e25f..96ca217 100644
--- a/include/module.h
+++ b/include/module.h
@@ -63,7 +63,8 @@
WORD size; /* Segment size on disk */
WORD flags; /* Segment flags */
WORD minsize; /* Min. size of segment in memory */
- HANDLE16 selector; /* Selector of segment in memory */
+ HANDLE16 hSeg; /* Selector or handle (selector - 1) */
+ /* of segment in memory */
} SEGTABLEENTRY;
@@ -143,6 +144,7 @@
extern HMODULE32 MODULE_CreateDummyModule( const OFSTRUCT *ofs );
extern FARPROC16 MODULE_GetWndProcEntry16( const char *name );
extern FARPROC16 WINAPI WIN32_GetProcAddress16( HMODULE32 hmodule, LPCSTR name );
+extern SEGPTR WINAPI HasGPHandler( SEGPTR address );
/* loader/ne/module.c */
extern NE_MODULE *NE_GetPtr( HMODULE16 hModule );
diff --git a/include/multimedia.h b/include/multimedia.h
index d2dcc9c..843228d 100644
--- a/include/multimedia.h
+++ b/include/multimedia.h
@@ -29,7 +29,11 @@
#include <sys/errno.h>
+#ifdef HAVE_OSS
+#define MIDI_SEQ "/dev/sequencer"
+#else
#define MIDI_DEV "/dev/midi"
+#endif
#ifdef SOUND_VERSION
#define IOCTL(a,b,c) ioctl(a,b,&c)
@@ -38,40 +42,53 @@
#endif
typedef struct {
+#ifndef HAVE_OSS
int unixdev;
+#endif
int state;
DWORD bufsize;
- MIDIOPENDESC midiDesc;
+ LPMIDIOPENDESC midiDesc;
WORD wFlags;
LPMIDIHDR lpQueueHdr;
DWORD dwTotalPlayed;
+#ifdef HAVE_OSS
+ unsigned char incoming[3];
+ unsigned char incPrev;
+ char incLen;
+ DWORD startTime;
+#endif
} LINUX_MIDIIN;
typedef struct {
+#ifndef HAVE_OSS
int unixdev;
+#endif
int state;
DWORD bufsize;
- MIDIOPENDESC midiDesc;
+ LPMIDIOPENDESC midiDesc;
WORD wFlags;
LPMIDIHDR lpQueueHdr;
DWORD dwTotalPlayed;
+#ifdef HAVE_OSS
+ void* lpExtra; /* according to port type (MIDI, FM...), extra data when needed */
+#endif
} LINUX_MIDIOUT;
typedef struct {
- int nUseCount; /* Incremented for each shared open */
- BOOL16 fShareable; /* TRUE if first open was shareable */
- WORD wNotifyDeviceID; /* MCI device ID with a pending notification */
- HANDLE16 hCallback; /* Callback handle for pending notification */
- HMMIO16 hFile; /* mmio file handle open as Element */
- DWORD dwBeginData;
- DWORD dwTotalLen;
- WORD wFormat;
- WORD nTracks;
- WORD nTempo;
+ int nUseCount; /* Incremented for each shared open */
+ BOOL16 fShareable; /* TRUE if first open was shareable */
+ WORD wNotifyDeviceID; /* MCI device ID with a pending notification */
+ HANDLE16 hCallback; /* Callback handle for pending notification */
+ HMMIO16 hFile; /* mmio file handle open as Element */
+ DWORD dwBeginData;
+ DWORD dwTotalLen;
+ WORD wFormat;
+ WORD nTracks;
+ WORD nTempo;
MCI_OPEN_PARMS16 openParms;
/* MIDIHDR MidiHdr; */
HLOCAL16 hMidiHdr;
- WORD dwStatus;
+ WORD dwStatus;
} LINUX_MCIMIDI;
/* function prototypes */
diff --git a/include/multimon.h b/include/multimon.h
new file mode 100644
index 0000000..82f26e6
--- /dev/null
+++ b/include/multimon.h
@@ -0,0 +1,65 @@
+/*
+ * Multimonitor APIs
+ *
+ * Copyright 1998 Turchanov Sergey
+ */
+
+#ifndef __WINE_MULTIMON_H
+#define __WINE_MULTIMON_H
+
+#define MONITOR_DEFAULTTONULL 0x00000000
+#define MONITOR_DEFAULTTOPRIMARY 0x00000001
+#define MONITOR_DEFAULTTONEAREST 0x00000002
+
+#define HMONITOR HANDLE32
+
+HMONITOR WINAPI MonitorFromPoint(POINT32 pt, DWORD dwFlags);
+
+HMONITOR WINAPI MonitorFromRect(LPRECT32 lprc, DWORD dwFlags);
+
+HMONITOR WINAPI MonitorFromWindow(HWND32 hwnd, DWORD dwFlags);
+
+#define MONITORINFOF_PRIMARY 0x00000001
+
+#ifndef CCHDEVICENAME
+#define CCHDEVICENAME 32
+#endif
+
+typedef struct tagMONITORINFO
+{
+ DWORD cbSize;
+ RECT32 rcMonitor;
+ RECT32 rcWork;
+ DWORD dwFlags;
+} MONITORINFO, *LPMONITORINFO;
+
+typedef struct tagMONITORINFOEX32A
+{
+ MONITORINFO dummy;
+ CHAR szDevice[CCHDEVICENAME];
+} MONITORINFOEX32A, *LPMONITORINFOEX32A;
+
+typedef struct tagMONITORINFOEX32W
+{
+ MONITORINFO dummy;
+ WCHAR szDevice[CCHDEVICENAME];
+} MONITORINFOEX32W, *LPMONITORINFOEX32W;
+
+DECL_WINELIB_TYPE_AW (MONITOINFOEX)
+DECL_WINELIB_TYPE_AW (LPMONITORINFOEXW)
+
+BOOL32 WINAPI GetMonitorInfo32A(HMONITOR hMonitor, LPMONITORINFO lpmi);
+BOOL32 WINAPI GetMonitorInfo32W(HMONITOR hMonitor, LPMONITORINFO lpmi);
+
+#define GetMonitorInfo WINELIB_NAME_AW(GetMonitorInfo)
+
+typedef BOOL32 (CALLBACK* MONITORENUMPROC)(HMONITOR, HDC32, LPRECT32, LPARAM);
+
+BOOL32 WINAPI EnumDisplayMonitors(
+ HDC32 hdc,
+ LPRECT32 lprcClip,
+ MONITORENUMPROC lpfnEnum,
+ LPARAM dwData);
+
+#endif __WINE_MULTIMON_H
+
diff --git a/include/oledlg.h b/include/oledlg.h
index 1b937fc..1b7ce5b 100644
--- a/include/oledlg.h
+++ b/include/oledlg.h
@@ -10,32 +10,32 @@
#define OLEUI_OK 1 /* OK button pressed */
#define OLEUI_CANCEL 2 /* Cancel button pressed */
-typedef void *LPOLEUIINSERTOBJECTA; /* FIXME: stub */
-typedef void *LPOLEUIINSERTOBJECTW; /* FIXME: stub */
+typedef void *LPOLEUIINSERTOBJECT32A; /* FIXME: stub */
+typedef void *LPOLEUIINSERTOBJECT32W; /* FIXME: stub */
-typedef void *LPOLEUIPASTESPECIALA; /* FIXME: stub */
-typedef void *LPOLEUIPASTESPECIALW; /* FIXME: stub */
+typedef void *LPOLEUIPASTESPECIAL32A; /* FIXME: stub */
+typedef void *LPOLEUIPASTESPECIAL32W; /* FIXME: stub */
-typedef void *LPOLEUIEDITLINKSA; /* FIXME: stub */
-typedef void *LPOLEUIEDITLINKSW; /* FIXME: stub */
+typedef void *LPOLEUIEDITLINKS32A; /* FIXME: stub */
+typedef void *LPOLEUIEDITLINKS32W; /* FIXME: stub */
-typedef void *LPOLEUICHANGEICONA; /* FIXME: stub */
-typedef void *LPOLEUICHANGEICONW; /* FIXME: stub */
+typedef void *LPOLEUICHANGEICON32A; /* FIXME: stub */
+typedef void *LPOLEUICHANGEICON32W; /* FIXME: stub */
-typedef void *LPOLEUICONVERTA; /* FIXME: stub */
-typedef void *LPOLEUICONVERTW; /* FIXME: stub */
+typedef void *LPOLEUICONVERT32A; /* FIXME: stub */
+typedef void *LPOLEUICONVERT32W; /* FIXME: stub */
-typedef void *LPOLEUIBUSYA; /* FIXME: stub */
-typedef void *LPOLEUIBUSYW; /* FIXME: stub */
+typedef void *LPOLEUIBUSY32A; /* FIXME: stub */
+typedef void *LPOLEUIBUSY32W; /* FIXME: stub */
-typedef void *LPOLEUILINKCONTAINERA; /* FIXME: stub */
-typedef void *LPOLEUILINKCONTAINERW; /* FIXME: stub */
+typedef void *LPOLEUILINKCONTAINER32A; /* FIXME: stub */
+typedef void *LPOLEUILINKCONTAINER32W; /* FIXME: stub */
-typedef void *LPOLEUIOBJECTPROPSA; /* FIXME: stub */
-typedef void *LPOLEUIOBJECTPROPSW; /* FIXME: stub */
+typedef void *LPOLEUIOBJECTPROPS32A; /* FIXME: stub */
+typedef void *LPOLEUIOBJECTPROPS32W; /* FIXME: stub */
-typedef void *LPOLEUICHANGESOURCEA; /* FIXME: stub */
-typedef void *LPOLEUICHANGESOURCEW; /* FIXME: stub */
+typedef void *LPOLEUICHANGESOURCE32A; /* FIXME: stub */
+typedef void *LPOLEUICHANGESOURCE32W; /* FIXME: stub */
#endif /* __WINE_OLEDLG_H */
diff --git a/include/options.h b/include/options.h
index 2b9fceb..8f047ab 100644
--- a/include/options.h
+++ b/include/options.h
@@ -10,6 +10,10 @@
#include "wintypes.h"
/* Supported languages */
+ /* When adding a new language look at ole/ole2nls.c
+ * for the LANG_Xx name to choose, and uncomment there
+ * the proper case line
+ */
typedef enum
{
LANG_En, /* English */
@@ -19,14 +23,14 @@
LANG_Fr, /* French */
LANG_Fi, /* Finnish */
LANG_Da, /* Danish */
- LANG_Cz, /* Czech */
+ LANG_Cs, /* Czech */
LANG_Eo, /* Esperanto */
LANG_It, /* Italian */
LANG_Ko, /* Korean */
LANG_Hu, /* Hungarian */
LANG_Pl, /* Polish */
- LANG_Po, /* Portuguese */
- LANG_Sw, /* Swedish */
+ LANG_Pt, /* Portuguese */
+ LANG_Sv, /* Swedish */
LANG_Ca /* Catalan */
} WINE_LANGUAGE;
@@ -64,6 +68,7 @@
WINE_LANGUAGE language; /* Current language */
int managed; /* Managed windows */
int perfectGraphics; /* Favor correctness over speed for graphics */
+ char * configFileName; /* Command line config file */
};
extern struct options Options;
@@ -71,6 +76,7 @@
/* Profile functions */
extern int PROFILE_LoadWineIni(void);
+extern void PROFILE_UsageWineIni(void);
extern int PROFILE_GetWineIniString( const char *section, const char *key_name,
const char *def, char *buffer, int len );
extern int PROFILE_GetWineIniInt( const char *section, const char *key_name,
diff --git a/include/psapi.h b/include/psapi.h
new file mode 100644
index 0000000..fd4ff94
--- /dev/null
+++ b/include/psapi.h
@@ -0,0 +1,33 @@
+/*
+ * psapi.h - Declarations for PSAPI
+ */
+
+#ifndef __WINE_PSAPI_H
+#define __WINE_PSAPI_H
+
+typedef struct _MODULEINFO32 {
+ LPVOID lpBaseOfDll;
+ DWORD SizeOfImage;
+ LPVOID EntryPoint;
+} MODULEINFO32, *LPMODULEINFO32;
+
+typedef struct _PROCESS_MEMORY_COUNTERS32 {
+ DWORD cb;
+ DWORD PageFaultCount;
+ DWORD PeakWorkingSetSize;
+ DWORD WorkingSetSize;
+ DWORD QuotaPeakPagedPoolUsage;
+ DWORD QuotaPagedPoolUsage;
+ DWORD QuotaPeakNonPagedPoolUsage;
+ DWORD QuotaNonPagedPoolUsage;
+ DWORD PagefileUsage;
+ DWORD PeakPagefileUsage;
+} PROCESS_MEMORY_COUNTERS32;
+typedef PROCESS_MEMORY_COUNTERS32 *PPROCESS_MEMORY_COUNTERS32;
+
+typedef struct _PSAPI_WS_WATCH_INFORMATION32 {
+ LPVOID FaultingPc;
+ LPVOID FaultingVa;
+} PSAPI_WS_WATCH_INFORMATION32, *PPSAPI_WS_WATCH_INFORMATION32;
+
+#endif /* __WINE_PSAPI_H */
diff --git a/include/server.h b/include/server.h
index 30e09ac..e93cea7 100644
--- a/include/server.h
+++ b/include/server.h
@@ -152,9 +152,105 @@
#define SELECT_ALERTABLE 4
#define SELECT_TIMEOUT 8
+
+/* Create an event */
+struct create_event_request
+{
+ int manual_reset; /* manual reset event */
+ int initial_state; /* initial state of the event */
+ int inherit; /* inherit flag */
+ /* char name[] */
+};
+struct create_event_reply
+{
+ int handle; /* handle to the event */
+};
+
+/* Event operation */
+struct event_op_request
+{
+ int handle; /* handle to event */
+ int op; /* event operation (see below) */
+};
+enum event_op { PULSE_EVENT, SET_EVENT, RESET_EVENT };
+
+
+/* Create a mutex */
+struct create_mutex_request
+{
+ int owned; /* initially owned? */
+ int inherit; /* inherit flag */
+ /* char name[] */
+};
+struct create_mutex_reply
+{
+ int handle; /* handle to the mutex */
+};
+
+
+/* Release a mutex */
+struct release_mutex_request
+{
+ int handle; /* handle to the mutex */
+};
+
+
+/* Create a semaphore */
+struct create_semaphore_request
+{
+ unsigned int initial; /* initial count */
+ unsigned int max; /* maximum count */
+ int inherit; /* inherit flag */
+ /* char name[] */
+};
+struct create_semaphore_reply
+{
+ int handle; /* handle to the semaphore */
+};
+
+
+/* Release a semaphore */
+struct release_semaphore_request
+{
+ int handle; /* handle to the semaphore */
+ unsigned int count; /* count to add to semaphore */
+};
+struct release_semaphore_reply
+{
+ unsigned int prev_count; /* previous semaphore count */
+};
+
+/* Open a named object (event, mutex, semaphore) */
+struct open_named_obj_request
+{
+ int type; /* object type (see below) */
+ unsigned int access; /* wanted access rights */
+ int inherit; /* inherit flag */
+ /* char name[] */
+};
+enum open_named_obj { OPEN_EVENT, OPEN_MUTEX, OPEN_SEMAPHORE };
+
+struct open_named_obj_reply
+{
+ int handle; /* handle to the object */
+};
+
+
/* client-side functions */
#ifndef __WINE_SERVER__
+
+/* client communication functions */
+enum request;
+#define CHECK_LEN(len,wanted) \
+ if ((len) == (wanted)) ; \
+ else CLIENT_ProtocolError( __FUNCTION__ ": len %d != %d\n", (len), (wanted) );
+extern void CLIENT_ProtocolError( const char *err, ... );
+extern void CLIENT_SendRequest( enum request req, int pass_fd,
+ int n, ... /* arg_1, len_1, etc. */ );
+extern unsigned int CLIENT_WaitReply( int *len, int *passed_fd,
+ int n, ... /* arg_1, len_1, etc. */ );
+
struct _THDB;
extern int CLIENT_NewThread( struct _THDB *thdb, int *thandle, int *phandle );
extern int CLIENT_InitThread(void);
diff --git a/include/server/object.h b/include/server/object.h
index 5268061..a968dda 100644
--- a/include/server/object.h
+++ b/include/server/object.h
@@ -12,6 +12,7 @@
#endif
#include <sys/time.h>
+#include "server.h"
#include "server/request.h"
/* kernel objects */
@@ -37,12 +38,16 @@
struct object_name *name;
};
-extern void init_object( struct object *obj, const struct object_ops *ops,
- const char *name );
+extern void *mem_alloc( size_t size ); /* malloc wrapper */
+extern struct object *create_named_object( const char *name, const struct object_ops *ops,
+ size_t size );
+extern int init_object( struct object *obj, const struct object_ops *ops,
+ const char *name );
/* grab/release_object can take any pointer, but you better make sure */
/* that the thing pointed to starts with a struct object... */
extern struct object *grab_object( void *obj );
extern void release_object( void *obj );
+extern struct object *find_object( const char *name );
/* request handlers */
@@ -97,6 +102,31 @@
unsigned int access, const struct object_ops *ops );
extern int duplicate_handle( struct process *src, int src_handle, struct process *dst,
int dst_handle, unsigned int access, int inherit, int options );
+extern int open_object( const char *name, const struct object_ops *ops,
+ unsigned int access, int inherit );
+
+/* event functions */
+
+extern struct object *create_event( const char *name, int manual_reset, int initial_state );
+extern int open_event( unsigned int access, int inherit, const char *name );
+extern int pulse_event( int handle );
+extern int set_event( int handle );
+extern int reset_event( int handle );
+
+
+/* mutex functions */
+
+extern struct object *create_mutex( const char *name, int owned );
+extern int open_mutex( unsigned int access, int inherit, const char *name );
+extern int release_mutex( int handle );
+extern void abandon_mutexes( struct thread *thread );
+
+
+/* semaphore functions */
+
+extern struct object *create_semaphore( const char *name, unsigned int initial, unsigned int max );
+extern int open_semaphore( unsigned int access, int inherit, const char *name );
+extern int release_semaphore( int handle, unsigned int count, unsigned int *prev_count );
extern int debug_level;
diff --git a/include/server/request.h b/include/server/request.h
index b882ebc..2dc80a5 100644
--- a/include/server/request.h
+++ b/include/server/request.h
@@ -15,6 +15,13 @@
REQ_DUP_HANDLE,
REQ_OPEN_PROCESS,
REQ_SELECT,
+ REQ_CREATE_EVENT,
+ REQ_EVENT_OP,
+ REQ_CREATE_MUTEX,
+ REQ_RELEASE_MUTEX,
+ REQ_CREATE_SEMAPHORE,
+ REQ_RELEASE_SEMAPHORE,
+ REQ_OPEN_NAMED_OBJ,
REQ_NB_REQUESTS
};
@@ -33,6 +40,13 @@
DECL_HANDLER(dup_handle);
DECL_HANDLER(open_process);
DECL_HANDLER(select);
+DECL_HANDLER(create_event);
+DECL_HANDLER(event_op);
+DECL_HANDLER(create_mutex);
+DECL_HANDLER(release_mutex);
+DECL_HANDLER(create_semaphore);
+DECL_HANDLER(release_semaphore);
+DECL_HANDLER(open_named_obj);
static const struct handler {
void (*handler)();
@@ -48,6 +62,13 @@
{ (void(*)())req_dup_handle, sizeof(struct dup_handle_request) },
{ (void(*)())req_open_process, sizeof(struct open_process_request) },
{ (void(*)())req_select, sizeof(struct select_request) },
+ { (void(*)())req_create_event, sizeof(struct create_event_request) },
+ { (void(*)())req_event_op, sizeof(struct event_op_request) },
+ { (void(*)())req_create_mutex, sizeof(struct create_mutex_request) },
+ { (void(*)())req_release_mutex, sizeof(struct release_mutex_request) },
+ { (void(*)())req_create_semaphore, sizeof(struct create_semaphore_request) },
+ { (void(*)())req_release_semaphore, sizeof(struct release_semaphore_request) },
+ { (void(*)())req_open_named_obj, sizeof(struct open_named_obj_request) },
};
#endif /* WANT_REQUEST_HANDLERS */
diff --git a/include/server/thread.h b/include/server/thread.h
index 7f7df8d..c9c373a 100644
--- a/include/server/thread.h
+++ b/include/server/thread.h
@@ -17,6 +17,7 @@
struct process;
struct thread_wait;
+struct mutex;
enum run_state { STARTING, RUNNING, TERMINATED };
@@ -28,6 +29,7 @@
struct thread *proc_next; /* per-process thread list */
struct thread *proc_prev;
struct process *process;
+ struct mutex *mutex; /* list of currently owned mutexes */
struct thread_wait *wait; /* current wait condition if sleeping */
int error; /* current error code */
enum run_state state; /* running state */
@@ -57,6 +59,7 @@
int flags, int timeout );
extern void wake_up( struct object *obj, int max );
+#define GET_ERROR() (current->error)
#define SET_ERROR(err) (current->error = (err))
#define CLEAR_ERROR() (current->error = 0)
diff --git a/include/shell.h b/include/shell.h
index 3475ca4..f4fd676 100644
--- a/include/shell.h
+++ b/include/shell.h
@@ -224,7 +224,7 @@
* string and path functions
*/
LPSTR WINAPI PathAddBackslash(LPSTR path);
-LPSTR WINAPI PathCombine(LPSTR target,LPSTR x1,LPSTR x2);
+LPSTR WINAPI PathCombine(LPSTR szDest, LPCSTR lpszDir, LPCSTR lpszFile);
LPSTR WINAPI PathRemoveBlanks(LPSTR str);
LPSTR WINAPI PathFindFilename(LPSTR fn);
/****************************************************************************
diff --git a/include/shlobj.h b/include/shlobj.h
index fd4599d..050f54a 100644
--- a/include/shlobj.h
+++ b/include/shlobj.h
@@ -30,15 +30,40 @@
typedef struct tagSHELLEXTINIT *LPSHELLEXTINIT,IShellExtInit;
typedef struct tagENUMIDLIST *LPENUMIDLIST, IEnumIDList;
typedef struct tagSHELLFOLDER *LPSHELLFOLDER, IShellFolder;
-typedef struct tagSHELLVIEW *LPSHELLVIEW, IShellView;
+typedef struct tagSHELLVIEW *LPSHELLVIEW, IShellView;
typedef struct tagSHELLBROWSER *LPSHELLBROWSER,IShellBrowser;
-
-typedef struct IDataObject IDataObject, *LPDATAOBJECT;
-
+typedef struct tagDATAOBJECT *LPDATAOBJECT, IDataObject;
+typedef struct tagSHELLICON *LPSHELLICON, IShellIcon;
+typedef struct tagDOCKINGWINDOWFRAME *LPDOCKINGWINDOWFRAME, IDockingWindowFrame;
+typedef struct tagSERVICEPROVIDER *LPSERVICEPROVIDER, IServiceProvider;
+typedef struct tagCOMMDLGBROWSER *LPCOMMDLGBROWSER, ICommDlgBrowser;
+typedef struct tagENUMFORMATETC *LPENUMFORMATETC, IEnumFORMATETC;
+
+typedef struct IAdviseSink IAdviseSink, *LPIADVISESINK;
+typedef struct IEnumSTATDATA IEnumSTATDATA, *LPENUMSTATDATA;
/****************************************************************************
* SHELL ID
*/
-/* shell32 classids */
+/* strange Objects */
+DEFINE_SHLGUID(IID_IEnumUnknown, 0x00000100L, 0, 0);
+DEFINE_SHLGUID(IID_IEnumString, 0x00000101L, 0, 0);
+DEFINE_SHLGUID(IID_IEnumMoniker, 0x00000102L, 0, 0);
+DEFINE_SHLGUID(IID_IEnumFORMATETC, 0x00000103L, 0, 0);
+DEFINE_SHLGUID(IID_IEnumOLEVERB, 0x00000104L, 0, 0);
+DEFINE_SHLGUID(IID_IEnumSTATDATA, 0x00000105L, 0, 0);
+
+DEFINE_SHLGUID(IID_IPersistStream, 0x00000109L, 0, 0);
+DEFINE_SHLGUID(IID_IPersistStorage, 0x0000010AL, 0, 0);
+DEFINE_SHLGUID(IID_IPersistFile, 0x0000010BL, 0, 0);
+DEFINE_SHLGUID(IID_IPersist, 0x0000010CL, 0, 0);
+DEFINE_SHLGUID(IID_IViewObject, 0x0000010DL, 0, 0);
+DEFINE_SHLGUID(IID_IDataObject, 0x0000010EL, 0, 0);
+
+DEFINE_GUID (IID_IServiceProvider, 0x6D5140C1L, 0x7436, 0x11CE, 0x80, 0x34, 0x00, 0xAA, 0x00, 0x60, 0x09, 0xFA);
+DEFINE_GUID (IID_IDockingWindow, 0x012dd920L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
+DEFINE_GUID (IID_IDockingWindowSite, 0x2A342FC2L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
+DEFINE_GUID (IID_IDockingWindowFrame, 0x47D2657AL, 0x7B27, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
+
DEFINE_SHLGUID(CLSID_ShellDesktop, 0x00021400L, 0, 0);
DEFINE_SHLGUID(CLSID_ShellLink, 0x00021401L, 0, 0);
/* shell32 formatids */
@@ -51,6 +76,7 @@
/* shell32interface ids */
DEFINE_SHLGUID(IID_INewShortcutHookA, 0x000214E1L, 0, 0);
DEFINE_SHLGUID(IID_IShellBrowser, 0x000214E2L, 0, 0);
+#define SID_SShellBrowser IID_IShellBrowser
DEFINE_SHLGUID(IID_IShellView, 0x000214E3L, 0, 0);
DEFINE_SHLGUID(IID_IContextMenu, 0x000214E4L, 0, 0);
DEFINE_SHLGUID(IID_IShellIcon, 0x000214E5L, 0, 0);
@@ -95,6 +121,12 @@
*/
#define THIS LPCONTEXTMENU this
+/* default menu items*/
+#define IDM_EXPLORE 0
+#define IDM_OPEN 1
+#define IDM_RENAME 2
+#define IDM_LAST IDM_RENAME
+
/* QueryContextMenu uFlags */
#define CMF_NORMAL 0x00000000
#define CMF_DEFAULTONLY 0x00000001
@@ -205,6 +237,100 @@
#undef THIS
/*****************************************************************************
+ * IData structures
+ */
+typedef struct
+{ DWORD tdSize;
+ WORD tdDriverNameOffset;
+ WORD tdDeviceNameOffset;
+ WORD tdPortNameOffset;
+ WORD tdExtDevmodeOffset;
+ BYTE tdData[ 1 ];
+} DVTARGETDEVICE32;
+
+typedef WORD CLIPFORMAT32, *LPCLIPFORMAT32;
+
+typedef struct
+{ DWORD tymed;
+ union
+ { HBITMAP32 hBitmap;
+ /*HMETAFILEPICT32 hMetaFilePict;*/
+ /*HENHMETAFILE32 hEnhMetaFile;*/
+ HGLOBAL32 hGlobal;
+ LPOLESTR32 lpszFileName;
+ IStream32 *pstm;
+ IStorage32 *pstg;
+ } u;
+ IUnknown *pUnkForRelease;
+} STGMEDIUM32;
+
+typedef struct
+{ CLIPFORMAT32 cfFormat;
+ DVTARGETDEVICE32 *ptd;
+ DWORD dwAspect;
+ LONG lindex;
+ DWORD tymed;
+} FORMATETC32, *LPFORMATETC32;
+
+/*****************************************************************************
+ * IEnumFORMATETC interface
+ */
+#define THIS LPENUMFORMATETC this
+
+typedef struct IEnumFORMATETC_VTable
+{ /* IUnknown methods */
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* IEnumFORMATETC methods */
+ STDMETHOD (Next)(THIS_ ULONG celt, FORMATETC32 *rgelt, ULONG *pceltFethed) PURE;
+ STDMETHOD (Skip)(THIS_ ULONG celt) PURE;
+ STDMETHOD (Reset)(THIS) PURE;
+ STDMETHOD (Clone)(THIS_ IEnumFORMATETC ** ppenum) PURE;
+} IEnumFORMATETC_VTable,*LPENUMFORMATETC_VTABLE;
+
+struct tagENUMFORMATETC
+{ LPENUMFORMATETC_VTABLE lpvtbl;
+ DWORD ref;
+ UINT32 posFmt;
+ UINT32 countFmt;
+ LPFORMATETC32 pFmt;
+};
+
+#undef THIS
+
+/*****************************************************************************
+ * IDataObject interface
+ */
+#define THIS LPDATAOBJECT this
+
+typedef struct IDataObject_VTable
+{ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ STDMETHOD (GetData )(THIS_ LPFORMATETC32 pformatetcIn, STGMEDIUM32 *pmedium) PURE;
+ STDMETHOD (GetDataHere)(THIS_ LPFORMATETC32 pformatetc, STGMEDIUM32 *pmedium) PURE;
+ STDMETHOD (QueryGetData)(THIS_ LPFORMATETC32 pformatetc) PURE;
+ STDMETHOD (GetCanonicalFormatEtc)(THIS_ LPFORMATETC32 pformatectIn, LPFORMATETC32 pformatetcOut) PURE;
+ STDMETHOD (SetData)(THIS_ LPFORMATETC32 pformatetc, STGMEDIUM32 *pmedium, BOOL32 fRelease) PURE;
+ STDMETHOD (EnumFormatEtc)(THIS_ DWORD dwDirection, IEnumFORMATETC **ppenumFormatEtc) PURE;
+ STDMETHOD (DAdvise )(THIS_ LPFORMATETC32 *pformatetc, DWORD advf, IAdviseSink *pAdvSink, DWORD *pdwConnection) PURE;
+ STDMETHOD (DUnadvise)(THIS_ DWORD dwConnection) PURE;
+ STDMETHOD (EnumDAdvise)(THIS_ IEnumSTATDATA **ppenumAdvise) PURE;
+} IDataObject_VTable,*LPDATAOBJECT_VTABLE;
+
+struct tagDATAOBJECT
+{ LPDATAOBJECT_VTABLE lpvtbl;
+ DWORD ref;
+};
+
+#undef THIS
+
+
+/*****************************************************************************
* IShellExtInit interface
*/
#define THIS LPSHELLEXTINIT this
@@ -402,19 +528,50 @@
};
extern LPSHELLFOLDER pdesktopfolder;
+
+/************************
+* Shellfolder API
+*/
+DWORD WINAPI SHGetDesktopFolder(LPSHELLFOLDER *);
#undef THIS
/************************************************************************
* IShellBrowser interface
*/
#define THIS LPSHELLBROWSER this
+/* targets for GetWindow/SendControlMsg */
+#define FCW_STATUS 0x0001
+#define FCW_TOOLBAR 0x0002
+#define FCW_TREE 0x0003
+#define FCW_INTERNETBAR 0x0006
+#define FCW_PROGRESS 0x0008
-#define FCW_STATUS 0x0001
-#define FCW_TOOLBAR 0x0002
-#define FCW_TREE 0x0003
-#define FCW_INTERNETBAR 0x0006
-#define FCW_PROGRESS 0x0008
+/* wFlags for BrowseObject*/
+#define SBSP_DEFBROWSER 0x0000
+#define SBSP_SAMEBROWSER 0x0001
+#define SBSP_NEWBROWSER 0x0002
+#define SBSP_DEFMODE 0x0000
+#define SBSP_OPENMODE 0x0010
+#define SBSP_EXPLOREMODE 0x0020
+
+#define SBSP_ABSOLUTE 0x0000
+#define SBSP_RELATIVE 0x1000
+#define SBSP_PARENT 0x2000
+#define SBSP_NAVIGATEBACK 0x4000
+#define SBSP_NAVIGATEFORWARD 0x8000
+
+#define SBSP_ALLOW_AUTONAVIGATE 0x10000
+
+#define SBSP_INITIATEDBYHLINKFRAME 0x80000000
+#define SBSP_REDIRECT 0x40000000
+#define SBSP_WRITENOHISTORY 0x08000000
+
+/* uFlage for SetToolbarItems */
+#define FCT_MERGE 0x0001
+#define FCT_CONFIGABLE 0x0002
+#define FCT_ADDTOEND 0x0004
+
typedef struct IShellBrowser_VTable
{ // *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
@@ -536,7 +693,7 @@
STDMETHOD(SaveViewState)(THIS) PURE;
STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST pidlItem, UINT32 uFlags) PURE;
STDMETHOD(GetItemObject)(THIS_ UINT32 uItem, REFIID riid,LPVOID *ppv) PURE;
-} IShellView_VTable,*LPSHELLVIEW_VTABLE;;
+} IShellView_VTable,*LPSHELLVIEW_VTABLE;
struct tagSHELLVIEW
{ LPSHELLVIEW_VTABLE lpvtbl;
@@ -544,6 +701,7 @@
LPITEMIDLIST mpidl;
LPSHELLFOLDER pSFParent;
LPSHELLBROWSER pShellBrowser;
+ LPCOMMDLGBROWSER pCommDlgBrowser;
HWND32 hWnd;
HWND32 hWndList;
FOLDERSETTINGS FolderSettings;
@@ -553,10 +711,37 @@
};
typedef GUID SHELLVIEWID;
-#define SV_CLASS_NAME ("ShellViewClass")
+#define SV_CLASS_NAME ("SHELLDLL_DefView")
#undef THIS
+/****************************************************************************
+ * ICommDlgBrowser interface
+ */
+#define THIS LPCOMMDLGBROWSER this
+/* for OnStateChange*/
+#define CDBOSC_SETFOCUS 0x00000000
+#define CDBOSC_KILLFOCUS 0x00000001
+#define CDBOSC_SELCHANGE 0x00000002
+#define CDBOSC_RENAME 0x00000003
+
+typedef struct ICommDlgBrowser_VTable
+{ /* IUnknown methods */
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /* ICommDlgBrowser methods */
+ STDMETHOD(OnDefaultCommand) (THIS_ LPSHELLVIEW ppshv) PURE;
+ STDMETHOD(OnStateChange) (THIS_ LPSHELLVIEW ppshv, ULONG uChange) PURE;
+ STDMETHOD(IncludeObject) (THIS_ LPSHELLVIEW ppshv, LPCITEMIDLIST pidl) PURE;
+} ICommDlgBrowser_VTable,*LPCOMMDLGBROWSER_VTABLE;
+
+struct tagCOMMDLGBROWSER
+{ LPCOMMDLGBROWSER_VTABLE lpvtbl;
+ DWORD ref;
+};
+#undef THIS
/****************************************************************************
* IShellLink interface
*/
@@ -666,7 +851,7 @@
*/
#define THIS LPSHELLICON this
-typedef struct IShellIcon IShellIcon,*LPSHELLICON;
+
typedef struct IShellIcon_VTable
{ /*** IUnknown methods ***/
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
@@ -677,24 +862,73 @@
STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST pidl, UINT32 flags, LPINT32 lpIconIndex) PURE;
} IShellIcon_VTable,*LPSHELLICON_VTABLE;
-struct IShellIcon
+struct tagSHELLICON
{ LPSHELLICON_VTABLE lpvtbl;
DWORD ref;
};
#undef THIS
+/****************************************************************************
+ * IDockingWindowFrame interface
+ */
+#define THIS LPDOCKINGWINDOWFRAME this
+#define DWFRF_NORMAL 0x0000 /* femove toolbar flags*/
+#define DWFRF_DELETECONFIGDATA 0x0001
+#define DWFAF_HIDDEN 0x0001 /* add tolbar*/
+typedef struct IDockingWindowFrame_VTable
+{ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ /*** IOleWindow methods ***/
+ STDMETHOD(GetWindow) (THIS_ HWND32 * lphwnd) PURE;
+ STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL32 fEnterMode) PURE;
+
+ /*** IDockingWindowFrame methods ***/
+ STDMETHOD(AddToolbar) (THIS_ IUnknown* punkSrc, LPCWSTR pwszItem, DWORD dwAddFlags) PURE;
+ STDMETHOD(RemoveToolbar) (THIS_ IUnknown* punkSrc, DWORD dwRemoveFlags) PURE;
+ STDMETHOD(FindToolbar) (THIS_ LPCWSTR pwszItem, REFIID riid, LPVOID* ppvObj) PURE;
+} IDockingWindowFrame_VTable, *LPDOCKINGWINDOWFRAME_VTABLE;
+
+struct tagDOCKINGWINDOWFRAME
+{ LPDOCKINGWINDOWFRAME_VTABLE lpvtbl;
+ DWORD ref;
+};
+
+#undef THIS
+/****************************************************************************
+ * IServiceProvider interface
+ */
+#define THIS LPSERVICEPROVIDER this
+
+typedef struct IServiceProvider_VTable
+{ /*** IUnknown methods ***/
+ STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID * ppvObj) PURE;
+ STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+ STDMETHOD_(ULONG,Release) (THIS) PURE;
+
+ STDMETHOD(QueryService)(THIS_ REFGUID guidService, REFIID riid, void **ppvObject);
+} IServiceProvider_VTable, *LPSERVICEPROVIDER_VTABLE;
+
+struct tagSERVICEPROVIDER
+{ LPSERVICEPROVIDER_VTABLE lpvtbl;
+ DWORD ref;
+};
/****************************************************************************
* Class constructors
*/
#ifdef __WINE__
-extern LPCLASSFACTORY IClassFactory_Constructor();
-extern LPCONTEXTMENU IContextMenu_Constructor(LPSHELLFOLDER, LPCITEMIDLIST *, UINT32);
-extern LPSHELLFOLDER IShellFolder_Constructor(LPSHELLFOLDER,LPITEMIDLIST);
-extern LPSHELLVIEW IShellView_Constructor();
-extern LPSHELLLINK IShellLink_Constructor();
-extern LPENUMIDLIST IEnumIDList_Constructor(LPCSTR,DWORD,HRESULT*);
-extern LPEXTRACTICON IExtractIcon_Constructor(LPITEMIDLIST);
+extern LPDATAOBJECT IDataObject_Constructor();
+extern LPENUMFORMATETC IEnumFORMATETC_Constructor(UINT32, const FORMATETC32 []);
+
+extern LPCLASSFACTORY IClassFactory_Constructor();
+extern LPCONTEXTMENU IContextMenu_Constructor(LPSHELLFOLDER, LPCITEMIDLIST *, UINT32);
+extern LPSHELLFOLDER IShellFolder_Constructor(LPSHELLFOLDER,LPITEMIDLIST);
+extern LPSHELLVIEW IShellView_Constructor();
+extern LPSHELLLINK IShellLink_Constructor();
+extern LPENUMIDLIST IEnumIDList_Constructor(LPCSTR,DWORD);
+extern LPEXTRACTICON IExtractIcon_Constructor(LPITEMIDLIST);
#endif
/****************************************************************************
* Shell Execute API
diff --git a/include/sysmetrics.h b/include/sysmetrics.h
index 101f317..bfb6cf3 100644
--- a/include/sysmetrics.h
+++ b/include/sysmetrics.h
@@ -129,6 +129,13 @@
#define SYSMETRICS_MIDEASTENABLED sysMetrics[SM_MIDEASTENABLED] /* 74 */
#define SYSMETRICS_MOUSEWHEELPRESENT sysMetrics[SM_MOUSEWHEELPRESENT] /* 75 */
+#define SYSMETRICS_CXVIRTUALSCREEN sysMetrics[SM_CXVIRTUALSCREEN] /* 77 */
+#define SYSMETRICS_CYVIRTUALSCREEN sysMetrics[SM_CYVIRTUALSCREEN] /* 77 */
+#define SYSMETRICS_YVIRTUALSCREEN sysMetrics[SM_YVIRTUALSCREEN] /* 78 */
+#define SYSMETRICS_XVIRTUALSCREEN sysMetrics[SM_XVIRTUALSCREEN] /* 79 */
+#define SYSMETRICS_CMONITORS sysMetrics[SM_CMONITORS] /* 81 */
+#define SYSMETRICS_SAMEDISPLAYFORMAT sysMetrics[SM_SAMEDISPLAYFORMAT] /* 82 */
+
extern void SYSMETRICS_Init(void); /* sysmetrics.c */
extern short sysMetrics[SM_CMETRICS+1];
diff --git a/include/thread.h b/include/thread.h
index 22e62bf..60c4220 100644
--- a/include/thread.h
+++ b/include/thread.h
@@ -7,12 +7,29 @@
#ifndef __WINE_THREAD_H
#define __WINE_THREAD_H
+#include "config.h"
#include "k32obj.h"
#include "windows.h"
#include "winbase.h"
#include "winnt.h"
#include "selectors.h" /* for SET_FS */
+#ifdef linux
+#define HAVE_CLONE_SYSCALL
+#endif
+
+/* This is what we will use on *BSD, once threads using rfork() get
+ * implemented:
+ *
+ * #if defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
+ * #define HAVE_RFORK
+ * #endif
+ */
+
+#if (defined(HAVE_CLONE_SYSCALL) || defined(HAVE_RFORK)) && !defined(NO_REENTRANT_LIBC)
+#define USE_THREADS
+#endif
+
struct _PDB32;
/* Thread exception block */
@@ -133,6 +150,7 @@
LPTHREAD_START_ROUTINE start_addr, LPVOID param );
extern THDB *THREAD_Current(void);
extern BOOL32 THREAD_IsWin16( THDB *thdb );
+extern THDB *THREAD_IdToTHDB( DWORD id );
extern void THREAD_Start( THDB *thdb );
extern THDB *THREAD_GetPtr( HANDLE32 handle, DWORD access, int *server_handle );
extern void THREAD_AddQueue( THREAD_QUEUE *queue, THDB *thread );
diff --git a/include/toolbar.h b/include/toolbar.h
index 1f4f443..3560067 100644
--- a/include/toolbar.h
+++ b/include/toolbar.h
@@ -53,6 +53,7 @@
BOOL32 bTransparent; /* background transparency flag */
BOOL32 bAutoSize; /* auto size deadlock indicator */
DWORD dwExStyle; /* extended toolbar style */
+ DWORD dwDTFlags; /* DrawText flags */
COLORREF clrInsertMark; /* insert mark color */
RECT32 rcBound; /* bounding rectangle */
diff --git a/include/tooltips.h b/include/tooltips.h
index d0d0c72..c38e94c 100644
--- a/include/tooltips.h
+++ b/include/tooltips.h
@@ -30,25 +30,26 @@
typedef struct tagTOOLTIPS_INFO
{
- CHAR szTipText[INFOTIPSIZE];
- BOOL32 bActive;
- BOOL32 bTrackActive;
- UINT32 uNumTools;
- COLORREF clrBk;
- COLORREF clrText;
- HFONT32 hFont;
- INT32 xTrackPos;
- INT32 yTrackPos;
- INT32 nMaxTipWidth;
- INT32 nTool;
- INT32 nOldTool;
- INT32 nCurrentTool;
- INT32 nTrackTool;
- INT32 nAutomaticTime;
- INT32 nReshowTime;
- INT32 nAutoPopTime;
- INT32 nInitialTime;
- RECT32 rcMargin;
+ CHAR szTipText[INFOTIPSIZE];
+ BOOL32 bActive;
+ BOOL32 bTrackActive;
+ UINT32 uNumTools;
+ COLORREF clrBk;
+ COLORREF clrText;
+ HFONT32 hFont;
+ INT32 xTrackPos;
+ INT32 yTrackPos;
+ INT32 nMaxTipWidth;
+ INT32 nTool;
+ INT32 nOldTool;
+ INT32 nCurrentTool;
+ INT32 nTrackTool;
+ INT32 nAutomaticTime;
+ INT32 nReshowTime;
+ INT32 nAutoPopTime;
+ INT32 nInitialTime;
+ RECT32 rcMargin;
+
TTTOOL_INFO *tools;
} TOOLTIPS_INFO;
diff --git a/include/trackbar.h b/include/trackbar.h
index f9ee1e8..3da5a65 100644
--- a/include/trackbar.h
+++ b/include/trackbar.h
@@ -18,13 +18,17 @@
INT32 nPos;
UINT32 uThumbLen;
UINT32 uNumTics;
+ UINT32 uTicFreq;
HWND32 hwndToolTip;
HWND32 hwndBuddyLA;
HWND32 hwndBuddyRB;
INT32 fLocation;
-
+ COLORREF clrBk;
+
+ INT32 flags;
BOOL32 bFocus;
RECT32 rcChannel;
+ RECT32 rcSelection;
RECT32 rcThumb;
LPLONG tics;
} TRACKBAR_INFO;
diff --git a/include/treeview.h b/include/treeview.h
index 0c315d4..2e19fae 100644
--- a/include/treeview.h
+++ b/include/treeview.h
@@ -2,19 +2,79 @@
* Treeview class extra info
*
* Copyright 1998 Eric Kohl
+ * Copyright 1998 Alex Priem
*/
#ifndef __WINE_TREEVIEW_H
#define __WINE_TREEVIEW_H
+#define MINIMUM_INDENT 10
+
+
+#define TVITEM_ALLOC 16
+#define TV_REFRESH_TIMER 1
+#define TV_EDIT_TIMER 2
+#define TV_REFRESH_TIMER_SET 1
+#define TV_EDIT_TIMER_SET 2
+#define TV_REFRESH_DELAY 100 /* 100 ms delay between two refreshes */
+#define TV_DEFAULTITEMHEIGHT 15
+
+/* internal structures */
+
+typedef struct {
+ UINT32 mask;
+ HTREEITEM hItem;
+ UINT32 state;
+ UINT32 stateMask;
+ LPSTR pszText;
+ int cchTextMax;
+ int iImage;
+ int iSelectedImage;
+ int cChildren;
+ LPARAM lParam;
+ int iIntegral;
+ int clrText;
+
+ int parent; /* handle to parent or 0 if at root*/
+ int firstChild; /* handle to first child or 0 if no child*/
+ int sibling; /* handle to next item in list, 0 if last */
+ int upsibling; /* handle to previous item in list, 0 if first */
+ int visible;
+ RECT32 rect;
+ RECT32 text;
+} TREEVIEW_ITEM;
+
+
+#define TV_HSCROLL 0x01 /* treeview too large to fit in window */
+#define TV_VSCROLL 0x02 /* (horizontal/vertical) */
+
typedef struct tagTREEVIEW_INFO
{
- COLORREF clrBk;
+ UINT32 uInternalStatus;
+ UINT32 uNumItems; /* number of valid TREEVIEW_ITEMs */
+ UINT32 uNumPtrsAlloced;
+ UINT32 uMaxHandle; /* needed for delete_item */
+ HTREEITEM TopRootItem; /* handle to first item in treeview */
+
+ UINT32 uItemHeight; /* item height, -1 for default item height */
+ UINT32 uRealItemHeight; /* real item height in pixels */
+ UINT32 uVisibleHeight; /* visible height of treeview in pixels */
+ UINT32 uTotalHeight; /* total height of treeview in pixels */
+ UINT32 uIndent; /* indentation in pixels */
+ HTREEITEM selectedItem; /* handle to selected item or 0 if none */
+ HTREEITEM firstVisible; /* handle to first visible item */
+ HTREEITEM dropItem; /* handle to item selected by drag cursor */
+ INT32 cx,cy; /* current x/y place in list */
+ COLORREF clrBk;
COLORREF clrText;
+ HFONT32 hFont;
- HIMAGELIST himlNormal;
+ HIMAGELIST himlNormal;
HIMAGELIST himlState;
-
+ TREEVIEW_ITEM *items; /* itemlist */
+ INT32 *freeList; /* bitmap indicating which elements are valid */
+ /* 1=valid, 0=free; */
+ /* size of list= uNumPtrsAlloced/32 */
} TREEVIEW_INFO;
diff --git a/include/tweak.h b/include/tweak.h
index 06bffee..b9c39c7 100644
--- a/include/tweak.h
+++ b/include/tweak.h
@@ -11,13 +11,17 @@
#include "wintypes.h"
+typedef enum
+{
+ WIN31_LOOK,
+ WIN95_LOOK,
+ WIN98_LOOK
+} WINE_LOOK;
+
+
int TWEAK_Init(void);
int TWEAK_CheckConfiguration(void);
-void TWEAK_DrawReliefRect95(HDC32, RECT32 const *);
-void TWEAK_DrawRevReliefRect95(HDC32, RECT32 const *);
-void TWEAK_DrawMenuSeparatorHoriz95(HDC32, UINT32, UINT32, UINT32);
-void TWEAK_DrawMenuSeparatorVert95(HDC32, UINT32, UINT32, UINT32);
-extern int TWEAK_Win95Look;
-extern int TWEAK_WineInitialized;
+
+extern WINE_LOOK TWEAK_WineLook;
#endif /* __WINE_TWEAK_H */
diff --git a/include/version.h b/include/version.h
index 0062e05..49e51e5 100644
--- a/include/version.h
+++ b/include/version.h
@@ -1 +1 @@
-#define WINE_RELEASE_INFO "Wine release 980913"
+#define WINE_RELEASE_INFO "Wine release 980927"
diff --git a/include/vfw.h b/include/vfw.h
new file mode 100644
index 0000000..8500da8
--- /dev/null
+++ b/include/vfw.h
@@ -0,0 +1,272 @@
+#ifndef __WINE_VFW_H
+#define __WINE_VFW_H
+
+#include <wintypes.h>
+#include <driver.h>
+
+#define VFWAPI WINAPI
+#define VFWAPIV WINAPIV
+
+DWORD VFWAPI VideoForWindowsVersion(void);
+
+#ifndef aviTWOCC
+#define aviTWOCC(ch0, ch1) ((WORD)(BYTE)(ch0) | ((WORD)(BYTE)(ch1) << 8))
+#endif
+
+#define ICTYPE_VIDEO mmioFOURCC('v', 'i', 'd', 'c')
+#define ICTYPE_AUDIO mmioFOURCC('a', 'u', 'd', 'c')
+
+
+/* Installable Compressor M? */
+
+/* HIC32 struct (same layout as Win95 one) */
+typedef struct tagWINE_HIC {
+ DWORD magic; /* 00: 'Smag' */
+ HANDLE32 curthread; /* 04: */
+ DWORD type; /* 08: */
+ DWORD handler; /* 0C: */
+ HDRVR32 hdrv; /* 10: */
+ DWORD private; /* 14: private data passed to drv */
+ FARPROC32 driverproc; /* 18: */
+ DWORD x1; /* 1c: name? */
+ WORD x2; /* 20: */
+ DWORD x3; /* 22: */
+ /* 26: */
+} WINE_HIC;
+
+/* error return codes */
+#define ICERR_OK 0
+#define ICERR_DONTDRAW 1
+#define ICERR_NEWPALETTE 2
+#define ICERR_GOTOKEYFRAME 3
+#define ICERR_STOPDRAWING 4
+
+#define ICERR_UNSUPPORTED -1
+#define ICERR_BADFORMAT -2
+#define ICERR_MEMORY -3
+#define ICERR_INTERNAL -4
+#define ICERR_BADFLAGS -5
+#define ICERR_BADPARAM -6
+#define ICERR_BADSIZE -7
+#define ICERR_BADHANDLE -8
+#define ICERR_CANTUPDATE -9
+#define ICERR_ABORT -10
+#define ICERR_ERROR -100
+#define ICERR_BADBITDEPTH -200
+#define ICERR_BADIMAGESIZE -201
+
+#define ICERR_CUSTOM -400
+
+/* ICM Messages */
+#define ICM_USER (DRV_USER+0x0000)
+
+/* ICM driver message range */
+#define ICM_RESERVED_LOW (DRV_USER+0x1000)
+#define ICM_RESERVED_HIGH (DRV_USER+0x2000)
+#define ICM_RESERVED ICM_RESERVED_LOW
+
+#define ICM_GETSTATE (ICM_RESERVED+0)
+#define ICM_SETSTATE (ICM_RESERVED+1)
+#define ICM_GETINFO (ICM_RESERVED+2)
+
+#define ICM_CONFIGURE (ICM_RESERVED+10)
+#define ICM_ABOUT (ICM_RESERVED+11)
+/* */
+
+#define ICM_GETDEFAULTQUALITY (ICM_RESERVED+30)
+#define ICM_GETQUALITY (ICM_RESERVED+31)
+#define ICM_SETQUALITY (ICM_RESERVED+32)
+
+#define ICM_SET (ICM_RESERVED+40)
+#define ICM_GET (ICM_RESERVED+41)
+
+/* 2 constant FOURCC codes */
+#define ICM_FRAMERATE mmioFOURCC('F','r','m','R')
+#define ICM_KEYFRAMERATE mmioFOURCC('K','e','y','R')
+
+#define ICM_COMPRESS_GET_FORMAT (ICM_USER+4)
+#define ICM_COMPRESS_GET_SIZE (ICM_USER+5)
+#define ICM_COMPRESS_QUERY (ICM_USER+6)
+#define ICM_COMPRESS_BEGIN (ICM_USER+7)
+#define ICM_COMPRESS (ICM_USER+8)
+#define ICM_COMPRESS_END (ICM_USER+9)
+
+#define ICM_DECOMPRESS_GET_FORMAT (ICM_USER+10)
+#define ICM_DECOMPRESS_QUERY (ICM_USER+11)
+#define ICM_DECOMPRESS_BEGIN (ICM_USER+12)
+#define ICM_DECOMPRESS (ICM_USER+13)
+#define ICM_DECOMPRESS_END (ICM_USER+14)
+#define ICM_DECOMPRESS_SET_PALETTE (ICM_USER+29)
+#define ICM_DECOMPRESS_GET_PALETTE (ICM_USER+30)
+
+#define ICM_DRAW_QUERY (ICM_USER+31)
+#define ICM_DRAW_BEGIN (ICM_USER+15)
+#define ICM_DRAW_GET_PALETTE (ICM_USER+16)
+#define ICM_DRAW_START (ICM_USER+18)
+#define ICM_DRAW_STOP (ICM_USER+19)
+#define ICM_DRAW_END (ICM_USER+21)
+#define ICM_DRAW_GETTIME (ICM_USER+32)
+#define ICM_DRAW (ICM_USER+33)
+#define ICM_DRAW_WINDOW (ICM_USER+34)
+#define ICM_DRAW_SETTIME (ICM_USER+35)
+#define ICM_DRAW_REALIZE (ICM_USER+36)
+#define ICM_DRAW_FLUSH (ICM_USER+37)
+#define ICM_DRAW_RENDERBUFFER (ICM_USER+38)
+
+#define ICM_DRAW_START_PLAY (ICM_USER+39)
+#define ICM_DRAW_STOP_PLAY (ICM_USER+40)
+
+#define ICM_DRAW_SUGGESTFORMAT (ICM_USER+50)
+#define ICM_DRAW_CHANGEPALETTE (ICM_USER+51)
+
+#define ICM_GETBUFFERSWANTED (ICM_USER+41)
+
+#define ICM_GETDEFAULTKEYFRAMERATE (ICM_USER+42)
+
+#define ICM_DECOMPRESSEX_BEGIN (ICM_USER+60)
+#define ICM_DECOMPRESSEX_QUERY (ICM_USER+61)
+#define ICM_DECOMPRESSEX (ICM_USER+62)
+#define ICM_DECOMPRESSEX_END (ICM_USER+63)
+
+#define ICM_COMPRESS_FRAMES_INFO (ICM_USER+70)
+#define ICM_SET_STATUS_PROC (ICM_USER+72)
+
+/* structs */
+
+typedef struct {
+ DWORD dwSize; /* 00: size */
+ DWORD fccType; /* 04: type 'vidc' usually */
+ DWORD fccHandler; /* 08: */
+ DWORD dwVersion; /* 0c: version of compman opening you */
+ DWORD dwFlags; /* 10: LOWORD is type specific */
+ LRESULT dwError; /* 14: */
+ LPVOID pV1Reserved; /* 18: */
+ LPVOID pV2Reserved; /* 1c: */
+ DWORD dnDevNode; /* 20: */
+ /* 24: */
+} ICOPEN,*LPICOPEN;
+
+/* Values for dwFlags of ICOpen() */
+#define ICMODE_COMPRESS 1
+#define ICMODE_DECOMPRESS 2
+#define ICMODE_FASTDECOMPRESS 3
+#define ICMODE_QUERY 4
+#define ICMODE_FASTCOMPRESS 5
+#define ICMODE_DRAW 8
+
+/* quality flags */
+#define ICQUALITY_LOW 0
+#define ICQUALITY_HIGH 10000
+#define ICQUALITY_DEFAULT -1
+
+typedef struct {
+ DWORD dwSize; /* 00: */
+ DWORD fccType; /* 04:compressor type 'vidc' 'audc' */
+ DWORD fccHandler; /* 08:compressor sub-type 'rle ' 'jpeg' 'pcm '*/
+ DWORD dwFlags; /* 0c:flags LOWORD is type specific */
+ DWORD dwVersion; /* 10:version of the driver */
+ DWORD dwVersionICM; /* 14:version of the ICM used */
+ /*
+ * under Win32, the driver always returns UNICODE strings.
+ */
+ WCHAR szName[16]; /* 18:short name */
+ WCHAR szDescription[128]; /* 38:long name */
+ WCHAR szDriver[128]; /* 138:driver that contains compressor*/
+ /* 238: */
+} ICINFO32;
+
+
+/* Flags for the <dwFlags> field of the <ICINFO> structure. */
+#define VIDCF_QUALITY 0x0001 /* supports quality */
+#define VIDCF_CRUNCH 0x0002 /* supports crunching to a frame size */
+#define VIDCF_TEMPORAL 0x0004 /* supports inter-frame compress */
+#define VIDCF_COMPRESSFRAMES 0x0008 /* wants the compress all frames message */
+#define VIDCF_DRAW 0x0010 /* supports drawing */
+#define VIDCF_FASTTEMPORALC 0x0020 /* does not need prev frame on compress */
+#define VIDCF_FASTTEMPORALD 0x0080 /* does not need prev frame on decompress */
+#define VIDCF_QUALITYTIME 0x0040 /* supports temporal quality */
+
+#define VIDCF_FASTTEMPORAL (VIDCF_FASTTEMPORALC|VIDCF_FASTTEMPORALD)
+
+
+/* function shortcuts */
+/* ICM_ABOUT */
+#define ICMF_ABOUT_QUERY 0x00000001
+
+#define ICQueryAbout(hic) \
+ (ICSendMessage(hic,ICM_ABOUT,(DWORD)-1,ICMF_ABOUT_QUERY)==ICERR_OK)
+
+#define ICAbout(hic, hwnd) \
+ ICSendMessage(hic,ICM_ABOUT,(DWORD)(UINT)(hwnd),0)
+
+/* ICM_CONFIGURE */
+#define ICMF_CONFIGURE_QUERY 0x00000001
+#define ICQueryConfigure(hic) \
+ (ICSendMessage(hic,ICM_CONFIGURE,(DWORD)-1,ICMF_CONFIGURE_QUERY)==ICERR_OK)
+
+#define ICConfigure(hic,hwnd) \
+ ICSendMessage(hic,ICM_CONFIGURE,(DWORD)(UINT)(hwnd),0)
+
+/* Decompression stuff */
+#define ICDECOMPRESS_HURRYUP 0x80000000 /* don't draw just buffer (hurry up!) */
+#define ICDECOMPRESS_UPDATE 0x40000000 /* don't draw just update screen */
+#define ICDECOMPRESS_PREROL 0x20000000 /* this frame is before real start */
+#define ICDECOMPRESS_NULLFRAME 0x10000000 /* repeat last frame */
+#define ICDECOMPRESS_NOTKEYFRAME 0x08000000 /* this frame is not a key frame */
+
+typedef struct {
+ DWORD dwFlags; /* flags (from AVI index...) */
+ LPBITMAPINFOHEADER lpbiInput; /* BITMAPINFO of compressed data */
+ LPVOID lpInput; /* compressed data */
+ LPBITMAPINFOHEADER lpbiOutput; /* DIB to decompress to */
+ LPVOID lpOutput;
+ DWORD ckid; /* ckid from AVI file */
+} ICDECOMPRESS;
+
+typedef struct {
+ DWORD dwFlags;
+ LPBITMAPINFOHEADER lpbiSrc;
+ LPVOID lpSrc;
+ LPBITMAPINFOHEADER lpbiDst;
+ LPVOID lpDst;
+
+ /* changed for ICM_DECOMPRESSEX */
+ INT32 xDst; /* destination rectangle */
+ INT32 yDst;
+ INT32 dxDst;
+ INT32 dyDst;
+
+ INT32 xSrc; /* source rectangle */
+ INT32 ySrc;
+ INT32 dxSrc;
+ INT32 dySrc;
+} ICDECOMPRESSEX;
+
+#define ICDRAW_QUERY 0x00000001L // test for support
+#define ICDRAW_FULLSCREEN 0x00000002L // draw to full screen
+#define ICDRAW_HDC 0x00000004L // draw to a HDC/HWND
+
+
+BOOL32 VFWAPI ICInfo32(DWORD fccType, DWORD fccHandler, ICINFO32 * lpicinfo);
+LRESULT VFWAPI ICGetInfo32(HIC32 hic,ICINFO32 *picinfo, DWORD cb);
+HIC32 VFWAPI ICOpen32(DWORD fccType, DWORD fccHandler, UINT32 wMode);
+LRESULT VFWAPI ICSendMessage32(HIC32 hic, UINT32 msg, DWORD dw1, DWORD dw2);
+DWORD VFWAPIV ICDrawBegin32(
+ HIC32 hic,
+ DWORD dwFlags,/* flags */
+ HPALETTE32 hpal, /* palette to draw with */
+ HWND32 hwnd, /* window to draw to */
+ HDC32 hdc, /* HDC to draw to */
+ INT32 xDst, /* destination rectangle */
+ INT32 yDst,
+ INT32 dxDst,
+ INT32 dyDst,
+ LPBITMAPINFOHEADER lpbi, /* format of frame to draw */
+ INT32 xSrc, /* source rectangle */
+ INT32 ySrc,
+ INT32 dxSrc,
+ INT32 dySrc,
+ DWORD dwRate, /* frames/second = (dwRate/dwScale) */
+ DWORD dwScale);
+
+#endif
diff --git a/include/winaspi.h b/include/winaspi.h
new file mode 100644
index 0000000..081df68
--- /dev/null
+++ b/include/winaspi.h
@@ -0,0 +1,100 @@
+#if !defined(WINASPI_H)
+#define WINASPI_H
+
+#pragma pack(1)
+
+#define ASPI_DOS 1
+#define ASPI_WIN16 2
+
+typedef union SRB16 * LPSRB16;
+
+typedef struct tagSRB_HaInquiry16 {
+ BYTE SRB_Cmd;
+ BYTE SRB_Status;
+ BYTE SRB_HaId;
+ BYTE SRB_Flags;
+ WORD SRB_55AASignature;
+ WORD SRB_ExtBufferSize;
+ BYTE HA_Count;
+ BYTE HA_SCSI_ID;
+ BYTE HA_ManagerId[16];
+ BYTE HA_Identifier[16];
+ BYTE HA_Unique[16];
+ BYTE HA_ExtBuffer[4];
+} SRB_HaInquiry16 WINE_PACKED;
+
+typedef struct tagSRB_ExecSCSICmd16 {
+ BYTE SRB_Cmd; /* ASPI command code (W) */
+ BYTE SRB_Status; /* ASPI command status byte (R) */
+ BYTE SRB_HaId; /* ASPI host adapter number (W) */
+ BYTE SRB_Flags; /* ASPI request flags (W) */
+ DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 (-) */
+ BYTE SRB_Target; /* Target's SCSI ID (W) */
+ BYTE SRB_Lun; /* Target's LUN number (W) */
+ DWORD SRB_BufLen; /* Data Allocation LengthPG (W/R)*/
+ BYTE SRB_SenseLen; /* Sense Allocation Length (W) */
+ SEGPTR SRB_BufPointer; /* Data Buffer Pointer (W) */
+ DWORD SRB_Rsvd1; /* Reserved, MUST = 0 (-/W)*/
+ BYTE SRB_CDBLen; /* CDB Length = 6 (W) */
+ BYTE SRB_HaStat; /* Host Adapter Status (R) */
+ BYTE SRB_TargStat; /* Target Status (R) */
+ FARPROC16 SRB_PostProc; /* Post routine (W) */
+ BYTE SRB_Rsvd2[34]; /* Reserved, MUST = 0 */
+ BYTE CDBByte[0]; /* SCSI CBD - variable length (W) */
+ /* variable example for 6 byte cbd
+ * BYTE CDBByte[6]; * SCSI CDB (W) *
+ * BYTE SenseArea6[SENSE_LEN]; * Request Sense buffer (R) *
+ */
+} SRB_ExecSCSICmd16 WINE_PACKED;
+
+typedef struct tagSRB_Abort16 {
+ BYTE SRB_Cmd; /* ASPI command code = SC_ABORT_SRB */
+ BYTE SRB_Status; /* ASPI command status byte */
+ BYTE SRB_HaId; /* ASPI host adapter number */
+ BYTE SRB_Flags; /* ASPI request flags */
+ DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
+ LPSRB16 SRB_ToAbort; /* Pointer to SRB to abort */
+} SRB_Abort16 WINE_PACKED;
+
+typedef struct tagSRB_BusDeviceReset16 {
+ BYTE SRB_Cmd; /* ASPI command code = SC_RESET_DEV */
+ BYTE SRB_Status; /* ASPI command status byte */
+ BYTE SRB_HaId; /* ASPI host adapter number */
+ BYTE SRB_Flags; /* ASPI request flags */
+ DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
+ BYTE SRB_Target; /* Target's SCSI ID */
+ BYTE SRB_Lun; /* Target's LUN number */
+ BYTE SRB_ResetRsvd1[14]; /* Reserved, MUST = 0 */
+ BYTE SRB_HaStat; /* Host Adapter Status */
+ BYTE SRB_TargStat; /* Target Status */
+ SEGPTR SRB_PostProc; /* Post routine */
+ BYTE SRB_ResetRsvd2[34]; /* Reserved, MUST = 0 */
+} SRB_BusDeviceReset16 WINE_PACKED;
+
+typedef struct tagSRB_GDEVBlock16 {
+ BYTE SRB_Cmd; /* ASPI command code = SC_GET_DEV_TYPE */
+ BYTE SRB_Status; /* ASPI command status byte */
+ BYTE SRB_HaId; /* ASPI host adapter number */
+ BYTE SRB_Flags; /* ASPI request flags */
+ DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
+ BYTE SRB_Target; /* Target's SCSI ID */
+ BYTE SRB_Lun; /* Target's LUN number */
+ BYTE SRB_DeviceType; /* Target's peripheral device type */
+} SRB_GDEVBlock16 WINE_PACKED;
+
+typedef struct tagSRB_Common16 {
+ BYTE SRB_Cmd;
+} SRB_Common16;
+
+union SRB16 {
+ SRB_Common16 common;
+ SRB_HaInquiry16 inquiry;
+ SRB_ExecSCSICmd16 cmd;
+ SRB_Abort16 abort;
+ SRB_BusDeviceReset16 reset;
+ SRB_GDEVBlock16 devtype;
+};
+
+typedef union SRB16 SRB16;
+
+#endif
diff --git a/include/winbase.h b/include/winbase.h
index 16938f2..47878fe 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -189,6 +189,8 @@
void WINAPI InitializeCriticalSection(CRITICAL_SECTION *lpCrit);
void WINAPI LeaveCriticalSection(CRITICAL_SECTION *lpCrit);
HANDLE32 WINAPI OpenProcess(DWORD access, BOOL32 inherit, DWORD id);
+BOOL32 WINAPI GetProcessWorkingSetSize(HANDLE32,LPDWORD,LPDWORD);
+BOOL32 WINAPI SetProcessWorkingSetSize(HANDLE32,DWORD,DWORD);
void WINAPI RaiseException(DWORD,DWORD,DWORD,const LPDWORD);
BOOL32 WINAPI TerminateProcess(HANDLE32,DWORD);
BOOL32 WINAPI TerminateThread(HANDLE32,DWORD);
diff --git a/include/windows.h b/include/windows.h
index 8765e68..af54d71 100644
--- a/include/windows.h
+++ b/include/windows.h
@@ -1053,6 +1053,7 @@
#define COLOR_BTNTEXT 18
#define COLOR_INACTIVECAPTIONTEXT 19
#define COLOR_BTNHIGHLIGHT 20
+/* win95 colors */
#define COLOR_3DDKSHADOW 21
#define COLOR_3DLIGHT 22
#define COLOR_INFOTEXT 23
@@ -1063,6 +1064,11 @@
#define COLOR_3DHIGHLIGHT COLOR_BTNHIGHLIGHT
#define COLOR_3DHILIGHT COLOR_BTNHIGHLIGHT
#define COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT
+/* win98 colors */
+#define COLOR_ALTERNATEBTNFACE 25 /* undocumented, constant's name unknown */
+#define COLOR_HOTLIGHT 26
+#define COLOR_GRADIENTACTIVECAPTION 27
+#define COLOR_GRADIENTINACTIVECAPTION 28
/* WM_CTLCOLOR values */
#define CTLCOLOR_MSGBOX 0
@@ -1077,6 +1083,15 @@
#define ICM_ON 2
#define ICM_QUERY 3
+ /* Bounds Accumulation APIs */
+#define DCB_RESET 0x0001
+#define DCB_ACCUMULATE 0x0002
+#define DCB_DIRTY DCB_ACCUMULATE
+#define DCB_SET (DCB_RESET | DCB_ACCUMULATE)
+#define DCB_ENABLE 0x0004
+#define DCB_DISABLE 0x0008
+
+
/* Bitmaps */
typedef struct
@@ -2050,8 +2065,14 @@
#define SM_SLOWMACHINE 73
#define SM_MIDEASTENABLED 74
#define SM_MOUSEWHEELPRESENT 75
+#define SM_XVIRTUALSCREEN 76
+#define SM_YVIRTUALSCREEN 77
+#define SM_CXVIRTUALSCREEN 78
+#define SM_CYVIRTUALSCREEN 79
+#define SM_CMONITORS 80
+#define SM_SAMEDISPLAYFORMAT 81
+#define SM_CMETRICS 83
-#define SM_CMETRICS 76
/* Device-independent bitmaps */
@@ -6293,6 +6314,15 @@
DWORD dwPlatformID;
} DLLVERSIONINFO;
+typedef struct _SEGINFO {
+ UINT16 offSegment;
+ UINT16 cbSegment;
+ UINT16 flags;
+ UINT16 cbAlloc;
+ HGLOBAL16 h;
+ UINT16 alignShift;
+ UINT16 reserved[2];
+} SEGINFO;
#pragma pack(4)
@@ -6338,7 +6368,7 @@
INT16 WINAPI GetCommError(INT16,LPCOMSTAT);
UINT16 WINAPI GetCommEventMask(INT16,UINT16);
HBRUSH16 WINAPI GetControlBrush(HWND16,HDC16,UINT16);
-VOID WINAPI GetCodeInfo(FARPROC16,LPVOID);
+VOID WINAPI GetCodeInfo(FARPROC16,SEGINFO*);
HFONT16 WINAPI GetCurLogFont(HDC16);
HANDLE16 WINAPI GetCurrentPDB(void);
DWORD WINAPI GetCurrentPosition(HDC16);
@@ -6515,6 +6545,9 @@
BOOL32 WINAPI DisableThreadLibraryCalls(HMODULE32);
BOOL32 WINAPI DosDateTimeToFileTime(WORD,WORD,LPFILETIME);
BOOL32 WINAPI DuplicateHandle(HANDLE32,HANDLE32,HANDLE32,HANDLE32*,DWORD,BOOL32,DWORD);
+BOOL32 WINAPI EnumDateFormats32A(DATEFMT_ENUMPROC32A lpDateFmtEnumProc, LCID Locale, DWORD dwFlags);
+BOOL32 WINAPI EnumDateFormats32W(DATEFMT_ENUMPROC32W lpDateFmtEnumProc, LCID Locale, DWORD dwFlags);
+#define EnumDateFormats WINELIB_NAME_AW(EnumDateFormats)
INT32 WINAPI EnumPropsEx32A(HWND32,PROPENUMPROCEX32A,LPARAM);
INT32 WINAPI EnumPropsEx32W(HWND32,PROPENUMPROCEX32W,LPARAM);
#define EnumPropsEx WINELIB_NAME_AW(EnumPropsEx)
@@ -6538,6 +6571,9 @@
BOOL32 WINAPI EnumSystemLocales32W(LOCALE_ENUMPROC32W,DWORD);
#define EnumSystemLocales WINELIB_NAME_AW(EnumSystemLocales)
BOOL32 WINAPI EnumThreadWindows(DWORD,WNDENUMPROC32,LPARAM);
+BOOL32 WINAPI EnumTimeFormats32A(TIMEFMT_ENUMPROC32A lpTimeFmtEnumProc, LCID Locale, DWORD dwFlags);
+BOOL32 WINAPI EnumTimeFormats32W(TIMEFMT_ENUMPROC32W lpTimeFmtEnumProc, LCID Locale, DWORD dwFlags);
+#define EnumTimeFormats WINELIB_NAME_AW(EnumTimeFormats)
VOID WINAPI ExitProcess(DWORD);
VOID WINAPI ExitThread(DWORD);
BOOL32 WINAPI ExitWindowsEx(UINT32,DWORD);
@@ -7197,7 +7233,7 @@
HBRUSH32 WINAPI CreateDIBPatternBrush32(HGLOBAL32,UINT32);
#define CreateDIBPatternBrush WINELIB_NAME(CreateDIBPatternBrush)
HBITMAP16 WINAPI CreateDIBSection16 (HDC16, BITMAPINFO *, UINT16,
- LPVOID **, HANDLE16, DWORD offset);
+ LPVOID **, HANDLE32, DWORD offset);
HBITMAP32 WINAPI CreateDIBSection32 (HDC32, BITMAPINFO *, UINT32,
LPVOID **, HANDLE32, DWORD offset);
#define CreateDIBSection WINELIB_NAME(CreateDIBSection)
@@ -7651,6 +7687,9 @@
INT16 WINAPI GetBkMode16(HDC16);
INT32 WINAPI GetBkMode32(HDC32);
#define GetBkMode WINELIB_NAME(GetBkMode)
+UINT16 WINAPI GetBoundsRect16(HDC16,LPRECT16,UINT16);
+UINT32 WINAPI GetBoundsRect32(HDC32,LPRECT32,UINT32);
+#define GetBoundsRect WINELIB_NAME(GetBoundsRect)
HWND16 WINAPI GetCapture16(void);
HWND32 WINAPI GetCapture32(void);
#define GetCapture WINELIB_NAME(GetCapture)
@@ -7833,6 +7872,10 @@
INT32 WINAPI GetKeyNameText32A(LONG,LPSTR,INT32);
INT32 WINAPI GetKeyNameText32W(LONG,LPWSTR,INT32);
#define GetKeyNameText WINELIB_NAME_AW(GetKeyNameText)
+INT16 WINAPI GetKeyboardLayoutName16(LPSTR);
+INT32 WINAPI GetKeyboardLayoutName32A(LPSTR);
+INT32 WINAPI GetKeyboardLayoutName32W(LPWSTR);
+#define GetKeyboardLayoutName WINELIB_NAME_AW(GetKeyboardLayoutName)
WORD WINAPI GetKeyState16(INT16);
WORD WINAPI GetKeyState32(INT32);
#define GetKeyState WINELIB_NAME(GetKeyState)
@@ -8126,7 +8169,7 @@
BOOL32 WINAPI GetWindowPlacement32(HWND32,LPWINDOWPLACEMENT32);
#define GetWindowPlacement WINELIB_NAME(GetWindowPlacement)
void WINAPI GetWindowRect16(HWND16,LPRECT16);
-void WINAPI GetWindowRect32(HWND32,LPRECT32);
+BOOL32 WINAPI GetWindowRect32(HWND32,LPRECT32);
#define GetWindowRect WINELIB_NAME(GetWindowRect)
INT16 WINAPI GetWindowRgn16(HWND16,HRGN16);
INT32 WINAPI GetWindowRgn32(HWND32,HRGN32);
@@ -8781,6 +8824,9 @@
INT16 WINAPI SetBkMode16(HDC16,INT16);
INT32 WINAPI SetBkMode32(HDC32,INT32);
#define SetBkMode WINELIB_NAME(SetBkMode)
+UINT16 WINAPI SetBoundsRect16(HDC16,LPRECT16,UINT16);
+UINT32 WINAPI SetBoundsRect32(HDC32,LPRECT32,UINT32);
+#define SetBoundsRect WINELIB_NAME(SetBoundsRect)
HWND16 WINAPI SetCapture16(HWND16);
HWND32 WINAPI SetCapture32(HWND32);
#define SetCapture WINELIB_NAME(SetCapture)
diff --git a/include/winerror.h b/include/winerror.h
index 1d368fb..309617c 100644
--- a/include/winerror.h
+++ b/include/winerror.h
@@ -71,6 +71,7 @@
#define ERROR_NO_NETWORK 1222
#define ERROR_ALREADY_INITIALIZED 1247
#define ERROR_PRIVILEGE_NOT_HELD 1314
+#define ERROR_INVALID_WINDOW_HANDLE 1400
#define ERROR_CANNOT_FIND_WND_CLASS 1407
#define ERROR_WINDOW_OF_OTHER_THREAD 1408
#define ERROR_CLASS_ALREADY_EXISTS 1410
diff --git a/include/winnls.h b/include/winnls.h
index 5024998..cecb141 100644
--- a/include/winnls.h
+++ b/include/winnls.h
@@ -194,7 +194,7 @@
#define SUBLANG_DEFAULT 0x01 /* user default */
#define SUBLANG_SYS_DEFAULT 0x02 /* system default */
-#define SUBLANG_ARABIC 0x01
+#define SUBLANG_ARABIC_SAUDI_ARABIA 0x01
#define SUBLANG_ARABIC_IRAQ 0x02
#define SUBLANG_ARABIC_EGYPT 0x03
#define SUBLANG_ARABIC_LIBYA 0x04
@@ -203,18 +203,19 @@
#define SUBLANG_ARABIC_TUNISIA 0x07
#define SUBLANG_ARABIC_OMAN 0x08
#define SUBLANG_ARABIC_YEMEN 0x09
-#define SUBLANG_ARABIC_SYRIA 0x10
-#define SUBLANG_ARABIC_JORDAN 0x11
-#define SUBLANG_ARABIC_LEBANON 0x12
-#define SUBLANG_ARABIC_KUWAIT 0x13
-#define SUBLANG_ARABIC_UAE 0x14
-#define SUBLANG_ARABIC_BAHRAIN 0x15
-#define SUBLANG_ARABIC_QATAR 0x16
+#define SUBLANG_ARABIC_SYRIA 0x0a
+#define SUBLANG_ARABIC_JORDAN 0x0b
+#define SUBLANG_ARABIC_LEBANON 0x0c
+#define SUBLANG_ARABIC_KUWAIT 0x0d
+#define SUBLANG_ARABIC_UAE 0x0e
+#define SUBLANG_ARABIC_BAHRAIN 0x0f
+#define SUBLANG_ARABIC_QATAR 0x10
#define SUBLANG_CHINESE_TRADITIONAL 0x01
#define SUBLANG_CHINESE_SIMPLIFIED 0x02
#define SUBLANG_CHINESE_HONGKONG 0x03
#define SUBLANG_CHINESE_SINGAPORE 0x04
-#define SUBLANG_DUTCH 0x01
+#define SUBLANG_CHINESE_MACAU 0x05
+#define SUBLANG_DUTCH_NETHERLANDS 0x01
#define SUBLANG_DUTCH_BELGIAN 0x02
#define SUBLANG_ENGLISH_US 0x01
#define SUBLANG_ENGLISH_UK 0x02
@@ -225,40 +226,49 @@
#define SUBLANG_ENGLISH_SAFRICA 0x07
#define SUBLANG_ENGLISH_JAMAICA 0x08
#define SUBLANG_ENGLISH_CARRIBEAN 0x09
-#define SUBLANG_FRENCH 0x01
+#define SUBLANG_ENGLISH_BELIZE 0x0a
+#define SUBLANG_ENGLISH_TRINIDAD 0x0b
+#define SUBLANG_ENGLISH_ZIMBABWE 0x0c
+#define SUBLANG_ENGLISH_PHILIPPINES 0x0d
+#define SUBLANG_FRENCH_FRANCE 0x01
#define SUBLANG_FRENCH_BELGIAN 0x02
#define SUBLANG_FRENCH_CANADIAN 0x03
#define SUBLANG_FRENCH_SWISS 0x04
#define SUBLANG_FRENCH_LUXEMBOURG 0x05
-#define SUBLANG_GERMAN 0x01
+#define SUBLANG_FRENCH_MONACO 0x06
+#define SUBLANG_GERMAN_GERMANY 0x01
#define SUBLANG_GERMAN_SWISS 0x02
#define SUBLANG_GERMAN_AUSTRIAN 0x03
#define SUBLANG_GERMAN_LUXEMBOURG 0x04
#define SUBLANG_GERMAN_LIECHTENSTEIN 0x05
-#define SUBLANG_ITALIAN 0x01
+#define SUBLANG_ITALIAN_ITALIA 0x01
#define SUBLANG_ITALIAN_SWISS 0x02
-#define SUBLANG_KOREAN 0x01
+#define SUBLANG_KOREAN_WANSUNG 0x01
#define SUBLANG_KOREAN_JOHAB 0x02
#define SUBLANG_NORWEGIAN_BOKMAL 0x01
#define SUBLANG_NORWEGIAN_NYNORSK 0x02
-#define SUBLANG_PORTUGUESE 0x02
+#define SUBLANG_PORTUGUESE_PORTUGAL 0x02
#define SUBLANG_PORTUGUESE_BRAZILIAN 0x01
-#define SUBLANG_SPANISH 0x01
+#define SUBLANG_SPANISH_SPAIN_TRAD 0x01
#define SUBLANG_SPANISH_MEXICAN 0x02
-#define SUBLANG_SPANISH_MODERN 0x03
+#define SUBLANG_SPANISH_SPAIN_MODERN 0x03
#define SUBLANG_SPANISH_GUATEMALA 0x04
#define SUBLANG_SPANISH_COSTARICA 0x05
#define SUBLANG_SPANISH_PANAMA 0x06
#define SUBLANG_SPANISH_DOMINICAN 0x07
#define SUBLANG_SPANISH_VENEZUELA 0x08
#define SUBLANG_SPANISH_COLOMBIA 0x09
-#define SUBLANG_SPANISH_PERU 0x10
-#define SUBLANG_SPANISH_ARGENTINA 0x11
-#define SUBLANG_SPANISH_ECUADOR 0x12
-#define SUBLANG_SPANISH_CHILE 0x13
-#define SUBLANG_SPANISH_URUGUAY 0x14
-#define SUBLANG_SPANISH_PARAGUAY 0x15
-#define SUBLANG_SPANISH_BOLIVIA 0x16
+#define SUBLANG_SPANISH_PERU 0x0a
+#define SUBLANG_SPANISH_ARGENTINA 0x0b
+#define SUBLANG_SPANISH_ECUADOR 0x0c
+#define SUBLANG_SPANISH_CHILE 0x0d
+#define SUBLANG_SPANISH_URUGUAY 0x0e
+#define SUBLANG_SPANISH_PARAGUAY 0x0f
+#define SUBLANG_SPANISH_BOLIVIA 0x10
+#define SUBLANG_SPANISH_HONDURAS 0x11
+#define SUBLANG_SPANISH_NICARAGUA 0x12
+#define SUBLANG_SPANISH_PUERTO_RICO 0x13
+
/* Sort definitions */
#define SORT_DEFAULT 0x0
diff --git a/include/wintypes.h b/include/wintypes.h
index 895676d..e3d4596 100644
--- a/include/wintypes.h
+++ b/include/wintypes.h
@@ -169,10 +169,14 @@
DECLARE_HANDLE(HWAVEOUT);
DECLARE_HANDLE(HWND);
DECLARE_HANDLE(HKL);
+DECLARE_HANDLE(HIC);
#undef DECLARE_HANDLE
/* Callback function pointers types */
+typedef BOOL32 (CALLBACK* DATEFMT_ENUMPROC32A)(LPSTR);
+typedef BOOL32 (CALLBACK* DATEFMT_ENUMPROC32W)(LPWSTR);
+DECL_WINELIB_TYPE_AW(DATEFMT_ENUMPROC)
typedef LRESULT (CALLBACK *DLGPROC16)(HWND16,UINT16,WPARAM16,LPARAM);
typedef LRESULT (CALLBACK *DLGPROC32)(HWND32,UINT32,WPARAM32,LPARAM);
DECL_WINELIB_TYPE(DLGPROC)
@@ -205,6 +209,9 @@
typedef BOOL32 (CALLBACK *PROPENUMPROCEX32A)(HWND32,LPCSTR,HANDLE32,LPARAM);
typedef BOOL32 (CALLBACK *PROPENUMPROCEX32W)(HWND32,LPCWSTR,HANDLE32,LPARAM);
DECL_WINELIB_TYPE_AW(PROPENUMPROCEX)
+typedef BOOL32 (CALLBACK* TIMEFMT_ENUMPROC32A)(LPSTR);
+typedef BOOL32 (CALLBACK* TIMEFMT_ENUMPROC32W)(LPWSTR);
+DECL_WINELIB_TYPE_AW(TIMEFMT_ENUMPROC)
typedef VOID (CALLBACK *TIMERPROC16)(HWND16,UINT16,UINT16,DWORD);
typedef VOID (CALLBACK *TIMERPROC32)(HWND32,UINT32,UINT32,DWORD);
DECL_WINELIB_TYPE(TIMERPROC)
diff --git a/include/winversion.h b/include/winversion.h
new file mode 100644
index 0000000..df6047b
--- /dev/null
+++ b/include/winversion.h
@@ -0,0 +1,16 @@
+#ifndef __WINE_WINVERSION_H
+#define __WINE_WINVERSION_H
+
+typedef enum
+{
+ WIN31, /* Windows 3.1 */
+ WIN95, /* Windows 95 */
+ NT351, /* Windows NT 3.51 */
+ NT40, /* Windows NT 4.0 */
+ NB_WINDOWS_VERSIONS
+} WINDOWS_VERSION;
+
+extern WINDOWS_VERSION VERSION_GetVersion();
+extern char *VERSION_GetVersionName();
+
+#endif /* __WINE_WINVERSION_H */
diff --git a/include/wnaspi32.h b/include/wnaspi32.h
new file mode 100644
index 0000000..b62a633
--- /dev/null
+++ b/include/wnaspi32.h
@@ -0,0 +1,96 @@
+#if !defined(WNASPI32_H)
+#define WNASPI32_H
+
+#pragma pack(1)
+
+typedef union SRB32 * LPSRB32;
+
+typedef struct tagSRB_HaInquiry32 {
+ BYTE SRB_Cmd; /* ASPI command code = SC_HA_INQUIRY */
+ BYTE SRB_Status; /* ASPI command status byte */
+ BYTE SRB_HaId; /* ASPI host adapter number */
+ BYTE SRB_Flags; /* ASPI request flags */
+ DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
+ BYTE HA_Count; /* Number of host adapters present */
+ BYTE HA_SCSI_ID; /* SCSI ID of host adapter */
+ BYTE HA_ManagerId[16]; /* String describing the manager */
+ BYTE HA_Identifier[16]; /* String describing the host adapter */
+ BYTE HA_Unique[16]; /* Host Adapter Unique parameters */
+ WORD HA_Rsvd1;
+} SRB_HaInquiry32 WINE_PACKED;
+
+typedef struct tagSRB_ExecSCSICmd32 {
+ BYTE SRB_Cmd; /* ASPI command code = SC_EXEC_SCSI_CMD */
+ BYTE SRB_Status; /* ASPI command status byte */
+ BYTE SRB_HaId; /* ASPI host adapter number */
+ BYTE SRB_Flags; /* ASPI request flags */
+ DWORD SRB_Hdr_Rsvd; /* Reserved */
+ BYTE SRB_Target; /* Target's SCSI ID */
+ BYTE SRB_Lun; /* Target's LUN number */
+ WORD SRB_Rsvd1; /* Reserved for Alignment */
+ DWORD SRB_BufLen; /* Data Allocation Length */
+ BYTE *SRB_BufPointer; /* Data Buffer Point */
+ BYTE SRB_SenseLen; /* Sense Allocation Length */
+ BYTE SRB_CDBLen; /* CDB Length */
+ BYTE SRB_HaStat; /* Host Adapter Status */
+ BYTE SRB_TargStat; /* Target Status */
+ void (*SRB_PostProc)(); /* Post routine */
+ void *SRB_Rsvd2; /* Reserved */
+ BYTE SRB_Rsvd3[16]; /* Reserved for expansion */
+ BYTE CDBByte[16]; /* SCSI CDB */
+ BYTE SenseArea[0]; /* Request sense buffer - var length */
+} SRB_ExecSCSICmd32 WINE_PACKED;
+
+typedef struct tagSRB_Abort32 {
+ BYTE SRB_Cmd; /* ASPI command code = SC_ABORT_SRB */
+ BYTE SRB_Status; /* ASPI command status byte */
+ BYTE SRB_HaId; /* ASPI host adapter number */
+ BYTE SRB_Flags; /* Reserved */
+ DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
+ LPSRB32 SRB_ToAbort; /* Pointer to SRB to abort */
+} SRB_Abort32 WINE_PACKED;
+
+typedef struct tagSRB_BusDeviceReset32 {
+ BYTE SRB_Cmd; /* ASPI command code = SC_RESET_DEV */
+ BYTE SRB_Status; /* ASPI command status byte */
+ BYTE SRB_HaId; /* ASPI host adapter number */
+ BYTE SRB_Flags; /* Reserved */
+ DWORD SRB_Hdr_Rsvd; /* Reserved */
+ BYTE SRB_Target; /* Target's SCSI ID */
+ BYTE SRB_Lun; /* Target's LUN number */
+ BYTE SRB_Rsvd1[12]; /* Reserved for Alignment */
+ BYTE SRB_HaStat; /* Host Adapter Status */
+ BYTE SRB_TargStat; /* Target Status */
+ void (*SRB_PostProc)(); /* Post routine */
+ void *SRB_Rsvd2; /* Reserved */
+ BYTE SRB_Rsvd3[32]; /* Reserved */
+} SRB_BusDeviceReset32 WINE_PACKED;
+
+typedef struct tagSRB_GDEVBlock32 {
+ BYTE SRB_Cmd; /* ASPI command code = SC_GET_DEV_TYPE */
+ BYTE SRB_Status; /* ASPI command status byte */
+ BYTE SRB_HaId; /* ASPI host adapter number */
+ BYTE SRB_Flags; /* Reserved */
+ DWORD SRB_Hdr_Rsvd; /* Reserved */
+ BYTE SRB_Target; /* Target's SCSI ID */
+ BYTE SRB_Lun; /* Target's LUN number */
+ BYTE SRB_DeviceType; /* Target's peripheral device type */
+ BYTE SRB_Rsvd1;
+} SRB_GDEVBlock32 WINE_PACKED;
+
+typedef struct tagSRB_Common32 {
+ BYTE SRB_Cmd;
+} SRB_Common32;
+
+union SRB32 {
+ SRB_Common32 common;
+ SRB_HaInquiry32 inquiry;
+ SRB_ExecSCSICmd32 cmd;
+ SRB_Abort32 abort;
+ SRB_BusDeviceReset32 reset;
+ SRB_GDEVBlock32 devtype;
+};
+
+typedef union SRB32 SRB32;
+
+#endif