27#define WIN32_NO_STATUS
30#define NONAMELESSUNION
31#define NONAMELESSSTRUCT
41#include <wine/unicode.h>
93 LPSHELLFOLDER psfParent, lsf = psf;
114 flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
120 flag = SHGDN_INFOLDER;
123 FIXME(
"Unknown type parameter = %x\n",
type);
124 flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
130 ret = IShellFolder_GetDisplayNameOf(lsf, pidl,
flag, &strret);
142 ret = IShellFolder_GetDisplayNameOf(psfParent, pidllast,
flag, &strret);
148 IShellFolder_Release(psfParent);
155 IShellFolder_Release(lsf);
193 TRACE(
"(pidl=%p)\n",pidl);
198 while (pidl->mkid.cb)
241 TRACE(
"pidl=%p newpidl=%p\n",pidl, newpidl);
258 TRACE(
"pidl=%p\n", pidl);
273 TRACE(
"-- newpidl=%p\n",pidlNew);
296 IStream_AddRef (pStream);
298 if (
SUCCEEDED(IStream_Read(pStream, &wLen, 2, &dwBytesRead)))
300 TRACE(
"PIDL length is %d\n", wLen);
304 if (
SUCCEEDED(IStream_Read(pStream, *ppPidl , wLen, &dwBytesRead)))
306 TRACE(
"Stream read OK\n");
311 WARN(
"reading pidl failed\n");
324 if (*ppPidl && !
pcheck(*ppPidl))
326 WARN(
"Check failed\n");
331 IStream_Release (pStream);
349 IStream_AddRef (pStream);
358 IStream_Release (pStream);
384 TRACE_(
shell)(
"%s %p 0x%08x\n",
path, ppidl, attributes ? *attributes : 0);
402 ret = IShellFolder_ParseDisplayName(sf, 0,
NULL, (
LPWSTR)
path, &pchEaten, ppidl, attributes);
403 IShellFolder_Release(sf);
473 TRACE(
"pidl=%p newpidl=%p\n",pidl, newpidl);
498 else if (iid1 || iid2)
500 if (!iid1 || !iid2 ||
memcmp(iid1, iid2,
sizeof(
GUID)))
503 else if (pDataW1 || pDataW2)
520 if (!
_ILIsDrive(pidltemp1) || !
_ILIsDrive(pidltemp2) || pdata1->u.drive.szDriveName[0] != pdata2->u.drive.szDriveName[0])
525 if ((pidltemp1->mkid.cb != pidltemp2->mkid.cb) ||
544 TRACE(
"pidl1=%p pidl2=%p\n",pidl1, pidl2);
556 if (!pidl1 || !pidl2)
559 while (pidltemp1->mkid.cb && pidltemp2->mkid.cb)
568 if (!pidltemp1->mkid.cb && !pidltemp2->mkid.cb)
601 TRACE(
"%p %p %x\n", pidlParent, pidlChild, bImmediate);
606 while (
pParent->mkid.cb && pChild->mkid.cb)
620 if ((!pChild->mkid.cb ||
ILGetNext(pChild)->mkid.cb) && bImmediate)
651 TRACE(
"pidl1=%p pidl2=%p\n",pidl1, pidl2);
667 while (pidltemp1->mkid.cb && pidltemp2->mkid.cb)
677 if (pidltemp1->mkid.cb)
708 TRACE(
"pidl=%p pidl=%p\n",pidl1,pidl2);
710 if (!pidl1 && !pidl2)
return NULL;
733 memcpy(pidlNew,pidl1,len1);
751 hr = IShellFolder_GetUIObjectOf(lpsf, 0, 1, &pidlSimple,
760 fmt.dwAspect = DVASPECT_CONTENT;
762 fmt.tymed = TYMED_HGLOBAL;
764 hr = IDataObject_GetData(pDataObj, &
fmt, &medium);
766 IDataObject_Release(pDataObj);
776 *pidlReal =
ILCombine(pidl_folder, pidl_child);
798 FIXME(
"(pidl=%p)\n",pidl);
835 TRACE(
"pidl=%p size=%u\n",pidl,
len);
867 TRACE(
"-- %p\n", pidl);
894 WARN(
"(pidl=%p,pidl=%p,%08u)semi-stub\n",pidl,
item,bEnd);
931 TRACE(
"(pidl=%p)\n",pidl);
1037 LPSHELLFOLDER pSF =
NULL;
1042 ppidl, ppidl ? *ppidl :
NULL,
1043 prgfInOut, prgfInOut ? *prgfInOut : 0);
1049 if (lpFindFile || bBindCtx)
1059 IBindCtx_Release(pBC);
1063 IShellFolder_Release(pSF);
1188 pfd->cFileName[0] =
'\0';
1191 lstrcpynA(
pfd->cAlternateFileName, shortname,
sizeof(
pfd->cAlternateFileName));
1193 pfd->cAlternateFileName[0] =
'\0';
1202 ERR_(
shell)(
"Unknown SHGDFIL %i, please report\n", nFormat);
1245 pfd->cFileName[0] =
'\0';
1250 pfd->cAlternateFileName[0] =
'\0';
1252 pfd->cAlternateFileName[13] = 0;
1261 ERR_(
shell)(
"Unknown SHGDFIL %i, please report\n", nFormat);
1306 LPSHELLFOLDER psfFolder;
1320 ERR(
"SHBindToParent failed: %x\n",
hr);
1325 hr = IShellFolder_GetAttributesOf(psfFolder, 1, &pidlLast, &
dwAttributes);
1328 WARN(
"Wrong dwAttributes or GetAttributesOf failed: %x\n",
hr);
1329 IShellFolder_Release(psfFolder);
1333 hr = IShellFolder_GetDisplayNameOf(psfFolder, pidlLast, SHGDN_FORPARSING, &strret);
1334 IShellFolder_Release(psfFolder);
1374 hr = IShellFolder_QueryInterface(psfDesktop,
riid,
ppv);
1380 hr = IShellFolder_BindToObject(psfDesktop, pidlParent,
NULL,
riid,
ppv);
1384 IShellFolder_Release(psfDesktop);
1401 ULONG dwAttr=sfgaoIn;
1421 IShellFolder_Release(psfDesktop);
1425 if (psfgaoOut) *psfgaoOut = dwAttr;
1454 case SIGDN_NORMALDISPLAY:
1455 case SIGDN_PARENTRELATIVEPARSING:
1456 case SIGDN_PARENTRELATIVEEDITING:
1457 case SIGDN_DESKTOPABSOLUTEPARSING:
1458 case SIGDN_DESKTOPABSOLUTEEDITING:
1459 case SIGDN_PARENTRELATIVEFORADDRESSBAR:
1460 case SIGDN_PARENTRELATIVE:
1463 ret = IShellFolder_GetDisplayNameOf(psfparent, child_pidl,
1471 case SIGDN_FILESYSPATH:
1491 IShellFolder_Release(psfparent);
1515 ret = IUnknown_QueryInterface(punk, &IID_IPersistIDList, (
void**)&ppersidl);
1518 TRACE(
"IPersistIDList (%p)\n", ppersidl);
1519 ret = IPersistIDList_GetIDList(ppersidl, ppidl);
1520 IPersistIDList_Release(ppersidl);
1526 ret = IUnknown_QueryInterface(punk, &IID_IPersistFolder2, (
void**)&ppf2);
1529 TRACE(
"IPersistFolder2 (%p)\n", ppf2);
1530 ret = IPersistFolder2_GetCurFolder(ppf2, ppidl);
1531 IPersistFolder2_Release(ppf2);
1541 TRACE(
"IDataObject (%p)\n", pdo);
1543 &IID_IShellItem, (
void**)&psi);
1547 IShellItem_Release(psi);
1549 IDataObject_Release(pdo);
1556 ret = IUnknown_QueryInterface(punk, &IID_IFolderView, (
void**)&pfv);
1560 TRACE(
"IFolderView (%p)\n", pfv);
1561 ret = IFolderView_GetFolder(pfv, &IID_IShellFolder, (
void**)&psf);
1567 IFolderView_Release(pfv);
1602 pidlOut->mkid.cb =
size + 3;
1610 pidlNext->mkid.cb = 0x00;
1611 TRACE(
"-- (pidl=%p, size=%u)\n", pidlOut,
size);
1714 TRACE(
"-- create GUID-pidl %s\n",
1720 WARN(
"%d: invalid type for GUID\n",
type);
1733 ERR(
"%s is not a GUID\n", szGUID);
1775 wlen =
lstrlenW(wfd->cFileName) + 1;
1786 fs->dwFileSize = wfd->nFileSizeLow;
1787 fs->uFileAttribs = wfd->dwFileAttributes;
1856 pData->u.network.dummy = 0;
1857 strcpy(
pData->u.network.szNames,
"Entire Network");
1872 TRACE(
"(%p,%p,%u)\n",pidl,pOut,uSize);
1901 TRACE(
"(%p)\n",pidl);
1908 TRACE(
"(%p)\n",pidl);
1910 return !pidl || !pidl->mkid.cb;
1917 TRACE(
"(%p)\n", pidl);
1928 TRACE(
"(%p)\n", pidl);
1931 return IsEqualIID(iid, &CLSID_NetworkPlaces);
1939 TRACE(
"(%p)\n", pidl);
1950 TRACE(
"(%p)\n",pidl);
1961 TRACE(
"(%p)\n", pidl);
1972 TRACE(
"(%p)\n",pidl);
1975 (pidl && pidl->mkid.cb == 0x00)
1983 TRACE(
"(%p)\n",pidl);
1985 return (pidl && lpPData && (
PT_DRIVE == lpPData->
type ||
1995 TRACE(
"(%p)\n",pidl);
2004 TRACE(
"(%p)\n",pidl);
2013 TRACE(
"(%p)\n",pidl);
2015 return (pidl && lpPData && (lpPData->
type == 0));
2030 if (pidlnext->mkid.cb)
2058 TRACE(
"(%p %p %x)\n",pidl,szOut,uOutSize);
2074 dwReturn =
strlen (szTemp);
2083 dwReturn =
strlen(szSrc);
2093 dwReturn =
strlen (szTemp);
2103 dwReturn =
strlen (szTemp);
2108 ERR(
"-- no text\n");
2127 TRACE(
"(%p %p %x)\n",pidl,szOut,uOutSize);
2187 ERR(
"-- no text\n");
2222 switch (
pdata->type)
2257 return pdata->u.cpanel.szName;
2278 switch (
pdata->type)
2289 return pdata->u.drive.szDriveName;
2296 return pdata->u.file.szNames;
2303 return pdata->u.network.szNames;
2321 switch (
pdata->type)
2344 TRACE(
"%p\n", pidl);
2350 switch (
pdata->type)
2355 return &(
pdata->u.guid.guid);
2358 TRACE(
"Unknown pidl type 0x%04x\n",
pdata->type);
2383 cbOffset = *(
const WORD *)((
const BYTE *)pidl + pidl->mkid.cb -
sizeof(
WORD));
2389 if ((cbOffset & 0x1) ||
2393 cbOffset > pidl->mkid.cb -
sizeof(cbOffset) -
sizeof(
FileStructW) ||
2394 pidl->mkid.cb != cbOffset + pFileStructW->
cbLen)
2396 WARN(
"Invalid pidl format (cbOffset = %d)!\n", cbOffset);
2400 return pFileStructW;
2425 switch (
pdata->type)
2489 switch (
pdata->type)
2505 const char * pPoint;
2508 TRACE(
"pidl=%p\n",pidl);
2597 pOut[uOutSize-1] =
'\0';
2634 wAttrib =
pData->u.file.uFileAttribs;
2667 for (
i = 0;
i < cidl;
i++)
2688 for (
i = 0;
i < cidl;
i++)
2711 for (
i = 0;
i < cida->
cidl;
i++)
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
HRESULT WINAPI IFileSystemBindData_Constructor(const WIN32_FIND_DATAW *pfd, LPBC *ppV)
#define shell32_hInstance
char * strcat(char *DstString, const char *SrcString)
int strcmp(const char *String1, const char *String2)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
ACPI_SIZE strlen(const char *String)
char * strcpy(char *DstString, const char *SrcString)
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
void pdump(LPCITEMIDLIST pidl)
BOOL pcheck(LPCITEMIDLIST pidl)
#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 FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
BOOL WINAPI FileTimeToLocalFileTime(IN CONST FILETIME *lpFileTime, OUT LPFILETIME lpLocalFileTime)
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)
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)
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
LPSTR WINAPI PathFindExtensionA(LPCSTR lpszPath)
HRESULT WINAPI StrRetToBufW(LPSTRRET src, const ITEMIDLIST *pidl, LPWSTR dest, UINT len)
HRESULT WINAPI StrRetToStrW(LPSTRRET lpStrRet, const ITEMIDLIST *pidl, LPWSTR *ppszName)
LPSTR WINAPI StrFormatKBSizeA(LONGLONG llBytes, LPSTR lpszDest, UINT cchMax)
static IShellFolder IShellItem **static IBindCtx LPITEMIDLIST SFGAOF
static unsigned char buff[32768]
GLuint GLuint GLsizei GLenum type
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)
VOID WINAPI CoTaskMemFree(LPVOID ptr)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
#define RtlEqualMemory(a, b, c)
#define memcpy(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static PROTOCOLDATA * pdata
#define _Out_writes_(size)
#define FILE_ATTRIBUTE_READONLY
#define FILE_ATTRIBUTE_COMPRESSED
#define FILE_ATTRIBUTE_HIDDEN
#define FILE_ATTRIBUTE_SYSTEM
#define FILE_ATTRIBUTE_ARCHIVE
#define FILE_ATTRIBUTE_DIRECTORY
#define LOCALE_USER_DEFAULT
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)
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)
BOOL _ILGetFileDate(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
DWORD _ILGetFileAttributes(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
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)
DWORD _ILGetDrive(LPCITEMIDLIST pidl, LPSTR pOut, UINT uSize)
LPITEMIDLIST _ILCreateDrive(LPCWSTR lpszNew)
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
LPSTR _ILGetTextPointer(LPCITEMIDLIST pidl)
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)
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)
DWORD _ILGetFileSize(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
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)
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)
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
LPITEMIDLIST _ILCreateGuidFromStrA(LPCSTR szGUID)
BOOL _ILIsNetHood(LPCITEMIDLIST pidl)
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)
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)
void _ILGetFileType(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
DWORD _ILSimpleGetText(LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid)
LPITEMIDLIST _ILCreatePrinters(void)
HRESULT WINAPI SHILCreateFromPathA(LPCSTR path, LPITEMIDLIST *ppidl, DWORD *attributes)
LPITEMIDLIST _ILCreateControlPanel(void)
BOOL _ILIsControlPanel(LPCITEMIDLIST pidl)
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)
BOOL _ILGetExtension(LPCITEMIDLIST pidl, LPSTR 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 BOOL _ILIsEmpty(LPCITEMIDLIST pidl)
#define IsEqualIID(riid1, riid2)
_CRTIMP char *__cdecl _strupr(_Inout_z_ char *_String)
BOOL HCR_GetClassNameW(REFIID riid, LPWSTR szDest, DWORD len)
BOOL HCR_MapTypeToValueA(LPCSTR szExtension, LPSTR szFileType, LONG len, BOOL bPrependDot)
BOOL HCR_GetClassNameA(REFIID riid, LPSTR szDest, DWORD len)
static __inline BOOL SHELL_OsIsUnicode(void)
#define CSIDL_FLAG_CREATE
BOOL WINAPI StrRetToStrNW(LPWSTR dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
#define SHGDFIL_NETRESOURCE
#define SHGDFIL_DESCRIPTIONID
static const WCHAR CFSTR_SHELLIDLISTW[]
HRESULT WINAPI SHGetItemFromDataObject(IDataObject *pdtobj, DATAOBJ_GET_ITEM_FLAGS dwFlags, REFIID riid, void **ppv)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const PCUITEMID_CHILD * PCUITEMID_CHILD_ARRAY
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
const SHITEMID * LPCSHITEMID
ITEMIDLIST_RELATIVE UNALIGNED * PUIDLIST_RELATIVE
static PIXELFORMATDESCRIPTOR pfd
STRSAFEAPI StringCchPrintfA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszFormat,...)
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
#define FIELD_OFFSET(t, f)
#define HRESULT_FROM_WIN32(x)
UINT WINAPI RegisterClipboardFormatW(_In_ LPCWSTR)
int WINAPI LoadStringA(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPSTR lpBuffer, _In_ int cchBufferMax)
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free