- README update
- add offsets to ASPI struct defines - spelling
This commit is contained in:
parent
5448c534f3
commit
1af53cbb2a
16
README
16
README
|
@ -69,16 +69,12 @@ To build Wine, run the following commands:
|
||||||
make depend
|
make depend
|
||||||
make
|
make
|
||||||
|
|
||||||
This will build the library "libwine.a" and the program "wine".
|
This will build the program "wine" and numerous support libraries/binaries.
|
||||||
The program "wine" will load and run Windows executables.
|
The program "wine" will load and run Windows executables.
|
||||||
The library "libwine.a" can be used to compile and link Windows source
|
The library "libwine" ("Winelib") can be used to compile and link
|
||||||
code under Unix.
|
Windows source code under Unix.
|
||||||
|
|
||||||
If you do not intend to compile Windows source code, use
|
To see compile configuration options, do ./configure --help.
|
||||||
"./configure --disable-lib" to skip building the library and reduce disk
|
|
||||||
space requirements. If you have an ELF compiler (which you probably do),
|
|
||||||
you can use "./configure --enable-dll" to build a shared library instead.
|
|
||||||
To see other configuration options, do ./configure --help.
|
|
||||||
|
|
||||||
To upgrade to a new release by using a patch file, first cd to the
|
To upgrade to a new release by using a patch file, first cd to the
|
||||||
top-level directory of the release (the one containing this README
|
top-level directory of the release (the one containing this README
|
||||||
|
@ -145,7 +141,7 @@ FAQ: The Wine FAQ is located at http://www.winehq.com/faq.html.
|
||||||
WWW: A great deal of information about Wine is available from WineHQ at
|
WWW: A great deal of information about Wine is available from WineHQ at
|
||||||
http://www.winehq.com/. Untested patches against the current release
|
http://www.winehq.com/. Untested patches against the current release
|
||||||
are available on the wine-patches mailing list; see
|
are available on the wine-patches mailing list; see
|
||||||
http://www.winehq.com/dev.html#ml for more information.
|
http://www.winehq.com/dev.shtml#ml for more information.
|
||||||
|
|
||||||
HOWTO: The Wine HOWTO is available at
|
HOWTO: The Wine HOWTO is available at
|
||||||
http://www.westfalen.de/witch/wine-HOWTO.txt .
|
http://www.westfalen.de/witch/wine-HOWTO.txt .
|
||||||
|
@ -162,7 +158,7 @@ Usenet: Please browse old messages on http://www.dejanews.com/ to check whether
|
||||||
IRC: Online help is available at channel #WineHQ on IRCnet.
|
IRC: Online help is available at channel #WineHQ on IRCnet.
|
||||||
|
|
||||||
CVS: The current Wine development tree is available through CVS.
|
CVS: The current Wine development tree is available through CVS.
|
||||||
Go to http://www.winehq.com/dev.html for more information.
|
Go to http://www.winehq.com/dev.shtml for more information.
|
||||||
|
|
||||||
If you add something, or fix a bug, please send a patch ('diff -u'
|
If you add something, or fix a bug, please send a patch ('diff -u'
|
||||||
format preferred) to julliard@winehq.com for inclusion in the next
|
format preferred) to julliard@winehq.com for inclusion in the next
|
||||||
|
|
|
@ -136,7 +136,7 @@ BSTR16 WINAPI SysAllocStringLen16(const char *in, int len)
|
||||||
* SysAllocStringLen [OLEAUT32.4]
|
* SysAllocStringLen [OLEAUT32.4]
|
||||||
*
|
*
|
||||||
* In "Inside OLE, second edition" by Kraig Brockshmidt. In the Automation
|
* In "Inside OLE, second edition" by Kraig Brockshmidt. In the Automation
|
||||||
* section, he describes the DWORD value placed before the BSTR data type.
|
* section, he describes the DWORD value placed *before* the BSTR data type.
|
||||||
* he describes it as a "DWORD count of characters". By experimenting with
|
* he describes it as a "DWORD count of characters". By experimenting with
|
||||||
* a windows application, this count seems to be a DWORD count of bytes in
|
* a windows application, this count seems to be a DWORD count of bytes in
|
||||||
* the string. Meaning that the count is double the number of wide
|
* the string. Meaning that the count is double the number of wide
|
||||||
|
@ -149,13 +149,13 @@ BSTR WINAPI SysAllocStringLen(const OLECHAR *in, unsigned int len)
|
||||||
WCHAR* stringBuffer;
|
WCHAR* stringBuffer;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the lenth of the buffer passed-in in bytes.
|
* Find the length of the buffer passed-in in bytes.
|
||||||
*/
|
*/
|
||||||
bufferSize = len * sizeof (WCHAR);
|
bufferSize = len * sizeof (WCHAR);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate a new buffer to hold the string.
|
* Allocate a new buffer to hold the string.
|
||||||
* dont't forget to keep an empty spot at the begining of the
|
* dont't forget to keep an empty spot at the beginning of the
|
||||||
* buffer for the character count and an extra character at the
|
* buffer for the character count and an extra character at the
|
||||||
* end for the NULL.
|
* end for the NULL.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -63,7 +63,7 @@ static BOOL MIX_GetVal(int chn, int* val)
|
||||||
WARN("mixer device not available !\n");
|
WARN("mixer device not available !\n");
|
||||||
} else {
|
} else {
|
||||||
if (ioctl(mixer, MIXER_READ(chn), val) >= 0) {
|
if (ioctl(mixer, MIXER_READ(chn), val) >= 0) {
|
||||||
TRACE("Reading %x on %d\n", *val, chn);
|
TRACE("Reading volume %x on %d\n", *val, chn);
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
}
|
}
|
||||||
close(mixer);
|
close(mixer);
|
||||||
|
@ -79,7 +79,7 @@ static BOOL MIX_SetVal(int chn, int val)
|
||||||
int mixer;
|
int mixer;
|
||||||
BOOL ret = FALSE;
|
BOOL ret = FALSE;
|
||||||
|
|
||||||
TRACE("Writing %x on %d\n", val, chn);
|
TRACE("Writing volume %x on %d\n", val, chn);
|
||||||
|
|
||||||
if ((mixer = open(MIXER_DEV, O_RDWR)) < 0) {
|
if ((mixer = open(MIXER_DEV, O_RDWR)) < 0) {
|
||||||
/* FIXME: ENXIO => no mixer installed */
|
/* FIXME: ENXIO => no mixer installed */
|
||||||
|
@ -199,7 +199,7 @@ static DWORD MIX_GetLineInfo(WORD wDevID, LPMIXERLINEA lpMl, DWORD fdwInfo)
|
||||||
TRACE("SOURCE (%08lx)\n", lpMl->dwSource);
|
TRACE("SOURCE (%08lx)\n", lpMl->dwSource);
|
||||||
i = lpMl->dwSource;
|
i = lpMl->dwSource;
|
||||||
for (j = 1; j < SOUND_MIXER_NRDEVICES; j++) {
|
for (j = 1; j < SOUND_MIXER_NRDEVICES; j++) {
|
||||||
if (WINE_CHN_SUPPORTS(MIX_DevMask, j) && (i-- == 0))
|
if (WINE_CHN_SUPPORTS(MIX_DevMask, j) && (i-- == 0))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (j >= SOUND_MIXER_NRDEVICES)
|
if (j >= SOUND_MIXER_NRDEVICES)
|
||||||
|
|
|
@ -40,7 +40,7 @@ typedef struct tagSMSG
|
||||||
HQUEUE16 hSrcQueue; /* sending Queue, (NULL if it didn't wait) */
|
HQUEUE16 hSrcQueue; /* sending Queue, (NULL if it didn't wait) */
|
||||||
HQUEUE16 hDstQueue; /* destination Queue */
|
HQUEUE16 hDstQueue; /* destination Queue */
|
||||||
|
|
||||||
HWND hWnd; /* destinantion window */
|
HWND hWnd; /* destination window */
|
||||||
UINT msg; /* message sent */
|
UINT msg; /* message sent */
|
||||||
WPARAM wParam; /* wParam of the sent message */
|
WPARAM wParam; /* wParam of the sent message */
|
||||||
LPARAM lParam; /* lParam of the sent message */
|
LPARAM lParam; /* lParam of the sent message */
|
||||||
|
@ -65,7 +65,7 @@ typedef struct tagSMSG
|
||||||
#define SMSG_EARLY_REPLY 0x0080
|
#define SMSG_EARLY_REPLY 0x0080
|
||||||
/* set when sender is Win32 thread */
|
/* set when sender is Win32 thread */
|
||||||
#define SMSG_WIN32 0x1000
|
#define SMSG_WIN32 0x1000
|
||||||
/* set when sender is a unnicode thread */
|
/* set when sender is a unicode thread */
|
||||||
#define SMSG_UNICODE 0x2000
|
#define SMSG_UNICODE 0x2000
|
||||||
|
|
||||||
/* Per-queue data for the message queue
|
/* Per-queue data for the message queue
|
||||||
|
|
|
@ -90,105 +90,105 @@ extern "C" {
|
||||||
|
|
||||||
/* SRB - HOST ADAPTER INQUIRY - SC_HA_INQUIRY */
|
/* SRB - HOST ADAPTER INQUIRY - SC_HA_INQUIRY */
|
||||||
typedef struct tagSRB32_HaInquiry {
|
typedef struct tagSRB32_HaInquiry {
|
||||||
BYTE SRB_Cmd; /* ASPI command code = SC_HA_INQUIRY */
|
BYTE SRB_Cmd; /* 00 ASPI command code = SC_HA_INQUIRY */
|
||||||
BYTE SRB_Status; /* ASPI command status byte */
|
BYTE SRB_Status; /* 01 ASPI command status byte */
|
||||||
BYTE SRB_HaId; /* ASPI host adapter number */
|
BYTE SRB_HaId; /* 02 ASPI host adapter number */
|
||||||
BYTE SRB_Flags; /* ASPI request flags */
|
BYTE SRB_Flags; /* 03 ASPI request flags */
|
||||||
DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
|
DWORD SRB_Hdr_Rsvd; /* 04 Reserved, MUST = 0 */
|
||||||
BYTE HA_Count; /* Number of host adapters present */
|
BYTE HA_Count; /* 08 Number of host adapters present */
|
||||||
BYTE HA_SCSI_ID; /* SCSI ID of host adapter */
|
BYTE HA_SCSI_ID; /* 09 SCSI ID of host adapter */
|
||||||
BYTE HA_ManagerId[16]; /* String describing the manager */
|
BYTE HA_ManagerId[16]; /* 0A String describing the manager */
|
||||||
BYTE HA_Identifier[16]; /* String describing the host adapter */
|
BYTE HA_Identifier[16]; /* 1A String describing the host adapter */
|
||||||
BYTE HA_Unique[16]; /* Host Adapter Unique parameters */
|
BYTE HA_Unique[16]; /* 2A Host Adapter Unique parameters */
|
||||||
WORD HA_Rsvd1;
|
WORD HA_Rsvd1;
|
||||||
} SRB_HaInquiry, *PSRB_HaInquiry;
|
} SRB_HaInquiry, *PSRB_HaInquiry;
|
||||||
|
|
||||||
/* SRB - GET DEVICE TYPE - SC_GET_DEV_TYPE */
|
/* SRB - GET DEVICE TYPE - SC_GET_DEV_TYPE */
|
||||||
typedef struct tagSRB32_GDEVBlock {
|
typedef struct tagSRB32_GDEVBlock {
|
||||||
BYTE SRB_Cmd; /* ASPI command code = SC_GET_DEV_TYPE */
|
BYTE SRB_Cmd; /* 00 ASPI command code = SC_GET_DEV_TYPE */
|
||||||
BYTE SRB_Status; /* ASPI command status byte */
|
BYTE SRB_Status; /* 01 ASPI command status byte */
|
||||||
BYTE SRB_HaId; /* ASPI host adapter number */
|
BYTE SRB_HaId; /* 02 ASPI host adapter number */
|
||||||
BYTE SRB_Flags; /* Reserved */
|
BYTE SRB_Flags; /* 03 Reserved */
|
||||||
DWORD SRB_Hdr_Rsvd; /* Reserved */
|
DWORD SRB_Hdr_Rsvd; /* 04 Reserved */
|
||||||
BYTE SRB_Target; /* Target's SCSI ID */
|
BYTE SRB_Target; /* 08 Target's SCSI ID */
|
||||||
BYTE SRB_Lun; /* Target's LUN number */
|
BYTE SRB_Lun; /* 09 Target's LUN number */
|
||||||
BYTE SRB_DeviceType; /* Target's peripheral device type */
|
BYTE SRB_DeviceType; /* 0A Target's peripheral device type */
|
||||||
BYTE SRB_Rsvd1;
|
BYTE SRB_Rsvd1;
|
||||||
} SRB_GDEVBlock, *PSRB_GDEVBlock;
|
} SRB_GDEVBlock, *PSRB_GDEVBlock;
|
||||||
|
|
||||||
/* SRB - EXECUTE SCSI COMMAND - SC_EXEC_SCSI_CMD */
|
/* SRB - EXECUTE SCSI COMMAND - SC_EXEC_SCSI_CMD */
|
||||||
typedef struct tagSRB32_ExecSCSICmd {
|
typedef struct tagSRB32_ExecSCSICmd {
|
||||||
BYTE SRB_Cmd; /* ASPI command code = SC_EXEC_SCSI_CMD */
|
BYTE SRB_Cmd; /* 00 ASPI command code = SC_EXEC_SCSI_CMD */
|
||||||
BYTE SRB_Status; /* ASPI command status byte */
|
BYTE SRB_Status; /* 01 ASPI command status byte */
|
||||||
BYTE SRB_HaId; /* ASPI host adapter number */
|
BYTE SRB_HaId; /* 02 ASPI host adapter number */
|
||||||
BYTE SRB_Flags; /* ASPI request flags */
|
BYTE SRB_Flags; /* 03 ASPI request flags */
|
||||||
DWORD SRB_Hdr_Rsvd; /* Reserved */
|
DWORD SRB_Hdr_Rsvd; /* 04 Reserved */
|
||||||
BYTE SRB_Target; /* Target's SCSI ID */
|
BYTE SRB_Target; /* 08 Target's SCSI ID */
|
||||||
BYTE SRB_Lun; /* Target's LUN number */
|
BYTE SRB_Lun; /* 09 Target's LUN number */
|
||||||
WORD SRB_Rsvd1; /* Reserved for Alignment */
|
WORD SRB_Rsvd1; /* 0A Reserved for Alignment */
|
||||||
DWORD SRB_BufLen; /* Data Allocation Length */
|
DWORD SRB_BufLen; /* 0C Data Allocation Length */
|
||||||
BYTE *SRB_BufPointer; /* Data Buffer Point */
|
BYTE *SRB_BufPointer; /* 10 Data Buffer Point */
|
||||||
BYTE SRB_SenseLen; /* Sense Allocation Length */
|
BYTE SRB_SenseLen; /* 14 Sense Allocation Length */
|
||||||
BYTE SRB_CDBLen; /* CDB Length */
|
BYTE SRB_CDBLen; /* 15 CDB Length */
|
||||||
BYTE SRB_HaStat; /* Host Adapter Status */
|
BYTE SRB_HaStat; /* 16 Host Adapter Status */
|
||||||
BYTE SRB_TargStat; /* Target Status */
|
BYTE SRB_TargStat; /* 17 Target Status */
|
||||||
void (*SRB_PostProc)(); /* Post routine */
|
void (*SRB_PostProc)(); /* 18 Post routine */
|
||||||
void *SRB_Rsvd2; /* Reserved */
|
void *SRB_Rsvd2; /* 1C Reserved */
|
||||||
BYTE SRB_Rsvd3[16]; /* Reserved for expansion */
|
BYTE SRB_Rsvd3[16]; /* 20 Reserved for expansion */
|
||||||
BYTE CDBByte[16]; /* SCSI CDB */
|
BYTE CDBByte[16]; /* 30 SCSI CDB */
|
||||||
BYTE SenseArea[SENSE_LEN+2]; /* Request sense buffer - var length */
|
BYTE SenseArea[SENSE_LEN+2]; /* 40 Request sense buffer - var length */
|
||||||
} SRB_ExecSCSICmd, *PSRB_ExecSCSICmd;
|
} SRB_ExecSCSICmd, *PSRB_ExecSCSICmd;
|
||||||
|
|
||||||
/* SRB - ABORT AN ARB - SC_ABORT_SRB */
|
/* SRB - ABORT AN ARB - SC_ABORT_SRB */
|
||||||
typedef struct tagSRB32_Abort {
|
typedef struct tagSRB32_Abort {
|
||||||
BYTE SRB_Cmd; /* ASPI command code = SC_ABORT_SRB */
|
BYTE SRB_Cmd; /* 00 ASPI command code = SC_ABORT_SRB */
|
||||||
BYTE SRB_Status; /* ASPI command status byte */
|
BYTE SRB_Status; /* 01 ASPI command status byte */
|
||||||
BYTE SRB_HaId; /* ASPI host adapter number */
|
BYTE SRB_HaId; /* 02 ASPI host adapter number */
|
||||||
BYTE SRB_Flags; /* Reserved */
|
BYTE SRB_Flags; /* 03 Reserved */
|
||||||
DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */
|
DWORD SRB_Hdr_Rsvd; /* 04 Reserved, MUST = 0 */
|
||||||
VOID *SRB_ToAbort; /* Pointer to SRB to abort */
|
VOID *SRB_ToAbort; /* 08 Pointer to SRB to abort */
|
||||||
} SRB_Abort, *PSRB_Abort;
|
} SRB_Abort, *PSRB_Abort;
|
||||||
|
|
||||||
/* SRB - BUS DEVICE RESET - SC_RESET_DEV */
|
/* SRB - BUS DEVICE RESET - SC_RESET_DEV */
|
||||||
typedef struct tagSRB32_BusDeviceReset {
|
typedef struct tagSRB32_BusDeviceReset {
|
||||||
BYTE SRB_Cmd; /* ASPI command code = SC_RESET_DEV */
|
BYTE SRB_Cmd; /* 00 ASPI cmd code = SC_RESET_DEV */
|
||||||
BYTE SRB_Status; /* ASPI command status byte */
|
BYTE SRB_Status; /* 01 ASPI command status byte */
|
||||||
BYTE SRB_HaId; /* ASPI host adapter number */
|
BYTE SRB_HaId; /* 02 ASPI host adapter number */
|
||||||
BYTE SRB_Flags; /* Reserved */
|
BYTE SRB_Flags; /* 03 Reserved */
|
||||||
DWORD SRB_Hdr_Rsvd; /* Reserved */
|
DWORD SRB_Hdr_Rsvd; /* 04 Reserved */
|
||||||
BYTE SRB_Target; /* Target's SCSI ID */
|
BYTE SRB_Target; /* 08 Target's SCSI ID */
|
||||||
BYTE SRB_Lun; /* Target's LUN number */
|
BYTE SRB_Lun; /* 09 Target's LUN number */
|
||||||
BYTE SRB_Rsvd1[12]; /* Reserved for Alignment */
|
BYTE SRB_Rsvd1[12]; /* 0A Reserved for Alignment */
|
||||||
BYTE SRB_HaStat; /* Host Adapter Status */
|
BYTE SRB_HaStat; /* 16 Host Adapter Status */
|
||||||
BYTE SRB_TargStat; /* Target Status */
|
BYTE SRB_TargStat; /* 17 Target Status */
|
||||||
void (*SRB_PostProc)(); /* Post routine */
|
void (*SRB_PostProc)(); /* 18 Post routine */
|
||||||
void *SRB_Rsvd2; /* Reserved */
|
void *SRB_Rsvd2; /* 1c Reserved */
|
||||||
BYTE SRB_Rsvd3[32]; /* Reserved */
|
BYTE SRB_Rsvd3[32]; /* 20 Reserved */
|
||||||
} SRB_BusDeviceReset, *PSRB_BusDeviceReset;
|
} SRB_BusDeviceReset, *PSRB_BusDeviceReset;
|
||||||
|
|
||||||
/* SRB - GET DISK INFORMATION - SC_GET_DISK_INFO */
|
/* SRB - GET DISK INFORMATION - SC_GET_DISK_INFO */
|
||||||
typedef struct tagSRB32_GetDiskInfo {
|
typedef struct tagSRB32_GetDiskInfo {
|
||||||
BYTE SRB_Cmd; /* ASPI command code = SC_RESET_DEV */
|
BYTE SRB_Cmd; /* 00 ASPI cmd code = SC_RESET_DEV */
|
||||||
BYTE SRB_Status; /* ASPI command status byte */
|
BYTE SRB_Status; /* 01 ASPI command status byte */
|
||||||
BYTE SRB_HaId; /* ASPI host adapter number */
|
BYTE SRB_HaId; /* 02 ASPI host adapter number */
|
||||||
BYTE SRB_Flags; /* Reserved */
|
BYTE SRB_Flags; /* 03 Reserved */
|
||||||
DWORD SRB_Hdr_Rsvd; /* Reserved */
|
DWORD SRB_Hdr_Rsvd; /* 04 Reserved */
|
||||||
BYTE SRB_Target; /* Target's SCSI ID */
|
BYTE SRB_Target; /* 08 Target's SCSI ID */
|
||||||
BYTE SRB_Lun; /* Target's LUN number */
|
BYTE SRB_Lun; /* 09 Target's LUN number */
|
||||||
BYTE SRB_DriveFlags; /* Driver flags */
|
BYTE SRB_DriveFlags; /* 0A Driver flags */
|
||||||
BYTE SRB_Int13HDriveInfo; /* Host Adapter Status */
|
BYTE SRB_Int13HDriveInfo; /* 0B Host Adapter Status */
|
||||||
BYTE SRB_Heads; /* Preferred number of heads trans */
|
BYTE SRB_Heads; /* 0C Preferred number of heads trans */
|
||||||
BYTE SRB_Sectors; /* Preferred number of sectors trans */
|
BYTE SRB_Sectors; /* 0D Preferred number of sectors trans */
|
||||||
BYTE SRB_Rsvd1[10]; /* Reserved */
|
BYTE SRB_Rsvd1[10]; /* 0E Reserved */
|
||||||
} SRB_GetDiskInfo, *PSRB_GetDiskInfo;
|
} SRB_GetDiskInfo, *PSRB_GetDiskInfo;
|
||||||
|
|
||||||
/* SRB header */
|
/* SRB header */
|
||||||
typedef struct tagSRB32_Header {
|
typedef struct tagSRB32_Header {
|
||||||
BYTE SRB_Cmd; /* ASPI command code = SC_RESET_DEV */
|
BYTE SRB_Cmd; /* 00 ASPI cmd code = SC_RESET_DEV */
|
||||||
BYTE SRB_Status; /* ASPI command status byte */
|
BYTE SRB_Status; /* 01 ASPI command status byte */
|
||||||
BYTE SRB_HaId; /* ASPI host adapter number */
|
BYTE SRB_HaId; /* 02 ASPI host adapter number */
|
||||||
BYTE SRB_Flags; /* Reserved */
|
BYTE SRB_Flags; /* 03 Reserved */
|
||||||
DWORD SRB_Hdr_Rsvd; /* Reserved */
|
DWORD SRB_Hdr_Rsvd; /* 04 Reserved */
|
||||||
} SRB_Header, *PSRB_Header;
|
} SRB_Header, *PSRB_Header;
|
||||||
|
|
||||||
typedef union tagSRB32 {
|
typedef union tagSRB32 {
|
||||||
|
|
|
@ -156,11 +156,11 @@ void MAIN_ParseDebugOptions( const char *arg )
|
||||||
|
|
||||||
error:
|
error:
|
||||||
MESSAGE("%s: Syntax: --debugmsg [class]+xxx,... or "
|
MESSAGE("%s: Syntax: --debugmsg [class]+xxx,... or "
|
||||||
"-debugmsg [class]-xxx,...\n",argv0);
|
"--debugmsg [class]-xxx,...\n",argv0);
|
||||||
MESSAGE("Example: --debugmsg +all,warn-heap\n"
|
MESSAGE("Example: --debugmsg +all,warn-heap\n"
|
||||||
" turn on all messages except warning heap messages\n");
|
" turn on all messages except warning heap messages\n");
|
||||||
MESSAGE("Special case: --debugmsg +relay=DLL:DLL.###:FuncName\n"
|
MESSAGE("Special case: --debugmsg +relay=DLL:DLL.###:FuncName\n"
|
||||||
" turn on -debugmsg +relay only as specified\n"
|
" turn on --debugmsg +relay only as specified\n"
|
||||||
"Special case: --debugmsg -relay=DLL:DLL.###:FuncName\n"
|
"Special case: --debugmsg -relay=DLL:DLL.###:FuncName\n"
|
||||||
" turn on --debugmsg +relay except as specified\n"
|
" turn on --debugmsg +relay except as specified\n"
|
||||||
"Also permitted, +snoop=..., -snoop=... as with relay.\n\n");
|
"Also permitted, +snoop=..., -snoop=... as with relay.\n\n");
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
* win31->NT migration book)
|
* win31->NT migration book)
|
||||||
*
|
*
|
||||||
* FIXME: There seems to be a general problem with hInstance in WINE
|
* FIXME: There seems to be a general problem with hInstance in WINE
|
||||||
* classes are getting registred with wrong hInstance.
|
* classes are getting registered with wrong hInstance.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
|
@ -361,7 +361,7 @@ END:
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* MSG_TranslateKbdMsg
|
* MSG_TranslateKbdMsg
|
||||||
*
|
*
|
||||||
* Translate an keyboard hardware event into a real message.
|
* Translate a keyboard hardware event into a real message.
|
||||||
*/
|
*/
|
||||||
static DWORD MSG_TranslateKbdMsg( HWND hTopWnd, DWORD first, DWORD last,
|
static DWORD MSG_TranslateKbdMsg( HWND hTopWnd, DWORD first, DWORD last,
|
||||||
MSG *msg, BOOL remove )
|
MSG *msg, BOOL remove )
|
||||||
|
@ -508,7 +508,7 @@ static int MSG_JournalPlayBackMsg(void)
|
||||||
if (wtime<=0)
|
if (wtime<=0)
|
||||||
{
|
{
|
||||||
wtime=0;
|
wtime=0;
|
||||||
if ((tmpMsg->message>= WM_KEYFIRST) && (tmpMsg->message <= WM_KEYLAST))
|
if ((tmpMsg->message >= WM_KEYFIRST) && (tmpMsg->message <= WM_KEYLAST))
|
||||||
{
|
{
|
||||||
wParam=tmpMsg->paramL & 0xFF;
|
wParam=tmpMsg->paramL & 0xFF;
|
||||||
lParam=MAKELONG(tmpMsg->paramH&0x7ffff,tmpMsg->paramL>>8);
|
lParam=MAKELONG(tmpMsg->paramH&0x7ffff,tmpMsg->paramL>>8);
|
||||||
|
@ -590,8 +590,6 @@ static int MSG_JournalPlayBackMsg(void)
|
||||||
static BOOL MSG_PeekHardwareMsg( MSG *msg, HWND hwnd, DWORD first, DWORD last,
|
static BOOL MSG_PeekHardwareMsg( MSG *msg, HWND hwnd, DWORD first, DWORD last,
|
||||||
BOOL remove )
|
BOOL remove )
|
||||||
{
|
{
|
||||||
/* FIXME: should deal with MSG32 instead of MSG16 */
|
|
||||||
|
|
||||||
DWORD status = SYSQ_MSG_ACCEPT;
|
DWORD status = SYSQ_MSG_ACCEPT;
|
||||||
MESSAGEQUEUE *sysMsgQueue = QUEUE_GetSysQueue();
|
MESSAGEQUEUE *sysMsgQueue = QUEUE_GetSysQueue();
|
||||||
enum { MOUSE_MSG = 0, KEYBOARD_MSG, HARDWARE_MSG } msgType;
|
enum { MOUSE_MSG = 0, KEYBOARD_MSG, HARDWARE_MSG } msgType;
|
||||||
|
@ -789,7 +787,7 @@ UINT WINAPI GetDoubleClickTime(void)
|
||||||
* Implementation of an inter-task SendMessage.
|
* Implementation of an inter-task SendMessage.
|
||||||
* Return values:
|
* Return values:
|
||||||
* 0 if error or timeout
|
* 0 if error or timeout
|
||||||
* 1 if successflul
|
* 1 if successful
|
||||||
*/
|
*/
|
||||||
static LRESULT MSG_SendMessageInterThread( HQUEUE16 hDestQueue,
|
static LRESULT MSG_SendMessageInterThread( HQUEUE16 hDestQueue,
|
||||||
HWND hwnd, UINT msg,
|
HWND hwnd, UINT msg,
|
||||||
|
@ -2204,7 +2202,7 @@ static BOOL MSG_DoTranslateMessage( UINT message, HWND hwnd,
|
||||||
/* FIXME : should handle ToUnicode yielding 2 */
|
/* FIXME : should handle ToUnicode yielding 2 */
|
||||||
switch (ToUnicode(wParam, HIWORD(lParam), QueueKeyStateTable, wp, 2, 0))
|
switch (ToUnicode(wParam, HIWORD(lParam), QueueKeyStateTable, wp, 2, 0))
|
||||||
{
|
{
|
||||||
case 1 :
|
case 1:
|
||||||
message = (message == WM_KEYDOWN) ? WM_CHAR : WM_SYSCHAR;
|
message = (message == WM_KEYDOWN) ? WM_CHAR : WM_SYSCHAR;
|
||||||
/* Should dead chars handling go in ToAscii ? */
|
/* Should dead chars handling go in ToAscii ? */
|
||||||
if (dead_char)
|
if (dead_char)
|
||||||
|
@ -2232,7 +2230,7 @@ static BOOL MSG_DoTranslateMessage( UINT message, HWND hwnd,
|
||||||
PostMessageW( hwnd, message, wp[0], lParam );
|
PostMessageW( hwnd, message, wp[0], lParam );
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
||||||
case -1 :
|
case -1:
|
||||||
message = (message == WM_KEYDOWN) ? WM_DEADCHAR : WM_SYSDEADCHAR;
|
message = (message == WM_KEYDOWN) ? WM_DEADCHAR : WM_SYSDEADCHAR;
|
||||||
dead_char = wp[0];
|
dead_char = wp[0];
|
||||||
TRACE_(key)("-1 -> PostMessage(%s)\n", SPY_GetMsgName(message));
|
TRACE_(key)("-1 -> PostMessage(%s)\n", SPY_GetMsgName(message));
|
||||||
|
@ -2293,9 +2291,9 @@ LONG WINAPI DispatchMessage16( const MSG16* msg )
|
||||||
{
|
{
|
||||||
if (msg->lParam)
|
if (msg->lParam)
|
||||||
{
|
{
|
||||||
/* before calling window proc, verify it the timer is still valid,
|
/* before calling window proc, verify whether timer is still valid;
|
||||||
there's a slim chance the application kill the timer between
|
there's a slim chance that the application kills the timer
|
||||||
getMessage and DisaptachMessage API calls */
|
between GetMessage and DispatchMessage API calls */
|
||||||
if (!TIMER_IsTimerValid(msg->hwnd, (UINT) msg->wParam, (HWINDOWPROC) msg->lParam))
|
if (!TIMER_IsTimerValid(msg->hwnd, (UINT) msg->wParam, (HWINDOWPROC) msg->lParam))
|
||||||
return 0; /* invalid winproc */
|
return 0; /* invalid winproc */
|
||||||
|
|
||||||
|
@ -2377,9 +2375,9 @@ LONG WINAPI DispatchMessageA( const MSG* msg )
|
||||||
{
|
{
|
||||||
/* HOOK_CallHooks32A( WH_CALLWNDPROC, HC_ACTION, 0, FIXME ); */
|
/* HOOK_CallHooks32A( WH_CALLWNDPROC, HC_ACTION, 0, FIXME ); */
|
||||||
|
|
||||||
/* before calling window proc, verify it the timer is still valid,
|
/* before calling window proc, verify whether timer is still valid;
|
||||||
there's a slim chance the application kill the timer between
|
there's a slim chance that the application kills the timer
|
||||||
getMessage and DisaptachMessage API calls */
|
between GetMessage and DispatchMessage API calls */
|
||||||
if (!TIMER_IsTimerValid(msg->hwnd, (UINT) msg->wParam, (HWINDOWPROC) msg->lParam))
|
if (!TIMER_IsTimerValid(msg->hwnd, (UINT) msg->wParam, (HWINDOWPROC) msg->lParam))
|
||||||
return 0; /* invalid winproc */
|
return 0; /* invalid winproc */
|
||||||
|
|
||||||
|
@ -2460,9 +2458,9 @@ LONG WINAPI DispatchMessageW( const MSG* msg )
|
||||||
{
|
{
|
||||||
/* HOOK_CallHooks32W( WH_CALLWNDPROC, HC_ACTION, 0, FIXME ); */
|
/* HOOK_CallHooks32W( WH_CALLWNDPROC, HC_ACTION, 0, FIXME ); */
|
||||||
|
|
||||||
/* before calling window proc, verify it the timer is still valid,
|
/* before calling window proc, verify whether timer is still valid;
|
||||||
there's a slim chance the application kill the timer between
|
there's a slim chance that the application kills the timer
|
||||||
getMessage and DisaptachMessage API calls */
|
between GetMessage and DispatchMessage API calls */
|
||||||
if (!TIMER_IsTimerValid(msg->hwnd, (UINT) msg->wParam, (HWINDOWPROC) msg->lParam))
|
if (!TIMER_IsTimerValid(msg->hwnd, (UINT) msg->wParam, (HWINDOWPROC) msg->lParam))
|
||||||
return 0; /* invalid winproc */
|
return 0; /* invalid winproc */
|
||||||
|
|
||||||
|
@ -2598,8 +2596,10 @@ BOOL WINAPI SendNotifyMessageW(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* SendMessageCallbackA
|
* SendMessageCallbackA
|
||||||
* FIXME: It's like PostMessage. The callback gets called when the message
|
* FIXME: It's like PostMessage. The callback gets called when the message
|
||||||
* is processed. We have to modify the message processing for a exact
|
* is processed. We have to modify the message processing for an exact
|
||||||
* implementation...
|
* implementation...
|
||||||
|
* The callback is only called when the thread that called us calls one of
|
||||||
|
* Get/Peek/WaitMessage.
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI SendMessageCallbackA(
|
BOOL WINAPI SendMessageCallbackA(
|
||||||
HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,
|
HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,
|
||||||
|
@ -2617,9 +2617,7 @@ BOOL WINAPI SendMessageCallbackA(
|
||||||
}
|
}
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* SendMessageCallbackW
|
* SendMessageCallbackW
|
||||||
* FIXME: It's like PostMessage. The callback gets called when the message
|
* FIXME: see SendMessageCallbackA.
|
||||||
* is processed. We have to modify the message processing for a exact
|
|
||||||
* implementation...
|
|
||||||
*/
|
*/
|
||||||
BOOL WINAPI SendMessageCallbackW(
|
BOOL WINAPI SendMessageCallbackW(
|
||||||
HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,
|
HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,
|
||||||
|
|
Loading…
Reference in New Issue