Add exclusion defs & remaining funcs, remove internal types &
obj_base.h (sync with win version), fixed a number of function
prototypes.

diff --git a/dlls/comctl32/commctrl.c b/dlls/comctl32/commctrl.c
index 68b546e..12dc25f 100644
--- a/dlls/comctl32/commctrl.c
+++ b/dlls/comctl32/commctrl.c
@@ -7,12 +7,14 @@
  */
 
 #include <string.h>
+#include <stdlib.h>
 
 #include "winbase.h"
 #include "heap.h"
 #include "commctrl.h"
 #include "winerror.h"
 #include "winreg.h"
+#define NO_SHLWAPI_STREAM
 #include "shlwapi.h"
 #include "comctl32.h"
 #include "debugtools.h"
diff --git a/dlls/commdlg/filedlgbrowser.c b/dlls/commdlg/filedlgbrowser.c
index 9219578..c5d071e 100644
--- a/dlls/commdlg/filedlgbrowser.c
+++ b/dlls/commdlg/filedlgbrowser.c
@@ -14,6 +14,7 @@
 #include "winuser.h"
 #include "winreg.h"
 
+#define NO_SHLWAPI_STREAM
 #include "shlwapi.h"
 #include "filedlgbrowser.h"
 #include "cdlg.h"
diff --git a/dlls/richedit/richedit.c b/dlls/richedit/richedit.c
index 29a4472..166c73f 100644
--- a/dlls/richedit/richedit.c
+++ b/dlls/richedit/richedit.c
@@ -18,6 +18,7 @@
 #include "riched32.h"
 #include "richedit.h"
 #include "charlist.h"
+#define NO_SHLWAPI_STREAM
 #include "shlwapi.h"
 
 #include "rtf.h"
diff --git a/dlls/shell32/clipboard.c b/dlls/shell32/clipboard.c
index c4f5e8a..d58f12a 100644
--- a/dlls/shell32/clipboard.c
+++ b/dlls/shell32/clipboard.c
@@ -22,10 +22,10 @@
 #include <string.h>
 
 #include "winreg.h"
-#include "shlwapi.h"
 #include "pidl.h"
 #include "undocshell.h"
 #include "shell32_main.h"
+#include "shlwapi.h"
 
 #include "debugtools.h"
 
diff --git a/dlls/shell32/shellord.c b/dlls/shell32/shellord.c
index 56ce38b..639aaa3 100644
--- a/dlls/shell32/shellord.c
+++ b/dlls/shell32/shellord.c
@@ -13,13 +13,14 @@
 #include "winnls.h"
 #include "heap.h"
 
-#include "shlwapi.h"
+#include "wine/obj_base.h"
 #include "shellapi.h"
 #include "shlguid.h"
 #include "shlobj.h"
 #include "shell32_main.h"
 #include "undocshell.h"
 #include "pidl.h"
+#include "shlwapi.h"
 
 DEFAULT_DEBUG_CHANNEL(shell);
 DECLARE_DEBUG_CHANNEL(pidl);
diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c
index 37a9117..ea94e33 100644
--- a/dlls/shell32/shellpath.c
+++ b/dlls/shell32/shellpath.c
@@ -485,8 +485,8 @@
 BOOL WINAPI PathFindOnPathAW(LPVOID sFile, LPCVOID sOtherDirs)
 {
 	if (SHELL_OsIsUnicode())
-	  return PathFindOnPathW(sFile, sOtherDirs);
-	return PathFindOnPathA(sFile, sOtherDirs);
+	  return PathFindOnPathW(sFile, (LPCWSTR *)sOtherDirs);
+	return PathFindOnPathA(sFile, (LPCSTR *)sOtherDirs);
 }
 
 /*************************************************************************
diff --git a/dlls/shell32/undocshell.h b/dlls/shell32/undocshell.h
index 31d80fa..d63fbe2 100644
--- a/dlls/shell32/undocshell.h
+++ b/dlls/shell32/undocshell.h
@@ -584,10 +584,6 @@
 	LPCSTR lpszShortName,
 	LPCSTR lpszLongName);
 
-BOOL WINAPI PathFindOnPathAW(
-	LPVOID lpszFile, 
-	LPCVOID alpszPaths);
-
 /* PathCleanupSpec return values */
 #define PCS_REPLACEDCHARS  0x00000001
 #define PCS_REMOVEDCHARS   0x00000002
diff --git a/dlls/shlwapi/ordinal.c b/dlls/shlwapi/ordinal.c
index 971c27a..2437099 100644
--- a/dlls/shlwapi/ordinal.c
+++ b/dlls/shlwapi/ordinal.c
@@ -44,6 +44,30 @@
 /* The following schemes were identified in the native version of
  * SHLWAPI.DLL version 5.50
  */
+typedef enum {
+    URL_SCHEME_INVALID     = -1,
+    URL_SCHEME_UNKNOWN     =  0,
+    URL_SCHEME_FTP,
+    URL_SCHEME_HTTP,
+    URL_SCHEME_GOPHER,
+    URL_SCHEME_MAILTO,
+    URL_SCHEME_NEWS,
+    URL_SCHEME_NNTP,
+    URL_SCHEME_TELNET,
+    URL_SCHEME_WAIS,
+    URL_SCHEME_FILE,
+    URL_SCHEME_MK,
+    URL_SCHEME_HTTPS,
+    URL_SCHEME_SHELL,
+    URL_SCHEME_SNEWS,
+    URL_SCHEME_LOCAL,
+    URL_SCHEME_JAVASCRIPT,
+    URL_SCHEME_VBSCRIPT,
+    URL_SCHEME_ABOUT,
+    URL_SCHEME_RES,
+    URL_SCHEME_MAXVALUE
+} URL_SCHEME;
+
 typedef struct {
     URL_SCHEME  scheme_number;
     LPCSTR scheme_name;
diff --git a/dlls/shlwapi/ordinal.h b/dlls/shlwapi/ordinal.h
index b8f4a8d..037ff82 100644
--- a/dlls/shlwapi/ordinal.h
+++ b/dlls/shlwapi/ordinal.h
@@ -1,5 +1,5 @@
 /*
- * Internal structures (read "undocumented") used by the 
+ * Internal structures (read "undocumented") used by the
  * ordinal entry points.
  *
  * Determined by experimentation.
@@ -11,7 +11,7 @@
     INT     sizep1;    /* [out] size of scheme (until colon)        */
     LPCSTR  ap2;       /* [out] pointer following first colon       */
     INT     sizep2;    /* [out] size of remainder                   */
-    INT     fcncde;    /* [out] function match of p1 (0 if unknown) */ 
+    INT     fcncde;    /* [out] function match of p1 (0 if unknown) */
 } UNKNOWN_SHLWAPI_1;
 
 DWORD WINAPI SHLWAPI_1(LPCSTR x, UNKNOWN_SHLWAPI_1 *y);
@@ -22,7 +22,8 @@
     INT     sizep1;    /* [out] size of scheme (until colon)        */
     LPCWSTR ap2;       /* [out] pointer following first colon       */
     INT     sizep2;    /* [out] size of remainder                   */
-    INT     fcncde;    /* [out] function match of p1 (0 if unknown) */ 
+    INT     fcncde;    /* [out] function match of p1 (0 if unknown) */
 } UNKNOWN_SHLWAPI_2;
 
 DWORD WINAPI SHLWAPI_2(LPCWSTR x, UNKNOWN_SHLWAPI_2 *y);
+
diff --git a/dlls/shlwapi/path.c b/dlls/shlwapi/path.c
index 20ed42b..3f1ab64 100644
--- a/dlls/shlwapi/path.c
+++ b/dlls/shlwapi/path.c
@@ -4,6 +4,7 @@
 
 #include <ctype.h>
 #include <string.h>
+#include <stdlib.h>
 
 #include "winerror.h"
 #include "wine/unicode.h"
@@ -11,6 +12,7 @@
 #include "wingdi.h"
 #include "winuser.h"
 #include "winreg.h"
+#define NO_SHLWAPI_STREAM
 #include "shlwapi.h"
 #include "debugtools.h"
 #include "ordinal.h"
@@ -775,18 +777,18 @@
 /*************************************************************************
  * PathFindOnPathA	[SHLWAPI.@]
  */
