diff --git a/dlls/commdlg/filedlg.c b/dlls/commdlg/filedlg.c
index 08ad4c3..86f8b70 100644
--- a/dlls/commdlg/filedlg.c
+++ b/dlls/commdlg/filedlg.c
@@ -2120,7 +2120,7 @@
  *
  * Initialisation of the shell objects
  */
-static HRESULT FILEDLG95_SHELL_Init(HWND hwnd)
+static LRESULT FILEDLG95_SHELL_Init(HWND hwnd)
 {
   FileOpenDlgInfos *fodInfos = (FileOpenDlgInfos *) GetPropA(hwnd,FileOpenDlgInfosStr);
 
diff --git a/dlls/kernel/process.c b/dlls/kernel/process.c
index 1910d72..187d6bf 100644
--- a/dlls/kernel/process.c
+++ b/dlls/kernel/process.c
@@ -2599,7 +2599,7 @@
 /***********************************************************************
  *          SetProcessAffinityMask   (KERNEL32.@)
  */
-BOOL WINAPI SetProcessAffinityMask( HANDLE hProcess, DWORD affmask )
+BOOL WINAPI SetProcessAffinityMask( HANDLE hProcess, DWORD_PTR affmask )
 {
     BOOL ret;
     SERVER_START_REQ( set_process_info )
diff --git a/dlls/kernel/sync.c b/dlls/kernel/sync.c
index 42fbd26..1845129 100644
--- a/dlls/kernel/sync.c
+++ b/dlls/kernel/sync.c
@@ -1583,10 +1583,10 @@
  *		CreateIoCompletionPort (KERNEL32.@)
  */
 HANDLE WINAPI CreateIoCompletionPort(HANDLE hFileHandle, HANDLE hExistingCompletionPort,
-                                     DWORD dwCompletionKey, DWORD dwNumberOfConcurrentThreads)
+                                     ULONG_PTR CompletionKey, DWORD dwNumberOfConcurrentThreads)
 {
     FIXME("(%p, %p, %08lx, %08lx): stub.\n",
-          hFileHandle, hExistingCompletionPort, dwCompletionKey, dwNumberOfConcurrentThreads);
+          hFileHandle, hExistingCompletionPort, CompletionKey, dwNumberOfConcurrentThreads);
     return NULL;
 }
 
@@ -1595,11 +1595,11 @@
  *		GetQueuedCompletionStatus (KERNEL32.@)
  */
 BOOL WINAPI GetQueuedCompletionStatus( HANDLE CompletionPort, LPDWORD lpNumberOfBytesTransferred,
-                                       LPDWORD lpCompletionKey, LPOVERLAPPED *lpOverlapped,
+                                       PULONG_PTR pCompletionKey, LPOVERLAPPED *lpOverlapped,
                                        DWORD dwMilliseconds )
 {
     FIXME("(%p,%p,%p,%p,%ld), stub!\n",
-          CompletionPort,lpNumberOfBytesTransferred,lpCompletionKey,lpOverlapped,dwMilliseconds);
+          CompletionPort,lpNumberOfBytesTransferred,pCompletionKey,lpOverlapped,dwMilliseconds);
     SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
     return FALSE;
 }
diff --git a/dlls/rpcrt4/rpc_server.c b/dlls/rpcrt4/rpc_server.c
index ab1a05f..f4cfc58 100644
--- a/dlls/rpcrt4/rpc_server.c
+++ b/dlls/rpcrt4/rpc_server.c
@@ -893,7 +893,7 @@
 /***********************************************************************
  *             RpcServerRegisterAuthInfoA (RPCRT4.@)
  */
