1 /* 2 * ReactOS shlwapi 3 * 4 * Copyright 2009 Andrew Hill <ash77 at domain reactos.org> 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 */ 20 21 #ifndef __SHLWAPI_UNDOC_H 22 #define __SHLWAPI_UNDOC_H 23 24 #ifdef __cplusplus 25 extern "C" { 26 #endif /* defined(__cplusplus) */ 27 28 #define SHELL_NO_POLICY ((DWORD)-1) 29 30 typedef struct tagPOLICYDATA 31 { 32 DWORD policy; /* flags value passed to SHRestricted */ 33 LPCWSTR appstr; /* application str such as "Explorer" */ 34 LPCWSTR keystr; /* name of the actual registry key / policy */ 35 } POLICYDATA, *LPPOLICYDATA; 36 37 HANDLE WINAPI SHGlobalCounterCreate(REFGUID guid); 38 PVOID WINAPI SHInterlockedCompareExchange(PVOID *dest, PVOID xchg, PVOID compare); 39 LONG WINAPI SHGlobalCounterGetValue(HANDLE hGlobalCounter); 40 LONG WINAPI SHGlobalCounterIncrement(HANDLE hGlobalCounter); 41 42 #if FALSE && ((DLL_EXPORT_VERSION) >= _WIN32_WINNT_VISTA) 43 #define SHELL_GCOUNTER_DEFINE_GUID(name, a, b, c, d, e, f, g, h, i, j, k) enum { SHELLUNUSEDCOUNTERGUID_##name } 44 #define SHELL_GCOUNTER_DEFINE_HANDLE(name) enum { SHELLUNUSEDCOUNTERHANDLE_##name } 45 #define SHELL_GCOUNTER_PARAMETERS(handle, id) id 46 #define SHELL_GlobalCounterCreate(refguid, handle) ( (refguid), (handle), (void)0 ) 47 #define SHELL_GlobalCounterIsInitialized(handle) ( (handle), TRUE ) 48 #define SHELL_GlobalCounterGet(id) SHGlobalCounterGetValue_Vista(id) 49 #define SHELL_GlobalCounterIncrement(id) SHGlobalCounterIncrement_Vista(id) 50 #else 51 #define SHELL_GCOUNTER_DEFINE_GUID(name, a, b, c, d, e, f, g, h, i, j, k) const GUID name = { a, b, c, { d, e, f, g, h, i, j, k } } 52 #define SHELL_GCOUNTER_DEFINE_HANDLE(name) HANDLE name = NULL 53 #define SHELL_GCOUNTER_PARAMETERS(handle, id) handle 54 #define SHELL_GlobalCounterCreate(refguid, handle) \ 55 do { \ 56 EXTERN_C HANDLE SHELL_GetCachedGlobalCounter(HANDLE *phGlobalCounter, REFGUID rguid); \ 57 SHELL_GetCachedGlobalCounter(&(handle), (refguid)); \ 58 } while (0) 59 #define SHELL_GlobalCounterIsInitialized(handle) ( (handle) != NULL ) 60 #define SHELL_GlobalCounterGet(handle) SHGlobalCounterGetValue(handle) 61 #define SHELL_GlobalCounterIncrement(handle) SHGlobalCounterIncrement(handle) 62 #endif 63 #define SHELL_GCOUNTER_DECLAREPARAMETERS(handle, id) SHELL_GCOUNTER_PARAMETERS(HANDLE handle, SHGLOBALCOUNTER id) 64 65 DWORD WINAPI 66 SHRestrictionLookup( 67 _In_ DWORD policy, 68 _In_ LPCWSTR key, 69 _In_ const POLICYDATA *polTable, 70 _Inout_ LPDWORD polArr); 71 72 BOOL WINAPI SHAboutInfoA(LPSTR lpszDest, DWORD dwDestLen); 73 BOOL WINAPI SHAboutInfoW(LPWSTR lpszDest, DWORD dwDestLen); 74 #ifdef UNICODE 75 #define SHAboutInfo SHAboutInfoW 76 #else 77 #define SHAboutInfo SHAboutInfoA 78 #endif 79 80 HMODULE WINAPI SHPinDllOfCLSID(REFIID refiid); 81 HRESULT WINAPI IUnknown_QueryStatus(IUnknown *lpUnknown, REFGUID pguidCmdGroup, ULONG cCmds, OLECMD *prgCmds, OLECMDTEXT* pCmdText); 82 HRESULT WINAPI IUnknown_Exec(IUnknown* lpUnknown, REFGUID pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT* pvaIn, VARIANT* pvaOut); 83 LONG WINAPI SHSetWindowBits(HWND hwnd, INT offset, UINT wMask, UINT wFlags); 84 HWND WINAPI SHSetParentHwnd(HWND hWnd, HWND hWndParent); 85 HRESULT WINAPI ConnectToConnectionPoint(IUnknown *lpUnkSink, REFIID riid, BOOL bAdviseOnly, IUnknown *lpUnknown, LPDWORD lpCookie, IConnectionPoint **lppCP); 86 BOOL WINAPI SHIsSameObject(IUnknown *lpInt1, IUnknown *lpInt2); 87 BOOL WINAPI SHLoadMenuPopup(HINSTANCE hInst, LPCWSTR szName); 88 void WINAPI SHPropagateMessage(HWND hWnd, UINT uiMsgId, WPARAM wParam, LPARAM lParam, BOOL bSend); 89 DWORD WINAPI SHRemoveAllSubMenus(HMENU hMenu); 90 UINT WINAPI SHEnableMenuItem(HMENU hMenu, UINT wItemID, BOOL bEnable); 91 DWORD WINAPI SHCheckMenuItem(HMENU hMenu, UINT uID, BOOL bCheck); 92 DWORD WINAPI SHRegisterClassA(WNDCLASSA *wndclass); 93 BOOL WINAPI SHSimulateDrop(IDropTarget *pDrop, IDataObject *pDataObj, DWORD grfKeyState, PPOINTL lpPt, DWORD* pdwEffect); 94 DWORD WINAPI SHGetCurColorRes(void); 95 HMENU WINAPI SHGetMenuFromID(HMENU hMenu, UINT uID); 96 DWORD WINAPI SHMenuIndexFromID(HMENU hMenu, UINT uID); 97 DWORD WINAPI SHWaitForSendMessageThread(HANDLE hand, DWORD dwTimeout); 98 DWORD WINAPI SHSendMessageBroadcastW(UINT uMsg, WPARAM wParam, LPARAM lParam); 99 HRESULT WINAPI SHIsExpandableFolder(LPSHELLFOLDER lpFolder, LPCITEMIDLIST pidl); 100 DWORD WINAPI SHFillRectClr(HDC hDC, LPCRECT pRect, COLORREF cRef); 101 int WINAPI SHSearchMapInt(const int *lpKeys, const int *lpValues, int iLen, int iKey); 102 VOID WINAPI IUnknown_Set(IUnknown **lppDest, IUnknown *lpUnknown); 103 HRESULT WINAPI MayQSForward(IUnknown* lpUnknown, PVOID lpReserved, REFGUID riidCmdGrp, ULONG cCmds, OLECMD *prgCmds, OLECMDTEXT *pCmdText); 104 HRESULT WINAPI MayExecForward(IUnknown* lpUnknown, INT iUnk, REFGUID pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut); 105 HRESULT WINAPI IsQSForward(REFGUID pguidCmdGroup,ULONG cCmds, OLECMD *prgCmds); 106 BOOL WINAPI SHIsChildOrSelf(HWND hParent, HWND hChild); 107 HRESULT WINAPI SHForwardContextMenuMsg(IUnknown* pUnk, UINT uMsg, WPARAM wParam, LPARAM lParam, LRESULT* pResult, BOOL useIContextMenu2); 108 VOID WINAPI SHSetDefaultDialogFont(HWND hWnd, INT id); 109 110 HRESULT WINAPI SHRegGetCLSIDKeyW(REFGUID guid, LPCWSTR lpszValue, BOOL bUseHKCU, BOOL bCreate, PHKEY phKey); 111 112 BOOL WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewItem); 113 BOOL WINAPI SHRemoveDataBlock(LPDBLIST* lppList, DWORD dwSignature); 114 DATABLOCK_HEADER* WINAPI SHFindDataBlock(LPDBLIST lpList, DWORD dwSignature); 115 HRESULT WINAPI SHWriteDataBlockList(IStream* lpStream, LPDBLIST lpList); 116 HRESULT WINAPI SHReadDataBlockList(IStream* lpStream, LPDBLIST* lppList); 117 VOID WINAPI SHFreeDataBlockList(LPDBLIST lpList); 118 119 LONG 120 WINAPI 121 RegCreateKeyExWrapW( 122 _In_ HKEY hKey, 123 _In_ LPCWSTR lpSubKey, 124 _In_ DWORD Reserved, 125 _In_opt_ LPWSTR lpClass, 126 _In_ DWORD dwOptions, 127 _In_ REGSAM samDesired, 128 _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, 129 _Out_ PHKEY phkResult, 130 _Out_opt_ LPDWORD lpdwDisposition); 131 132 /* Redirected to kernel32.ExpandEnvironmentStringsA/W */ 133 DWORD WINAPI SHExpandEnvironmentStringsA(LPCSTR,LPSTR,DWORD); 134 DWORD WINAPI SHExpandEnvironmentStringsW(LPCWSTR,LPWSTR,DWORD); 135 #ifdef UNICODE 136 #define SHExpandEnvironmentStrings SHExpandEnvironmentStringsW 137 #else 138 #define SHExpandEnvironmentStrings SHExpandEnvironmentStringsA 139 #endif 140 141 /* Redirected to userenv.ExpandEnvironmentStringsForUserA/W */ 142 #if (WINVER >= 0x0500) 143 BOOL WINAPI SHExpandEnvironmentStringsForUserA(HANDLE, LPCSTR, LPSTR, DWORD); 144 BOOL WINAPI SHExpandEnvironmentStringsForUserW(HANDLE, LPCWSTR, LPWSTR, DWORD); 145 #ifdef UNICODE 146 #define SHExpandEnvironmentStringsForUser SHExpandEnvironmentStringsForUserW 147 #else 148 #define SHExpandEnvironmentStringsForUser SHExpandEnvironmentStringsForUserA 149 #endif 150 #endif 151 152 153 BOOL WINAPI SHIsEmptyStream(IStream*); 154 HRESULT WINAPI IStream_Size(IStream *lpStream, ULARGE_INTEGER* lpulSize); 155 HRESULT WINAPI SHInvokeDefaultCommand(HWND,IShellFolder*,LPCITEMIDLIST); 156 HRESULT WINAPI SHPropertyBag_ReadType(IPropertyBag *ppb, LPCWSTR pszPropName, VARIANTARG *pvarg, VARTYPE vt); 157 HRESULT WINAPI SHPropertyBag_ReadBOOL(IPropertyBag *ppb, LPCWSTR pszPropName, BOOL *pbValue); 158 BOOL WINAPI SHPropertyBag_ReadBOOLOld(IPropertyBag *ppb, LPCWSTR pszPropName, BOOL bDefValue); 159 HRESULT WINAPI SHPropertyBag_ReadSHORT(IPropertyBag *ppb, LPCWSTR pszPropName, SHORT *psValue); 160 HRESULT WINAPI SHPropertyBag_ReadInt(IPropertyBag *ppb, LPCWSTR pszPropName, LPINT pnValue); 161 HRESULT WINAPI SHPropertyBag_ReadLONG(IPropertyBag *ppb, LPCWSTR pszPropName, LPLONG pValue); 162 HRESULT WINAPI SHPropertyBag_ReadDWORD(IPropertyBag *ppb, LPCWSTR pszPropName, DWORD *pdwValue); 163 HRESULT WINAPI SHPropertyBag_ReadBSTR(IPropertyBag *ppb, LPCWSTR pszPropName, BSTR *pbstr); 164 HRESULT WINAPI SHPropertyBag_ReadStr(IPropertyBag *ppb, LPCWSTR pszPropName, LPWSTR pszDst, int cchMax); 165 HRESULT WINAPI SHPropertyBag_ReadPOINTL(IPropertyBag *ppb, LPCWSTR pszPropName, POINTL *pptl); 166 HRESULT WINAPI SHPropertyBag_ReadPOINTS(IPropertyBag *ppb, LPCWSTR pszPropName, POINTS *ppts); 167 HRESULT WINAPI SHPropertyBag_ReadRECTL(IPropertyBag *ppb, LPCWSTR pszPropName, RECTL *prcl); 168 HRESULT WINAPI SHPropertyBag_ReadGUID(IPropertyBag *ppb, LPCWSTR pszPropName, GUID *pguid); 169 HRESULT WINAPI SHPropertyBag_ReadStream(IPropertyBag *ppb, LPCWSTR pszPropName, IStream **ppStream); 170 171 INT WINAPI 172 SHGetPerScreenResName( 173 _Out_writes_(cchBuffer) LPWSTR pszBuffer, 174 _In_ INT cchBuffer, 175 _In_ DWORD dwReserved); 176 177 HRESULT WINAPI SHPropertyBag_Delete(IPropertyBag *ppb, LPCWSTR pszPropName); 178 HRESULT WINAPI SHPropertyBag_WriteBOOL(IPropertyBag *ppb, LPCWSTR pszPropName, BOOL bValue); 179 HRESULT WINAPI SHPropertyBag_WriteSHORT(IPropertyBag *ppb, LPCWSTR pszPropName, SHORT sValue); 180 HRESULT WINAPI SHPropertyBag_WriteInt(IPropertyBag *ppb, LPCWSTR pszPropName, INT nValue); 181 HRESULT WINAPI SHPropertyBag_WriteLONG(IPropertyBag *ppb, LPCWSTR pszPropName, LONG lValue); 182 HRESULT WINAPI SHPropertyBag_WriteDWORD(IPropertyBag *ppb, LPCWSTR pszPropName, DWORD dwValue); 183 HRESULT WINAPI SHPropertyBag_WriteStr(IPropertyBag *ppb, LPCWSTR pszPropName, LPCWSTR pszValue); 184 HRESULT WINAPI SHPropertyBag_WriteGUID(IPropertyBag *ppb, LPCWSTR pszPropName, const GUID *pguid); 185 HRESULT WINAPI SHPropertyBag_WriteStream(IPropertyBag *ppb, LPCWSTR pszPropName, IStream *pStream); 186 HRESULT WINAPI SHPropertyBag_WritePOINTL(IPropertyBag *ppb, LPCWSTR pszPropName, const POINTL *pptl); 187 HRESULT WINAPI SHPropertyBag_WritePOINTS(IPropertyBag *ppb, LPCWSTR pszPropName, const POINTS *ppts); 188 HRESULT WINAPI SHPropertyBag_WriteRECTL(IPropertyBag *ppb, LPCWSTR pszPropName, const RECTL *prcl); 189 190 HRESULT WINAPI SHCreatePropertyBagOnMemory(_In_ DWORD dwMode, _In_ REFIID riid, _Out_ void **ppvObj); 191 192 HRESULT WINAPI 193 SHCreatePropertyBagOnRegKey( 194 _In_ HKEY hKey, 195 _In_z_ LPCWSTR pszSubKey, 196 _In_ DWORD dwMode, 197 _In_ REFIID riid, 198 _Out_ void **ppvObj); 199 200 HRESULT WINAPI 201 SHCreatePropertyBagOnProfileSection( 202 _In_z_ LPCWSTR lpFileName, 203 _In_opt_z_ LPCWSTR pszSection, 204 _In_ DWORD dwMode, 205 _In_ REFIID riid, 206 _Out_ void **ppvObj); 207 208 EXTERN_C HRESULT WINAPI 209 IUnknown_QueryServicePropertyBag( 210 _In_ IUnknown *punk, 211 _In_ long flags, 212 _In_ REFIID riid, 213 _Outptr_ void **ppvObj); 214 215 HWND WINAPI SHCreateWorkerWindowA(WNDPROC wndProc, HWND hWndParent, DWORD dwExStyle, 216 DWORD dwStyle, HMENU hMenu, LONG_PTR wnd_extra); 217 218 HWND WINAPI SHCreateWorkerWindowW(WNDPROC wndProc, HWND hWndParent, DWORD dwExStyle, 219 DWORD dwStyle, HMENU hMenu, LONG_PTR wnd_extra); 220 #ifdef UNICODE 221 #define SHCreateWorkerWindow SHCreateWorkerWindowW 222 #else 223 #define SHCreateWorkerWindow SHCreateWorkerWindowA 224 #endif 225 226 HRESULT WINAPI IUnknown_SetOwner(IUnknown *iface, IUnknown *pUnk); 227 HRESULT WINAPI IUnknown_GetClassID(IUnknown *lpUnknown, CLSID *lpClassId); 228 HRESULT WINAPI IUnknown_QueryServiceExec(IUnknown *lpUnknown, REFIID service, const GUID *group, DWORD cmdId, DWORD cmdOpt, VARIANT *pIn, VARIANT *pOut); 229 HRESULT WINAPI IUnknown_UIActivateIO(IUnknown *unknown, BOOL activate, LPMSG msg); 230 HRESULT WINAPI IUnknown_TranslateAcceleratorOCS(IUnknown *lpUnknown, LPMSG lpMsg, DWORD dwModifiers); 231 HRESULT WINAPI IUnknown_OnFocusOCS(IUnknown *lpUnknown, BOOL fGotFocus); 232 HRESULT WINAPI IUnknown_HandleIRestrict(LPUNKNOWN lpUnknown, PVOID lpArg1, PVOID lpArg2, PVOID lpArg3, PVOID lpArg4); 233 HRESULT WINAPI IUnknown_HasFocusIO(IUnknown * punk); 234 HRESULT WINAPI IUnknown_TranslateAcceleratorIO(IUnknown * punk, MSG * pmsg); 235 HRESULT WINAPI IUnknown_OnFocusChangeIS(LPUNKNOWN lpUnknown, LPUNKNOWN pFocusObject, BOOL bFocus); 236 237 DWORD WINAPI SHAnsiToUnicode(LPCSTR lpSrcStr, LPWSTR lpDstStr, INT iLen); 238 INT WINAPI SHUnicodeToAnsi(LPCWSTR lpSrcStr, LPSTR lpDstStr, INT iLen); 239 240 DWORD WINAPI SHAnsiToUnicodeCP(DWORD dwCp, LPCSTR lpSrcStr, LPWSTR lpDstStr, int iLen); 241 DWORD WINAPI SHUnicodeToAnsiCP(UINT CodePage, LPCWSTR lpSrcStr, LPSTR lpDstStr, int dstlen); 242 243 PVOID WINAPI SHLockSharedEx(HANDLE hData, DWORD dwProcessId, BOOL bWriteAccess); 244 245 DWORD WINAPI SHGetValueGoodBootA(HKEY hkey, LPCSTR pSubKey, LPCSTR pValue, 246 LPDWORD pwType, LPVOID pvData, LPDWORD pbData); 247 DWORD WINAPI SHGetValueGoodBootW(HKEY hkey, LPCWSTR pSubKey, LPCWSTR pValue, 248 LPDWORD pwType, LPVOID pvData, LPDWORD pbData); 249 HRESULT WINAPI SHLoadRegUIStringA(HKEY hkey, LPCSTR value, LPSTR buf, DWORD size); 250 HRESULT WINAPI SHLoadRegUIStringW(HKEY hkey, LPCWSTR value, LPWSTR buf, DWORD size); 251 #ifdef UNICODE 252 #define SHGetValueGoodBoot SHGetValueGoodBootW 253 #define SHLoadRegUIString SHLoadRegUIStringW 254 #else 255 #define SHGetValueGoodBoot SHGetValueGoodBootA 256 #define SHLoadRegUIString SHLoadRegUIStringA 257 #endif 258 259 DWORD WINAPI 260 SHGetIniStringW( 261 _In_z_ LPCWSTR appName, 262 _In_z_ LPCWSTR keyName, 263 _Out_writes_to_(outLen, return + 1) LPWSTR out, 264 _In_ DWORD outLen, 265 _In_z_ LPCWSTR filename); 266 267 BOOL WINAPI 268 SHSetIniStringW( 269 _In_z_ LPCWSTR appName, 270 _In_z_ LPCWSTR keyName, 271 _In_opt_z_ LPCWSTR str, 272 _In_z_ LPCWSTR filename); 273 274 DWORD WINAPI 275 SHGetIniStringUTF7W( 276 _In_opt_z_ LPCWSTR lpAppName, 277 _In_z_ LPCWSTR lpKeyName, 278 _Out_writes_to_(nSize, return + 1) _Post_z_ LPWSTR lpReturnedString, 279 _In_ DWORD nSize, 280 _In_z_ LPCWSTR lpFileName); 281 282 BOOL WINAPI 283 SHSetIniStringUTF7W( 284 _In_z_ LPCWSTR lpAppName, 285 _In_z_ LPCWSTR lpKeyName, 286 _In_opt_z_ LPCWSTR lpString, 287 _In_z_ LPCWSTR lpFileName); 288 289 enum _shellkey_flags 290 { 291 SHKEY_Root_HKCU = 0x1, 292 SHKEY_Root_HKLM = 0x2, 293 SHKEY_Key_Explorer = 0x00, 294 SHKEY_Key_Shell = 0x10, 295 SHKEY_Key_ShellNoRoam = 0x20, 296 SHKEY_Key_Classes = 0x30, 297 SHKEY_Subkey_Default = 0x0000, 298 SHKEY_Subkey_ResourceName = 0x1000, 299 SHKEY_Subkey_Handlers = 0x2000, 300 SHKEY_Subkey_Associations = 0x3000, 301 SHKEY_Subkey_Volatile = 0x4000, 302 SHKEY_Subkey_MUICache = 0x5000, 303 SHKEY_Subkey_FileExts = 0x6000 304 }; 305 306 HKEY WINAPI SHGetShellKey(DWORD flags, LPCWSTR sub_key, BOOL create); 307 308 int 309 WINAPIV 310 ShellMessageBoxWrapW( 311 _In_opt_ HINSTANCE hAppInst, 312 _In_opt_ HWND hWnd, 313 _In_ LPCWSTR lpcText, 314 _In_opt_ LPCWSTR lpcTitle, 315 _In_ UINT fuStyle, 316 ...); 317 318 /* dwWhich flags for PathFileExistsDefExtW, PathFindOnPathExW, 319 * and PathFileExistsDefExtAndAttributesW */ 320 #define WHICH_PIF (1 << 0) 321 #define WHICH_COM (1 << 1) 322 #define WHICH_EXE (1 << 2) 323 #define WHICH_BAT (1 << 3) 324 #define WHICH_LNK (1 << 4) 325 #define WHICH_CMD (1 << 5) 326 #define WHICH_OPTIONAL (1 << 6) 327 328 #define WHICH_DEFAULT (WHICH_PIF | WHICH_COM | WHICH_EXE | WHICH_BAT | WHICH_LNK | WHICH_CMD) 329 330 /* dwClass flags for PathIsValidCharA and PathIsValidCharW */ 331 #define PATH_CHAR_CLASS_LETTER 0x00000001 332 #define PATH_CHAR_CLASS_ASTERIX 0x00000002 333 #define PATH_CHAR_CLASS_DOT 0x00000004 334 #define PATH_CHAR_CLASS_BACKSLASH 0x00000008 335 #define PATH_CHAR_CLASS_COLON 0x00000010 336 #define PATH_CHAR_CLASS_SEMICOLON 0x00000020 337 #define PATH_CHAR_CLASS_COMMA 0x00000040 338 #define PATH_CHAR_CLASS_SPACE 0x00000080 339 #define PATH_CHAR_CLASS_OTHER_VALID 0x00000100 340 #define PATH_CHAR_CLASS_DOUBLEQUOTE 0x00000200 341 #define PATH_CHAR_CLASS_INVALID 0x00000000 342 #define PATH_CHAR_CLASS_ANY 0xffffffff 343 344 BOOL WINAPI PathFileExistsDefExtW(LPWSTR lpszPath, DWORD dwWhich); 345 346 BOOL WINAPI 347 PathFileExistsDefExtAndAttributesW( 348 _Inout_ LPWSTR pszPath, 349 _In_ DWORD dwWhich, 350 _Out_opt_ LPDWORD pdwFileAttributes); 351 352 BOOL WINAPI PathFindOnPathExW(LPWSTR lpszFile, LPCWSTR *lppszOtherDirs, DWORD dwWhich); 353 VOID WINAPI FixSlashesAndColonW(LPWSTR); 354 BOOL WINAPI PathIsValidCharA(char c, DWORD dwClass); 355 BOOL WINAPI PathIsValidCharW(WCHAR c, DWORD dwClass); 356 BOOL WINAPI SHGetPathFromIDListWrapW(LPCITEMIDLIST pidl, LPWSTR pszPath); 357 358 BOOL WINAPI 359 IContextMenu_Invoke( 360 _In_ IContextMenu *pContextMenu, 361 _In_ HWND hwnd, 362 _In_ LPCSTR lpVerb, 363 _In_ UINT uFlags); 364 365 DWORD WINAPI SHGetObjectCompatFlags(IUnknown *pUnk, const CLSID *clsid); 366 367 #define SHACF_WIN95SHLEXEC 0x00000200 /* Geoff Chappell */ 368 DWORD WINAPI SHGetAppCompatFlags(DWORD dwMask); 369 370 /* 371 * HACK! These functions are conflicting with <shobjidl.h> inline functions... 372 * We provide a macro option SHLWAPI_ISHELLFOLDER_HELPERS for using these functions. 373 */ 374 #ifdef SHLWAPI_ISHELLFOLDER_HELPERS 375 HRESULT WINAPI 376 IShellFolder_GetDisplayNameOf( 377 _In_ IShellFolder *psf, 378 _In_ LPCITEMIDLIST pidl, 379 _In_ SHGDNF uFlags, 380 _Out_ LPSTRRET lpName, 381 _In_ DWORD dwRetryFlags); 382 383 /* Flags for IShellFolder_GetDisplayNameOf */ 384 #define SFGDNO_RETRYWITHFORPARSING 0x00000001 385 #define SFGDNO_RETRYALWAYS 0x80000000 386 387 HRESULT WINAPI 388 IShellFolder_ParseDisplayName( 389 _In_ IShellFolder *psf, 390 _In_ HWND hwndOwner, 391 _In_ LPBC pbcReserved, 392 _In_ LPOLESTR lpszDisplayName, 393 _Out_ ULONG *pchEaten, 394 _Out_ PIDLIST_RELATIVE *ppidl, 395 _Out_ ULONG *pdwAttributes); 396 397 EXTERN_C HRESULT WINAPI 398 IShellFolder_CompareIDs( 399 _In_ IShellFolder *psf, 400 _In_ LPARAM lParam, 401 _In_ PCUIDLIST_RELATIVE pidl1, 402 _In_ PCUIDLIST_RELATIVE pidl2); 403 #endif /* SHLWAPI_ISHELLFOLDER_HELPERS */ 404 405 #ifdef __cplusplus 406 } /* extern "C" */ 407 #endif /* defined(__cplusplus) */ 408 409 #endif /* __SHLWAPI_UNDOC_H */ 410