ReactOS  0.4.12-dev-75-g00dd17e
shellord.c File Reference
#include <wine/config.h>
#include <windef.h>
#include <winbase.h>
#include <wine/winternl.h>
#include <shlobj.h>
#include <undocshell.h>
#include <shlwapi.h>
#include <commdlg.h>
#include <commoncontrols.h>
#include "../shellrecyclebin/recyclebin.h"
#include <wine/debug.h>
#include <wine/unicode.h>
#include "pidl.h"
#include "shell32_main.h"
Include dependency graph for shellord.c:

Go to the source code of this file.

Classes

struct  tagCREATEMRULIST
 
struct  _PSXA
 
struct  _PSXA_CALL
 

Macros

#define WIN32_NO_STATUS
 
#define _INC_WINDOWS
 
#define COBJMACROS
 
#define MRUF_STRING_LIST   0 /* list will contain strings */
 
#define MRUF_BINARY_LIST   1 /* list will contain binary data */
 
#define MRUF_DELAYED_SAVE   2 /* only save list order to reg. is FreeMRUList */
 

Typedefs

typedef struct tagCREATEMRULIST CREATEMRULISTA
 
typedef struct tagCREATEMRULISTLPCREATEMRULISTA
 
typedef struct _PSXA PSXA
 
typedef struct _PSXAPPSXA
 
typedef struct _PSXA_CALL PSXA_CALL
 
typedef struct _PSXA_CALLPPSXA_CALL
 

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (shell)
 
 WINE_DECLARE_DEBUG_CHANNEL (pidl)
 
HANDLE WINAPI CreateMRUListA (LPCREATEMRULISTA lpcml)
 
VOID WINAPI FreeMRUList (HANDLE hMRUList)
 
INT WINAPI AddMRUData (HANDLE hList, LPCVOID lpData, DWORD cbData)
 
INT WINAPI FindMRUData (HANDLE hList, LPCVOID lpData, DWORD cbData, LPINT lpRegNum)
 
INT WINAPI EnumMRUListA (HANDLE hList, INT nItemPos, LPVOID lpBuffer, DWORD nBufferSize)
 
DWORD WINAPI ParseFieldA (LPCSTR src, DWORD nField, LPSTR dst, DWORD len)
 
DWORD WINAPI ParseFieldW (LPCWSTR src, DWORD nField, LPWSTR dst, DWORD len)
 
DWORD WINAPI ParseFieldAW (LPCVOID src, DWORD nField, LPVOID dst, DWORD len)
 
BOOL WINAPI GetFileNameFromBrowse (HWND hwndOwner, LPWSTR lpstrFile, UINT nMaxFile, LPCWSTR lpstrInitialDir, LPCWSTR lpstrDefExt, LPCWSTR lpstrFilter, LPCWSTR lpstrTitle)
 
VOID WINAPI SHGetSetSettings (LPSHELLSTATE lpss, DWORD dwMask, BOOL bSet)
 
VOID WINAPI SHGetSettings (LPSHELLFLAGSTATE lpsfs, DWORD dwMask)
 
LRESULT WINAPI SHShellFolderView_Message (HWND hwndCabinet, UINT uMessage, LPARAM lParam)
 
BOOL WINAPI RegisterShellHook (HWND hWnd, DWORD dwType)
 
int ShellMessageBoxW (HINSTANCE hInstance, HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType,...)
 
int ShellMessageBoxA (HINSTANCE hInstance, HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType,...)
 
HRESULT WINAPI SHRegisterDragDrop (HWND hWnd, LPDROPTARGET pDropTarget)
 
HRESULT WINAPI SHRevokeDragDrop (HWND hWnd)
 
HRESULT WINAPI SHDoDragDrop (HWND hWnd, LPDATAOBJECT lpDataObject, LPDROPSOURCE lpDropSource, DWORD dwOKEffect, LPDWORD pdwEffect)
 
WORD WINAPI ArrangeWindows (HWND hwndParent, DWORD dwReserved, const RECT *lpRect, WORD cKids, const HWND *lpKids)
 
BOOL WINAPI SignalFileOpen (PCIDLIST_ABSOLUTE pidl)
 
static INT SHADD_get_policy (LPCSTR policy, LPDWORD type, LPVOID buffer, LPDWORD len)
 
static INT CALLBACK SHADD_compare_mru (LPCVOID data1, LPCVOID data2, DWORD cbData)
 
static INT SHADD_create_add_mru_data (HANDLE mruhandle, LPCSTR doc_name, LPCSTR new_lnk_name, LPSTR buffer, INT *len)
 
void WINAPI SHAddToRecentDocs (UINT uFlags, LPCVOID pv)
 
HRESULT WINAPI SHCreateShellFolderViewEx (LPCSFV psvcbi, IShellView **ppv)
 
HRESULT WINAPI SHWinHelp (DWORD v, DWORD w, DWORD x, DWORD z)
 
BOOL WINAPI SHRunControlPanel (LPCWSTR commandLine, HWND parent)
 
VOID WINAPI SHSetInstanceExplorer (LPUNKNOWN lpUnknown)
 
HRESULT WINAPI SHGetInstanceExplorer (IUnknown **lpUnknown)
 
void WINAPI SHFreeUnusedLibraries (void)
 
BOOL WINAPI DAD_AutoScroll (HWND hwnd, AUTO_SCROLL_DATA *samples, const POINT *pt)
 
BOOL WINAPI DAD_DragEnter (HWND hwnd)
 
BOOL WINAPI DAD_DragEnterEx (HWND hwnd, POINT p)
 
BOOL WINAPI DAD_DragMove (POINT p)
 
BOOL WINAPI DAD_DragLeave (VOID)
 
BOOL WINAPI DAD_SetDragImage (HIMAGELIST himlTrack, LPPOINT lppt)
 
BOOL WINAPI DAD_ShowDragImage (BOOL bShow)
 
BOOL WINAPI ReadCabinetState (CABINETSTATE *cs, int length)
 
BOOL WINAPI WriteCabinetState (CABINETSTATE *cs)
 
BOOL WINAPI FileIconInit (BOOL bFullInit)
 
BOOL WINAPI IsUserAnAdmin (VOID)
 
HRESULT WINAPI SetAppStartingCursor (HWND u, DWORD v)
 
HRESULT WINAPI SHLoadOLE (LPARAM lParam)
 
int WINAPI DriveType (int DriveType)
 
int WINAPI InvalidateDriveType (int u)
 
HRESULT WINAPI SHAbortInvokeCommand (void)
 
int WINAPI SHOutOfMemoryMessageBox (HWND hwndOwner, LPCSTR lpCaption, UINT uType)
 
HRESULT WINAPI SHFlushClipboard (void)
 
BOOL WINAPI SHWaitForFileToOpen (LPCITEMIDLIST pidl, DWORD dwFlags, DWORD dwTimeout)
 
DWORD WINAPI RLBuildListOfPaths (void)
 
BOOL WINAPI SHValidateUNC (HWND hwndOwner, PWSTR pszFile, UINT fConnect)
 
DWORD WINAPI DoEnvironmentSubstA (LPSTR pszString, UINT cchString)
 
DWORD WINAPI DoEnvironmentSubstW (LPWSTR pszString, UINT cchString)
 
DWORD WINAPI DoEnvironmentSubstAW (LPVOID x, UINT y)
 
BOOL WINAPI GUIDFromStringA (LPCSTR str, LPGUID guid)
 
BOOL WINAPI GUIDFromStringW (LPCWSTR str, LPGUID guid)
 
BOOL WINAPI PathIsTemporaryA (LPSTR Str)
 
BOOL WINAPI PathIsTemporaryW (LPWSTR Str)
 
static BOOL CALLBACK PsxaCall (HPROPSHEETPAGE hpage, LPARAM lParam)
 
UINT WINAPI SHAddFromPropSheetExtArray (HPSXA hpsxa, LPFNADDPROPSHEETPAGE lpfnAddPage, LPARAM lParam)
 
HPSXA WINAPI SHCreatePropSheetExtArray (HKEY hKey, LPCWSTR pszSubKey, UINT max_iface)
 
HPSXA WINAPI SHCreatePropSheetExtArrayEx (HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, LPDATAOBJECT pDataObj)
 
UINT WINAPI SHReplaceFromPropSheetExtArray (HPSXA hpsxa, UINT uPageID, LPFNADDPROPSHEETPAGE lpfnReplaceWith, LPARAM lParam)
 
void WINAPI SHDestroyPropSheetExtArray (HPSXA hpsxa)
 
HRESULT WINAPI CIDLData_CreateFromIDArray (PCIDLIST_ABSOLUTE pidlFolder, UINT cpidlFiles, PCUIDLIST_RELATIVE_ARRAY lppidlFiles, LPDATAOBJECT *ppdataObject)
 
HRESULT WINAPI SHCreateStdEnumFmtEtc (UINT cFormats, const FORMATETC *lpFormats, LPENUMFORMATETC *ppenumFormatetc)
 
BOOL WINAPI SHFindFiles (LPCITEMIDLIST pidlFolder, LPCITEMIDLIST pidlSaveFile)
 
void WINAPI SHUpdateImageW (LPCWSTR pszHashItem, int iIndex, UINT uFlags, int iImageIndex)
 
VOID WINAPI SHUpdateImageA (LPCSTR pszHashItem, INT iIndex, UINT uFlags, INT iImageIndex)
 
INT WINAPI SHHandleUpdateImage (LPCITEMIDLIST pidlExtra)
 
BOOL WINAPI SHObjectProperties (HWND hwnd, DWORD dwType, LPCWSTR szObject, LPCWSTR szPage)
 
BOOL WINAPI SHGetNewLinkInfoA (LPCSTR pszLinkTo, LPCSTR pszDir, LPSTR pszName, BOOL *pfMustCopy, UINT uFlags)
 
BOOL WINAPI SHGetNewLinkInfoW (LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszName, BOOL *pfMustCopy, UINT uFlags)
 
HRESULT WINAPI SHStartNetConnectionDialog (HWND hwnd, LPCSTR pszRemoteName, DWORD dwType)
 
HRESULT WINAPI SHSetLocalizedName (LPCWSTR pszPath, LPCWSTR pszResModule, int idsRes)
 
BOOL WINAPI LinkWindow_RegisterClass (void)
 
BOOL WINAPI LinkWindow_UnregisterClass (DWORD dwUnused)
 
void WINAPI SHFlushSFCache (void)
 
HRESULT WINAPI SHGetImageList (int iImageList, REFIID riid, void **ppv)
 
HRESULT WINAPI SHCreateShellFolderView (const SFV_CREATE *pcsfv, IShellView **ppsv)
 

Variables

static LPUNKNOWN SHELL32_IExplorerInterface =0
 
static const WCHAR szwCabLocation []
 
static const WCHAR szwSettings [] = { 'S','e','t','t','i','n','g','s',0 }
 

Macro Definition Documentation

◆ _INC_WINDOWS

#define _INC_WINDOWS

Definition at line 26 of file shellord.c.

◆ COBJMACROS

#define COBJMACROS

Definition at line 27 of file shellord.c.

◆ MRUF_BINARY_LIST

#define MRUF_BINARY_LIST   1 /* list will contain binary data */

Definition at line 62 of file shellord.c.

Referenced by SHAddToRecentDocs().

◆ MRUF_DELAYED_SAVE

#define MRUF_DELAYED_SAVE   2 /* only save list order to reg. is FreeMRUList */

Definition at line 63 of file shellord.c.

Referenced by SHAddToRecentDocs().

◆ MRUF_STRING_LIST

#define MRUF_STRING_LIST   0 /* list will contain strings */

Definition at line 61 of file shellord.c.

◆ WIN32_NO_STATUS

#define WIN32_NO_STATUS

Definition at line 25 of file shellord.c.

Typedef Documentation

◆ CREATEMRULISTA

◆ LPCREATEMRULISTA

◆ PPSXA

typedef struct _PSXA * PPSXA

◆ PPSXA_CALL

◆ PSXA

typedef struct _PSXA PSXA

◆ PSXA_CALL

Function Documentation

◆ AddMRUData()

INT WINAPI AddMRUData ( HANDLE  hList,
LPCVOID  lpData,
DWORD  cbData 
)

Definition at line 465 of file comctl32undoc.c.

Referenced by SHADD_create_add_mru_data().

466 {
467  LPWINEMRULIST mp = hList;
468  LPWINEMRUITEM witem;
469  INT i, replace;
470 
471  if ((replace = FindMRUData (hList, lpData, cbData, NULL)) >= 0) {
472  /* Item exists, just move it to the front */
473  LPWSTR pos = strchrW(mp->realMRU, replace + 'a');
474  while (pos > mp->realMRU)
475  {
476  pos[0] = pos[-1];
477  pos--;
478  }
479  }
480  else {
481  /* either add a new entry or replace oldest */
482  if (mp->cursize < mp->extview.uMax) {
483  /* Add in a new item */
484  replace = mp->cursize;
485  mp->cursize++;
486  }
487  else {
488  /* get the oldest entry and replace data */
489  replace = mp->realMRU[mp->cursize - 1] - 'a';
490  Free(mp->array[replace]);
491  }
492 
493  /* Allocate space for new item and move in the data */
494  mp->array[replace] = witem = Alloc(cbData + sizeof(WINEMRUITEM));
495  witem->itemFlag |= WMRUIF_CHANGED;
496  witem->size = cbData;
497  memcpy( &witem->datastart, lpData, cbData);
498 
499  /* now rotate MRU list */
500  for(i=mp->cursize-1; i>=1; i--)
501  mp->realMRU[i] = mp->realMRU[i-1];
502  }
503 
504  /* The new item gets the front spot */
505  mp->wineFlags |= WMRUF_CHANGED;
506  mp->realMRU[0] = replace + 'a';
507 
508  TRACE("(%p, %p, %d) adding data, /%c/ now most current\n",
509  hList, lpData, cbData, replace+'a');
510 
511  if (!(mp->extview.fFlags & MRU_CACHEWRITE)) {
512  /* save changed stuff right now */
513  MRU_SaveChanged( mp );
514  }
515 
516  return replace;
517 }
#define WMRUIF_CHANGED
WINE_UNICODE_INLINE WCHAR * strchrW(const WCHAR *str, WCHAR ch)
Definition: unicode.h:248
int32_t INT
Definition: typedefs.h:56
LPVOID WINAPI Alloc(DWORD dwSize)
Definition: comctl32undoc.c:71
GLenum GLclampf GLint i
Definition: glfuncs.h:14
smooth NULL
Definition: ftsmooth.c:416
INT replace(TCHAR source[MAX_PATH], TCHAR dest[MAX_PATH], DWORD dwFlags, BOOL *doMore)
Definition: replace.c:47
#define TRACE(s)
Definition: solgame.cpp:4
#define MRU_CACHEWRITE
BOOL WINAPI Free(LPVOID lpMem)
LPWINEMRUITEM * array
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
INT WINAPI FindMRUData(HANDLE hList, LPCVOID lpData, DWORD cbData, LPINT lpRegNum)
HWND hList
Definition: livecd.c:10
#define WMRUF_CHANGED
MRUINFOW extview
static void MRU_SaveChanged(LPWINEMRULIST mp)
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ ArrangeWindows()

WORD WINAPI ArrangeWindows ( HWND  hwndParent,
DWORD  dwReserved,
const RECT lpRect,
WORD  cKids,
const HWND lpKids 
)

Definition at line 521 of file shellord.c.

523 {
524  /* Unimplemented in WinXP SP3 */
525  TRACE("(%p 0x%08x %p 0x%04x %p):stub.\n",
526  hwndParent, dwReserved, lpRect, cKids, lpKids);
527  return 0;
528 }
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:90
#define TRACE(s)
Definition: solgame.cpp:4

◆ CIDLData_CreateFromIDArray()