-RPC_STATUS WINAPI RpcServerRegisterAuthInfoA( unsigned char *ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
+RPC_STATUS WINAPI RpcServerRegisterAuthInfoA( unsigned char *ServerPrincName, unsigned long AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
                             LPVOID Arg )
 {
   FIXME( "(%s,%lu,%p,%p): stub\n", ServerPrincName, AuthnSvc, GetKeyFn, Arg );
@@ -904,7 +904,7 @@
 /***********************************************************************
  *             RpcServerRegisterAuthInfoW (RPCRT4.@)
  */
-RPC_STATUS WINAPI RpcServerRegisterAuthInfoW( LPWSTR ServerPrincName, ULONG AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
+RPC_STATUS WINAPI RpcServerRegisterAuthInfoW( LPWSTR ServerPrincName, unsigned long AuthnSvc, RPC_AUTH_KEY_RETRIEVAL_FN GetKeyFn,
                             LPVOID Arg )
 {
   FIXME( "(%s,%lu,%p,%p): stub\n", debugstr_w( ServerPrincName ), AuthnSvc, GetKeyFn, Arg );
diff --git a/dlls/shell32/shellole.c b/dlls/shell32/shellole.c
index 7838c1c..94769d3 100644
--- a/dlls/shell32/shellole.c
+++ b/dlls/shell32/shellole.c
@@ -101,7 +101,7 @@
 
 /************************************************************************/
 
-LRESULT WINAPI SHCoCreateInstance(
+HRESULT WINAPI SHCoCreateInstance(
 	LPCWSTR aclsid,
 	const CLSID *clsid,
 	LPUNKNOWN pUnkOuter,
diff --git a/dlls/user/winproc.h b/dlls/user/winproc.h
index e550771..dd5ea18 100644
--- a/dlls/user/winproc.h
+++ b/dlls/user/winproc.h
@@ -141,6 +141,6 @@
 /* Timer functions */
 extern void TIMER_RemoveWindowTimers( HWND hwnd );
 extern void TIMER_RemoveThreadTimers(void);
-extern BOOL TIMER_IsTimerValid( HWND hwnd, UINT id, WNDPROC proc );
+extern BOOL TIMER_IsTimerValid( HWND hwnd, UINT_PTR id, WNDPROC proc );
 
 #endif  /* __WINE_WINPROC_H */
diff --git a/dlls/winmm/driver.c b/dlls/winmm/driver.c
index 4de49fa..29f33fa 100644
--- a/dlls/winmm/driver.c
+++ b/dlls/winmm/driver.c
@@ -468,7 +468,7 @@
  * 				DefDriverProc			  [WINMM.@]
  * 				DrvDefDriverProc		  [WINMM.@]
  */
-LRESULT WINAPI DefDriverProc(DWORD dwDriverIdentifier, HDRVR hDrv,
+LRESULT WINAPI DefDriverProc(DWORD_PTR dwDriverIdentifier, HDRVR hDrv,
 			     UINT Msg, LPARAM lParam1, LPARAM lParam2)
 {
     switch (Msg) {
diff --git a/dlls/winmm/winemm.h b/dlls/winmm/winemm.h
index 59db93d..ff13bf9 100644
--- a/dlls/winmm/winemm.h
+++ b/dlls/winmm/winemm.h
@@ -250,25 +250,25 @@
 UINT	WINAPI	MCI_DefYieldProc(MCIDEVICEID wDevID, DWORD data);
 LRESULT		MCI_CleanUp(LRESULT dwRet, UINT wMsg, DWORD dwParam2);
 DWORD		MCI_SendCommand(UINT wDevID, UINT16 wMsg, DWORD dwParam1, DWORD dwParam2, BOOL bFrom32);
-DWORD		MCI_SendCommandFrom32(UINT wDevID, UINT16 wMsg, DWORD dwParam1, DWORD dwParam2);
-DWORD		MCI_SendCommandFrom16(UINT wDevID, UINT16 wMsg, DWORD dwParam1, DWORD dwParam2);
+DWORD		MCI_SendCommandFrom32(UINT wDevID, UINT16 wMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
+DWORD		MCI_SendCommandFrom16(UINT wDevID, UINT16 wMsg, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
 UINT		MCI_SetCommandTable(void *table, UINT uDevType);
 
 BOOL            WINMM_CheckForMMSystem(void);
 const char*     WINMM_ErrorToString(MMRESULT error);
 
-UINT            MIXER_Open(LPHMIXER lphMix, UINT uDeviceID, DWORD dwCallback,
-                           DWORD dwInstance, DWORD fdwOpen, BOOL bFrom32);
-UINT            MIDI_OutOpen(HMIDIOUT* lphMidiOut, UINT uDeviceID, DWORD dwCallback,
-                             DWORD dwInstance, DWORD dwFlags, BOOL bFrom32);
-UINT            MIDI_InOpen(HMIDIIN* lphMidiIn, UINT uDeviceID, DWORD dwCallback,
-                            DWORD dwInstance, DWORD dwFlags, BOOL bFrom32);
+UINT            MIXER_Open(LPHMIXER lphMix, UINT uDeviceID, DWORD_PTR dwCallback,
+                           DWORD_PTR dwInstance, DWORD fdwOpen, BOOL bFrom32);
+UINT            MIDI_OutOpen(HMIDIOUT* lphMidiOut, UINT uDeviceID, DWORD_PTR dwCallback,
+                             DWORD_PTR dwInstance, DWORD dwFlags, BOOL bFrom32);
+UINT            MIDI_InOpen(HMIDIIN* lphMidiIn, UINT uDeviceID, DWORD_PTR dwCallback,
+                            DWORD_PTR dwInstance, DWORD dwFlags, BOOL bFrom32);
 MMRESULT        MIDI_StreamOpen(HMIDISTRM* lphMidiStrm, LPUINT lpuDeviceID,
-                                DWORD cMidi, DWORD dwCallback,
-                                DWORD dwInstance, DWORD fdwOpen, BOOL bFrom32);
+                                DWORD cMidi, DWORD_PTR dwCallback,
+                                DWORD_PTR dwInstance, DWORD fdwOpen, BOOL bFrom32);
 UINT            WAVE_Open(HANDLE* lphndl, UINT uDeviceID, UINT uType,
-                          const LPWAVEFORMATEX lpFormat, DWORD dwCallback, 
-                          DWORD dwInstance, DWORD dwFlags, BOOL bFrom32);
+                          const LPWAVEFORMATEX lpFormat, DWORD_PTR dwCallback, 
+                          DWORD_PTR dwInstance, DWORD dwFlags, BOOL bFrom32);
 
 HMMIO           MMIO_Open(LPSTR szFileName, MMIOINFO* refmminfo,
                           DWORD dwOpenFlags, enum mmioProcType type);
diff --git a/dlls/winmm/winmm.c b/dlls/winmm/winmm.c
index a86ae5c..4bce7f0 100644
--- a/dlls/winmm/winmm.c
+++ b/dlls/winmm/winmm.c
@@ -1678,8 +1678,8 @@
     return MIDI_GetErrorText(uError, lpText, uSize);
 }
 
-UINT MIDI_InOpen(HMIDIIN* lphMidiIn, UINT uDeviceID, DWORD dwCallback,
-                 DWORD dwInstance, DWORD dwFlags, BOOL bFrom32)
+UINT MIDI_InOpen(HMIDIIN* lphMidiIn, UINT uDeviceID, DWORD_PTR dwCallback,
+                 DWORD_PTR dwInstance, DWORD dwFlags, BOOL bFrom32)
 {
     HANDLE		hMidiIn;
     LPWINE_MIDI		lpwm;
@@ -1717,7 +1717,7 @@
  * 				midiInOpen		[WINMM.@]
  */
 UINT WINAPI midiInOpen(HMIDIIN* lphMidiIn, UINT uDeviceID,
-		       DWORD dwCallback, DWORD dwInstance, DWORD dwFlags)
+		       DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD dwFlags)
 {
     return MIDI_InOpen(lphMidiIn, uDeviceID, dwCallback, dwInstance, dwFlags, TRUE);
 }
@@ -2226,7 +2226,7 @@
  * 				MMSYSTEM_MidiStream_Open	[internal]
  */
 MMRESULT MIDI_StreamOpen(HMIDISTRM* lphMidiStrm, LPUINT lpuDeviceID, DWORD cMidi,
-                         DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen, 
+                         DWORD_PTR dwCallback, DWORD_PTR dwInstance, DWORD fdwOpen, 
                          BOOL bFrom32)
 {
     WINE_MIDIStream*	lpMidiStrm;
@@ -2293,8 +2293,8 @@
  * 				midiStreamOpen			[WINMM.@]
  */
 MMRESULT WINAPI midiStreamOpen(HMIDISTRM* lphMidiStrm, LPUINT lpuDeviceID,
-			       DWORD cMidi, DWORD dwCallback,
-			       DWORD dwInstance, DWORD fdwOpen)
+			       DWORD cMidi, DWORD_PTR dwCallback,
+			       DWORD_PTR dwInstance, DWORD fdwOpen)
 {
     return MIDI_StreamOpen(lphMidiStrm, lpuDeviceID, cMidi, dwCallback,
                            dwInstance, fdwOpen, TRUE);
@@ -2478,8 +2478,8 @@
 }
 
 UINT WAVE_Open(HANDLE* lphndl, UINT uDeviceID, UINT uType, 
-               const LPWAVEFORMATEX lpFormat, DWORD dwCallback, 
-               DWORD dwInstance, DWORD dwFlags, BOOL bFrom32)
+               const LPWAVEFORMATEX lpFormat, DWORD_PTR dwCallback, 
+               DWORD_PTR dwInstance, DWORD dwFlags, BOOL bFrom32)
 {
     HANDLE		handle;
     LPWINE_MLD		wmld;
@@ -3046,8 +3046,8 @@
  * 				waveInOpen			[WINMM.@]
  */
 UINT WINAPI waveInOpen(HWAVEIN* lphWaveIn, UINT uDeviceID,
-		       const LPWAVEFORMATEX lpFormat, DWORD dwCallback,
-		       DWORD dwInstance, DWORD dwFlags)
+		       const LPWAVEFORMATEX lpFormat, DWORD_PTR dwCallback,
+		       DWORD_PTR dwInstance, DWORD dwFlags)
 {
     return WAVE_Open((HANDLE*)lphWaveIn, uDeviceID, MMDRV_WAVEIN, lpFormat,
                      dwCallback, dwInstance, dwFlags, TRUE);
diff --git a/dlls/winsock/socket.c b/dlls/winsock/socket.c
index 16ddac1..714450f 100644
--- a/dlls/winsock/socket.c
+++ b/dlls/winsock/socket.c
@@ -2866,7 +2866,7 @@
 /***********************************************************************
  *		WSAEventSelect (WS2_32.39)
  */
-int WINAPI WSAEventSelect(SOCKET s, WSAEVENT hEvent, LONG lEvent)
+int WINAPI WSAEventSelect(SOCKET s, WSAEVENT hEvent, long lEvent)
 {
     int ret;
 
@@ -2944,7 +2944,7 @@
 /***********************************************************************
  *      WSAAsyncSelect			(WS2_32.101)
  */
-INT WINAPI WSAAsyncSelect(SOCKET s, HWND hWnd, UINT uMsg, LONG lEvent)
+INT WINAPI WSAAsyncSelect(SOCKET s, HWND hWnd, UINT uMsg, long lEvent)
 {
     int ret;
 
