diff --git a/dlls/shell32/iconcache.c b/dlls/shell32/iconcache.c
index fb30ac4661df7dbd6fed03c45dab54fa31f60b3b..ad3799d24269e61071108e0e03fa8b2dffb0168e 100644
--- a/dlls/shell32/iconcache.c
+++ b/dlls/shell32/iconcache.c
@@ -58,7 +58,7 @@ static DWORD SHELL_GetResourceTable(HFILE hFile,LPBYTE *retptr)
 	if ((_lread(hFile,&mz_header,sizeof(mz_header)) != sizeof(mz_header)) || (mz_header.e_magic != IMAGE_DOS_SIGNATURE))
 	{ if (mz_header.e_cblp == 1)	/* .ICO file ? */
 	  { *retptr = (LPBYTE)-1;	/* ICONHEADER.idType, must be 1 */
-  	    return 1;
+	    return 1;
 	  }
 	  else
 	    return 0; /* failed */
@@ -98,7 +98,7 @@ static DWORD SHELL_GetResourceTable(HFILE hFile,LPBYTE *retptr)
 	  *retptr = pTypeInfo;
 	  return IMAGE_OS2_SIGNATURE;
 	}
-  	return 0; /* failed */
+	return 0; /* failed */
 }
 /*************************************************************************
  *			SHELL_LoadResource
@@ -141,7 +141,7 @@ static HGLOBAL16 ICO_GetIconDirectory(HINSTANCE hInst, HFILE hFile, LPicoICONDIR
 {	WORD    id[3];  /* idReserved, idType, idCount */
 	LPicoICONDIR	lpiID;
 	int		i;
- 
+
 	TRACE(shell,"\n"); 
 	_llseek( hFile, 0, SEEK_SET );
 	if( _lread(hFile,(char*)id,sizeof(id)) != sizeof(id) ) 
@@ -169,7 +169,7 @@ static HGLOBAL16 ICO_GetIconDirectory(HINSTANCE hInst, HFILE hFile, LPicoICONDIR
 	    for( i=0; i < lpiID->idCount; i++ )
 	    { memcpy((void*)(lpID->idEntries + i),(void*)(lpiID->idEntries + i), sizeof(ICONDIRENTRY) - 2);
 	      lpID->idEntries[i].icon.wResId = i;
-            }
+	    }
 	    *lplpiID = lpiID;
 	    return handle;
 	  }
@@ -215,7 +215,7 @@ HGLOBAL WINAPI ICO_ExtractIconEx(LPCSTR lpszExeFileName, HICON * RetPtr, UINT nI
 	  NE_NAMEINFO*	pIconStorage = NULL;
 	  NE_NAMEINFO*	pIconDir = NULL;
 	  LPicoICONDIR	lpiID = NULL;
- 
+
 	  if( pData == (BYTE*)-1 )
 	  { hIcon = ICO_GetIconDirectory(0, hFile, &lpiID);	/* check for .ICO file */
 	    if( hIcon ) 
@@ -252,7 +252,7 @@ HGLOBAL WINAPI ICO_ExtractIconEx(LPCSTR lpszExeFileName, HICON * RetPtr, UINT nI
 	          hIcon = SHELL_LoadResource( 0, hFile, pIconDir + i, *(WORD*)pData );
 	        RetPtr[i-nIconIndex] = GetIconID16( hIcon, 3 );
 	        GlobalFree16(hIcon); 
-              }
+	}
 
 	      for( icon = nIconIndex; icon < nIconIndex + n; icon++ )
 	      { hIcon = 0;
@@ -336,7 +336,7 @@ HGLOBAL WINAPI ICO_ExtractIconEx(LPCSTR lpszExeFileName, HICON * RetPtr, UINT nI
 	  { hRet = iconDirCount;
 	    goto end_3;		/* success */
 	  }
-  
+
 	  if (nIconIndex >= iconDirCount) 
 	  { WARN(shell,"nIconIndex %d is larger than iconDirCount %d\n",nIconIndex,iconDirCount);
 	    goto end_4;		/* failure */
@@ -433,10 +433,11 @@ typedef struct
 } SIC_ENTRY, * LPSIC_ENTRY;
 
 /*****************************************************************************
-*	SIC_CompareEntrys [called by comctl32.dll]
-* NOTES
-*  Callback for DPA_Search
-*/
+ * SIC_CompareEntrys			[called by comctl32.dll]
+ *
+ * NOTES
+ *  Callback for DPA_Search
+ */
 INT CALLBACK SIC_CompareEntrys( LPVOID p1, LPVOID p2, LPARAM lparam)
 {	TRACE(shell,"%p %p\n", p1, p2);
 
@@ -449,10 +450,11 @@ INT CALLBACK SIC_CompareEntrys( LPVOID p1, LPVOID p2, LPARAM lparam)
 	return 0;  
 }
 /*****************************************************************************
-*	SIC_IconAppend (internal)
-* NOTES
-*  appends a icon pair to the end of the cache
-*/
+ * SIC_IconAppend			[internal]
+ *
+ * NOTES
+ *  appends a icon pair to the end of the cache
+ */
 static INT SIC_IconAppend (LPCSTR sSourceFile, INT dwSourceIndex, HICON hSmallIcon, HICON hBigIcon)
 {	LPSIC_ENTRY lpsice;
 	INT index, index1;
@@ -468,7 +470,7 @@ static INT SIC_IconAppend (LPCSTR sSourceFile, INT dwSourceIndex, HICON hSmallIc
 	if ( INVALID_INDEX == index )
 	{ SHFree(lpsice);
 	  return INVALID_INDEX;
-        } 
+	}
 
 	index = pImageList_AddIcon (ShellSmallIconList, hSmallIcon);
 	index1= pImageList_AddIcon (ShellBigIconList, hBigIcon);
@@ -482,10 +484,11 @@ static INT SIC_IconAppend (LPCSTR sSourceFile, INT dwSourceIndex, HICON hSmallIc
 	
 }
 /****************************************************************************
-*	SIC_LoadIcon	[internal]
-* NOTES
-*  gets small/big icon by number from a file
-*/
+ * SIC_LoadIcon				[internal]
+ *
+ * NOTES
+ *  gets small/big icon by number from a file
+ */
 static INT SIC_LoadIcon (LPCSTR sSourceFile, INT dwSourceIndex)
 {	HICON	hiconLarge=0;
 	HICON	hiconSmall=0;
@@ -501,11 +504,12 @@ static INT SIC_LoadIcon (LPCSTR sSourceFile, INT dwSourceIndex)
 	return SIC_IconAppend (sSourceFile, dwSourceIndex, hiconSmall, hiconLarge);		
 }
 /*****************************************************************************
-*	SIC_GetIconIndex [internal]
-* NOTES
-*  look in the cache for a proper icon. if not available the icon is taken
-*  from the file and cached
-*/
+ * SIC_GetIconIndex			[internal]
+ *
+ * NOTES
+ *  look in the cache for a proper icon. if not available the icon is taken
+ *  from the file and cached
+ */
 INT SIC_GetIconIndex (LPCSTR sSourceFile, INT dwSourceIndex )
 {	SIC_ENTRY sice;
 	INT index = INVALID_INDEX;
@@ -527,10 +531,11 @@ INT SIC_GetIconIndex (LPCSTR sSourceFile, INT dwSourceIndex )
 	return ((LPSIC_ENTRY)pDPA_GetPtr(hdpa, index))->dwListIndex;
 }
 /****************************************************************************
-*	SIC_LoadIcon	[internal]
-* NOTES
-*  retrives the specified icon from the iconcache. if not found try's to load the icon
-*/
+ * SIC_LoadIcon				[internal]
+ *
+ * NOTES
+ *  retrives the specified icon from the iconcache. if not found try's to load the icon
+ */
 static HICON SIC_GetIcon (LPCSTR sSourceFile, INT dwSourceIndex, BOOL bSmallIcon )
 {	INT index;
 
@@ -547,11 +552,12 @@ static HICON SIC_GetIcon (LPCSTR sSourceFile, INT dwSourceIndex, BOOL bSmallIcon
 	
 }
 /*****************************************************************************
-*	SIC_Initialize [internal]
-* NOTES
-*  hack to load the resources from the shell32.dll under a different dll name 
-*  will be removed when the resource-compiler is ready
-*/
+ * SIC_Initialize			[internal]
+ *
+ * NOTES
+ *  hack to load the resources from the shell32.dll under a different dll name 
+ *  will be removed when the resource-compiler is ready
+ */
 BOOL SIC_Initialize(void)
 {	CHAR   		szShellPath[MAX_PATH];
 	HGLOBAL	hSmRet, hLgRet;
@@ -606,7 +612,7 @@ BOOL SIC_Initialize(void)
 }
 
 /*************************************************************************
- * Shell_GetImageList [SHELL32.71]
+ * Shell_GetImageList			[SHELL32.71]
  *
  * PARAMETERS
  *  imglist[1|2] [OUT] pointer which recive imagelist handles
@@ -625,7 +631,7 @@ DWORD WINAPI Shell_GetImageList(HIMAGELIST * lpBigList, HIMAGELIST * lpSmallList
 }
 
 /*************************************************************************
- * SHMapPIDLToSystemImageListIndex [SHELL32.77]
+ * SHMapPIDLToSystemImageListIndex	[SHELL32.77]
  *
  * PARAMETERS
  * x  pointer to an instance of IShellFolder 
@@ -679,7 +685,7 @@ DWORD WINAPI SHMapPIDLToSystemImageListIndex(LPSHELLFOLDER sh,LPITEMIDLIST pidl,
 }
 
 /*************************************************************************
- * Shell_GetCachedImageIndex [SHELL32.72]
+ * Shell_GetCachedImageIndex		[SHELL32.72]
  *
  */
 INT WINAPI Shell_GetCachedImageIndexA(LPCSTR szPath, INT nIndex, DWORD z) 
@@ -705,20 +711,20 @@ INT WINAPI Shell_GetCachedImageIndexAW(LPCVOID szPath, INT nIndex, DWORD z)
 }
 
 /*************************************************************************
-*	ExtracticonEx32		[shell32.189]
-*/
+ * ExtracticonExAW			[shell32.189]
+ */
 HICON WINAPI ExtractIconExAW ( LPCVOID lpszFile, INT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIcons )
 {	if (VERSION_OsIsUnicode())
 	  return ExtractIconExW ( lpszFile, nIconIndex, phiconLarge, phiconSmall, nIcons);
 	return ExtractIconExA ( lpszFile, nIconIndex, phiconLarge, phiconSmall, nIcons);
 }
 /*************************************************************************
-*	ExtracticonEx32A	[shell32.190]
-* RETURNS
-*  0 no icon found 
-*  1 file is not valid
-*  HICON32 handle of a icon (phiconLarge/Small == NULL)
-*/
+ * ExtracticonExA			[shell32.190]
+ * RETURNS
+ *  0 no icon found 
+ *  1 file is not valid
+ *  HICON handle of a icon (phiconLarge/Small == NULL)
+ */
 HICON WINAPI ExtractIconExA ( LPCSTR lpszFile, INT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIcons )
 {	HICON ret=0;
 	
@@ -749,8 +755,8 @@ HICON WINAPI ExtractIconExA ( LPCSTR lpszFile, INT nIconIndex, HICON * phiconLar
 	return ret;
 }
 /*************************************************************************
-*	ExtracticonEx32W	[shell32.191]
-*/
+ * ExtracticonExW			[shell32.191]
+ */
 HICON WINAPI ExtractIconExW ( LPCWSTR lpszFile, INT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIcons )
 {	LPSTR sFile;
 	DWORD ret;
diff --git a/dlls/shell32/pidl.c b/dlls/shell32/pidl.c
index 1e9f5939b5f37925b7f0f0756438d4dc03edf9e0..b0e106f04db554c034eed0ef36cca3fcf20d3d08 100644
--- a/dlls/shell32/pidl.c
+++ b/dlls/shell32/pidl.c
@@ -134,6 +134,47 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
 
   	return newpidl;
 }
+/*************************************************************************
+ * SHILCreateFromPath	[SHELL32.28]
+ *
+ * NOTES
+ *   wraper for IShellFolder::ParseDisplayName()
+ */
+HRESULT WINAPI SHILCreateFromPathA (LPSTR path, LPITEMIDLIST * ppidl, DWORD attributes)
+{	LPSHELLFOLDER sf;
+	WCHAR lpszDisplayName[MAX_PATH];
+	DWORD pchEaten;
+	HRESULT ret = E_FAIL;
+	
+	TRACE(shell, "%s %p 0x%08lx\n",path,ppidl,attributes);
+
+	LocalToWideChar(lpszDisplayName, path, MAX_PATH);
+
+	if (SUCCEEDED (SHGetDesktopFolder(&sf)))
+	{ ret = sf->lpvtbl->fnParseDisplayName(sf,0, NULL,lpszDisplayName,&pchEaten,ppidl,&attributes);
+	  sf->lpvtbl->fnRelease(sf);
+	}
+	return ret; 	
+}
+HRESULT WINAPI SHILCreateFromPathW (LPWSTR path, LPITEMIDLIST * ppidl, DWORD attributes)
+{	LPSHELLFOLDER sf;
+	DWORD pchEaten;
+	HRESULT ret = E_FAIL;
+	
+	TRACE(shell, "%s %p 0x%08lx\n",debugstr_w(path),ppidl,attributes);
+
+	if (SUCCEEDED (SHGetDesktopFolder(&sf)))
+	{ ret = sf->lpvtbl->fnParseDisplayName(sf,0, NULL, path, &pchEaten, ppidl, &attributes);
+	  sf->lpvtbl->fnRelease(sf);
+	}
+	return ret;
+}
+HRESULT WINAPI SHILCreateFromPathAW (LPVOID path, LPITEMIDLIST * ppidl, DWORD attributes)
+{
+	if ( !VERSION_OsIsUnicode())
+	  return SHILCreateFromPathW (path, ppidl, attributes);
+	return SHILCreateFromPathA (path, ppidl, attributes);
+}
 
 /*************************************************************************
  * SHCloneSpecialIDList [SHELL32.89]
@@ -468,26 +509,28 @@ DWORD WINAPI ILGlobalFree( LPITEMIDLIST pidl)
  * ILCreateFromPath [SHELL32.157]
  *
  */
-LPITEMIDLIST WINAPI ILCreateFromPath(LPVOID path) 
-{	LPSHELLFOLDER shellfolder;
-	LPITEMIDLIST pidlnew;
-	WCHAR lpszDisplayName[MAX_PATH];
-	DWORD pchEaten;
-	
-	if ( !VERSION_OsIsUnicode())
-	{ TRACE(pidl,"(path=%s)\n",(LPSTR)path);
-	  LocalToWideChar(lpszDisplayName, path, MAX_PATH);
-  	}
-	else
-	{ TRACE(pidl,"(path=L%s)\n",debugstr_w(path));
-	  lstrcpyW(lpszDisplayName, path);
-	}
+LPITEMIDLIST WINAPI ILCreateFromPathA (LPSTR path) 
+{	LPITEMIDLIST pidlnew;
 
-	if (SHGetDesktopFolder(&shellfolder)==S_OK)
-	{ shellfolder->lpvtbl->fnParseDisplayName(shellfolder,0, NULL,lpszDisplayName,&pchEaten,&pidlnew,NULL);
-	  shellfolder->lpvtbl->fnRelease(shellfolder);
-	}
-	return pidlnew;
+	TRACE(shell,"%s\n",path);
+	if (SUCCEEDED (SHILCreateFromPathA (path, &pidlnew, 0)))
+	  return pidlnew;
+	return FALSE;
+}
+LPITEMIDLIST WINAPI ILCreateFromPathW (LPWSTR path) 
+{	LPITEMIDLIST pidlnew;
+
+	TRACE(shell,"%s\n",debugstr_w(path));
+
+	if (SUCCEEDED (SHILCreateFromPathW (path, &pidlnew, 0)))
+	  return pidlnew;
+	return FALSE;
+}
+LPITEMIDLIST WINAPI ILCreateFromPathAW (LPVOID path) 
+{
+	if ( !VERSION_OsIsUnicode())
+	  return ILCreateFromPathW (path);
+	return ILCreateFromPathA (path);
 }
 /*************************************************************************
  *  SHSimpleIDListFromPath [SHELL32.162]
@@ -520,11 +563,33 @@ LPITEMIDLIST WINAPI SHSimpleIDListFromPathAW (LPVOID lpszPath)
  *
  */
 HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID dest, int len)
-{	FIXME(shell,"sf=%p pidl=%p 0x%04x %p 0x%04x stub\n",psf,pidl,nFormat,dest,len);
+{	TRACE(shell,"sf=%p pidl=%p 0x%04x %p 0x%04x stub\n",psf,pidl,nFormat,dest,len);
+	
+	if (! psf || !dest )
+	  return E_INVALIDARG;
+
 	switch (nFormat)
 	{ case SHGDFIL_FINDDATA:
+	    {  WIN32_FIND_DATAA * pfd = dest;
+	       STRRET	lpName;
+	       CHAR	pszPath[MAX_PATH];
+	       HANDLE handle;
+
+	       if ( len < sizeof (WIN32_FIND_DATAA))
+	         return E_INVALIDARG;
+
+	       psf->lpvtbl->fnAddRef(psf);
+	       psf->lpvtbl->fnGetDisplayNameOf( psf, pidl, SHGDN_FORPARSING, &lpName);
+	       psf->lpvtbl->fnRelease(psf);
+
+	       strcpy(pszPath,lpName.u.cStr);
+	       if ((handle  = FindFirstFileA ( pszPath, pfd)))
+	         FindClose (handle);
+	    }
+	    break;
 	  case SHGDFIL_NETRESOURCE:
 	  case SHGDFIL_DESCRIPTIONID:
+	    FIXME(shell, "SHGDFIL %i stub\n", nFormat);
 	    break;
 	  default:
 	    ERR(shell,"Unknown SHGDFIL %i, please report\n", nFormat);
diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c
index cbf1a13c24b566e38c9c6c10b3af32e61ebb6797..f8967cc142ac0c3cd906d3128139cb2a5ba8e81b 100644
--- a/dlls/shell32/shell32_main.c
+++ b/dlls/shell32/shell32_main.c
@@ -27,7 +27,7 @@
 #include "shlguid.h"
 
 /*************************************************************************
- *				CommandLineToArgvW	[SHELL32.7]
+ * CommandLineToArgvW			[SHELL32.7]
  */
 LPWSTR* WINAPI CommandLineToArgvW(LPWSTR cmdline,LPDWORD numargs)
 { LPWSTR  *argv,s,t;
@@ -75,7 +75,7 @@ LPWSTR* WINAPI CommandLineToArgvW(LPWSTR cmdline,LPDWORD numargs)
 }
 
 /*************************************************************************
- *				Control_RunDLL		[SHELL32.12]
+ * Control_RunDLL			[SHELL32.12]
  *
  * Wild speculation in the following!
  *
@@ -89,10 +89,7 @@ void WINAPI Control_RunDLL( HWND hwnd, LPCVOID code, LPCSTR cmd, DWORD arg4 )
 }
 
 /*************************************************************************
- *  SHGetFileInfoA		[SHELL32.254]
- *
- * FIXME
- *   
+ * SHGetFileInfoA			[SHELL32.254]
  */
 
 DWORD WINAPI SHGetFileInfoA(LPCSTR path,DWORD dwFileAttributes,
@@ -101,8 +98,8 @@ DWORD WINAPI SHGetFileInfoA(LPCSTR path,DWORD dwFileAttributes,
 {	CHAR		szTemp[MAX_PATH];
 	LPPIDLDATA 	pData;
 	LPITEMIDLIST	pPidlTemp = NULL;
-	DWORD		ret=0;
-  
+	DWORD		ret=0, dwfa = dwFileAttributes;
+
 	TRACE(shell,"(%s,0x%lx,%p,0x%x,0x%x)\n",
 	      path,dwFileAttributes,psfi,sizeofpsfi,flags);
 
@@ -139,10 +136,15 @@ DWORD WINAPI SHGetFileInfoA(LPCSTR path,DWORD dwFileAttributes,
 	    ret=TRUE;
 	  }
 	  else
-	  { psfi->dwAttributes=SFGAO_FILESYSTEM;
+	  { if (! (flags & SHGFI_USEFILEATTRIBUTES))
+	      dwfa = GetFileAttributesA (szTemp);
+
+	    psfi->dwAttributes = SFGAO_FILESYSTEM;
+	    if (dwfa == FILE_ATTRIBUTE_DIRECTORY) 
+	      psfi->dwAttributes |= SFGAO_FOLDER | SFGAO_HASSUBFOLDER;
 	    ret=TRUE;
 	  }
-	  FIXME(shell,"file attributes, stub\n");	    
+	  WARN(shell,"file attributes, semi-stub\n");
 	}
 
 	if (flags & SHGFI_DISPLAYNAME)
@@ -152,57 +154,60 @@ DWORD WINAPI SHGetFileInfoA(LPCSTR path,DWORD dwFileAttributes,
 	  else
 	  { strcpy(psfi->szDisplayName,path);
 	  }
-	  TRACE(shell,"displayname=%s\n", psfi->szDisplayName);	  
+	  TRACE(shell,"displayname=%s\n", psfi->szDisplayName);
 	  ret=TRUE;
 	}
-  
+
 	if (flags & SHGFI_TYPENAME)
- 	{ FIXME(shell,"get the file type, stub\n");
+	{ FIXME(shell,"get the file type, stub\n");
 	  strcpy(psfi->szTypeName,"FIXME: Type");
 	  ret=TRUE;
 	}
-  
-  if (flags & SHGFI_ICONLOCATION)
-  { FIXME(shell,"location of icon, stub\n");
-    strcpy(psfi->szDisplayName,"");
-    ret=TRUE;
-  }
 
-  if (flags & SHGFI_EXETYPE)
-    FIXME(shell,"type of executable, stub\n");
-
-  if (flags & SHGFI_LINKOVERLAY)
-    FIXME(shell,"set icon to link, stub\n");
-
-  if (flags & SHGFI_OPENICON)
-    FIXME(shell,"set to open icon, stub\n");
-
-  if (flags & SHGFI_SELECTED)
-    FIXME(shell,"set icon to selected, stub\n");
-
-  if (flags & SHGFI_SHELLICONSIZE)
-    FIXME(shell,"set icon to shell size, stub\n");
-
-  if (flags & SHGFI_USEFILEATTRIBUTES)
-    FIXME(shell,"use the dwFileAttributes, stub\n");
- 
-  if (flags & SHGFI_ICON)
-  { FIXME(shell,"icon handle\n");
-    if (flags & SHGFI_SMALLICON)
-     { TRACE(shell,"set to small icon\n"); 
-       psfi->hIcon=pImageList_GetIcon(ShellSmallIconList,32,ILD_NORMAL);
-       ret = (DWORD) ShellSmallIconList;
-     }
-     else
-     { TRACE(shell,"set to big icon\n");
-       psfi->hIcon=pImageList_GetIcon(ShellBigIconList,32,ILD_NORMAL);
-       ret = (DWORD) ShellBigIconList;
-     }      
-  }
+	if (flags & SHGFI_ICONLOCATION)
+	{ FIXME(shell,"location of icon, stub\n");
+	  strcpy(psfi->szDisplayName,"");
+	  ret=TRUE;
+	}
+
+	if (flags & SHGFI_EXETYPE)
+	  FIXME(shell,"type of executable, stub\n");
+
+	if (flags & SHGFI_LINKOVERLAY)
+	  FIXME(shell,"set icon to link, stub\n");
+
+	if (flags & SHGFI_OPENICON)
+	  FIXME(shell,"set to open icon, stub\n");
+
+	if (flags & SHGFI_SELECTED)
+	  FIXME(shell,"set icon to selected, stub\n");
+
+	if (flags & SHGFI_SHELLICONSIZE)
+	  FIXME(shell,"set icon to shell size, stub\n");
+
+	if (flags & SHGFI_USEFILEATTRIBUTES)
+	  FIXME(shell,"use the dwFileAttributes, stub\n");
+
+	if (flags & (SHGFI_UNKNOWN1 | SHGFI_UNKNOWN2 | SHGFI_UNKNOWN3))
+	  FIXME(shell,"unknown attribute!\n");
+	
+	if (flags & SHGFI_ICON)
+	{ FIXME(shell,"icon handle\n");
+	  if (flags & SHGFI_SMALLICON)
+	  { TRACE(shell,"set to small icon\n"); 
+	    psfi->hIcon=pImageList_GetIcon(ShellSmallIconList,32,ILD_NORMAL);
+	    ret = (DWORD) ShellSmallIconList;
+	  }
+	  else
+	  { TRACE(shell,"set to big icon\n");
+	    psfi->hIcon=pImageList_GetIcon(ShellBigIconList,32,ILD_NORMAL);
+	    ret = (DWORD) ShellBigIconList;
+	  }      
+	}
 
 	if (flags & SHGFI_SYSICONINDEX)
 	{ if (!pPidlTemp)
-	  { pPidlTemp = ILCreateFromPath (szTemp);
+	  { pPidlTemp = ILCreateFromPathA (szTemp);
 	  }
 	  psfi->iIcon = SHMapPIDLToSystemImageListIndex (NULL, pPidlTemp, 0);
 	  TRACE(shell,"-- SYSICONINDEX %i\n", psfi->iIcon);
@@ -217,14 +222,11 @@ DWORD WINAPI SHGetFileInfoA(LPCSTR path,DWORD dwFileAttributes,
 	  }
 	}
 
- 	return ret;
+	return ret;
 }
 
 /*************************************************************************
- *  SHGetFileInfo32W		[SHELL32.255]
- *
- * FIXME
- *   
+ * SHGetFileInfoW			[SHELL32.255]
  */
 
 DWORD WINAPI SHGetFileInfoW(LPCWSTR path,DWORD dwFileAttributes,
@@ -236,7 +238,7 @@ DWORD WINAPI SHGetFileInfoW(LPCWSTR path,DWORD dwFileAttributes,
 }
 
 /*************************************************************************
- *             ExtractIcon32A   (SHELL32.133)
+ * ExtractIconA				[SHELL32.133]
  */
 HICON WINAPI ExtractIconA( HINSTANCE hInstance, LPCSTR lpszExeFileName,
 	UINT nIconIndex )
@@ -254,7 +256,7 @@ HICON WINAPI ExtractIconA( HINSTANCE hInstance, LPCSTR lpszExeFileName,
 }
 
 /*************************************************************************
- *             ExtractIcon32W   (SHELL32.180)
+ * ExtractIconW				[SHELL32.180]
  */
 HICON WINAPI ExtractIconW( HINSTANCE hInstance, LPCWSTR lpszExeFileName,
 	UINT nIconIndex )
@@ -270,7 +272,7 @@ HICON WINAPI ExtractIconW( HINSTANCE hInstance, LPCWSTR lpszExeFileName,
 }
 
 /*************************************************************************
- *             FindExecutable32A   (SHELL32.184)
+ * FindExecutableA			[SHELL32.184]
  */
 HINSTANCE WINAPI FindExecutableA( LPCSTR lpFile, LPCSTR lpDirectory,
                                       LPSTR lpResult )
@@ -303,7 +305,7 @@ HINSTANCE WINAPI FindExecutableA( LPCSTR lpFile, LPCSTR lpDirectory,
 }
 
 /*************************************************************************
- *             FindExecutable32W   (SHELL32.219)
+ * FindExecutableW			[SHELL32.219]
  */
 HINSTANCE WINAPI FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory,
                                      LPWSTR lpResult)
@@ -339,7 +341,7 @@ static BOOL __get_dropline( HWND hWnd, LPRECT lprect )
 }
 
 /*************************************************************************
- *				SHAppBarMessage32	[SHELL32.207]
+ * SHAppBarMessage32			[SHELL32.207]
  */
 UINT WINAPI SHAppBarMessage(DWORD msg, PAPPBARDATA data)
 { FIXME(shell,"(0x%08lx,%p): stub\n", msg, data);
@@ -363,7 +365,7 @@ UINT WINAPI SHAppBarMessage(DWORD msg, PAPPBARDATA data)
 
 
 /*************************************************************************
- *  SHGetDesktopFolder		[SHELL32.216]
+ * SHGetDesktopFolder			[SHELL32.216]
  * 
  *  SDK header win95/shlobj.h: This is equivalent to call CoCreateInstance with
  *  CLSID_ShellDesktop
@@ -406,7 +408,7 @@ DWORD WINAPI SHGetDesktopFolder(LPSHELLFOLDER *shellfolder)
 }
 
 /*************************************************************************
- *			 SHGetPathFromIDList		[SHELL32.221][NT 4.0: SHELL32.219]
+ * SHGetPathFromIDList		[SHELL32.221][NT 4.0: SHELL32.219]
  */
 BOOL WINAPI SHGetPathFromIDListAW(LPCITEMIDLIST pidl,LPSTR pszPath)     
 { TRACE(shell,"(pidl=%p,%p)\n",pidl,pszPath);
@@ -414,7 +416,8 @@ BOOL WINAPI SHGetPathFromIDListAW(LPCITEMIDLIST pidl,LPSTR pszPath)
 }
 
 /*************************************************************************
- *			 SHGetSpecialFolderLocation	[SHELL32.223]
+ * SHGetSpecialFolderLocation		[SHELL32.223]
+ *
  * gets the folder locations from the registry and creates a pidl
  * creates missing reg keys and directorys
  * 
@@ -431,11 +434,11 @@ BOOL WINAPI SHGetPathFromIDListAW(LPCITEMIDLIST pidl,LPSTR pszPath)
  *
  */
 HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST * ppidl)
-{ LPSHELLFOLDER shellfolder;
-  DWORD pchEaten,tpathlen=MAX_PATH,type,dwdisp,res;
-  CHAR pszTemp[256],buffer[256],tpath[MAX_PATH],npath[MAX_PATH];
-  LPWSTR lpszDisplayName = (LPWSTR)&pszTemp[0];
-  HKEY key;
+{	LPSHELLFOLDER shellfolder;
+	DWORD	pchEaten, tpathlen=MAX_PATH, type, dwdisp, res, dwLastError;
+	CHAR	pszTemp[256], buffer[256], tpath[MAX_PATH], npath[MAX_PATH];
+	LPWSTR	lpszDisplayName = (LPWSTR)&pszTemp[0];
+	HKEY	key;
 
 	enum 
 	{ FT_UNKNOWN= 0x00000000,
@@ -623,7 +626,9 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDL
 	        return E_OUTOFMEMORY;
 	      }
 	      TRACE(shell,"value %s=%s created\n",buffer,npath);
+	      dwLastError = GetLastError();
 	      CreateDirectoryA(npath,NULL);
+	      SetLastError (dwLastError);
 	      strcpy(tpath,npath);
 	    }
 	    break;
@@ -653,7 +658,7 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDL
 	return NOERROR;
 }
 /*************************************************************************
- * SHHelpShortcuts_RunDLL [SHELL32.224]
+ * SHHelpShortcuts_RunDLL		[SHELL32.224]
  *
  */
 DWORD WINAPI SHHelpShortcuts_RunDLL (DWORD dwArg1, DWORD dwArg2, DWORD dwArg3, DWORD dwArg4)
@@ -664,7 +669,7 @@ DWORD WINAPI SHHelpShortcuts_RunDLL (DWORD dwArg1, DWORD dwArg2, DWORD dwArg3, D
 }
 
 /*************************************************************************
- * SHLoadInProc [SHELL32.225]
+ * SHLoadInProc				[SHELL32.225]
  *
  */
 
@@ -674,7 +679,7 @@ DWORD WINAPI SHLoadInProc (DWORD dwArg1)
 }
 
 /*************************************************************************
- *             ShellExecute32A   (SHELL32.245)
+ * ShellExecuteA			[SHELL32.245]
  */
 HINSTANCE WINAPI ShellExecuteA( HWND hWnd, LPCSTR lpOperation,
                                     LPCSTR lpFile, LPCSTR lpParameters,
@@ -685,7 +690,7 @@ HINSTANCE WINAPI ShellExecuteA( HWND hWnd, LPCSTR lpOperation,
 }
 
 /*************************************************************************
- * ShellExecute32W [SHELL32.294]
+ * ShellExecuteW			[SHELL32.294]
  * from shellapi.h
  * WINSHELLAPI HINSTANCE APIENTRY ShellExecuteW(HWND hwnd, LPCWSTR lpOperation, 
  * LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd);   
@@ -704,7 +709,7 @@ ShellExecuteW(
 }
 
 /*************************************************************************
- *             AboutDlgProc32  (not an exported API function)
+ * AboutDlgProc32			(internal)
  */
 BOOL WINAPI AboutDlgProc( HWND hWnd, UINT msg, WPARAM wParam,
                               LPARAM lParam )
@@ -835,7 +840,7 @@ BOOL WINAPI AboutDlgProc( HWND hWnd, UINT msg, WPARAM wParam,
 
 
 /*************************************************************************
- *             ShellAbout32A   (SHELL32.243)
+ * ShellAboutA				[SHELL32.243]
  */
 BOOL WINAPI ShellAboutA( HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff,
                              HICON hIcon )
@@ -852,7 +857,7 @@ BOOL WINAPI ShellAboutA( HWND hWnd, LPCSTR szApp, LPCSTR szOtherStuff,
 
 
 /*************************************************************************
- *             ShellAbout32W   (SHELL32.244)
+ * ShellAboutW				[SHELL32.244]
  */
 BOOL WINAPI ShellAboutW( HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff,
                              HICON hIcon )
@@ -874,7 +879,7 @@ BOOL WINAPI ShellAboutW( HWND hWnd, LPCWSTR szApp, LPCWSTR szOtherStuff,
 }
 
 /*************************************************************************
- *				Shell_NotifyIcon	[SHELL32.296]
+ * Shell_NotifyIcon			[SHELL32.296]
  *	FIXME
  *	This function is supposed to deal with the systray.
  *	Any ideas on how this is to be implimented?
@@ -885,7 +890,7 @@ BOOL WINAPI Shell_NotifyIcon(	DWORD dwMessage, PNOTIFYICONDATA pnid )
 }
 
 /*************************************************************************
- *				Shell_NotifyIcon	[SHELL32.297]
+ * Shell_NotifyIcon			[SHELL32.297]
  *	FIXME
  *	This function is supposed to deal with the systray.
  *	Any ideas on how this is to be implimented?
@@ -903,7 +908,7 @@ void WINAPI FreeIconList( DWORD dw )
 }
 
 /*************************************************************************
- * SHGetPathFromIDList32A        [SHELL32.261][NT 4.0: SHELL32.220]
+ * SHGetPathFromIDListA		[SHELL32.261][NT 4.0: SHELL32.220]
  *
  * PARAMETERS
  *  pidl,   [IN] pidl 
@@ -927,38 +932,37 @@ DWORD WINAPI SHGetPathFromIDListA (LPCITEMIDLIST pidl,LPSTR pszPath)
 
 	TRACE(shell,"(pidl=%p,%p)\n",pidl,pszPath);
 
-  if (!pidl)
-  {  strcpy(buffer,"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\");
-
-     if (RegCreateKeyExA(HKEY_CURRENT_USER,buffer,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&key,&dwdisp))
-     { return E_OUTOFMEMORY;
-     }
-     type=REG_SZ;    
-     strcpy (buffer,"Desktop");					/*registry name*/
-     if ( RegQueryValueExA(key,buffer,NULL,&type,(LPBYTE)tpath,&tpathlen))
-     { GetWindowsDirectoryA(tpath,MAX_PATH);
-       PathAddBackslashA(tpath);
-       strcat (tpath,"Desktop");				/*folder name*/
-       RegSetValueExA(key,buffer,0,REG_SZ,(LPBYTE)tpath,tpathlen);
-       CreateDirectoryA(tpath,NULL);
-     }
-     RegCloseKey(key);
-     strcpy(pszPath,tpath);
-  }
-  else
-  { if (SHGetDesktopFolder(&shellfolder)==S_OK)
-	{ shellfolder->lpvtbl->fnGetDisplayNameOf(shellfolder,pidl,SHGDN_FORPARSING,&lpName);
-	  shellfolder->lpvtbl->fnRelease(shellfolder);
+	if (!pidl)
+	{  strcpy(buffer,"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\");
+
+	  if (RegCreateKeyExA(HKEY_CURRENT_USER,buffer,0,NULL,REG_OPTION_NON_VOLATILE,KEY_WRITE,NULL,&key,&dwdisp))
+	  { return E_OUTOFMEMORY;
+	  }
+	  type=REG_SZ;    
+	  strcpy (buffer,"Desktop");					/*registry name*/
+	  if ( RegQueryValueExA(key,buffer,NULL,&type,(LPBYTE)tpath,&tpathlen))
+	  { GetWindowsDirectoryA(tpath,MAX_PATH);
+	    PathAddBackslashA(tpath);
+	    strcat (tpath,"Desktop");				/*folder name*/
+	    RegSetValueExA(key,buffer,0,REG_SZ,(LPBYTE)tpath,tpathlen);
+	    CreateDirectoryA(tpath,NULL);
+	  }
+	  RegCloseKey(key);
+	  strcpy(pszPath,tpath);
+	}
+	else
+	{ if (SHGetDesktopFolder(&shellfolder)==S_OK)
+	  { shellfolder->lpvtbl->fnGetDisplayNameOf(shellfolder,pidl,SHGDN_FORPARSING,&lpName);
+	    shellfolder->lpvtbl->fnRelease(shellfolder);
+	  }
+	  strcpy(pszPath,lpName.u.cStr);
 	}
-  /*WideCharToLocal32(pszPath, lpName.u.pOleStr, MAX_PATH);*/
-	strcpy(pszPath,lpName.u.cStr);
-	/* fixme free the olestring*/
-  }
 	TRACE(shell,"-- (%s)\n",pszPath);
-	return NOERROR;
+
+	return TRUE;
 }
 /*************************************************************************
- * SHGetPathFromIDList32W [SHELL32.262]
+ * SHGetPathFromIDListW 			[SHELL32.262]
  */
 DWORD WINAPI SHGetPathFromIDListW (LPCITEMIDLIST pidl,LPWSTR pszPath)
 {	char sTemp[MAX_PATH];
@@ -970,7 +974,7 @@ DWORD WINAPI SHGetPathFromIDListW (LPCITEMIDLIST pidl,LPWSTR pszPath)
 
 	TRACE(shell,"-- (%s)\n",debugstr_w(pszPath));
 
-	return NOERROR;
+	return TRUE;
 }
 
 /*************************************************************************
diff --git a/dlls/shell32/shell32_main.h b/dlls/shell32/shell32_main.h
index 7afe0d397fb6b070571e231799842b756565c400..aa0ab21958bec8ea093dfef85ab12b63960af6de 100644
--- a/dlls/shell32/shell32_main.h
+++ b/dlls/shell32/shell32_main.h
@@ -42,7 +42,14 @@ LPITEMIDLIST WINAPI ILGetNext(LPITEMIDLIST pidl);
 LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST iil1,LPCITEMIDLIST iil2);
 LPITEMIDLIST WINAPI ILFindLastID(LPITEMIDLIST pidl);
 DWORD WINAPI ILGetSize(LPITEMIDLIST pidl);
-LPITEMIDLIST WINAPI ILCreateFromPath(LPVOID path);
+
+HRESULT WINAPI SHILCreateFromPathA (LPSTR path, LPITEMIDLIST * ppidl, DWORD attributes);
+HRESULT WINAPI SHILCreateFromPathW (LPWSTR path, LPITEMIDLIST * ppidl, DWORD attributes);
+HRESULT WINAPI SHILCreateFromPathAW (LPVOID path, LPITEMIDLIST * ppidl, DWORD attributes);
+
+LPITEMIDLIST WINAPI ILCreateFromPathA(LPSTR path);
+LPITEMIDLIST WINAPI ILCreateFromPathW(LPWSTR path);
+LPITEMIDLIST WINAPI ILCreateFromPathAW(LPVOID path);
 
 DWORD WINAPI Shell_GetImageList(HIMAGELIST * lpBigList, HIMAGELIST * lpSmallList);
 HRESULT WINAPI StrRetToStrN (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST pidl);
diff --git a/dlls/shell32/shellord.c b/dlls/shell32/shellord.c
index 230a38bdfe1d992c9ac3439fc6e2b8447b6481af..1e3dd3ff51923e0b4d102758b727cd49a3138fbb 100644
--- a/dlls/shell32/shellord.c
+++ b/dlls/shell32/shellord.c
@@ -17,7 +17,8 @@
 #include "shell32_main.h"
 
 /*************************************************************************
- * SHChangeNotifyRegister [SHELL32.2]
+ * SHChangeNotifyRegister			[SHELL32.2]
+ *
  * NOTES
  *   Idlist is an array of structures and Count specifies how many items in the array
  *   (usually just one I think).
@@ -35,7 +36,7 @@ SHChangeNotifyRegister(
 	return 0;
 }
 /*************************************************************************
- * SHChangeNotifyDeregister [SHELL32.4]
+ * SHChangeNotifyDeregister			[SHELL32.4]
  */
 DWORD WINAPI
 SHChangeNotifyDeregister(LONG x1)
@@ -43,7 +44,7 @@ SHChangeNotifyDeregister(LONG x1)
 	return 0;
 }
 /*************************************************************************
- * NTSHChangeNotifyRegister [SHELL32.640]
+ * NTSHChangeNotifyRegister			[SHELL32.640]
  * NOTES
  *   Idlist is an array of structures and Count specifies how many items in the array
  *   (usually just one I think).
@@ -60,7 +61,7 @@ DWORD WINAPI NTSHChangeNotifyRegister(
 	return 0;
 }
 /*************************************************************************
- * NTSHChangeNotifyDeregister [SHELL32.641]
+ * NTSHChangeNotifyDeregister			[SHELL32.641]
  */
 DWORD WINAPI NTSHChangeNotifyDeregister(LONG x1)
 {	FIXME(shell,"(0x%08lx):stub.\n",x1);
@@ -68,7 +69,7 @@ DWORD WINAPI NTSHChangeNotifyDeregister(LONG x1)
 }
 
 /*************************************************************************
- * ParseField [SHELL32.58]
+ * ParseField					[SHELL32.58]
  *
  */
 DWORD WINAPI ParseFieldA(LPCSTR src, DWORD field, LPSTR dst, DWORD len) 
@@ -95,7 +96,7 @@ DWORD WINAPI ParseFieldA(LPCSTR src, DWORD field, LPSTR dst, DWORD len)
 }
 
 /*************************************************************************
- * PickIconDlg [SHELL32.62]
+ * PickIconDlg					[SHELL32.62]
  * 
  */
 DWORD WINAPI PickIconDlg(DWORD x,DWORD y,DWORD z,DWORD a) 
@@ -104,7 +105,7 @@ DWORD WINAPI PickIconDlg(DWORD x,DWORD y,DWORD z,DWORD a)
 }
 
 /*************************************************************************
- * GetFileNameFromBrowse [SHELL32.63]
+ * GetFileNameFromBrowse			[SHELL32.63]
  * 
  */
 DWORD WINAPI GetFileNameFromBrowse(HWND howner, LPSTR targetbuf, DWORD len, DWORD x, LPCSTR suffix, LPCSTR y, LPCSTR cmd) 
@@ -117,7 +118,7 @@ DWORD WINAPI GetFileNameFromBrowse(HWND howner, LPSTR targetbuf, DWORD len, DWOR
 }
 
 /*************************************************************************
- * SHGetSettings [SHELL32.68]
+ * SHGetSettings				[SHELL32.68]
  * 
  */
 DWORD WINAPI SHGetSettings(DWORD x,DWORD y,DWORD z) 
@@ -126,7 +127,7 @@ DWORD WINAPI SHGetSettings(DWORD x,DWORD y,DWORD z)
 }
 
 /*************************************************************************
- * SHShellFolderView_Message [SHELL32.73]
+ * SHShellFolderView_Message			[SHELL32.73]
  *
  * PARAMETERS
  *  hwndCabinet defines the explorer cabinet window that contains the 
@@ -146,34 +147,25 @@ int WINAPI SHShellFolderView_Message(HWND hwndCabinet,UINT uMsg,LPARAM lParam)
 }
 
 /*************************************************************************
- * OleStrToStrN  [SHELL32.78]
- * 
- * NOTES
- *     exported by ordinal
- * FIXME
- *  wrong implemented OleStr is NOT wide string !!!! (jsch)
+ * OleStrToStrN					[SHELL32.78]
  */
-BOOL WINAPI
-OleStrToStrN (LPSTR lpMulti, INT nMulti, LPCWSTR lpWide, INT nWide) {
-    return WideCharToMultiByte (0, 0, lpWide, nWide,
-        lpMulti, nMulti, NULL, NULL);
+BOOL WINAPI OleStrToStrN (LPSTR lpMulti, INT nMulti, LPCWSTR lpWide, INT nWide) 
+{
+	TRACE(shell,"%s %x %s %x\n", lpMulti, nMulti, debugstr_w(lpWide), nWide);
+	return WideCharToMultiByte (0, 0, lpWide, nWide, lpMulti, nMulti, NULL, NULL);
 }
 
 /*************************************************************************
- * StrToOleStrN  [SHELL32.79]
- *
- * NOTES
- *     exported by ordinal
- * FIXME
- *  wrong implemented OleStr is NOT wide string !!!! (jsch)
-*/
-BOOL WINAPI
-StrToOleStrN (LPWSTR lpWide, INT nWide, LPCSTR lpMulti, INT nMulti) {
-    return MultiByteToWideChar (0, 0, lpMulti, nMulti, lpWide, nWide);
+ * StrToOleStrN					[SHELL32.79]
+ */
+BOOL WINAPI StrToOleStrN (LPWSTR lpWide, INT nWide, LPCSTR lpMulti, INT nMulti) 
+{
+	TRACE(shell,"%s %x %s %x\n", debugstr_w(lpWide), nWide, lpMulti, nMulti);
+	return MultiByteToWideChar (0, 0, lpMulti, nMulti, lpWide, nWide);
 }
 
 /*************************************************************************
- * RegisterShellHook [SHELL32.181]
+ * RegisterShellHook				[SHELL32.181]
  *
  * PARAMS
  *      hwnd [I]  window handle
@@ -186,7 +178,7 @@ void WINAPI RegisterShellHook(HWND hwnd, DWORD y) {
     FIXME(shell,"(0x%08x,0x%08lx):stub.\n",hwnd,y);
 }
 /*************************************************************************
- * ShellMessageBoxW [SHELL32.182]
+ * ShellMessageBoxW				[SHELL32.182]
  *
  * Format and output errormessage.
  *
@@ -219,7 +211,7 @@ ShellMessageBoxW(HMODULE hmod,HWND hwnd,DWORD idText,DWORD idTitle,DWORD uType,L
 }
 
 /*************************************************************************
- * ShellMessageBoxA [SHELL32.183]
+ * ShellMessageBoxA				[SHELL32.183]
  */
 INT __cdecl
 ShellMessageBoxA(HMODULE hmod,HWND hwnd,DWORD idText,DWORD idTitle,DWORD uType,LPCVOID arglist) 
@@ -244,7 +236,7 @@ ShellMessageBoxA(HMODULE hmod,HWND hwnd,DWORD idText,DWORD idTitle,DWORD uType,L
 }
 
 /*************************************************************************
- * SHRestricted [SHELL32.100]
+ * SHRestricted				[SHELL32.100]
  *
  * walks through policy table, queries <app> key, <type> value, returns 
  * queried (DWORD) value.
@@ -284,7 +276,7 @@ DWORD WINAPI SHRestricted (DWORD pol) {
 }
 
 /*************************************************************************
- * SHCreateDirectory [SHELL32.165]
+ * SHCreateDirectory				[SHELL32.165]
  *
  * NOTES
  *  exported by ordinal
@@ -305,7 +297,7 @@ DWORD WINAPI SHCreateDirectory(LPSECURITY_ATTRIBUTES sec,LPCSTR path) {
 }
 
 /*************************************************************************
- * SHFree [SHELL32.195]
+ * SHFree					[SHELL32.195]
  *
  * NOTES
  *     free_ptr() - frees memory using IMalloc
@@ -320,7 +312,7 @@ DWORD WINAPI SHFree(LPVOID x) {
 }
 
 /*************************************************************************
- * SHAlloc [SHELL32.196]
+ * SHAlloc					[SHELL32.196]
  *
  * NOTES
  *     void *task_alloc(DWORD len), uses SHMalloc allocator
@@ -334,7 +326,7 @@ LPVOID WINAPI SHAlloc(DWORD len) {
 }
 
 /*************************************************************************
- * OpenRegStream [SHELL32.85]
+ * OpenRegStream				[SHELL32.85]
  *
  * NOTES
  *     exported by ordinal
@@ -347,7 +339,7 @@ DWORD WINAPI OpenRegStream(DWORD x1,DWORD x2,DWORD x3,DWORD x4) {
 }
 
 /*************************************************************************
- * SHRegisterDragDrop [SHELL32.86]
+ * SHRegisterDragDrop				[SHELL32.86]
  *
  * NOTES
  *     exported by ordinal
@@ -358,7 +350,7 @@ DWORD WINAPI SHRegisterDragDrop(HWND hwnd,DWORD x2) {
 }
 
 /*************************************************************************
- * SHRevokeDragDrop [SHELL32.87]
+ * SHRevokeDragDrop				[SHELL32.87]
  *
  * NOTES
  *     exported by ordinal
@@ -369,7 +361,7 @@ DWORD WINAPI SHRevokeDragDrop(DWORD x) {
 }
 
 /*************************************************************************
- * RunFileDlg [SHELL32.61]
+ * RunFileDlg					[SHELL32.61]
  *
  * NOTES
  *     Original name: RunFileDlg (exported by ordinal)
@@ -384,7 +376,7 @@ RunFileDlg (HWND hwndOwner, DWORD dwParam1, DWORD dwParam2,
 }
 
 /*************************************************************************
- * ExitWindowsDialog [SHELL32.60]
+ * ExitWindowsDialog				[SHELL32.60]
  *
  * NOTES
  *     exported by ordinal
@@ -397,7 +389,7 @@ ExitWindowsDialog (HWND hwndOwner)
 }
 
 /*************************************************************************
- * ArrangeWindows [SHELL32.184]
+ * ArrangeWindows				[SHELL32.184]
  * 
  */
 DWORD WINAPI
@@ -410,7 +402,7 @@ ArrangeWindows (DWORD dwParam1, DWORD dwParam2, DWORD dwParam3,
 }
 
 /*************************************************************************
- * SHCLSIDFromString [SHELL32.147]
+ * SHCLSIDFromString				[SHELL32.147]
  *
  * NOTES
  *     exported by ordinal
@@ -426,7 +418,7 @@ SHCLSIDFromString (DWORD dwParam1, DWORD dwParam2)
 
 
 /*************************************************************************
- * SignalFileOpen [SHELL32.103]
+ * SignalFileOpen				[SHELL32.103]
  *
  * NOTES
  *     exported by ordinal
@@ -440,7 +432,7 @@ SignalFileOpen (DWORD dwParam1)
 }
 
 /*************************************************************************
- * SHAddToRecentDocs [SHELL32.234]
+ * SHAddToRecentDocs				[SHELL32.234]
  *
  * PARAMETERS
  *   uFlags  [IN] SHARD_PATH or SHARD_PIDL
@@ -459,7 +451,7 @@ DWORD WINAPI SHAddToRecentDocs (UINT uFlags,LPCVOID pv)
   return 0;
 }
 /*************************************************************************
- * SHFileOperation32 [SHELL32.242]
+ * SHFileOperation				[SHELL32.242]
  *
  */
 DWORD WINAPI SHFileOperationAW(DWORD x)
@@ -469,7 +461,7 @@ DWORD WINAPI SHFileOperationAW(DWORD x)
 }
 
 /*************************************************************************
- * SHFileOperation32A [SHELL32.243]
+ * SHFileOperationA				[SHELL32.243]
  *
  * NOTES
  *     exported by name
@@ -479,7 +471,7 @@ DWORD WINAPI SHFileOperationA (LPSHFILEOPSTRUCTA lpFileOp)
   return 1;
 }
 /*************************************************************************
- * SHFileOperation32W [SHELL32.244]
+ * SHFileOperationW				[SHELL32.244]
  *
  * NOTES
  *     exported by name
@@ -490,7 +482,7 @@ DWORD WINAPI SHFileOperationW (LPSHFILEOPSTRUCTW lpFileOp)
 }
 
 /*************************************************************************
- * SHChangeNotify [SHELL32.239]
+ * SHChangeNotify				[SHELL32.239]
  *
  * NOTES
  *     exported by name
@@ -504,7 +496,7 @@ DWORD WINAPI SHChangeNotify (
   return 0;
 }
 /*************************************************************************
- * SHCreateShellFolderViewEx [SHELL32.174]
+ * SHCreateShellFolderViewEx			[SHELL32.174]
  *
  * NOTES
  *  see IShellFolder::CreateViewObject
@@ -516,7 +508,7 @@ HRESULT WINAPI SHCreateShellFolderViewEx(
   return 0;
 }
 /*************************************************************************
- * SHFind_InitMenuPopup [SHELL32.149]
+ * SHFind_InitMenuPopup				[SHELL32.149]
  *
  * NOTES
  *  Registers the menu behind the "Start" button
@@ -533,7 +525,7 @@ HRESULT WINAPI SHFind_InitMenuPopup (HMENU hMenu, HWND hWndParent, DWORD w, DWOR
 	return 0;
 }
 /*************************************************************************
- * FileMenu_InitMenuPopup [SHELL32.109]
+ * FileMenu_InitMenuPopup			[SHELL32.109]
  *
  */
 HRESULT WINAPI FileMenu_InitMenuPopup (DWORD hmenu)
@@ -541,7 +533,7 @@ HRESULT WINAPI FileMenu_InitMenuPopup (DWORD hmenu)
 	return 0;
 }
 /*************************************************************************
- * FileMenu_Create [SHELL32.114]
+ * FileMenu_Create				[SHELL32.114]
  *
  * w retval from LoadBitmapA
  *
@@ -552,7 +544,7 @@ HRESULT WINAPI FileMenu_Create (DWORD u, DWORD v, DWORD w, DWORD x, DWORD z)
   return 0;
 }
 /*************************************************************************
- * FileMenu_TrackPopupMenuEx [SHELL32.116]
+ * FileMenu_TrackPopupMenuEx			[SHELL32.116]
  *
  * PARAMETERS
  *  uFlags		[in]	according to TrackPopupMenuEx
@@ -567,7 +559,7 @@ HRESULT WINAPI FileMenu_TrackPopupMenuEx (DWORD t, DWORD uFlags, DWORD posX, DWO
 	return 0;
 }
 /*************************************************************************
- *  SHWinHelp [SHELL32.127]
+ *  SHWinHelp					[SHELL32.127]
  *
  */
 HRESULT WINAPI SHWinHelp (DWORD v, DWORD w, DWORD x, DWORD z)
@@ -583,7 +575,7 @@ HRESULT WINAPI SHRunControlPanel (DWORD x, DWORD z)
 	return 0;
 }
 /*************************************************************************
- * ShellExecuteEx [SHELL32.291]
+ * ShellExecuteEx				[SHELL32.291]
  *
  */
 BOOL WINAPI ShellExecuteExAW (LPVOID sei)
@@ -592,7 +584,7 @@ BOOL WINAPI ShellExecuteExAW (LPVOID sei)
 	return ShellExecuteExA (sei);
 }
 /*************************************************************************
- * ShellExecuteEx32A [SHELL32.292]
+ * ShellExecuteExA				[SHELL32.292]
  *
  */
 BOOL WINAPI ShellExecuteExA (LPSHELLEXECUTEINFOA sei)
@@ -668,7 +660,7 @@ BOOL WINAPI ShellExecuteExA (LPSHELLEXECUTEINFOA sei)
 	
 }
 /*************************************************************************
- * ShellExecuteEx32W [SHELL32.293]
+ * ShellExecuteExW				[SHELL32.293]
  *
  */
 BOOL WINAPI ShellExecuteExW (LPSHELLEXECUTEINFOW sei)
@@ -709,7 +701,7 @@ BOOL WINAPI ShellExecuteExW (LPSHELLEXECUTEINFOW sei)
 
 static LPUNKNOWN SHELL32_IExplorerInterface=0;
 /*************************************************************************
- * SHSetInstanceExplorer [SHELL32.176]
+ * SHSetInstanceExplorer			[SHELL32.176]
  *
  * NOTES
  *  Sets the interface
@@ -720,7 +712,7 @@ HRESULT WINAPI SHSetInstanceExplorer (LPUNKNOWN lpUnknown)
 	return (HRESULT) lpUnknown;
 }
 /*************************************************************************
- * SHGetInstanceExplorer [SHELL32.256]
+ * SHGetInstanceExplorer			[SHELL32.256]
  *
  * NOTES
  *  gets the interface pointer of the explorer and a reference
@@ -737,7 +729,7 @@ HRESULT WINAPI SHGetInstanceExplorer (LPUNKNOWN * lpUnknown)
 	return NOERROR;
 }
 /*************************************************************************
- * SHFreeUnusedLibraries [SHELL32.123]
+ * SHFreeUnusedLibraries			[SHELL32.123]
  *
  * NOTES
  *  exported by name
@@ -747,7 +739,7 @@ HRESULT WINAPI SHFreeUnusedLibraries (void)
 	return TRUE;
 }
 /*************************************************************************
- * DAD_ShowDragImage [SHELL32.137]
+ * DAD_ShowDragImage				[SHELL32.137]
  *
  * NOTES
  *  exported by name
@@ -757,7 +749,7 @@ HRESULT WINAPI DAD_ShowDragImage (DWORD u)
   return 0;
 }
 /*************************************************************************
- * FileMenu_Destroy [SHELL32.118]
+ * FileMenu_Destroy				[SHELL32.118]
  *
  * NOTES
  *  exported by name
@@ -767,7 +759,7 @@ HRESULT WINAPI FileMenu_Destroy (DWORD u)
   return 0;
 }
 /*************************************************************************
- * SHRegCloseKey32 [NT4.0:SHELL32.505]
+ * SHRegCloseKey			[NT4.0:SHELL32.505]
  *
  */
 HRESULT WINAPI SHRegCloseKey (HKEY hkey)
@@ -775,7 +767,7 @@ HRESULT WINAPI SHRegCloseKey (HKEY hkey)
 	return RegCloseKey( hkey );
 }
 /*************************************************************************
- * SHRegOpenKey32A [SHELL32.506]
+ * SHRegOpenKeyA				[SHELL32.506]
  *
  */
 HRESULT WINAPI SHRegOpenKeyA(HKEY hKey, LPSTR lpSubKey, LPHKEY phkResult)
@@ -785,7 +777,7 @@ HRESULT WINAPI SHRegOpenKeyA(HKEY hKey, LPSTR lpSubKey, LPHKEY phkResult)
 }
 
 /*************************************************************************
- * SHRegOpenKey32W [NT4.0:SHELL32.507]
+ * SHRegOpenKeyW				[NT4.0:SHELL32.507]
  *
  */
 HRESULT WINAPI SHRegOpenKeyW (HKEY hkey, LPCWSTR lpszSubKey, LPHKEY retkey)
@@ -793,7 +785,7 @@ HRESULT WINAPI SHRegOpenKeyW (HKEY hkey, LPCWSTR lpszSubKey, LPHKEY retkey)
 	return RegOpenKeyW( hkey, lpszSubKey, retkey );
 }
 /*************************************************************************
- * SHRegQueryValueExA [SHELL32.509]
+ * SHRegQueryValueExA				[SHELL32.509]
  *
  */
 HRESULT WINAPI SHRegQueryValueExA(DWORD u, LPSTR v, DWORD w, DWORD x,
@@ -803,7 +795,7 @@ HRESULT WINAPI SHRegQueryValueExA(DWORD u, LPSTR v, DWORD w, DWORD x,
 	return 0;
 }
 /*************************************************************************
- * SHRegQueryValue32W [NT4.0:SHELL32.510]
+ * SHRegQueryValueW				[NT4.0:SHELL32.510]
  *
  */
 HRESULT WINAPI SHRegQueryValueW (HKEY hkey, LPWSTR lpszSubKey,
@@ -814,7 +806,7 @@ HRESULT WINAPI SHRegQueryValueW (HKEY hkey, LPWSTR lpszSubKey,
 }
 
 /*************************************************************************
- * SHRegQueryValueEx32W [NT4.0:SHELL32.511]
+ * SHRegQueryValueExW				[NT4.0:SHELL32.511]
  *
  * FIXME 
  *  if the datatype REG_EXPAND_SZ then expand the string and change
@@ -830,7 +822,7 @@ HRESULT WINAPI SHRegQueryValueExW (HKEY hkey, LPWSTR pszValue, LPDWORD pdwReserv
 }
 
 /*************************************************************************
- * ReadCabinetState [NT 4.0:SHELL32.651]
+ * ReadCabinetState				[NT 4.0:SHELL32.651]
  *
  */
 HRESULT WINAPI ReadCabinetState(DWORD u, DWORD v)
@@ -838,7 +830,7 @@ HRESULT WINAPI ReadCabinetState(DWORD u, DWORD v)
 	return 0;
 }
 /*************************************************************************
- * WriteCabinetState [NT 4.0:SHELL32.652]
+ * WriteCabinetState				[NT 4.0:SHELL32.652]
  *
  */
 HRESULT WINAPI WriteCabinetState(DWORD u)
@@ -846,7 +838,7 @@ HRESULT WINAPI WriteCabinetState(DWORD u)
 	return 0;
 }
 /*************************************************************************
- * FileIconInit [SHELL32.660]
+ * FileIconInit 				[SHELL32.660]
  *
  */
 BOOL WINAPI FileIconInit(BOOL bFullInit)
@@ -854,7 +846,7 @@ BOOL WINAPI FileIconInit(BOOL bFullInit)
 	return 0;
 }
 /*************************************************************************
- * IsUserAdmin [NT 4.0:SHELL32.680]
+ * IsUserAdmin					[NT 4.0:SHELL32.680]
  *
  */
 HRESULT WINAPI IsUserAdmin(void)
@@ -862,7 +854,7 @@ HRESULT WINAPI IsUserAdmin(void)
 	return TRUE;
 }
 /*************************************************************************
- * StrRetToStrN [SHELL32.96]
+ * StrRetToStrN					[SHELL32.96]
  * 
  * converts a STRRET to a normal string
  *
@@ -905,7 +897,7 @@ HRESULT WINAPI StrRetToStrN (LPVOID dest, DWORD len, LPSTRRET src, LPITEMIDLIST
 }
 
 /*************************************************************************
- * StrChrW [NT 4.0:SHELL32.651]
+ * StrChrW					[NT 4.0:SHELL32.651]
  *
  */
 LPWSTR WINAPI StrChrW (LPWSTR str, WCHAR x )
@@ -922,7 +914,7 @@ LPWSTR WINAPI StrChrW (LPWSTR str, WCHAR x )
 }
 
 /*************************************************************************
- *	StrCmpNIW		[NT 4.0:SHELL32.*]
+ * StrCmpNIW					[NT 4.0:SHELL32.*]
  *
  */
 INT WINAPI StrCmpNIW ( LPWSTR wstr1, LPWSTR wstr2, INT len)
