27#define WIN32_NO_STATUS
30#define NONAMELESSUNION
31#define NONAMELESSSTRUCT
41#include <wine/unicode.h>
103 LPSHELLFOLDER psfParent, lsf = psf;
124 flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
130 flag = SHGDN_INFOLDER;
133 FIXME(
"Unknown type parameter = %x\n",
type);
134 flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
158 IShellFolder_Release(psfParent);
165 IShellFolder_Release(lsf);
203 TRACE(
"(pidl=%p)\n",pidl);
208 while (pidl->mkid.cb)
251 TRACE(
"pidl=%p newpidl=%p\n",pidl, newpidl);
268 TRACE(
"pidl=%p\n", pidl);
283 TRACE(
"-- newpidl=%p\n",pidlNew);
306 IStream_AddRef (pStream);
308 if (
SUCCEEDED(IStream_Read(pStream, &wLen, 2, &dwBytesRead)))
310 TRACE(
"PIDL length is %d\n", wLen);
314 if (
SUCCEEDED(IStream_Read(pStream, *ppPidl , wLen, &dwBytesRead)))
316 TRACE(
"Stream read OK\n");
321 WARN(
"reading pidl failed\n");
334 if (*ppPidl && !
pcheck(*ppPidl))
336 WARN(
"Check failed\n");
343 IStream_Release (pStream);
361 IStream_AddRef (pStream);
370 IStream_Release (pStream);
396 TRACE_(
shell)(
"%s %p 0x%08x\n",
path, ppidl, attributes ? *attributes : 0);
415 IShellFolder_Release(sf);
485 TRACE(
"pidl=%p newpidl=%p\n",pidl, newpidl);
501 if (!pidl || !pidl->mkid.cb)
503 pidl = _ILUnsafeNext(pidl);
509 for (;; p1 = _ILUnsafeNext(p1), p2 = _ILUnsafeNext(p2))
511 DWORD cb1 = p1 ? p1->mkid.cb : 0x80000000;
512 DWORD cb2 = p2 ? p2->mkid.cb : 0x80000000;
541 else if (iid1 || iid2)
543 if (!iid1 || !iid2 ||
memcmp(iid1, iid2,
sizeof(
GUID)))
546 else if (pDataW1 || pDataW2)
568 if ((pidltemp1->mkid.cb != pidltemp2->mkid.cb) ||
588 TRACE(
"pidl1=%p pidl2=%p\n",pidl1, pidl2);
594 if (pidl1 == pidl2 || _ILMemCmpEqualIDList(pidltemp1, pidltemp2))
601 IShellFolder_Release(psfDesktop);
621 if (!pidl1 || !pidl2)
624 while (pidltemp1->mkid.cb && pidltemp2->mkid.cb)
633 if (!pidltemp1->mkid.cb && !pidltemp2->mkid.cb)
645 if (!pidlParent || !pidlChild)
648 while (pidlParent->mkid.cb)
650 cb += pidlChild->mkid.cb;
651 if (!pidlChild->mkid.cb)
653 if (pidlParent->mkid.cb)
658 pidlChild = _ILUnsafeNext(pidlChild);
659 pidlParent = _ILUnsafeNext(pidlParent);
662 if (bImmediate && (!pidlChild->mkid.cb || _ILUnsafeNext(pidlChild)->mkid.cb))
703 TRACE(
"%p %p %x\n", pidlParent, pidlChild, bImmediate);
711 while (
pParent->mkid.cb && pChild->mkid.cb)
725 if ((!pChild->mkid.cb ||
ILGetNext(pChild)->mkid.cb) && bImmediate)
754 TRACE(
"pidl1=%p pidl2=%p\n", pidl1, pidl2);
764 TRACE(
"pidl1=%p pidl2=%p\n",pidl1, pidl2);
780 while (pidltemp1->mkid.cb && pidltemp2->mkid.cb)
790 if (pidltemp1->mkid.cb)
822 TRACE(
"pidl=%p pidl=%p\n",pidl1,pidl2);
824 if (!pidl1 && !pidl2)
return NULL;
847 memcpy(pidlNew,pidl1,len1);
866 hr = IShellFolder_GetUIObjectOf(lpsf, 0, 1, &pidlSimple,
875 fmt.dwAspect = DVASPECT_CONTENT;
877 fmt.tymed = TYMED_HGLOBAL;
879 hr = IDataObject_GetData(pDataObj, &
fmt, &medium);
881 IDataObject_Release(pDataObj);
891 *pidlReal =
ILCombine(pidl_folder, pidl_child);
914 FIXME(
"(pidl=%p)\n",pidl);
951 TRACE(
"pidl=%p size=%u\n",pidl,
len);
983 TRACE(
"-- %p\n", pidl);
1010 WARN(
"(pidl=%p,pidl=%p,%08u)semi-stub\n",pidl,
item,bEnd);
1047 TRACE(
"(pidl=%p)\n",pidl);
1067 TRACE(
"%p\n", pidl);
1153 LPSHELLFOLDER pSF =
NULL;
1158 ppidl, ppidl ? *ppidl :
NULL,
1159 prgfInOut, prgfInOut ? *prgfInOut : 0);
1165 if (lpFindFile || bBindCtx)
1175 IBindCtx_Release(pBC);
1179 IShellFolder_Release(pSF);
1259 const SHCOLUMNID *pscid,
void*
buf,
UINT cb)
1263 HRESULT hr = IShellFolder2_GetDetailsEx(psf2, pidl, pscid, &
var);
1273 const SHCOLUMNID *pscid,
void*
buf,
UINT cb)
1276 HRESULT hr = IShellFolder_QueryInterface(psf, &IID_IShellFolder2, (
void**)&psf2);
1280 IShellFolder2_Release(psf2);
1326 pfd->cFileName[0] =
'\0';
1329 lstrcpynA(
pfd->cAlternateFileName, shortname,
sizeof(
pfd->cAlternateFileName));
1331 pfd->cAlternateFileName[0] =
'\0';
1342 ERR_(
shell)(
"Unknown SHGDFIL %i, please report\n", nFormat);
1385 pfd->cFileName[0] =
'\0';
1390 pfd->cAlternateFileName[0] =
'\0';
1392 pfd->cAlternateFileName[13] = 0;
1407 ERR_(
shell)(
"Unknown SHGDFIL %i, please report\n", nFormat);
1452 LPSHELLFOLDER psfFolder;
1466 ERR(
"SHBindToParent failed: %x\n",
hr);
1471 hr = IShellFolder_GetAttributesOf(psfFolder, 1, &pidlLast, &
dwAttributes);
1474 WARN(
"Wrong dwAttributes or GetAttributesOf failed: %x\n",
hr);
1475 IShellFolder_Release(psfFolder);
1480 IShellFolder_Release(psfFolder);
1520 hr = IShellFolder_QueryInterface(psfDesktop,
riid,
ppv);
1526 hr = IShellFolder_BindToObject(psfDesktop, pidlParent,
NULL,
riid,
ppv);
1530 IShellFolder_Release(psfDesktop);
1550 TRACE(
"(%s, %p, %p, 0x%X, %p)\n", pszName, pbc, ppidl, sfgaoIn, psfgaoOut);
1557 pszNameDup =
StrDupW(pszName);
1577 ULONG sfgao = sfgaoIn, cchEaten;
1585 (psfgaoOut ? &sfgao :
NULL));
1587 *psfgaoOut = (sfgao & sfgaoIn);
1593 psfDesktop->lpVtbl->
Release(psfDesktop);
1596 pBindCtx->lpVtbl->
Release(pBindCtx);
1620 case SIGDN_NORMALDISPLAY:
1621 case SIGDN_PARENTRELATIVEPARSING:
1622 case SIGDN_PARENTRELATIVEEDITING:
1623 case SIGDN_DESKTOPABSOLUTEPARSING:
1624 case SIGDN_DESKTOPABSOLUTEEDITING:
1625 case SIGDN_PARENTRELATIVEFORADDRESSBAR:
1626 case SIGDN_PARENTRELATIVE:
1637 case SIGDN_FILESYSPATH:
1657 IShellFolder_Release(psfparent);
1688 ret = IUnknown_QueryInterface(punk, &IID_IPersistIDList, (
void**)&ppersidl);
1691 TRACE(
"IPersistIDList (%p)\n", ppersidl);
1692 ret = IPersistIDList_GetIDList(ppersidl, ppidl);
1693 IPersistIDList_Release(ppersidl);
1699 ret = IUnknown_QueryInterface(punk, &IID_IPersistFolder2, (
void**)&ppf2);
1702 TRACE(
"IPersistFolder2 (%p)\n", ppf2);
1703 ret = IPersistFolder2_GetCurFolder(ppf2, ppidl);
1704 IPersistFolder2_Release(ppf2);
1714 TRACE(
"IDataObject (%p)\n", pdo);
1716 &IID_IShellItem, (
void**)&psi);
1720 IShellItem_Release(psi);
1722 IDataObject_Release(pdo);
1729 ret = IUnknown_QueryInterface(punk, &IID_IFolderView, (
void**)&pfv);
1733 TRACE(
"IFolderView (%p)\n", pfv);
1734 ret = IFolderView_GetFolder(pfv, &IID_IShellFolder, (
void**)&psf);
1740 IFolderView_Release(pfv);
1773 pidlOut->mkid.cb =
size + 3;
1781 pidlNext->mkid.cb = 0x00;
1782 TRACE(
"-- (pidl=%p, size=%u)\n", pidlOut,
size);
1890 pData->u.guid.uSortOrder = SortOrder;
1892 TRACE(
"-- create GUID-pidl %s\n",
1898 WARN(
"%d: invalid type for GUID\n",
type);
1911 ERR(
"%s is not a GUID\n", szGUID);
1953 wlen =
lstrlenW(wfd->cFileName) + 1;
1964 fs->dwFileSize = wfd->nFileSizeLow;
1965 fs->uFileAttribs = wfd->dwFileAttributes;
2014 pszDest[0] =
toupper(lpszNew[0]);
2032 pData->u.network.dummy = 0;
2033 strcpy(
pData->u.network.szNames,
"Entire Network");
2048 TRACE(
"(%p,%p,%u)\n",pidl,pOut,uSize);
2075 TRACE(
"(%p)\n",pidl);
2082 TRACE(
"(%p)\n",pidl);
2084 return !pidl || !pidl->mkid.cb;
2091 TRACE(
"(%p)\n", pidl);
2102 TRACE(
"(%p)\n",pidl);
2113 TRACE(
"(%p)\n", pidl);
2124 TRACE(
"(%p)\n",pidl);
2127 (pidl && pidl->mkid.cb == 0x00)
2148 return type && !(
type & PT_FS_FOLDER_FLAG);
2155 TRACE(
"(%p)\n",pidl);
2157 return (pidl && lpPData && (lpPData->
type == 0));
2172 if (pidlnext->mkid.cb)
2197 TRACE(
"(%p %p %x)\n",pidl,szOut,uOutSize);
2257 ERR(
"-- no text\n");
2295 switch (
pdata->type)
2324 return pdata->u.cpanel.szName;
2347 return pdata->u.file.szNames;
2350 return pdata->u.drive.szDriveName;
2352 switch (
pdata->type)
2361 return pdata->u.file.szNames;
2368 return pdata->u.network.szNames;
2412 TRACE(
"%p\n", pidl);
2418 switch (
pdata->type)
2423 return &(
pdata->u.guid.guid);
2426 TRACE(
"Unknown pidl type 0x%04x\n",
pdata->type);
2448 if (!_ILIsFolderOrFile(pidl))
2451 cbOffset = *(
const WORD *)((
const BYTE *)pidl + pidl->mkid.cb -
sizeof(
WORD));
2457 if ((cbOffset & 0x1) ||
2461 cbOffset > pidl->mkid.cb -
sizeof(cbOffset) -
sizeof(
FileStructW) ||
2462 pidl->mkid.cb != cbOffset + pFileStructW->
cbLen)
2464 WARN(
"Invalid pidl format (cbOffset = %d)!\n", cbOffset);
2468 return pFileStructW;
2538 TRACE(
"pidl=%p\n",pidl);
2612 for (
UINT i = 0;
i < cidl;
i++)
2631 for (
UINT i = 0;
i < cidl;
i++)
2634 if ((apidldest[
i] = clone) ==
NULL)
2655 for (
i = 0;
i < cida->
cidl;
i++)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
HRESULT WINAPI IFileSystemBindData_Constructor(const WIN32_FIND_DATAW *pfd, LPBC *ppV)
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
void pdump(LPCITEMIDLIST pidl)
BOOL pcheck(LPCITEMIDLIST pidl)
#define SHCIDS_CANONICALONLY
#define INVALID_HANDLE_VALUE
#define HeapFree(x, y, z)
#define WINE_DECLARE_DEBUG_CHANNEL(x)
#define WideCharToMultiByte
#define MultiByteToWideChar
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI DosDateTimeToFileTime(IN WORD wFatDate, IN WORD wFatTime, OUT LPFILETIME lpFileTime)
BOOL WINAPI FileTimeToDosDateTime(IN CONST FILETIME *lpFileTime, OUT LPWORD lpFatDate, OUT LPWORD lpFatTime)
LPWSTR WINAPI PathFindExtensionW(const WCHAR *path)
WCHAR *WINAPI StrDupW(const WCHAR *str)
const GUID CLSID_AdminFolderShortcut
void WINAPI SHFree(LPVOID pv)
DWORD WINAPI SHCLSIDFromStringA(LPCSTR clsid, CLSID *id)
DWORD WINAPI SHCLSIDFromStringW(LPCWSTR clsid, CLSID *id)
LPVOID WINAPI SHAlloc(SIZE_T len)
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
LPWSTR WINAPI StrFormatKBSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
HRESULT WINAPI StrRetToBufW(LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, UINT len)
HRESULT WINAPI StrRetToStrW(LPSTRRET lpStrRet, const ITEMIDLIST *pidl, LPWSTR *ppszName)
#define IShellFolder_ParseDisplayName
#define IShellFolder_CompareIDs
#define IShellFolder_GetDisplayNameOf
static IShellFolder IShellItem **static IBindCtx LPITEMIDLIST SFGAOF
static unsigned char buff[32768]
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean flag
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
HRESULT ParseDisplayName([in] HWND hwndOwner, [in] LPBC pbcReserved, [in, string] LPOLESTR lpszDisplayName, [out] ULONG *pchEaten, [out] PIDLIST_RELATIVE *ppidl, [in, out, unique] ULONG *pdwAttributes)
#define RtlEqualMemory(dst, src, len)
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static HMODULE MODULEINFO DWORD cb
static PROTOCOLDATA * pdata
#define FILE_ATTRIBUTE_READONLY
#define FILE_ATTRIBUTE_COMPRESSED
#define FILE_ATTRIBUTE_HIDDEN
#define FILE_ATTRIBUTE_SYSTEM
#define FILE_ATTRIBUTE_ARCHIVE
#define FILE_ATTRIBUTE_DIRECTORY
interface IBindCtx * LPBC
const GUID IID_IDataObject
BOOL WINAPI GUIDFromStringW(_In_ PCWSTR psz, _Out_ LPGUID pguid)
LPITEMIDLIST WINAPI SHSimpleIDListFromPathA(LPCSTR lpszPath)
BOOL _ILIsUnicode(LPCITEMIDLIST pidl)
LPITEMIDLIST WINAPI SHCloneSpecialIDList(HWND hwndOwner, int nFolder, BOOL fCreate)
LPITEMIDLIST _ILCreateMyComputer(void)
PITEMID_CHILD * _ILCopyaPidl(PCUITEMID_CHILD_ARRAY apidlsrc, UINT cidl)
static HRESULT _ILParsePathW(LPCWSTR path, LPWIN32_FIND_DATAW lpFindFile, BOOL bBindCtx, LPITEMIDLIST *ppidl, LPDWORD prgfInOut)
static LPWSTR _ILGetTextPointerW(LPCITEMIDLIST pidl)
LPITEMIDLIST _ILCreateIExplore(void)
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
LPITEMIDLIST WINAPI ILGlobalClone(LPCITEMIDLIST pidl)
static LPSTR _ILGetSTextPointer(LPCITEMIDLIST pidl)
void WINAPI ILFree(LPITEMIDLIST pidl)
LPITEMIDLIST * _ILCopyCidaToaPidl(LPITEMIDLIST *pidl, const CIDA *cida)
BOOL _ILHACKCompareSimpleIds(LPCITEMIDLIST pidltemp1, LPCITEMIDLIST pidltemp2)
HRESULT WINAPI SHILCreateFromPathW(LPCWSTR path, LPITEMIDLIST *ppidl, DWORD *attributes)
DWORD _ILGetFileAttributes(LPCITEMIDLIST pidl, LPWSTR pOut, UINT uOutSize)
LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
HRESULT WINAPI SHGetIDListFromObject(IUnknown *punk, PIDLIST_ABSOLUTE *ppidl)
LPITEMIDLIST _ILCreateEntireNetwork(void)
BOOL WINAPI ILIsParent(LPCITEMIDLIST pidlParent, LPCITEMIDLIST pidlChild, BOOL bImmediate)
LPITEMIDLIST WINAPI SHSimpleIDListFromPathAW(LPCVOID lpszPath)
HRESULT WINAPI SHGetNameFromIDList(PCIDLIST_ABSOLUTE pidl, SIGDN sigdnName, PWSTR *ppszName)
HRESULT WINAPI SHParseDisplayName(LPCWSTR pszName, IBindCtx *pbc, LPITEMIDLIST *ppidl, SFGAOF sfgaoIn, SFGAOF *psfgaoOut)
BOOL _ILIsMyDocuments(LPCITEMIDLIST pidl)
LPITEMIDLIST _ILCreateDrive(LPCWSTR lpszNew)
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
LPSTR _ILGetTextPointer(LPCITEMIDLIST pidl)
static HRESULT GetShellFolder2ItemDetailsExToBuffer(IShellFolder2 *psf2, LPCITEMIDLIST pidl, const SHCOLUMNID *pscid, void *buf, UINT cb)
LPITEMIDLIST _ILCreateDesktop(void)
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
LPITEMIDLIST WINAPI SHLogILFromFSIL(LPITEMIDLIST pidl)
HRESULT WINAPI SHGetRealIDL(LPSHELLFOLDER lpsf, LPCITEMIDLIST pidlSimple, LPITEMIDLIST *pidlReal)
LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
LPCITEMIDLIST _ILIsParentEx(LPCITEMIDLIST pidlParent, LPCITEMIDLIST pidlChild, BOOL bImmediate)
BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST pidl, LPSTR pszPath)
LPITEMIDLIST WINAPI ILCreateFromPathAW(LPCVOID path)
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
FileStructW * _ILGetFileStructW(LPCITEMIDLIST pidl)
BOOL _ILIsSpecialFolder(LPCITEMIDLIST pidl)
HRESULT _ILCreateFromPathW(LPCWSTR szPath, LPITEMIDLIST *ppidl)
HRESULT WINAPI ILSaveToStream(IStream *pStream, LPCITEMIDLIST pPidl)
LPITEMIDLIST _ILCreateNetwork(void)
BOOL WINAPI ILGetDisplayName(LPCITEMIDLIST pidl, LPVOID path)
BOOL _ILIsFolder(LPCITEMIDLIST pidl)
DWORD _ILGetDrive(LPCITEMIDLIST pidl, LPWSTR pOut, UINT uSize)
LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST pidl, LPCSHITEMID item, BOOL bEnd)
BOOL _ILIsPidlSimple(LPCITEMIDLIST pidl)
BOOL _ILIsBitBucket(LPCITEMIDLIST pidl)
BOOL _ILIsMyComputer(LPCITEMIDLIST pidl)
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
void _ILFreeaPidl(LPITEMIDLIST *apidl, UINT cidl)
HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID dest, int len)
void WINAPI ILGlobalFree(LPITEMIDLIST pidl)
BOOL WINAPI ILGetDisplayNameEx(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPVOID path, DWORD type)
HRESULT WINAPI ILLoadFromStream(IStream *pStream, LPITEMIDLIST *ppPidl)
LPITEMIDLIST WINAPI SHSimpleIDListFromPathW(LPCWSTR lpszPath)
HRESULT WINAPI SHGetItemFromDataObject(IDataObject *pdtobj, DATAOBJ_GET_ITEM_FLAGS dwFlags, REFIID riid, void **ppv)
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
LPITEMIDLIST _ILCreateGuidFromStrA(LPCSTR szGUID)
EXTERN_C HRESULT BindCtx_RegisterObjectParam(_In_ IBindCtx *pBindCtx, _In_ LPOLESTR pszKey, _In_opt_ IUnknown *punk, _Out_ LPBC *ppbc)
LPITEMIDLIST _ILCreateGuidFromStrW(LPCWSTR szGUID)
BOOL ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR path, DWORD type)
static LPITEMIDLIST _ILAlloc(PIDLTYPE type, unsigned int size)
IID * _ILGetGUIDPointer(LPCITEMIDLIST pidl)
LPITEMIDLIST SHELL32_CreateSimpleIDListFromPath(LPCWSTR pszPath, DWORD dwAttributes)
HRESULT WINAPI SHGetPathCchFromIDListW(_In_ LPCITEMIDLIST pidl, _Out_writes_(cchPathMax) LPWSTR pszPath, _In_ SIZE_T cchPathMax)
HRESULT WINAPI SHILCreateFromPathAW(LPCVOID path, LPITEMIDLIST *ppidl, DWORD *attributes)
PUIDLIST_RELATIVE WINAPI ILFindChild(PIDLIST_ABSOLUTE pidl1, PCIDLIST_ABSOLUTE pidl2)
BOOL _ILGetFileDateTime(LPCITEMIDLIST pidl, FILETIME *pFt)
LPITEMIDLIST _ILCreatePrinters(void)
HRESULT WINAPI SHILCreateFromPathA(LPCSTR path, LPITEMIDLIST *ppidl, DWORD *attributes)
DWORD _ILGetFileSize(LPCITEMIDLIST pidl, LPWSTR pOut, UINT uOutSize)
LPITEMIDLIST _ILCreateControlPanel(void)
static HRESULT GetShellFolder1ItemDetailsExToBuffer(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, const SHCOLUMNID *pscid, void *buf, UINT cb)
EXTERN_C HWND BindCtx_GetUIWindow(_In_ IBindCtx *pBindCtx)
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
BOOL _ILIsValue(LPCITEMIDLIST pidl)
static BOOL ILGetDisplayNameExA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPSTR path, DWORD type)
LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR path)
BOOL _ILIsDrive(LPCITEMIDLIST pidl)
HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID dest, int len)
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid, BYTE SortOrder)
BOOL _ILGetExtension(LPCITEMIDLIST pidl, LPWSTR pOut, UINT uOutSize)
LPITEMIDLIST _ILCreateMyDocuments(void)
LPITEMIDLIST _ILCreateBitBucket(void)
DWORD _ILSimpleGetTextW(LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR path)
LPITEMIDLIST _ILCreateFromFindDataW(const WIN32_FIND_DATAW *wfd)
BOOL WINAPI ILIsEqual(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
LPITEMIDLIST _ILCreateAdminTools(void)
BOOL _ILIsCPanelStruct(LPCITEMIDLIST pidl)
struct tagFileStruct FileStruct
static BYTE _ILGetType(LPCITEMIDLIST pidl)
static BYTE _ILGetFSType(LPCITEMIDLIST pidl)
UINT _ILGetDepth(LPCITEMIDLIST pidl)
static BOOL _ILIsEmpty(LPCITEMIDLIST pidl)
#define IsEqualIID(riid1, riid2)
BOOL HCR_GetClassNameW(REFIID riid, LPWSTR szDest, DWORD len)
static HRESULT SHELL_VariantToBuffer(VARIANT *pVar, void *pData, SIZE_T cb)
static __inline BOOL SHELL_OsIsUnicode(void)
#define CSIDL_FLAG_CREATE
BOOL WINAPI StrRetToStrNW(LPWSTR dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
static PCUIDLIST_RELATIVE HIDA_GetPIDLItem(CIDA const *pida, SIZE_T i)
static PCUIDLIST_ABSOLUTE HIDA_GetPIDLFolder(CIDA const *pida)
static IBindCtx void **static IBindCtx void **static void **static IShellFolder IShellItem **static IShellFolder LPCITEMIDLIST IShellItemArray **static PCIDLIST_ABSOLUTE IShellItemArray **static void **static void **static PWSTR *static PWSTR *static DATAOBJ_GET_ITEM_FLAGS
#define PID_DESCRIPTIONID
#define SHGDFIL_NETRESOURCE
#define SHGDFIL_DESCRIPTIONID
static const WCHAR CFSTR_SHELLIDLISTW[]
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const PCUITEMID_CHILD * PCUITEMID_CHILD_ARRAY
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
const SHITEMID * LPCSHITEMID
ITEMIDLIST_RELATIVE UNALIGNED * PUIDLIST_RELATIVE
static PIXELFORMATDESCRIPTOR pfd
struct tagDriveStruct drive
struct tagFileStruct file
union tagPIDLDATA::@624 u
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
#define FIELD_OFFSET(t, f)
HRESULT WINAPI DECLSPEC_HOTPATCH VariantClear(VARIANTARG *pVarg)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define HRESULT_FROM_WIN32(x)
UINT WINAPI RegisterClipboardFormatW(_In_ LPCWSTR)
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free