- add prototypes for serial API functions
- correct existing serial API prototypes incorrectly using DWORD
  instead of HANDLE
- define more structures and values in serial API

diff --git a/include/winbase.h b/include/winbase.h
index 5061d08..8c0e23a 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -260,6 +260,8 @@
 #define CBR_19200	0xFF18
 #define CBR_38400	0xFF1B
 #define CBR_56000	0xFF1F
+#define CBR_57600       0xFF20
+#define CBR_115200      0xFF21
 #define CBR_128000	0xFF23
 #define CBR_256000	0xFF27
 
@@ -1035,7 +1037,110 @@
     char EvtChar;
 } DCB, *LPDCB;
 
+typedef struct tagCOMMCONFIG {
+	DWORD dwSize;
+	WORD  wVersion;
+	WORD  wReserved;
+	DCB   dcb;
+	DWORD dwProviderSubType;
+	DWORD dwProviderOffset;
+	DWORD dwProviderSize;
+	DWORD wcProviderData[1];
+} COMMCONFIG, *LPCOMMCONFIG;
 
+typedef struct tagCOMMPROP {
+	WORD  wPacketLength;
+	WORD  wPacketVersion;
+	DWORD dwServiceMask;
+	DWORD dwReserved1;
+	DWORD dwMaxTxQueue;
+	DWORD dwMaxRxQueue;
+	DWORD dwMaxBaud;
+	DWORD dwProvSubType;
+	DWORD dwProvCapabilities;
+	DWORD dwSettableParams;
+	DWORD dwSettableBaud;
+	WORD  wSettableData;
+	WORD  wSettableStopParity;
+	DWORD dwCurrentTxQueue;
+	DWORD dwCurrentRxQueue;
+	DWORD dwProvSpec1;
+	DWORD dwProvSpec2;
+	WCHAR wcProvChar[1];
+} COMMPROP, *LPCOMMPROP;
+
+#define SP_SERIALCOMM ((DWORD)1)
+
+#define BAUD_075     ((DWORD)0x01)
+#define BAUD_110     ((DWORD)0x02)
+#define BAUD_134_5   ((DWORD)0x04)
+#define BAUD_150     ((DWORD)0x08)
+#define BAUD_300     ((DWORD)0x10)
+#define BAUD_600     ((DWORD)0x20)
+#define BAUD_1200    ((DWORD)0x40)
+#define BAUD_1800    ((DWORD)0x80)
+#define BAUD_2400    ((DWORD)0x100)
+#define BAUD_4800    ((DWORD)0x200)
+#define BAUD_7200    ((DWORD)0x400)
+#define BAUD_9600    ((DWORD)0x800)
+#define BAUD_14400   ((DWORD)0x1000)
+#define BAUD_19200   ((DWORD)0x2000)
+#define BAUD_38400   ((DWORD)0x4000)
+#define BAUD_56K     ((DWORD)0x8000)
+#define BAUD_57600   ((DWORD)0x40000)
+#define BAUD_115200  ((DWORD)0x20000)
+#define BAUD_128K    ((DWORD)0x10000)
+#define BAUD_USER    ((DWORD)0x10000000)
+
+#define PST_FAX            ((DWORD)0x21)
+#define PST_LAT            ((DWORD)0x101)
+#define PST_MODEM          ((DWORD)0x06)
+#define PST_NETWORK_BRIDGE ((DWORD)0x100)
+#define PST_PARALLEL_PORT  ((DWORD)0x02)
+#define PST_RS232          ((DWORD)0x01)
+#define PST_RS442          ((DWORD)0x03)
+#define PST_RS423          ((DWORD)0x04)
+#define PST_RS449          ((DWORD)0x06)
+#define PST_SCANNER        ((DWORD)0x22)
+#define PST_TCPIP_TELNET   ((DWORD)0x102)
+#define PST_UNSPECIFIED    ((DWORD)0x00)
+#define PST_X25            ((DWORD)0x103)
+
+#define PCF_16BITMODE     ((DWORD)0x200)
+#define PCF_DTRDSR        ((DWORD)0x01)
+#define PCF_INTTIMEOUTS   ((DWORD)0x80)
+#define PCF_PARITY_CHECK  ((DWORD)0x08)
+#define PCF_RLSD          ((DWORD)0x04)
+#define PCF_RTSCTS        ((DWORD)0x02)
+#define PCF_SETXCHAR      ((DWORD)0x20)
+#define PCF_SPECIALCHARS  ((DWORD)0x100)
+#define PCF_TOTALTIMEOUTS ((DWORD)0x40)
+#define PCF_XONXOFF       ((DWORD)0x10)
+
+#define SP_BAUD         ((DWORD)0x02)
+#define SP_DATABITS     ((DWORD)0x04)
+#define SP_HANDSHAKING  ((DWORD)0x10)
+#define SP_PARITY       ((DWORD)0x01)
+#define SP_PARITY_CHECK ((DWORD)0x20)
+#define SP_RLSD         ((DWORD)0x40)
+#define SP_STOPBITS     ((DWORD)0x08)
+
+#define DATABITS_5   ((DWORD)0x01)
+#define DATABITS_6   ((DWORD)0x02)
+#define DATABITS_7   ((DWORD)0x04)
+#define DATABITS_8   ((DWORD)0x08)
+#define DATABITS_16  ((DWORD)0x10)
+#define DATABITS_16X ((DWORD)0x20)
+
+#define STOPBITS_10 ((DWORD)1)
+#define STOPBITS_15 ((DWORD)2)
+#define STOPBITS_20 ((DWORD)4)
+
+#define PARITY_NONE  ((DWORD)0x100)
+#define PARITY_ODD   ((DWORD)0x200)
+#define PARITY_EVEN  ((DWORD)0x400)
+#define PARITY_MARK  ((DWORD)0x800)
+#define PARITY_SPACE ((DWORD)0x1000)
 
 typedef struct tagCOMMTIMEOUTS {
 	DWORD	ReadIntervalTimeout;
@@ -1044,26 +1149,49 @@
 	DWORD	WriteTotalTimeoutMultiplier;
 	DWORD	WriteTotalTimeoutConstant;
 } COMMTIMEOUTS,*LPCOMMTIMEOUTS;