@@ -931,7 +923,7 @@ INT WINAPI StrCmpNIW ( LPWSTR wstr1, LPWSTR wstr2, INT len)
 }
 
 /*************************************************************************
- * SHAllocShared [SHELL32.520]
+ * SHAllocShared				[SHELL32.520]
  *
  * NOTES
  *  parameter1 is return value from HeapAlloc
@@ -961,7 +953,7 @@ HGLOBAL WINAPI SHAllocShared(LPVOID psrc, DWORD size, DWORD procID)
 	return hmem;
 }
 /*************************************************************************
- * SHLockShared [SHELL32.521]
+ * SHLockShared					[SHELL32.521]
  *
  * NOTES
  *  parameter1 is return value from SHAllocShared
@@ -974,7 +966,7 @@ LPVOID WINAPI SHLockShared(HANDLE hmem, DWORD procID)
 	return GlobalLock(hmem);
 }
 /*************************************************************************
- * SHUnlockShared [SHELL32.522]
+ * SHUnlockShared				[SHELL32.522]
  *
  * NOTES
  *  parameter1 is return value from SHLockShared
@@ -984,7 +976,7 @@ BOOL WINAPI SHUnlockShared(HANDLE pmem)
 	return GlobalUnlock(pmem); 
 }
 /*************************************************************************
- * SHFreeShared [SHELL32.523]
+ * SHFreeShared					[SHELL32.523]
  *
  * NOTES
  *  parameter1 is return value from SHAllocShared
@@ -996,7 +988,7 @@ HANDLE WINAPI SHFreeShared(HANDLE hmem, DWORD procID)
 }
 
 /*************************************************************************
- * SetAppStartingCursor32 [SHELL32.99]
+ * SetAppStartingCursor				[SHELL32.99]
  *
  */
 HRESULT WINAPI SetAppStartingCursor(HWND u, DWORD v)
@@ -1004,7 +996,7 @@ HRESULT WINAPI SetAppStartingCursor(HWND u, DWORD v)
 	return 0;
 }
 /*************************************************************************
- * SHLoadOLE32 [SHELL32.151]
+ * SHLoadOLE					[SHELL32.151]
  *
  */
 HRESULT WINAPI SHLoadOLE(DWORD u)
@@ -1012,7 +1004,7 @@ HRESULT WINAPI SHLoadOLE(DWORD u)
 	return S_OK;
 }
 /*************************************************************************
- * Shell_MergeMenus32 [SHELL32.67]
+ * Shell_MergeMenus				[SHELL32.67]
  *
  */
 BOOL _SHIsMenuSeparator(HMENU hm, int i)
@@ -1147,11 +1139,10 @@ HRESULT WINAPI Shell_MergeMenus (HMENU hmDst, HMENU hmSrc, UINT uInsert, UINT uI
 	    }
 	  }
 	}
-        return(uIDMax);
-
+	return(uIDMax);
 }
 /*************************************************************************
- * DriveType32 [SHELL32.64]
+ * DriveType					[SHELL32.64]
  *
  */
 HRESULT WINAPI DriveType(DWORD u)
@@ -1159,7 +1150,7 @@ HRESULT WINAPI DriveType(DWORD u)
 	return 0;
 }
 /*************************************************************************
- * SHAbortInvokeCommand [SHELL32.198]
+ * SHAbortInvokeCommand				[SHELL32.198]
  *
  */
 HRESULT WINAPI SHAbortInvokeCommand(void)