HRESULT WINAPI CIDLData_CreateFromIDArray ( PCIDLIST_ABSOLUTE  pidlFolder,
UINT  cpidlFiles,
PCUIDLIST_RELATIVE_ARRAY  lppidlFiles,
LPDATAOBJECT ppdataObject 
)

Definition at line 1852 of file shellord.c.

Referenced by CZipFolder::GetUIObjectOf(), CCommonFolder< CRegistryFolder, RegPidlEntry, CRegistryFolderExtractIcon >::GetUIObjectOf(), and SHCreateDataObject().

1857 {
1858  UINT i;
1859  HWND hwnd = 0; /*FIXME: who should be hwnd of owner? set to desktop */
1860  HRESULT hResult;
1861 
1862  TRACE("(%p, %d, %p, %p)\n", pidlFolder, cpidlFiles, lppidlFiles, ppdataObject);
1863  if (TRACE_ON(pidl))
1864  {
1865  pdump (pidlFolder);
1866  for (i=0; i<cpidlFiles; i++) pdump (lppidlFiles[i]);
1867  }
1868  hResult = IDataObject_Constructor(hwnd, pidlFolder, lppidlFiles, cpidlFiles, ppdataObject);
1869  return hResult;
1870 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
HRESULT IDataObject_Constructor(HWND hwndOwner, PCIDLIST_ABSOLUTE pMyPidl, PCUIDLIST_RELATIVE_ARRAY apidl, UINT cidl, IDataObject **dataObject)
GLenum GLclampf GLint i
Definition: glfuncs.h:14
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
unsigned int UINT
Definition: ndis.h:50
void pdump(LPCITEMIDLIST pidl)
Definition: debughlp.cpp:248
#define TRACE_ON(x)
Definition: compat.h:65

◆ CreateMRUListA()

HANDLE WINAPI CreateMRUListA ( LPCREATEMRULISTA  lpcml)

Referenced by SHAddToRecentDocs().

◆ DAD_AutoScroll()

BOOL WINAPI DAD_AutoScroll ( HWND  hwnd,
AUTO_SCROLL_DATA samples,
const POINT pt 
)

Definition at line 1143 of file shellord.c.

1144 {
1145  FIXME("hwnd = %p %p %p\n",hwnd,samples,pt);
1146  return FALSE;
1147 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ DAD_DragEnter()

BOOL WINAPI DAD_DragEnter ( HWND  hwnd)

Definition at line 1152 of file shellord.c.

1153 {
1154  FIXME("hwnd = %p\n",hwnd);
1155  return FALSE;
1156 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ DAD_DragEnterEx()

BOOL WINAPI DAD_DragEnterEx ( HWND  hwnd,
POINT  p 
)

Definition at line 1161 of file shellord.c.

1162 {
1163  FIXME("hwnd = %p (%d,%d)\n",hwnd,p.x,p.y);
1164  return FALSE;
1165 }
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
#define FIXME(fmt,...)
Definition: debug.h:110

◆ DAD_DragLeave()

BOOL WINAPI DAD_DragLeave ( VOID  )

Definition at line 1179 of file shellord.c.

1180 {
1181  FIXME("\n");
1182  return FALSE;
1183 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ DAD_DragMove()

BOOL WINAPI DAD_DragMove ( POINT  p)

Definition at line 1170 of file shellord.c.

1171 {
1172  FIXME("(%d,%d)\n",p.x,p.y);
1173  return FALSE;
1174 }
long y
Definition: polytest.cpp:48
long x
Definition: polytest.cpp:48
#define FIXME(fmt,...)
Definition: debug.h:110

◆ DAD_SetDragImage()

BOOL WINAPI DAD_SetDragImage ( HIMAGELIST  himlTrack,
LPPOINT  lppt 
)

Definition at line 1190 of file shellord.c.

1193 {
1194  FIXME("%p %p stub\n",himlTrack, lppt);
1195  return FALSE;
1196 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ DAD_ShowDragImage()

BOOL WINAPI DAD_ShowDragImage ( BOOL  bShow)

Definition at line 1203 of file shellord.c.

1204 {
1205  FIXME("0x%08x stub\n",bShow);
1206  return FALSE;
1207 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ DoEnvironmentSubstA()

DWORD WINAPI DoEnvironmentSubstA ( LPSTR  pszString,
UINT  cchString 
)

Definition at line 1494 of file shellord.c.

Referenced by DoEnvironmentSubstAW(), and test_DoEnvironmentSubst().

1495 {
1496  LPSTR dst;
1497  BOOL res = FALSE;
1498  DWORD len = cchString;
1499 
1500  TRACE("(%s, %d)\n", debugstr_a(pszString), cchString);
1501  if (pszString == NULL) /* Really return 0? */
1502  return 0;
1503  if ((dst = (LPSTR)HeapAlloc(GetProcessHeap(), 0, cchString * sizeof(CHAR))))
1504  {
1505  len = ExpandEnvironmentStringsA(pszString, dst, cchString);
1506  /* len includes the terminating 0 */
1507  if (len && len < cchString)
1508  {
1509  res = TRUE;
1510  memcpy(pszString, dst, len);
1511  }
1512  else
1513  len = cchString;
1514 
1515  HeapFree(GetProcessHeap(), 0, dst);
1516  }
1517  return MAKELONG(len, res);
1518 }
#define TRUE
Definition: types.h:120
char CHAR
Definition: xmlstorage.h:175
char * LPSTR
Definition: xmlstorage.h:182
#define MAKELONG(a, b)
Definition: typedefs.h:248
smooth NULL
Definition: ftsmooth.c:416
DWORD WINAPI ExpandEnvironmentStringsA(IN LPCSTR lpSrc, IN LPSTR lpDst, IN DWORD nSize)
Definition: environ.c:399
#define TRACE(s)
Definition: solgame.cpp:4
unsigned int BOOL
Definition: ntddk_ex.h:94
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define debugstr_a
Definition: kernel32.h:31
unsigned long DWORD
Definition: ntddk_ex.h:95
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
GLuint const GLubyte GLvoid const GLvoid * dst
Definition: s_context.h:57
GLuint res
Definition: glext.h:9613
#define HeapFree(x, y, z)
Definition: compat.h:394
_In_ DWORD _In_ DWORD _Out_writes_to_opt_ pcchString LPSTR pszString
Definition: wincrypt.h:4507

◆ DoEnvironmentSubstAW()

DWORD WINAPI DoEnvironmentSubstAW ( LPVOID  x,
UINT  y 
)

Definition at line 1569 of file shellord.c.

1570 {
1571  if (SHELL_OsIsUnicode())
1572  return DoEnvironmentSubstW(x, y);
1573  return DoEnvironmentSubstA(x, y);
1574 }
static __inline BOOL SHELL_OsIsUnicode(void)
Definition: shell32_main.h:130
INT INT y
Definition: msvc.h:62
DWORD WINAPI DoEnvironmentSubstW(LPWSTR pszString, UINT cchString)
Definition: shellord.c:1539
DWORD WINAPI DoEnvironmentSubstA(LPSTR pszString, UINT cchString)
Definition: shellord.c:1494

◆ DoEnvironmentSubstW()

DWORD WINAPI DoEnvironmentSubstW ( LPWSTR  pszString,
UINT  cchString 
)

Definition at line 1539 of file shellord.c.

Referenced by DoEnvironmentSubstAW(), and test_DoEnvironmentSubst().

1540 {
1541  LPWSTR dst;
1542  BOOL res = FALSE;
1543  DWORD len = cchString;
1544 
1545  TRACE("(%s, %d)\n", debugstr_w(pszString), cchString);
1546 
1547  if ((cchString < MAXLONG) && (dst = HeapAlloc(GetProcessHeap(), 0, cchString * sizeof(WCHAR))))
1548  {
1549  len = ExpandEnvironmentStringsW(pszString, dst, cchString);
1550  /* len includes the terminating 0 */
1551  if (len && len <= cchString)
1552  {
1553  res = TRUE;
1554  memcpy(pszString, dst, len * sizeof(WCHAR));
1555  }
1556  else
1557  len = cchString;
1558 
1559  HeapFree(GetProcessHeap(), 0, dst);
1560  }
1561  return MAKELONG(len, res);
1562 }
#define TRUE
Definition: types.h:120
#define MAXLONG
Definition: umtypes.h:116
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define debugstr_w
Definition: kernel32.h:32
#define MAKELONG(a, b)
Definition: typedefs.h:248
#define TRACE(s)
Definition: solgame.cpp:4
unsigned int BOOL
Definition: ntddk_ex.h:94
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
unsigned long DWORD
Definition: ntddk_ex.h:95
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
GLuint const GLubyte GLvoid const GLvoid * dst
Definition: s_context.h:57
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
Definition: environ.c:519
GLuint res
Definition: glext.h:9613
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define HeapFree(x, y, z)
Definition: compat.h:394
_In_ DWORD _In_ DWORD _Out_writes_to_opt_ pcchString LPSTR pszString
Definition: wincrypt.h:4507

◆ DriveType()

int WINAPI DriveType ( int  DriveType)

Definition at line 1412 of file shellord.c.

Referenced by DriveType().

1413 {
1414  WCHAR root[] = L"A:\\";
1415  root[0] = L'A' + DriveType;
1416  return GetDriveTypeW(root);
1417 }
__wchar_t WCHAR
Definition: xmlstorage.h:180
int WINAPI DriveType(int DriveType)
Definition: shellord.c:1412
static const WCHAR L[]
Definition: oid.c:1087
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
Definition: disk.c:497

◆ EnumMRUListA()

INT WINAPI EnumMRUListA ( HANDLE  hList,
INT  nItemPos,
LPVOID  lpBuffer,
DWORD  nBufferSize 
)

Definition at line 863 of file comctl32undoc.c.

Referenced by SHAddToRecentDocs().

865 {
866  const WINEMRULIST *mp = hList;
867  LPWINEMRUITEM witem;
868  INT desired, datasize;
869  DWORD lenA;
870 
871  if (!mp) return -1;
872  if ((nItemPos < 0) || !lpBuffer) return mp->cursize;
873  if (nItemPos >= mp->cursize) return -1;
874  desired = mp->realMRU[nItemPos];
875  desired -= 'a';
876  TRACE("nItemPos=%d, desired=%d\n", nItemPos, desired);
877  witem = mp->array[desired];
878  if(mp->extview.fFlags & MRU_BINARY) {
879  datasize = min( witem->size, nBufferSize );
880  memcpy( lpBuffer, &witem->datastart, datasize);
881  } else {
882  lenA = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)&witem->datastart, -1,
883  NULL, 0, NULL, NULL);
884  datasize = min( lenA, nBufferSize );
885  WideCharToMultiByte(CP_ACP, 0, (LPWSTR)&witem->datastart, -1,
886  lpBuffer, datasize, NULL, NULL);
887  ((char *)lpBuffer)[ datasize - 1 ] = '\0';
888  datasize = lenA - 1;
889  }
890  TRACE("(%p, %d, %p, %d): returning len=%d\n",
891  hList, nItemPos, lpBuffer, nBufferSize, datasize);
892  return datasize;
893 }
#define WideCharToMultiByte
Definition: compat.h:101
#define CP_ACP
Definition: compat.h:99
int desired
Definition: jpeglib.h:1116
#define MRU_BINARY
int32_t INT
Definition: typedefs.h:56
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
unsigned long DWORD
Definition: ntddk_ex.h:95
LPWINEMRUITEM * array
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
HWND hList
Definition: livecd.c:10
#define min(a, b)
Definition: monoChain.cc:55
MRUINFOW extview
WCHAR * LPWSTR
Definition: xmlstorage.h:184

◆ FileIconInit()

BOOL WINAPI FileIconInit ( BOOL  bFullInit)

Definition at line 1298 of file shellord.c.

Referenced by DisplayImageList(), and StartWithDesktop().

1299 {
1300  return SIC_Initialize();
1301 }
BOOL SIC_Initialize(void)
Definition: iconcache.cpp:484

◆ FindMRUData()

INT WINAPI FindMRUData ( HANDLE  hList,
LPCVOID  lpData,
DWORD  cbData,
LPINT  lpRegNum 
)

Definition at line 391 of file comctl32undoc.c.

Referenced by SHAddToRecentDocs().

393 {
394  const WINEMRULIST *mp = hList;
395  INT ret;
396  UINT i;
397  LPSTR dataA = NULL;
398 
399  if (!mp || !mp->extview.u.string_cmpfn)
400  return -1;
401 
402  if(!(mp->extview.fFlags & MRU_BINARY) && !mp->isUnicode) {
403  DWORD len = WideCharToMultiByte(CP_ACP, 0, lpData, -1,
404  NULL, 0, NULL, NULL);
405  dataA = Alloc(len);
406  WideCharToMultiByte(CP_ACP, 0, lpData, -1, dataA, len, NULL, NULL);
407  }
408 
409  for(i=0; i<mp->cursize; i++) {
410  if (mp->extview.fFlags & MRU_BINARY) {
411  if (!mp->extview.u.binary_cmpfn(lpData, &mp->array[i]->datastart, cbData))
412  break;
413  }
414  else {
415  if(mp->isUnicode) {
416  if (!mp->extview.u.string_cmpfn(lpData, (LPWSTR)&mp->array[i]->datastart))
417  break;
418  } else {
420  (LPWSTR)&mp->array[i]->datastart, -1,
421  NULL, 0, NULL, NULL);
422  LPSTR itemA = Alloc(len);
423  INT cmp;
424  WideCharToMultiByte(CP_ACP, 0, (LPWSTR)&mp->array[i]->datastart, -1,
425  itemA, len, NULL, NULL);
426 
427  cmp = mp->extview.u.string_cmpfn((LPWSTR)dataA, (LPWSTR)itemA);
428  Free(itemA);
429  if(!cmp)
430  break;
431  }
432  }
433  }
434  Free(dataA);
435  if (i < mp->cursize)
436  ret = i;
437  else
438  ret = -1;
439  if (lpRegNum && (ret != -1))
440  *lpRegNum = 'a' + i;
441 
442  TRACE("(%p, %p, %d, %p) returning %d\n",
443  hList, lpData, cbData, lpRegNum, ret);
444 
445  return ret;
446 }
#define WideCharToMultiByte
Definition: compat.h:101
#define CP_ACP
Definition: compat.h:99
#define MRU_BINARY
#define cmp(status, error)
Definition: error.c:114
char * LPSTR
Definition: xmlstorage.h:182
int32_t INT
Definition: typedefs.h:56
LPVOID WINAPI Alloc(DWORD dwSize)
Definition: comctl32undoc.c:71
GLenum GLclampf GLint i
Definition: glfuncs.h:14
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
unsigned int UINT
Definition: ndis.h:50
unsigned long DWORD
Definition: ntddk_ex.h:95
BOOL WINAPI Free(LPVOID lpMem)
int ret
LPWINEMRUITEM * array
GLenum GLsizei len
Definition: glext.h:6722
HWND hList
Definition: livecd.c:10
MRUBinaryCmpFn binary_cmpfn
union tagMRUINFOW::@326 u
MRUINFOW extview
WCHAR * LPWSTR
Definition: xmlstorage.h:184
MRUStringCmpFnW string_cmpfn

◆ FreeMRUList()

VOID WINAPI FreeMRUList ( HANDLE  hMRUList)

Definition at line 351 of file comctl32undoc.c.

Referenced by SHAddToRecentDocs().

352 {
353  LPWINEMRULIST mp = hMRUList;
354  UINT i;
355 
356  TRACE("(%p)\n", hMRUList);
357  if (!hMRUList)
358  return;
359 
360  if (mp->wineFlags & WMRUF_CHANGED) {
361  /* need to open key and then save the info */
362  MRU_SaveChanged( mp );
363  }
364 
365  for(i=0; i<mp->extview.uMax; i++)
366  Free(mp->array[i]);
367 
368  Free(mp->realMRU);
369  Free(mp->array);
370  Free(mp->extview.lpszSubKey);
371  Free(mp);
372 }
GLenum GLclampf GLint i
Definition: glfuncs.h:14
#define TRACE(s)
Definition: solgame.cpp:4
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI Free(LPVOID lpMem)
LPWINEMRUITEM * array
LPWSTR lpszSubKey
#define WMRUF_CHANGED
MRUINFOW extview
static void MRU_SaveChanged(LPWINEMRULIST mp)

◆ GetFileNameFromBrowse()

BOOL WINAPI GetFileNameFromBrowse ( HWND  hwndOwner,
LPWSTR  lpstrFile,
UINT  nMaxFile,
LPCWSTR  lpstrInitialDir,
LPCWSTR  lpstrDefExt,
LPCWSTR  lpstrFilter,
LPCWSTR  lpstrTitle 
)

Definition at line 150 of file shellord.c.

158 {
159 typedef BOOL (WINAPI *GetOpenFileNameProc)(OPENFILENAMEW *ofn);
161  GetOpenFileNameProc pGetOpenFileNameW;
163  BOOL ret;
164 
165  TRACE("%p, %s, %d, %s, %s, %s, %s)\n",
166  hwndOwner, debugstr_w(lpstrFile), nMaxFile, lpstrInitialDir, lpstrDefExt,
167  lpstrFilter, lpstrTitle);
168 
169  hmodule = LoadLibraryW(L"comdlg32.dll");
170  if(!hmodule) return FALSE;
171  pGetOpenFileNameW = (GetOpenFileNameProc)GetProcAddress(hmodule, "GetOpenFileNameW");
172  if(!pGetOpenFileNameW)
173  {
174  FreeLibrary(hmodule);
175  return FALSE;
176  }
177 
178  memset(&ofn, 0, sizeof(ofn));
179 
180  ofn.lStructSize = sizeof(ofn);
181  ofn.hwndOwner = hwndOwner;
182  ofn.lpstrFilter = lpstrFilter;
183  ofn.lpstrFile = lpstrFile;
184  ofn.nMaxFile = nMaxFile;
185  ofn.lpstrInitialDir = lpstrInitialDir;
186  ofn.lpstrTitle = lpstrTitle;
187  ofn.lpstrDefExt = lpstrDefExt;
189  ret = pGetOpenFileNameW(&ofn);
190 
191  FreeLibrary(hmodule);
192  return ret;
193 }
#define OFN_FILEMUSTEXIST
Definition: commdlg.h:106
#define OFN_EXPLORER
Definition: commdlg.h:104
DWORD Flags
Definition: commdlg.h:373
LPCWSTR lpstrFilter
Definition: commdlg.h:363
LPCWSTR lpstrInitialDir
Definition: commdlg.h:371
LPWSTR lpstrFile
Definition: commdlg.h:367
OPENFILENAME ofn
Definition: main.cpp:37
DWORD lStructSize
Definition: commdlg.h:360
LPCWSTR lpstrDefExt
Definition: commdlg.h:376
#define debugstr_w
Definition: kernel32.h:32
static HMODULE hmodule
Definition: rasapi.c:29
#define LoadLibraryW(x)
Definition: compat.h:404
#define TRACE(s)
Definition: solgame.cpp:4
#define FreeLibrary(x)
Definition: compat.h:405
unsigned int BOOL
Definition: ntddk_ex.h:94
LPCWSTR lpstrTitle
Definition: commdlg.h:372
DWORD nMaxFile
Definition: commdlg.h:368
int ret
HWND hwndOwner
Definition: commdlg.h:361
static const WCHAR L[]
Definition: oid.c:1087
#define OFN_HIDEREADONLY
Definition: commdlg.h:107
#define WINAPI
Definition: msvc.h:20
#define GetProcAddress(x, y)
Definition: compat.h:410
#define memset(x, y, z)
Definition: compat.h:39
#define BOOL
Definition: msvc.h:23

◆ GUIDFromStringA()

BOOL WINAPI GUIDFromStringA ( LPCSTR  str,
LPGUID  guid 
)

Definition at line 1579 of file shellord.c.

1580 {
1581  TRACE("GUIDFromStringA() stub\n");
1582  return FALSE;
1583 }
#define TRACE(s)
Definition: solgame.cpp:4

◆ GUIDFromStringW()

BOOL WINAPI GUIDFromStringW ( LPCWSTR  str,
LPGUID  guid 
)

Definition at line 1588 of file shellord.c.

1589 {
1590  UNICODE_STRING guid_str;
1591 
1592  RtlInitUnicodeString(&guid_str, str);
1593  return !RtlGUIDFromString(&guid_str, guid);
1594 }
const WCHAR * str
NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING, GUID *)
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)

◆ InvalidateDriveType()

int WINAPI InvalidateDriveType ( int  u)

Definition at line 1422 of file shellord.c.

1423 {
1424  TRACE("0x%08x stub\n",u);
1425  return 0;
1426 }
GLenum GLclampf GLint GLenum GLuint GLenum GLenum GLsizei GLenum const GLvoid GLfloat GLfloat GLfloat GLfloat GLclampd GLint 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 GLboolean GLboolean GLboolean GLint GLenum GLsizei const GLvoid GLenum GLint GLenum GLint GLint GLsizei GLint GLenum GLint GLint GLint GLint GLsizei GLenum GLsizei const GLuint GLboolean GLenum GLenum GLint GLsizei GLenum GLsizei GLenum const GLvoid GLboolean const GLboolean GLenum const GLdouble * u
Definition: glfuncs.h:88
#define TRACE(s)
Definition: solgame.cpp:4

◆ IsUserAnAdmin()

BOOL WINAPI IsUserAnAdmin ( VOID  )

Definition at line 1315 of file shellord.c.

Referenced by CStartMenuBtnCtxMenu::AddStartContextMenuItems(), OnInitUserProfileDialog(), and OnNotify().

1316 {
1318  HANDLE hToken;
1319  DWORD dwSize;
1320  PTOKEN_GROUPS lpGroups;
1321  PSID lpSid;
1322  DWORD i;
1323  BOOL bResult = FALSE;
1324 
1325  TRACE("\n");
1327  {
1328  return FALSE;
1329  }
1330 
1331  if (!GetTokenInformation(hToken, TokenGroups, NULL, 0, &dwSize))
1332  {
1334  {
1335  CloseHandle(hToken);
1336  return FALSE;
1337  }
1338  }
1339 
1340  lpGroups = HeapAlloc(GetProcessHeap(), 0, dwSize);
1341  if (lpGroups == NULL)
1342  {
1343  CloseHandle(hToken);
1344  return FALSE;
1345  }
1346 
1347  if (!GetTokenInformation(hToken, TokenGroups, lpGroups, dwSize, &dwSize))
1348  {
1349  HeapFree(GetProcessHeap(), 0, lpGroups);
1350  CloseHandle(hToken);
1351  return FALSE;
1352  }
1353 
1354  CloseHandle(hToken);
1356  DOMAIN_ALIAS_RID_ADMINS, 0, 0, 0, 0, 0, 0,
1357  &lpSid))
1358  {
1359  HeapFree(GetProcessHeap(), 0, lpGroups);
1360  return FALSE;
1361  }
1362 
1363  for (i = 0; i < lpGroups->GroupCount; i++)
1364  {
1365  if (EqualSid(lpSid, lpGroups->Groups[i].Sid))
1366  {
1367  bResult = TRUE;
1368  break;
1369  }
1370  }
1371 
1372  FreeSid(lpSid);
1373  HeapFree(GetProcessHeap(), 0, lpGroups);
1374  return bResult;
1375 }
#define TRUE
Definition: types.h:120
#define CloseHandle
Definition: compat.h:398
BOOL WINAPI EqualSid(PSID pSid1, PSID pSid2)
Definition: security.c:704
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
GLenum GLclampf GLint i
Definition: glfuncs.h:14
PVOID WINAPI FreeSid(PSID pSid)
Definition: security.c:573
smooth NULL
Definition: ftsmooth.c:416
#define SECURITY_NT_AUTHORITY
Definition: setypes.h:526
#define TRACE(s)
Definition: solgame.cpp:4
unsigned int BOOL
Definition: ntddk_ex.h:94
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
#define SECURITY_BUILTIN_DOMAIN_RID
Definition: setypes.h:553
#define TOKEN_QUERY
Definition: setypes.h:874
HANDLE WINAPI GetCurrentProcess(VOID)
Definition: proc.c:1168
unsigned long DWORD
Definition: ntddk_ex.h:95
SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]
Definition: setypes.h:964
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
Definition: security.c:292
$ULONG GroupCount
Definition: setypes.h:960
BOOL WINAPI GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength)
Definition: security.c:409
#define DOMAIN_ALIAS_RID_ADMINS
Definition: setypes.h:624
#define HeapFree(x, y, z)
Definition: compat.h:394
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:54
BOOL WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, PSID *pSid)
Definition: security.c:549
#define ERROR_INSUFFICIENT_BUFFER
Definition: dderror.h:10

