ReactOS  0.4.14-dev-608-gd495a4f
pidl.h File Reference
#include "pshpack1.h"
#include "poppack.h"
Include dependency graph for pidl.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  tagPIDLCPanelStruct
 
struct  tagGUIDStruct
 
struct  tagDriveStruct
 
struct  tagFileStruct
 
struct  tagFileStructW
 
struct  tagValueW
 
struct  tagPIDLDATA
 

Macros

#define PT_CPLAPPLET   0x00
 
#define PT_GUID   0x1F
 
#define PT_DRIVE   0x23
 
#define PT_DRIVE2   0x25
 
#define PT_DRIVE3   0x29
 
#define PT_SHELLEXT   0x2E
 
#define PT_DRIVE1   0x2F
 
#define PT_FOLDER1   0x30
 
#define PT_FOLDER   0x31
 
#define PT_VALUE   0x32
 
#define PT_VALUEW   0x34
 
#define PT_FOLDERW   0x35
 
#define PT_WORKGRP   0x41
 
#define PT_COMP   0x42
 
#define PT_NETPROVIDER   0x46
 
#define PT_NETWORK   0x47
 
#define PT_IESPECIAL1   0x61
 
#define PT_YAGUID   0x70 /* yet another guid.. */
 
#define PT_IESPECIAL2   0xb1
 
#define PT_SHARE   0xc3
 

Typedefs

typedef BYTE PIDLTYPE
 
typedef struct tagPIDLCPanelStruct PIDLCPanelStruct
 
typedef struct tagGUIDStruct GUIDStruct
 
typedef struct tagDriveStruct DriveStruct
 
typedef struct tagFileStruct FileStruct
 
typedef struct tagFileStructW FileStructW
 
typedef struct tagValueW ValueWStruct
 
typedef struct tagPIDLDATA PIDLDATA
 
typedef struct tagPIDLDATALPPIDLDATA
 

Functions

DWORD _ILSimpleGetText (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize) DECLSPEC_HIDDEN
 
DWORD _ILSimpleGetTextW (LPCITEMIDLIST pidl, LPWSTR pOut, UINT uOutSize) DECLSPEC_HIDDEN
 
BOOL _ILGetFileDate (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize) DECLSPEC_HIDDEN
 
DWORD _ILGetFileSize (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize) DECLSPEC_HIDDEN
 
BOOL _ILGetExtension (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize) DECLSPEC_HIDDEN
 
void _ILGetFileType (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize) DECLSPEC_HIDDEN
 
DWORD _ILGetFileAttributes (LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize) DECLSPEC_HIDDEN
 
BOOL _ILGetFileDateTime (LPCITEMIDLIST pidl, FILETIME *ft) DECLSPEC_HIDDEN
 
DWORD _ILGetDrive (LPCITEMIDLIST, LPSTR, UINT) DECLSPEC_HIDDEN
 
BOOL _ILIsUnicode (LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
 
BOOL _ILIsDesktop (LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
 
BOOL _ILIsMyComputer (LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
 
BOOL _ILIsDrive (LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
 
BOOL _ILIsFolder (LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
 
BOOL _ILIsValue (LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
 
BOOL _ILIsSpecialFolder (LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
 
BOOL _ILIsPidlSimple (LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
 
BOOL _ILIsCPanelStruct (LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
 
static BOOL _ILIsEqualSimple (LPCITEMIDLIST pidlA, LPCITEMIDLIST pidlB)
 
static BOOL _ILIsEmpty (LPCITEMIDLIST pidl)
 
LPITEMIDLIST _ILCreateGuid (PIDLTYPE type, REFIID guid) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreateGuidFromStrA (LPCSTR szGUID) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreateGuidFromStrW (LPCWSTR szGUID) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreateDesktop (void) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreateFromFindDataW (const WIN32_FIND_DATAW *stffile) DECLSPEC_HIDDEN
 
HRESULT _ILCreateFromPathW (LPCWSTR szPath, LPITEMIDLIST *ppidl) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreateMyComputer (void) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreateMyDocuments (void) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreateIExplore (void) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreateControlPanel (void) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreatePrinters (void) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreateNetwork (void) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreateNetHood (void) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreateBitBucket (void) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreateDrive (LPCWSTR) DECLSPEC_HIDDEN
 
LPITEMIDLIST _ILCreateEntireNetwork (void) DECLSPEC_HIDDEN
 
LPPIDLDATA _ILGetDataPointer (LPCITEMIDLIST) DECLSPEC_HIDDEN
 
LPSTR _ILGetTextPointer (LPCITEMIDLIST) DECLSPEC_HIDDEN
 
IID_ILGetGUIDPointer (LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
 
FileStructW_ILGetFileStructW (LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
 
void pdump (LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
 
BOOL pcheck (LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
 
void _ILFreeaPidl (LPITEMIDLIST *apidl, UINT cidl) DECLSPEC_HIDDEN
 
PITEMID_CHILD_ILCopyaPidl (PCUITEMID_CHILD_ARRAY apidlsrc, UINT cidl) DECLSPEC_HIDDEN
 
LPITEMIDLIST_ILCopyCidaToaPidl (LPITEMIDLIST *pidl, const CIDA *cida) DECLSPEC_HIDDEN
 
BOOL ILGetDisplayNameExW (LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR path, DWORD type) DECLSPEC_HIDDEN
 

Macro Definition Documentation

◆ PT_COMP

#define PT_COMP   0x42

Definition at line 99 of file pidl.h.

◆ PT_CPLAPPLET

#define PT_CPLAPPLET   0x00

Definition at line 86 of file pidl.h.

◆ PT_DRIVE

#define PT_DRIVE   0x23

Definition at line 88 of file pidl.h.

◆ PT_DRIVE1

#define PT_DRIVE1   0x2F

Definition at line 92 of file pidl.h.

◆ PT_DRIVE2

#define PT_DRIVE2   0x25

Definition at line 89 of file pidl.h.

◆ PT_DRIVE3

#define PT_DRIVE3   0x29

Definition at line 90 of file pidl.h.

◆ PT_FOLDER

#define PT_FOLDER   0x31

Definition at line 94 of file pidl.h.

◆ PT_FOLDER1

#define PT_FOLDER1   0x30

Definition at line 93 of file pidl.h.

◆ PT_FOLDERW

#define PT_FOLDERW   0x35

Definition at line 97 of file pidl.h.

◆ PT_GUID

#define PT_GUID   0x1F

Definition at line 87 of file pidl.h.

◆ PT_IESPECIAL1

#define PT_IESPECIAL1   0x61

Definition at line 102 of file pidl.h.

◆ PT_IESPECIAL2

#define PT_IESPECIAL2   0xb1

Definition at line 104 of file pidl.h.

◆ PT_NETPROVIDER

#define PT_NETPROVIDER   0x46

Definition at line 100 of file pidl.h.

◆ PT_NETWORK

#define PT_NETWORK   0x47

Definition at line 101 of file pidl.h.

◆ PT_SHARE

#define PT_SHARE   0xc3

Definition at line 105 of file pidl.h.

◆ PT_SHELLEXT

#define PT_SHELLEXT   0x2E

Definition at line 91 of file pidl.h.

◆ PT_VALUE

#define PT_VALUE   0x32

Definition at line 95 of file pidl.h.

◆ PT_VALUEW

#define PT_VALUEW   0x34

Definition at line 96 of file pidl.h.

◆ PT_WORKGRP

#define PT_WORKGRP   0x41

Definition at line 98 of file pidl.h.

◆ PT_YAGUID

#define PT_YAGUID   0x70 /* yet another guid.. */

Definition at line 103 of file pidl.h.

Typedef Documentation

◆ DriveStruct

◆ FileStruct

◆ FileStructW

◆ GUIDStruct

◆ LPPIDLDATA

◆ PIDLCPanelStruct

◆ PIDLDATA

◆ PIDLTYPE

typedef BYTE PIDLTYPE

Definition at line 108 of file pidl.h.

◆ ValueWStruct

Function Documentation

◆ _ILCopyaPidl()

PITEMID_CHILD* _ILCopyaPidl ( PCUITEMID_CHILD_ARRAY  apidlsrc,
UINT  cidl 
)

Definition at line 2638 of file pidl.c.

2639 {
2640  UINT i;
2641  PITEMID_CHILD *apidldest;
2642 
2643  if (!apidlsrc)
2644  return NULL;
2645 
2646  apidldest = SHAlloc(cidl * sizeof(PITEMID_CHILD));
2647 
2648  for (i = 0; i < cidl; i++)
2649  apidldest[i] = ILClone(apidlsrc[i]);
2650 
2651  return apidldest;
2652 }
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
Definition: glfuncs.h:248
smooth NULL
Definition: ftsmooth.c:416
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:228
unsigned int UINT
Definition: ndis.h:50
LPVOID WINAPI SHAlloc(SIZE_T len)
Definition: shellole.c:309

Referenced by CCPLItemMenu::Initialize(), and CDefaultContextMenu::Initialize().

◆ _ILCopyCidaToaPidl()

LPITEMIDLIST* _ILCopyCidaToaPidl ( LPITEMIDLIST pidl,
const CIDA cida 
)

Definition at line 2659 of file pidl.c.

2660 {
2661  UINT i;
2662  LPITEMIDLIST *dst;
2663 
2664  dst = SHAlloc(cida->cidl * sizeof(LPITEMIDLIST));
2665  if (!dst)
2666  return NULL;
2667 
2668  if (pidl)
2669  *pidl = ILClone((LPCITEMIDLIST)(&((const BYTE*)cida)[cida->aoffset[0]]));
2670 
2671  for (i = 0; i < cida->cidl; i++)
2672  dst[i] = ILClone((LPCITEMIDLIST)(&((const BYTE*)cida)[cida->aoffset[i + 1]]));
2673 
2674  return dst;
2675 }
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
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
Definition: glfuncs.h:248
smooth NULL
Definition: ftsmooth.c:416
UINT cidl
Definition: shlobj.h:491
unsigned char BYTE
Definition: mem.h:68
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
Definition: pidl.c:228
GLenum GLenum dst
Definition: glext.h:6340
unsigned int UINT
Definition: ndis.h:50
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
LPVOID WINAPI SHAlloc(SIZE_T len)
Definition: shellole.c:309

Referenced by CFSDropTarget::_DoDrop(), and SH_GetApidlFromDataObject().

◆ _ILCreateBitBucket()

LPITEMIDLIST _ILCreateBitBucket ( void  )

Definition at line 1661 of file pidl.c.

1662 {
1663  TRACE("()\n");
1664  return _ILCreateGuid(PT_GUID, &CLSID_RecycleBin);
1665 }
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid)
Definition: pidl.c:1673
#define TRACE(s)
Definition: solgame.cpp:4
#define PT_GUID

Referenced by SHGetFolderLocation().

◆ _ILCreateControlPanel()

LPITEMIDLIST _ILCreateControlPanel ( void  )

Definition at line 1617 of file pidl.c.

1618 {
1619  LPITEMIDLIST parent = _ILCreateGuid(PT_GUID, &CLSID_MyComputer), ret = NULL;
1620 
1621  TRACE("()\n");
1622  if (parent)
1623  {
1624  LPITEMIDLIST cpl = _ILCreateGuid(PT_SHELLEXT, &CLSID_ControlPanel);
1625 
1626  if (cpl)
1627  {
1628  ret = ILCombine(parent, cpl);
1629  SHFree(cpl);
1630  }
1631  SHFree(parent);
1632  }
1633  return ret;
1634 }
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:699
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid)
Definition: pidl.c:1673
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
r parent
Definition: btrfs.c:2869
int ret
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:331
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
#define PT_GUID
#define PT_SHELLEXT

Referenced by CCPLItemMenu::InvokeCommand(), and SHGetFolderLocation().

◆ _ILCreateDesktop()

LPITEMIDLIST _ILCreateDesktop ( void  )

Definition at line 1588 of file pidl.c.

1589 {
1590  LPITEMIDLIST ret;
1591 
1592  TRACE("()\n");
1593  ret = SHAlloc(2);
1594  if (ret)
1595  ret->mkid.cb = 0;
1596  return ret;
1597 }
#define TRACE(s)
Definition: solgame.cpp:4
int ret
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
LPVOID WINAPI SHAlloc(SIZE_T len)
Definition: shellole.c:309

Referenced by BrsFolder_OnCommand(), CDesktopFolder::FinalConstruct(), GetNormalAndSelectedIcons(), and SHGetFolderLocation().

◆ _ILCreateDrive()

LPITEMIDLIST _ILCreateDrive ( LPCWSTR  )

Definition at line 1794 of file pidl.c.

1795 {
1796  LPITEMIDLIST pidlOut;
1797 
1798  TRACE("(%s)\n",debugstr_w(lpszNew));
1799 
1800  pidlOut = _ILAlloc(PT_DRIVE, sizeof(DriveStruct));
1801  if (pidlOut)
1802  {
1803  LPSTR pszDest;
1804 
1805  pszDest = _ILGetTextPointer(pidlOut);
1806  if (pszDest)
1807  {
1808  strcpy(pszDest, "x:\\");
1809  pszDest[0]=toupperW(lpszNew[0]);
1810  TRACE("-- create Drive: %s\n", debugstr_a(pszDest));
1811  }
1812  }
1813  return pidlOut;
1814 }
static LPITEMIDLIST _ILAlloc(PIDLTYPE type, unsigned int size)
Definition: pidl.c:1562
char * LPSTR
Definition: xmlstorage.h:182
#define debugstr_w
Definition: kernel32.h:32
LPSTR _ILGetTextPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2229
#define PT_DRIVE
Definition: pidl.h:88
WINE_UNICODE_INLINE WCHAR toupperW(WCHAR ch)
Definition: unicode.h:141
#define TRACE(s)
Definition: solgame.cpp:4
#define debugstr_a
Definition: kernel32.h:31
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41

Referenced by CDrivesFolderEnum::Initialize(), CDrivesFolder::ParseDisplayName(), and CDrivesFolder::SetNameOf().

◆ _ILCreateEntireNetwork()

LPITEMIDLIST _ILCreateEntireNetwork ( void  )

Definition at line 1816 of file pidl.c.

1817 {
1818  LPITEMIDLIST pidlOut;
1819 
1820  TRACE("\n");
1821 
1822  pidlOut = _ILAlloc(PT_NETWORK, FIELD_OFFSET(PIDLDATA, u.network.szNames[sizeof("Entire Network")]));
1823  if (pidlOut)
1824  {
1825  LPPIDLDATA pData = _ILGetDataPointer(pidlOut);
1826 
1827  pData->u.network.dummy = 0;
1828  strcpy(pData->u.network.szNames, "Entire Network");
1829  }
1830  return pidlOut;
1831 }
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
Definition: glfuncs.h:240
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
static LPITEMIDLIST _ILAlloc(PIDLTYPE type, unsigned int size)
Definition: pidl.c:1562
#define PT_NETWORK
Definition: pidl.h:101
#define TRACE(s)
Definition: solgame.cpp:4
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:254
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1827
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41

◆ _ILCreateFromFindDataW()

LPITEMIDLIST _ILCreateFromFindDataW ( const WIN32_FIND_DATAW stffile)

Definition at line 1727 of file pidl.c.

1728 {
1729  char buff[MAX_PATH + 14 +1]; /* see WIN32_FIND_DATA */
1730  DWORD len, len1, wlen, alen;
1731  LPITEMIDLIST pidl;
1732  PIDLTYPE type;
1733 
1734  if (!wfd)
1735  return NULL;
1736 
1737  TRACE("(%s, %s)\n",debugstr_w(wfd->cAlternateFileName), debugstr_w(wfd->cFileName));
1738 
1739  /* prepare buffer with both names */
1740  len = WideCharToMultiByte(CP_ACP,0,wfd->cFileName,-1,buff,MAX_PATH,NULL,NULL);
1741  len1 = WideCharToMultiByte(CP_ACP,0,wfd->cAlternateFileName,-1, buff+len, sizeof(buff)-len, NULL, NULL);
1742  alen = len + len1;
1743 
1744  type = (wfd->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? PT_FOLDER : PT_VALUE;
1745 
1746  wlen = lstrlenW(wfd->cFileName) + 1;
1747  pidl = _ILAlloc(type, FIELD_OFFSET(FileStruct, szNames[alen + (alen & 1)]) +
1748  FIELD_OFFSET(FileStructW, wszName[wlen]) + sizeof(WORD));
1749  if (pidl)
1750  {
1752  FileStruct *fs = &pData->u.file;
1753  FileStructW *fsw;
1754  WORD *pOffsetW;
1755 
1756  FileTimeToDosDateTime( &wfd->ftLastWriteTime, &fs->uFileDate, &fs->uFileTime);
1757  fs->dwFileSize = wfd->nFileSizeLow;
1758  fs->uFileAttribs = wfd->dwFileAttributes;
1759  memcpy(fs->szNames, buff, alen);
1760 
1761  fsw = (FileStructW*)(pData->u.file.szNames + alen + (alen & 0x1));
1762  fsw->cbLen = FIELD_OFFSET(FileStructW, wszName[wlen]) + sizeof(WORD);
1763  FileTimeToDosDateTime( &wfd->ftCreationTime, &fsw->uCreationDate, &fsw->uCreationTime);
1764  FileTimeToDosDateTime( &wfd->ftLastAccessTime, &fsw->uLastAccessDate, &fsw->uLastAccessTime);
1765  memcpy(fsw->wszName, wfd->cFileName, wlen * sizeof(WCHAR));
1766 
1767  pOffsetW = (WORD*)((LPBYTE)pidl + pidl->mkid.cb - sizeof(WORD));
1768  *pOffsetW = (LPBYTE)fsw - (LPBYTE)pidl;
1769  TRACE("-- Set Value: %s\n",debugstr_w(fsw->wszName));
1770  }
1771  return pidl;
1772 
1773 }
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
#define WideCharToMultiByte
Definition: compat.h:101
static LPITEMIDLIST _ILAlloc(PIDLTYPE type, unsigned int size)
Definition: pidl.c:1562
#define CP_ACP
Definition: compat.h:99
WCHAR wszName[1]
Definition: shlfolder.c:1555
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
Definition: winddi.h:3706
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
Definition: fs.h:235
#define lstrlenW
Definition: compat.h:415
unsigned char * LPBYTE
Definition: typedefs.h:52
#define debugstr_w
Definition: kernel32.h:32
smooth NULL
Definition: ftsmooth.c:416
#define FILE_ATTRIBUTE_DIRECTORY
Definition: nt_native.h:705
BYTE PIDLTYPE
Definition: pidl.h:108
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define MAX_PATH
Definition: compat.h:26
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
BOOL WINAPI FileTimeToDosDateTime(IN CONST FILETIME *lpFileTime, OUT LPWORD lpFatDate, OUT LPWORD lpFatTime)
Definition: time.c:37
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:254
#define PT_VALUE
Definition: pidl.h:95
#define PT_FOLDER
Definition: pidl.h:94
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1827
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
static unsigned char buff[32768]
Definition: fatten.c:17

Referenced by _ILCreateFromPathW(), CFileSysEnum::Initialize(), SHChangeNotify(), and SHELL32_CreatePidlFromBindCtx().

◆ _ILCreateFromPathW()

HRESULT _ILCreateFromPathW ( LPCWSTR  szPath,
LPITEMIDLIST ppidl 
)

Definition at line 1775 of file pidl.c.

1776 {
1777  HANDLE hFile;
1778  WIN32_FIND_DATAW stffile;
1779 
1780  if (!ppidl)
1781  return E_INVALIDARG;
1782 
1783  hFile = FindFirstFileW(szPath, &stffile);
1784  if (hFile == INVALID_HANDLE_VALUE)
1786 
1787  FindClose(hFile);
1788 
1789  *ppidl = _ILCreateFromFindDataW(&stffile);
1790 
1791  return *ppidl ? S_OK : E_OUTOFMEMORY;
1792 }
#define HRESULT_FROM_WIN32(x)
Definition: winerror.h:92
#define INVALID_HANDLE_VALUE
Definition: compat.h:399
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
#define E_INVALIDARG
Definition: ddrawi.h:101
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
_In_ HANDLE hFile
Definition: mswsock.h:90
#define S_OK
Definition: intsafe.h:59
LPCWSTR szPath
Definition: env.c:35
LPITEMIDLIST _ILCreateFromFindDataW(const WIN32_FIND_DATAW *wfd)
Definition: pidl.c:1727
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
Definition: find.c:320
BOOL WINAPI FindClose(HANDLE hFindFile)
Definition: find.c:502

Referenced by CFSFolder::ParseDisplayName(), and CFSFolder::SetNameOf().

◆ _ILCreateGuid()

LPITEMIDLIST _ILCreateGuid ( PIDLTYPE  type,
REFIID  guid 
)

Definition at line 1673 of file pidl.c.

1674 {
1675  LPITEMIDLIST pidlOut;
1676 
1677  if (type == PT_SHELLEXT || type == PT_GUID || type == PT_YAGUID)
1678  {
1679  pidlOut = _ILAlloc(type, sizeof(GUIDStruct));
1680  if (pidlOut)
1681  {
1682  LPPIDLDATA pData = _ILGetDataPointer(pidlOut);
1683 
1684  pData->u.guid.guid = *guid;
1685  TRACE("-- create GUID-pidl %s\n",
1686  debugstr_guid(&(pData->u.guid.guid)));
1687  }
1688  }
1689  else
1690  {
1691  WARN("%d: invalid type for GUID\n", type);
1692  pidlOut = NULL;
1693  }
1694  return pidlOut;
1695 }
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
static LPITEMIDLIST _ILAlloc(PIDLTYPE type, unsigned int size)
Definition: pidl.c:1562
#define WARN(fmt,...)
Definition: debug.h:111
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
const GUID * guid
smooth NULL
Definition: ftsmooth.c:416
#define debugstr_guid
Definition: kernel32.h:35
#define PT_YAGUID
#define TRACE(s)
Definition: solgame.cpp:4
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1827
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
#define PT_GUID
#define PT_SHELLEXT

Referenced by _ILCreateAdminTools(), _ILCreateBitBucket(), _ILCreateControlPanel(), _ILCreateGuidFromStrA(), _ILCreateGuidFromStrW(), _ILCreateIExplore(), _ILCreateMyComputer(), _ILCreateMyDocuments(), _ILCreateNetwork(), and _ILCreatePrinters().

◆ _ILCreateGuidFromStrA()

LPITEMIDLIST _ILCreateGuidFromStrA ( LPCSTR  szGUID)

Definition at line 1698 of file pidl.c.

1699 {
1700  IID iid;
1701 
1702  if (FAILED(SHCLSIDFromStringA(szGUID, &iid)))
1703  {
1704  ERR("%s is not a GUID\n", szGUID);
1705  return NULL;
1706  }
1707  return _ILCreateGuid(PT_GUID, &iid);
1708 }
DWORD WINAPI SHCLSIDFromStringA(LPCSTR clsid, CLSID *id)
Definition: shellole.c:253
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid)
Definition: pidl.c:1673
smooth NULL
Definition: ftsmooth.c:416
#define ERR(fmt,...)
Definition: debug.h:109
#define PT_GUID

◆ _ILCreateGuidFromStrW()

LPITEMIDLIST _ILCreateGuidFromStrW ( LPCWSTR  szGUID)

Definition at line 1711 of file pidl.c.

1712 {
1713  IID iid;
1714 
1715 #ifndef __REACTOS__
1716  if (FAILED(SHCLSIDFromStringW(szGUID, &iid)))
1717 #else
1718  if (!GUIDFromStringW(szGUID, &iid))
1719 #endif
1720  {
1721  ERR("%s is not a GUID\n", debugstr_w(szGUID));
1722  return NULL;
1723  }
1724  return _ILCreateGuid(PT_GUID, &iid);
1725 }
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid)
Definition: pidl.c:1673
#define debugstr_w
Definition: kernel32.h:32
smooth NULL
Definition: ftsmooth.c:416
BOOL WINAPI GUIDFromStringW(_In_ PCWSTR psz, _Out_ LPGUID pguid)
DWORD WINAPI SHCLSIDFromStringW(LPCWSTR clsid, CLSID *id)
Definition: shellole.c:261
#define ERR(fmt,...)
Definition: debug.h:109
#define PT_GUID

Referenced by CDesktopFolderEnum::AddItemsFromClassicStartMenuKey(), CRegFolderEnum::AddItemsFromKey(), CDesktopFolder::ParseDisplayName(), and CRegFolder::ParseDisplayName().

◆ _ILCreateIExplore()

LPITEMIDLIST _ILCreateIExplore ( void  )

Definition at line 1611 of file pidl.c.

1612 {
1613  TRACE("()\n");
1614  return _ILCreateGuid(PT_GUID, &CLSID_Internet);
1615 }
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid)
Definition: pidl.c:1673
#define TRACE(s)
Definition: solgame.cpp:4
#define PT_GUID

Referenced by SHGetFolderLocation().

◆ _ILCreateMyComputer()

LPITEMIDLIST _ILCreateMyComputer ( void  )

Definition at line 1599 of file pidl.c.

1600 {
1601  TRACE("()\n");
1602  return _ILCreateGuid(PT_GUID, &CLSID_MyComputer);
1603 }
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid)
Definition: pidl.c:1673
#define TRACE(s)
Definition: solgame.cpp:4
#define PT_GUID

Referenced by CDrivesFolder::FinalConstruct(), CDesktopFolderEnum::Initialize(), CDesktopFolder::ParseDisplayName(), and SHGetFolderLocation().

◆ _ILCreateMyDocuments()

LPITEMIDLIST _ILCreateMyDocuments ( void  )

Definition at line 1605 of file pidl.c.

1606 {
1607  TRACE("()\n");
1608  return _ILCreateGuid(PT_GUID, &CLSID_MyDocuments);
1609 }
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid)
Definition: pidl.c:1673
#define TRACE(s)
Definition: solgame.cpp:4
#define PT_GUID

Referenced by CDesktopFolderEnum::Initialize(), and SHGetFolderLocation().

◆ _ILCreateNetHood()

LPITEMIDLIST _ILCreateNetHood ( void  )

◆ _ILCreateNetwork()

LPITEMIDLIST _ILCreateNetwork ( void  )

Definition at line 1655 of file pidl.c.

1656 {
1657  TRACE("()\n");
1658  return _ILCreateGuid(PT_GUID, &CLSID_NetworkPlaces);
1659 }
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid)
Definition: pidl.c:1673
#define TRACE(s)
Definition: solgame.cpp:4
#define PT_GUID

Referenced by CDesktopFolder::ParseDisplayName(), and SHGetFolderLocation().

◆ _ILCreatePrinters()

LPITEMIDLIST _ILCreatePrinters ( void  )

Definition at line 1636 of file pidl.c.

1637 {
1638  LPITEMIDLIST parent = _ILCreateGuid(PT_GUID, &CLSID_MyComputer), ret = NULL;
1639 
1640  TRACE("()\n");
1641  if (parent)
1642  {
1643  LPITEMIDLIST printers = _ILCreateGuid(PT_YAGUID, &CLSID_Printers);
1644 
1645  if (printers)
1646  {
1647  ret = ILCombine(parent, printers);
1648  SHFree(printers);
1649  }
1650  SHFree(parent);
1651  }
1652  return ret;
1653 }
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:699
LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid)
Definition: pidl.c:1673
smooth NULL
Definition: ftsmooth.c:416
#define PT_YAGUID
#define TRACE(s)
Definition: solgame.cpp:4
r parent
Definition: btrfs.c:2869
int ret
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:331
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
#define PT_GUID

Referenced by SHGetFolderLocation().

◆ _ILFreeaPidl()

void _ILFreeaPidl ( LPITEMIDLIST apidl,
UINT  cidl 
)

Definition at line 2621 of file pidl.c.

2622 {
2623  UINT i;
2624 
2625  if (apidl)
2626  {
2627  for (i = 0; i < cidl; i++)
2628  SHFree(apidl[i]);
2629  SHFree(apidl);
2630  }
2631 }
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
Definition: glfuncs.h:248
unsigned int UINT
Definition: ndis.h:50
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:331

Referenced by CFSDropTarget::_DoDrop(), CFSDropTarget::_RepositionItems(), DrivesContextMenuCallback(), RegFolderContextMenuCallback(), Shell_DefaultContextMenuCallBack(), CCPLItemMenu::~CCPLItemMenu(), and CDefaultContextMenu::~CDefaultContextMenu().

◆ _ILGetDataPointer()

◆ _ILGetDrive()

DWORD _ILGetDrive ( LPCITEMIDLIST  ,
LPSTR  ,
UINT   
)

Definition at line 1841 of file pidl.c.

1842 {
1843  TRACE("(%p,%p,%u)\n",pidl,pOut,uSize);
1844 
1845  if(_ILIsMyComputer(pidl))
1846  pidl = ILGetNext(pidl);
1847 
1848  if (pidl && _ILIsDrive(pidl))
1849  return _ILSimpleGetText(pidl, pOut, uSize);
1850 
1851  return 0;
1852 }
BOOL _ILIsMyComputer(LPCITEMIDLIST pidl)
Definition: pidl.c:1906
LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST pidl)
Definition: pidl.c:851
#define TRACE(s)
Definition: solgame.cpp:4
BOOL _ILIsDrive(LPCITEMIDLIST pidl)
Definition: pidl.c:1939
DWORD _ILSimpleGetText(LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
Definition: pidl.c:2010

Referenced by DrivesContextMenuCallback().

◆ _ILGetExtension()

BOOL _ILGetExtension ( LPCITEMIDLIST  pidl,
LPSTR  pOut,
UINT  uOutSize 
)

Definition at line 2462 of file pidl.c.

2463 {
2464  char szTemp[MAX_PATH];
2465  const char * pPoint;
2466  LPCITEMIDLIST pidlTemp=pidl;
2467 
2468  TRACE("pidl=%p\n",pidl);
2469 
2470  if (!pidl)
2471  return FALSE;
2472 
2473  pidlTemp = ILFindLastID(pidl);
2474 
2475  if (!_ILIsValue(pidlTemp))
2476  return FALSE;
2477  if (!_ILSimpleGetText(pidlTemp, szTemp, MAX_PATH))
2478  return FALSE;
2479 
2480  pPoint = PathFindExtensionA(szTemp);
2481 
2482  if (!*pPoint)
2483  return FALSE;
2484 
2485  pPoint++;
2486  lstrcpynA(pOut, pPoint, uOutSize);
2487  TRACE("%s\n",pOut);
2488 
2489  return TRUE;
2490 }
#define TRUE
Definition: types.h:120
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST pidl)
Definition: pidl.c:189
#define TRACE(s)
Definition: solgame.cpp:4
#define MAX_PATH
Definition: compat.h:26
BOOL _ILIsValue(LPCITEMIDLIST pidl)
Definition: pidl.c:1960
DWORD _ILSimpleGetText(LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
Definition: pidl.c:2010
LPSTR WINAPI PathFindExtensionA(LPCSTR lpszPath)
Definition: path.c:417
#define lstrcpynA
Definition: compat.h:416

Referenced by _ILGetFileType(), SHELL32_GetFSItemAttributes(), and SHELL_IsShortcut().

◆ _ILGetFileAttributes()

DWORD _ILGetFileAttributes ( LPCITEMIDLIST  pidl,
LPSTR  pOut,
UINT  uOutSize 
)

Definition at line 2581 of file pidl.c.

2582 {
2584  WORD wAttrib = 0;
2585  int i;
2586 
2587  if (!pData)
2588  return 0;
2589 
2590  switch(pData->type)
2591  {
2592  case PT_FOLDER:
2593  case PT_VALUE:
2594  wAttrib = pData->u.file.uFileAttribs;
2595  break;
2596  }
2597 
2598  if(uOutSize >= 6)
2599  {
2600  i=0;
2601  if(wAttrib & FILE_ATTRIBUTE_READONLY)
2602  pOut[i++] = 'R';
2603  if(wAttrib & FILE_ATTRIBUTE_HIDDEN)
2604  pOut[i++] = 'H';
2605  if(wAttrib & FILE_ATTRIBUTE_SYSTEM)
2606  pOut[i++] = 'S';
2607  if(wAttrib & FILE_ATTRIBUTE_ARCHIVE)
2608  pOut[i++] = 'A';
2609  if(wAttrib & FILE_ATTRIBUTE_COMPRESSED)
2610  pOut[i++] = 'C';
2611  pOut[i] = 0x00;
2612  }
2613  return wAttrib;
2614 }
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
#define FILE_ATTRIBUTE_SYSTEM
Definition: nt_native.h:704
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
Definition: glfuncs.h:248
#define FILE_ATTRIBUTE_READONLY
Definition: nt_native.h:702
unsigned short WORD
Definition: ntddk_ex.h:93
#define FILE_ATTRIBUTE_COMPRESSED
Definition: nt_native.h:711
#define FILE_ATTRIBUTE_ARCHIVE
Definition: nt_native.h:706
#define FILE_ATTRIBUTE_HIDDEN
Definition: nt_native.h:703
#define PT_VALUE
Definition: pidl.h:95
#define PT_FOLDER
Definition: pidl.h:94
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1827

Referenced by CFSFolder::CreateViewObject(), CFSFolder::GetDetailsOf(), getIconLocationForFolder(), SHELL32_GetFSItemAttributes(), SHGetDataFromIDListA(), and SHGetDataFromIDListW().

◆ _ILGetFileDate()

BOOL _ILGetFileDate ( LPCITEMIDLIST  pidl,
LPSTR  pOut,
UINT  uOutSize 
)

Definition at line 2397 of file pidl.c.

2398 {
2399  FILETIME ft,lft;
2400  SYSTEMTIME time;
2401  BOOL ret;
2402 
2403  if (_ILGetFileDateTime( pidl, &ft ))
2404  {
2405  FileTimeToLocalFileTime(&ft, &lft);
2406  FileTimeToSystemTime (&lft, &time);
2407 
2409  if (ret)
2410  {
2411  /* Append space + time without seconds */
2412  pOut[ret-1] = ' ';
2414  }
2415  }
2416  else
2417  {
2418  pOut[0] = '\0';
2419  ret = FALSE;
2420  }
2421  return ret;
2422 }
INT WINAPI GetDateFormatA(LCID lcid, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCSTR lpFormat, LPSTR lpDateStr, INT cchOut)
Definition: lcformat.c:922
#define LOCALE_USER_DEFAULT
#define DATE_SHORTDATE
Definition: winnls.h:193
__u16 time
Definition: mkdosfs.c:366
BOOL WINAPI FileTimeToLocalFileTime(IN CONST FILETIME *lpFileTime, OUT LPFILETIME lpLocalFileTime)
Definition: time.c:221
INT WINAPI GetTimeFormatA(LCID lcid, DWORD dwFlags, const SYSTEMTIME *lpTime, LPCSTR lpFormat, LPSTR lpTimeStr, INT cchOut)
Definition: lcformat.c:1030
unsigned int BOOL
Definition: ntddk_ex.h:94
smooth NULL
Definition: ftsmooth.c:416
BOOL _ILGetFileDateTime(LPCITEMIDLIST pidl, FILETIME *pFt)
Definition: pidl.c:2378
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
Definition: time.c:188
int ret
#define TIME_NOSECONDS
Definition: winnls.h:275

Referenced by CFSFolder::GetDetailsOf().

◆ _ILGetFileDateTime()

BOOL _ILGetFileDateTime ( LPCITEMIDLIST  pidl,
FILETIME ft 
)

Definition at line 2378 of file pidl.c.

2379 {
2381 
2382  if (!pdata)
2383  return FALSE;
2384 
2385  switch (pdata->type)
2386  {
2387  case PT_FOLDER:
2388  case PT_VALUE:
2389  DosDateTimeToFileTime(pdata->u.file.uFileDate, pdata->u.file.uFileTime, pFt);
2390  break;
2391  default:
2392  return FALSE;
2393  }
2394  return TRUE;
2395 }
#define TRUE
Definition: types.h:120
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
static PROTOCOLDATA * pdata
Definition: protocol.c:158
BOOL WINAPI DosDateTimeToFileTime(IN WORD wFatDate, IN WORD wFatTime, OUT LPFILETIME lpFileTime)
Definition: time.c:75
#define PT_VALUE
Definition: pidl.h:95
#define PT_FOLDER
Definition: pidl.h:94

Referenced by _ILGetFileDate(), SHGetDataFromIDListA(), and SHGetDataFromIDListW().

◆ _ILGetFileSize()

DWORD _ILGetFileSize ( LPCITEMIDLIST  pidl,
LPSTR  pOut,
UINT  uOutSize 
)

Definition at line 2441 of file pidl.c.

2442 {
2444  DWORD dwSize;
2445 
2446  if (!pdata)
2447  return 0;
2448 
2449  switch (pdata->type)
2450  {
2451  case PT_VALUE:
2452  dwSize = pdata->u.file.dwFileSize;
2453  if (pOut)
2454  StrFormatKBSizeA(dwSize, pOut, uOutSize);
2455  return dwSize;
2456  }
2457  if (pOut)
2458  *pOut = 0x00;
2459  return 0;
2460 }
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
LPSTR WINAPI StrFormatKBSizeA(LONGLONG llBytes, LPSTR lpszDest, UINT cchMax)
Definition: string.c:1727
static PROTOCOLDATA * pdata
Definition: protocol.c:158
unsigned long DWORD
Definition: ntddk_ex.h:95
#define PT_VALUE
Definition: pidl.h:95
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:54

Referenced by CFSFolder::GetDetailsOf(), SHGetDataFromIDListA(), and SHGetDataFromIDListW().

◆ _ILGetFileStructW()

FileStructW* _ILGetFileStructW ( LPCITEMIDLIST  pidl)

Definition at line 2336 of file pidl.c.

2336  {
2337  FileStructW *pFileStructW;
2338  WORD cbOffset;
2339 
2340  if (!(_ILIsValue(pidl) || _ILIsFolder(pidl)))
2341  return NULL;
2342 
2343  cbOffset = *(const WORD *)((const BYTE *)pidl + pidl->mkid.cb - sizeof(WORD));
2344  pFileStructW = (FileStructW*)((LPBYTE)pidl + cbOffset);
2345 
2346  /* Currently I don't see a fool prove way to figure out if a pidl is for sure of WinXP
2347  * style with a FileStructW member. If we switch all our shellfolder-implementations to
2348  * the new format, this won't be a problem. For now, we do as many sanity checks as possible. */
2349  if ((cbOffset & 0x1) || /* FileStructW member is word aligned in the pidl */
2350  /* FileStructW is positioned after FileStruct */
2351  cbOffset < sizeof(pidl->mkid.cb) + sizeof(PIDLTYPE) + sizeof(FileStruct) ||
2352  /* There has to be enough space at cbOffset in the pidl to hold FileStructW and cbOffset */
2353  cbOffset > pidl->mkid.cb - sizeof(cbOffset) - sizeof(FileStructW) ||
2354  pidl->mkid.cb != cbOffset + pFileStructW->cbLen)
2355  {
2356  WARN("Invalid pidl format (cbOffset = %d)!\n", cbOffset);
2357  return NULL;
2358  }
2359 
2360  return pFileStructW;
2361 }
_In_ CLIPOBJ _In_ BRUSHOBJ _In_ LONG x1
Definition: winddi.h:3706
#define WARN(fmt,...)
Definition: debug.h:111
unsigned char * LPBYTE
Definition: typedefs.h:52
BOOL _ILIsFolder(LPCITEMIDLIST pidl)
Definition: pidl.c:1951
smooth NULL
Definition: ftsmooth.c:416
BYTE PIDLTYPE
Definition: pidl.h:108
unsigned short WORD
Definition: ntddk_ex.h:93
struct tagFileStructW FileStructW
BOOL _ILIsValue(LPCITEMIDLIST pidl)
Definition: pidl.c:1960
unsigned char BYTE
Definition: mem.h:68
struct tagFileStruct FileStruct

Referenced by CFSFolder::_CreateShellExtInstance(), _ILHACKCompareSimpleIds(), _ILSimpleGetTextW(), AddFSClassKeysToArray(), CFSFolder::BindToObject(), BuildPathsList(), CFSFolder::CompareIDs(), OpenKeyFromFileType(), and CFSFolder::SetNameOf().

◆ _ILGetFileType()

void _ILGetFileType ( LPCITEMIDLIST  pidl,
LPSTR  pOut,
UINT  uOutSize 
)

Definition at line 2508 of file pidl.c.

2509 {
2510 #ifdef __REACTOS__ /* r32966 */
2511  char sType[64];
2512 #endif
2513 
2514  if(_ILIsValue(pidl))
2515  {
2516  char sTemp[64];
2517 
2518  if(uOutSize > 0)
2519  pOut[0] = 0;
2520 #ifdef __REACTOS__ /* r32966 */
2521  if (_ILGetExtension (pidl, sType, 64))
2522  {
2523  if (HCR_MapTypeToValueA(sType, sTemp, 64, TRUE))
2524  {
2525  /* retrieve description */
2526  if(HCR_MapTypeToValueA(sTemp, pOut, uOutSize, FALSE ))
2527  return;
2528  }
2529  /* display Ext-file as description */
2530  _strupr(sType);
2531  /* load localized file string */
2532  sTemp[0] = '\0';
2533  if(LoadStringA(shell32_hInstance, IDS_ANY_FILE, sTemp, 64))
2534  {
2535  sTemp[63] = '\0';
2536  StringCchPrintfA(pOut, uOutSize, sTemp, sType);
2537  }
2538  }
2539 #else
2540  if (_ILGetExtension (pidl, sTemp, 64))
2541  {
2542  if (!( HCR_MapTypeToValueA(sTemp, sTemp, 64, TRUE)
2543  && HCR_MapTypeToValueA(sTemp, pOut, uOutSize, FALSE )))
2544  {
2545  lstrcpynA (pOut, sTemp, uOutSize - 6);
2546  strcat (pOut, "-file");
2547  }
2548  }
2549 #endif
2550  }
2551  else
2552 #ifdef __REACTOS__ /* r32966 */
2553  {
2554  pOut[0] = '\0';
2555  LoadStringA(shell32_hInstance, IDS_DIRECTORY, pOut, uOutSize);
2556  /* make sure its null terminated */
2557  pOut[uOutSize-1] = '\0';
2558  }
2559 #else
2560  lstrcpynA(pOut, "Folder", uOutSize);
2561 #endif
2562 }
#define TRUE
Definition: types.h:120
char * strcat(char *DstString, const char *SrcString)
Definition: utclib.c:568
int WINAPI LoadStringA(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPSTR lpBuffer, _In_ int cchBufferMax)
#define IDS_DIRECTORY
Definition: shresdef.h:146
HINSTANCE shell32_hInstance
Definition: misc.cpp:82
STRSAFEAPI StringCchPrintfA(STRSAFE_LPSTR pszDest, size_t cchDest, STRSAFE_LPCSTR pszFormat,...)
Definition: strsafe.h:520
#define IDS_ANY_FILE
Definition: shresdef.h:172
BOOL _ILGetExtension(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
Definition: pidl.c:2462
BOOL HCR_MapTypeToValueA(LPCSTR szExtension, LPSTR szFileType, LONG len, BOOL bPrependDot)
Definition: classes.c:88
BOOL _ILIsValue(LPCITEMIDLIST pidl)
Definition: pidl.c:1960
_CRTIMP char *__cdecl _strupr(_Inout_z_ char *_String)
#define lstrcpynA
Definition: compat.h:416

Referenced by CFSFolder::GetDetailsOf(), and SHGetFileInfoW().

◆ _ILGetGUIDPointer()

IID* _ILGetGUIDPointer ( LPCITEMIDLIST  pidl)

Definition at line 2300 of file pidl.c.

2301 {
2303 
2304  TRACE("%p\n", pidl);
2305 
2306  if (!pdata)
2307  return NULL;
2308 
2309  TRACE("pdata->type 0x%04x\n", pdata->type);
2310  switch (pdata->type)
2311  {
2312  case PT_SHELLEXT:
2313  case PT_GUID:
2314  case PT_YAGUID:
2315  return &(pdata->u.guid.guid);
2316 
2317  default:
2318  TRACE("Unknown pidl type 0x%04x\n", pdata->type);
2319  break;
2320  }
2321  return NULL;
2322 }
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
smooth NULL
Definition: ftsmooth.c:416
static PROTOCOLDATA * pdata
Definition: protocol.c:158
#define PT_YAGUID
#define TRACE(s)
Definition: solgame.cpp:4
#define PT_GUID
#define PT_SHELLEXT

Referenced by _ILHACKCompareSimpleIds(), _ILIsBitBucket(), _ILIsControlPanel(), _ILIsMyComputer(), _ILIsMyDocuments(), _ILIsNetHood(), _ILSimpleGetText(), _ILSimpleGetTextW(), CRegFolder::BindToObject(), CGuidItemContextMenu_CreateInstance(), CGuidItemExtractIcon_CreateInstance(), CRegFolder::CompareIDs(), CRegFolder::GetDetailsOf(), CRegFolder::GetDisplayNameOf(), CRegFolder::GetUIObjectOf(), CEnumIDListBase::HasItemWithCLSID(), HCR_GetFolderAttributes(), IsNamespaceExtensionHidden(), and CRegFolder::SetNameOf().

◆ _ILGetTextPointer()

LPSTR _ILGetTextPointer ( LPCITEMIDLIST  )

Definition at line 2229 of file pidl.c.

2230 {
2231  /* TRACE(pidl,"(pidl%p)\n", pidl);*/
2232 
2234 
2235  if (!pdata)
2236  return NULL;
2237 
2238  switch (pdata->type)
2239  {
2240  case PT_GUID:
2241  case PT_SHELLEXT:
2242  case PT_YAGUID:
2243  return NULL;
2244 
2245  case PT_DRIVE:
2246  case PT_DRIVE1:
2247  case PT_DRIVE2:
2248  case PT_DRIVE3:
2249  return pdata->u.drive.szDriveName;
2250 
2251  case PT_FOLDER:
2252  case PT_FOLDER1:
2253  case PT_VALUE:
2254  case PT_IESPECIAL1:
2255  case PT_IESPECIAL2:
2256  return pdata->u.file.szNames;
2257 
2258  case PT_WORKGRP:
2259  case PT_COMP:
2260  case PT_NETWORK:
2261  case PT_NETPROVIDER:
2262  case PT_SHARE:
2263  return pdata->u.network.szNames;
2264  }
2265  return NULL;
2266 }
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
#define PT_DRIVE3
Definition: pidl.h:90
#define PT_WORKGRP
Definition: pidl.h:98
#define PT_IESPECIAL2
Definition: pidl.h:104
#define PT_NETWORK
Definition: pidl.h:101
smooth NULL
Definition: ftsmooth.c:416
#define PT_DRIVE2
Definition: pidl.h:89
static PROTOCOLDATA * pdata
Definition: protocol.c:158
#define PT_DRIVE
Definition: pidl.h:88
#define PT_YAGUID
#define PT_FOLDER1
Definition: pidl.h:93
#define PT_IESPECIAL1
Definition: pidl.h:102
#define PT_COMP
Definition: pidl.h:99
#define PT_DRIVE1
Definition: pidl.h:92
#define PT_VALUE
Definition: pidl.h:95
#define PT_NETPROVIDER
Definition: pidl.h:100
#define PT_FOLDER
Definition: pidl.h:94
#define PT_SHARE
Definition: pidl.h:105
#define PT_GUID
#define PT_SHELLEXT

Referenced by _ILCreateDrive(), _ILSimpleGetText(), _ILSimpleGetTextW(), SHGetDataFromIDListA(), and SHGetDataFromIDListW().

◆ _ILIsCPanelStruct()

BOOL _ILIsCPanelStruct ( LPCITEMIDLIST  pidl)

Definition at line 1969 of file pidl.c.

1970 {
1971  LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
1972 
1973  TRACE("(%p)\n",pidl);
1974 
1975  return (pidl && lpPData && (lpPData->type == 0));
1976 }
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
#define TRACE(s)
Definition: solgame.cpp:4

Referenced by CControlPanelFolder::GetAttributesOf(), and CControlPanelFolder::GetUIObjectOf().

◆ _ILIsDesktop()

◆ _ILIsDrive()

BOOL _ILIsDrive ( LPCITEMIDLIST  pidl)

Definition at line 1939 of file pidl.c.

1940 {
1941  LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
1942 
1943  TRACE("(%p)\n",pidl);
1944 
1945  return (pidl && lpPData && (PT_DRIVE == lpPData->type ||
1946  PT_DRIVE1 == lpPData->type ||
1947  PT_DRIVE2 == lpPData->type ||
1948  PT_DRIVE3 == lpPData->type));
1949 }
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
#define PT_DRIVE3
Definition: pidl.h:90
#define PT_DRIVE2
Definition: pidl.h:89
#define PT_DRIVE
Definition: pidl.h:88
#define TRACE(s)
Definition: solgame.cpp:4
#define PT_DRIVE1
Definition: pidl.h:92

Referenced by _ILGetDrive(), _ILHACKCompareSimpleIds(), CDrivesFolder::CompareIDs(), CDrivesFolder::GetAttributesOf(), CFSFolder::GetAttributesOf(), CDrivesFolder::GetDetailsOf(), CDrivesFolder::GetDisplayNameOf(), CDrivesFolder::GetUIObjectOf(), CDrivesFolder::ParseDisplayName(), CDrivesFolder::SetNameOf(), SHGetDataFromIDListA(), and SHGetDataFromIDListW().

◆ _ILIsEmpty()

static BOOL _ILIsEmpty ( LPCITEMIDLIST  pidl)
inlinestatic

Definition at line 256 of file pidl.h.

256 { return _ILIsDesktop(pidl); }
BOOL _ILIsDesktop(LPCITEMIDLIST pidl) DECLSPEC_HIDDEN
Definition: CBandSite.h:24

Referenced by _ILGetDataPointer(), BrsFolder_OnSetExpanded(), BrsFolder_Treeview_Expand(), ILRemoveLastID(), and InitializeTreeView().

◆ _ILIsEqualSimple()

static BOOL _ILIsEqualSimple ( LPCITEMIDLIST  pidlA,
LPCITEMIDLIST  pidlB 
)
inlinestatic

Definition at line 250 of file pidl.h.

251 {
252  return (pidlA->mkid.cb > 0 && !memcmp(pidlA, pidlB, pidlA->mkid.cb)) ||
253  (!pidlA->mkid.cb && !pidlB->mkid.cb);
254 }
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
Definition: utclib.c:112

Referenced by BrsFolder_OnSetExpanded().

◆ _ILIsFolder()

BOOL _ILIsFolder ( LPCITEMIDLIST  pidl)

Definition at line 1951 of file pidl.c.

1952 {
1953  LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
1954 
1955  TRACE("(%p)\n",pidl);
1956 
1957  return (pidl && lpPData && (PT_FOLDER == lpPData->type || PT_FOLDER1 == lpPData->type));
1958 }
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
#define TRACE(s)
Definition: solgame.cpp:4
#define PT_FOLDER1
Definition: pidl.h:93
#define PT_FOLDER
Definition: pidl.h:94

Referenced by CFSFolder::_GetDropTarget(), _ILGetFileStructW(), _ILHACKCompareSimpleIds(), AddFSClassKeysToArray(), CFSFolder::BindToObject(), CFSExtractIcon_CreateInstance(), CFSFolder::CompareIDs(), CDesktopFolder::GetAttributesOf(), CFSFolder::GetAttributesOf(), CFSFolder::GetDisplayNameOf(), CFSFolder::SetNameOf(), and SHELL32_GetFSItemAttributes().

◆ _ILIsMyComputer()

BOOL _ILIsMyComputer ( LPCITEMIDLIST  pidl)

Definition at line 1906 of file pidl.c.

1907 {
1908  REFIID iid = _ILGetGUIDPointer(pidl);
1909 
1910  TRACE("(%p)\n",pidl);
1911 
1912  if (iid)
1913  return IsEqualIID(iid, &CLSID_MyComputer);
1914  return FALSE;
1915 }
#define REFIID
Definition: guiddef.h:118
#define TRACE(s)
Definition: solgame.cpp:4
IID * _ILGetGUIDPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2300
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95

Referenced by _ILGetDrive(), BrsFolder_Treeview_Expand(), CDesktopFolder::GetAttributesOf(), and RegFolderContextMenuCallback().

◆ _ILIsPidlSimple()

BOOL _ILIsPidlSimple ( LPCITEMIDLIST  pidl)

Definition at line 821 of file shellbrowser.cpp.

822 {
823  LPCITEMIDLIST pidlnext;
824  WORD length;
825  BOOL ret;
826 
827  ret = TRUE;
828  if (! _ILIsDesktop(pidl))
829  {
830  length = pidl->mkid.cb;
831  pidlnext =
832  reinterpret_cast<LPCITEMIDLIST>(
833  reinterpret_cast<const BYTE *>(pidl) + length);
834  if (pidlnext->mkid.cb != 0)
835  ret = FALSE;
836  }
837  return ret;
838 }
#define TRUE
Definition: types.h:120
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
unsigned int BOOL
Definition: ntddk_ex.h:94
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
Definition: CBandSite.h:24
GLenum GLuint GLenum GLsizei length
Definition: glext.h:5579
unsigned short WORD
Definition: ntddk_ex.h:93
int ret

Referenced by CDrivesFolder::GetDisplayNameOf(), CDesktopFolder::GetDisplayNameOf(), CFSFolder::GetDisplayNameOf(), HCR_GetFolderAttributes(), SHBindToFolderIDListParent(), SHBindToParent(), and SHELL32_BindToSF().

◆ _ILIsSpecialFolder()

BOOL _ILIsSpecialFolder ( LPCITEMIDLIST  pidl)

Definition at line 1928 of file pidl.c.

1929 {
1930  LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
1931 
1932  TRACE("(%p)\n",pidl);
1933 
1934  return (pidl && ( (lpPData && (PT_GUID== lpPData->type || PT_SHELLEXT== lpPData->type || PT_YAGUID == lpPData->type)) ||
1935  (pidl && pidl->mkid.cb == 0x00)
1936  ));
1937 }
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
#define PT_YAGUID
#define TRACE(s)
Definition: solgame.cpp:4
#define PT_GUID
#define PT_SHELLEXT

Referenced by SHGetDataFromIDListA().

◆ _ILIsUnicode()

BOOL _ILIsUnicode ( LPCITEMIDLIST  pidl)

Definition at line 1868 of file pidl.c.

1869 {
1870  LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
1871 
1872  TRACE("(%p)\n",pidl);
1873 
1874  return (pidl && lpPData && PT_VALUEW == lpPData->type);
1875 }
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
#define TRACE(s)
Definition: solgame.cpp:4
#define PT_VALUEW
Definition: pidl.h:96

Referenced by pdump().

◆ _ILIsValue()

BOOL _ILIsValue ( LPCITEMIDLIST  pidl)

Definition at line 1960 of file pidl.c.

1961 {
1962  LPPIDLDATA lpPData = _ILGetDataPointer(pidl);
1963 
1964  TRACE("(%p)\n",pidl);
1965 
1966  return (pidl && lpPData && PT_VALUE == lpPData->type);
1967 }
LPPIDLDATA _ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2162
#define TRACE(s)
Definition: solgame.cpp:4
#define PT_VALUE
Definition: pidl.h:95

Referenced by _ILGetExtension(), _ILGetFileStructW(), _ILGetFileType(), _ILHACKCompareSimpleIds(), AddFSClassKeysToArray(), CDesktopFolder::GetAttributesOf(), CFSFolder::GetAttributesOf(), CFSFolder::GetUIObjectOf(), COpenWithMenu::Initialize(), OpenKeyFromFileType(), and SHELL32_GetFSItemAttributes().

◆ _ILSimpleGetText()

DWORD _ILSimpleGetText ( LPCITEMIDLIST  pidl,
LPSTR  pOut,
UINT  uOutSize 
)

Definition at line 2010 of file pidl.c.

2011 {
2012  DWORD dwReturn=0;
2013  LPSTR szSrc;
2014  LPWSTR szSrcW;
2015  GUID const * riid;
2016  char szTemp[MAX_PATH];
2017 
2018  TRACE("(%p %p %x)\n",pidl,szOut,uOutSize);
2019 
2020  if (!pidl)
2021  return 0;
2022 
2023  if (szOut)
2024  *szOut = 0;
2025 
2026  if (_ILIsDesktop(pidl))
2027  {
2028  /* desktop */
2029  if (HCR_GetClassNameA(&CLSID_ShellDesktop, szTemp, MAX_PATH))
2030  {
2031  if (szOut)
2032  lstrcpynA(szOut, szTemp, uOutSize);
2033 
2034  dwReturn = strlen (szTemp);
2035  }
2036  }
2037  else if (( szSrc = _ILGetTextPointer(pidl) ))
2038  {
2039  /* filesystem */
2040  if (szOut)
2041  lstrcpynA(szOut, szSrc, uOutSize);
2042 
2043  dwReturn = strlen(szSrc);
2044  }
2045  else if (( szSrcW = _ILGetTextPointerW(pidl) ))
2046  {
2047  /* unicode filesystem */
2048  WideCharToMultiByte(CP_ACP,0,szSrcW, -1, szTemp, MAX_PATH, NULL, NULL);
2049 
2050  if (szOut)
2051  lstrcpynA(szOut, szTemp, uOutSize);
2052 
2053  dwReturn = strlen (szTemp);
2054  }
2055  else if (( riid = _ILGetGUIDPointer(pidl) ))
2056  {
2057  /* special folder */
2058  if ( HCR_GetClassNameA(riid, szTemp, MAX_PATH) )
2059  {
2060  if (szOut)
2061  lstrcpynA(szOut, szTemp, uOutSize);
2062 
2063  dwReturn = strlen (szTemp);
2064  }
2065  }
2066  else
2067  {
2068  ERR("-- no text\n");
2069  }
2070 
2071  TRACE("-- (%p=%s 0x%08x)\n",szOut,debugstr_a(szOut),dwReturn);
2072  return dwReturn;
2073 }
#define WideCharToMultiByte
Definition: compat.h:101
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
REFIID riid
Definition: precomp.h:44
#define CP_ACP
Definition: compat.h:99
static LPWSTR _ILGetTextPointerW(LPCITEMIDLIST pidl)
Definition: pidl.c:2173
char * LPSTR
Definition: xmlstorage.h:182
smooth NULL
Definition: ftsmooth.c:416
LPSTR _ILGetTextPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2229
#define TRACE(s)
Definition: solgame.cpp:4
#define debugstr_a
Definition: kernel32.h:31
IID * _ILGetGUIDPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2300
#define MAX_PATH
Definition: compat.h:26
BOOL HCR_GetClassNameA(REFIID riid, LPSTR szDest, DWORD len)
Definition: classes.c:423
unsigned long DWORD
Definition: ntddk_ex.h:95
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
Definition: pidl.c:1877
#define ERR(fmt,...)
Definition: debug.h:109
#define lstrcpynA
Definition: compat.h:416
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by _ILGetDrive(), and _ILGetExtension().

◆ _ILSimpleGetTextW()

DWORD _ILSimpleGetTextW ( LPCITEMIDLIST  pidl,
LPWSTR  pOut,
UINT  uOutSize 
)

Definition at line 2082 of file pidl.c.

2083 {
2084  DWORD dwReturn;
2085  FileStructW *pFileStructW = _ILGetFileStructW(pidl);
2086 
2087  TRACE("(%p %p %x)\n",pidl,szOut,uOutSize);
2088 
2089  if (pFileStructW) {
2090  lstrcpynW(szOut, pFileStructW->wszName, uOutSize);
2091  dwReturn = lstrlenW(pFileStructW->wszName);
2092  } else {
2093  GUID const * riid;
2094  WCHAR szTemp[MAX_PATH];
2095  LPSTR szSrc;
2096  LPWSTR szSrcW;
2097  dwReturn=0;
2098 
2099  if (!pidl)
2100  return 0;
2101 
2102  if (szOut)
2103  *szOut = 0;
2104 
2105  if (_ILIsDesktop(pidl))
2106  {
2107  /* desktop */
2108  if (HCR_GetClassNameW(&CLSID_ShellDesktop, szTemp, MAX_PATH))
2109  {
2110  if (szOut)
2111  lstrcpynW(szOut, szTemp, uOutSize);
2112 
2113  dwReturn = lstrlenW (szTemp);
2114  }
2115  }
2116  else if (( szSrcW = _ILGetTextPointerW(pidl) ))
2117  {
2118  /* unicode filesystem */
2119  if (szOut)
2120  lstrcpynW(szOut, szSrcW, uOutSize);
2121 
2122  dwReturn = lstrlenW(szSrcW);
2123  }
2124  else if (( szSrc = _ILGetTextPointer(pidl) ))
2125  {
2126  /* filesystem */
2127  MultiByteToWideChar(CP_ACP, 0, szSrc, -1, szTemp, MAX_PATH);
2128 
2129  if (szOut)
2130  lstrcpynW(szOut, szTemp, uOutSize);
2131 
2132  dwReturn = lstrlenW (szTemp);
2133  }
2134  else if (( riid = _ILGetGUIDPointer(pidl) ))
2135  {
2136  /* special folder */
2137  if ( HCR_GetClassNameW(riid, szTemp, MAX_PATH) )
2138  {
2139  if (szOut)
2140  lstrcpynW(szOut, szTemp, uOutSize);
2141 
2142  dwReturn = lstrlenW (szTemp);
2143  }
2144  }
2145  else
2146  {
2147  ERR("-- no text\n");
2148  }
2149  }
2150 
2151  TRACE("-- (%p=%s 0x%08x)\n",szOut,debugstr_w(szOut),dwReturn);
2152  return dwReturn;
2153 }
REFIID riid
Definition: precomp.h:44
#define CP_ACP
Definition: compat.h:99
WCHAR wszName[1]
Definition: shlfolder.c:1555
static LPWSTR _ILGetTextPointerW(LPCITEMIDLIST pidl)
Definition: pidl.c:2173
char * LPSTR
Definition: xmlstorage.h:182
#define lstrlenW
Definition: compat.h:415
#define lstrcpynW
Definition: compat.h:405
#define debugstr_w
Definition: kernel32.h:32
LPSTR _ILGetTextPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2229
#define TRACE(s)
Definition: solgame.cpp:4
__wchar_t WCHAR
Definition: xmlstorage.h:180
IID * _ILGetGUIDPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2300
#define MAX_PATH
Definition: compat.h:26
unsigned long DWORD
Definition: ntddk_ex.h:95
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
Definition: pidl.c:1877
#define ERR(fmt,...)
Definition: debug.h:109
FileStructW * _ILGetFileStructW(LPCITEMIDLIST pidl)
Definition: pidl.c:2336
#define MultiByteToWideChar
Definition: compat.h:100
WCHAR * LPWSTR
Definition: xmlstorage.h:184
BOOL HCR_GetClassNameW(REFIID riid, LPWSTR szDest, DWORD len)
Definition: classes.c:346

Referenced by CDesktopFolder::_GetSFFromPidl(), CDrivesFolder::GetDisplayNameOf(), CFSFolder::GetDisplayNameOf(), RenderHDROP(), and CDrivesFolder::SetNameOf().

◆ ILGetDisplayNameExW()

BOOL ILGetDisplayNameExW ( LPSHELLFOLDER  psf,
LPCITEMIDLIST  pidl,
LPWSTR  path,
DWORD  type 
)

Definition at line 91 of file pidl.c.

92 {
93  LPSHELLFOLDER psfParent, lsf = psf;
95  LPCITEMIDLIST pidllast;
96  STRRET strret;
97  DWORD flag;
98 
99  TRACE("%p %p %p %x\n", psf, pidl, path, type);
100 
101  if (!pidl || !path)
102  return FALSE;
103 
104  if (!lsf)
105  {
106  ret = SHGetDesktopFolder(&lsf);
107  if (FAILED(ret))
108  return FALSE;
109  }
110 
111  switch (type)
112  {
113  case ILGDN_FORPARSING:
114  flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
115  break;
116  case ILGDN_NORMAL:
117  flag = SHGDN_NORMAL;
118  break;
119  case ILGDN_INFOLDER:
120  flag = SHGDN_INFOLDER;
121  break;
122  default:
123  FIXME("Unknown type parameter = %x\n", type);
124  flag = SHGDN_FORPARSING | SHGDN_FORADDRESSBAR;
125  break;
126  }
127 
128  if (!*(const WORD*)pidl || type == ILGDN_FORPARSING)
129  {
130  ret = IShellFolder_GetDisplayNameOf(lsf, pidl, flag, &strret);
131  if (SUCCEEDED(ret))
132  {
133  if(!StrRetToStrNW(path, MAX_PATH, &strret, pidl))
134  ret = E_FAIL;
135  }
136  }
137  else
138  {
139  ret = SHBindToParent(pidl, &IID_IShellFolder, (LPVOID*)&psfParent, &pidllast);
140  if (SUCCEEDED(ret))
141  {
142  ret = IShellFolder_GetDisplayNameOf(psfParent, pidllast, flag, &strret);
143  if (SUCCEEDED(ret))
144  {
145  if(!StrRetToStrNW(path, MAX_PATH, &strret, pidllast))
146  ret = E_FAIL;
147  }
148  IShellFolder_Release(psfParent);
149  }
150  }
151 
152  TRACE("%p %p %s\n", psf, pidl, debugstr_w(path));
153 
154  if (!psf)
155  IShellFolder_Release(lsf);
156  return SUCCEEDED(ret);
157 }
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
#define NO_ERROR
Definition: dderror.h:5
#define E_FAIL
Definition: ddrawi.h:102
#define ILGDN_FORPARSING
Definition: undocshell.h:68
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110
#define ILGDN_NORMAL
Definition: undocshell.h:69
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
LONG HRESULT
Definition: typedefs.h:77
#define MAX_PATH
Definition: compat.h:26
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
int ret
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
Definition: glfuncs.h:52
#define ILGDN_INFOLDER
Definition: undocshell.h:70
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
Definition: pidl.c:1323
BOOL WINAPI StrRetToStrNW(LPWSTR dest, DWORD len, LPSTRRET src, const ITEMIDLIST *pidl)
Definition: shellstring.c:84
#define SUCCEEDED(hr)
Definition: intsafe.h:57

Referenced by CFSExtractIcon_CreateInstance(), FM_InitMenuPopup(), CFolder::get_Title(), getIconLocationForDrive(), getIconLocationForFolder(), ILGetDisplayName(), ILGetDisplayNameEx(), ILGetDisplayNameExA(), IShellLink_ConstructFromFile(), and SH_ShowDriveProperties().

◆ pcheck()

BOOL pcheck ( LPCITEMIDLIST  pidl)

Definition at line 336 of file debughlp.cpp.

337 {
338  DWORD type;
339  LPCITEMIDLIST pidltemp = pidl;
340 
341  while( pidltemp && pidltemp->mkid.cb )
342  {
343  LPPIDLDATA pidlData = _dbg_ILGetDataPointer(pidltemp);
344 
345  if (pidlData)
346  {
347  type = pidlData->type;
348  switch( type )
349  {
350  case PT_CPLAPPLET:
351  case PT_GUID:
352  case PT_SHELLEXT:
353  case PT_DRIVE:
354  case PT_DRIVE1:
355  case PT_DRIVE2:
356  case PT_DRIVE3:
357  case PT_FOLDER:
358  case PT_VALUE:
359  case PT_VALUEW:
360  case PT_FOLDER1:
361  case PT_WORKGRP:
362  case PT_COMP:
363  case PT_NETPROVIDER:
364  case PT_NETWORK:
365  case PT_IESPECIAL1:
366  case PT_YAGUID:
367  case PT_IESPECIAL2:
368  case PT_SHARE:
369  break;
370  default:
371  ERR("unknown IDLIST %p [%p] size=%u type=%x\n",
372  pidl, pidltemp, pidltemp->mkid.cb,type );
373  dump_pidl_hex( pidltemp );
374  return FALSE;
375  }
376  pidltemp = _dbg_ILGetNext(pidltemp);
377  }
378  else
379  {
380  return FALSE;
381  }
382  }
383  return TRUE;
384 }
static LPPIDLDATA _dbg_ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: debughlp.cpp:48
#define TRUE
Definition: types.h:120
#define PT_DRIVE3
Definition: pidl.h:90
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
#define PT_WORKGRP
Definition: pidl.h:98
#define PT_IESPECIAL2
Definition: pidl.h:104
#define PT_NETWORK
Definition: pidl.h:101
#define PT_DRIVE2
Definition: pidl.h:89
#define PT_DRIVE
Definition: pidl.h:88
#define PT_YAGUID
unsigned long DWORD
Definition: ntddk_ex.h:95
static LPITEMIDLIST _dbg_ILGetNext(LPCITEMIDLIST pidl)
Definition: debughlp.cpp:26
#define PT_FOLDER1
Definition: pidl.h:93
#define PT_IESPECIAL1
Definition: pidl.h:102
#define ERR(fmt,...)
Definition: debug.h:109
#define PT_COMP
Definition: pidl.h:99
#define PT_DRIVE1
Definition: pidl.h:92
#define PT_VALUE
Definition: pidl.h:95
#define PT_NETPROVIDER
Definition: pidl.h:100
#define PT_FOLDER
Definition: pidl.h:94
#define PT_SHARE
Definition: pidl.h:105
#define PT_CPLAPPLET
Definition: pidl.h:86
#define PT_GUID
#define PT_VALUEW
Definition: pidl.h:96
#define PT_SHELLEXT
static void dump_pidl_hex(LPCITEMIDLIST pidl)
Definition: debughlp.cpp:312

Referenced by _ILCreateCPanelApplet(), ILFindChild(), ILIsEqual(), ILLoadFromStream(), and pdump().

◆ pdump()

void pdump ( LPCITEMIDLIST  pidl)

Definition at line 248 of file debughlp.cpp.

249 {
250  LPCITEMIDLIST pidltemp = pidl;
251 
252  if (!TRACE_ON(pidl)) return;
253 
254  if (! pidltemp)
255  {
256  MESSAGE ("-------- pidl=NULL (Desktop)\n");
257  }
258  else
259  {
260  MESSAGE ("-------- pidl=%p\n", pidl);
261  if (pidltemp->mkid.cb)
262  {
263  do
264  {
265  if (_ILIsUnicode(pidltemp))
266  {
267  DWORD dwAttrib = 0;
269  DWORD type = pData ? pData->type : 0;
270  LPWSTR szLongName = _dbg_ILGetTextPointerW(pidltemp);
271  LPWSTR szShortName = _dbg_ILGetSTextPointerW(pidltemp);
272  char szName[MAX_PATH];
273 
275  if ( pData && (PT_FOLDER == type || PT_VALUE == type) )
276  dwAttrib = pData->u.file.uFileAttribs;
277 
278  MESSAGE ("[%p] size=%04u type=%x attr=0x%08x name=%s (%s,%s)\n",
279  pidltemp, pidltemp->mkid.cb, type, dwAttrib,
280  debugstr_a(szName), debugstr_w(szLongName), debugstr_w(szShortName));
281  }
282  else
283  {
284  DWORD dwAttrib = 0;
286  DWORD type = pData ? pData->type : 0;
287  LPSTR szLongName = _dbg_ILGetTextPointer(pidltemp);
288  LPSTR szShortName = _dbg_ILGetSTextPointer(pidltemp);
289  char szName[MAX_PATH];
290 
292  if ( pData && (PT_FOLDER == type || PT_VALUE == type) )
293  dwAttrib = pData->u.file.uFileAttribs;
294 
295  MESSAGE ("[%p] size=%04u type=%x attr=0x%08x name=%s (%s,%s)\n",
296  pidltemp, pidltemp->mkid.cb, type, dwAttrib,
297  debugstr_a(szName), debugstr_a(szLongName), debugstr_a(szShortName));
298  }
299 
300  pidltemp = _dbg_ILGetNext(pidltemp);
301 
302  } while (pidltemp && pidltemp->mkid.cb);
303  }
304  else
305  {
306  MESSAGE ("empty pidl (Desktop)\n");
307  }
308  pcheck(pidl);
309  }
310 }
static LPPIDLDATA _dbg_ILGetDataPointer(LPCITEMIDLIST pidl)
Definition: debughlp.cpp:48
#define MESSAGE
Definition: options.h:86
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
Definition: shtypes.idl:42
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
char * LPSTR
Definition: xmlstorage.h:182
static LPWSTR _dbg_ILGetTextPointerW(LPCITEMIDLIST pidl)
Definition: debughlp.cpp:94
#define debugstr_w
Definition: kernel32.h:32
BOOL _ILIsUnicode(LPCITEMIDLIST pidl)
Definition: pidl.c:1868
static void _dbg_ILSimpleGetText(LPCITEMIDLIST pidl, LPSTR szOut, UINT uOutSize)
Definition: debughlp.cpp:207
#define debugstr_a
Definition: kernel32.h:31
#define MAX_PATH
Definition: compat.h:26
unsigned long DWORD
Definition: ntddk_ex.h:95
static LPITEMIDLIST _dbg_ILGetNext(LPCITEMIDLIST pidl)
Definition: debughlp.cpp:26
static LPSTR _dbg_ILGetTextPointer(LPCITEMIDLIST pidl)
Definition: debughlp.cpp:56
BOOL pcheck(LPCITEMIDLIST pidl)
Definition: debughlp.cpp:336
static LPSTR _dbg_ILGetSTextPointer(LPCITEMIDLIST pidl)
Definition: debughlp.cpp:139
#define PT_VALUE
Definition: pidl.h:95
static const WCHAR szName[]
Definition: msipriv.h:1194
static LPWSTR _dbg_ILGetSTextPointerW(LPCITEMIDLIST pidl)
Definition: debughlp.cpp:161
#define PT_FOLDER
Definition: pidl.h:94
WCHAR * LPWSTR
Definition: xmlstorage.h:184
TW_UINT32 TW_UINT16 TW_UINT16 TW_MEMREF pData
Definition: twain.h:1827
#define TRACE_ON(x)
Definition: compat.h:65

Referenced by BrsFolder_OnCommand(), CIDLData_CreateFromIDArray(), FileMenu_InsertUsingPidl(), CControlPanelFolder::GetAttributesOf(), CDesktopFolder::GetAttributesOf(), CFSFolder::GetAttributesOf(), CPrinterFolder::GetDisplayNameOf(), CDrivesFolder::GetDisplayNameOf(), CDesktopFolder::GetDisplayNameOf(), ILAppendID(), ILClone(), ILCloneFirst(), ILCombine(), ILFindChild(), ILGlobalClone(), ILIsEqual(), CFSFolder::InitializeEx(), CShellLink::Load(), SHBindToParent(), SHGetDataFromIDListA(), SHGetDataFromIDListW(), SHGetPathFromIDListW(), SHLogILFromFSIL(), and SHMapPIDLToSystemImageListIndex().