@@ -1167,7 +1158,7 @@ HRESULT WINAPI SHAbortInvokeCommand(void)
 	return 1;
 }
 /*************************************************************************
- * SHOutOfMemoryMessageBox [SHELL32.126]
+ * SHOutOfMemoryMessageBox			[SHELL32.126]
  *
  */
 HRESULT WINAPI SHOutOfMemoryMessageBox(DWORD u, DWORD v, DWORD w)
@@ -1175,7 +1166,7 @@ HRESULT WINAPI SHOutOfMemoryMessageBox(DWORD u, DWORD v, DWORD w)
 	return 0;
 }
 /*************************************************************************
- * SHFlushClipboard [SHELL32.121]
+ * SHFlushClipboard				[SHELL32.121]
  *
  */
 HRESULT WINAPI SHFlushClipboard(void)
@@ -1183,7 +1174,7 @@ HRESULT WINAPI SHFlushClipboard(void)
 	return 1;
 }
 /*************************************************************************
- * StrRChrW [SHELL32.320]
+ * StrRChrW					[SHELL32.320]
  *
  */
 LPWSTR WINAPI StrRChrW(LPWSTR lpStart, LPWSTR lpEnd, DWORD wMatch)
@@ -1205,7 +1196,7 @@ LPWSTR WINAPI StrRChrW(LPWSTR lpStart, LPWSTR lpEnd, DWORD wMatch)
 	return wptr;
 }
 /*************************************************************************
-*	StrFormatByteSize	[SHLWAPI]
+* StrFormatByteSize				[SHLWAPI]
 */
 LPSTR WINAPI StrFormatByteSizeA ( DWORD dw, LPSTR pszBuf, UINT cchBuf )
 {	char buf[64];
@@ -1244,7 +1235,7 @@ LPWSTR WINAPI StrFormatByteSizeW ( DWORD dw, LPWSTR pszBuf, UINT cchBuf )
 	return pszBuf;	
 }
 /*************************************************************************
- * SHWaitForFileToOpen [SHELL32.97]
+ * SHWaitForFileToOpen				[SHELL32.97]
  *
  */
 HRESULT WINAPI SHWaitForFileToOpen(DWORD u, DWORD v, DWORD w)
@@ -1252,7 +1243,7 @@ HRESULT WINAPI SHWaitForFileToOpen(DWORD u, DWORD v, DWORD w)
 	return 0;
 }
 /*************************************************************************
- * Control_FillCache_RunDLL [SHELL32.8]
+ * Control_FillCache_RunDLL			[SHELL32.8]
  *
  */
 HRESULT WINAPI Control_FillCache_RunDLL(HWND hWnd, HANDLE hModule, DWORD w, DWORD x)
@@ -1260,7 +1251,7 @@ HRESULT WINAPI Control_FillCache_RunDLL(HWND hWnd, HANDLE hModule, DWORD w, DWOR
 	return 0;
 }
 /*************************************************************************
- * RunDLL_CallEntry16 [SHELL32.122]
+ * RunDLL_CallEntry16				[SHELL32.122]
  * the name is propably wrong
  */
 HRESULT WINAPI RunDLL_CallEntry16(DWORD v, DWORD w, DWORD x, DWORD y, DWORD z)
diff --git a/dlls/shell32/shellpath.c b/dlls/shell32/shellpath.c
index aebb75751983c22404ee36dd6259bfbb651b5700..d0bba2e384ec5805bff8e4580afa5338644eca2e 100644
--- a/dlls/shell32/shellpath.c
+++ b/dlls/shell32/shellpath.c
@@ -496,7 +496,7 @@ BOOL WINAPI PathMatchSpecAW(LPVOID name, LPVOID mask)
 	return PathMatchSpecA( name, mask );
 }
 /*************************************************************************
- * PathSetDlgItemPath32AW [SHELL32.48]
+ * PathSetDlgItemPathAW [SHELL32.48]
  * NOTES
  *  use PathCompactPath to make sure, the path fits into the control
  */
@@ -516,7 +516,7 @@ BOOL WINAPI PathSetDlgItemPathAW(HWND hDlg, int id, LPCVOID pszPath)
 }
 
 /*************************************************************************
- * PathQualify32AW [SHELL32.49]
+ * PathQualifyAW [SHELL32.49]
  */
 
 BOOL WINAPI PathQualifyA(LPCSTR pszPath) 
diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c
index 7c503237663933a79be95e04848419a295e5f347..8d1f6d4aa591ee4fd659f1524bd7182994e78370 100644
--- a/dlls/shell32/shlview.c
+++ b/dlls/shell32/shlview.c
@@ -303,7 +303,7 @@ BOOL ShellView_InitList(LPSHELLVIEW this)
 
 	lvColumn.cx = nColumn1;
 	strcpy(szString,"File");
-	/*LoadString32A(shell32_hInstance, IDS_COLUMN1, szString, sizeof(szString));*/
+	/*LoadStringA(shell32_hInstance, IDS_COLUMN1, szString, sizeof(szString));*/
 	ListView_InsertColumnA(this->hWndList, 0, &lvColumn);
 
 	lvColumn.cx = nColumn2;
@@ -992,7 +992,7 @@ LRESULT ShellView_OnNotify(LPSHELLVIEW this, UINT CtlID, LPNMHDR lpnmh)
 	    break;
 
 	  case HDN_ENDTRACKA:
-	    TRACE(shell,"-- HDN_ENDTRACK32A %p\n",this);
+	    TRACE(shell,"-- HDN_ENDTRACKA %p\n",this);
 	    /*nColumn1 = ListView_GetColumnWidth(this->hWndList, 0);
 	    nColumn2 = ListView_GetColumnWidth(this->hWndList, 1);*/
 	    break;
@@ -1015,7 +1015,7 @@ LRESULT ShellView_OnNotify(LPSHELLVIEW this, UINT CtlID, LPNMHDR lpnmh)
 	    break;
 
 	  case LVN_GETDISPINFOA:
-	    TRACE(shell,"-- LVN_GETDISPINFO32A %p\n",this);
+	    TRACE(shell,"-- LVN_GETDISPINFOA %p\n",this);
 	    pidl = (LPITEMIDLIST)lpdi->item.lParam;
 
 
diff --git a/include/shell.h b/include/shell.h
index 9c802de888e68bb8f5ae3c547ce473b09e7bef05..a18704ef8207361fa3c9d2443570b275a5b6b328 100644
--- a/include/shell.h
+++ b/include/shell.h
@@ -196,6 +196,15 @@ typedef struct _AppBarData {
 	LPARAM	lParam;
 } APPBARDATA, *PAPPBARDATA;
 
+#define SHGFI_LARGEICON         0x000000000     /* get large icon */
+#define SHGFI_SMALLICON         0x000000001     /* get small icon */
+#define SHGFI_OPENICON          0x000000002     /* get open icon */
+#define SHGFI_SHELLICONSIZE     0x000000004     /* get shell size icon */
+#define SHGFI_PIDL              0x000000008     /* pszPath is a pidl */
+#define SHGFI_USEFILEATTRIBUTES 0x000000010     /* use passed dwFileAttribute */
+#define SHGFI_UNKNOWN1          0x000000020
+#define SHGFI_UNKNOWN2          0x000000040
+#define SHGFI_UNKNOWN3          0x000000080
 #define SHGFI_ICON              0x000000100     /* get icon */
 #define SHGFI_DISPLAYNAME       0x000000200     /* get display name */
 #define SHGFI_TYPENAME          0x000000400     /* get type name */
@@ -205,12 +214,7 @@ typedef struct _AppBarData {
 #define SHGFI_SYSICONINDEX      0x000004000     /* get system icon index */
 #define SHGFI_LINKOVERLAY       0x000008000     /* put a link overlay on icon */
 #define SHGFI_SELECTED          0x000010000     /* show icon in selected state */
-#define SHGFI_LARGEICON         0x000000000     /* get large icon */
-#define SHGFI_SMALLICON         0x000000001     /* get small icon */
-#define SHGFI_OPENICON          0x000000002     /* get open icon */
-#define SHGFI_SHELLICONSIZE     0x000000004     /* get shell size icon */
-#define SHGFI_PIDL              0x000000008     /* pszPath is a pidl */
-#define SHGFI_USEFILEATTRIBUTES 0x000000010     /* use passed dwFileAttribute */
+#define SHGFI_ATTR_SPECIFIED    0x000020000     /* get only specified attributes */
 
 /****************************************************************************
 * SHChangeNotifyRegister API
diff --git a/relay32/shell32.spec b/relay32/shell32.spec
index fe6931f32854b2870bf60371c266b2a7d58ecc09..d2aa49d417dcdd20df8b3f3b5e3fce4ebd081728 100644
--- a/relay32/shell32.spec
+++ b/relay32/shell32.spec
@@ -33,7 +33,7 @@ init	Shell32LibMain
   25 stdcall ILCombine(ptr ptr) ILCombine
   26 stub ILLoadFromStream@8
   27 stub ILSaveToStream@8
-  28 stub SHILCreateFromPath@12
+  28 stdcall SHILCreateFromPath (long long long) SHILCreateFromPathAW
   29 stdcall PathIsRoot(ptr) PathIsRootAW
   30 stdcall PathBuildRoot(ptr long) PathBuildRootA
   31 stdcall PathFindExtension(ptr) PathFindExtensionAW
@@ -162,7 +162,7 @@ init	Shell32LibMain
  154 stdcall ILAppend (long long long) ILAppend
  155 stdcall ILFree (ptr) ILFree
  156 stdcall ILGlobalFree (ptr) ILGlobalFree
- 157 stdcall ILCreateFromPath (ptr) ILCreateFromPath
+ 157 stdcall ILCreateFromPath (ptr) ILCreateFromPathAW
  158 stdcall PathGetExtension(str long long) PathGetExtensionAW
  159 stub PathIsDirectory
  160 stub SHNetConnectionDialog