-BOOL WINAPI PathFindOnPathA(LPSTR sFile, LPCSTR sOtherDirs)
+BOOL WINAPI PathFindOnPathA(LPSTR sFile, LPCSTR *sOtherDirs)
 {
-	FIXME("%s %s\n",sFile, sOtherDirs);
+	FIXME("%s %p\n",sFile, sOtherDirs);
 	return FALSE;
 }
 
 /*************************************************************************
  * PathFindOnPathW	[SHLWAPI.@]
  */
-BOOL WINAPI PathFindOnPathW(LPWSTR sFile, LPCWSTR sOtherDirs)
+BOOL WINAPI PathFindOnPathW(LPWSTR sFile, LPCWSTR *sOtherDirs)
 {
-	FIXME("%s %s\n",debugstr_w(sFile), debugstr_w(sOtherDirs));
+	FIXME("%s %p\n",debugstr_w(sFile), sOtherDirs);
 	return FALSE;
 }
 
diff --git a/dlls/shlwapi/reg.c b/dlls/shlwapi/reg.c
index f66c72b..25cd75d 100644
--- a/dlls/shlwapi/reg.c
+++ b/dlls/shlwapi/reg.c
@@ -11,6 +11,7 @@
 #include "winnls.h"
 #include "winreg.h"
 #include "debugtools.h"
+#define NO_SHLWAPI_STREAM
 #include "shlwapi.h"
 #include "wine/unicode.h"
 
@@ -483,7 +484,7 @@
 /*************************************************************************
  *      SHRegQueryInfoUSKeyA	[SHLWAPI.@]
  */