◆ LinkWindow_RegisterClass()

BOOL WINAPI LinkWindow_RegisterClass ( void  )

Definition at line 2043 of file shellord.c.

2044 {
2045  FIXME("()\n");
2046  return TRUE;
2047 }
#define TRUE
Definition: types.h:120
#define FIXME(fmt,...)
Definition: debug.h:110

◆ LinkWindow_UnregisterClass()

BOOL WINAPI LinkWindow_UnregisterClass ( DWORD  dwUnused)

Definition at line 2052 of file shellord.c.

2053 {
2054  FIXME("()\n");
2055  return TRUE;
2056 }
#define TRUE
Definition: types.h:120
#define FIXME(fmt,...)
Definition: debug.h:110

◆ ParseFieldA()

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

Definition at line 79 of file shellord.c.

Referenced by HCR_RegGetIconA(), and ParseFieldAW().

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

◆ ParseFieldAW()

DWORD WINAPI ParseFieldAW ( LPCVOID  src,
DWORD  nField,
LPVOID  dst,
DWORD  len 
)

Definition at line 139 of file shellord.c.

140 {
141  if (SHELL_OsIsUnicode())
142  return ParseFieldW(src, nField, dst, len);
143  return ParseFieldA(src, nField, dst, len);
144 }
DWORD WINAPI ParseFieldW(LPCWSTR src, DWORD nField, LPWSTR dst, DWORD len)
Definition: shellord.c:113
static __inline BOOL SHELL_OsIsUnicode(void)
Definition: shell32_main.h:130
GLuint const GLubyte GLvoid * src
Definition: s_context.h:57
DWORD WINAPI ParseFieldA(LPCSTR src, DWORD nField, LPSTR dst, DWORD len)
Definition: shellord.c:79
GLenum GLsizei len
Definition: glext.h:6722

◆ ParseFieldW()

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

Definition at line 113 of file shellord.c.

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

114 {
115  WARN("(%s,0x%08x,%p,%d) semi-stub.\n", debugstr_w(src), nField, dst, len);
116 
117  if (!src || !src[0] || !dst || !len)
118  return 0;
119 
120  /* skip n fields delimited by ',' */
121  while (nField > 1)
122  {
123  if (*src == 0x0) return FALSE;
124  if (*src++ == ',') nField--;
125  }
126 
127  /* copy part till the next ',' to dst */
128  while ( *src != 0x0 && *src != ',' && (len--)>0 ) *(dst++) = *(src++);
129 
130  /* finalize the string */
131  *dst = 0x0;
132 
133  return TRUE;
134 }
#define TRUE
Definition: types.h:120
#define WARN(fmt,...)
Definition: debug.h:111
GLuint const GLubyte GLvoid * src
Definition: s_context.h:57
#define debugstr_w
Definition: kernel32.h:32
GLenum GLsizei len
Definition: glext.h:6722
GLuint const GLubyte GLvoid const GLvoid * dst
Definition: s_context.h:57

◆ PathIsTemporaryA()

BOOL WINAPI PathIsTemporaryA ( LPSTR  Str)

Definition at line 1599 of file shellord.c.

