19 const BYTE mask =
PT_FS | PT_FS_FOLDER_FLAG | PT_FS_FILE_FLAG;
76 WARN(
"Failed to get progid for extension %S (%x), error %d\n", pExtension, pExtension,
res);
86 WARN(
"Could not open key %S for extension %S\n",
KeyName, pExtension);
95 ERR(
"Invalid pidl!\n");
103 WARN(
"No extension for %S!\n",
name);
114 WARN(
"OpenKeyFromFileType failed for key %S\n",
KeyName);
124 ERR(
"OpenKeyFromFileType succeeded but RegGetValueW failed\n");
131 L"Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Approved",
139 ERR(
"DropHandler extension %S not approved\n", wszName);
146 L"Software\\Microsoft\\Windows\\CurrentVersion\\Shell Extensions\\Blocked",
153 ERR(
"Extension %S not approved\n", wszCLSIDValue);
184 if (
hr !=
S_OK && pExt[0] ==
'.' && pExt[1] ==
'{')
201 if (
uFlags & GIL_OPENICON)
227 if (
uFlags & GIL_DEFAULTICON)
298 CComPtr<IDefaultExtractIconInit> initIcon;
315 initIcon->SetNormalIcon(wTemp, icon_idx);
319 initIcon->SetShortcutIcon(wTemp, icon_idx);
322 pidl, GIL_DEFAULTICON, wTemp,
_countof(wTemp),
326 initIcon->SetDefaultIcon(wTemp, icon_idx);
336 pidl, GIL_OPENICON, wTemp,
_countof(wTemp),
340 initIcon->SetOpenIcon(wTemp, icon_idx);
356 L"SystemFileAssociations\\%s\\DefaultIcon", wTemp);
366 icon_idx =
_wtoi(sNum);
388 initIcon->SetNormalIcon(wTemp, icon_idx);
399 return initIcon->QueryInterface(iid, ppvOut);
416#define SUPER_HIDDEN (FILE_ATTRIBUTE_HIDDEN | FILE_ATTRIBUTE_SYSTEM)
452 ERR(
"Got CLSID override for '%S'\n", Tmp);
491 if (
dwFlags & SHCONTF_NONFOLDERS)
521 if (!sPathTarget || !sPathTarget[0])
523 WARN(
"No path for CFileSysEnum, empty result!\n");
563 TRACE(
"(%p)->(hr=0x%08x)\n",
this,
hr);
588 TRACE(
"-- destroying IShellFolder(%p)\n",
this);
603#define GENERICSHELLVIEWCOLUMNS _countof(GenericSFHeader)
648 if (!_ILIsFolderOrFile(pidl))
650 ERR(
"Got wrong type of pidl!\n");
651 *pdwAttributes &= SFGAO_CANLINK;
658 dwShellAttributes = SFGAO_CANCOPY | SFGAO_CANMOVE | SFGAO_CANLINK | SFGAO_CANRENAME | SFGAO_CANDELETE |
659 SFGAO_HASPROPSHEET | SFGAO_DROPTARGET | SFGAO_FILESYSTEM;
663 if (SFGAO_VALIDATE & *pdwAttributes)
683 dwShellAttributes |= SFGAO_STREAM;
715 TRACE(
"Treating '%S' as directory!\n", szFileName);
724 dwShellAttributes |= (SFGAO_FOLDER | SFGAO_STORAGE);
729 dwShellAttributes |= (SFGAO_FILESYSANCESTOR | SFGAO_STORAGEANCESTOR);
734 dwShellAttributes |= SFGAO_HIDDEN | SFGAO_GHOSTED;
737 dwShellAttributes |= SFGAO_READONLY;
743 dwShellAttributes |= SFGAO_COMPRESSED;
746 dwShellAttributes |= SFGAO_ENCRYPTED;
752 dwShellAttributes |= SFGAO_NONENUMERATED;
755 if (SFGAO_LINK & *pdwAttributes)
760 dwShellAttributes |= SFGAO_LINK;
763 if (SFGAO_HASSUBFOLDER & *pdwAttributes)
765 CComPtr<IShellFolder> psf2;
768 CComPtr<IEnumIDList> pEnumIL;
769 if (
SUCCEEDED(psf2->EnumObjects(0, SHCONTF_FOLDERS, &pEnumIL)))
771 if (pEnumIL->Skip(1) ==
S_OK)
772 dwShellAttributes |= SFGAO_HASSUBFOLDER;
777 *pdwAttributes = dwShellAttributes;
779 TRACE (
"-- 0x%08x\n", *pdwAttributes);
790 LPWSTR pchNext = lpszDisplayName;
794 const DWORD finalattr = pFind->dwFileAttributes;
795 const DWORD finalsizelo = pFind->nFileSizeLow;
804 pFind->nFileSizeLow = pchNext ? 0 : finalsizelo;
899 DWORD *pdwAttributes)
901 TRACE (
"(%p)->(HWND=%p,%p,%p=%s,%p,pidl=%p,%p)\n",
902 this, hwndOwner, pbc, lpszDisplayName,
debugstr_w (lpszDisplayName),
903 pchEaten, ppidl, pdwAttributes);
910 if (!lpszDisplayName)
917 CComHeapPtr<ITEMIDLIST> pidlTemp;
919 if (
SUCCEEDED(
hr) && pdwAttributes && *pdwAttributes)
926 *ppidl = pidlTemp.Detach();
932 LPWSTR pchNext = lpszDisplayName;
966 CComPtr<IShellFolder> psfChild;
972 CComHeapPtr<ITEMIDLIST> pidlChild;
973 hr = psfChild->ParseDisplayName(hwndOwner, pbc, pchNext, &chEaten, &pidlChild,
980 else if (pdwAttributes && *pdwAttributes)
987 TRACE(
"(%p)->(-- pidl=%p ret=0x%08x)\n",
this, ppidl ? *ppidl : 0,
hr);
1002 LPENUMIDLIST *ppEnumIDList)
1021 TRACE(
"(%p)->(pidl=%p,%p,%s,%p)\n",
this, pidl, pbc,
1024 CComPtr<IShellFolder> pSF;
1027 if (!
m_pidlRoot || !ppvOut || !pidl || !pidl->mkid.cb)
1029 ERR(
"CFSFolder::BindToObject: Invalid parameters\n");
1039 ERR(
"CFSFolder::BindToObject: Invalid pidl!\n");
1070 ERR(
"CFSFolder::BindToObject: %s failed to bind, using fallback (0x%08x)\n",
wine_dbgstr_guid(&clsidFolder),
hr);
1074 clsidFolder = CLSID_ShellFSFolder;
1089 TRACE (
"-- returning (%p) %08x\n", *ppvOut,
hr);
1109 FIXME(
"(%p)->(pidl=%p,%p,%s,%p) stub\n",
this, pidl, pbcReserved,
1120 if (bIsFolder1 != bIsFolder2)
1156 if (pData1->
u.
file.dwFileSize > pData2->
u.
file.dwFileSize)
1158 else if (pData1->
u.
file.dwFileSize < pData2->
u.
file.dwFileSize)
1203 CComPtr<IShellView> pShellView;
1216 if (bIsDropTarget || bIsShellView)
1226 CComPtr<IPersistFolder> spFolder;
1253 else if (bIsShellView)
1271 TRACE(
"-- (%p)->(interface=%p)\n",
this, ppvOut);
1301 if (_ILIsFolderOrFile(rpidl))
1317 ERR(
"Got and unknown pidl!\n");
1322 while (cidl > 0 && *apidl)
1325 if (_ILIsFolderOrFile(*apidl))
1328 ERR(
"Got an unknown type of pidl!!!\n");
1334 *rgfInOut &= ~SFGAO_VALIDATE;
1336 TRACE(
"-- result=0x%08x\n", *rgfInOut);
1372 TRACE (
"(%p)->(%p,%u,apidl=%p,%s,%p,%p)\n",
1427 TRACE(
"(%p)->hr=0x%08x\n",
this,
hr);
1482 if (!(
dwFlags & SHGDN_FORPARSING) &&
1513 else if (pidl && !pidl->mkid.cb)
1570 TRACE (
"(%p)->(%p,pidl=%p,%s,%u,%p)\n",
this, hwndOwner, pidl,
1579 ERR(
"Got garbage pidl:\n");
1602 if (!
wcscmp(szSrc, szDest))
1619 FIXME (
"(%p)\n",
this);
1625 FIXME (
"(%p)\n",
this);
1632 TRACE (
"(%p)\n",
this);
1645 TRACE (
"(%p)\n",
this);
1658 if (pscid->
fmtid == FMTID_ShellDetails)
1681 if (pscid->
fmtid == FMTID_Storage)
1710 TRACE (
"(%p)->(%p %i %p)\n",
this, pidl, iColumn, psd);
1758 ERR(
"Missing case for column %d\n", iColumn);
1787 TRACE (
"(%p)\n",
this);
1807 TRACE (
"(%p)->(%p)\n",
this, pidl);
1829 TRACE (
"(%p)->(%p)\n",
this, pidl);
1848 TRACE(
"(%p)->(%p,%p,%p)\n",
this, pbc, pidlRootx, ppfti);
1850 TRACE(
"--%p %s %s 0x%08x 0x%08x\n",
1876 if (ppfti->
csidl != -1)
1899 FIXME(
"(%p)->(%p)\n",
this, ppfti);
1908 sprintfW(
buf,
L"ShellEx\\{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
1931 TRACE(
"CFSFolder::_GetDropTarget entered\n");
1935 CComPtr<IShellFolder> psfChild;
1940 return psfChild->CreateViewObject(
NULL, IID_IDropTarget, ppvOut);
1979 ERR(
"Got garbage pidl\n");
1985 CComPtr<IPersistFile> pp;
1990 pp->Load(wszPath, 0);
1995 ERR(
"Failed to query for interface IID_IShellExtInit hr %x pclsid %s\n",
hr,
wine_dbgstr_guid(pclsid));
2028 CComPtr<IStream> pStream;
2036 CComPtr<IPicture> pPicture;
2042 pPicture->get_Handle((OLE_HANDLE *)&
hbm);
2085 static LPCWSTR TheGUID =
L"{BE098140-A513-11D0-A3A4-00C04FD706EC}";
2086 static LPCWSTR Space =
L" \t\n\r\f\v";
2115 if (pchEnd && !*pchEnd)
2129 if (pchEnd && !*pchEnd)
2130 data->clrTextBack = cr;
HRESULT WINAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv, IShellView **ppsv)
HRESULT CFSDropTarget_CreateInstance(LPWSTR sPathTarget, REFIID riid, LPVOID *ppvOut)
HRESULT IDataObject_Constructor(HWND hwndOwner, PCIDLIST_ABSOLUTE pMyPidl, PCUIDLIST_RELATIVE_ARRAY apidl, UINT cidl, BOOL bExtendedObject, IDataObject **dataObject)
EXTERN_C HRESULT SHELL32_AssocGetFileDescription(PCWSTR Name, PWSTR Buf, UINT cchBuf)
EXTERN_C HRESULT SHELL32_AssocGetFSDirectoryDescription(PWSTR Buf, UINT cchBuf)
#define SFVM_GETCOMMANDDIR
#define SFVM_GET_CUSTOMVIEWINFO
unsigned long long UINT64
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
void shell(int argc, const char *argv[])
#define RegCloseKey(hKey)
BOOL AddToEnumList(LPITEMIDLIST pidl)
STDMETHOD() GetDisplayNameOf(PCUITEMID_CHILD pidl, DWORD dwFlags, LPSTRRET strRet) override
STDMETHOD() CallBack(IShellFolder *psf, HWND hwndOwner, IDataObject *pdtobj, UINT uMsg, WPARAM wParam, LPARAM lParam) override
STDMETHOD() Initialize(PCIDLIST_ABSOLUTE pidl) override
STDMETHOD() EnumObjects(HWND hwndOwner, DWORD dwFlags, LPENUMIDLIST *ppEnumIDList) override
HRESULT _CreateShellExtInstance(const CLSID *pclsid, LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppvOut)
static HRESULT GetDefaultFSColumnState(UINT iColumn, SHCOLSTATEF &csFlags)
STDMETHOD() SetNameOf(HWND hwndOwner, PCUITEMID_CHILD pidl, LPCOLESTR lpName, DWORD dwFlags, PITEMID_CHILD *pPidlOut) override
DWORD m_bGroupPolicyActive
static HRESULT CompareSortFoldersFirst(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
static HRESULT FormatSize(UINT64 size, LPWSTR Buf, UINT cchBuf)
HRESULT _GetIconHandler(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppvOut)
STDMETHOD() GetAttributesOf(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD *rgfInOut) override
HRESULT _ParseSimple(_In_ LPOLESTR lpszDisplayName, _Inout_ WIN32_FIND_DATAW *pFind, _Out_ LPITEMIDLIST *ppidl)
static HRESULT GetFSColumnDetails(UINT iColumn, SHELLDETAILS &sd)
STDMETHOD() CompareIDs(LPARAM lParam, PCUIDLIST_RELATIVE pidl1, PCUIDLIST_RELATIVE pidl2) override
STDMETHOD() GetCurFolder(PIDLIST_ABSOLUTE *pidl) override
BOOL _GetFindDataFromName(_In_ LPCWSTR pszName, _Out_ WIN32_FIND_DATAW *pFind)
STDMETHOD() GetUIObjectOf(HWND hwndOwner, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, REFIID riid, UINT *prgfInOut, LPVOID *ppvOut) override
HRESULT _GetDropTarget(LPCITEMIDLIST pidl, LPVOID *ppvOut)
HRESULT _CreateIDListFromName(LPCWSTR pszName, DWORD attrs, IBindCtx *pbc, LPITEMIDLIST *ppidl)
STDMETHOD() MapColumnToSCID(UINT column, SHCOLUMNID *pscid) override
STDMETHOD() BindToStorage(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) override
STDMETHOD() ParseDisplayName(HWND hwndOwner, LPBC pbc, LPOLESTR lpszDisplayName, DWORD *pchEaten, PIDLIST_RELATIVE *ppidl, DWORD *pdwAttributes) override
STDMETHOD() InitializeEx(IBindCtx *pbc, LPCITEMIDLIST pidlRoot, const PERSIST_FOLDER_TARGET_INFO *ppfti) override
STDMETHOD() GetDefaultColumnState(UINT iColumn, DWORD *pcsFlags) override
HRESULT WINAPI GetCustomViewInfo(ULONG unknown, SFVM_CUSTOMVIEWINFO_DATA *data)
STDMETHOD() MessageSFVCB(UINT uMsg, WPARAM wParam, LPARAM lParam) override
static HRESULT FormatDateTime(const FILETIME &ft, LPWSTR Buf, UINT cchBuf)
STDMETHOD() GetFolderTargetInfo(PERSIST_FOLDER_TARGET_INFO *ppfti) override
STDMETHOD() GetDetailsEx(PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pv) override
STDMETHOD() EnumSearches(IEnumExtraSearch **ppenum) override
STDMETHOD() GetDefaultSearchGUID(GUID *pguid) override
STDMETHOD() GetClassID(CLSID *lpClassId) override
STDMETHOD() CreateViewObject(HWND hwndOwner, REFIID riid, LPVOID *ppvOut) override
STDMETHOD() GetDefaultColumn(DWORD dwRes, ULONG *pSort, ULONG *pDisplay) override
STDMETHOD() BindToObject(PCUIDLIST_RELATIVE pidl, LPBC pbcReserved, REFIID riid, LPVOID *ppvOut) override
static int CompareUiStrings(LPCWSTR a, LPCWSTR b, LPARAM lParam=0)
HRESULT _CreateExtensionUIObject(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppvOut)
STDMETHOD() GetDetailsOf(PCUITEMID_CHILD pidl, UINT iColumn, SHELLDETAILS *psd) override
HRESULT _AddFindResult(LPWSTR sParentDir, const WIN32_FIND_DATAW &FindData, DWORD dwFlags)
HRESULT WINAPI Initialize(LPWSTR sPathTarget, DWORD dwFlags)
void pdump_always(LPCITEMIDLIST pidl)
void pdump(LPCITEMIDLIST pidl)
const char * shdebugstr_guid(const struct _GUID *id)
static LSTATUS(WINAPI *pRegDeleteTreeW)(HKEY
#define IDS_SHV_COLUMN_TYPE
#define IDS_SHV_COLUMN_NAME
#define GET_SHGDN_RELATION(dwFlags)
#define DFM_MERGECONTEXTMENU
#define DFM_INVOKECOMMAND
#define GET_SHGDN_FOR(dwFlags)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
BOOL WINAPI _ILIsPidlSimple(LPCITEMIDLIST pidl)
static WCHAR unknown[MAX_STRING_RESOURCE_LEN]
#define INVALID_HANDLE_VALUE
#define FILE_ATTRIBUTE_NORMAL
static const WCHAR *const ext[]
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
BOOL WINAPI FileTimeToLocalFileTime(IN CONST FILETIME *lpFileTime, OUT LPFILETIME lpLocalFileTime)
UINT WINAPI GetPrivateProfileIntW(LPCWSTR section, LPCWSTR entry, INT def_val, LPCWSTR filename)
INT WINAPI GetPrivateProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR def_val, LPWSTR buffer, UINT len, LPCWSTR filename)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
void WINAPI PathRemoveExtensionW(WCHAR *path)
void WINAPI PathUnquoteSpacesW(WCHAR *path)
WCHAR *WINAPI PathFindFileNameW(const WCHAR *path)
LPWSTR WINAPI PathFindExtensionW(const WCHAR *path)
BOOL WINAPI PathIsRelativeW(const WCHAR *path)
int WINAPI PathParseIconLocationW(WCHAR *path)
BOOL WINAPI PathFileExistsW(const WCHAR *path)
BOOL WINAPI StrTrimW(WCHAR *str, const WCHAR *trim)
_ACRTIMP __msvcrt_long __cdecl wcstol(const wchar_t *, wchar_t **, int)
_ACRTIMP int __cdecl _wtoi(const wchar_t *)
_ACRTIMP size_t __cdecl wcslen(const wchar_t *)
_ACRTIMP int __cdecl wcscmp(const wchar_t *, const wchar_t *)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
HRESULT WINAPI OleLoadPicture(LPSTREAM lpstream, LONG lSize, BOOL fRunmode, REFIID riid, LPVOID *ppvObj)
BOOL SHELL_FS_HideExtension(LPCWSTR szPath)
static HRESULT SHELL32_GetCLSIDForDirectory(LPCWSTR pwszDir, LPCWSTR KeyName, CLSID *pclsidFolder)
#define GENERICSHELLVIEWCOLUMNS
static BOOL getShellClassInfo(LPCWSTR Entry, LPWSTR pszValue, DWORD cchValueLen, LPCWSTR IniFile)
static void GetItemDescription(PCUITEMID_CHILD pidl, LPWSTR Buf, UINT cchMax)
static LPCWSTR ExtensionFromPidl(PCUIDLIST_RELATIVE pidl, LPWSTR Buf, UINT cchMax, BOOL AllowFolder=FALSE)
static HRESULT getIconLocationForFolder(IShellFolder *psf, PCITEMID_CHILD pidl, UINT uFlags, LPWSTR szIconFile, UINT cchMax, int *piIndex, UINT *pwFlags)
HRESULT SHELL32_GetFSItemAttributes(IShellFolder *psf, LPCITEMIDLIST pidl, LPDWORD pdwAttributes)
static HRESULT getDefaultIconLocation(LPWSTR szIconFile, UINT cchMax, int *piIndex, UINT uFlags)
static const shvheader GenericSFHeader[]
HRESULT GetCLSIDForFileType(PCUIDLIST_RELATIVE pidl, LPCWSTR KeyName, CLSID *pclsid)
HRESULT GetItemCLSID(PCUIDLIST_RELATIVE pidl, CLSID *pclsid)
static LPCWSTR GetItemFileName(PCUITEMID_CHILD pidl, LPWSTR Buf, UINT cchMax)
static HRESULT GetCLSIDForFileTypeFromExtension(LPCWSTR pExtension, LPCWSTR KeyName, CLSID *pclsid)
static HKEY OpenKeyFromFileType(LPCWSTR pExtension, LPCWSTR KeyName)
void SHELL_FS_ProcessDisplayFilename(LPWSTR szPath, DWORD dwFlags)
HRESULT CFSExtractIcon_CreateInstance(IShellFolder *psf, LPCITEMIDLIST pidl, REFIID iid, LPVOID *ppvOut)
static BOOL ItemIsFolder(PCUITEMID_CHILD pidl)
static BOOL IsRealItem(const ITEMIDLIST &idl)
static HBITMAP DoLoadPicture(LPCWSTR pszFileName)
DWORD BindCtx_GetMode(_In_ IBindCtx *pbc, _In_ DWORD dwDefault)
HRESULT SHIsFileSysBindCtx(_In_ IBindCtx *pBindCtx, _Out_opt_ WIN32_FIND_DATAW *pFindData)
HRESULT SHELL_SingleFileOperation(HWND hWnd, UINT Op, PCWSTR Src, PCWSTR Dest, UINT Flags, PWSTR *ppNewName)
HRESULT SHELL32_DefaultContextMenuCallBack(IShellFolder *psf, IDataObject *pdo, UINT msg)
HRESULT SHILAppend(_Inout_ LPITEMIDLIST pidl, _Inout_ LPITEMIDLIST *ppidl)
BOOL PathIsDosDevice(_In_ LPCWSTR pszName)
HRESULT SHILClone(_In_opt_ LPCITEMIDLIST pidl, _Outptr_ LPITEMIDLIST *ppidl)
void WINAPI SHFree(LPVOID pv)
HRESULT WINAPI SHCoCreateInstance(LPCWSTR aclsid, const CLSID *clsid, LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppv)
BOOL WINAPI SHGetSpecialFolderPathW(HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate)
HRESULT WINAPI SHCreateStreamOnFileEx(LPCWSTR lpszPath, DWORD dwMode, DWORD dwAttributes, BOOL bCreate, IStream *lpTemplate, IStream **lppStream)
BOOL WINAPI PathIsDirectoryW(LPCWSTR lpszPath)
HRESULT WINAPI SHRegGetCLSIDKeyW(REFGUID, LPCWSTR, BOOL, BOOL, PHKEY)
DWORD WINAPI SHQueryValueExW(HKEY hKey, LPCWSTR lpszValue, LPDWORD lpReserved, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
HRESULT WINAPI SHStrDupW(LPCWSTR src, LPWSTR *dest)
LPWSTR WINAPI StrFormatKBSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
HRESULT WINAPI StrRetToStrW(LPSTRRET lpStrRet, const ITEMIDLIST *pidl, LPWSTR *ppszName)
#define FAILED_UNEXPECTEDLY
WCHAR swShell32Name[MAX_PATH]
LSTATUS AddClassKeyToArray(const WCHAR *szClass, HKEY *array, UINT *cKeys)
GLuint GLuint GLsizei GLenum type
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLenum GLuint GLenum GLsizei const GLchar * buf
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
HRESULT BindToObject([in] PCUIDLIST_RELATIVE pidl, [in] LPBC pbcReserved, [in] REFIID riid, [out, iid_is(riid)] void **ppvOut)
HRESULT GetDisplayNameOf([in] PCUITEMID_CHILD pidl, [in] SHGDNF uFlags, [out] STRRET *lpName)
HRESULT GetAttributesOf([in] UINT cidl, [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl, [in, out] SFGAOF *rgfInOut)
HRESULT QueryInterface([in] REFIID riid, [out, iid_is(riid)] void **ppvObject)
HRESULT SHELL_ShowItemIDListProperties(LPCITEMIDLIST pidl)
#define COM_INTERFACE_ENTRY_IID(iid, x)
#define ERROR_FILE_NOT_FOUND
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static const struct access_res create[16]
static IParseDisplayName ParseDisplayName
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
static PROTOCOLDATA * pdata
_In_ LPWSTR _In_ DWORD _In_ DWORD _In_ DWORD dwFlags
#define FILE_ATTRIBUTE_READONLY
#define FILE_ATTRIBUTE_COMPRESSED
#define FILE_ATTRIBUTE_HIDDEN
#define FILE_ATTRIBUTE_SYSTEM
#define FILE_ATTRIBUTE_DIRECTORY
#define LOCALE_USER_DEFAULT
#define DEFAULT_UNREACHABLE
#define FILE_ATTRIBUTE_ENCRYPTED
#define PID_STG_STORAGETYPE
#define PID_STG_WRITETIME
#define PID_STG_ATTRIBUTES
interface IBindCtx * LPBC
const FMTID FMTID_SummaryInformation
const GUID IID_IDataObject
#define PathAddExtensionW
#define PathAddBackslashW
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
void WINAPI ILFree(LPITEMIDLIST pidl)
DWORD _ILGetFileAttributes(LPCITEMIDLIST pidl, LPWSTR pOut, UINT uOutSize)
LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
FileStructW * _ILGetFileStructW(LPCITEMIDLIST pidl)
BOOL _ILIsFolder(LPCITEMIDLIST pidl)
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
BOOL ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR path, DWORD type)
BOOL _ILGetFileDateTime(LPCITEMIDLIST pidl, FILETIME *pFt)
DWORD _ILGetFileSize(LPCITEMIDLIST pidl, LPWSTR pOut, UINT uOutSize)
BOOL _ILIsValue(LPCITEMIDLIST pidl)
BOOL _ILIsDrive(LPCITEMIDLIST pidl)
BOOL _ILGetExtension(LPCITEMIDLIST pidl, LPWSTR pOut, UINT uOutSize)
DWORD _ILSimpleGetTextW(LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
LPITEMIDLIST _ILCreateFromFindDataW(const WIN32_FIND_DATAW *wfd)
static BYTE _ILGetType(LPCITEMIDLIST pidl)
static BYTE _ILGetFSType(LPCITEMIDLIST pidl)
#define IsEqualIID(riid1, riid2)
#define PathIsNetworkPath
_In_opt_ LPCSTR _In_opt_ LPCSTR pszValue
static __inline const char * wine_dbgstr_guid(const GUID *id)
BOOL HCR_GetIconW(LPCWSTR szClass, LPWSTR szDest, LPCWSTR szName, DWORD len, int *picon_idx)
DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR path, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT sizeofpsfi, UINT flags)
#define __SHFreeAndNil(ptr)
static HRESULT SHELL_CreateVariantBuffer(VARIANT *pVar, UINT cb)
DWORD WINAPI ParseFieldW(LPCWSTR src, DWORD nField, LPWSTR dst, DWORD len) DECLSPEC_HIDDEN
#define CSIDL_FLAG_CREATE
#define MAKE_COMPARE_HRESULT(x)
#define SHELL_GetSetting(pss, ssf, field)
HRESULT SH32_GetDetailsOfPKeyAsVariant(IShellFolder2 *pSF, PCUITEMID_CHILD pidl, const SHCOLUMNID *pscid, VARIANT *pVar, BOOL UseFsColMap)
HRESULT SHELL32_BindToSF(LPCITEMIDLIST pidlRoot, PERSIST_FOLDER_TARGET_INFO *ppfti, LPCITEMIDLIST pidl, const GUID *clsid, REFIID riid, LPVOID *ppvOut)
#define SHFSF_COL_COMMENT
static HRESULT MakeSCID(SHCOLUMNID &scid, REFCLSID fmtid, UINT pid)
HRESULT SHELL32_GetDisplayNameOfChild(IShellFolder2 *psf, LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET strRet)
SHCONTF SHELL_GetDefaultFolderEnumSHCONTF()
HRESULT SHELL32_CompareChildren(IShellFolder2 *psf, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
void AddFSClassKeysToArray(UINT cidl, PCUITEMID_CHILD_ARRAY apidl, HKEY *array, UINT *cKeys)
HRESULT SHELL_GetDetailsOfAsStringVariant(IShellFolder2 *pSF, PCUITEMID_CHILD pidl, UINT Column, VARIANT *pVar)
HRESULT SHELL32_CompareDetails(IShellFolder2 *isf, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
HRESULT Shell_NextElement(_Inout_ LPWSTR *ppch, _Out_ LPWSTR pszOut, _In_ INT cchOut, _In_ BOOL bValidate)
void WINAPI _InsertMenuItemW(HMENU hmenu, UINT indexMenu, BOOL fByPosition, UINT wID, UINT fType, LPCWSTR dwTypeData, UINT fState)
#define PID_DESCRIPTIONID
#define SHDID_FS_DIRECTORY
#define SSF_SHOWEXTENSIONS
struct _SFV_CREATE SFV_CREATE
#define IDS_SHV_COLUMN_SIZE
#define IDS_SHV_COLUMN_MODIFIED
#define IDI_SHELL_DOCUMENT
#define IDS_SHV_COLUMN_COMMENTS
#define IDS_SHV_COLUMN_ATTRIBUTES
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const PCUITEMID_CHILD * PCUITEMID_CHILD_ARRAY
const ITEMID_CHILD UNALIGNED * PCUITEMID_CHILD
const ITEMIDLIST_RELATIVE UNALIGNED * PCUIDLIST_RELATIVE
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
base of all file and directory entries
WCHAR szTargetParsingName[MAX_PATH]
PIDLIST_ABSOLUTE pidlTargetFolder
WCHAR szNetworkProvider[MAX_PATH]
_Field_z_ WCHAR cFileName[MAX_PATH]
union tagPIDLDATA::@633 u
struct tagFileStruct file
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
INT WINAPI DosDateTimeToVariantTime(USHORT wDosDate, USHORT wDosTime, double *pDateOut)
WORD WORD PSZ PSZ pszFileName
_Must_inspect_result_ _In_ WDFDEVICE _In_ PCUNICODE_STRING KeyName
DWORD WINAPI GetLastError(void)
WINSHLWAPI LSTATUS WINAPI SHRegGetValueW(HKEY, LPCWSTR, LPCWSTR, SRRF, LPDWORD, LPVOID, LPDWORD)
static HRESULT HRESULT_FROM_WIN32(unsigned int x)
#define ERROR_PATH_NOT_FOUND
#define ERROR_NO_MORE_FILES
#define MAKE_SCODE(sev, fac, code)
#define HKEY_LOCAL_MACHINE
#define HKEY_CLASSES_ROOT
HMENU WINAPI CreatePopupMenu(void)
UINT WINAPI PrivateExtractIconsW(_In_reads_(MAX_PATH) LPCWSTR szFileName, _In_ int nIconIndex, _In_ int cxIcon, _In_ int cyIcon, _Out_writes_opt_(nIcons) HICON *phicon, _Out_writes_opt_(nIcons) UINT *piconid, _In_ UINT nIcons, _In_ UINT flags)
#define LR_CREATEDIBSECTION
HANDLE WINAPI CopyImage(_In_ HANDLE, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
BOOL WINAPI DestroyMenu(_In_ HMENU)
#define MAKEINTRESOURCEW(i)
#define IID_PPV_ARG(Itype, ppType)