-DWORD WINAPI SHRegQueryInfoUSKeyA(
+LONG WINAPI SHRegQueryInfoUSKeyA(
 	HUSKEY hUSKey,             /* [in]  */
 	LPDWORD pcSubKeys,
 	LPDWORD pcchMaxSubKeyLen,
@@ -522,7 +523,7 @@
 /*************************************************************************
  *      SHRegQueryInfoUSKeyW	[SHLWAPI.@]
  */
-DWORD WINAPI SHRegQueryInfoUSKeyW(
+LONG WINAPI SHRegQueryInfoUSKeyW(
 	HUSKEY hUSKey,             /* [in]  */
 	LPDWORD pcSubKeys,
 	LPDWORD pcchMaxSubKeyLen,
@@ -727,7 +728,7 @@
 /*************************************************************************
  *      SHSetValueA   [SHLWAPI.@]
  */
-HRESULT WINAPI SHSetValueA(
+DWORD WINAPI SHSetValueA(
 	HKEY hkey,
 	LPCSTR pszSubKey,
 	LPCSTR pszValue,
@@ -749,7 +750,7 @@
 /*************************************************************************
  *      SHSetValueW   [SHLWAPI.@]
  */
-HRESULT WINAPI SHSetValueW(
+DWORD WINAPI SHSetValueW(
 	HKEY hkey,
 	LPCWSTR pszSubKey,
 	LPCWSTR pszValue,
@@ -772,9 +773,9 @@
  * SHQueryValueExA		[SHLWAPI.@]
  *
  */
-HRESULT WINAPI SHQueryValueExA(
+DWORD WINAPI SHQueryValueExA(
 	HKEY hkey,
-	LPSTR lpValueName,
+	LPCSTR lpValueName,
 	LPDWORD lpReserved,
 	LPDWORD lpType,
 	LPBYTE lpData,
@@ -792,9 +793,9 @@
  *  if the datatype REG_EXPAND_SZ then expand the string and change
  *  *pdwType to REG_SZ.
  */
-HRESULT WINAPI SHQueryValueExW (
+DWORD WINAPI SHQueryValueExW (
 	HKEY hkey,
-	LPWSTR pszValue,
+	LPCWSTR pszValue,
 	LPDWORD pdwReserved,
 	LPDWORD pdwType,
 	LPVOID pvData,
@@ -814,7 +815,7 @@
  * According to docs, Win9x RegDeleteKeyA will delete all subkeys, whereas
  * WinNt/2k will only delete the key if empty.
  */
-HRESULT WINAPI SHDeleteKeyA(
+DWORD WINAPI SHDeleteKeyA(
 	HKEY hKey,
 	LPCSTR lpszSubKey)
 {
@@ -880,7 +881,7 @@
  * According to docs, Win9x RegDeleteKeyA will delete all subkeys, whereas
  * WinNt/2k will only delete the key if empty.
  */
-HRESULT WINAPI SHDeleteKeyW(
+DWORD WINAPI SHDeleteKeyW(
 	HKEY hkey,
 	LPCWSTR pszSubKey)
 {
@@ -893,9 +894,9 @@
  *
  * Function opens the key, get/set/delete the value, then close the key.
  */
-HRESULT WINAPI SHDeleteValueA(HKEY hkey, LPCSTR pszSubKey, LPCSTR pszValue) {
+DWORD WINAPI SHDeleteValueA(HKEY hkey, LPCSTR pszSubKey, LPCSTR pszValue) {
     HKEY	subkey;
-    HRESULT	hres;
+    DWORD	hres;
 
     hres = RegOpenKeyA(hkey,pszSubKey,&subkey);
     if (hres)
@@ -910,9 +911,9 @@
  *
  * Function opens the key, get/set/delete the value, then close the key.
  */
-HRESULT WINAPI SHDeleteValueW(HKEY hkey, LPCWSTR pszSubKey, LPCWSTR pszValue) {
+DWORD WINAPI SHDeleteValueW(HKEY hkey, LPCWSTR pszSubKey, LPCWSTR pszValue) {
     HKEY	subkey;
-    HRESULT	hres;
+    DWORD	hres;
 
     hres = RegOpenKeyW(hkey,pszSubKey,&subkey);
     if (hres)
diff --git a/dlls/shlwapi/shlwapi_main.c b/dlls/shlwapi/shlwapi_main.c
index 9388baf..6408fd5 100644
--- a/dlls/shlwapi/shlwapi_main.c
+++ b/dlls/shlwapi/shlwapi_main.c
@@ -9,6 +9,7 @@
 #include "winerror.h"
 #include "winreg.h"
 #include "debugtools.h"
+#define NO_SHLWAPI_STREAM
 #include "shlwapi.h"
 
 DEFAULT_DEBUG_CHANNEL(shell);
diff --git a/dlls/shlwapi/string.c b/dlls/shlwapi/string.c
index e05f247..4fc9589 100644
--- a/dlls/shlwapi/string.c
+++ b/dlls/shlwapi/string.c
@@ -9,6 +9,7 @@
 #include "wingdi.h"
 #include "winuser.h"
 #include "winreg.h"
+#define NO_SHLWAPI_STREAM
 #include "shlwapi.h"
 #include "shlobj.h"
 #include "wine/unicode.h"
diff --git a/dlls/shlwapi/url.c b/dlls/shlwapi/url.c
index 9bbfddc..ee8d36f 100644
--- a/dlls/shlwapi/url.c
+++ b/dlls/shlwapi/url.c
@@ -5,6 +5,7 @@
  */
 
 #include <string.h>
+#include <stdlib.h>
 #include "windef.h"
 #include "winnls.h"
 #include "winbase.h"
@@ -12,6 +13,7 @@
 #include "wine/unicode.h"
 #include "wininet.h"
 #include "winreg.h"
+#define NO_SHLWAPI_STREAM
 #include "shlwapi.h"
 #include "debugtools.h"
 #include "ordinal.h"
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index 56235b8..aa06ff3 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -25,6 +25,7 @@
 #include "wininet.h"
 #include "winreg.h"
 #include "winerror.h"
+#define NO_SHLWAPI_STREAM
 #include "shlwapi.h"
 
 #include "internet.h"
diff --git a/dlls/wininet/internet.c b/dlls/wininet/internet.c
index 91845fe..9b92382 100644
--- a/dlls/wininet/internet.c
+++ b/dlls/wininet/internet.c
@@ -25,6 +25,7 @@
 #include "wininet.h"
 #include "debugtools.h"
 #include "winerror.h"
+#define NO_SHLWAPI_STREAM
 #include "shlwapi.h"
 
 #include "internet.h"