Commit 6101324f authored by Juergen Schmied's avatar Juergen Schmied Committed by Alexandre Julliard

Many bugfixes, new stubs SHGetRealIDL, SHRegQueryValue32W,

SHRegQueryValueEx32W, StrRetToStrN, StrChrW, SHAllocShared, SHLockShared, SHUnlockShared, SHFreeShared, SetAppStartingCursor32, SHLoadOLE32, Shell_MergeMenus32, PathGetDriveNumber32, DriveType32, SHAbortInvokeCommand, SHOutOfMemoryMessageBox, SHFlushClipboard.
parent 82853711
...@@ -119,6 +119,9 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl) ...@@ -119,6 +119,9 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
{ DWORD len; { DWORD len;
LPITEMIDLIST newpidl=NULL; LPITEMIDLIST newpidl=NULL;
TRACE(pidl,"pidl=%p \n",pidl);
pdump(pidl);
if (pidl) if (pidl)
{ len = pidl->mkid.cb; { len = pidl->mkid.cb;
newpidl = (LPITEMIDLIST) SHAlloc (len+2); newpidl = (LPITEMIDLIST) SHAlloc (len+2);
...@@ -127,7 +130,7 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl) ...@@ -127,7 +130,7 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
ILGetNext(newpidl)->mkid.cb = 0x00; ILGetNext(newpidl)->mkid.cb = 0x00;
} }
} }
TRACE(pidl,"pidl=%p newpidl=%p\n",pidl, newpidl); TRACE(pidl,"-- newpidl=%p\n",newpidl);
return newpidl; return newpidl;
} }
...@@ -196,6 +199,16 @@ LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2) ...@@ -196,6 +199,16 @@ LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2)
return pidlNew; return pidlNew;
} }
/************************************************************************* /*************************************************************************
* SHGetRealIDL [SHELL32.98]
*
* NOTES
*/
LPITEMIDLIST WINAPI SHGetRealIDL(DWORD x, DWORD y, DWORD z)
{ FIXME(pidl,"0x%04lx 0x%04lx 0x%04lx\n",x,y,z);
return 0;
}
/*************************************************************************
* SHLogILFromFSIL [SHELL32.95] * SHLogILFromFSIL [SHELL32.95]
* *
* NOTES * NOTES
...@@ -263,12 +276,24 @@ LPITEMIDLIST WINAPI ILGetNext(LPITEMIDLIST pidl) ...@@ -263,12 +276,24 @@ LPITEMIDLIST WINAPI ILGetNext(LPITEMIDLIST pidl)
* NOTES * NOTES
* Adds the single item to the idlist indicated by pidl. * Adds the single item to the idlist indicated by pidl.
* if bEnd is 0, adds the item to the front of the list, * if bEnd is 0, adds the item to the front of the list,
* otherwise adds the item to the end. * otherwise adds the item to the end. (???)
* Destroys the passed in idlist! * Destroys the passed in idlist! (???)
*/ */
LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl,LPCITEMIDLIST item,BOOL32 bEnd) LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl,LPCITEMIDLIST item,BOOL32 bEnd)
{ FIXME(pidl,"(pidl=%p,pidl=%p,%08u)stub\n",pidl,item,bEnd); { LPITEMIDLIST idlRet;
return NULL; WARN(pidl,"(pidl=%p,pidl=%p,%08u)semi-stub\n",pidl,item,bEnd);
pdump (pidl);
pdump (item);
if (_ILIsDesktop(pidl))
{ idlRet = ILClone(item);
if (pidl)
SHFree (pidl);
return idlRet;
}
idlRet=ILCombine(pidl,item);
SHFree(pidl);
return idlRet;
} }
/************************************************************************* /*************************************************************************
* ILFree [SHELL32.155] * ILFree [SHELL32.155]
......
...@@ -451,10 +451,11 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE ...@@ -451,10 +451,11 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
enum enum
{ FT_UNKNOWN= 0x00000000, { FT_UNKNOWN= 0x00000000,
FT_DIR= 0x00000001, FT_DIR= 0x00000001,
FT_DESKTOP= 0x00000002 FT_DESKTOP= 0x00000002,
FT_SPECIAL= 0x00000003
} tFolder; } tFolder;
TRACE(shell,"(%04x,%d,%p)\n", hwndOwner,nFolder,ppidl); TRACE(shell,"(%04x,0x%x,%p)\n", hwndOwner,nFolder,ppidl);
strcpy(buffer,"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\"); strcpy(buffer,"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\");
...@@ -487,7 +488,7 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE ...@@ -487,7 +488,7 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
case CSIDL_DRIVES: case CSIDL_DRIVES:
strcpy (buffer,"xxx"); /*virtual folder*/ strcpy (buffer,"xxx"); /*virtual folder*/
TRACE (shell,"looking for Drives\n"); TRACE (shell,"looking for Drives\n");
tFolder=FT_UNKNOWN; tFolder=FT_SPECIAL;
break; break;
case CSIDL_FONTS: case CSIDL_FONTS:
strcpy (buffer,"Fonts"); strcpy (buffer,"Fonts");
...@@ -602,10 +603,13 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE ...@@ -602,10 +603,13 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
case FT_DESKTOP: case FT_DESKTOP:
strcpy (tpath,"Desktop"); strcpy (tpath,"Desktop");
break; break;
case FT_SPECIAL:
if (nFolder==CSIDL_DRIVES)
strcpy (tpath,"My Computer");
break;
default: default:
RegCloseKey(key); RegCloseKey(key);
return E_OUTOFMEMORY; return E_OUTOFMEMORY;
break;
} }
RegCloseKey(key); RegCloseKey(key);
......
...@@ -990,54 +990,66 @@ HRESULT WINAPI SHGetDataFromIDListA(DWORD u, DWORD v, DWORD w, DWORD x, DWORD y) ...@@ -990,54 +990,66 @@ HRESULT WINAPI SHGetDataFromIDListA(DWORD u, DWORD v, DWORD w, DWORD x, DWORD y)
return 0; return 0;
} }
/************************************************************************* /*************************************************************************
* SHRegCloseKey [SHELL32.505] * SHRegCloseKey32 [NT4.0:SHELL32.505]
* *
* XXX I am not sure if the given param is correct. :-)
*/ */
HRESULT WINAPI SHRegCloseKey(HKEY key) HRESULT WINAPI SHRegCloseKey32 (HKEY hkey)
{ FIXME(shell,"(0x%08lx)\n", key); { TRACE(shell,"0x%04x\n",hkey);
/* XXX Is this correct? */ return RegCloseKey( hkey );
return RegCloseKey(key);
} }
/************************************************************************* /*************************************************************************
* SHRegOpenKey32A [SHELL32.506] * SHRegOpenKey32A [SHELL32.506]
* *
* XXX I am not sure if the given param is correct. :-)
*/ */
HRESULT WINAPI SHRegOpenKey32A(HKEY hKey, LPSTR lpSubKey, LPHKEY phkResult) HRESULT WINAPI SHRegOpenKey32A(HKEY hKey, LPSTR lpSubKey, LPHKEY phkResult)
{ FIXME(shell,"(0x%08lx, %s, 0x%08lx)\n", hKey, debugstr_a(lpSubKey), { FIXME(shell,"(0x%08x, %s, %p)\n", hKey, debugstr_a(lpSubKey),
phkResult); phkResult);
/* XXX Is this correct? */
return RegOpenKey32A(hKey, lpSubKey, phkResult); return RegOpenKey32A(hKey, lpSubKey, phkResult);
} }
/************************************************************************* /*************************************************************************
* SHRegOpenKey32W [SHELL32.507] * SHRegOpenKey32W [NT4.0:SHELL32.507]
* *
* XXX I am not sure if the given param is correct. :-)
*/ */
HRESULT WINAPI SHRegOpenKey32W(HKEY hKey, LPWSTR lpSubKey, LPHKEY phkResult) HRESULT WINAPI SHRegOpenKey32W (HKEY hkey, LPCWSTR lpszSubKey, LPHKEY retkey)
{ FIXME(shell,"(0x%08lx, %s, 0x%08lx)\n", hKey, debugstr_w(lpSubKey), { WARN(shell,"0x%04x %s %p\n",hkey,debugstr_w(lpszSubKey),retkey);
phkResult); return RegOpenKey32W( hkey, lpszSubKey, retkey );
/* XXX Is this correct? */
return RegOpenKey32W(hKey, lpSubKey, phkResult);
} }
/************************************************************************* /*************************************************************************
* SHRegQueryValueExA [SHELL32.509] * SHRegQueryValueExA [SHELL32.509]
* *
* XXX I know this is not the correct parameter. Check with documentation.
*/ */
HRESULT WINAPI SHRegQueryValueEx32A(DWORD u, LPSTR v, DWORD w, DWORD x, HRESULT WINAPI SHRegQueryValueEx32A(DWORD u, LPSTR v, DWORD w, DWORD x,
DWORD y, DWORD z) DWORD y, DWORD z)
{ FIXME(shell,"0x%04lx %s 0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",u,debugstr_a(v),w,x,y,z); { FIXME(shell,"0x%04lx %s 0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",
u,debugstr_a(v),w,x,y,z);
return 0; return 0;
} }
/************************************************************************* /*************************************************************************
* SHRegQueryValueEx32W [NT4.0:SHELL32.511] * SHRegQueryValue32W [NT4.0:SHELL32.510]
* *
*/ */
HRESULT WINAPI SHRegQueryValueEx32W (DWORD u, LPWSTR v, DWORD w, DWORD x, DWORD y, DWORD z) HRESULT WINAPI SHRegQueryValue32W (HKEY hkey, LPWSTR lpszSubKey,
{ FIXME(shell,"0x%04lx %s 0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",u,debugstr_w(v),w,x,y,z); LPWSTR lpszData, LPDWORD lpcbData )
return 0; { WARN(shell,"0x%04x %s %p %p semi-stub\n",
hkey, debugstr_w(lpszSubKey), lpszData, lpcbData);
return RegQueryValue32W( hkey, lpszSubKey, lpszData, lpcbData );
}
/*************************************************************************
* SHRegQueryValueEx32W [NT4.0:SHELL32.511]
*
* FIXME
* if the datatype REG_EXPAND_SZ then expand the string and change
* *pdwType to REG_SZ.
*/
HRESULT WINAPI SHRegQueryValueEx32W (HKEY hkey, LPWSTR pszValue, LPDWORD pdwReserved,
LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData)
{ DWORD ret;
WARN(shell,"0x%04x %s %p %p %p %p semi-stub\n",
hkey, debugstr_w(pszValue), pdwReserved, pdwType, pvData, pcbData);
ret = RegQueryValueEx32W ( hkey, pszValue, pdwReserved, pdwType, pvData, pcbData);
return ret;
} }
/************************************************************************* /*************************************************************************
...@@ -1073,10 +1085,286 @@ HRESULT WINAPI IsUserAdmin() ...@@ -1073,10 +1085,286 @@ HRESULT WINAPI IsUserAdmin()
return TRUE; return TRUE;
} }
/************************************************************************* /*************************************************************************
* SHFlushClipboard [SHELL32.121] * StrRetToStrN [SHELL32.96]
*
* converts a STRRET to a normal string
*
* NOTES
* FIXME the string handling is to simple (different STRRET choices)
* at the moment only CSTR
* the pidl is for STRRET OFFSET
*/
HRESULT WINAPI StrRetToStrN (LPSTR dest, DWORD len, LPSTRRET src, LPITEMIDLIST x)
{ FIXME(shell,"dest=0x%p len=0x%lx strret=0x%p pidl=%p stub\n",dest,len,src,x);
strncpy(dest,src->u.cStr,len);
return S_OK;
}
/*************************************************************************
* StrChrW [NT 4.0:SHELL32.651]
*
*/
HRESULT WINAPI StrChrW (LPWSTR u, DWORD v)
{ FIXME(shell,"%s 0x%lx stub\n",debugstr_w(u),v);
return 0;
}
/*************************************************************************
* SHAllocShared [SHELL32.520]
*
* NOTES
* parameter1 is return value from HeapAlloc
* parameter2 is equal to the size allocated with HeapAlloc
* parameter3 is return value from GetCurrentProcessId
*
* the return value is posted as lParam with 0x402 (WM_USER+2) to somewhere
* WM_USER+2 could be the undocumented CWM_SETPATH
* the allocated memory contains a pidl
*/
HGLOBAL32 WINAPI SHAllocShared(LPVOID psrc, DWORD size, DWORD procID)
{ HGLOBAL32 hmem;
LPVOID pmem;
TRACE(shell,"ptr=%p size=0x%04lx procID=0x%04lx\n",psrc,size,procID);
hmem = GlobalAlloc32(GMEM_FIXED, size);
if (!hmem)
return 0;
pmem = GlobalLock32 (hmem);
if (! pmem)
return 0;
memcpy (pmem, psrc, size);
GlobalUnlock32(hmem);
return hmem;
}
/*************************************************************************
* SHLockShared [SHELL32.521]
*
* NOTES
* parameter1 is return value from SHAllocShared
* parameter2 is return value from GetCurrentProcessId
* the receiver of (WM_USER+2) trys to lock the HANDLE (?)
* the returnvalue seems to be a memoryadress
*/
void * WINAPI SHLockShared(HANDLE32 hmem, DWORD procID)
{ TRACE(shell,"handle=0x%04x procID=0x%04lx\n",hmem,procID);
return GlobalLock32(hmem);
}
/*************************************************************************
* SHUnlockShared [SHELL32.522]
*
* NOTES
* parameter1 is return value from SHLockShared
*/
BOOL32 WINAPI SHUnlockShared(HANDLE32 pmem)
{ TRACE(shell,"handle=0x%04x\n",pmem);
return GlobalUnlock32(pmem);
}
/*************************************************************************
* SHFreeShared [SHELL32.523]
*
* NOTES
* parameter1 is return value from SHAllocShared
* parameter2 is return value from GetCurrentProcessId
*/
HANDLE32 WINAPI SHFreeShared(HANDLE32 hmem, DWORD procID)
{ TRACE(shell,"handle=0x%04x 0x%04lx\n",hmem,procID);
return GlobalFree32(hmem);
}
/*************************************************************************
* SetAppStartingCursor32 [SHELL32.99]
* *
*/ */
HRESULT WINAPI SHFlushClipboard(VOID) HRESULT WINAPI SetAppStartingCursor32(DWORD u, DWORD v)
{ FIXME(shell,"0x%04lx 0x%04lx stub\n",u,v );
return 0;
}
/*************************************************************************
* SHLoadOLE32 [SHELL32.151]
*
*/
HRESULT WINAPI SHLoadOLE32(DWORD u)
{ FIXME(shell,"0x%04lx stub\n",u);
return S_OK;
}
/*************************************************************************
* Shell_MergeMenus32 [SHELL32.67]
*
*/
BOOL32 _SHIsMenuSeparator(HMENU32 hm, int i)
{
MENUITEMINFO32A mii;
mii.cbSize = sizeof(MENUITEMINFO32A);
mii.fMask = MIIM_TYPE;
mii.cch = 0; /* WARNING: We MUST initialize it to 0*/
if (!GetMenuItemInfo32A(hm, i, TRUE, &mii))
{ return(FALSE);
}
if (mii.fType & MFT_SEPARATOR)
{ return(TRUE);
}
return(FALSE);
}
#define MM_ADDSEPARATOR 0x00000001L
#define MM_SUBMENUSHAVEIDS 0x00000002L
HRESULT WINAPI Shell_MergeMenus32 (HMENU32 hmDst, HMENU32 hmSrc, UINT32 uInsert, UINT32 uIDAdjust, UINT32 uIDAdjustMax, ULONG uFlags)
{ int nItem;
HMENU32 hmSubMenu;
BOOL32 bAlreadySeparated;
MENUITEMINFO32A miiSrc;
char szName[256];
UINT32 uTemp, uIDMax = uIDAdjust;
FIXME(shell,"hmenu1=0x%04x hmenu2=0x%04x 0x%04x 0x%04x 0x%04x 0x%04lx stub\n",
hmDst, hmSrc, uInsert, uIDAdjust, uIDAdjustMax, uFlags);
if (!hmDst || !hmSrc)
{ return uIDMax;
}
nItem = GetMenuItemCount32(hmDst);
if (uInsert >= (UINT32)nItem)
{ uInsert = (UINT32)nItem;
bAlreadySeparated = TRUE;
}
else
{ bAlreadySeparated = _SHIsMenuSeparator(hmDst, uInsert);;
}
if ((uFlags & MM_ADDSEPARATOR) && !bAlreadySeparated)
{ /* Add a separator between the menus */
InsertMenu32A(hmDst, uInsert, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
bAlreadySeparated = TRUE;
}
/* Go through the menu items and clone them*/
for (nItem = GetMenuItemCount32(hmSrc) - 1; nItem >= 0; nItem--)
{ miiSrc.cbSize = sizeof(MENUITEMINFO32A);
miiSrc.fMask = MIIM_STATE | MIIM_ID | MIIM_SUBMENU | MIIM_CHECKMARKS | MIIM_TYPE | MIIM_DATA;
/* We need to reset this every time through the loop in case
menus DON'T have IDs*/
miiSrc.fType = MFT_STRING;
miiSrc.dwTypeData = szName;
miiSrc.dwItemData = 0;
miiSrc.cch = sizeof(szName);
if (!GetMenuItemInfo32A(hmSrc, nItem, TRUE, &miiSrc))
{ continue;
}
if (miiSrc.fType & MFT_SEPARATOR)
{ /* This is a separator; don't put two of them in a row*/
if (bAlreadySeparated)
{ continue;
}
bAlreadySeparated = TRUE;
}
else if (miiSrc.hSubMenu)
{ if (uFlags & MM_SUBMENUSHAVEIDS)
{ /* Adjust the ID and check it*/
miiSrc.wID += uIDAdjust;
if (miiSrc.wID > uIDAdjustMax)
{ continue;
}
if (uIDMax <= miiSrc.wID)
{ uIDMax = miiSrc.wID + 1;
}
}
else
{ /* Don't set IDs for submenus that didn't have them already */
miiSrc.fMask &= ~MIIM_ID;
}
hmSubMenu = miiSrc.hSubMenu;
miiSrc.hSubMenu = CreatePopupMenu32();
if (!miiSrc.hSubMenu)
{ return(uIDMax);
}
uTemp = Shell_MergeMenus32(miiSrc.hSubMenu, hmSubMenu, 0, uIDAdjust, uIDAdjustMax, uFlags&MM_SUBMENUSHAVEIDS);
if (uIDMax <= uTemp)
{ uIDMax = uTemp;
}
bAlreadySeparated = FALSE;
}
else
{ /* Adjust the ID and check it*/
miiSrc.wID += uIDAdjust;
if (miiSrc.wID > uIDAdjustMax)
{ continue;
}
if (uIDMax <= miiSrc.wID)
{ uIDMax = miiSrc.wID + 1;
}
bAlreadySeparated = FALSE;
}
if (!InsertMenuItem32A(hmDst, uInsert, TRUE, &miiSrc))
{ return(uIDMax);
}
}
/* Ensure the correct number of separators at the beginning of the
inserted menu items*/
if (uInsert == 0)
{ if (bAlreadySeparated)
{ DeleteMenu32(hmDst, uInsert, MF_BYPOSITION);
}
}
else
{ if (_SHIsMenuSeparator(hmDst, uInsert-1))
{ if (bAlreadySeparated)
{ DeleteMenu32(hmDst, uInsert, MF_BYPOSITION);
}
}
else
{ if ((uFlags & MM_ADDSEPARATOR) && !bAlreadySeparated)
{ /* Add a separator between the menus*/
InsertMenu32A(hmDst, uInsert, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
}
}
}
return(uIDMax);
}
/*************************************************************************
* PathGetDriveNumber32 [SHELL32.57]
*
*/
HRESULT WINAPI PathGetDriveNumber32(LPSTR u)
{ FIXME(shell,"%s stub\n",debugstr_a(u));
return 0;
}
/*************************************************************************
* DriveType32 [SHELL32.64]
*
*/
HRESULT WINAPI DriveType32(DWORD u)
{ FIXME(shell,"0x%04lx stub\n",u);
return 0;
}
/*************************************************************************
* SHAbortInvokeCommand [SHELL32.198]
*
*/
HRESULT WINAPI SHAbortInvokeCommand()
{ FIXME(shell,"stub\n"); { FIXME(shell,"stub\n");
return 1;
}
/*************************************************************************
* SHOutOfMemoryMessageBox [SHELL32.126]
*
*/
HRESULT WINAPI SHOutOfMemoryMessageBox(DWORD u, DWORD v, DWORD w)
{ FIXME(shell,"0x%04lx 0x%04lx 0x%04lx stub\n",u,v,w);
return 0; return 0;
} }
/*************************************************************************
* SHFlushClipboard [SHELL32.121]
*
*/
HRESULT WINAPI SHFlushClipboard()
{ FIXME(shell,"stub\n");
return 1;
}
...@@ -242,6 +242,9 @@ static HRESULT WINAPI IShellFolder_ParseDisplayName( ...@@ -242,6 +242,9 @@ static HRESULT WINAPI IShellFolder_ParseDisplayName(
{ pidlFull = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,2); { pidlFull = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,2);
pidlFull->mkid.cb = 0; pidlFull->mkid.cb = 0;
} }
else if (strcmp(pszTemp,"My Computer")==0)
{ pidlFull = _ILCreateMyComputer();
}
else else
{ pidlFull = _ILCreateMyComputer(); { pidlFull = _ILCreateMyComputer();
...@@ -394,6 +397,8 @@ static HRESULT WINAPI IShellFolder_CompareIDs(LPSHELLFOLDER this, ...@@ -394,6 +397,8 @@ static HRESULT WINAPI IShellFolder_CompareIDs(LPSHELLFOLDER this,
LPCITEMIDLIST pidlTemp1 = pidl1, pidlTemp2 = pidl2; LPCITEMIDLIST pidlTemp1 = pidl1, pidlTemp2 = pidl2;
TRACE(shell,"(%p)->(0x%08lx,pidl1=%p,pidl2=%p)\n",this,lParam,pidl1,pidl2); TRACE(shell,"(%p)->(0x%08lx,pidl1=%p,pidl2=%p)\n",this,lParam,pidl1,pidl2);
pdump (pidl1);
pdump (pidl2);
if (!pidl1 && !pidl2) if (!pidl1 && !pidl2)
return 0; return 0;
...@@ -741,6 +746,9 @@ static BOOL32 WINAPI IShellFolder_GetFolderPath(LPSHELLFOLDER this, LPSTR lpszOu ...@@ -741,6 +746,9 @@ static BOOL32 WINAPI IShellFolder_GetFolderPath(LPSHELLFOLDER this, LPSTR lpszOu
*lpszOut=0; *lpszOut=0;
if (! this->mlpszFolder)
return FALSE;
dwSize = strlen (this->mlpszFolder) +1; dwSize = strlen (this->mlpszFolder) +1;
if ( dwSize > dwOutSize) if ( dwSize > dwOutSize)
return FALSE; return FALSE;
......
...@@ -381,7 +381,7 @@ HMENU32 ShellView_BuildFileMenu(LPSHELLVIEW this) ...@@ -381,7 +381,7 @@ HMENU32 ShellView_BuildFileMenu(LPSHELLVIEW this)
mii.cbSize = sizeof(mii); mii.cbSize = sizeof(mii);
mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE; mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
if(TBSTYLE_SEP != g_Tools[i].bStyle) if(TBSTYLE_SEP != g_Tools[i].bStyle) /* no seperator*/
{ mii.fType = MFT_STRING; { mii.fType = MFT_STRING;
mii.fState = MFS_ENABLED; mii.fState = MFS_ENABLED;
mii.dwTypeData = szText; mii.dwTypeData = szText;
...@@ -394,6 +394,7 @@ HMENU32 ShellView_BuildFileMenu(LPSHELLVIEW this) ...@@ -394,6 +394,7 @@ HMENU32 ShellView_BuildFileMenu(LPSHELLVIEW this)
InsertMenuItem32A(hSubMenu, (UINT32)-1, TRUE, &mii); InsertMenuItem32A(hSubMenu, (UINT32)-1, TRUE, &mii);
} }
} }
TRACE(shell,"-- return (menu=0x%x)\n",hSubMenu);
return hSubMenu; return hSubMenu;
} }
/************************************************************************** /**************************************************************************
...@@ -428,6 +429,7 @@ void ShellView_MergeFileMenu(LPSHELLVIEW this, HMENU32 hSubMenu) ...@@ -428,6 +429,7 @@ void ShellView_MergeFileMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
/*insert this item at the beginning of the menu */ /*insert this item at the beginning of the menu */
InsertMenuItem32A(hSubMenu, 0, TRUE, &mii); InsertMenuItem32A(hSubMenu, 0, TRUE, &mii);
} }
TRACE(shell,"--\n");
} }
/************************************************************************** /**************************************************************************
...@@ -463,7 +465,7 @@ void ShellView_MergeViewMenu(LPSHELLVIEW this, HMENU32 hSubMenu) ...@@ -463,7 +465,7 @@ void ShellView_MergeViewMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
* ShellView_UpdateMenu() * ShellView_UpdateMenu()
*/ */
LRESULT ShellView_UpdateMenu(LPSHELLVIEW this, HMENU32 hMenu) LRESULT ShellView_UpdateMenu(LPSHELLVIEW this, HMENU32 hMenu)
{ TRACE(shell,"(%p)->(menu=0x%08x\n",this,hMenu); { TRACE(shell,"(%p)->(menu=0x%08x)\n",this,hMenu);
CheckMenuItem32(hMenu, IDM_VIEW_FILES, MF_BYCOMMAND | (g_bViewKeys ? MF_CHECKED: MF_UNCHECKED)); CheckMenuItem32(hMenu, IDM_VIEW_FILES, MF_BYCOMMAND | (g_bViewKeys ? MF_CHECKED: MF_UNCHECKED));
if(ShellView_CanDoIDockingWindow(this)) if(ShellView_CanDoIDockingWindow(this))
...@@ -474,7 +476,7 @@ LRESULT ShellView_UpdateMenu(LPSHELLVIEW this, HMENU32 hMenu) ...@@ -474,7 +476,7 @@ LRESULT ShellView_UpdateMenu(LPSHELLVIEW this, HMENU32 hMenu)
{ EnableMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED); { EnableMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
CheckMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_UNCHECKED); CheckMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_UNCHECKED);
} }
return 0; return S_OK;
} }
/************************************************************************** /**************************************************************************
...@@ -498,7 +500,7 @@ void ShellView_OnDeactivate(LPSHELLVIEW this) ...@@ -498,7 +500,7 @@ void ShellView_OnDeactivate(LPSHELLVIEW this)
} }
/************************************************************************** /**************************************************************************
* CShellView_OnActivate() * ShellView_OnActivate()
*/ */
LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState) LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState)
{ OLEMENUGROUPWIDTHS32 omw = { {0, 0, 0, 0, 0, 0} }; { OLEMENUGROUPWIDTHS32 omw = { {0, 0, 0, 0, 0, 0} };
...@@ -521,7 +523,7 @@ LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState) ...@@ -521,7 +523,7 @@ LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState)
if(this->hMenu) if(this->hMenu)
{ this->pShellBrowser->lpvtbl->fnInsertMenusSB(this->pShellBrowser, this->hMenu, &omw); { this->pShellBrowser->lpvtbl->fnInsertMenusSB(this->pShellBrowser, this->hMenu, &omw);
TRACE(shell,"-- after fnInsertMenusSB\n");
/*build the top level menu get the menu item's text*/ /*build the top level menu get the menu item's text*/
strcpy(szText,"dummy 31"); strcpy(szText,"dummy 31");
...@@ -558,11 +560,13 @@ LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState) ...@@ -558,11 +560,13 @@ LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState)
{ ShellView_MergeFileMenu(this, mii.hSubMenu); { ShellView_MergeFileMenu(this, mii.hSubMenu);
} }
} }
TRACE(shell,"-- before fnSetMenuSB\n");
this->pShellBrowser->lpvtbl->fnSetMenuSB(this->pShellBrowser, this->hMenu, 0, this->hWnd); this->pShellBrowser->lpvtbl->fnSetMenuSB(this->pShellBrowser, this->hMenu, 0, this->hWnd);
} }
} }
this->uState = uState; this->uState = uState;
return 0; TRACE(shell,"--\n");
return S_OK;
} }
/************************************************************************** /**************************************************************************
...@@ -600,7 +604,7 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd) ...@@ -600,7 +604,7 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd)
LPSERVICEPROVIDER pSP; LPSERVICEPROVIDER pSP;
LPDOCKINGWINDOWFRAME pFrame; LPDOCKINGWINDOWFRAME pFrame;
FIXME(shell,"(%p)->(badd=0x%08x) stub\n",this,bAdd); WARN(shell,"(%p)->(badd=0x%08x) semi-stub\n",this,bAdd);
/* get the browser's IServiceProvider */ /* get the browser's IServiceProvider */
hr = this->pShellBrowser->lpvtbl->fnQueryInterface(this->pShellBrowser, (REFIID)&IID_IServiceProvider, (LPVOID*)&pSP); hr = this->pShellBrowser->lpvtbl->fnQueryInterface(this->pShellBrowser, (REFIID)&IID_IServiceProvider, (LPVOID*)&pSP);
...@@ -610,6 +614,7 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd) ...@@ -610,6 +614,7 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd)
if(SUCCEEDED(hr)) if(SUCCEEDED(hr))
{ if(bAdd) { if(bAdd)
{ hr = S_OK; { hr = S_OK;
FIXME(shell,"no docking implemented\n");
/*if(!this->pDockingWindow) /*if(!this->pDockingWindow)
{ //create the toolbar object { //create the toolbar object
this->pDockingWindow = DockingWindow_Constructor(this, this->hWnd); this->pDockingWindow = DockingWindow_Constructor(this, this->hWnd);
...@@ -625,8 +630,9 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd) ...@@ -625,8 +630,9 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd)
}*/ }*/
} }
else else
{ /*if(this->pDockingWindow) { FIXME(shell,"no docking implemented\n");
{ hr = pFrame->->lpvtbl->fnRemoveToolbar(pFrame, (IDockingWindow*)this->pDockingWindow, DWFRF_NORMAL); /* if(this->pDockingWindow)
{ hr = pFrame->lpvtbl->fnRemoveToolbar(pFrame, (IDockingWindow*)this->pDockingWindow, DWFRF_NORMAL);
if(SUCCEEDED(hr)) if(SUCCEEDED(hr))
{ // RemoveToolbar should release the toolbar object which will cause { // RemoveToolbar should release the toolbar object which will cause
...@@ -820,7 +826,7 @@ void ShellView_DoContextMenu(LPSHELLVIEW this, WORD x, WORD y, BOOL32 fDefault) ...@@ -820,7 +826,7 @@ void ShellView_DoContextMenu(LPSHELLVIEW this, WORD x, WORD y, BOOL32 fDefault)
} }
else /* we are acting with a full featured IShellBrowser */ else /* we are acting with a full featured IShellBrowser */
{ TRACE(shell,"-- fnBrowseObject pidl =%p\n", this->aSelectedItems[0]); { TRACE(shell,"-- fnBrowseObject pidl =%p\n", this->aSelectedItems[0]);
wFlags = SBSP_DEFBROWSER | SBSP_DEFMODE | SBSP_RELATIVE; wFlags = SBSP_SAMEBROWSER | SBSP_DEFMODE | SBSP_RELATIVE;
this->pShellBrowser->lpvtbl->fnBrowseObject(this->pShellBrowser, this->pShellBrowser->lpvtbl->fnBrowseObject(this->pShellBrowser,
this->aSelectedItems[0], this->aSelectedItems[0],
wFlags); wFlags);
......
...@@ -61,6 +61,9 @@ DEFINE_SHLGUID(IID_IPersist, 0x0000010CL, 0, 0); ...@@ -61,6 +61,9 @@ DEFINE_SHLGUID(IID_IPersist, 0x0000010CL, 0, 0);
DEFINE_SHLGUID(IID_IViewObject, 0x0000010DL, 0, 0); DEFINE_SHLGUID(IID_IViewObject, 0x0000010DL, 0, 0);
DEFINE_SHLGUID(IID_IDataObject, 0x0000010EL, 0, 0); DEFINE_SHLGUID(IID_IDataObject, 0x0000010EL, 0, 0);
DEFINE_SHLGUID(IID_IDropSource, 0x00000121L, 0, 0);
DEFINE_SHLGUID(IID_IDropTarget, 0x00000122L, 0, 0);
DEFINE_GUID (IID_IServiceProvider, 0x6D5140C1L, 0x7436, 0x11CE, 0x80, 0x34, 0x00, 0xAA, 0x00, 0x60, 0x09, 0xFA); DEFINE_GUID (IID_IServiceProvider, 0x6D5140C1L, 0x7436, 0x11CE, 0x80, 0x34, 0x00, 0xAA, 0x00, 0x60, 0x09, 0xFA);
DEFINE_GUID (IID_IDockingWindow, 0x012dd920L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8); DEFINE_GUID (IID_IDockingWindow, 0x012dd920L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
DEFINE_GUID (IID_IDockingWindowSite, 0x2A342FC2L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8); DEFINE_GUID (IID_IDockingWindowSite, 0x2A342FC2L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
......
...@@ -52,27 +52,27 @@ init Shell32LibMain ...@@ -52,27 +52,27 @@ init Shell32LibMain
44 stub DoEnvironmentSubstA # exported by name 44 stub DoEnvironmentSubstA # exported by name
45 stdcall PathFileExists(str) PathFileExists 45 stdcall PathFileExists(str) PathFileExists
46 stdcall PathMatchSpec (str str) PathMatchSpec 46 stdcall PathMatchSpec (str str) PathMatchSpec
47 stub PathMakeUniqueName 47 stub PathMakeUniqueName@20
48 stub PathSetDlgItemPath 48 stub PathSetDlgItemPath@12
49 stub PathQualify 49 stub PathQualify@4
50 stub PathStripToRoot 50 stub PathStripToRoot
51 stdcall PathResolve(str long long) PathResolve 51 stdcall PathResolve(str long long) PathResolve
52 stdcall PathGetArgs(str) PathGetArgs 52 stdcall PathGetArgs(str) PathGetArgs
53 stub DoEnvironmentSubstW # exported by name 53 stub DoEnvironmentSubstW@8 # exported by name
54 stdcall DragAcceptFiles(long long) DragAcceptFiles # exported by name 54 stdcall DragAcceptFiles(long long) DragAcceptFiles # exported by name
55 stub PathQuoteSpaces 55 stub PathQuoteSpaces
56 stdcall PathUnquoteSpaces(str) PathUnquoteSpaces 56 stdcall PathUnquoteSpaces(str) PathUnquoteSpaces
57 stub PathGetDriveNumber 57 stdcall PathGetDriveNumber (str) PathGetDriveNumber32
58 stdcall ParseField(str long str long) ParseField 58 stdcall ParseField(str long str long) ParseField
59 stub RestartDialog 59 stub RestartDialog
60 stdcall ExitWindowsDialog(long) ExitWindowsDialog 60 stdcall ExitWindowsDialog(long) ExitWindowsDialog
61 stdcall RunFileDlg(long long long str str long) RunFileDlg 61 stdcall RunFileDlg(long long long str str long) RunFileDlg
62 stdcall PickIconDlg(long long long long) PickIconDlg 62 stdcall PickIconDlg(long long long long) PickIconDlg
63 stdcall GetFileNameFromBrowse(long long long long str str str) GetFileNameFromBrowse 63 stdcall GetFileNameFromBrowse(long long long long str str str) GetFileNameFromBrowse
64 stub DriveType 64 stdcall DriveType (long) DriveType32
65 stub InvalidateDriveType 65 stub InvalidateDriveType
66 stub IsNetDrive 66 stub IsNetDrive
67 stub Shell_MergeMenus 67 stdcall Shell_MergeMenus (long long long long long long) Shell_MergeMenus32
68 stdcall SHGetSettings(long long long) SHGetSettings 68 stdcall SHGetSettings(long long long) SHGetSettings
69 stub SHGetNetResource 69 stub SHGetNetResource
70 stub SHCreateDefClassObject 70 stub SHCreateDefClassObject
...@@ -101,10 +101,10 @@ init Shell32LibMain ...@@ -101,10 +101,10 @@ init Shell32LibMain
93 stub Win32CreateDirectory 93 stub Win32CreateDirectory
94 stub Win32RemoveDirectory 94 stub Win32RemoveDirectory
95 stdcall SHLogILFromFSIL (ptr) SHLogILFromFSIL 95 stdcall SHLogILFromFSIL (ptr) SHLogILFromFSIL
96 stub StrRetToStrN 96 stdcall StrRetToStrN (long long long long) StrRetToStrN
97 stub SHWaitForFileToOpen 97 stub SHWaitForFileToOpen
98 stub SHGetRealIDL 98 stdcall SHGetRealIDL (long long long) SHGetRealIDL
99 stub SetAppStartingCursor 99 stdcall SetAppStartingCursor (long long) SetAppStartingCursor32
100 stdcall SHRestricted(long) SHRestricted 100 stdcall SHRestricted(long) SHRestricted
101 stub DragQueryFileAorW # exported by name 101 stub DragQueryFileAorW # exported by name
102 stdcall SHCoCreateInstance(ptr ptr long ptr ptr) SHCoCreateInstance 102 stdcall SHCoCreateInstance(ptr ptr long ptr ptr) SHCoCreateInstance
...@@ -126,12 +126,12 @@ init Shell32LibMain ...@@ -126,12 +126,12 @@ init Shell32LibMain
118 stdcall FileMenu_Destroy (long) FileMenu_Destroy 118 stdcall FileMenu_Destroy (long) FileMenu_Destroy
119 stdcall IsLFNDrive(str) IsLFNDrive 119 stdcall IsLFNDrive(str) IsLFNDrive
120 stub FileMenu_AbortInitMenu 120 stub FileMenu_AbortInitMenu
121 stdcall SHFlushClipboard() SHFlushClipboard 121 stdcall SHFlushClipboard () SHFlushClipboard
122 stub RunDLL_CallEntry16 122 stub RunDLL_CallEntry16
123 stdcall SHFreeUnusedLibraries (long) SHFreeUnusedLibraries 123 stdcall SHFreeUnusedLibraries (long) SHFreeUnusedLibraries
124 stub FileMenu_AppendFilesForPidl 124 stub FileMenu_AppendFilesForPidl
125 stub FileMenu_AddFilesForPidl 125 stub FileMenu_AddFilesForPidl
126 stub SHOutOfMemoryMessageBox 126 stdcall SHOutOfMemoryMessageBox (long long long) SHOutOfMemoryMessageBox
127 stdcall SHWinHelp (long long long long) SHWinHelp 127 stdcall SHWinHelp (long long long long) SHWinHelp
128 stdcall DllGetClassObject(long long ptr) SHELL32_DllGetClassObject 128 stdcall DllGetClassObject(long long ptr) SHELL32_DllGetClassObject
129 stub DAD_AutoScroll 129 stub DAD_AutoScroll
...@@ -156,17 +156,17 @@ init Shell32LibMain ...@@ -156,17 +156,17 @@ init Shell32LibMain
148 stdcall ExtractAssociatedIconA(long ptr long) ExtractAssociatedIcon32A # exported by name 148 stdcall ExtractAssociatedIconA(long ptr long) ExtractAssociatedIcon32A # exported by name
149 stdcall SHFind_InitMenuPopup(long long long long) SHFind_InitMenuPopup 149 stdcall SHFind_InitMenuPopup(long long long long) SHFind_InitMenuPopup
150 stub ExtractAssociatedIconExA # exported by name 150 stub ExtractAssociatedIconExA # exported by name
151 stub SHLoadOLE 151 stdcall SHLoadOLE (long) SHLoadOLE32
152 stdcall ILGetSize(ptr) ILGetSize 152 stdcall ILGetSize(ptr) ILGetSize
153 stdcall ILGetNext(ptr) ILGetNext 153 stdcall ILGetNext(ptr) ILGetNext
154 stub ILAppend 154 stdcall ILAppend (long long long) ILAppend
155 stdcall ILFree(ptr) ILFree 155 stdcall ILFree(ptr) ILFree
156 stub ILGlobalFree 156 stub ILGlobalFree
157 stdcall ILCreateFromPath (ptr) ILCreateFromPath 157 stdcall ILCreateFromPath (ptr) ILCreateFromPath
158 stdcall PathGetExtension(str long long) PathGetExtension 158 stdcall PathGetExtension(str long long) PathGetExtension
159 stub PathIsDirectory 159 stub PathIsDirectory
160 stub SHNetConnectionDialog 160 stub SHNetConnectionDialog
161 stdcall SHRunControlPanel (long long)SHRunControlPanel 161 stdcall SHRunControlPanel (long long) SHRunControlPanel
162 stub SHSimpleIDListFromPath 162 stub SHSimpleIDListFromPath
163 stub StrToOleStr 163 stub StrToOleStr
164 stub Win32DeleteFile 164 stub Win32DeleteFile
...@@ -203,7 +203,7 @@ init Shell32LibMain ...@@ -203,7 +203,7 @@ init Shell32LibMain
195 stdcall SHFree(ptr) SHFree 195 stdcall SHFree(ptr) SHFree
196 stdcall SHAlloc(long) SHAlloc 196 stdcall SHAlloc(long) SHAlloc
197 stub SHGlobalDefect 197 stub SHGlobalDefect
198 stub SHAbortInvokeCommand 198 stdcall SHAbortInvokeCommand () SHAbortInvokeCommand
199 stub SHGetFileIcon 199 stub SHGetFileIcon
200 stub SHLocalAlloc 200 stub SHLocalAlloc
201 stub SHLocalFree 201 stub SHLocalFree
...@@ -310,7 +310,7 @@ init Shell32LibMain ...@@ -310,7 +310,7 @@ init Shell32LibMain
301 stub StrChrA # proper ordinal unknown 301 stub StrChrA # proper ordinal unknown
302 stub StrChrIA # proper ordinal unknown 302 stub StrChrIA # proper ordinal unknown
303 stub StrChrIW # proper ordinal unknown 303 stub StrChrIW # proper ordinal unknown
304 stub StrChrW # proper ordinal unknown 304 stdcall StrChrW (ptr ptr) StrChrW # proper ordinal unknown
305 stub StrCmpNA # proper ordinal unknown 305 stub StrCmpNA # proper ordinal unknown
306 stub StrCmpNIA # proper ordinal unknown 306 stub StrCmpNIA # proper ordinal unknown
307 stub StrCmpNIW # proper ordinal unknown 307 stub StrCmpNIW # proper ordinal unknown
...@@ -337,19 +337,19 @@ init Shell32LibMain ...@@ -337,19 +337,19 @@ init Shell32LibMain
328 stub StrStrW # proper ordinal unknown 328 stub StrStrW # proper ordinal unknown
329 stub WOWShellExecute # proper ordinal unknown 329 stub WOWShellExecute # proper ordinal unknown
505 stdcall SHRegCloseKey (long) SHRegCloseKey 505 stdcall SHRegCloseKey (long) SHRegCloseKey32
506 stdcall SHRegOpenKeyA (long str long) SHRegOpenKey32A 506 stdcall SHRegOpenKeyA (long str long) SHRegOpenKey32A
507 stdcall SHRegOpenKeyW (long wstr long) SHRegOpenKey32W 507 stdcall SHRegOpenKeyW (long wstr long long) SHRegOpenKey32W
508 stub SHRegQueryValueA@16 508 stub SHRegQueryValueA@16
509 stdcall SHRegQueryValueExA(long str ptr ptr ptr ptr) SHRegQueryValueEx32A 509 stdcall SHRegQueryValueExA(long str ptr ptr ptr ptr) SHRegQueryValueEx32A
510 stub SHRegQueryValueW@16 510 stdcall SHRegQueryValueW (long long long long) SHRegQueryValue32W
511 stdcall SHRegQueryValueExW (long wstr ptr ptr ptr ptr) SHRegQueryValueEx32W 511 stdcall SHRegQueryValueExW (long wstr ptr ptr ptr ptr) SHRegQueryValueEx32W
512 stub SHRegDeleteKeyW@8 512 stub SHRegDeleteKeyW@8
520 stub SHAllocShared@12 520 stdcall SHAllocShared (long long long) SHAllocShared
521 stub SHLockShared@8 521 stdcall SHLockShared (long long) SHLockShared
522 stub SHUnlockShared@4 522 stdcall SHUnlockShared (long) SHUnlockShared
523 stub SHFreeShared@8 523 stdcall SHFreeShared (long long) SHFreeShared
524 stub RealDriveType@8 524 stub RealDriveType@8
525 stub RealDriveTypeFlags@8 525 stub RealDriveTypeFlags@8
...@@ -360,13 +360,13 @@ init Shell32LibMain ...@@ -360,13 +360,13 @@ init Shell32LibMain
644 stub SHChangeNotification_Lock@16 644 stub SHChangeNotification_Lock@16
645 stub SHChangeNotification_Unlock@4 645 stub SHChangeNotification_Unlock@4
646 stub SHChangeRegistrationReceive@8 646 stub SHChangeRegistrationReceive@8
647 stub ReceiveAddToRecentDocs 647 stub ReceiveAddToRecentDocs@8
648 stub SHWaitOp_Operate@8 648 stub SHWaitOp_Operate@8
650 stub PathIsSameRoot 650 stub PathIsSameRoot@8
651 stdcall ReadCabinetState (long long) ReadCabinetState 651 stdcall ReadCabinetState (long long) ReadCabinetState
652 stdcall WriteCabinetState (long) WriteCabinetState 652 stdcall WriteCabinetState (long) WriteCabinetState
653 stub PathProcessCommand 653 stub PathProcessCommand@16
660 stdcall FileIconInit (long) FileIconInit 660 stdcall FileIconInit (long) FileIconInit
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment