ReactOS 0.4.15-dev-6680-g8c76870
shell32_main.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define ARRAY_SIZE(a)   (sizeof(a) / sizeof(*(a)))
 
#define INVALID_INDEX   -1
 
#define InitFormatEtc(fe, cf, med)
 
#define KeyStateToDropEffect(kst)
 
#define ASK_DELETE_FILE   1
 
#define ASK_DELETE_FOLDER   2
 
#define ASK_DELETE_MULTIPLE_ITEM   3
 
#define ASK_CREATE_FOLDER   4
 
#define ASK_OVERWRITE_FILE   5
 
#define ASK_DELETE_SELECTED   6
 
#define ASK_TRASH_FILE   7
 
#define ASK_TRASH_FOLDER   8
 
#define ASK_TRASH_MULTIPLE_ITEM   9
 
#define ASK_CANT_TRASH_ITEM   10
 
#define ASK_OVERWRITE_FOLDER   11
 
#define __SHFreeAndNil(ptr)
 
#define HICON_16(h32)   (LOWORD(h32))
 
#define HICON_32(h16)   ((HICON)(ULONG_PTR)(h16))
 
#define HINSTANCE_32(h16)   ((HINSTANCE)(ULONG_PTR)(h16))
 
#define HINSTANCE_16(h32)   (LOWORD(h32))
 

Functions

BOOL WINAPI Shell_GetImageLists (HIMAGELIST *lpBigList, HIMAGELIST *lpSmallList)
 
BOOL SIC_Initialize (void)
 
void SIC_Destroy (void) DECLSPEC_HIDDEN
 
BOOL PidlToSicIndex (IShellFolder *sh, LPCITEMIDLIST pidl, BOOL bBigIcon, UINT uFlags, int *pIndex) DECLSPEC_HIDDEN
 
INT SIC_GetIconIndex (LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags) DECLSPEC_HIDDEN
 
BOOL HCR_MapTypeToValueW (LPCWSTR szExtension, LPWSTR szFileType, LONG len, BOOL bPrependDot) DECLSPEC_HIDDEN
 
BOOL HCR_GetDefaultVerbW (HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len) DECLSPEC_HIDDEN
 
BOOL HCR_GetExecuteCommandW (HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len) DECLSPEC_HIDDEN
 
BOOL HCR_GetIconW (LPCWSTR szClass, LPWSTR szDest, LPCWSTR szName, DWORD len, int *picon_idx)
 
BOOL HCR_GetClassNameW (REFIID riid, LPWSTR szDest, DWORD len) DECLSPEC_HIDDEN
 
BOOL HCR_MapTypeToValueA (LPCSTR szExtension, LPSTR szFileType, LONG len, BOOL bPrependDot) DECLSPEC_HIDDEN
 
BOOL HCR_GetIconA (LPCSTR szClass, LPSTR szDest, LPCSTR sName, DWORD len, int *picon_idx)
 
BOOL HCR_GetClassNameA (REFIID riid, LPSTR szDest, DWORD len) DECLSPEC_HIDDEN
 
BOOL HCR_GetFolderAttributes (LPCITEMIDLIST pidlFolder, LPDWORD dwAttributes) DECLSPEC_HIDDEN
 
DWORD WINAPI ParseFieldA (LPCSTR src, DWORD nField, LPSTR dst, DWORD len) DECLSPEC_HIDDEN
 
DWORD WINAPI ParseFieldW (LPCWSTR src, DWORD nField, LPWSTR dst, DWORD len) DECLSPEC_HIDDEN
 
HRESULT IDataObject_Constructor (HWND hwndOwner, LPCITEMIDLIST pMyPidl, PCUITEMID_CHILD_ARRAY apidl, UINT cidl, BOOL bExtendedObject, IDataObject **dataObject)
 
HRESULT IEnumFORMATETC_Constructor (UINT cfmt, const FORMATETC afmt[], IEnumFORMATETC **enumerator)
 
LPCLASSFACTORY IClassFactory_Constructor (REFCLSID)
 
IContextMenu2ISvItemCm_Constructor (LPSHELLFOLDER pSFParent, LPCITEMIDLIST pidl, const LPCITEMIDLIST *aPidls, UINT uItemCount)
 
HRESULT WINAPI INewItem_Constructor (IUnknown *pUnkOuter, REFIID riif, LPVOID *ppv)
 
IContextMenu2ISvStaticItemCm_Constructor (LPSHELLFOLDER pSFParent, LPCITEMIDLIST pidl, LPCITEMIDLIST *apidl, UINT cidl, HKEY hKey)
 
IContextMenu2ISvBgCm_Constructor (LPSHELLFOLDER pSFParent, BOOL bDesktop)
 
HRESULT WINAPI CDefViewDual_Constructor (REFIID riid, LPVOID *ppvOut)
 
HRESULT WINAPI CShellDispatch_Constructor (REFIID riid, LPVOID *ppvOut)
 
HRESULT WINAPI IShellLink_ConstructFromPath (WCHAR *path, REFIID riid, LPVOID *ppv)
 
HRESULT WINAPI IShellLink_ConstructFromFile (IShellFolder *psf, LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv)
 
HRESULT WINAPI IFileSystemBindData_Constructor (const WIN32_FIND_DATAW *pfd, LPBC *ppV)
 
HRESULT WINAPI CPanel_ExtractIconA (LPITEMIDLIST pidl, LPCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize) DECLSPEC_HIDDEN
 
HRESULT WINAPI CPanel_ExtractIconW (LPITEMIDLIST pidl, LPCWSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize) DECLSPEC_HIDDEN
 
HRESULT CRegFolder_CreateInstance (const GUID *pGuid, LPCITEMIDLIST pidlRoot, LPCWSTR lpszPath, LPCWSTR lpszEnumKeyName, REFIID riid, void **ppv)
 
HGLOBAL RenderHDROP (LPITEMIDLIST pidlRoot, LPITEMIDLIST *apidl, UINT cidl) DECLSPEC_HIDDEN
 
HGLOBAL RenderSHELLIDLIST (LPITEMIDLIST pidlRoot, LPITEMIDLIST *apidl, UINT cidl) DECLSPEC_HIDDEN
 
HGLOBAL RenderFILENAMEA (LPITEMIDLIST pidlRoot, LPITEMIDLIST *apidl, UINT cidl) DECLSPEC_HIDDEN
 
HGLOBAL RenderFILENAMEW (LPITEMIDLIST pidlRoot, LPITEMIDLIST *apidl, UINT cidl) DECLSPEC_HIDDEN
 
void InitChangeNotifications (void) DECLSPEC_HIDDEN
 
void FreeChangeNotifications (void) DECLSPEC_HIDDEN
 
BOOL SHELL_DeleteDirectoryW (HWND hwnd, LPCWSTR pwszDir, BOOL bShowUI)
 
BOOL SHELL_ConfirmYesNoW (HWND hWnd, int nKindOfDialog, LPCWSTR szDir)
 
void WINAPI _InsertMenuItemW (HMENU hmenu, UINT indexMenu, BOOL fByPosition, UINT wID, UINT fType, LPCWSTR dwTypeData, UINT fState)
 
static __inline BOOL SHELL_OsIsUnicode (void)
 
static __inline void __SHCloneStrA (char **target, const char *source)
 
static __inline void __SHCloneStrWtoA (char **target, const WCHAR *source)
 
static __inline void __SHCloneStrW (WCHAR **target, const WCHAR *source)
 
static __inline LPWSTR __SHCloneStrAtoW (WCHAR **target, const char *source)
 
BOOL UNIXFS_is_rooted_at_desktop (void) DECLSPEC_HIDDEN
 
HRESULT SHELL_RegisterShellFolders (void) DECLSPEC_HIDDEN
 
BOOL SHELL_IsShortcut (LPCITEMIDLIST) DECLSPEC_HIDDEN
 
INT_PTR CALLBACK SH_FileGeneralDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
INT_PTR CALLBACK SH_FileVersionDlgProc (HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
HPROPSHEETPAGE SH_CreatePropertySheetPage (WORD wDialogId, DLGPROC pfnDlgProc, LPARAM lParam, LPCWSTR pwszTitle)
 
BOOL SH_ShowDriveProperties (WCHAR *drive, IDataObject *pDataObj)
 
BOOL SH_ShowRecycleBinProperties (WCHAR sDrive)
 
BOOL SH_ShowPropertiesDialog (LPCWSTR pwszPath, IDataObject *pDataObj)
 
LPWSTR SH_FormatFileSizeWithBytes (PULARGE_INTEGER lpQwSize, LPWSTR pszBuf, UINT cchBuf)
 
HRESULT WINAPI DoRegisterServer (void)
 
HRESULT WINAPI DoUnregisterServer (void)
 

Variables

HMODULE huser32 DECLSPEC_HIDDEN
 

Macro Definition Documentation

◆ __SHFreeAndNil

#define __SHFreeAndNil (   ptr)
Value:
{\
SHFree(*ptr); \
*ptr = NULL; \
};
#define NULL
Definition: types.h:112
static PVOID ptr
Definition: dispmode.c:27

Definition at line 136 of file shell32_main.h.

◆ ARRAY_SIZE

#define ARRAY_SIZE (   a)    (sizeof(a) / sizeof(*(a)))

Definition at line 29 of file shell32_main.h.

◆ ASK_CANT_TRASH_ITEM

#define ASK_CANT_TRASH_ITEM   10

Definition at line 121 of file shell32_main.h.

◆ ASK_CREATE_FOLDER

#define ASK_CREATE_FOLDER   4

Definition at line 115 of file shell32_main.h.

◆ ASK_DELETE_FILE

#define ASK_DELETE_FILE   1

Definition at line 112 of file shell32_main.h.

◆ ASK_DELETE_FOLDER

#define ASK_DELETE_FOLDER   2

Definition at line 113 of file shell32_main.h.

◆ ASK_DELETE_MULTIPLE_ITEM

#define ASK_DELETE_MULTIPLE_ITEM   3

Definition at line 114 of file shell32_main.h.

◆ ASK_DELETE_SELECTED

#define ASK_DELETE_SELECTED   6

Definition at line 117 of file shell32_main.h.

◆ ASK_OVERWRITE_FILE

#define ASK_OVERWRITE_FILE   5

Definition at line 116 of file shell32_main.h.

◆ ASK_OVERWRITE_FOLDER

#define ASK_OVERWRITE_FOLDER   11

Definition at line 122 of file shell32_main.h.

◆ ASK_TRASH_FILE

#define ASK_TRASH_FILE   7

Definition at line 118 of file shell32_main.h.

◆ ASK_TRASH_FOLDER

#define ASK_TRASH_FOLDER   8

Definition at line 119 of file shell32_main.h.

◆ ASK_TRASH_MULTIPLE_ITEM

#define ASK_TRASH_MULTIPLE_ITEM   9

Definition at line 120 of file shell32_main.h.

◆ HICON_16

#define HICON_16 (   h32)    (LOWORD(h32))

Definition at line 169 of file shell32_main.h.

◆ HICON_32

#define HICON_32 (   h16)    ((HICON)(ULONG_PTR)(h16))

Definition at line 170 of file shell32_main.h.

◆ HINSTANCE_16

#define HINSTANCE_16 (   h32)    (LOWORD(h32))

Definition at line 172 of file shell32_main.h.

◆ HINSTANCE_32

#define HINSTANCE_32 (   h16)    ((HINSTANCE)(ULONG_PTR)(h16))

Definition at line 171 of file shell32_main.h.

◆ InitFormatEtc

#define InitFormatEtc (   fe,
  cf,
  med 
)
Value:
{\
(fe).cfFormat=cf;\
(fe).dwAspect=DVASPECT_CONTENT;\
(fe).ptd=NULL;\
(fe).tymed=med;\
(fe).lindex=-1;\
};
static DWORD tymed
Definition: url.c:174

Definition at line 86 of file shell32_main.h.

◆ INVALID_INDEX

#define INVALID_INDEX   -1

Definition at line 40 of file shell32_main.h.

◆ KeyStateToDropEffect

#define KeyStateToDropEffect (   kst)
Value:
((((kst)&(MK_CONTROL|MK_SHIFT))==(MK_CONTROL|MK_SHIFT)) ? DROPEFFECT_LINK :\
(((kst)&(MK_CONTROL)) ? DROPEFFECT_COPY :\
(((kst)&(MK_SHIFT)) ? DROPEFFECT_MOVE :\
DROPEFFECT_NONE)))
#define MK_SHIFT
Definition: winuser.h:2359
#define MK_CONTROL
Definition: winuser.h:2360

Definition at line 95 of file shell32_main.h.

Function Documentation

◆ __SHCloneStrA()

static __inline void __SHCloneStrA ( char **  target,
const char source 
)
static

Definition at line 141 of file shell32_main.h.

142{
143 *target = (char *)SHAlloc(strlen(source) + 1);
145}
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
LPVOID WINAPI SHAlloc(SIZE_T len)
Definition: shellole.c:304
GLenum target
Definition: glext.h:7315

◆ __SHCloneStrAtoW()

static __inline LPWSTR __SHCloneStrAtoW ( WCHAR **  target,
const char source 
)
static

Definition at line 160 of file shell32_main.h.

161{
162 int len = MultiByteToWideChar(CP_ACP, 0, source, -1, NULL, 0);
163 *target = (WCHAR *)SHAlloc(len * sizeof(WCHAR));
165 return *target;
166}
#define CP_ACP
Definition: compat.h:109
#define MultiByteToWideChar
Definition: compat.h:110
GLenum GLsizei len
Definition: glext.h:6722
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by FindExecutableA(), OpenAs_RunDLLA(), PathResolveA(), ShellExecuteExA(), and WOWShellExecute().

◆ __SHCloneStrW()

static __inline void __SHCloneStrW ( WCHAR **  target,
const WCHAR source 
)
static

Definition at line 154 of file shell32_main.h.

155{
156 *target = (WCHAR *)SHAlloc((lstrlenW(source) + 1) * sizeof(WCHAR) );
158}
#define lstrcpyW
Definition: compat.h:749
#define lstrlenW
Definition: compat.h:750

Referenced by ShellExecCmdLine().

◆ __SHCloneStrWtoA()

static __inline void __SHCloneStrWtoA ( char **  target,
const WCHAR source 
)
static

Definition at line 147 of file shell32_main.h.

148{
149 int len = WideCharToMultiByte(CP_ACP, 0, source, -1, NULL, 0, NULL, NULL);
150 *target = (char *)SHAlloc(len);
152}
#define WideCharToMultiByte
Definition: compat.h:111

Referenced by ShellExecute_ContextMenuVerb().

◆ _InsertMenuItemW()

void WINAPI _InsertMenuItemW ( HMENU  hmenu,
UINT  indexMenu,
BOOL  fByPosition,
UINT  wID,
UINT  fType,
LPCWSTR  dwTypeData,
UINT  fState 
)

Definition at line 418 of file shfldr_netconnect.cpp.

426{
427 MENUITEMINFOW mii;
428 WCHAR szText[100];
429
430 ZeroMemory(&mii, sizeof(mii));
431 mii.cbSize = sizeof(mii);
432 if (fType == MFT_SEPARATOR)
433 {
434 mii.fMask = MIIM_ID | MIIM_TYPE;
435 }
436 else if (fType == MFT_STRING)
437 {
439 if ((ULONG_PTR)HIWORD((ULONG_PTR)dwTypeData) == 0)
440 {
441 if (LoadStringW(netshell_hInstance, LOWORD((ULONG_PTR)dwTypeData), szText, sizeof(szText)/sizeof(WCHAR)))
442 {
443 szText[(sizeof(szText)/sizeof(WCHAR))-1] = 0;
444 mii.dwTypeData = szText;
445 }
446 else
447 {
448 return;
449 }
450 }
451 else
452 {
453 mii.dwTypeData = (LPWSTR) dwTypeData;
454 }
455 mii.fState = fState;
456 }
457
458 mii.wID = wID;
459 mii.fType = fType;
460 InsertMenuItemW( hmenu, indexMenu, fByPosition, &mii);
461}
HINSTANCE netshell_hInstance
Definition: netshell.cpp:12
#define LOWORD(l)
Definition: pedump.c:82
LPWSTR dwTypeData
Definition: winuser.h:3259
uint32_t ULONG_PTR
Definition: typedefs.h:65
#define HIWORD(l)
Definition: typedefs.h:247
static HMENU hmenu
Definition: win.c:66
#define ZeroMemory
Definition: winbase.h:1700
#define MIIM_ID
Definition: winuser.h:717
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define MFT_SEPARATOR
Definition: winuser.h:739
#define MIIM_STATE
Definition: winuser.h:716
#define MFT_STRING
Definition: winuser.h:741
#define MIIM_TYPE
Definition: winuser.h:720
BOOL WINAPI InsertMenuItemW(_In_ HMENU, _In_ UINT, _In_ BOOL, _In_ LPCMENUITEMINFOW)
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by CDesktopFolder::CallBack(), CDrivesFolder::CallBack(), CFSFolder::CallBack(), DrivesContextMenuCallback(), CNetConUiObject::QueryContextMenu(), CCPLItemMenu::QueryContextMenu(), and CRecycleBinItemContextMenu::QueryContextMenu().

◆ CDefViewDual_Constructor()

HRESULT WINAPI CDefViewDual_Constructor ( REFIID  riid,
LPVOID ppvOut 
)

Definition at line 139 of file CDefViewDual.cpp.

140{
141 return ShellObjectCreatorInit<CDefViewDual>(riid, ppvOut);
142}
REFIID riid
Definition: atlbase.h:39

Referenced by CDefView::GetItemObject().

◆ CPanel_ExtractIconA()

HRESULT WINAPI CPanel_ExtractIconA ( LPITEMIDLIST  pidl,
LPCSTR  pszFile,
UINT  nIconIndex,
HICON phiconLarge,
HICON phiconSmall,
UINT  nIconSize 
)

◆ CPanel_ExtractIconW()

HRESULT WINAPI CPanel_ExtractIconW ( LPITEMIDLIST  pidl,
LPCWSTR  pszFile,
UINT  nIconIndex,
HICON phiconLarge,
HICON phiconSmall,
UINT  nIconSize 
)

◆ CRegFolder_CreateInstance()

HRESULT CRegFolder_CreateInstance ( const GUID pGuid,
LPCITEMIDLIST  pidlRoot,
LPCWSTR  lpszPath,
LPCWSTR  lpszEnumKeyName,
REFIID  riid,
void **  ppv 
)

Definition at line 792 of file CRegFolder.cpp.

793{
794 return ShellObjectCreatorInit<CRegFolder>(pGuid, pidlRoot, lpszPath, lpszEnumKeyName, riid, ppv);
795}
REFIID LPVOID * ppv
Definition: atlbase.h:39

Referenced by CDesktopFolder::FinalConstruct(), CDrivesFolder::FinalConstruct(), and CControlPanelFolder::Initialize().

◆ CShellDispatch_Constructor()

HRESULT WINAPI CShellDispatch_Constructor ( REFIID  riid,
LPVOID ppvOut 
)

Definition at line 421 of file CShellDispatch.cpp.

422{
423 return ShellObjectCreatorInit<CShellDispatch>(riid, ppvOut);
424}

Referenced by CDefViewDual::get_Application(), and CFolder::Initialize().

◆ DoRegisterServer()

HRESULT WINAPI DoRegisterServer ( void  )

◆ DoUnregisterServer()

HRESULT WINAPI DoUnregisterServer ( void  )

◆ FreeChangeNotifications()

void FreeChangeNotifications ( void  )

Definition at line 52 of file changenotify.cpp.

53{
54 HWND hwndServer = GetNotificationServer(FALSE);
55 if (hwndServer)
58}
#define CN_UNREGISTER_PROCESS
static HWND GetNotificationServer(BOOL bCreate)
CRITICAL_SECTION SHELL32_ChangenotifyCS
#define FALSE
Definition: types.h:117
DWORD WINAPI GetCurrentProcessId(void)
Definition: proc.c:1158
void WINAPI DeleteCriticalSection(PCRITICAL_SECTION)
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)

◆ HCR_GetClassNameA()

BOOL HCR_GetClassNameA ( REFIID  riid,
LPSTR  szDest,
DWORD  len 
)

Definition at line 417 of file classes.c.

418{ HKEY hkey;
419 BOOL ret = FALSE;
420 DWORD buflen = len;
421#ifdef __REACTOS__
422 CHAR szName[100];
423 LPOLESTR pStr;
424#endif
425
426 szDest[0] = 0;
427
428#ifdef __REACTOS__
429 if (StringFromCLSID(riid, &pStr) == S_OK)
430 {
431 DWORD dwLen = buflen * sizeof(CHAR);
432 sprintf(szName, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\%S", pStr);
434 {
435 ret = TRUE;
436 }
437 CoTaskMemFree(pStr);
438 }
439 if (!ret && HCR_RegOpenClassIDKey(riid, &hkey))
440#else
441 if (HCR_RegOpenClassIDKey(riid, &hkey))
442#endif
443 {
444 if (!RegLoadMUIStringA(hkey,"LocalizedString",szDest,len,NULL,0,NULL) ||
445 !RegQueryValueExA(hkey,"",0,NULL,(LPBYTE)szDest,&len))
446 {
447 ret = TRUE;
448 }
449 RegCloseKey(hkey);
450 }
451
452 if (!ret || !szDest[0])
453 {
454 if(IsEqualIID(riid, &CLSID_ShellDesktop))
455 {
456 if (LoadStringA(shell32_hInstance, IDS_DESKTOP, szDest, buflen))
457 ret = TRUE;
458 }
459 else if (IsEqualIID(riid, &CLSID_MyComputer))
460 {
461 if(LoadStringA(shell32_hInstance, IDS_MYCOMPUTER, szDest, buflen))
462 ret = TRUE;
463 }
464#ifdef __REACTOS__
465 else if (IsEqualIID(riid, &CLSID_MyDocuments))
466 {
467 if(LoadStringA(shell32_hInstance, IDS_PERSONAL, szDest, buflen))
468 ret = TRUE;
469 }
470 else if (IsEqualIID(riid, &CLSID_RecycleBin))
471 {
473 ret = TRUE;
474 }
475 else if (IsEqualIID(riid, &CLSID_ControlPanel))
476 {
478 ret = TRUE;
479 }
481 {
483 ret = TRUE;
484 }
485#endif
486 }
487
488 TRACE("-- (%s)\n", szDest);
489
490 return ret;
491}
LONG WINAPI RegLoadMUIStringA(IN HKEY hKey, IN LPCSTR pszValue OPTIONAL, OUT LPSTR pszOutBuf, IN DWORD cbOutBuf, OUT LPDWORD pcbData OPTIONAL, IN DWORD Flags, IN LPCSTR pszDirectory OPTIONAL)
#define shell32_hInstance
#define CHAR(Char)
#define RegCloseKey(hKey)
Definition: registry.h:47
#define TRUE
Definition: types.h:120
#define IDS_PERSONAL
Definition: desktop.c:27
LSTATUS WINAPI RegGetValueA(HKEY hKey, LPCSTR pszSubKey, LPCSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
Definition: reg.c:2068
LONG WINAPI RegQueryValueExA(_In_ HKEY hkeyorg, _In_ LPCSTR name, _In_ LPDWORD reserved, _Out_opt_ LPDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ LPDWORD count)
Definition: reg.c:4024
HRESULT WINAPI StringFromCLSID(REFCLSID id, LPOLESTR *idstr)
Definition: compobj.c:2412
#define RRF_RT_REG_SZ
Definition: driver.c:575
const GUID CLSID_AdminFolderShortcut
unsigned int BOOL
Definition: ntddk_ex.h:94
unsigned long DWORD
Definition: ntddk_ex.h:95
VOID WINAPI CoTaskMemFree(LPVOID ptr)
Definition: ifs.c:442
#define S_OK
Definition: intsafe.h:52
#define sprintf(buf, format,...)
Definition: sprintf.c:55
static LPOLESTR
Definition: stg_prop.c:27
static const WCHAR szName[]
Definition: powrprof.c:45
#define IsEqualIID(riid1, riid2)
Definition: guiddef.h:95
BOOL HCR_RegOpenClassIDKey(REFIID riid, HKEY *hkey)
Definition: classes.c:227
#define IDS_DESKTOP
Definition: shresdef.h:73
#define IDS_MYCOMPUTER
Definition: shresdef.h:276
#define IDS_CONTROLPANEL
Definition: shresdef.h:141
#define IDS_ADMINISTRATIVETOOLS
Definition: shresdef.h:272
#define IDS_RECYCLEBIN_FOLDER_NAME
Definition: shresdef.h:267
#define TRACE(s)
Definition: solgame.cpp:4
unsigned char * LPBYTE
Definition: typedefs.h:53
int ret
#define HKEY_CURRENT_USER
Definition: winreg.h:11
int WINAPI LoadStringA(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPSTR lpBuffer, _In_ int cchBufferMax)
char CHAR
Definition: xmlstorage.h:175

Referenced by _ILSimpleGetText(), and shdebugstr_guid().

◆ HCR_GetClassNameW()

BOOL HCR_GetClassNameW ( REFIID  riid,
LPWSTR  szDest,
DWORD  len 
)

Definition at line 342 of file classes.c.

343{
344 HKEY hkey;
345 BOOL ret = FALSE;
346 DWORD buflen = len;
347#ifdef __REACTOS__
348 WCHAR szName[100];
349 LPOLESTR pStr;
350#endif
351
352 szDest[0] = 0;
353
354#ifdef __REACTOS__
355 if (StringFromCLSID(riid, &pStr) == S_OK)
356 {
357 DWORD dwLen = buflen * sizeof(WCHAR);
358 swprintf(szName, L"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\CLSID\\%s", pStr);
360 {
361 ret = TRUE;
362 }
363 CoTaskMemFree(pStr);
364 }
365 if (!ret && HCR_RegOpenClassIDKey(riid, &hkey))
366#else
367 if (HCR_RegOpenClassIDKey(riid, &hkey))
368#endif
369 {
370 if (!RegLoadMUIStringW(hkey, L"LocalizedString", szDest, len, NULL, 0, NULL) ||
371 !RegQueryValueExW(hkey, L"", 0, NULL, (LPBYTE)szDest, &len))
372 {
373 ret = TRUE;
374 }
375 RegCloseKey(hkey);
376 }
377
378 if (!ret || !szDest[0])
379 {
380 if(IsEqualIID(riid, &CLSID_ShellDesktop))
381 {
382 if (LoadStringW(shell32_hInstance, IDS_DESKTOP, szDest, buflen))
383 ret = TRUE;
384 }
385 else if (IsEqualIID(riid, &CLSID_MyComputer))
386 {
387 if(LoadStringW(shell32_hInstance, IDS_MYCOMPUTER, szDest, buflen))
388 ret = TRUE;
389 }
390#ifdef __REACTOS__
391 else if (IsEqualIID(riid, &CLSID_MyDocuments))
392 {
393 if(LoadStringW(shell32_hInstance, IDS_PERSONAL, szDest, buflen))
394 ret = TRUE;
395 }
396 else if (IsEqualIID(riid, &CLSID_RecycleBin))
397 {
399 ret = TRUE;
400 }
401 else if (IsEqualIID(riid, &CLSID_ControlPanel))
402 {
404 ret = TRUE;
405 }
407 {
409 ret = TRUE;
410 }
411#endif
412 }
413 TRACE("-- %s\n", debugstr_w(szDest));
414 return ret;
415}
LONG RegLoadMUIStringW(IN HKEY hKey, IN LPCWSTR pszValue OPTIONAL, OUT LPWSTR pszOutBuf, IN DWORD cbOutBuf, OUT LPDWORD pcbData OPTIONAL, IN DWORD Flags, IN LPCWSTR pszDirectory OPTIONAL)
Definition: muireg.c:53
LSTATUS WINAPI RegGetValueW(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData)
Definition: reg.c:1962
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4118
#define swprintf
Definition: precomp.h:40
#define debugstr_w
Definition: kernel32.h:32
#define L(x)
Definition: ntvdm.h:50

Referenced by _ILSimpleGetTextW(), and CRegFolder::GetDisplayNameOf().

◆ HCR_GetDefaultVerbW()

BOOL HCR_GetDefaultVerbW ( HKEY  hkeyClass,
LPCWSTR  szVerb,
LPWSTR  szDest,
DWORD  len 
)

Definition at line 130 of file classes.c.

131{
132 WCHAR sTemp[MAX_PATH];
133 LONG size;
134 HKEY hkey;
135
136 TRACE("%p %s %p\n", hkeyClass, debugstr_w(szVerb), szDest);
137
138 if (szVerb && *szVerb)
139 {
140 lstrcpynW(szDest, szVerb, len);
141 return TRUE;
142 }
143
144 size=len;
145 *szDest='\0';
146 if (!RegQueryValueW(hkeyClass, L"shell\\", szDest, &size) && *szDest)
147 {
148 /* The MSDN says to first try the default verb */
149 lstrcpyW(sTemp, L"shell\\");
150 lstrcatW(sTemp, szDest);
151 lstrcatW(sTemp, L"\\command");
152 if (!RegOpenKeyExW(hkeyClass, sTemp, 0, KEY_READ, &hkey))
153 {
154 RegCloseKey(hkey);
155 TRACE("default verb=%s\n", debugstr_w(szDest));
156 return TRUE;
157 }
158 }
159
160 /* then fallback to 'open' */
161 lstrcpyW(sTemp, L"shell\\open\\command");
162 if (!RegOpenKeyExW(hkeyClass, sTemp, 0, KEY_READ, &hkey))
163 {
164 RegCloseKey(hkey);
165 lstrcpynW(szDest, L"open", len);
166 TRACE("default verb=open\n");
167 return TRUE;
168 }
169
170 /* and then just use the first verb on Windows >= 2000 */
171#ifdef __REACTOS__
172 if (!RegOpenKeyExW(hkeyClass, L"shell", 0, KEY_READ, &hkey))
173 {
174 if (!RegEnumKeyW(hkey, 0, szDest, len) && *szDest)
175 {
176 TRACE("default verb=first verb=%s\n", debugstr_w(szDest));
177 RegCloseKey(hkey);
178 return TRUE;
179 }
180 RegCloseKey(hkey);
181 }
182#else
183 if (!RegEnumKeyW(hkeyClass, 0, szDest, len) && *szDest)
184 {
185 TRACE("default verb=first verb=%s\n", debugstr_w(szDest));
186 return TRUE;
187 }
188#endif
189
190 TRACE("no default verb!\n");
191 return FALSE;
192}
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3353
LSTATUS WINAPI RegQueryValueW(HKEY hkey, LPCWSTR name, LPWSTR data, LPLONG count)
Definition: reg.c:4256
LONG WINAPI RegEnumKeyW(HKEY hKey, DWORD dwIndex, LPWSTR lpName, DWORD cbName)
Definition: reg.c:2413
#define MAX_PATH
Definition: compat.h:34
#define lstrcpynW
Definition: compat.h:738
GLsizeiptr size
Definition: glext.h:5919
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
Definition: lstring.c:274
#define KEY_READ
Definition: nt_native.h:1023
long LONG
Definition: pedump.c:60

Referenced by HCR_GetExecuteCommandW(), and SHELL_FindExecutableByVerb().

◆ HCR_GetExecuteCommandW()

BOOL HCR_GetExecuteCommandW ( HKEY  hkeyClass,
LPCWSTR  szClass,
LPCWSTR  szVerb,
LPWSTR  szDest,
DWORD  len 
)

Definition at line 194 of file classes.c.

195{
196 WCHAR sTempVerb[MAX_PATH];
197 BOOL ret;
198
199 TRACE("%p %s %s %p\n", hkeyClass, debugstr_w(szClass), debugstr_w(szVerb), szDest);
200
201 if (szClass)
202 RegOpenKeyExW(HKEY_CLASSES_ROOT, szClass, 0, KEY_READ, &hkeyClass);
203 if (!hkeyClass)
204 return FALSE;
205 ret = FALSE;
206
207 if (HCR_GetDefaultVerbW(hkeyClass, szVerb, sTempVerb, sizeof(sTempVerb)/sizeof(sTempVerb[0])))
208 {
209 WCHAR sTemp[MAX_PATH];
210 lstrcpyW(sTemp, L"shell\\");
211 lstrcatW(sTemp, sTempVerb);
212 lstrcatW(sTemp, L"\\command");
213 ret = (ERROR_SUCCESS == SHGetValueW(hkeyClass, sTemp, NULL, NULL, szDest, &len));
214 }
215 if (szClass)
216 RegCloseKey(hkeyClass);
217
218 TRACE("-- %s\n", debugstr_w(szDest) );
219 return ret;
220}
#define ERROR_SUCCESS
Definition: deptool.c:10
DWORD WINAPI SHGetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
Definition: reg.c:1236
BOOL HCR_GetDefaultVerbW(HKEY hkeyClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len)
Definition: classes.c:130
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10

Referenced by SHELL_execute_class(), and SHELL_translate_idlist().

◆ HCR_GetFolderAttributes()

BOOL HCR_GetFolderAttributes ( LPCITEMIDLIST  pidlFolder,
LPDWORD  dwAttributes 
)

Definition at line 510 of file classes.c.

511{
512 HKEY hSFKey;
513 LPOLESTR pwszCLSID;
514 LONG lResult;
515 DWORD dwTemp, dwLen;
516 WCHAR wszShellFolderKey[] = L"CLSID\\{00021400-0000-0000-C000-000000000046}\\ShellFolder";
517
518 TRACE("(pidlFolder=%p, pdwAttributes=%p)\n", pidlFolder, pdwAttributes);
519
520 if (!_ILIsPidlSimple(pidlFolder)) {
521 static BOOL firstHit = TRUE;
522 if (firstHit) {
523 ERR("should be called for simple PIDL's only!\n");
524 firstHit = FALSE;
525 }
526 return FALSE;
527 }
528
529 if (!_ILIsDesktop(pidlFolder)) {
530 if (FAILED(StringFromCLSID(_ILGetGUIDPointer(pidlFolder), &pwszCLSID))) return FALSE;
531 memcpy(&wszShellFolderKey[6], pwszCLSID, 38 * sizeof(WCHAR));
532 CoTaskMemFree(pwszCLSID);
533 }
534
535 lResult = RegOpenKeyExW(HKEY_CLASSES_ROOT, wszShellFolderKey, 0, KEY_READ, &hSFKey);
536#ifdef __REACTOS__
537 if (lResult != ERROR_SUCCESS)
538 {
539 ERR("Cannot open key: %ls\n", wszShellFolderKey);
540 return FALSE;
541 }
542#else
543 if (lResult != ERROR_SUCCESS) return FALSE;
544#endif
545
546 dwLen = sizeof(DWORD);
547 lResult = RegQueryValueExW(hSFKey, L"CallForAttributes", 0, NULL, (LPBYTE)&dwTemp, &dwLen);
548 if ((lResult == ERROR_SUCCESS) && (dwTemp & *pdwAttributes)) {
549 LPSHELLFOLDER psfDesktop, psfFolder;
550 HRESULT hr;
551
552 RegCloseKey(hSFKey);
553 hr = SHGetDesktopFolder(&psfDesktop);
554 if (SUCCEEDED(hr)) {
555 hr = IShellFolder_BindToObject(psfDesktop, pidlFolder, NULL, &IID_IShellFolder,
556 (LPVOID*)&psfFolder);
557 if (SUCCEEDED(hr)) {
558 hr = IShellFolder_GetAttributesOf(psfFolder, 0, NULL, pdwAttributes);
559 IShellFolder_Release(psfFolder);
560 }
561 IShellFolder_Release(psfDesktop);
562 }
563 if (FAILED(hr)) return FALSE;
564 } else {
565 lResult = RegQueryValueExW(hSFKey, L"Attributes", 0, NULL, (LPBYTE)&dwTemp, &dwLen);
566 RegCloseKey(hSFKey);
567 if (lResult == ERROR_SUCCESS) {
568 *pdwAttributes &= dwTemp;
569 } else {
570 return FALSE;
571 }
572 }
573
574 TRACE("-- *pdwAttributes == 0x%08x\n", *pdwAttributes);
575
576 return TRUE;
577}
BOOL _ILIsDesktop(LPCITEMIDLIST pidl)
Definition: CBandSite.h:24
HRESULT WINAPI SHGetDesktopFolder(IShellFolder **psf)
#define ERR(fmt,...)
Definition: debug.h:110
BOOL WINAPI _ILIsPidlSimple(LPCITEMIDLIST pidl)
#define SUCCEEDED(hr)
Definition: intsafe.h:50
#define FAILED(hr)
Definition: intsafe.h:51
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define DWORD
Definition: nt_native.h:44
IID * _ILGetGUIDPointer(LPCITEMIDLIST pidl)
Definition: pidl.c:2329
HRESULT hr
Definition: shlfolder.c:183

Referenced by CRegFolder::GetGuidItemAttributes().

◆ HCR_GetIconA()

BOOL HCR_GetIconA ( LPCSTR  szClass,
LPSTR  szDest,
LPCSTR  sName,
DWORD  len,
int picon_idx 
)

Definition at line 313 of file classes.c.

314{
315 HKEY hkey;
316 char sTemp[MAX_PATH];
317 BOOL ret = FALSE;
318
319 TRACE("%s\n",szClass );
320
321 sprintf(sTemp, "%s\\DefaultIcon",szClass);
322
323 if (!RegOpenKeyExA(HKEY_CLASSES_ROOT, sTemp, 0, KEY_READ, &hkey))
324 {
325 ret = HCR_RegGetIconA(hkey, szDest, szName, len, picon_idx);
326 RegCloseKey(hkey);
327 }
328
329 if (ret)
330 TRACE("-- %s %i\n", szDest, *picon_idx);
331 else
332 TRACE("-- not found\n");
333
334 return ret;
335}
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
Definition: reg.c:3318
static BOOL HCR_RegGetIconA(HKEY hkey, LPSTR szDest, LPCSTR szName, DWORD len, int *picon_idx)
Definition: classes.c:264

◆ HCR_GetIconW()

BOOL HCR_GetIconW ( LPCWSTR  szClass,
LPWSTR  szDest,
LPCWSTR  szName,
DWORD  len,
int picon_idx 
)

Definition at line 288 of file classes.c.

289{
290 HKEY hkey;
291 WCHAR sTemp[MAX_PATH];
292 BOOL ret = FALSE;
293
294 TRACE("%s\n",debugstr_w(szClass) );
295
296 lstrcpynW(sTemp, szClass, MAX_PATH);
297 lstrcatW(sTemp, L"\\DefaultIcon");
298
299 if (!RegOpenKeyExW(HKEY_CLASSES_ROOT, sTemp, 0, KEY_READ, &hkey))
300 {
301 ret = HCR_RegGetIconW(hkey, szDest, szName, len, picon_idx);
302 RegCloseKey(hkey);
303 }
304
305 if(ret)
306 TRACE("-- %s %i\n", debugstr_w(szDest), *picon_idx);
307 else
308 TRACE("-- not found\n");
309
310 return ret;
311}
static BOOL HCR_RegGetIconW(HKEY hkey, LPWSTR szDest, LPCWSTR szName, DWORD len, int *picon_idx)
Definition: classes.c:240

Referenced by CDrivesExtractIcon_CreateInstance(), CGuidItemExtractIcon_CreateInstance(), getDefaultIconLocation(), getIconLocationForFolder(), and SHGetFileInfoW().

◆ HCR_MapTypeToValueA()

BOOL HCR_MapTypeToValueA ( LPCSTR  szExtension,
LPSTR  szFileType,
LONG  len,
BOOL  bPrependDot 
)

Definition at line 88 of file classes.c.

89{
90 HKEY hkey;
91 char szTemp[MAX_EXTENSION_LENGTH + 2];
92
93 TRACE("%s %p\n", szExtension, szFileType);
94
95 /* added because we do not want to have double dots */
96 if (szExtension[0] == '.')
97 bPrependDot = FALSE;
98
99 if (bPrependDot)
100 szTemp[0] = '.';
101
102 lstrcpynA(szTemp + (bPrependDot?1:0), szExtension, MAX_EXTENSION_LENGTH);
103
104 if (RegOpenKeyExA(HKEY_CLASSES_ROOT, szTemp, 0, KEY_READ, &hkey))
105 {
106 return FALSE;
107 }
108
109#ifdef __REACTOS__
110 if (!RegLoadMUIStringA(hkey, "FriendlyTypeName", szFileType, len, NULL, 0, NULL))
111 {
112 RegCloseKey(hkey);
113 return TRUE;
114 }
115#endif
116
117 if (RegQueryValueA(hkey, NULL, szFileType, &len))
118 {
119 RegCloseKey(hkey);
120 return FALSE;
121 }
122
123 RegCloseKey(hkey);
124
125 TRACE("--UE;\n} %s\n", szFileType);
126
127 return TRUE;
128}
LSTATUS WINAPI RegQueryValueA(HKEY hkey, LPCSTR name, LPSTR data, LPLONG count)
Definition: reg.c:4227
#define lstrcpynA
Definition: compat.h:751
#define MAX_EXTENSION_LENGTH
Definition: classes.c:44

Referenced by _ILGetFileType(), and SHELL_IsShortcut().

◆ HCR_MapTypeToValueW()

BOOL HCR_MapTypeToValueW ( LPCWSTR  szExtension,
LPWSTR  szFileType,
LONG  len,
BOOL  bPrependDot 
)

Definition at line 46 of file classes.c.

47{
48 HKEY hkey;
49 WCHAR szTemp[MAX_EXTENSION_LENGTH + 2];
50
51 TRACE("%s %p\n", debugstr_w(szExtension), szFileType);
52
53 /* added because we do not want to have double dots */
54 if (szExtension[0] == '.')
55 bPrependDot = FALSE;
56
57 if (bPrependDot)
58 szTemp[0] = '.';
59
60 lstrcpynW(szTemp + (bPrependDot?1:0), szExtension, MAX_EXTENSION_LENGTH);
61
62 if (RegOpenKeyExW(HKEY_CLASSES_ROOT, szTemp, 0, KEY_READ, &hkey))
63 {
64 return FALSE;
65 }
66
67#ifdef __REACTOS__
68 if (!RegLoadMUIStringW(hkey, L"FriendlyTypeName", szFileType, len, NULL, 0, NULL))
69 {
70 RegCloseKey(hkey);
71 return TRUE;
72 }
73#endif
74
75 if (RegQueryValueW(hkey, NULL, szFileType, &len))
76 {
77 RegCloseKey(hkey);
78 return FALSE;
79 }
80
81 RegCloseKey(hkey);
82
83 TRACE("--UE;\n} %s\n", debugstr_w(szFileType));
84
85 return TRUE;
86}

Referenced by SHGetFileInfoW().

◆ IClassFactory_Constructor()

LPCLASSFACTORY IClassFactory_Constructor ( REFCLSID  )

◆ IDataObject_Constructor()

HRESULT IDataObject_Constructor ( HWND  hwndOwner,
LPCITEMIDLIST  pMyPidl,
PCUITEMID_CHILD_ARRAY  apidl,
UINT  cidl,
BOOL  bExtendedObject,
IDataObject **  dataObject 
)

◆ IEnumFORMATETC_Constructor()

HRESULT IEnumFORMATETC_Constructor ( UINT  cfmt,
const FORMATETC  afmt[],
IEnumFORMATETC **  enumerator 
)

Definition at line 121 of file CIDLDataObj.cpp.

122{
123 return ShellObjectCreatorInit<IEnumFORMATETCImpl>(cfmt, afmt, IID_PPV_ARG(IEnumFORMATETC, ppFormat));
124}
#define IID_PPV_ARG(Itype, ppType)

Referenced by IEnumFORMATETCImpl::Clone(), CIDLDataObj::EnumFormatEtc(), and SHCreateStdEnumFmtEtc().

◆ IFileSystemBindData_Constructor()

HRESULT WINAPI IFileSystemBindData_Constructor ( const WIN32_FIND_DATAW pfd,
LPBC ppV 
)

Definition at line 52 of file CFileSysBindData.cpp.

53{
54 CComPtr<IFileSystemBindData> fileSystemBindData;
55 CComPtr<IBindCtx> bindContext;
56 BIND_OPTS bindOpts;
57 HRESULT hResult;
58
59 TRACE("%p, %p\n", pfd, ppV);
60
61 if (ppV == NULL)
62 return E_INVALIDARG;
63
64 *ppV = NULL;
65
66 hResult = CFileSysBindData::_CreatorClass::CreateInstance(NULL, IID_PPV_ARG(IFileSystemBindData, &fileSystemBindData));
67 if (FAILED(hResult))
68 return hResult;
69 hResult = fileSystemBindData->SetFindData(pfd);
70 if (FAILED(hResult))
71 return hResult;
72
73 hResult = CreateBindCtx(0, &bindContext);
74 if (FAILED(hResult))
75 return hResult;
76 bindOpts.cbStruct = sizeof(BIND_OPTS);
77 bindOpts.grfFlags = 0;
78 bindOpts.grfMode = STGM_CREATE;
79 bindOpts.dwTickCountDeadline = 0;
80 hResult = bindContext->SetBindOptions(&bindOpts);
81 if (FAILED(hResult))
82 return hResult;
83 hResult = bindContext->RegisterObjectParam((LPOLESTR)STR_FILE_SYS_BIND_DATA, fileSystemBindData);
84 if (FAILED(hResult))
85 return hResult;
86
87 *ppV = bindContext.Detach();
88
89 return S_OK;
90}
T * Detach()
Definition: atlcomcli.h:163
#define E_INVALIDARG
Definition: ddrawi.h:101
#define STGM_CREATE
Definition: objbase.h:926
HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC *ppbc)
Definition: bindctx.c:556
static PIXELFORMATDESCRIPTOR pfd
Definition: ssstars.c:67

Referenced by _ILParsePathW().

◆ INewItem_Constructor()

HRESULT WINAPI INewItem_Constructor ( IUnknown pUnkOuter,
REFIID  riif,
LPVOID ppv 
)

◆ InitChangeNotifications()

void InitChangeNotifications ( void  )

Definition at line 46 of file changenotify.cpp.

47{
49}
VOID WINAPI InitializeCriticalSection(OUT LPCRITICAL_SECTION lpCriticalSection)
Definition: synch.c:751

Referenced by if().

◆ IShellLink_ConstructFromFile()

HRESULT WINAPI IShellLink_ConstructFromFile ( IShellFolder psf,
LPCITEMIDLIST  pidl,
REFIID  riid,
LPVOID ppv 
)

Definition at line 3137 of file CShellLink.cpp.

3138{
3140 if (!ILGetDisplayNameExW(psf, pidl, path, 0))
3141 return E_FAIL;
3142
3144}
#define E_FAIL
Definition: ddrawi.h:102
BOOL ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR path, DWORD type)
Definition: pidl.c:91

◆ IShellLink_ConstructFromPath()

HRESULT WINAPI IShellLink_ConstructFromPath ( WCHAR path,
REFIID  riid,
LPVOID ppv 
)

Definition at line 3123 of file CShellLink.cpp.

3124{
3126 HRESULT hr = CShellLink::_CreatorClass::CreateInstance(NULL, IID_PPV_ARG(IPersistFile, &ppf));
3127 if (FAILED(hr))
3128 return hr;
3129
3130 hr = ppf->Load(path, 0);
3131 if (FAILED(hr))
3132 return hr;
3133
3134 return ppf->QueryInterface(riid, ppv);
3135}

Referenced by CFSDropTarget::_DoDrop(), IShellLink_ConstructFromFile(), and SHAddToRecentDocs().

◆ ISvBgCm_Constructor()

IContextMenu2 * ISvBgCm_Constructor ( LPSHELLFOLDER  pSFParent,
BOOL  bDesktop 
)

◆ ISvItemCm_Constructor()

IContextMenu2 * ISvItemCm_Constructor ( LPSHELLFOLDER  pSFParent,
LPCITEMIDLIST  pidl,
const LPCITEMIDLIST aPidls,
UINT  uItemCount 
)

◆ ISvStaticItemCm_Constructor()

IContextMenu2 * ISvStaticItemCm_Constructor ( LPSHELLFOLDER  pSFParent,
LPCITEMIDLIST  pidl,
LPCITEMIDLIST apidl,
UINT  cidl,
HKEY  hKey 
)

◆ ParseFieldA()

DWORD WINAPI ParseFieldA ( LPCSTR  src,
DWORD  nField,
LPSTR  dst,
DWORD  len 
)

Definition at line 82 of file shellord.c.

87{
88 WARN("(%s,0x%08x,%p,%d) semi-stub.\n",debugstr_a(src),nField,dst,len);
89
90 if (!src || !src[0] || !dst || !len)
91 return 0;
92
93 /* skip n fields delimited by ',' */
94 while (nField > 1)
95 {
96 if (*src=='\0') return FALSE;
97 if (*(src++)==',') nField--;
98 }
99
100 /* copy part till the next ',' to dst */
101 while ( *src!='\0' && *src!=',' && (len--)>0 ) *(dst++)=*(src++);
102
103 /* finalize the string */
104 *dst=0x0;
105
106 return TRUE;
107}
#define WARN(fmt,...)
Definition: debug.h:112
GLenum src
Definition: glext.h:6340
GLenum GLenum dst
Definition: glext.h:6340
#define debugstr_a
Definition: kernel32.h:31

Referenced by HCR_RegGetIconA(), and ParseFieldAW().

◆ ParseFieldW()

DWORD WINAPI ParseFieldW ( LPCWSTR  src,
DWORD  nField,
LPWSTR  dst,
DWORD  len 
)

Definition at line 116 of file shellord.c.

117{
118 WARN("(%s,0x%08x,%p,%d) semi-stub.\n", debugstr_w(src), nField, dst, len);
119
120 if (!src || !src[0] || !dst || !len)
121 return 0;
122
123 /* skip n fields delimited by ',' */
124 while (nField > 1)
125 {
126 if (*src == 0x0) return FALSE;
127 if (*src++ == ',') nField--;
128 }
129
130 /* copy part till the next ',' to dst */
131 while ( *src != 0x0 && *src != ',' && (len--)>0 ) *(dst++) = *(src++);
132
133 /* finalize the string */
134 *dst = 0x0;
135
136 return TRUE;
137}

Referenced by CFSExtractIcon_CreateInstance(), HCR_RegGetIconW(), and ParseFieldAW().

◆ PidlToSicIndex()

BOOL PidlToSicIndex ( IShellFolder sh,
LPCITEMIDLIST  pidl,
BOOL  bBigIcon,
UINT  uFlags,
int pIndex 
)

Definition at line 726 of file iconcache.cpp.

732{
734 WCHAR szIconFile[MAX_PATH]; /* file containing the icon */
735 INT iSourceIndex; /* index or resID(negated) in this file */
736 BOOL ret = FALSE;
737 UINT dwFlags = 0;
738 int iShortcutDefaultIndex = INVALID_INDEX;
739
740 TRACE("sf=%p pidl=%p %s\n", sh, pidl, bBigIcon?"Big":"Small");
741
742 if (!sic_hdpa)
744
745 if (SUCCEEDED (sh->GetUIObjectOf(0, 1, &pidl, IID_NULL_PPV_ARG(IExtractIconW, &ei))))
746 {
747 if (SUCCEEDED(ei->GetIconLocation(uFlags &~ GIL_FORSHORTCUT, szIconFile, MAX_PATH, &iSourceIndex, &dwFlags)))
748 {
749 *pIndex = SIC_GetIconIndex(szIconFile, iSourceIndex, uFlags);
750 ret = TRUE;
751 }
752 }
753
754 if (INVALID_INDEX == *pIndex) /* default icon when failed */
755 {
756 if (0 == (uFlags & GIL_FORSHORTCUT))
757 {
758 *pIndex = 0;
759 }
760 else
761 {
762 if (INVALID_INDEX == iShortcutDefaultIndex)
763 {
764 iShortcutDefaultIndex = SIC_LoadIcon(swShell32Name, 0, GIL_FORSHORTCUT);
765 }
766 *pIndex = (INVALID_INDEX != iShortcutDefaultIndex ? iShortcutDefaultIndex : 0);
767 }
768 }
769
770 return ret;
771
772}
UINT uFlags
Definition: api.c:59
WCHAR swShell32Name[MAX_PATH]
Definition: folders.cpp:22
INT SIC_GetIconIndex(LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags)
Definition: iconcache.cpp:443
static HDPA sic_hdpa
Definition: iconcache.cpp:38
BOOL SIC_Initialize(void)
Definition: iconcache.cpp:484
static INT SIC_LoadIcon(LPCWSTR sSourceFile, INT dwSourceIndex, DWORD dwFlags)
Definition: iconcache.cpp:390
#define INVALID_INDEX
Definition: iconcache.cpp:27
_Out_ PULONG _Out_ PULONG pIndex
Definition: ndis.h:4565
unsigned int UINT
Definition: ndis.h:50
short sh
Definition: format.c:272
int32_t INT
Definition: typedefs.h:58
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176
#define IID_NULL_PPV_ARG(Itype, ppType)

Referenced by FM_InitMenuPopup(), SHGetFileInfoW(), and SHMapPIDLToSystemImageListIndex().

◆ RenderFILENAMEA()

HGLOBAL RenderFILENAMEA ( LPITEMIDLIST  pidlRoot,
LPITEMIDLIST apidl,
UINT  cidl 
)

Definition at line 188 of file clipboard.c.

189{
190 int size = 0;
191 char szTemp[MAX_PATH], *szFileName;
192 LPITEMIDLIST pidl;
193 HGLOBAL hGlobal;
195
196 TRACE("(%p,%p,%u)\n", pidlRoot, apidl, cidl);
197
198 /* get path of combined pidl */
199 pidl = ILCombine(pidlRoot, apidl[0]);
200 if (!pidl)
201 return 0;
202
203 bSuccess = SHGetPathFromIDListA(pidl, szTemp);
204 SHFree(pidl);
205 if (!bSuccess)
206 return 0;
207
208 size = strlen(szTemp) + 1;
209
210 /* fill the structure */
211 hGlobal = GlobalAlloc(GHND|GMEM_SHARE, size);
212 if(!hGlobal) return hGlobal;
213 szFileName = GlobalLock(hGlobal);
214 memcpy(szFileName, szTemp, size);
215 GlobalUnlock(hGlobal);
216
217 return hGlobal;
218}
void WINAPI SHFree(LPVOID pv)
Definition: shellole.c:326
static BOOLEAN bSuccess
Definition: drive.cpp:433
LPVOID NTAPI GlobalLock(HGLOBAL hMem)
Definition: heapmem.c:755
BOOL NTAPI GlobalUnlock(HGLOBAL hMem)
Definition: heapmem.c:1190
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:368
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
Definition: pidl.c:703
BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST pidl, LPSTR pszPath)
Definition: pidl.c:1282
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
#define GHND
Definition: winbase.h:297
#define GMEM_SHARE
Definition: winbase.h:305

Referenced by CIDLDataObj::Initialize().

◆ RenderFILENAMEW()

HGLOBAL RenderFILENAMEW ( LPITEMIDLIST  pidlRoot,
LPITEMIDLIST apidl,
UINT  cidl 
)

Definition at line 220 of file clipboard.c.

221{
222 int size = 0;
223 WCHAR szTemp[MAX_PATH], *szFileName;
224 LPITEMIDLIST pidl;
225 HGLOBAL hGlobal;
227
228 TRACE("(%p,%p,%u)\n", pidlRoot, apidl, cidl);
229
230 /* get path of combined pidl */
231 pidl = ILCombine(pidlRoot, apidl[0]);
232 if (!pidl)
233 return 0;
234
235 bSuccess = SHGetPathFromIDListW(pidl, szTemp);
236 SHFree(pidl);
237 if (!bSuccess)
238 return 0;
239
240 size = (strlenW(szTemp)+1) * sizeof(WCHAR);
241
242 /* fill the structure */
243 hGlobal = GlobalAlloc(GHND|GMEM_SHARE, size);
244 if(!hGlobal) return hGlobal;
245 szFileName = GlobalLock(hGlobal);
246 memcpy(szFileName, szTemp, size);
247 GlobalUnlock(hGlobal);
248
249 return hGlobal;
250}
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
Definition: pidl.c:1298
#define strlenW(s)
Definition: unicode.h:28

Referenced by CIDLDataObj::Initialize().

◆ RenderHDROP()

HGLOBAL RenderHDROP ( LPITEMIDLIST  pidlRoot,
LPITEMIDLIST apidl,
UINT  cidl 
)

Definition at line 54 of file clipboard.c.

55{
56 UINT i;
57#ifdef __REACTOS__
58 int size = 0;
59#else
60 int rootlen = 0,size = 0;
61 WCHAR wszRootPath[MAX_PATH];
62#endif
64 HGLOBAL hGlobal = NULL;
65 DROPFILES *pDropFiles;
66 int offset;
67#ifdef __REACTOS__
68 LPITEMIDLIST *pidls;
69#endif
70
71 TRACE("(%p,%p,%u)\n", pidlRoot, apidl, cidl);
72
73#ifdef __REACTOS__
74 pidls = (LPITEMIDLIST *)HeapAlloc(GetProcessHeap(), 0, cidl * sizeof(*pidls));
75 if (!pidls)
76 goto cleanup;
77#endif
78
79 /* get the size needed */
80 size = sizeof(DROPFILES);
81
82#ifndef __REACTOS__
83 SHGetPathFromIDListW(pidlRoot, wszRootPath);
84 PathAddBackslashW(wszRootPath);
85 rootlen = strlenW(wszRootPath);
86#endif
87
88 for (i=0; i<cidl;i++)
89 {
90#ifdef __REACTOS__
91 pidls[i] = ILCombine(pidlRoot, apidl[i]);
93 size += (wcslen(wszFileName) + 1) * sizeof(WCHAR);
94#else
96 size += (rootlen + strlenW(wszFileName) + 1) * sizeof(WCHAR);
97#endif
98 }
99
100 size += sizeof(WCHAR);
101
102 /* Fill the structure */
103 hGlobal = GlobalAlloc(GHND|GMEM_SHARE, size);
104#ifdef __REACTOS__
105 if(!hGlobal) goto cleanup;
106#else
107 if(!hGlobal) return hGlobal;
108#endif
109
110 pDropFiles = GlobalLock(hGlobal);
111 offset = (sizeof(DROPFILES) + sizeof(WCHAR) - 1) / sizeof(WCHAR);
112 pDropFiles->pFiles = offset * sizeof(WCHAR);
113 pDropFiles->fWide = TRUE;
114
115#ifndef __REACTOS__
116 strcpyW(wszFileName, wszRootPath);
117#endif
118
119 for (i=0; i<cidl;i++)
120 {
121
122#ifdef __REACTOS__
124 wcscpy(((WCHAR*)pDropFiles)+offset, wszFileName);
125 offset += wcslen(wszFileName) + 1;
126 ILFree(pidls[i]);
127#else
128 _ILSimpleGetTextW(apidl[i], wszFileName + rootlen, MAX_PATH - rootlen);
129 strcpyW(((WCHAR*)pDropFiles)+offset, wszFileName);
130 offset += strlenW(wszFileName) + 1;
131#endif
132 }
133
134 ((WCHAR*)pDropFiles)[offset] = 0;
135 GlobalUnlock(hGlobal);
136
137#ifdef __REACTOS__
138cleanup:
139 if(pidls)
140 HeapFree(GetProcessHeap(), 0, pidls);
141#endif
142
143 return hGlobal;
144}
static WCHAR wszFileName[MAX_PATH]
Definition: wordpad.c:71
#define GetProcessHeap()
Definition: compat.h:736
#define HeapAlloc
Definition: compat.h:733
#define HeapFree(x, y, z)
Definition: compat.h:735
static void cleanup(void)
Definition: main.c:1335
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
Definition: path.c:294
GLintptr offset
Definition: glext.h:5920
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
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
void WINAPI ILFree(LPITEMIDLIST pidl)
Definition: pidl.c:929
DWORD _ILSimpleGetTextW(LPCITEMIDLIST pidl, LPWSTR szOut, UINT uOutSize)
Definition: pidl.c:2111
#define strcpyW(d, s)
Definition: unicode.h:29
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
struct _DROPFILES DROPFILES
DWORD pFiles
Definition: shlobj.h:2163
BOOL fWide
Definition: shlobj.h:2166

Referenced by CIDLDataObj::Initialize().

◆ RenderSHELLIDLIST()

HGLOBAL RenderSHELLIDLIST ( LPITEMIDLIST  pidlRoot,
LPITEMIDLIST apidl,
UINT  cidl 
)

Definition at line 146 of file clipboard.c.

147{
148 UINT i;
149 int offset = 0, sizePidl, size;
150 HGLOBAL hGlobal;
151 LPIDA pcida;
152
153 TRACE("(%p,%p,%u)\n", pidlRoot, apidl, cidl);
154
155 /* get the size needed */
156 size = sizeof(CIDA) + sizeof (UINT)*(cidl); /* header */
157 size += ILGetSize (pidlRoot); /* root pidl */
158 for(i=0; i<cidl; i++)
159 {
160 size += ILGetSize(apidl[i]); /* child pidls */
161 }
162
163 /* fill the structure */
164 hGlobal = GlobalAlloc(GHND|GMEM_SHARE, size);
165 if(!hGlobal) return hGlobal;
166 pcida = GlobalLock (hGlobal);
167 pcida->cidl = cidl;
168
169 /* root pidl */
170 offset = sizeof(CIDA) + sizeof (UINT)*(cidl);
171 pcida->aoffset[0] = offset; /* first element */
172 sizePidl = ILGetSize (pidlRoot);
173 memcpy(((LPBYTE)pcida)+offset, pidlRoot, sizePidl);
174 offset += sizePidl;
175
176 for(i=0; i<cidl; i++) /* child pidls */
177 {
178 pcida->aoffset[i+1] = offset;
179 sizePidl = ILGetSize(apidl[i]);
180 memcpy(((LPBYTE)pcida)+offset, apidl[i], sizePidl);
181 offset += sizePidl;
182 }
183
184 GlobalUnlock(hGlobal);
185 return hGlobal;
186}
#define ILGetSize
Definition: shellclasses.h:638
Definition: shlobj.h:503
UINT aoffset[1]
Definition: shlobj.h:504
UINT cidl
Definition: shlobj.h:503

Referenced by CIDLDataObj::Initialize().

◆ SH_CreatePropertySheetPage()

HPROPSHEETPAGE SH_CreatePropertySheetPage ( WORD  wDialogId,
DLGPROC  pfnDlgProc,
LPARAM  lParam,
LPCWSTR  pwszTitle 
)

Definition at line 302 of file filedefext.cpp.

303{
305
306 memset(&Page, 0x0, sizeof(PROPSHEETPAGEW));
307 Page.dwSize = sizeof(PROPSHEETPAGEW);
308 Page.dwFlags = PSP_DEFAULT;
309 Page.hInstance = shell32_hInstance;
310 Page.pszTemplate = MAKEINTRESOURCE(wDialogId);
311 Page.pfnDlgProc = pfnDlgProc;
312 Page.lParam = lParam;
313 Page.pszTitle = pwszTitle;
314
315 if (pwszTitle)
316 Page.dwFlags |= PSP_USETITLE;
317
319}
LPARAM lParam
Definition: combotst.c:139
HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW lpPropSheetPage)
Definition: propsheet.c:3075
_In_ PVOID _Out_opt_ BOOLEAN _Out_opt_ PPFN_NUMBER Page
Definition: mm.h:1306
#define PSP_USETITLE
Definition: prsht.h:26
#define PSP_DEFAULT
Definition: prsht.h:22
struct _PROPSHEETPAGEW PROPSHEETPAGEW
#define memset(x, y, z)
Definition: compat.h:39
#define MAKEINTRESOURCE
Definition: winuser.h:591

◆ SH_FileGeneralDlgProc()

INT_PTR CALLBACK SH_FileGeneralDlgProc ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

◆ SH_FileVersionDlgProc()

INT_PTR CALLBACK SH_FileVersionDlgProc ( HWND  hwndDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)

◆ SH_FormatFileSizeWithBytes()

LPWSTR SH_FormatFileSizeWithBytes ( PULARGE_INTEGER  lpQwSize,
LPWSTR  pszBuf,
UINT  cchBuf 
)

Definition at line 266 of file filedefext.cpp.

267{
268 /* Format bytes in KBs, MBs etc */
269 if (StrFormatByteSizeW(lpQwSize->QuadPart, pwszResult, cchResultMax) == NULL)
270 return NULL;
271
272 /* If there is less bytes than 1KB, we have nothing to do */
273 if (lpQwSize->QuadPart < 1024)
274 return pwszResult;
275
276 /* Concatenate " (" */
277 UINT cchWritten = wcslen(pwszResult);
278 LPWSTR pwszEnd = pwszResult + cchWritten;
279 size_t cchRemaining = cchResultMax - cchWritten;
280 StringCchCopyExW(pwszEnd, cchRemaining, L" (", &pwszEnd, &cchRemaining, 0);
281
282 /* Write formated bytes count */
283 cchWritten = SH_FormatByteSize(lpQwSize->QuadPart, pwszEnd, cchRemaining);
284 pwszEnd += cchWritten;
285 cchRemaining -= cchWritten;
286
287 /* Copy ")" to the buffer */
288 StringCchCopyW(pwszEnd, cchRemaining, L")");
289
290 return pwszResult;
291}
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
Definition: string.c:2380
UINT SH_FormatByteSize(LONGLONG cbSize, LPWSTR pwszResult, UINT cchResultMax)
Definition: filedefext.cpp:236
STRSAFEAPI StringCchCopyExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
Definition: strsafe.h:184
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:149
ULONGLONG QuadPart
Definition: ms-dtyp.idl:185

Referenced by CFileDefExt::CountFolderAndFiles(), and CFileDefExt::InitFileAttr().

◆ SH_ShowDriveProperties()

BOOL SH_ShowDriveProperties ( WCHAR drive,
IDataObject pDataObj 
)

Definition at line 170 of file drive.cpp.

171{
172 HPSXA hpsx = NULL;
174 CComObject<CDrvDefExt> *pDrvDefExt = NULL;
175
176 CDataObjectHIDA cida(pDataObj);
177 if (FAILED_UNEXPECTEDLY(cida.hr()))
178 return FAILED(cida.hr());
179
180 RECT rcPosition = {CW_USEDEFAULT, CW_USEDEFAULT, 0, 0};
181 POINT pt;
182 if (SUCCEEDED(DataObject_GetOffset(pDataObj, &pt)))
183 {
184 rcPosition.left = pt.x;
185 rcPosition.top = pt.y;
186 }
187
191 if (!stub.Create(NULL, rcPosition, NULL, style, exstyle))
192 {
193 ERR("StubWindow32 creation failed\n");
194 return FALSE;
195 }
196
197 PROPSHEETHEADERW psh = {sizeof(PROPSHEETHEADERW)};
199 psh.pszCaption = pwszDrive;
200 psh.hwndParent = stub;
201 psh.nStartPage = 0;
202 psh.phpage = hpsp;
203
204 HRESULT hr = CComObject<CDrvDefExt>::CreateInstance(&pDrvDefExt);
205 if (SUCCEEDED(hr))
206 {
207 pDrvDefExt->AddRef(); // CreateInstance returns object with 0 ref count
208 hr = pDrvDefExt->Initialize(HIDA_GetPIDLFolder(cida), pDataObj, NULL);
209 if (SUCCEEDED(hr))
210 {
211 hr = pDrvDefExt->AddPages(AddPropSheetPageCallback, (LPARAM)&psh);
212 if (FAILED(hr))
213 ERR("AddPages failed\n");
214 }
215 else
216 {
217 ERR("Initialize failed\n");
218 }
219 }
220
222 if (hpsx)
224
225 INT_PTR ret = PropertySheetW(&psh);
226
227 if (hpsx)
229 if (pDrvDefExt)
230 pDrvDefExt->Release();
231
232 stub.DestroyWindow();
233
234 return ret != -1;
235}
Arabic default style
Definition: afstyles.h:94
INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW lppsh)
Definition: propsheet.c:2905
BOOL CALLBACK AddPropSheetPageCallback(HPROPSHEETPAGE hPage, LPARAM lParam)
Definition: precomp.h:129
#define pt(x, y)
Definition: drawing.c:79
EXTERN_C HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, IDataObject *pDataObj)
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
#define WS_CAPTION
Definition: pedump.c:624
#define WS_DISABLED
Definition: pedump.c:621
#define WS_CLIPSIBLINGS
Definition: pedump.c:618
#define PSH_PROPTITLE
Definition: prsht.h:40
BOOL(CALLBACK * LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE, LPARAM)
Definition: prsht.h:327
struct _PROPSHEETHEADERW PROPSHEETHEADERW
void WINAPI SHDestroyPropSheetExtArray(HPSXA hpsxa)
Definition: shellord.c:2150
UINT WINAPI SHAddFromPropSheetExtArray(HPSXA hpsxa, LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam)
Definition: shellord.c:1973
#define FAILED_UNEXPECTEDLY(hr)
Definition: shellutils.h:82
static PCUIDLIST_ABSOLUTE HIDA_GetPIDLFolder(CIDA const *pida)
Definition: shellutils.h:564
#define MAX_PROPERTY_SHEET_PAGE
DWORD dwFlags
Definition: prsht.h:294
HWND hwndParent
Definition: prsht.h:295
HPROPSHEETPAGE * phpage
Definition: prsht.h:309
UINT nStartPage
Definition: prsht.h:304
LPCWSTR pszCaption
Definition: prsht.h:301
Definition: stubgen.c:11
LONG top
Definition: windef.h:307
LONG left
Definition: windef.h:306
struct _stub stub
int32_t INT_PTR
Definition: typedefs.h:64
LONG_PTR LPARAM
Definition: windef.h:208
#define WS_EX_APPWINDOW
Definition: winuser.h:383
#define WS_EX_WINDOWEDGE
Definition: winuser.h:407
#define CW_USEDEFAULT
Definition: winuser.h:225

Referenced by DrivesContextMenuCallback(), and SH_ShowPropertiesDialog().

◆ SH_ShowPropertiesDialog()

BOOL SH_ShowPropertiesDialog ( LPCWSTR  pwszPath,
IDataObject pDataObj 
)

Definition at line 83 of file fprop.cpp.

84{
85 HPSXA hpsxa[3] = {NULL, NULL, NULL};
86 CComObject<CFileDefExt> *pFileDefExt = NULL;
87
88 TRACE("SH_ShowPropertiesDialog entered filename %s\n", debugstr_w(pwszPath));
89
90 if (pwszPath == NULL || !wcslen(pwszPath))
91 return FALSE;
92
94 memset(hppages, 0x0, sizeof(HPROPSHEETPAGE) * MAX_PROPERTY_SHEET_PAGE);
95
96 /* Make a copy of path */
97 WCHAR wszPath[MAX_PATH];
98 StringCbCopyW(wszPath, sizeof(wszPath), pwszPath);
99
100 /* remove trailing \\ at the end of path */
101 PathRemoveBackslashW(wszPath);
102
103 CDataObjectHIDA cida(pDataObj);
104 if (FAILED_UNEXPECTEDLY(cida.hr()))
105 return FALSE;
106
107 if (cida->cidl == 0)
108 {
109 ERR("Empty HIDA\n");
110 return FALSE;
111 }
112
113 /* Handle drives */
114 if (_ILIsDrive(HIDA_GetPIDLItem(cida, 0)))
115 return SH_ShowDriveProperties(wszPath, pDataObj);
116
117
118 RECT rcPosition = {CW_USEDEFAULT, CW_USEDEFAULT, 0, 0};
119 POINT pt;
120 if (SUCCEEDED(DataObject_GetOffset(pDataObj, &pt)))
121 {
122 rcPosition.left = pt.x;
123 rcPosition.top = pt.y;
124 }
125
129 if (!stub.Create(NULL, rcPosition, NULL, style, exstyle))
130 {
131 ERR("StubWindow32 creation failed\n");
132 return FALSE;
133 }
134
135 /* Handle files and folders */
137 memset(&Header, 0x0, sizeof(PROPSHEETHEADERW));
138 Header.dwSize = sizeof(PROPSHEETHEADERW);
139 Header.hwndParent = stub;
140 Header.dwFlags = PSH_NOCONTEXTHELP | PSH_PROPTITLE;
141 Header.phpage = hppages;
142 Header.pszCaption = PathFindFileNameW(wszPath);
143
144 HRESULT hr = CComObject<CFileDefExt>::CreateInstance(&pFileDefExt);
145 if (SUCCEEDED(hr))
146 {
147 pFileDefExt->AddRef(); // CreateInstance returns object with 0 ref count
148 hr = pFileDefExt->Initialize(HIDA_GetPIDLFolder(cida), pDataObj, NULL);
150 {
151 hr = pFileDefExt->AddPages(AddPropSheetPageCallback, (LPARAM)&Header);
153 {
154 ERR("AddPages failed\n");
155 return FALSE;
156 }
157 }
158 else
159 {
160 ERR("Initialize failed\n");
161 return FALSE;
162 }
163 }
164
165 LoadPropSheetHandlers(wszPath, &Header, MAX_PROPERTY_SHEET_PAGE - 1, hpsxa, pDataObj);
166
168
169 for (UINT i = 0; i < 3; ++i)
170 if (hpsxa[i])
172 if (pFileDefExt)
173 pFileDefExt->Release();
174
175 stub.DestroyWindow();
176
177 return (Result != -1);
178}
Definition: Header.h:9
LPWSTR WINAPI PathFindFileNameW(LPCWSTR lpszPath)
Definition: path.c:394
LPWSTR WINAPI PathRemoveBackslashW(LPWSTR lpszPath)
Definition: path.c:867
BOOL SH_ShowDriveProperties(WCHAR *pwszDrive, IDataObject *pDataObj)
Definition: drive.cpp:170
static UINT LoadPropSheetHandlers(LPCWSTR pwszPath, PROPSHEETHEADERW *pHeader, UINT cMaxPages, HPSXA *phpsxa, IDataObject *pDataObj)
Definition: fprop.cpp:30
BOOL _ILIsDrive(LPCITEMIDLIST pidl)
Definition: pidl.c:1968
static PCUIDLIST_RELATIVE HIDA_GetPIDLItem(CIDA const *pida, SIZE_T i)
Definition: shellutils.h:569
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:166
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
Definition: wsk.h:409

Referenced by _ShowPropertiesDialogThread(), and CFSFolder::CallBack().

◆ SH_ShowRecycleBinProperties()

BOOL SH_ShowRecycleBinProperties ( WCHAR  sDrive)

Definition at line 399 of file recycler_prop.cpp.

400{
401 HPROPSHEETPAGE hpsp[1];
403 HPROPSHEETPAGE hprop;
404 INT_PTR ret;
405
406 ZeroMemory(&psh, sizeof(psh));
407 psh.dwSize = sizeof(psh);
410 psh.hwndParent = NULL;
411 psh.phpage = hpsp;
413
415 if (!hprop)
416 {
417 ERR("Failed to create property sheet\n");
418 return FALSE;
419 }
420 hpsp[psh.nPages] = hprop;
421 psh.nPages++;
422
423 ret = PropertySheetW(&psh);
424 return (ret >= 0);
425}
HPROPSHEETPAGE SH_CreatePropertySheetPage(LPCSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR szTitle)
static INT_PTR CALLBACK RecycleBinDlg(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define IDD_RECYCLE_BIN_PROPERTIES
Definition: shresdef.h:385
HINSTANCE hInstance
Definition: prsht.h:296
DWORD dwSize
Definition: prsht.h:293
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582

Referenced by RegFolderContextMenuCallback().

◆ SHELL_ConfirmYesNoW()

BOOL SHELL_ConfirmYesNoW ( HWND  hWnd,
int  nKindOfDialog,
LPCWSTR  szDir 
)

Definition at line 331 of file shlfileop.cpp.

332{
333 return SHELL_ConfirmDialogW(hWnd, nKindOfDialog, szDir, NULL);
334}
HWND hWnd
Definition: settings.c:17
static BOOL SHELL_ConfirmDialogW(HWND hWnd, int nKindOfDialog, LPCWSTR szDir, FILE_OPERATION *op)
Definition: shlfileop.cpp:293

◆ SHELL_DeleteDirectoryW()

BOOL SHELL_DeleteDirectoryW ( HWND  hwnd,
LPCWSTR  pwszDir,
BOOL  bShowUI 
)

◆ Shell_GetImageLists()

BOOL WINAPI Shell_GetImageLists ( HIMAGELIST lpBigList,
HIMAGELIST lpSmallList 
)

Definition at line 700 of file iconcache.cpp.

701{
702 TRACE("(%p,%p)\n",lpBigList,lpSmallList);
703
704 if (!sic_hdpa)
706
707 if (lpBigList)
708 *lpBigList = ShellBigIconList;
709
710 if (lpSmallList)
711 *lpSmallList = ShellSmallIconList;
712
713 return TRUE;
714}
static HIMAGELIST ShellSmallIconList
Definition: iconcache.cpp:40
static HIMAGELIST ShellBigIconList
Definition: iconcache.cpp:41

◆ SHELL_IsShortcut()

BOOL SHELL_IsShortcut ( LPCITEMIDLIST  pidlLast)

Definition at line 383 of file shell32_main.c.

384{
385 char szTemp[MAX_PATH];
386 HKEY keyCls;
387 BOOL ret = FALSE;
388
389 if (_ILGetExtension(pidlLast, szTemp, MAX_PATH) &&
390 HCR_MapTypeToValueA(szTemp, szTemp, MAX_PATH, TRUE))
391 {
393 {
394 if (ERROR_SUCCESS == RegQueryValueExA(keyCls, "IsShortcut", NULL, NULL, NULL, NULL))
395 ret = TRUE;
396
397 RegCloseKey(keyCls);
398 }
399 }
400
401 return ret;
402}
#define KEY_QUERY_VALUE
Definition: nt_native.h:1016
BOOL _ILGetExtension(LPCITEMIDLIST pidl, LPSTR pOut, UINT uOutSize)
Definition: pidl.c:2491
BOOL HCR_MapTypeToValueA(LPCSTR szExtension, LPSTR szFileType, LONG len, BOOL bPrependDot)
Definition: classes.c:88

Referenced by SHGetFileInfoW(), and SHMapPIDLToSystemImageListIndex().

◆ SHELL_OsIsUnicode()

◆ SHELL_RegisterShellFolders()

HRESULT SHELL_RegisterShellFolders ( void  )

Definition at line 3033 of file shellpath.c.

3034{
3035 HRESULT hr;
3036
3038 if (SUCCEEDED(hr))
3040 if (SUCCEEDED(hr))
3042 return hr;
3043}
static HRESULT _SHRegisterUserShellFolders(BOOL bDefault)
Definition: shellpath.c:2937
static HRESULT _SHRegisterCommonShellFolders(void)
Definition: shellpath.c:3005

Referenced by DllRegisterServer().

◆ SIC_Destroy()

void SIC_Destroy ( void  )

Definition at line 632 of file iconcache.cpp.

633{
634 TRACE("\n");
635
637
639
640 sic_hdpa = NULL;
645
647 //DeleteCriticalSection(&SHELL32_SicCS); //static
648}
void WINAPI DPA_DestroyCallback(HDPA hdpa, PFNDPAENUMCALLBACK enumProc, LPVOID lParam)
Definition: dpa.c:1003
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
Definition: imagelist.c:928
static INT CALLBACK sic_free(LPVOID ptr, LPVOID lparam)
Definition: iconcache.cpp:625
void WINAPI LeaveCriticalSection(LPCRITICAL_SECTION)
void WINAPI EnterCriticalSection(LPCRITICAL_SECTION)

◆ SIC_GetIconIndex()

INT SIC_GetIconIndex ( LPCWSTR  sSourceFile,
INT  dwSourceIndex,
DWORD  dwFlags 
)

Definition at line 443 of file iconcache.cpp.

444{
445 SIC_ENTRY sice;
448
449 TRACE("%s %i\n", debugstr_w(sSourceFile), dwSourceIndex);
450
451 GetFullPathNameW(sSourceFile, MAX_PATH, path, NULL);
452 sice.sSourceFile = path;
453 sice.dwSourceIndex = dwSourceIndex;
454 sice.dwFlags = dwFlags;
455
456 if (!sic_hdpa)
458
460
461 if (NULL != DPA_GetPtr (sic_hdpa, 0))
462 {
463 /* search linear from position 0*/
465 }
466
467 if ( INVALID_INDEX == index )
468 {
469 ret = SIC_LoadIcon (sSourceFile, dwSourceIndex, dwFlags);
470 }
471 else
472 {
473 TRACE("-- found\n");
474 ret = ((LPSIC_ENTRY)DPA_GetPtr(sic_hdpa, index))->dwListIndex;
475 }
476
478 return ret;
479}
INT WINAPI DPA_Search(HDPA hdpa, LPVOID pFind, INT nStart, PFNDPACOMPARE pfnCompare, LPARAM lParam, UINT uOptions)
Definition: dpa.c:845
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
Definition: path.c:1106
GLuint index
Definition: glext.h:6031
struct SIC_ENTRY * LPSIC_ENTRY
static INT CALLBACK SIC_CompareEntries(LPVOID p1, LPVOID p2, LPARAM lparam)
Definition: iconcache.cpp:61
#define DPAS_SORTED
Definition: commctrl.h:4862
#define DPA_GetPtr
Definition: commctrl.h:5
Definition: iconcache.cpp:30
DWORD dwFlags
Definition: iconcache.cpp:34
DWORD dwSourceIndex
Definition: iconcache.cpp:32
LPWSTR sSourceFile
Definition: iconcache.cpp:31

Referenced by PidlToSicIndex(), Shell_GetCachedImageIndexA(), Shell_GetCachedImageIndexW(), and SHGetFileInfoW().

◆ SIC_Initialize()

BOOL SIC_Initialize ( void  )

Definition at line 484 of file iconcache.cpp.

485{
486 HICON hSm = NULL, hLg = NULL;
487 INT cx_small, cy_small;
488 INT cx_large, cy_large;
489 HDC hDC;
490 INT bpp;
491 DWORD ilMask;
492 BOOL result = FALSE;
493
494 TRACE("Entered SIC_Initialize\n");
495
496 if (sic_hdpa)
497 {
498 TRACE("Icon cache already initialized\n");
499 return TRUE;
500 }
501
502 sic_hdpa = DPA_Create(16);
503 if (!sic_hdpa)
504 {
505 return FALSE;
506 }
507
508 hDC = CreateICW(L"DISPLAY", NULL, NULL, NULL);
509 if (!hDC)
510 {
511 ERR("Failed to create information context (error %d)\n", GetLastError());
512 goto end;
513 }
514
516 DeleteDC(hDC);
517
518 if (bpp <= 4)
519 ilMask = ILC_COLOR4;
520 else if (bpp <= 8)
521 ilMask = ILC_COLOR8;
522 else if (bpp <= 16)
523 ilMask = ILC_COLOR16;
524 else if (bpp <= 24)
525 ilMask = ILC_COLOR24;
526 else if (bpp <= 32)
527 ilMask = ILC_COLOR32;
528 else
529 ilMask = ILC_COLOR;
530
531 ilMask |= ILC_MASK;
532
533 cx_small = GetSystemMetrics(SM_CXSMICON);
534 cy_small = GetSystemMetrics(SM_CYSMICON);
535 cx_large = GetSystemMetrics(SM_CXICON);
536 cy_large = GetSystemMetrics(SM_CYICON);
537
539 cy_small,
540 ilMask,
541 100,
542 100);
544 {
545 ERR("Failed to create the small icon list.\n");
546 goto end;
547 }
548
550 cy_large,
551 ilMask,
552 100,
553 100);
554 if (!ShellBigIconList)
555 {
556 ERR("Failed to create the big icon list.\n");
557 goto end;
558 }
559
560 /* Load the document icon, which is used as the default if an icon isn't found. */
564 cx_small,
565 cy_small,
567 if (!hSm)
568 {
569 ERR("Failed to load small IDI_SHELL_DOCUMENT icon!\n");
570 goto end;
571 }
572
576 cx_large,
577 cy_large,
579 if (!hLg)
580 {
581 ERR("Failed to load large IDI_SHELL_DOCUMENT icon!\n");
582 goto end;
583 }
584
586 {
587 ERR("Failed to add IDI_SHELL_DOCUMENT icon to cache.\n");
588 goto end;
589 }
591 {
592 ERR("Failed to add IDI_SHELL_DOCUMENT icon to cache.\n");
593 goto end;
594 }
595
596 /* Everything went fine */
597 result = TRUE;
598
599end:
600 /* The image list keeps a copy of the icons, we must destroy them */
601 if(hSm) DestroyIcon(hSm);
602 if(hLg) DestroyIcon(hLg);
603
604 /* Clean everything if something went wrong */
605 if(!result)
606 {
610 sic_hdpa = NULL;
613 }
614
615 TRACE("hIconSmall=%p hIconBig=%p\n",ShellSmallIconList, ShellBigIconList);
616
617 return result;
618}
static HDC hDC
Definition: 3dtext.c:33
DWORD bpp
Definition: surface.c:185
BOOL WINAPI DPA_Destroy(HDPA hdpa)
Definition: dpa.c:396
HDPA WINAPI DPA_Create(INT nGrow)
Definition: dpa.c:950
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
Definition: imagelist.c:804
GLuint GLuint end
Definition: gl.h:1545
GLuint64EXT * result
Definition: glext.h:11304
static INT SIC_IconAppend(LPCWSTR sSourceFile, INT dwSourceIndex, HICON hSmallIcon, HICON hBigIcon, DWORD dwFlags)
Definition: iconcache.cpp:326
static HDC
Definition: imagelist.c:92
static HICON
Definition: imagelist.c:84
#define ILC_COLOR4
Definition: commctrl.h:354
#define ILC_COLOR16
Definition: commctrl.h:356
#define ILC_COLOR8
Definition: commctrl.h:355
#define ILC_COLOR32
Definition: commctrl.h:358
#define ILC_MASK
Definition: commctrl.h:351
#define ILC_COLOR24
Definition: commctrl.h:357
#define ILC_COLOR
Definition: commctrl.h:352
#define IDI_SHELL_DOCUMENT
Definition: shresdef.h:538
DWORD WINAPI GetLastError(void)
Definition: except.c:1042
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
HDC WINAPI CreateICW(_In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_opt_ const DEVMODEW *)
#define BITSPIXEL
Definition: wingdi.h:720
BOOL WINAPI DeleteDC(_In_ HDC)
#define IMAGE_ICON
Definition: winuser.h:212
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
Definition: cursoricon.c:2172
#define SM_CYSMICON
Definition: winuser.h:1007
#define SM_CXSMICON
Definition: winuser.h:1006
#define SM_CYICON
Definition: winuser.h:967
#define LR_SHARED
Definition: winuser.h:1094
#define LR_DEFAULTCOLOR
Definition: winuser.h:1081
#define SM_CXICON
Definition: winuser.h:966
int WINAPI GetSystemMetrics(_In_ int)
BOOL WINAPI DestroyIcon(_In_ HICON)
Definition: cursoricon.c:2022

Referenced by FileIconInit(), PidlToSicIndex(), Shell_GetImageLists(), SIC_GetIconIndex(), and SIC_LoadOverlayIcon().

◆ UNIXFS_is_rooted_at_desktop()

BOOL UNIXFS_is_rooted_at_desktop ( void  )

Variable Documentation

◆ DECLSPEC_HIDDEN

const GUID CLSID_UnixDosFolder DECLSPEC_HIDDEN
extern

Definition at line 35 of file shell32_main.h.