1600 {
1601  FIXME("(%s)stub\n", debugstr_a(Str));
1602  return FALSE;
1603 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define debugstr_a
Definition: kernel32.h:31

◆ PathIsTemporaryW()

BOOL WINAPI PathIsTemporaryW ( LPWSTR  Str)

Definition at line 1608 of file shellord.c.

1609 {
1610  FIXME("(%s)stub\n", debugstr_w(Str));
1611  return FALSE;
1612 }
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110

◆ PsxaCall()

static BOOL CALLBACK PsxaCall ( HPROPSHEETPAGE  hpage,
LPARAM  lParam 
)
static

Definition at line 1630 of file shellord.c.

Referenced by SHAddFromPropSheetExtArray(), and SHReplaceFromPropSheetExtArray().

1631 {
1632  PPSXA_CALL Call = (PPSXA_CALL)lParam;
1633 
1634  if (Call != NULL)
1635  {
1636  if ((Call->bMultiple || !Call->bCalled) &&
1637  Call->lpfnAddReplaceWith(hpage, Call->lParam))
1638  {
1639  Call->bCalled = TRUE;
1640  Call->uiCount++;
1641  return TRUE;
1642  }
1643  }
1644 
1645  return FALSE;
1646 }
#define TRUE
Definition: types.h:120
struct _PSXA_CALL * PPSXA_CALL
UINT uiCount
Definition: shellord.c:1627
smooth NULL
Definition: ftsmooth.c:416
BOOL bMultiple
Definition: shellord.c:1626
LPARAM lParam
Definition: shellord.c:1624
LPFNADDPROPSHEETPAGE lpfnAddReplaceWith
Definition: shellord.c:1623
BOOL bCalled
Definition: shellord.c:1625
LPARAM lParam
Definition: combotst.c:139

◆ ReadCabinetState()

BOOL WINAPI ReadCabinetState ( CABINETSTATE cs,
int  length 
)

Definition at line 1224 of file shellord.c.

Referenced by full_title(), CShellBrowser::Initialize(), IntGetNewWindowMode(), and IntSetNewWindowMode().

1225 {
1226  HKEY hkey = 0;
1227  DWORD type, r;
1228 
1229  TRACE("%p %d\n", cs, length);
1230 
1231  if( (cs == NULL) || (length < (int)sizeof(*cs)) )
1232  return FALSE;
1233 
1235  if( r == ERROR_SUCCESS )
1236  {
1237  type = REG_BINARY;
1238  r = RegQueryValueExW( hkey, szwSettings,
1239  NULL, &type, (LPBYTE)cs, (LPDWORD)&length );
1240  RegCloseKey( hkey );
1241 
1242  }
1243 
1244  /* if we can't read from the registry, create default values */
1245  if ( (r != ERROR_SUCCESS) || (cs->cLength < sizeof(*cs)) ||
1246  (cs->cLength != length) )
1247  {
1248  TRACE("Initializing shell cabinet settings\n");
1249  memset(cs, 0, sizeof(*cs));
1250  cs->cLength = sizeof(*cs);
1251  cs->nVersion = 2;
1252  cs->fFullPathTitle = FALSE;
1253  cs->fSaveLocalView = TRUE;
1254  cs->fNotShell = FALSE;
1255  cs->fSimpleDefault = TRUE;
1256  cs->fDontShowDescBar = FALSE;
1257  cs->fNewWindowMode = FALSE;
1258  cs->fShowCompColor = FALSE;
1259  cs->fDontPrettyNames = FALSE;
1261  cs->fMenuEnumFilter = 96;
1262  }
1263 
1264  return TRUE;
1265 }
#define TRUE
Definition: types.h:120
static const WCHAR szwSettings[]
Definition: shellord.c:1218
#define ERROR_SUCCESS
Definition: deptool.c:10
#define REG_BINARY
Definition: nt_native.h:1496
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
#define HKEY_CURRENT_USER
Definition: winreg.h:11
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
BOOL fNotShell
Definition: shlobj.h:2165
BOOL fDontPrettyNames
Definition: shlobj.h:2170
WORD nVersion
Definition: shlobj.h:2162
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
unsigned char * LPBYTE
Definition: typedefs.h:52
BOOL fSaveLocalView
Definition: shlobj.h:2164
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3311
BOOL fShowCompColor
Definition: shlobj.h:2169
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4134
GLenum GLuint GLenum GLsizei length
Definition: glext.h:5579
BOOL fNewWindowMode
Definition: shlobj.h:2168
BOOL fFullPathTitle
Definition: shlobj.h:2163
unsigned long DWORD
Definition: ntddk_ex.h:95
BOOL fDontShowDescBar
Definition: shlobj.h:2167
UINT fMenuEnumFilter
Definition: shlobj.h:2174
BOOL fSimpleDefault
Definition: shlobj.h:2166
WORD cLength
Definition: shlobj.h:2161
BOOL fAdminsCreateCommonGroups
Definition: shlobj.h:2171
uint32_t * LPDWORD
Definition: typedefs.h:57
static const WCHAR szwCabLocation[]
Definition: shellord.c:1209
#define memset(x, y, z)
Definition: compat.h:39

◆ RegisterShellHook()

BOOL WINAPI RegisterShellHook ( HWND  hWnd,
DWORD  dwType 
)

Definition at line 308 of file shellord.c.

Referenced by CTaskSwitchWnd::OnCreate(), and CTaskSwitchWnd::OnDestroy().

311 {
312  if (dwType == 3)
313  {
314  SetTaskmanWindow(hWnd);
315  return RegisterShellHookWindow(hWnd);
316  }
317  else if (dwType == 0)
318  {
319  return DeregisterShellHookWindow(hWnd);
320  }
321 
322  ERR("Unsupported argument");
323  return FALSE;
324 }
BOOL WINAPI RegisterShellHookWindow(_In_ HWND)
#define ERR(fmt,...)
Definition: debug.h:109
HWND WINAPI SetTaskmanWindow(HWND)
Definition: window.c:1875
BOOL WINAPI DeregisterShellHookWindow(_In_ HWND)

◆ RLBuildListOfPaths()

DWORD WINAPI RLBuildListOfPaths ( void  )

Definition at line 1475 of file shellord.c.

1476 { FIXME("stub\n");
1477  return 0;
1478 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ SetAppStartingCursor()

HRESULT WINAPI SetAppStartingCursor ( HWND  u,
DWORD  v 
)

Definition at line 1380 of file shellord.c.

1381 { FIXME("hwnd=%p 0x%04x stub\n",u,v );
1382  return 0;
1383 }
#define FIXME(fmt,...)
Definition: debug.h:110
const GLdouble * v
Definition: gl.h:2040

◆ SHAbortInvokeCommand()

HRESULT WINAPI SHAbortInvokeCommand ( void  )

Definition at line 1431 of file shellord.c.

1432 { FIXME("stub\n");
1433  return 1;
1434 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ SHADD_compare_mru()

static INT CALLBACK SHADD_compare_mru ( LPCVOID  data1,
LPCVOID  data2,
DWORD  cbData 
)
static

Definition at line 597 of file shellord.c.

Referenced by SHAddToRecentDocs().

598 {
599  return lstrcmpiA(data1, data2);
600 }
int WINAPI lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:42
Definition: tftpd.h:125
Definition: tftpd.h:137

◆ SHADD_create_add_mru_data()

static INT SHADD_create_add_mru_data ( HANDLE  mruhandle,
LPCSTR  doc_name,
LPCSTR  new_lnk_name,
LPSTR  buffer,
INT len 
)
static

Definition at line 615 of file shellord.c.

Referenced by SHAddToRecentDocs().

617 {
618  LPSTR ptr;
619  INT wlen;
620 
621  /*FIXME: Document:
622  * RecentDocs MRU data structure seems to be:
623  * +0h document file name w/ terminating 0h
624  * +nh short int w/ size of remaining
625  * +n+2h 02h 30h, or 01h 30h, or 00h 30h - unknown
626  * +n+4h 10 bytes zeros - unknown
627  * +n+eh shortcut file name w/ terminating 0h
628  * +n+e+nh 3 zero bytes - unknown
629  */
630 
631  /* Create the MRU data structure for "RecentDocs"
632  */
633  ptr = buffer;
634  lstrcpyA(ptr, doc_name);
635  ptr += (lstrlenA(buffer) + 1);
636  wlen= lstrlenA(new_lnk_name) + 1 + 12;
637  *((short int*)ptr) = wlen;
638  ptr += 2; /* step past the length */
639  *(ptr++) = 0x30; /* unknown reason */
640  *(ptr++) = 0; /* unknown, but can be 0x00, 0x01, 0x02 */
641  memset(ptr, 0, 10);
642  ptr += 10;
643  lstrcpyA(ptr, new_lnk_name);
644  ptr += (lstrlenA(new_lnk_name) + 1);
645  memset(ptr, 0, 3);
646  ptr += 3;
647  *len = ptr - buffer;
648 
649  /* Add the new entry into the MRU list
650  */
651  return AddMRUData(mruhandle, buffer, *len);
652 }
GLuint buffer
Definition: glext.h:5915
char * LPSTR
Definition: xmlstorage.h:182
int32_t INT
Definition: typedefs.h:56
INT WINAPI AddMRUData(HANDLE hList, LPCVOID lpData, DWORD cbData)
static PVOID ptr
Definition: dispmode.c:27
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:100
GLenum GLsizei len
Definition: glext.h:6722
int WINAPI lstrlenA(LPCSTR lpString)
Definition: lstring.c:145
#define memset(x, y, z)
Definition: compat.h:39

◆ SHADD_get_policy()

static INT SHADD_get_policy ( LPCSTR  policy,
LPDWORD  type,
LPVOID  buffer,
LPDWORD  len 
)
static

Definition at line 557 of file shellord.c.

Referenced by SHAddToRecentDocs().

558 {
559  HKEY Policy_basekey;
560  INT ret;
561 
562  /* Get the key for the policies location in the registry
563  */
565  "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",
566  0, KEY_READ, &Policy_basekey)) {
567 
569  "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer",
570  0, KEY_READ, &Policy_basekey)) {
571  TRACE("No Explorer Policies location exists. Policy wanted=%s\n",
572  policy);
573  *len = 0;
574  return ERROR_FILE_NOT_FOUND;
575  }
576  }
577 
578  /* Retrieve the data if it exists
579  */
580  ret = SHQueryValueExA(Policy_basekey, policy, 0, type, buffer, len);
581  RegCloseKey(Policy_basekey);
582  return ret;
583 }
#define KEY_READ
Definition: nt_native.h:1023
#define HKEY_CURRENT_USER
Definition: winreg.h:11
LONG WINAPI RegOpenKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD ulOptions, _In_ REGSAM samDesired, _Out_ PHKEY phkResult)
Definition: reg.c:3346
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
int32_t INT
Definition: typedefs.h:56
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
#define TRACE(s)
Definition: solgame.cpp:4
DWORD WINAPI SHQueryValueExA(HKEY hKey, LPCSTR lpszValue, LPDWORD lpReserved, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
Definition: reg.c:1402
int ret
GLenum GLsizei len
Definition: glext.h:6722
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12

◆ SHAddFromPropSheetExtArray()

UINT WINAPI SHAddFromPropSheetExtArray ( HPSXA  hpsxa,
LPFNADDPROPSHEETPAGE  lpfnAddPage,
LPARAM  lParam 
)

Definition at line 1651 of file shellord.c.

Referenced by Applet1(), DisplayAdvancedSettings(), KeyboardApplet(), LoadPropSheetHandlers(), MouseApplet(), SH_ShowDriveProperties(), and SystemApplet().

1652 {
1653  PSXA_CALL Call;
1654  UINT i;
1655  PPSXA psxa = (PPSXA)hpsxa;
1656 
1657  TRACE("(%p,%p,%08lx)\n", hpsxa, lpfnAddPage, lParam);
1658 
1659  if (psxa)
1660  {
1661  ZeroMemory(&Call, sizeof(Call));
1662  Call.lpfnAddReplaceWith = lpfnAddPage;
1663  Call.lParam = lParam;
1664  Call.bMultiple = TRUE;
1665 
1666  /* Call the AddPage method of all registered IShellPropSheetExt interfaces */
1667  for (i = 0; i != psxa->uiCount; i++)
1668  {
1669  psxa->pspsx[i]->lpVtbl->AddPages(psxa->pspsx[i], PsxaCall, (LPARAM)&Call);
1670  }
1671 
1672  return Call.uiCount;
1673  }
1674 
1675  return 0;
1676 }
UINT uiCount
Definition: shellord.c:1616
HRESULT AddPages([in] LPFNSVADDPROPSHEETPAGE pfnAddPage, [in] LPARAM lParam)
#define TRUE
Definition: types.h:120
struct _PSXA * PPSXA
#define ZeroMemory
Definition: winbase.h:1635
UINT uiCount
Definition: shellord.c:1627
GLenum GLclampf GLint i
Definition: glfuncs.h:14
static BOOL CALLBACK PsxaCall(HPROPSHEETPAGE hpage, LPARAM lParam)
Definition: shellord.c:1630
LONG_PTR LPARAM
Definition: windef.h:208
#define TRACE(s)
Definition: solgame.cpp:4
unsigned int UINT
Definition: ndis.h:50
IShellPropSheetExt * pspsx[1]
Definition: shellord.c:1618
BOOL bMultiple
Definition: shellord.c:1626
LPARAM lParam
Definition: shellord.c:1624
LPFNADDPROPSHEETPAGE lpfnAddReplaceWith
Definition: shellord.c:1623
LPARAM lParam
Definition: combotst.c:139

◆ SHAddToRecentDocs()

void WINAPI SHAddToRecentDocs ( UINT  uFlags,
LPCVOID  pv 
)

Definition at line 669 of file shellord.c.

Referenced by StartMenu::ActivateEntry(), ShellEntry::launch_entry(), and Entry::launch_entry().

670 {
671 /* If list is a string list lpfnCompare has the following prototype
672  * int CALLBACK MRUCompareString(LPCSTR s1, LPCSTR s2)
673  * for binary lists the prototype is
674  * int CALLBACK MRUCompareBinary(LPCVOID data1, LPCVOID data2, DWORD cbData)
675  * where cbData is the no. of bytes to compare.
676  * Need to check what return value means identical - 0?
677  */
678 
679 
680  UINT olderrormode;
681  HKEY HCUbasekey;
682  CHAR doc_name[MAX_PATH];
683  CHAR link_dir[MAX_PATH];
684  CHAR new_lnk_filepath[MAX_PATH];
685  CHAR new_lnk_name[MAX_PATH];
686  CHAR * ext;
687  IMalloc *ppM;
688  LPITEMIDLIST pidl;
689  HWND hwnd = 0; /* FIXME: get real window handle */
690  INT ret;
691  DWORD data[64], datalen, type;
692 
693  TRACE("%04x %p\n", uFlags, pv);
694 
695  /*FIXME: Document:
696  * RecentDocs MRU data structure seems to be:
697  * +0h document file name w/ terminating 0h
698  * +nh short int w/ size of remaining
699  * +n+2h 02h 30h, or 01h 30h, or 00h 30h - unknown
700  * +n+4h 10 bytes zeros - unknown
701  * +n+eh shortcut file name w/ terminating 0h
702  * +n+e+nh 3 zero bytes - unknown
703  */
704 
705  /* See if we need to do anything.
706  */
707  datalen = 64;
708  ret=SHADD_get_policy( "NoRecentDocsHistory", &type, data, &datalen);
709  if ((ret > 0) && (ret != ERROR_FILE_NOT_FOUND)) {
710  ERR("Error %d getting policy \"NoRecentDocsHistory\"\n", ret);
711  return;
712  }
713  if (ret == ERROR_SUCCESS) {
714  if (!( (type == REG_DWORD) ||
715  ((type == REG_BINARY) && (datalen == 4)) )) {
716  ERR("Error policy data for \"NoRecentDocsHistory\" not formatted correctly, type=%d, len=%d\n",
717  type, datalen);
718  return;
719  }
720 
721  TRACE("policy value for NoRecentDocsHistory = %08x\n", data[0]);
722  /* now test the actual policy value */
723  if ( data[0] != 0)
724  return;
725  }
726 
727  /* Open key to where the necessary info is
728  */
729  /* FIXME: This should be done during DLL PROCESS_ATTACH (or THREAD_ATTACH)
730  * and the close should be done during the _DETACH. The resulting
731  * key is stored in the DLL global data.
732  */
734  "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer",
735  0, 0, 0, KEY_READ, 0, &HCUbasekey, 0)) {
736  ERR("Failed to create 'Software\\Microsoft\\Windows\\CurrentVersion\\Explorer'\n");
737  return;
738  }
739 
740  /* Get path to user's "Recent" directory
741  */
742  if(SUCCEEDED(SHGetMalloc(&ppM))) {
744  &pidl))) {
745  SHGetPathFromIDListA(pidl, link_dir);
746  IMalloc_Free(ppM, pidl);
747  }
748  else {
749  /* serious issues */
750  link_dir[0] = 0;
751  ERR("serious issues 1\n");
752  }
753  IMalloc_Release(ppM);
754  }
755  else {
756  /* serious issues */
757  link_dir[0] = 0;
758  ERR("serious issues 2\n");
759  }
760  TRACE("Users Recent dir %s\n", link_dir);
761 
762  /* If no input, then go clear the lists */
763  if (!pv) {
764  /* clear user's Recent dir
765  */
766 
767  /* FIXME: delete all files in "link_dir"
768  *
769  * while( more files ) {
770  * lstrcpyA(old_lnk_name, link_dir);
771  * PathAppendA(old_lnk_name, filenam);
772  * DeleteFileA(old_lnk_name);
773  * }
774  */
775  FIXME("should delete all files in %s\\\n", link_dir);
776 
777  /* clear MRU list
778  */
779  /* MS Bug ?? v4.72.3612.1700 of shell32 does the delete against
780  * HKEY_LOCAL_MACHINE version of ...CurrentVersion\Explorer
781  * and naturally it fails w/ rc=2. It should do it against
782  * HKEY_CURRENT_USER which is where it is stored, and where
783  * the MRU routines expect it!!!!
784  */
785  RegDeleteKeyA(HCUbasekey, "RecentDocs");
786  RegCloseKey(HCUbasekey);
787  return;
788  }
789 
790  /* Have data to add, the jobs to be done:
791  * 1. Add document to MRU list in registry "HKCU\Software\
792  * Microsoft\Windows\CurrentVersion\Explorer\RecentDocs".
793  * 2. Add shortcut to document in the user's Recent directory
794  * (CSIDL_RECENT).
795  * 3. Add shortcut to Start menu's Documents submenu.
796  */
797 
798  /* Get the pure document name from the input
799  */
800  switch (uFlags)
801  {
802  case SHARD_PIDL:
803  if (!SHGetPathFromIDListA(pv, doc_name))
804  {
805  WARN("can't get path from PIDL\n");
806  return;
807  }
808  break;
809 
810  case SHARD_PATHA:
811  lstrcpynA(doc_name, pv, MAX_PATH);
812  break;
813 
814  case SHARD_PATHW:
815  WideCharToMultiByte(CP_ACP, 0, pv, -1, doc_name, MAX_PATH, NULL, NULL);
816  break;
817 
818  default:
819  FIXME("Unsupported flags: %u\n", uFlags);
820  return;
821  }
822 
823  TRACE("full document name %s\n", debugstr_a(doc_name));
824 
825 #ifdef __REACTOS__
826  /* check if file is a shortcut */
827  ext = strrchr(doc_name, '.');
828  if (!lstrcmpiA(ext, ".lnk"))
829  {
830  WCHAR doc_nameW[MAX_PATH];
831  IShellLinkA* ShellLink;
832  int nLength = MultiByteToWideChar(CP_ACP, 0, doc_name, -1, doc_nameW, MAX_PATH);
833  if (nLength == 0)
834  return;
835 
836  IShellLink_ConstructFromPath(doc_nameW, &IID_IShellLinkA, (LPVOID*)&ShellLink);
837  IShellLinkA_GetPath(ShellLink, doc_name, MAX_PATH, NULL, 0);
838  IShellLinkA_Release(ShellLink);
839  }
840 
841  ext = strrchr(doc_name, '.');
842  if (!lstrcmpiA(ext, ".exe"))
843  {
844  /* executables are not added */
845  return;
846  }
847 #endif
848 
849  PathStripPathA(doc_name);
850  TRACE("stripped document name %s\n", debugstr_a(doc_name));
851 
852 
853  /* *** JOB 1: Update registry for ...\Explorer\RecentDocs list *** */
854 
855  { /* on input needs:
856  * doc_name - pure file-spec, no path
857  * link_dir - path to the user's Recent directory
858  * HCUbasekey - key of ...Windows\CurrentVersion\Explorer" node
859  * creates:
860  * new_lnk_name- pure file-spec, no path for new .lnk file
861  * new_lnk_filepath
862  * - path and file name of new .lnk file
863  */
864  CREATEMRULISTA mymru;
865  HANDLE mruhandle;
866  INT len, pos, bufused, err;
867  INT i;
868  DWORD attr;
869  CHAR buffer[2048];
870  CHAR *ptr;
871  CHAR old_lnk_name[MAX_PATH];
872  short int slen;
873 
874  mymru.cbSize = sizeof(CREATEMRULISTA);
875  mymru.nMaxItems = 15;
877  mymru.hKey = HCUbasekey;
878  mymru.lpszSubKey = "RecentDocs";
879  mymru.lpfnCompare = SHADD_compare_mru;
880  mruhandle = CreateMRUListA(&mymru);
881  if (!mruhandle) {
882  /* MRU failed */
883  ERR("MRU processing failed, handle zero\n");
884  RegCloseKey(HCUbasekey);
885  return;
886  }
887  len = lstrlenA(doc_name);
888  pos = FindMRUData(mruhandle, doc_name, len, 0);
889 
890  /* Now get the MRU entry that will be replaced
891  * and delete the .lnk file for it
892  */
893  if ((bufused = EnumMRUListA(mruhandle, (pos == -1) ? 14 : pos,
894  buffer, 2048)) != -1) {
895  ptr = buffer;
896  ptr += (lstrlenA(buffer) + 1);
897  slen = *((short int*)ptr);
898  ptr += 2; /* skip the length area */
899  if (bufused >= slen + (ptr-buffer)) {
900  /* buffer size looks good */
901  ptr += 12; /* get to string */
902  len = bufused - (ptr-buffer); /* get length of buf remaining */
903  if (ptr[0] && (lstrlenA(ptr) <= len-1)) {
904  /* appears to be good string */
905  lstrcpyA(old_lnk_name, link_dir);
906  PathAppendA(old_lnk_name, ptr);
907  if (!DeleteFileA(old_lnk_name)) {
908  if ((attr = GetFileAttributesA(old_lnk_name)) == INVALID_FILE_ATTRIBUTES) {
909  if ((err = GetLastError()) != ERROR_FILE_NOT_FOUND) {
910  ERR("Delete for %s failed, err=%d, attr=%08x\n",
911  old_lnk_name, err, attr);
912  }
913  else {
914  TRACE("old .lnk file %s did not exist\n",
915  old_lnk_name);
916  }
917  }
918  else {
919  ERR("Delete for %s failed, attr=%08x\n",
920  old_lnk_name, attr);
921  }
922  }
923  else {
924  TRACE("deleted old .lnk file %s\n", old_lnk_name);
925  }
926  }
927  }
928  }
929 
930  /* Create usable .lnk file name for the "Recent" directory
931  */
932  wsprintfA(new_lnk_name, "%s.lnk", doc_name);
933  lstrcpyA(new_lnk_filepath, link_dir);
934  PathAppendA(new_lnk_filepath, new_lnk_name);
935  i = 1;
936  olderrormode = SetErrorMode(SEM_FAILCRITICALERRORS);
937  while (GetFileAttributesA(new_lnk_filepath) != INVALID_FILE_ATTRIBUTES) {
938  i++;
939  wsprintfA(new_lnk_name, "%s (%u).lnk", doc_name, i);
940  lstrcpyA(new_lnk_filepath, link_dir);
941  PathAppendA(new_lnk_filepath, new_lnk_name);
942  }
943  SetErrorMode(olderrormode);
944  TRACE("new shortcut will be %s\n", new_lnk_filepath);
945 
946  /* Now add the new MRU entry and data
947  */
948  pos = SHADD_create_add_mru_data(mruhandle, doc_name, new_lnk_name,
949  buffer, &len);
950  FreeMRUList(mruhandle);
951  TRACE("Updated MRU list, new doc is position %d\n", pos);
952  }
953 
954  /* *** JOB 2: Create shortcut in user's "Recent" directory *** */
955 
956  { /* on input needs:
957  * doc_name - pure file-spec, no path
958  * new_lnk_filepath
959  * - path and file name of new .lnk file
960  * uFlags[in] - flags on call to SHAddToRecentDocs
961  * pv[in] - document path/pidl on call to SHAddToRecentDocs
962  */
963  IShellLinkA *psl = NULL;
964  IPersistFile *pPf = NULL;
965  HRESULT hres;
966  CHAR desc[MAX_PATH];
967  WCHAR widelink[MAX_PATH];
968 
969  CoInitialize(0);
970 
971  hres = CoCreateInstance( &CLSID_ShellLink,
972  NULL,
973  CLSCTX_INPROC_SERVER,
974  &IID_IShellLinkA,
975  (LPVOID )&psl);
976  if(SUCCEEDED(hres)) {
977 
978  hres = IShellLinkA_QueryInterface(psl, &IID_IPersistFile,
979  (LPVOID *)&pPf);
980  if(FAILED(hres)) {
981  /* bombed */
982  ERR("failed QueryInterface for IPersistFile %08x\n", hres);
983  goto fail;
984  }
985 
986  /* Set the document path or pidl */
987  if (uFlags == SHARD_PIDL) {
988  hres = IShellLinkA_SetIDList(psl, pv);
989  } else {
990  hres = IShellLinkA_SetPath(psl, pv);
991  }
992  if(FAILED(hres)) {
993  /* bombed */
994  ERR("failed Set{IDList|Path} %08x\n", hres);
995  goto fail;
996  }
997 
998  lstrcpyA(desc, "Shortcut to ");
999  lstrcatA(desc, doc_name);
1000  hres = IShellLinkA_SetDescription(psl, desc);
1001  if(FAILED(hres)) {
1002  /* bombed */
1003  ERR("failed SetDescription %08x\n", hres);
1004  goto fail;
1005  }
1006 
1007  MultiByteToWideChar(CP_ACP, 0, new_lnk_filepath, -1,
1008  widelink, MAX_PATH);
1009  /* create the short cut */
1010  hres = IPersistFile_Save(pPf, widelink, TRUE);
1011  if(FAILED(hres)) {
1012  /* bombed */
1013  ERR("failed IPersistFile::Save %08x\n", hres);
1014  IPersistFile_Release(pPf);
1015  IShellLinkA_Release(psl);
1016  goto fail;
1017  }
1018  hres = IPersistFile_SaveCompleted(pPf, widelink);
1019  IPersistFile_Release(pPf);
1020  IShellLinkA_Release(psl);
1021  TRACE("shortcut %s has been created, result=%08x\n",
1022  new_lnk_filepath, hres);
1023  }
1024  else {
1025  ERR("CoCreateInstance failed, hres=%08x\n", hres);
1026  }
1027  }
1028 
1029  fail:
1030  CoUninitialize();
1031 
1032  /* all done */
1033  RegCloseKey(HCUbasekey);
1034  return;
1035 }
UINT WINAPI SetErrorMode(IN UINT uMode)
Definition: except.c:753
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define TRUE
Definition: types.h:120
BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST pidl, LPSTR pszPath)
Definition: pidl.c:1264
#define MRUF_DELAYED_SAVE
Definition: shellord.c:63
#define ERROR_SUCCESS
Definition: deptool.c:10
int WINAPI lstrcmpiA(LPCSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:42
#define WideCharToMultiByte
Definition: compat.h:101
#define SEM_FAILCRITICALERRORS
Definition: rtltypes.h:69
#define SHARD_PATHA
Definition: shlobj.h:1078
#define REG_BINARY
Definition: nt_native.h:1496
#define KEY_READ
Definition: nt_native.h:1023
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define CP_ACP
Definition: compat.h:99
#define HKEY_CURRENT_USER
Definition: winreg.h:11
char CHAR
Definition: xmlstorage.h:175
BOOL WINAPI PathAppendA(LPSTR lpszPath, LPCSTR lpszAppend)
Definition: path.c:101
#define WARN(fmt,...)
Definition: debug.h:111
_In_ DWORD nLength
Definition: wincon.h:461
HRESULT WINAPI SHGetMalloc(LPMALLOC *lpmal)
Definition: shellole.c:290
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
DWORD WINAPI GetLastError(VOID)
Definition: except.c:1059
VOID WINAPI FreeMRUList(HANDLE hMRUList)
GLuint buffer
Definition: glext.h:5915
static INT SHADD_get_policy(LPCSTR policy, LPDWORD type, LPVOID buffer, LPDWORD len)
Definition: shellord.c:557
static INT SHADD_create_add_mru_data(HANDLE mruhandle, LPCSTR doc_name, LPCSTR new_lnk_name, LPSTR buffer, INT *len)
Definition: shellord.c:615
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
UINT uFlags
Definition: api.c:60
int const JOCTET unsigned int datalen
Definition: jpeglib.h:1027
int32_t INT
Definition: typedefs.h:56
static INT CALLBACK SHADD_compare_mru(LPCVOID data1, LPCVOID data2, DWORD cbData)
Definition: shellord.c:597
#define MRUF_BINARY_LIST
Definition: shellord.c:62
#define CSIDL_RECENT
Definition: shlobj.h:1996
struct tagCREATEMRULIST CREATEMRULISTA
GLenum GLclampf GLint i
Definition: glfuncs.h:14
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
Definition: fileinfo.c:786
DWORD void * pv
Definition: msvc.h:87
#define FIXME(fmt,...)
Definition: debug.h:110
static PVOID ptr
Definition: dispmode.c:27
HANDLE WINAPI CreateMRUListA(LPCREATEMRULISTA lpcml)
const struct builtin_class_descr * desc
Definition: regcontrol.c:48
smooth NULL
Definition: ftsmooth.c:416
char ext[3]
Definition: mkdosfs.c:358
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
Definition: delete.c:24
LPCSTR lpszSubKey
Definition: shellord.c:56
#define ERROR_FILE_NOT_FOUND
Definition: disk.h:79
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:123
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT hres
Definition: protocol.c:465
#define debugstr_a
Definition: kernel32.h:31
HRESULT WINAPI SHGetSpecialFolderLocation(HWND hwndOwner, INT nFolder, LPITEMIDLIST *ppidl)
Definition: shellpath.c:2687
LONG HRESULT
Definition: typedefs.h:77
#define MAX_PATH
Definition: compat.h:26
unsigned int UINT
Definition: ndis.h:50
unsigned long DWORD
Definition: ntddk_ex.h:95
#define INVALID_FILE_ATTRIBUTES
Definition: vfdcmd.c:23
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
Definition: lstring.c:100
void WINAPI PathStripPathA(LPSTR lpszPath)
Definition: path.c:672
int ret
__u8 attr
Definition: mkdosfs.c:359
GLenum GLsizei len
Definition: glext.h:6722
DWORD nMaxItems
Definition: shellord.c:53
#define err(...)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3237
#define ERR(fmt,...)
Definition: debug.h:109
LONG WINAPI RegDeleteKeyA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey)
Definition: reg.c:1225
int WINAPI lstrlenA(LPCSTR lpString)
Definition: lstring.c:145
int WINAPIV wsprintfA(_Out_ LPSTR, _In_ _Printf_format_string_ LPCSTR,...)
void WINAPI DECLSPEC_HOTPATCH CoUninitialize(void)
Definition: compobj.c:1994
INT WINAPI FindMRUData(HANDLE hList, LPCVOID lpData, DWORD cbData, LPINT lpRegNum)
#define SHARD_PATHW
Definition: shlobj.h:1079
#define lstrcpynA
Definition: compat.h:408
static IMalloc * ppM
Definition: shlfolder.c:47
#define MultiByteToWideChar
Definition: compat.h:100
HRESULT WINAPI CoInitialize(LPVOID lpReserved)
Definition: compobj.c:1900
const GUID IID_IPersistFile
#define SHARD_PIDL
Definition: shlobj.h:1077
LONG WINAPI RegCreateKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD Reserved, _In_ LPSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_ LPDWORD lpdwDisposition)
Definition: reg.c:1032
#define REG_DWORD
Definition: sdbapi.c:539
INT WINAPI EnumMRUListA(HANDLE hList, INT nItemPos, LPVOID lpBuffer, DWORD nBufferSize)
ITEMIDLIST UNALIGNED * LPITEMIDLIST
Definition: shtypes.idl:41
#define SUCCEEDED(hr)
Definition: intsafe.h:57