-  
+
+typedef struct tagMODEMSETTINGS {
+	DWORD dwActualSize;
+	DWORD dwRequiredSize;
+	DWORD dwDevSpecificOffset;
+	DWORD dwDevSpecificSize;
+	DWORD dwCallSetupFailTimer;
+	DWORD dwInactivityTimeout;
+	DWORD dwSpeakerVolume;
+	DWORD dwSpeakerMode;
+	DWORD dwPreferedModemOptions;
+	DWORD dwNegotiatedModemOptions;
+	DWORD dwNegotiatedDCERate;
+	BYTE  abVariablePortion[1];
+} MODEMSETTINGS, *LPMODEMSETTINGS;
+
+typedef struct tagMODEMDEVCAPS {
+	DWORD dwActualSize;
+	DWORD dwRequiredSize;
+	DWORD dwDevSpecificOffset;
+	DWORD dwDevSpecificSize;
+	DWORD dwModemProviderVersion;
+	DWORD dwModemManufacturerOffset;
+	DWORD dwModemManufacturerSize;
+	DWORD dwModemModelOffset;
+	DWORD dwModemModelSize;
+	DWORD dwModemVersionOffset;
+	DWORD dwModemVersionSize;
+	DWORD dwDialOptions;
+	DWORD dwCallSetupFailTimer;
+	DWORD dwInactivityTimeout;
+	DWORD dwSpeakerVolume;
+	DWORD dwSpeakerMode;
+	DWORD dwModemoptions;
+	DWORD dwMaxDTERate;
+	DWORD dwMaxDCERate;
+	BYTE  abVariablePortion[1];
+} MODEMDEVCAPS, *LPMODEMDEVCAPS;
+
 #include "poppack.h"
 
 typedef void CALLBACK (*PAPCFUNC)(ULONG_PTR);
 typedef void CALLBACK (*PTIMERAPCROUTINE)(LPVOID,DWORD,DWORD);
-
-BOOL      WINAPI ClearCommError(INT,LPDWORD,LPCOMSTAT);
-BOOL      WINAPI BuildCommDCBA(LPCSTR,LPDCB);
-BOOL      WINAPI BuildCommDCBW(LPCWSTR,LPDCB);
-#define     BuildCommDCB WINELIB_NAME_AW(BuildCommDCB)
-BOOL      WINAPI BuildCommDCBAndTimeoutsA(LPCSTR,LPDCB,LPCOMMTIMEOUTS);
-BOOL      WINAPI BuildCommDCBAndTimeoutsW(LPCWSTR,LPDCB,LPCOMMTIMEOUTS);
-#define     BuildCommDCBAndTimeouts WINELIB_NAME_AW(BuildCommDCBAndTimeouts)
-BOOL      WINAPI GetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
-BOOL      WINAPI SetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
-BOOL      WINAPI GetCommState(INT,LPDCB);
-BOOL      WINAPI SetCommState(INT,LPDCB);
-BOOL      WINAPI TransmitCommChar(INT,CHAR);
-BOOL      WINAPI SetupComm(HANDLE, DWORD, DWORD);
-BOOL      WINAPI GetCommProperties(HANDLE, LPDCB *);
   
 /*DWORD WINAPI GetVersion( void );*/
 BOOL16 WINAPI GetVersionEx16(OSVERSIONINFO16*);
