10#include <wine/unicode.h>
13const GUID CLSID_NtObjectFolder = { 0x845b0fb2, 0x66e0, 0x416b, { 0x8f, 0x91, 0x31, 0x4e, 0x23, 0xf7, 0xc1, 0x2d } };
16static const GUID GUID_NtObjectColumns = { 0xf4c430c3, 0x3a8d, 0x4b56, { 0xa0, 0x18, 0xe5, 0x98, 0xda, 0x60, 0xc2, 0xe0 } };
62 switch (
entry->objectType)
104 return SHDefExtractIconW(pszFile, nIconIndex, 0, phiconLarge, phiconSmall, nIconSize);
139 RtlInitEmptyUnicodeString(&
link, wbLink,
sizeof(wbLink));
149 if (
link.Length == 0)
156 CComPtr<IShellFolder> psfDesktop;
164 StringCbCopyW(
path,
sizeof(
path),
L"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\::{845B0FB2-66E0-416B-8F91-314E23F7C12D}");
167 CComPtr<IShellFolder> psfDesktop;
252 TRACE(
"GetDetailsEx\n");
269 if (
info->objectType < 0)
294 RtlInitEmptyUnicodeString(&
link, wbLink,
sizeof(wbLink));
319 TRACE(
"GetDetailsOf\n");
341 if (
info->objectType < 0)
363 RtlInitEmptyUnicodeString(&
link, wbLink,
sizeof(wbLink));
475 RtlInitEmptyUnicodeString(&firstLink, wbLink1,
sizeof(wbLink1));
480 RtlInitEmptyUnicodeString(&secondLink, wbLink2,
sizeof(wbLink2));
489 DbgPrint(
"Unsupported sorting mode.\n");
495 ULONG mask = inMask ? *inMask : 0xFFFFFFFF;
496 ULONG flags = SFGAO_HASPROPSHEET | SFGAO_CANLINK;
499 flags |= SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_BROWSABLE;
502 flags |= SFGAO_LINK | SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_BROWSABLE;
505 flags |= SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_BROWSABLE;
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
#define STDMETHODCALLTYPE
STDMETHOD() CompareName(LPARAM lParam, const NtPidlEntry *first, const NtPidlEntry *second)
STDMETHOD() EnumObjects(HWND hwndOwner, SHCONTF grfFlags, IEnumIDList **ppenumIDList) override
STDMETHOD() GetDefaultColumnState(UINT iColumn, SHCOLSTATEF *pcsFlags) override
STDMETHOD() GetDetailsEx(LPCITEMIDLIST pidl, const SHCOLUMNID *pscid, VARIANT *pv) override
STDMETHOD() Initialize(PCIDLIST_ABSOLUTE pidl) override
STDMETHOD() GetDetailsOf(LPCITEMIDLIST pidl, UINT iColumn, SHELLDETAILS *psd) override
virtual HRESULT GetInfoFromPidl(LPCITEMIDLIST pcidl, const NtPidlEntry **pentry)
STDMETHOD() ResolveSymLink(const NtPidlEntry *info, LPITEMIDLIST *fullPidl) override
STDMETHOD() MapColumnToSCID(UINT iColumn, SHCOLUMNID *pscid) override
STDMETHOD() InternalBindToObject(PWSTR path, const NtPidlEntry *info, LPITEMIDLIST first, LPCITEMIDLIST rest, LPITEMIDLIST fullPidl, LPBC pbcReserved, IShellFolder **ppsfChild) override
virtual ~CNtObjectFolder()
STDMETHOD() CompareIDs(LPARAM lParam, const NtPidlEntry *first, const NtPidlEntry *second) override
#define IDI_NTOBJECTDEVICE
#define IDI_NTOBJECTDIROPEN
HRESULT INLINE MakeVariantString(VARIANT *pv, PCWSTR string)
HRESULT INLINE MakeStrRetFromString(LPCWSTR string, DWORD cbLength, STRRET *str)
#define FAILED_UNEXPECTEDLY(hr)
DWORD WINAPI GetModuleFileNameW(HINSTANCE hModule, LPWSTR lpFilename, DWORD nSize)
struct _DEVICE_OBJECT DEVICE_OBJECT
ULONG RtlCompareUnicodeString(PUNICODE_STRING s1, PUNICODE_STRING s2, BOOLEAN UpCase)
HRESULT WINAPI SHDefExtractIconW(LPCWSTR pszIconFile, int iIndex, UINT uFlags, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize)
const LPCWSTR ObjectTypeNames[]
HRESULT GetEnumNTDirectory(LPCWSTR path, IEnumIDList **ppil)
HRESULT GetNTObjectSymbolicLinkTarget(LPCWSTR path, LPCWSTR entryName, PUNICODE_STRING LinkTarget)
#define NT_OBJECT_PIDL_MAGIC
const GUID CLSID_NtObjectFolder
@ NTOBJECT_COLUMN_LINKTARGET
static const GUID GUID_NtObjectColumns
#define PID_STG_STORAGETYPE
interface IBindCtx * LPBC
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
void WINAPI ILFree(LPITEMIDLIST pidl)
#define IsEqualGUID(rguid1, rguid2)
#define MAKE_COMPARE_HRESULT(x)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const PCUITEMID_CHILD * PCUITEMID_CHILD_ARRAY
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
STRSAFEAPI StringCbCopyNW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc, size_t cbToCopy)
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
WCHAR entryName[ANYSIZE_ARRAY]
WCHAR typeName[ANYSIZE_ARRAY]
#define FIELD_OFFSET(t, f)
#define IID_PPV_ARG(Itype, ppType)