◆ SHCreatePropSheetExtArray()

HPSXA WINAPI SHCreatePropSheetExtArray ( HKEY  hKey,
LPCWSTR  pszSubKey,
UINT  max_iface 
)

Definition at line 1681 of file shellord.c.

Referenced by Applet1(), DisplayApplet(), KeyboardApplet(), MouseApplet(), and SystemApplet().

1682 {
1683  return SHCreatePropSheetExtArrayEx(hKey, pszSubKey, max_iface, NULL);
1684 }
smooth NULL
Definition: ftsmooth.c:416
HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, LPDATAOBJECT pDataObj)
Definition: shellord.c:1689

◆ SHCreatePropSheetExtArrayEx()

HPSXA WINAPI SHCreatePropSheetExtArrayEx ( HKEY  hKey,
LPCWSTR  pszSubKey,
UINT  max_iface,
LPDATAOBJECT  pDataObj 
)

Definition at line 1689 of file shellord.c.

Referenced by SHCreatePropSheetExtArray().

1690 {
1691  static const WCHAR szPropSheetSubKey[] = {'s','h','e','l','l','e','x','\\','P','r','o','p','e','r','t','y','S','h','e','e','t','H','a','n','d','l','e','r','s',0};
1692  WCHAR szHandler[64];
1693  DWORD dwHandlerLen;
1694  WCHAR szClsidHandler[39];
1695  DWORD dwClsidSize;
1696  CLSID clsid;
1697  LONG lRet;
1698  DWORD dwIndex;
1699  IShellExtInit *psxi;
1700  IShellPropSheetExt *pspsx;
1701  HKEY hkBase, hkPropSheetHandlers;
1702  PPSXA psxa = NULL;
1703 
1704  TRACE("(%p,%s,%u)\n", hKey, debugstr_w(pszSubKey), max_iface);
1705 
1706  if (max_iface == 0)
1707  return NULL;
1708 
1709  /* Open the registry key */
1710  lRet = RegOpenKeyW(hKey, pszSubKey, &hkBase);
1711  if (lRet != ERROR_SUCCESS)
1712  return NULL;
1713 
1714  lRet = RegOpenKeyExW(hkBase, szPropSheetSubKey, 0, KEY_ENUMERATE_SUB_KEYS, &hkPropSheetHandlers);
1715  RegCloseKey(hkBase);
1716  if (lRet == ERROR_SUCCESS)
1717  {
1718  /* Create and initialize the Property Sheet Extensions Array */
1719  psxa = LocalAlloc(LMEM_FIXED, FIELD_OFFSET(PSXA, pspsx[max_iface]));
1720  if (psxa)
1721  {
1722  ZeroMemory(psxa, FIELD_OFFSET(PSXA, pspsx[max_iface]));
1723  psxa->uiAllocated = max_iface;
1724 
1725  /* Enumerate all subkeys and attempt to load the shell extensions */
1726  dwIndex = 0;
1727  do
1728  {
1729  dwHandlerLen = sizeof(szHandler) / sizeof(szHandler[0]);
1730  lRet = RegEnumKeyExW(hkPropSheetHandlers, dwIndex++, szHandler, &dwHandlerLen, NULL, NULL, NULL, NULL);
1731  if (lRet != ERROR_SUCCESS)
1732  {
1733  if (lRet == ERROR_MORE_DATA)
1734  continue;
1735 
1736  if (lRet == ERROR_NO_MORE_ITEMS)
1737  lRet = ERROR_SUCCESS;
1738  break;
1739  }
1740 
1741  /* The CLSID is stored either in the key itself or in its default value. */
1742  if (FAILED(lRet = SHCLSIDFromStringW(szHandler, &clsid)))
1743  {
1744  dwClsidSize = sizeof(szClsidHandler);
1745  if (SHGetValueW(hkPropSheetHandlers, szHandler, NULL, NULL, szClsidHandler, &dwClsidSize) == ERROR_SUCCESS)
1746  {
1747  /* Force a NULL-termination and convert the string */
1748  szClsidHandler[(sizeof(szClsidHandler) / sizeof(szClsidHandler[0])) - 1] = 0;
1749  lRet = SHCLSIDFromStringW(szClsidHandler, &clsid);
1750  }
1751  }
1752 
1753  if (SUCCEEDED(lRet))
1754  {
1755  /* Attempt to get an IShellPropSheetExt and an IShellExtInit instance.
1756  Only if both interfaces are supported it's a real shell extension.
1757  Then call IShellExtInit's Initialize method. */
1758  if (SUCCEEDED(CoCreateInstance(&clsid, NULL, CLSCTX_INPROC_SERVER/* | CLSCTX_NO_CODE_DOWNLOAD */, &IID_IShellPropSheetExt, (LPVOID *)&pspsx)))
1759  {
1760  if (SUCCEEDED(pspsx->lpVtbl->QueryInterface(pspsx, &IID_IShellExtInit, (PVOID *)&psxi)))
1761  {
1762  if (SUCCEEDED(psxi->lpVtbl->Initialize(psxi, NULL, pDataObj, hKey)))
1763  {
1764  /* Add the IShellPropSheetExt instance to the array */
1765  psxa->pspsx[psxa->uiCount++] = pspsx;
1766  }
1767  else
1768  {
1769  psxi->lpVtbl->Release(psxi);
1770  pspsx->lpVtbl->Release(pspsx);
1771  }
1772  }
1773  else
1774  pspsx->lpVtbl->Release(pspsx);
1775  }
1776  }
1777 
1778  } while (psxa->uiCount != psxa->uiAllocated);
1779  }
1780  else
1781  lRet = ERROR_NOT_ENOUGH_MEMORY;
1782 
1783  RegCloseKey(hkPropSheetHandlers);
1784  }
1785 
1786  if (lRet != ERROR_SUCCESS && psxa)
1787  {
1788  SHDestroyPropSheetExtArray((HPSXA)psxa);
1789  psxa = NULL;
1790  }
1791 
1792  return (HPSXA)psxa;
1793 }
void WINAPI SHDestroyPropSheetExtArray(HPSXA hpsxa)
Definition: shellord.c:1829
UINT uiCount
Definition: shellord.c:1616
#define ERROR_SUCCESS
Definition: deptool.c:10
#define ERROR_NO_MORE_ITEMS
Definition: compat.h:95
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define ERROR_NOT_ENOUGH_MEMORY
Definition: dderror.h:7
#define ZeroMemory
Definition: winbase.h:1635
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
long LONG
Definition: pedump.c:60
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3311
#define debugstr_w
Definition: kernel32.h:32
smooth NULL
Definition: ftsmooth.c:416
#define LMEM_FIXED
Definition: winbase.h:349
#define TRACE(s)
Definition: solgame.cpp:4
UINT uiAllocated
Definition: shellord.c:1617
nsrefcnt Release()
unsigned long DWORD
Definition: ntddk_ex.h:95
IShellPropSheetExt * pspsx[1]
Definition: shellord.c:1618
DWORD WINAPI SHCLSIDFromStringW(LPCWSTR clsid, CLSID *id)
Definition: shellole.c:261
REFCLSID clsid
Definition: msctf.c:84
DWORD WINAPI SHGetValueW(HKEY hKey, LPCWSTR lpszSubKey, LPCWSTR lpszValue, LPDWORD pwType, LPVOID pvData, LPDWORD pcbData)
Definition: reg.c:1236
#define ERROR_MORE_DATA
Definition: dderror.h:13
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3237
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:254
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3381
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:1373
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
Definition: reg.c:2541
nsresult QueryInterface(nsIIDRef riid, void **result)
#define SUCCEEDED(hr)
Definition: intsafe.h:57
#define KEY_ENUMERATE_SUB_KEYS
Definition: nt_native.h:1019

◆ SHCreateShellFolderView()

HRESULT WINAPI SHCreateShellFolderView ( const SFV_CREATE pcsfv,
IShellView **  ppsv 
)

Definition at line 2129 of file shellord.c.

2131 {
2132  IShellView * psf;
2133  HRESULT hRes;
2134 
2135  *ppsv = NULL;
2136  if (!pcsfv || pcsfv->cbSize != sizeof(*pcsfv))
2137  return E_INVALIDARG;
2138 
2139  TRACE("sf=%p outer=%p callback=%p\n",
2140  pcsfv->pshf, pcsfv->psvOuter, pcsfv->psfvcb);
2141 
2142  hRes = IShellView_Constructor(pcsfv->pshf, &psf);
2143  if (FAILED(hRes))
2144  return hRes;
2145 
2146  hRes = IShellView_QueryInterface(psf, &IID_IShellView, (LPVOID *)ppsv);
2147  IShellView_Release(psf);
2148 
2149  return hRes;
2150 }
IShellFolderViewCB * psfvcb
Definition: shlobj.h:1261
IShellView * psvOuter
Definition: shlobj.h:1260
#define E_INVALIDARG
Definition: ddrawi.h:101
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
IShellFolder * pshf
Definition: shlobj.h:1259
UINT cbSize
Definition: shlobj.h:1258

◆ SHCreateShellFolderViewEx()

HRESULT WINAPI SHCreateShellFolderViewEx ( LPCSFV  psvcbi,
IShellView **  ppv 
)

Definition at line 1051 of file shellord.c.

1054 {
1055  IShellView * psf;
1056  HRESULT hRes;
1057 
1058  TRACE("sf=%p pidl=%p cb=%p mode=0x%08x parm=%p\n",
1059  psvcbi->pshf, psvcbi->pidl, psvcbi->pfnCallback,
1060  psvcbi->fvm, psvcbi->psvOuter);
1061 
1062  *ppv = NULL;
1063  hRes = IShellView_Constructor(psvcbi->pshf, &psf);
1064 
1065  if (FAILED(hRes))
1066  return hRes;
1067 
1068  hRes = IShellView_QueryInterface(psf, &IID_IShellView, (LPVOID *)ppv);
1069  IShellView_Release(psf);
1070 
1071  return hRes;
1072 }
LPFNVIEWCALLBACK pfnCallback
Definition: shlobj.h:1184
IShellView * psvOuter
Definition: shlobj.h:1181
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
LPCITEMIDLIST pidl
Definition: shlobj.h:1182
FOLDERVIEWMODE fvm
Definition: shlobj.h:1185
IShellFolder * pshf
Definition: shlobj.h:1180

◆ SHCreateStdEnumFmtEtc()

HRESULT WINAPI SHCreateStdEnumFmtEtc ( UINT  cFormats,
const FORMATETC *  lpFormats,
LPENUMFORMATETC ppenumFormatetc 
)

Definition at line 1878 of file shellord.c.

Referenced by CDevSettings_EnumFormatEtc().

1882 {
1883  IEnumFORMATETC *pef;
1884  HRESULT hRes;
1885  TRACE("cf=%d fe=%p pef=%p\n", cFormats, lpFormats, ppenumFormatetc);
1886 
1887  hRes = IEnumFORMATETC_Constructor(cFormats, lpFormats, &pef);
1888  if (FAILED(hRes))
1889  return hRes;
1890 
1891  IEnumFORMATETC_AddRef(pef);
1892  hRes = IEnumFORMATETC_QueryInterface(pef, &IID_IEnumFORMATETC, (LPVOID*)ppenumFormatetc);
1893  IEnumFORMATETC_Release(pef);
1894 
1895  return hRes;
1896 }
HRESULT IEnumFORMATETC_Constructor(UINT cfmt, const FORMATETC afmt[], IEnumFORMATETC **ppFormat)
#define TRACE(s)
Definition: solgame.cpp:4
LONG HRESULT
Definition: typedefs.h:77
const GUID IID_IEnumFORMATETC

◆ SHDestroyPropSheetExtArray()

void WINAPI SHDestroyPropSheetExtArray ( HPSXA  hpsxa)

Definition at line 1829 of file shellord.c.

Referenced by Applet1(), DisplayAdvancedSettings(), DisplayApplet(), KeyboardApplet(), MouseApplet(), SH_ShowDriveProperties(), SH_ShowPropertiesDialog(), SHCreatePropSheetExtArrayEx(), and SystemApplet().

1830 {
1831  UINT i;
1832  PPSXA psxa = (PPSXA)hpsxa;
1833 
1834  TRACE("(%p)\n", hpsxa);
1835 
1836  if (psxa)
1837  {
1838  for (i = 0; i != psxa->uiCount; i++)
1839  {
1840  psxa->pspsx[i]->lpVtbl->Release(psxa->pspsx[i]);
1841  }
1842 
1843  LocalFree(psxa);
1844  }
1845 }
UINT uiCount
Definition: shellord.c:1616
struct _PSXA * PPSXA
GLenum GLclampf GLint i
Definition: glfuncs.h:14
ULONG Release()
#define TRACE(s)
Definition: solgame.cpp:4
unsigned int UINT
Definition: ndis.h:50
IShellPropSheetExt * pspsx[1]
Definition: shellord.c:1618
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577

◆ SHDoDragDrop()

HRESULT WINAPI SHDoDragDrop ( HWND  hWnd,
LPDATAOBJECT  lpDataObject,
LPDROPSOURCE  lpDropSource,
DWORD  dwOKEffect,
LPDWORD  pdwEffect 
)

Definition at line 505 of file shellord.c.

511 {
512  FIXME("(%p %p %p 0x%08x %p):stub.\n",
513  hWnd, lpDataObject, lpDropSource, dwOKEffect, pdwEffect);
514  return DoDragDrop(lpDataObject, lpDropSource, dwOKEffect, pdwEffect);
515 }
#define FIXME(fmt,...)
Definition: debug.h:110
HRESULT WINAPI DoDragDrop(IDataObject *pDataObject, IDropSource *pDropSource, DWORD dwOKEffect, DWORD *pdwEffect)
Definition: ole2.c:747

◆ ShellMessageBoxA()

int ShellMessageBoxA ( HINSTANCE  hInstance,
HWND  hWnd,
LPCSTR  lpText,
LPCSTR  lpCaption,
UINT  uType,
  ... 
)

Definition at line 395 of file shellord.c.

402 {
403  char szText[100],szTitle[100];
404  LPCSTR pszText = szText, pszTitle = szTitle;
405  LPSTR pszTemp;
407  int ret;
408 
409  __ms_va_start(args, uType);
410  /* wvsprintfA(buf,fmt, args); */
411 
412  TRACE("(%p,%p,%p,%p,%08x)\n",
413  hInstance,hWnd,lpText,lpCaption,uType);
414 
415  if (IS_INTRESOURCE(lpCaption))
416  LoadStringA(hInstance, LOWORD(lpCaption), szTitle, sizeof(szTitle));
417  else
418  pszTitle = lpCaption;
419 
420  if (IS_INTRESOURCE(lpText))
421  LoadStringA(hInstance, LOWORD(lpText), szText, sizeof(szText));
422  else
423  pszText = lpText;
424 
426  pszText, 0, 0, (LPSTR)&pszTemp, 0, &args);
427 
428  __ms_va_end(args);
429 
430  ret = MessageBoxA(hWnd,pszTemp,pszTitle,uType);
431  LocalFree(pszTemp);
432  return ret;
433 }
static const char __ms_va_list
Definition: printf.c:70
#define FORMAT_MESSAGE_FROM_STRING
Definition: winbase.h:402
DWORD WINAPI FormatMessageA(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize, __ms_va_list *args)
Definition: format_msg.c:483
int WINAPI LoadStringA(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPSTR lpBuffer, _In_ int cchBufferMax)
LPCWSTR pszText
Definition: msvc.h:103
char * LPSTR
Definition: xmlstorage.h:182
int WINAPI MessageBoxA(_In_opt_ HWND, _In_opt_ LPCSTR, _In_opt_ LPCSTR, _In_ UINT)
static const WCHAR szText[]
Definition: dialog.c:139
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
Definition: winbase.h:400
const char * LPCSTR
Definition: xmlstorage.h:183
#define TRACE(s)
Definition: solgame.cpp:4
#define IS_INTRESOURCE(i)
Definition: winuser.h:580
TCHAR szTitle[MAX_LOADSTRING]
Definition: magnifier.c:36
int ret
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
#define __ms_va_end(list)
Definition: windef.h:448
#define __ms_va_start(list, arg)
Definition: windef.h:447
#define args
Definition: format.c:66
#define LOWORD(l)
Definition: pedump.c:82

◆ ShellMessageBoxW()

int ShellMessageBoxW ( HINSTANCE  hInstance,
HWND  hWnd,
LPCWSTR  lpText,
LPCWSTR  lpCaption,
UINT  uType,
  ... 
)

Definition at line 337 of file shellord.c.

Referenced by FormatDriveDlg(), FormatExCB(), RunDlgProc(), SHCreateDirectoryExW(), and SHEmptyRecycleBinW().

344 {
345  WCHAR szText[100],szTitle[100];
346  LPCWSTR pszText = szText, pszTitle = szTitle;
347  LPWSTR pszTemp;
349  int ret;
350 
351  __ms_va_start(args, uType);
352  /* wvsprintfA(buf,fmt, args); */
353 
354  TRACE("(%p,%p,%p,%p,%08x)\n",
355  hInstance,hWnd,lpText,lpCaption,uType);
356 
357  if (IS_INTRESOURCE(lpCaption))
358  LoadStringW(hInstance, LOWORD(lpCaption), szTitle, sizeof(szTitle)/sizeof(szTitle[0]));
359  else
360  pszTitle = lpCaption;
361 
362  if (IS_INTRESOURCE(lpText))
363  LoadStringW(hInstance, LOWORD(lpText), szText, sizeof(szText)/sizeof(szText[0]));
364  else
365  pszText = lpText;
366 
368  pszText, 0, 0, (LPWSTR)&pszTemp, 0, &args);
369 
370  __ms_va_end(args);
371 
372  ret = MessageBoxW(hWnd,pszTemp,pszTitle,uType);
373  LocalFree(pszTemp);
374  return ret;
375 }
static const char __ms_va_list
Definition: printf.c:70
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define FORMAT_MESSAGE_FROM_STRING
Definition: winbase.h:402
LPCWSTR pszText
Definition: msvc.h:103
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
DWORD WINAPI FormatMessageW(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPWSTR lpBuffer, DWORD nSize, __ms_va_list *args)
Definition: format_msg.c:583
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
static const WCHAR szText[]
Definition: dialog.c:139
#define FORMAT_MESSAGE_ALLOCATE_BUFFER
Definition: winbase.h:400
#define TRACE(s)
Definition: solgame.cpp:4
#define IS_INTRESOURCE(i)
Definition: winuser.h:580
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
TCHAR szTitle[MAX_LOADSTRING]
Definition: magnifier.c:36
int ret
HLOCAL NTAPI LocalFree(HLOCAL hMem)
Definition: heapmem.c:1577
#define __ms_va_end(list)
Definition: windef.h:448
#define __ms_va_start(list, arg)
Definition: windef.h:447
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define args
Definition: format.c:66
#define LOWORD(l)
Definition: pedump.c:82

◆ SHFindFiles()

BOOL WINAPI SHFindFiles ( LPCITEMIDLIST  pidlFolder,
LPCITEMIDLIST  pidlSaveFile 
)

Definition at line 1901 of file shellord.c.

Referenced by CTaskSwitchWnd::HandleAppCommand(), CTrayWindow::HandleCommand(), CTrayWindow::HandleHotKey(), CDesktopBrowser::OnCommand(), and StartMenuHandler::ShowSearchDialog().

1902 {
1903  FIXME("%p %p\n", pidlFolder, pidlSaveFile );
1904  return FALSE;
1905 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ SHFlushClipboard()

HRESULT WINAPI SHFlushClipboard ( void  )

Definition at line 1451 of file shellord.c.

1452 {
1453  return OleFlushClipboard();
1454 }
HRESULT WINAPI OleFlushClipboard(void)
Definition: clipboard.c:2264

◆ SHFlushSFCache()

void WINAPI SHFlushSFCache ( void  )

Definition at line 2067 of file shellord.c.

2068 {
2069 }

◆ SHFreeUnusedLibraries()

void WINAPI SHFreeUnusedLibraries ( void  )

Definition at line 1134 of file shellord.c.

1135 {
1136  FIXME("stub\n");
1138 }
void WINAPI DECLSPEC_HOTPATCH CoFreeUnusedLibraries(void)
Definition: compobj.c:3613
#define FIXME(fmt,...)
Definition: debug.h:110

◆ SHGetImageList()

HRESULT WINAPI SHGetImageList ( int  iImageList,
REFIID  riid,
void **  ppv 
)

Definition at line 2081 of file shellord.c.

Referenced by check_icon_size(), CISFBand::CreateSimpleToolbar(), CExplorerBand::InitializeExplorerBand(), CISFBand::InvokeCommand(), CAddressBand::SetSite(), test_get_file_info_iconlist(), test_SHGetImageList(), and CMenuToolbarBase::UpdateImageLists().

2082 {
2083  HIMAGELIST hLarge, hSmall;
2084  HIMAGELIST hNew;
2085  HRESULT ret = E_FAIL;
2086 
2087  /* Wine currently only maintains large and small image lists */
2088  if ((iImageList != SHIL_LARGE) && (iImageList != SHIL_SMALL) && (iImageList != SHIL_SYSSMALL))
2089  {
2090  FIXME("Unsupported image list %i requested\n", iImageList);
2091  return E_FAIL;
2092  }
2093 
2094  Shell_GetImageLists(&hLarge, &hSmall);
2095 #ifndef __REACTOS__
2096  hNew = ImageList_Duplicate(iImageList == SHIL_LARGE ? hLarge : hSmall);
2097 
2098  /* Get the interface for the new image list */
2099  if (hNew)
2100  {
2101  ret = HIMAGELIST_QueryInterface(hNew, riid, ppv);
2102  ImageList_Destroy(hNew);
2103  }
2104 #else
2105  /* Duplicating the imagelist causes the start menu items not to draw on
2106  * the first show. Was the Duplicate necessary for some reason? I believe
2107  * Windows returns the raw pointer here. */
2108  hNew = (iImageList == SHIL_LARGE ? hLarge : hSmall);
2109  ret = IImageList2_QueryInterface((IImageList2 *) hNew, riid, ppv);
2110 #endif
2111 
2112  return ret;
2113 }
#define SHIL_LARGE
Definition: shellapi.h:180
REFIID riid
Definition: precomp.h:44
HRESULT WINAPI HIMAGELIST_QueryInterface(HIMAGELIST himl, REFIID riid, void **ppv)
Definition: imagelist.c:3908
#define E_FAIL
Definition: ddrawi.h:102
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
Definition: imagelist.c:893
#define FIXME(fmt,...)
Definition: debug.h:110
LONG HRESULT
Definition: typedefs.h:77
int ret
HIMAGELIST WINAPI ImageList_Duplicate(HIMAGELIST himlSrc)
Definition: imagelist.c:1710
BOOL WINAPI Shell_GetImageLists(HIMAGELIST *lpBigList, HIMAGELIST *lpSmallList)
Definition: iconcache.cpp:706
#define SHIL_SMALL
Definition: shellapi.h:181
#define SHIL_SYSSMALL
Definition: shellapi.h:183

◆ SHGetInstanceExplorer()

HRESULT WINAPI SHGetInstanceExplorer ( IUnknown **  lpUnknown)

Definition at line 1110 of file shellord.c.

Referenced by _SHGetInstanceExplorer(), and SHOpenFolderWindow().

1111 { TRACE("%p\n", lpUnknown);
1112 
1113  *lpUnknown = SHELL32_IExplorerInterface;
1114 
1116  return E_FAIL;
1117 
1118  IUnknown_AddRef(SHELL32_IExplorerInterface);
1119  return S_OK;
1120 }
#define E_FAIL
Definition: ddrawi.h:102
#define TRACE(s)
Definition: solgame.cpp:4
static LPUNKNOWN SHELL32_IExplorerInterface
Definition: shellord.c:1093
#define S_OK
Definition: intsafe.h:59

◆ SHGetNewLinkInfoA()

BOOL WINAPI SHGetNewLinkInfoA ( LPCSTR  pszLinkTo,
LPCSTR  pszDir,
LPSTR  pszName,
BOOL pfMustCopy,
UINT  uFlags 
)

Definition at line 1955 of file shellord.c.

Referenced by test_sh_new_link_info().

1957 {
1958  WCHAR wszLinkTo[MAX_PATH];
1959  WCHAR wszDir[MAX_PATH];
1960  WCHAR wszName[MAX_PATH];
1961  BOOL res;
1962 
1963  MultiByteToWideChar(CP_ACP, 0, pszLinkTo, -1, wszLinkTo, MAX_PATH);
1964  MultiByteToWideChar(CP_ACP, 0, pszDir, -1, wszDir, MAX_PATH);
1965 
1966  res = SHGetNewLinkInfoW(wszLinkTo, wszDir, wszName, pfMustCopy, uFlags);
1967 
1968  if (res)
1969  WideCharToMultiByte(CP_ACP, 0, wszName, -1, pszName, MAX_PATH, NULL, NULL);
1970 
1971  return res;
1972 }
BOOL WINAPI SHGetNewLinkInfoW(LPCWSTR pszLinkTo, LPCWSTR pszDir, LPWSTR pszName, BOOL *pfMustCopy, UINT uFlags)
Definition: shellord.c:1974
#define WideCharToMultiByte
Definition: compat.h:101
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define CP_ACP
Definition: compat.h:99
UINT uFlags
Definition: api.c:60
smooth NULL
Definition: ftsmooth.c:416
unsigned int BOOL
Definition: ntddk_ex.h:94
_In_ LPCSTR pszDir
Definition: shellapi.h:578
#define MAX_PATH
Definition: compat.h:26
_In_ LPCSTR _Out_ BOOL * pfMustCopy
Definition: shellapi.h:580
#define MultiByteToWideChar
Definition: compat.h:100
GLuint res
Definition: glext.h:9613

◆ SHGetNewLinkInfoW()

BOOL WINAPI SHGetNewLinkInfoW ( LPCWSTR  pszLinkTo,
LPCWSTR  pszDir,
LPWSTR  pszName,
BOOL pfMustCopy,
UINT  uFlags 
)

Definition at line 1974 of file shellord.c.

Referenced by SHGetNewLinkInfoA(), and SHGetNewLinkInfoWrapW().

1976 {
1977  const WCHAR *basename;
1978  WCHAR *dst_basename;
1979  int i=2;
1980  static const WCHAR lnkformat[] = {'%','s','.','l','n','k',0};
1981  static const WCHAR lnkformatnum[] = {'%','s',' ','(','%','d',')','.','l','n','k',0};
1982 
1983  TRACE("(%s, %s, %p, %p, 0x%08x)\n", debugstr_w(pszLinkTo), debugstr_w(pszDir),
1984  pszName, pfMustCopy, uFlags);
1985 
1986  *pfMustCopy = FALSE;
1987 
1988  if (uFlags & SHGNLI_PIDL)
1989  {
1990  FIXME("SHGNLI_PIDL flag unsupported\n");
1991  return FALSE;
1992  }
1993 
1994  if (uFlags)
1995  FIXME("ignoring flags: 0x%08x\n", uFlags);
1996 
1997  /* FIXME: should test if the file is a shortcut or DOS program */
1998  if (GetFileAttributesW(pszLinkTo) == INVALID_FILE_ATTRIBUTES)
1999  return FALSE;
2000 
2001  basename = strrchrW(pszLinkTo, '\\');
2002  if (basename)
2003  basename = basename+1;
2004  else
2005  basename = pszLinkTo;
2006 
2007  lstrcpynW(pszName, pszDir, MAX_PATH);
2008  if (!PathAddBackslashW(pszName))
2009  return FALSE;
2010 
2011  dst_basename = pszName + strlenW(pszName);
2012 
2013  snprintfW(dst_basename, pszName + MAX_PATH - dst_basename, lnkformat, basename);
2014 
2015  while (GetFileAttributesW(pszName) != INVALID_FILE_ATTRIBUTES)
2016  {
2017  snprintfW(dst_basename, pszName + MAX_PATH - dst_basename, lnkformatnum, basename, i);
2018  i++;
2019  }
2020 
2021  return TRUE;
2022 }
#define TRUE
Definition: types.h:120
#define snprintfW
Definition: unicode.h:60
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
Definition: unicode.h:212
__wchar_t WCHAR
Definition: xmlstorage.h:180
static void basename(LPCWSTR path, LPWSTR name)
Definition: profile.c:38
#define SHGNLI_PIDL
Definition: shellapi.h:400
UINT uFlags
Definition: api.c:60
#define lstrcpynW
Definition: compat.h:397
GLenum GLclampf GLint i
Definition: glfuncs.h:14
LPWSTR WINAPI PathAddBackslashW(LPWSTR lpszPath)
Definition: path.c:289
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
Definition: fileinfo.c:802
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110
#define TRACE(s)
Definition: solgame.cpp:4
_In_ LPCSTR pszDir
Definition: shellapi.h:578
#define MAX_PATH
Definition: compat.h:26
#define INVALID_FILE_ATTRIBUTES
Definition: vfdcmd.c:23
WINE_UNICODE_INLINE WCHAR * strrchrW(const WCHAR *str, WCHAR ch)
Definition: unicode.h:254
_In_ LPCSTR _Out_ BOOL * pfMustCopy
Definition: shellapi.h:580

◆ SHGetSetSettings()

VOID WINAPI SHGetSetSettings ( LPSHELLSTATE  lpss,
DWORD  dwMask,
BOOL  bSet 
)

Definition at line 198 of file shellord.c.

Referenced by ViewDlg_Apply().

199 {
200  if(bSet)
201  {
202  FIXME("%p 0x%08x TRUE\n", lpss, dwMask);
203  }
204  else
205  {
207  }
208 }
DWORD dwMask
Definition: msvc.h:86
#define FIXME(fmt,...)
Definition: debug.h:110
VOID WINAPI SHGetSettings(LPSHELLFLAGSTATE lpsfs, DWORD dwMask)
Definition: shellord.c:218

◆ SHGetSettings()

VOID WINAPI SHGetSettings ( LPSHELLFLAGSTATE  lpsfs,
DWORD  dwMask 
)

Definition at line 218 of file shellord.c.

Referenced by GetEnvStatus(), SHGetSetSettings(), and START_TEST().

219 {
220  HKEY hKey;
221  DWORD dwData;
222  DWORD dwDataSize = sizeof (DWORD);
223 
224  TRACE("(%p 0x%08x)\n",lpsfs,dwMask);
225 
226  if (RegCreateKeyExA(HKEY_CURRENT_USER, "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced",
227  0, 0, 0, KEY_ALL_ACCESS, 0, &hKey, 0))
228  return;
229 
230  if ( (SSF_SHOWEXTENSIONS & dwMask) && !RegQueryValueExA(hKey, "HideFileExt", 0, 0, (LPBYTE)&dwData, &dwDataSize))
231  lpsfs->fShowExtensions = ((dwData == 0) ? 0 : 1);
232 
233  if ( (SSF_SHOWINFOTIP & dwMask) && !RegQueryValueExA(hKey, "ShowInfoTip", 0, 0, (LPBYTE)&dwData, &dwDataSize))
234  lpsfs->fShowInfoTip = ((dwData == 0) ? 0 : 1);
235 
236  if ( (SSF_DONTPRETTYPATH & dwMask) && !RegQueryValueExA(hKey, "DontPrettyPath", 0, 0, (LPBYTE)&dwData, &dwDataSize))
237  lpsfs->fDontPrettyPath = ((dwData == 0) ? 0 : 1);
238 
239  if ( (SSF_HIDEICONS & dwMask) && !RegQueryValueExA(hKey, "HideIcons", 0, 0, (LPBYTE)&dwData, &dwDataSize))
240  lpsfs->fHideIcons = ((dwData == 0) ? 0 : 1);
241 
242  if ( (SSF_MAPNETDRVBUTTON & dwMask) && !RegQueryValueExA(hKey, "MapNetDrvBtn", 0, 0, (LPBYTE)&dwData, &dwDataSize))
243  lpsfs->fMapNetDrvBtn = ((dwData == 0) ? 0 : 1);
244 
245  if ( (SSF_SHOWATTRIBCOL & dwMask) && !RegQueryValueExA(hKey, "ShowAttribCol", 0, 0, (LPBYTE)&dwData, &dwDataSize))
246  lpsfs->fShowAttribCol = ((dwData == 0) ? 0 : 1);
247 
248  if (((SSF_SHOWALLOBJECTS | SSF_SHOWSYSFILES) & dwMask) && !RegQueryValueExA(hKey, "Hidden", 0, 0, (LPBYTE)&dwData, &dwDataSize))
249  { if (dwData == 0)
250  { if (SSF_SHOWALLOBJECTS & dwMask) lpsfs->fShowAllObjects = 0;
251  if (SSF_SHOWSYSFILES & dwMask) lpsfs->fShowSysFiles = 0;
252  }
253  else if (dwData == 1)
254  { if (SSF_SHOWALLOBJECTS & dwMask) lpsfs->fShowAllObjects = 1;
255  if (SSF_SHOWSYSFILES & dwMask) lpsfs->fShowSysFiles = 0;
256  }
257  else if (dwData == 2)
258  { if (SSF_SHOWALLOBJECTS & dwMask) lpsfs->fShowAllObjects = 0;
259  if (SSF_SHOWSYSFILES & dwMask) lpsfs->fShowSysFiles = 1;
260  }
261  }
262  RegCloseKey (hKey);
263 
264  TRACE("-- 0x%04x\n", *(WORD*)lpsfs);
265 }
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:4041
#define SSF_HIDEICONS
Definition: shlobj.h:1515
#define SSF_DONTPRETTYPATH
Definition: shlobj.h:1511
#define SSF_MAPNETDRVBUTTON
Definition: shlobj.h:1513
#define DWORD
Definition: msvc.h:34
DWORD dwMask
Definition: msvc.h:86
BOOL fDontPrettyPath
Definition: shlobj.h:1491
#define HKEY_CURRENT_USER
Definition: winreg.h:11
BOOL fShowSysFiles
Definition: shlobj.h:1484
#define SSF_SHOWATTRIBCOL
Definition: shlobj.h:1508
static HANDLE ULONG_PTR dwData
Definition: file.c:35
#define SSF_SHOWEXTENSIONS
Definition: shlobj.h:1504
BOOL fShowInfoTip
Definition: shlobj.h:1494
BOOL fMapNetDrvBtn
Definition: shlobj.h:1493
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
unsigned char * LPBYTE
Definition: typedefs.h:52
#define SSF_SHOWALLOBJECTS
Definition: shlobj.h:1503
#define TRACE(s)
Definition: solgame.cpp:4
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
BOOL fShowAllObjects
Definition: shlobj.h:1481
BOOL fHideIcons
Definition: shlobj.h:1496
#define SSF_SHOWSYSFILES
Definition: shlobj.h:1506
#define KEY_ALL_ACCESS
Definition: nt_native.h:1041
BOOL fShowAttribCol
Definition: shlobj.h:1492
LONG WINAPI RegCreateKeyExA(_In_ HKEY hKey, _In_ LPCSTR lpSubKey, _In_ DWORD Reserved, _In_ LPSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_ LPDWORD lpdwDisposition)
Definition: reg.c:1032
#define SSF_SHOWINFOTIP
Definition: shlobj.h:1512
BOOL fShowExtensions
Definition: shlobj.h:1482

◆ SHHandleUpdateImage()

INT WINAPI SHHandleUpdateImage ( LPCITEMIDLIST  pidlExtra)

Definition at line 1941 of file shellord.c.

1942 {
1943  FIXME("%p - stub\n", pidlExtra);
1944 
1945  return -1;
1946 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ SHLoadOLE()

HRESULT WINAPI SHLoadOLE ( LPARAM  lParam)

Definition at line 1404 of file shellord.c.

1405 { FIXME("0x%08lx stub\n",lParam);
1406  return S_OK;
1407 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59
LPARAM lParam
Definition: combotst.c:139

◆ SHObjectProperties()

BOOL WINAPI SHObjectProperties ( HWND  hwnd,
DWORD  dwType,
LPCWSTR  szObject,
LPCWSTR  szPage 
)

Definition at line 1948 of file shellord.c.

1949 {
1950  FIXME("%p, 0x%08x, %s, %s - stub\n", hwnd, dwType, debugstr_w(szObject), debugstr_w(szPage));
1951 
1952  return TRUE;
1953 }
#define TRUE
Definition: types.h:120
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110

◆ SHOutOfMemoryMessageBox()

int WINAPI SHOutOfMemoryMessageBox ( HWND  hwndOwner,
LPCSTR  lpCaption,
UINT  uType 
)

Definition at line 1439 of file shellord.c.

1443 {
1444  FIXME("%p %s 0x%08x stub\n",hwndOwner, lpCaption, uType);
1445  return 0;
1446 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ SHRegisterDragDrop()

HRESULT WINAPI SHRegisterDragDrop ( HWND  hWnd,
LPDROPTARGET  pDropTarget 
)

Definition at line 451 of file shellord.c.

454 {
455  static BOOL ole_initialized = FALSE;
456  HRESULT hr;
457 
458  TRACE("(%p,%p)\n", hWnd, pDropTarget);
459 
460  if (!ole_initialized)
461  {
462  hr = OleInitialize(NULL);
463  if (FAILED(hr))
464  return hr;
465  ole_initialized = TRUE;
466  }
467  return RegisterDragDrop(hWnd, pDropTarget);
468 }
#define TRUE
Definition: types.h:120
HRESULT WINAPI RegisterDragDrop(HWND hwnd, LPDROPTARGET pDropTarget)
Definition: ole2.c:551
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
unsigned int BOOL
Definition: ntddk_ex.h:94
LONG HRESULT
Definition: typedefs.h:77
HRESULT WINAPI DECLSPEC_HOTPATCH OleInitialize(LPVOID reserved)
Definition: ole2.c:169

◆ SHReplaceFromPropSheetExtArray()

UINT WINAPI SHReplaceFromPropSheetExtArray ( HPSXA  hpsxa,
UINT  uPageID,
LPFNADDPROPSHEETPAGE  lpfnReplaceWith,
LPARAM  lParam 
)

Definition at line 1798 of file shellord.c.

Referenced by DisplayApplet(), and MouseApplet().

1799 {
1800  PSXA_CALL Call;
1801  UINT i;
1802  PPSXA psxa = (PPSXA)hpsxa;
1803 
1804  TRACE("(%p,%u,%p,%08lx)\n", hpsxa, uPageID, lpfnReplaceWith, lParam);
1805 
1806  if (psxa)
1807  {
1808  ZeroMemory(&Call, sizeof(Call));
1809  Call.lpfnAddReplaceWith = lpfnReplaceWith;
1810  Call.lParam = lParam;
1811 
1812  /* Call the ReplacePage method of all registered IShellPropSheetExt interfaces.
1813  Each shell extension is only allowed to call the callback once during the callback. */
1814  for (i = 0; i != psxa->uiCount; i++)
1815  {
1816  Call.bCalled = FALSE;
1817  psxa->pspsx[i]->lpVtbl->ReplacePage(psxa->pspsx[i], uPageID, PsxaCall, (LPARAM)&Call);
1818  }
1819 
1820  return Call.uiCount;
1821  }
1822 
1823  return 0;
1824 }
UINT uiCount
Definition: shellord.c:1616
struct _PSXA * PPSXA
#define ZeroMemory
Definition: winbase.h:1635
UINT uiCount
Definition: shellord.c:1627
GLenum GLclampf GLint i
Definition: glfuncs.h:14
static BOOL CALLBACK PsxaCall(HPROPSHEETPAGE hpage, LPARAM lParam)
Definition: shellord.c:1630
LONG_PTR LPARAM
Definition: windef.h:208
#define TRACE(s)
Definition: solgame.cpp:4
unsigned int UINT
Definition: ndis.h:50
IShellPropSheetExt * pspsx[1]
Definition: shellord.c:1618
HRESULT ReplacePage([in] EXPPS uPageID, [in] LPFNSVADDPROPSHEETPAGE pfnReplaceWith, [in] LPARAM lParam)
LPARAM lParam
Definition: shellord.c:1624
LPFNADDPROPSHEETPAGE lpfnAddReplaceWith
Definition: shellord.c:1623
BOOL bCalled
Definition: shellord.c:1625
LPARAM lParam
Definition: combotst.c:139

◆ SHRevokeDragDrop()

HRESULT WINAPI SHRevokeDragDrop ( HWND  hWnd)

Definition at line 486 of file shellord.c.

487 {
488  TRACE("(%p)\n", hWnd);
489  return RevokeDragDrop(hWnd);
490 }
HRESULT WINAPI RevokeDragDrop(HWND hwnd)
Definition: ole2.c:633
#define TRACE(s)
Definition: solgame.cpp:4

◆ SHRunControlPanel()

BOOL WINAPI SHRunControlPanel ( LPCWSTR  commandLine,
HWND  parent 
)

Definition at line 1087 of file shellord.c.

1088 {
1089  FIXME("(%s, %p): stub\n", debugstr_w(commandLine), parent);
1090  return FALSE;
1091 }
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110

◆ SHSetInstanceExplorer()

VOID WINAPI SHSetInstanceExplorer ( LPUNKNOWN  lpUnknown)

Definition at line 1100 of file shellord.c.

Referenced by SHCreateFromDesktop().

1101 { TRACE("%p\n", lpUnknown);
1102  SHELL32_IExplorerInterface = lpUnknown;
1103 }
#define TRACE(s)
Definition: solgame.cpp:4
static LPUNKNOWN SHELL32_IExplorerInterface
Definition: shellord.c:1093

◆ SHSetLocalizedName()

HRESULT WINAPI SHSetLocalizedName ( LPCWSTR  pszPath,
LPCWSTR  pszResModule,
int  idsRes 
)

Definition at line 2033 of file shellord.c.

2034 {
2035  FIXME("%p, %s, %d - stub\n", pszPath, debugstr_w(pszResModule), idsRes);
2036 
2037  return S_OK;
2038 }
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110
#define S_OK
Definition: intsafe.h:59

◆ SHShellFolderView_Message()

LRESULT WINAPI SHShellFolderView_Message ( HWND  hwndCabinet,
UINT  uMessage,
LPARAM  lParam 
)

Definition at line 287 of file shellord.c.

291 {
292  FIXME("%p %08x %08lx stub\n",hwndCabinet, uMessage, lParam);
293  return 0;
294 }
#define FIXME(fmt,...)
Definition: debug.h:110
LPARAM lParam
Definition: combotst.c:139

◆ SHStartNetConnectionDialog()

HRESULT WINAPI SHStartNetConnectionDialog ( HWND  hwnd,
LPCSTR  pszRemoteName,
DWORD  dwType 
)

Definition at line 2024 of file shellord.c.

2025 {
2026  FIXME("%p, %s, 0x%08x - stub\n", hwnd, debugstr_a(pszRemoteName), dwType);
2027 
2028  return S_OK;
2029 }
#define FIXME(fmt,...)
Definition: debug.h:110
#define debugstr_a
Definition: kernel32.h:31
#define S_OK
Definition: intsafe.h:59

◆ SHUpdateImageA()

VOID WINAPI SHUpdateImageA ( LPCSTR  pszHashItem,
INT  iIndex,
UINT  uFlags,
INT  iImageIndex 
)

Definition at line 1936 of file shellord.c.

1937 {
1938  FIXME("%s, %d, 0x%x, %d - stub\n", debugstr_a(pszHashItem), iIndex, uFlags, iImageIndex);
1939 }
UINT uFlags
Definition: api.c:60
#define FIXME(fmt,...)
Definition: debug.h:110
#define debugstr_a
Definition: kernel32.h:31

◆ SHUpdateImageW()

void WINAPI SHUpdateImageW ( LPCWSTR  pszHashItem,
int  iIndex,
UINT  uFlags,
int  iImageIndex 
)

Definition at line 1926 of file shellord.c.

1927 {
1928  FIXME("%s, %d, 0x%x, %d - stub\n", debugstr_w(pszHashItem), iIndex, uFlags, iImageIndex);
1929 }
UINT uFlags
Definition: api.c:60
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110

◆ SHValidateUNC()

BOOL WINAPI SHValidateUNC ( HWND  hwndOwner,
PWSTR  pszFile,
UINT  fConnect 
)

Definition at line 1483 of file shellord.c.

1484 {
1485  FIXME("(%p, %s, 0x%08x): stub\n", hwndOwner, debugstr_w(pszFile), fConnect);
1486  return FALSE;
1487 }
#define debugstr_w
Definition: kernel32.h:32
#define FIXME(fmt,...)
Definition: debug.h:110

◆ SHWaitForFileToOpen()

BOOL WINAPI SHWaitForFileToOpen ( LPCITEMIDLIST  pidl,
DWORD  dwFlags,
DWORD  dwTimeout 
)

Definition at line 1460 of file shellord.c.

1464 {
1465  FIXME("%p 0x%08x 0x%08x stub\n", pidl, dwFlags, dwTimeout);
1466  return FALSE;
1467 }
#define FIXME(fmt,...)
Definition: debug.h:110
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
_In_ void _In_ PCCERT_CONTEXT _In_opt_ LPFILETIME _In_ DWORD _In_ DWORD dwTimeout
Definition: wincrypt.h:6079

◆ SHWinHelp()

HRESULT WINAPI SHWinHelp ( DWORD  v,
DWORD  w,
DWORD  x,
DWORD  z 
)

Definition at line 1079 of file shellord.c.

1080 { FIXME("0x%08x 0x%08x 0x%08x 0x%08x stub\n",v,w,x,z);
1081  return 0;
1082 }
GLubyte GLubyte GLubyte GLubyte w
Definition: glext.h:6102
#define FIXME(fmt,...)
Definition: debug.h:110
GLdouble GLdouble z
Definition: glext.h:5874
const GLdouble * v
Definition: gl.h:2040
INT x
Definition: msvc.h:62

◆ SignalFileOpen()

BOOL WINAPI SignalFileOpen ( PCIDLIST_ABSOLUTE  pidl)

Definition at line 537 of file shellord.c.

538 {
539  FIXME("(%p):stub.\n", pidl);
540 
541  return FALSE;
542 }
#define FIXME(fmt,...)
Definition: debug.h:110

◆ WINE_DECLARE_DEBUG_CHANNEL()

WINE_DECLARE_DEBUG_CHANNEL ( pidl  )

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( shell  )

◆ WriteCabinetState()

BOOL WINAPI WriteCabinetState ( CABINETSTATE cs)

Definition at line 1271 of file shellord.c.

Referenced by IntSetNewWindowMode().

1272 {
1273  DWORD r;
1274  HKEY hkey = 0;
1275 
1276  TRACE("%p\n",cs);
1277 
1278  if( cs == NULL )
1279  return FALSE;
1280 
1282  NULL, 0, KEY_ALL_ACCESS, NULL, &hkey, NULL);
1283  if( r == ERROR_SUCCESS )
1284  {
1285  r = RegSetValueExW( hkey, szwSettings, 0,
1286  REG_BINARY, (LPBYTE) cs, cs->cLength);
1287 
1288  RegCloseKey( hkey );
1289  }
1290 
1291  return (r==ERROR_SUCCESS);
1292 }
static const WCHAR szwSettings[]
Definition: shellord.c:1218
#define ERROR_SUCCESS
Definition: deptool.c:10
#define REG_BINARY
Definition: nt_native.h:1496
GLdouble GLdouble GLdouble r
Definition: gl.h:2055
#define HKEY_CURRENT_USER
Definition: winreg.h:11
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1094
LONG WINAPI RegCloseKey(HKEY hKey)
Definition: reg.c:423
unsigned char * LPBYTE
Definition: typedefs.h:52
smooth NULL
Definition: ftsmooth.c:416
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4917
#define TRACE(s)
Definition: solgame.cpp:4
unsigned long DWORD
Definition: ntddk_ex.h:95
#define KEY_ALL_ACCESS
Definition: nt_native.h:1041
WORD cLength
Definition: shlobj.h:2161
static const WCHAR szwCabLocation[]
Definition: shellord.c:1209

Variable Documentation

◆ SHELL32_IExplorerInterface

LPUNKNOWN SHELL32_IExplorerInterface =0
static

Definition at line 1093 of file shellord.c.

Referenced by SHGetInstanceExplorer(), and SHSetInstanceExplorer().

◆ szwCabLocation

const WCHAR szwCabLocation[]
static
Initial value:
= {
'S','o','f','t','w','a','r','e','\\',
'M','i','c','r','o','s','o','f','t','\\',
'W','i','n','d','o','w','s','\\',
'C','u','r','r','e','n','t','V','e','r','s','i','o','n','\\',
'E','x','p','l','o','r','e','r','\\',
'C','a','b','i','n','e','t','S','t','a','t','e',0
}

Definition at line 1209 of file shellord.c.

Referenced by ReadCabinetState(), and WriteCabinetState().

◆ szwSettings

const WCHAR szwSettings[] = { 'S','e','t','t','i','n','g','s',0 }
static

Definition at line 1218 of file shellord.c.

Referenced by ReadCabinetState(), and WriteCabinetState().