@@ -1117,12 +1245,22 @@
 BOOL        WINAPI BackupEventLogW(HANDLE,LPCWSTR);
 #define     BackupEventLog WINELIB_NAME_AW(BackupEventLog)
 BOOL        WINAPI Beep(DWORD,DWORD);
+BOOL        WINAPI BuildCommDCBA(LPCSTR,LPDCB);
+BOOL        WINAPI BuildCommDCBW(LPCWSTR,LPDCB);
+#define     BuildCommDCB WINELIB_NAME_AW(BuildCommDCB)
+BOOL        WINAPI BuildCommDCBAndTimeoutsA(LPCSTR,LPDCB,LPCOMMTIMEOUTS);
+BOOL        WINAPI BuildCommDCBAndTimeoutsW(LPCWSTR,LPDCB,LPCOMMTIMEOUTS);
+#define     BuildCommDCBAndTimeouts WINELIB_NAME_AW(BuildCommDCBAndTimeouts)
 BOOL        WINAPI CancelWaitableTimer(HANDLE);
+BOOL        WINAPI ClearCommError(HANDLE,LPDWORD,LPCOMSTAT);
 BOOL        WINAPI ClearEventLogA(HANDLE,LPCSTR);
 BOOL        WINAPI ClearEventLogW(HANDLE,LPCWSTR);
 #define     ClearEventLog WINELIB_NAME_AW(ClearEventLog)
 BOOL        WINAPI CloseEventLog(HANDLE);
-BOOL      WINAPI CloseHandle(HANDLE);
+BOOL        WINAPI CloseHandle(HANDLE);
+BOOL        WINAPI CommConfigDialogA(LPCSTR,HANDLE,LPCOMMCONFIG);
+BOOL        WINAPI CommConfigDialogW(LPCWSTR,HANDLE,LPCOMMCONFIG);
+#define     CommConfigDialog WINELIB_NAME_AW(CommConfigDialog)
 BOOL      WINAPI ContinueDebugEvent(DWORD,DWORD,DWORD);
 HANDLE    WINAPI ConvertToGlobalHandle(HANDLE hSrc);
 BOOL      WINAPI CopyFileA(LPCSTR,LPCSTR,BOOL);
@@ -1226,7 +1364,13 @@
 BOOL      WINAPI FreeEnvironmentStringsW(LPWSTR);
 #define     FreeEnvironmentStrings WINELIB_NAME_AW(FreeEnvironmentStrings)
 PVOID       WINAPI FreeSid(PSID);
-UINT      WINAPI GetACP(void);
+UINT        WINAPI GetACP(void);
+BOOL        WINAPI GetCommConfig(HANDLE,LPCOMMCONFIG);
+BOOL        WINAPI GetCommMask(HANDLE,LPDWORD);
+BOOL        WINAPI GetCommModemStatus(HANDLE,LPDWORD);
+BOOL        WINAPI GetCommProperties(HANDLE,LPCOMMPROP);
+BOOL        WINAPI GetCommState(HANDLE,LPDCB);
+BOOL        WINAPI GetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
 LPCSTR      WINAPI GetCommandLineA(void);
 LPCWSTR     WINAPI GetCommandLineW(void);
 #define     GetCommandLine WINELIB_NAME_AW(GetCommandLine)
@@ -1239,13 +1383,14 @@
 DWORD       WINAPI GetConsoleTitleA(LPSTR,DWORD);
 DWORD       WINAPI GetConsoleTitleW(LPWSTR,DWORD);
 #define     GetConsoleTitle WINELIB_NAME_AW(GetConsoleTitle)
-BOOL        WINAPI GetCommMask(HANDLE, LPDWORD);
-BOOL        WINAPI GetCommModemStatus(HANDLE, LPDWORD);
 HANDLE      WINAPI GetCurrentProcess(void);
 HANDLE      WINAPI GetCurrentThread(void);
 INT         WINAPI GetDateFormatA(LCID,DWORD,LPSYSTEMTIME,LPCSTR,LPSTR,INT);
 INT         WINAPI GetDateFormatW(LCID,DWORD,LPSYSTEMTIME,LPCWSTR,LPWSTR,INT);
 #define     GetDateFormat WINELIB_NAME_AW(GetDateFormat)
+BOOL        WINAPI GetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,LPDWORD);
+BOOL        WINAPI GetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,LPDWORD);
+#define     GetDefaultCommConfig WINELIB_NAME_AW(GetDefaultCommConfig)
 LPSTR       WINAPI GetEnvironmentStringsA(void);
 LPWSTR      WINAPI GetEnvironmentStringsW(void);
 #define     GetEnvironmentStrings WINELIB_NAME_AW(GetEnvironmentStrings)
@@ -1408,7 +1553,10 @@
 DWORD       WINAPI SearchPathA(LPCSTR,LPCSTR,LPCSTR,DWORD,LPSTR,LPSTR*);
 DWORD       WINAPI SearchPathW(LPCWSTR,LPCWSTR,LPCWSTR,DWORD,LPWSTR,LPWSTR*);
 #define     SearchPath WINELIB_NAME_AW(SearchPath)
-BOOL      WINAPI SetCommMask(INT,DWORD);
+BOOL        WINAPI SetCommConfig(HANDLE,LPCOMMCONFIG);
+BOOL        WINAPI SetCommMask(HANDLE,DWORD);
+BOOL        WINAPI SetCommState(HANDLE,LPDCB);
+BOOL        WINAPI SetCommTimeouts(HANDLE,LPCOMMTIMEOUTS);
 BOOL      WINAPI SetComputerNameA(LPCSTR);
 BOOL      WINAPI SetComputerNameW(LPCWSTR);
 #define     SetComputerName WINELIB_NAME_AW(SetComputerName)
@@ -1416,6 +1564,9 @@
 BOOL      WINAPI SetConsoleTitleA(LPCSTR);
 BOOL      WINAPI SetConsoleTitleW(LPCWSTR);
 #define     SetConsoleTitle WINELIB_NAME_AW(SetConsoleTitle)
+BOOL        WINAPI SetDefaultCommConfigA(LPCSTR,LPCOMMCONFIG,DWORD);
+BOOL        WINAPI SetDefaultCommConfigW(LPCWSTR,LPCOMMCONFIG,DWORD);
+#define     SetDefaultCommConfig WINELIB_NAME_AW(SetDefaultCommConfig)
 BOOL      WINAPI SetEndOfFile(HANDLE);
 BOOL      WINAPI SetEnvironmentVariableA(LPCSTR,LPCSTR);
 BOOL      WINAPI SetEnvironmentVariableW(LPCWSTR,LPCWSTR);
@@ -1444,17 +1595,19 @@
 BOOL        WINAPI SetThreadPriority(HANDLE,INT);
 BOOL        WINAPI SetTimeZoneInformation(const LPTIME_ZONE_INFORMATION);
 BOOL        WINAPI SetWaitableTimer(HANDLE,const LARGE_INTEGER*,LONG,PTIMERAPCROUTINE,LPVOID,BOOL);
+BOOL        WINAPI SetupComm(HANDLE,DWORD,DWORD);
 VOID        WINAPI Sleep(DWORD);
 DWORD       WINAPI SleepEx(DWORD,BOOL);
 DWORD       WINAPI SuspendThread(HANDLE);
-BOOL      WINAPI SystemTimeToFileTime(const SYSTEMTIME*,LPFILETIME);
+BOOL        WINAPI SystemTimeToFileTime(const SYSTEMTIME*,LPFILETIME);
 DWORD       WINAPI TlsAlloc(void);
-BOOL      WINAPI TlsFree(DWORD);
+BOOL        WINAPI TlsFree(DWORD);
 LPVOID      WINAPI TlsGetValue(DWORD);
-BOOL      WINAPI TlsSetValue(DWORD,LPVOID);
+BOOL        WINAPI TlsSetValue(DWORD,LPVOID);
+BOOL        WINAPI TransmitCommChar(HANDLE,CHAR);
 VOID        WINAPI UnMapLS(SEGPTR);
-BOOL      WINAPI UnlockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
-BOOL      WINAPI UnmapViewOfFile(LPVOID);
+BOOL        WINAPI UnlockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
+BOOL        WINAPI UnmapViewOfFile(LPVOID);
 LPVOID      WINAPI VirtualAlloc(LPVOID,DWORD,DWORD,DWORD);
 BOOL      WINAPI VirtualFree(LPVOID,DWORD,DWORD);
 BOOL      WINAPI VirtualLock(LPVOID,DWORD);