152#define ICON_LINK_WINDOWS_COMPAT
154#define SHLINK_LOCAL 0
155#define SHLINK_REMOTE 1
305 TRACE(
"-- destroying IShellLink(%p)\n",
this);
322 TRACE(
"%p %p\n",
this, pclsid);
326 *pclsid = CLSID_ShellLink;
335 TRACE(
"(%p)\n",
this);
356 TRACE(
"-- returning hr %08x\n",
hr);
410 *ppszFileName =
NULL;
494 TRACE(
"ret = %d type %d serial %08x name %s\n", bRet,
504 unsigned char data[1];
596 if (
n && n < loc->dwTotalSize)
599 TRACE(
"type %d serial %08x name %s path %s\n",
volume->type,
633 ERR(
"Ooops. This structure is not as expected...\n");
648 TRACE(
"%p %p\n",
this, stm);
656 ULONG dwBytesRead = 0;
661 if (dwBytesRead !=
sizeof(
m_Header))
782#if (NTDDI_VERSION < NTDDI_LONGHORN)
864 DWORD volume_info_size =
sizeof(*vol) + label_size;
865 DWORD final_path_size = 1;
866 DWORD total_size =
sizeof(*loc) + volume_info_size + path_size + final_path_size;
882 loc->
dwFinalPathOfs =
sizeof(*loc) + volume_info_size + path_size;
885 vol->
dwSize = volume_info_size;
911 TRACE(
"%p %p %x\n",
this, stm, fClearDirty);
937 UINT NT6SimpleFlags =
LOBYTE(
GetVersion()) > 6 ? (0x00040000 | 0x00400000 | 0x00800000 | 0x02000000) : 0;
940#if (NTDDI_VERSION < NTDDI_LONGHORN)
971 ERR(
"Write failed\n");
982 ERR(
"Failed to write PIDL\n");
1052 TRACE(
"(%p)\n",
this);
1070 if (!
path || !psPath)
1073 if (!*psPath && sPathRel)
1108 wcscpy(abs_path, sPathRel);
1124 TRACE(
"(%p)->(pfile=%p len=%u find_data=%p flags=%u)(%s)\n",
1133 hr =
GetPath(pszFileW, cchMaxPath, &wfd, fFlags);
1160 pfd->cAlternateFileName,
sizeof(
pfd->cAlternateFileName),
NULL,
NULL);
1169 TRACE(
"(%p)->(ppidl=%p)\n",
this, ppidl);
1183 TRACE(
"(%p)->(pidl=%p)\n",
this, pidl);
1189 TRACE(
"(%p)->(%p len=%u)\n",
this, pszName, cchMaxName);
1203 TRACE(
"(%p)->(pName=%s)\n",
this, pszName);
1221 TRACE(
"(%p)->(%p len=%u)\n",
this,
pszDir, cchMaxPath);
1253 TRACE(
"(%p)->(%p len=%u)\n",
this, pszArgs, cchMaxPath);
1267 TRACE(
"(%p)->(args=%s)\n",
this, pszArgs);
1292 TRACE(
"(%p)->(hotkey=%x)\n",
this, wHotkey);
1309 TRACE(
"(%p) %d\n",
this, iShowCmd);
1322 TRACE(
"(%p)->(%p len=%u iicon=%p)\n",
this, pszIconPath, cchIconPath, piIcon);
1334 pszIconPath, cchIconPath,
NULL,
NULL);
1347 TRACE(
"(%p)->(%u %p len=%u piIndex=%p pwFlags=%p)\n",
this,
uFlags, pszIconFile,
cchMax, piIndex, pwFlags);
1369 TRACE(
"(%p)->(path=%s iicon=%u)\n",
this, pszFile, nIconIndex);
1389 TRACE(
"(%p)->(path=%s iicon=%u)\n",
this, pszIconPath, iIcon);
1451 TRACE(
"(%p)->(hwnd=%p flags=%x)\n",
this,
hwnd, fFlags);
1457#if (NTDDI_VERSION < NTDDI_LONGHORN)
1461 FIXME(
"Logo3 links are not supported yet!\n");
1517 TRACE(
"(%p)->(path=%s)\n",
this, pszFile);
1536 TRACE(
"(%p)->(pfile=%p len=%u find_data=%p flags=%u)(%s)\n",
1572 pfd->nFileSizeHigh = 0;
1597 if (pInfo && (pInfo->
cbSize ==
sizeof(*pInfo)))
1604 if (fFlags)
FIXME(
"(%p): Unsupported flags %lu\n",
this, fFlags);
1615 TRACE(
"(%p)->(%p len=%u)\n",
this, pszName, cchMaxName);
1644 TRACE(
"(%p)->(%p len %u)\n",
this,
pszDir, cchMaxPath);
1675 TRACE(
"(%p)->(%p len=%u)\n",
this, pszArgs, cchMaxPath);
1706 TRACE(
"(%p)->(%p len=%u iicon=%p)\n",
this, pszIconPath, cchIconPath, piIcon);
1721 if (pInfo && (pInfo->
cbSize ==
sizeof(*pInfo)))
1753 hr = pei->GetIconLocation(
uFlags, pszIconFile,
cchMax, piIndex, pwFlags);
1774 if (
uFlags & GIL_FORSHORTCUT)
1782 uFlags |= GIL_FORSHORTCUT;
1784 if (
uFlags & GIL_DEFAULTICON)
1795 *pwFlags = GIL_NOTFILENAME | GIL_PERCLASS;
1809 *phiconLarge =
NULL;
1812 if (*phiconLarge ==
NULL)
1818 *phiconSmall =
NULL;
1821 if (*phiconSmall ==
NULL)
1827 if (phiconLarge && *phiconLarge)
1830 *phiconLarge =
NULL;
1832 if (phiconSmall && *phiconSmall)
1835 *phiconSmall =
NULL;
1844BOOL PathFullyUnExpandEnvStringsW(
1854 while (*pszPath && cchBuf > 0)
1863 p = pszPath +
wcslen(pszPath);
1867 if (
p - pszPath >= cchBuf)
1871 wcsncpy(pszBuf, pszPath,
p - pszPath);
1872 pszBuf[
p - pszPath] =
L'\0';
1875 cchBuf -= (
p - pszPath);
1876 pszBuf += (
p - pszPath);
1877 pszPath += (
p - pszPath);
1895 p = pszPath +
wcslen(pszPath);
1897 while ((*
p == *
q) && (
p > pszPath) && (
q > pszBuf))
1905 cchBuf -= (
q - pszBuf);
1922 TRACE(
"(%p)->(path=%s iicon=%u)\n",
this,
debugstr_w(pszIconPath), iIcon);
1936#ifdef ICON_LINK_WINDOWS_COMPAT
1940 if (bSuccess &&
wcscmp(pszIconPath, szIconPath) != 0)
1950 if (
wcscmp(pszIconPath, szIconPath) != 0)
1960#ifdef ICON_LINK_WINDOWS_COMPAT
1962 LPCWSTR pszOrgIconPath = pszIconPath;
1963 pszIconPath = szIconPath;
1969 if (pInfo->
cbSize !=
sizeof(*pInfo))
1971 ERR(
"Ooops. This structure is not as expected...\n");
1999#ifdef ICON_LINK_WINDOWS_COMPAT
2001 pszIconPath = pszOrgIconPath;
2004 pszIconPath = szIconPath;
2020#ifdef ICON_LINK_WINDOWS_COMPAT
2087 && (dwSig != EXP_LOGO3_ID_SIG)
2101 if (pInfo->
dbh.
cbSize !=
sizeof(*pInfo))
2103 ERR(
"Ooops. This structure is not as expected...\n");
2108#if (NTDDI_VERSION < NTDDI_LONGHORN)
2109 else if (dwSig == EXP_LOGO3_ID_SIG)
2123 buffer.dbh.dwSignature = dwSig;
2137#if (NTDDI_VERSION < NTDDI_LONGHORN)
2138 else if (dwSig == EXP_LOGO3_ID_SIG)
2159 if (
str[0] !=
':' ||
str[1] !=
':')
2208#if (NTDDI_VERSION < NTDDI_LONGHORN)
2221#if (NTDDI_VERSION < NTDDI_LONGHORN)
2240 if (pidl && pszFile)
2329 if (pszFile[0] ==
L'"' && pszFile[
len-1] ==
L'"')
2381 if (pInfo->
cbSize !=
sizeof(*pInfo))
2383 ERR(
"Ooops. This structure is not as expected...\n");
2452 TRACE(
"%p %08x %p\n",
this, dwSig, ppDataBlock);
2454 *ppDataBlock =
NULL;
2459 ERR(
"unknown datablock %08x (not found)\n", dwSig);
2469 *ppDataBlock = pDataBlock;
2485 TRACE(
"%p %p\n",
this, pdwFlags);
2506 TRACE(
"%p %p %p %p\n",
this, pidlFolder, pdtobj, hkeyProgID);
2514 format.dwAspect = DVASPECT_CONTENT;
2516 format.tymed = TYMED_HGLOBAL;
2545 TRACE(
"%p %p %u %u %u %u\n",
this,
2546 hMenu, indexMenu, idCmdFirst, idCmdLast,
uFlags);
2556 mii.
cbSize =
sizeof(mii);
2560 mii.
wID = idCmdFirst +
id++;
2569 mii.
wID = idCmdFirst +
id++;
2589 ERR(
"ret: %08lX\n",
ret);
2598 TRACE(
"%p %p\n",
this, lpici);
2610 TRACE(
"failed to resolve component error 0x%08x\n",
hr);
2615 TRACE(
"idCmd: %d\n", idCmd);
2631 const BOOL unicode = IsUnicode(*lpici);
2670 sei.
fMask &= ~SEE_MASK_DOENVSUBST;
2703 FIXME(
"%p %lu %u %p %p %u\n",
this, idCmd, uType, pwReserved, pszName,
cchMax);
2753 ERR(
"SHGetFileInfoW failed for %ls (%lu)\n", pszFullPath,
GetLastError());
2774 TRACE(
"CShellLink::OnInitDialog(hwnd %p hwndFocus %p lParam %p)\n", hwndDlg, hwndFocus,
lParam);
2875 disablecontrols =
TRUE;
2895 disablecontrols =
TRUE;
2963 else if (!StrIsNullOrEmpty(
m_sPath))
3034 LPWSTR unquoted = wszBuf;
3043 if (unquoted[0] ==
'"' && unquoted[
wcslen(unquoted) - 1] ==
'"')
3125 pThis->OnDestroy(hwndDlg);
3142 (
LPARAM)
this,
NULL, &PropSheetPageLifetimeCallback<CShellLink>);
3148 enum { CShellLink_PageIndex_Shortcut = 0 };
3149 return 1 + CShellLink_PageIndex_Shortcut;
3154 TRACE(
"(%p) (uPageID %u, pfnReplacePage %p lParam %p\n",
this, uPageID, pfnReplacePage,
lParam);
3160 TRACE(
"%p %p\n",
this, punk);
3174 return m_site->QueryInterface(iid, ppvSite);
3180 TRACE(
"(%p)->(DataObject=%p)\n",
this, pDataObject);
3197 TRACE(
"(%p)\n",
this);
3206 TRACE(
"(%p)\n",
this);
3220 TRACE(
"(%p)\n",
this);
3242 return ppf->QueryInterface(
riid,
ppv);
#define PRF_TRYPROGRAMEXTENSIONS
#define shell32_hInstance
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static WCHAR * strdupW(const WCHAR *src)
void shell(int argc, const char *argv[])
#define STDMETHODCALLTYPE
EXTERN_C void WINAPI SHChangeNotify(LONG wEventId, UINT uFlags, LPCVOID dwItem1, LPCVOID dwItem2)
STDMETHOD() SetWorkingDirectory(LPCSTR pszDir) override
STDMETHOD() SetShowCmd(INT iShowCmd) override
HRESULT DoOpen(LPCMINVOKECOMMANDINFO lpici)
STDMETHOD() GetPath(LPSTR pszFile, INT cchMaxPath, WIN32_FIND_DATAA *pfd, DWORD fFlags) override
STDMETHOD() Extract(PCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize) override
STDMETHOD() InvokeCommand(LPCMINVOKECOMMANDINFO lpici) override
STDMETHOD() GetSite(REFIID iid, void **ppvSite) override
CComPtr< IDropTarget > m_DropTarget
STDMETHOD() DragLeave() override
STDMETHOD() DragEnter(IDataObject *pDataObject, DWORD dwKeyState, POINTL pt, DWORD *pdwEffect) override
STDMETHOD() GetDescription(LPSTR pszName, INT cchMaxName) override
LRESULT OnNotify(HWND hwndDlg, int idFrom, LPNMHDR pnmhdr)
STDMETHOD() CopyDataBlock(DWORD dwSig, void **ppDataBlock) override
STDMETHOD() Drop(IDataObject *pDataObject, DWORD dwKeyState, POINTL pt, DWORD *pdwEffect) override
STDMETHOD() Save(LPCOLESTR pszFileName, BOOL fRemember) override
SHELL_LINK_HEADER m_Header
void OnCommand(HWND hwndDlg, int id, HWND hwndCtl, UINT codeNotify)
HICON CreateShortcutIcon(LPCWSTR wszIconPath, INT IconIndex)
STDMETHOD() Load(LPCOLESTR pszFileName, DWORD dwMode) override
STDMETHOD() IsDirty() override
STDMETHOD() GetHotkey(WORD *pwHotkey) override
STDMETHOD() GetArguments(LPSTR pszArgs, INT cchMaxPath) override
HRESULT DoOpenFileLocation()
STDMETHOD() GetClassID(CLSID *pclsid) override
static INT_PTR CALLBACK SH_ShellLinkDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
STDMETHOD() AddPages(LPFNADDPROPSHEETPAGE pfnAddPage, LPARAM lParam) override
STDMETHOD() SetHotkey(WORD wHotkey) override
STDMETHOD() RemoveDataBlock(DWORD dwSig) override
STDMETHOD() SetSite(IUnknown *punk) override
STDMETHOD() SaveCompleted(LPCOLESTR pszFileName) override
BOOL OnInitDialog(HWND hwndDlg, HWND hwndFocus, LPARAM lParam)
void OnDestroy(HWND hwndDlg)
STDMETHOD() GetWorkingDirectory(LPSTR pszDir, INT cchMaxPath) override
STDMETHOD() GetIDList(PIDLIST_ABSOLUTE *ppidl) override
STDMETHOD() SetIDList(PCIDLIST_ABSOLUTE pidl) override
HRESULT SetAdvertiseInfo(LPCWSTR str)
HRESULT SetTargetFromPIDLOrPath(LPCITEMIDLIST pidl, LPCWSTR pszFile)
STDMETHOD() SetPath(LPCSTR pszFile) override
STDMETHOD() GetFlags(DWORD *pdwFlags) override
STDMETHOD() ReplacePage(UINT uPageID, LPFNADDPROPSHEETPAGE pfnReplacePage, LPARAM lParam) override
STDMETHOD() GetCurFile(LPOLESTR *ppszFileName) override
STDMETHOD() GetShowCmd(INT *piShowCmd) override
STDMETHOD() GetCommandString(UINT_PTR idCmd, UINT uType, UINT *pwReserved, LPSTR pszName, UINT cchMax) override
HRESULT GetAdvertiseInfo(LPWSTR *str, DWORD dwSig)
STDMETHOD() DragOver(DWORD dwKeyState, POINTL pt, DWORD *pdwEffect) override
STDMETHOD() QueryContextMenu(HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags) override
STDMETHOD() AddDataBlock(void *pDataBlock) override
HRESULT WriteAdvertiseInfo(LPCWSTR string, DWORD dwSig)
STDMETHOD() SetDescription(LPCSTR pszName) override
STDMETHOD() GetIconLocation(LPSTR pszIconPath, INT cchIconPath, INT *piIcon) override
CComPtr< IUnknown > m_site
STDMETHOD() SetIconLocation(LPCSTR pszIconPath, INT iIcon) override
STDMETHOD() SetArguments(LPCSTR pszArgs) override
STDMETHOD() SetFlags(DWORD dwFlags) override
STDMETHOD() Initialize(PCIDLIST_ABSOLUTE pidlFolder, IDataObject *pdtobj, HKEY hkeyProgID) override
STDMETHOD() Resolve(HWND hwnd, DWORD fFlags) override
STDMETHOD() SetRelativePath(LPCSTR pszPathRel, DWORD dwReserved) override
STDMETHOD() GetSizeMax(ULARGE_INTEGER *pcbSize) override
void pdump(LPCITEMIDLIST pidl)
DWORD WINAPI CommandLineFromMsiDescriptor(WCHAR *szDescriptor, WCHAR *szCommandLine, DWORD *pcchCommandLine)
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
HICON WINAPI ImageList_GetIcon(HIMAGELIST himl, INT i, UINT fStyle)
INT WINAPI ImageList_AddMasked(HIMAGELIST himl, HBITMAP hBitmap, COLORREF clrMask)
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
#define INVALID_HANDLE_VALUE
static __inline const char * debugstr_an(const char *s, int n)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
#define FAILED_UNEXPECTEDLY(hr)
static void cleanup(void)
DWORD WINAPI ExpandEnvironmentStringsW(IN LPCWSTR lpSrc, IN LPWSTR lpDst, IN DWORD nSize)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
UINT WINAPI GetDriveTypeW(IN LPCWSTR lpRootPathName)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI GetVolumeInformationW(IN LPCWSTR lpRootPathName, IN LPWSTR lpVolumeNameBuffer, IN DWORD nVolumeNameSize, OUT LPDWORD lpVolumeSerialNumber OPTIONAL, OUT LPDWORD lpMaximumComponentLength OPTIONAL, OUT LPDWORD lpFileSystemFlags OPTIONAL, OUT LPWSTR lpFileSystemNameBuffer OPTIONAL, IN DWORD nFileSystemNameSize)
DWORD WINAPI GetShortPathNameW(IN LPCWSTR lpszLongPath, OUT LPWSTR lpszShortPath, IN DWORD cchBuffer)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
BOOL WINAPI FileTimeToSystemTime(IN CONST FILETIME *lpFileTime, OUT LPSYSTEMTIME lpSystemTime)
HRESULT WINAPI CLSIDFromString(LPCOLESTR idstr, LPCLSID id)
void WINAPI ReleaseStgMedium(STGMEDIUM *pmedium)
static const WCHAR IconIndex[]
INT_PTR CALLBACK ExtendedShortcutProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
static LPWSTR GetAdvertisedArg(LPCWSTR str)
static BOOL SHELL_ExistsFileW(LPCWSTR path)
static HRESULT ShellLink_UpdatePath(LPCWSTR sPathRel, LPCWSTR path, LPCWSTR sWorkDir, LPWSTR *psPath)
static LPWSTR Stream_LoadPath(LPCSTR p, DWORD maxlen)
static HRESULT SHELL_PidlGetIconLocationW(PCIDLIST_ABSOLUTE pidl, UINT uFlags, PWSTR pszIconFile, UINT cchMax, int *piIndex, UINT *pwFlags)
HRESULT WINAPI IShellLink_ConstructFromFile(IShellFolder *psf, LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv)
static HRESULT Stream_ReadChunk(IStream *stm, LPVOID *data)
HRESULT WINAPI IShellLink_ConstructFromPath(WCHAR *path, REFIID riid, LPVOID *ppv)
static HRESULT Stream_LoadLocation(IStream *stm, CShellLink::volume_info *volume, LPWSTR *path)
static void GetTypeDescriptionByPath(PCWSTR pszFullPath, DWORD fAttributes, PWSTR szBuf, UINT cchBuf)
static HRESULT Stream_WriteString(IStream *stm, LPCWSTR str)
static HRESULT Stream_WriteLocationInfo(IStream *stm, LPCWSTR path, CShellLink::volume_info *volume)
static LPWSTR __inline strdupW(LPCWSTR src)
static BOOL ShellLink_GetVolumeInfo(LPCWSTR path, CShellLink::volume_info *volume)
static LPWSTR shelllink_get_msi_component_path(LPWSTR component)
static LPWSTR __inline HEAP_strdupAtoW(HANDLE heap, DWORD flags, LPCSTR str)
static BOOL Stream_LoadVolume(LOCAL_VOLUME_INFO *vol, CShellLink::volume_info *volume)
static HRESULT Stream_LoadString(IStream *stm, BOOL unicode, LPWSTR *pstr)
static BOOL PathEnvSubstIsDirectory(LPCWSTR pszPath)
BOOL WINAPI PickIconDlg(HWND hWndOwner, LPWSTR lpstrFile, UINT nMaxFile, INT *lpdwIconIndex)
#define CmicFlagsToSeeFlags(flags)
HRESULT SHGetNameAndFlagsW(_In_ LPCITEMIDLIST pidl, _In_ DWORD dwFlags, _Out_opt_ LPWSTR pszText, _In_ UINT cchBuf, _Inout_opt_ DWORD *pdwAttributes)
const GUID SHELL32_AdvtShortcutProduct
static HRESULT AddPropSheetPage(HPROPSHEETPAGE hPage, LPFNSVADDPROPSHEETPAGE pfnAddPage, LPARAM lParam)
EXTERN_C HRESULT SHELL_GetUIObjectOfAbsoluteItem(_In_opt_ HWND hWnd, _In_ PCIDLIST_ABSOLUTE pidl, _In_ REFIID riid, _Out_ void **ppvObj)
const GUID SHELL32_AdvtShortcutComponent
void WINAPI SHFree(LPVOID pv)
UINT WINAPI DragQueryFileW(HDROP hDrop, UINT lFile, LPWSTR lpszwFile, UINT lLength)
LPVOID WINAPI SHAlloc(SIZE_T len)
BOOL WINAPI PathResolveW(_Inout_ LPWSTR path, _Inout_opt_ LPCWSTR *dirs, _In_ DWORD flags)
DATABLOCK_HEADER *WINAPI SHFindDataBlock(LPDBLIST lpList, DWORD dwSignature)
HRESULT WINAPI SHReadDataBlockList(IStream *lpStream, LPDBLIST *lppList)
VOID WINAPI SHFreeDataBlockList(LPDBLIST lpList)
BOOL WINAPI SHAddDataBlock(LPDBLIST *lppList, const DATABLOCK_HEADER *lpNewItem)
HRESULT WINAPI SHWriteDataBlockList(IStream *lpStream, LPDBLIST lpList)
BOOL WINAPI SHRemoveDataBlock(LPDBLIST *lppList, DWORD dwSignature)
HRESULT WINAPI SHCreateStreamOnFileW(LPCWSTR lpszPath, DWORD dwMode, IStream **lppStream)
void WINAPI PathRemoveArgsW(LPWSTR lpszPath)
BOOL WINAPI PathRemoveFileSpecW(LPWSTR lpszPath)
LPWSTR WINAPI PathFindFileNameW(LPCWSTR lpszPath)
BOOL WINAPI PathUnExpandEnvStringsW(LPCWSTR path, LPWSTR buffer, UINT buf_len)
LPWSTR WINAPI PathFindExtensionW(LPCWSTR lpszPath)
BOOL WINAPI PathFileExistsW(LPCWSTR lpszPath)
VOID WINAPI PathUnquoteSpacesW(LPWSTR lpszPath)
BOOL WINAPI PathIsFileSpecW(LPCWSTR lpszPath)
BOOL WINAPI PathFileExistsAndAttributesW(LPCWSTR lpszPath, DWORD *dwAttr)
LPWSTR WINAPI PathGetArgsW(LPCWSTR lpszPath)
DWORD WINAPI SHAnsiToUnicode(LPCSTR lpSrcStr, LPWSTR lpDstStr, int iLen)
BOOL WINAPI StrTrimW(LPWSTR lpszStr, LPCWSTR lpszTrim)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
#define MAKE_HRESULT(sev, fac, code)
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLdouble GLdouble GLdouble GLdouble q
GLenum GLuint GLenum GLsizei const GLchar * buf
GLuint GLsizei GLsizei * length
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
HLOCAL NTAPI LocalAlloc(UINT uFlags, SIZE_T dwBytes)
UINT WINAPI ExtractIconExW(LPCWSTR lpszFile, INT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIcons)
LPVOID WINAPI CoTaskMemAlloc(SIZE_T size)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
HRESULT GetData([in, unique] FORMATETC *pformatetcIn, [out] STGMEDIUM *pmedium)
const DWORD DROPEFFECT_NONE
HRESULT Write([in, size_is(cb)] const void *pv, [in] ULONG cb, [out] ULONG *pcbWritten)
HRESULT Read([out, size_is(cb), length_is(*pcbRead)] void *pv, [in] ULONG cb, [out] ULONG *pcbRead)
#define memcpy(s1, s2, n)
static const WCHAR label[]
static DWORD DWORD void LPSTR DWORD cch
static const WCHAR szGuid[]
static const CLSID *static CLSID *static const GUID VARIANT VARIANT *static IServiceProvider DWORD *static HMENU
struct _PSP * HPROPSHEETPAGE
unsigned __int3264 UINT_PTR
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
#define FILE_ATTRIBUTE_DIRECTORY
#define LOCALE_USER_DEFAULT
#define MAKEINTRESOURCE(i)
#define STGM_SHARE_EXCLUSIVE
#define STGM_SHARE_DENY_WRITE
#define PathAddBackslashW
LPITEMIDLIST WINAPI SHCloneSpecialIDList(HWND hwndOwner, int nFolder, BOOL fCreate)
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
void WINAPI ILFree(LPITEMIDLIST pidl)
HRESULT WINAPI SHILCreateFromPathW(LPCWSTR path, LPITEMIDLIST *ppidl, DWORD *attributes)
LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2)
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
HRESULT WINAPI ILSaveToStream(IStream *pStream, LPCITEMIDLIST pPidl)
BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST pidl, LPWSTR pszPath)
HRESULT WINAPI ILLoadFromStream(IStream *pStream, LPITEMIDLIST *ppPidl)
LPITEMIDLIST WINAPI SHSimpleIDListFromPathW(LPCWSTR lpszPath)
BOOL ILGetDisplayNameExW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, LPWSTR path, DWORD type)
#define PSNRET_INVALID_NOCHANGEPAGE
#define PropSheet_Changed(d, w)
struct _PROPSHEETPAGEW * LPPROPSHEETPAGEW
BOOL(CALLBACK * LPFNADDPROPSHEETPAGE)(HPROPSHEETPAGE, LPARAM)
struct _PSHNOTIFY * LPPSHNOTIFY
_Out_opt_ int _Out_opt_ int * cy
#define IsEqualGUID(rguid1, rguid2)
#define IsEqualIID(riid1, riid2)
DWORD WINAPI GetVersion()
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
_Check_return_ _CRTIMP _CONST_RETURN wchar_t *__cdecl wcspbrk(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_Control)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
DWORD_PTR WINAPI SHGetFileInfoW(LPCWSTR path, DWORD dwFileAttributes, SHFILEINFOW *psfi, UINT sizeofpsfi, UINT flags)
static __inline LPWSTR __SHCloneStrAtoW(WCHAR **target, const char *source)
#define SEE_MASK_DOENVSUBST
#define SHGFI_ICONLOCATION
#define SHGFI_DISPLAYNAME
#define SHGFI_USEFILEATTRIBUTES
#define SEE_MASK_INVOKEIDLIST
#define SEE_MASK_FLAG_NO_UI
#define SEE_MASK_HASLINKNAME
HINSTANCE WINAPI FindExecutableW(LPCWSTR lpFile, LPCWSTR lpDirectory, LPWSTR lpResult)
HINSTANCE WINAPI ShellExecuteW(HWND hwnd, LPCWSTR lpVerb, LPCWSTR lpFile, LPCWSTR lpParameters, LPCWSTR lpDirectory, INT nShowCmd)
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
EXTERN_C HRESULT WINAPI SHOpenFolderAndSelectItems(PCIDLIST_ABSOLUTE pidlFolder, UINT cidl, PCUITEMID_CHILD_ARRAY apidl, DWORD dwFlags)
#define EXP_DARWIN_ID_SIG
struct EXP_DARWIN_LINK * LPEXP_DARWIN_LINK
@ SLDF_RUN_WITH_SHIMLAYER
#define EXP_SPECIAL_FOLDER_SIG
struct EXP_SPECIAL_FOLDER * LPEXP_SPECIAL_FOLDER
struct EXP_SZ_LINK * LPEXP_SZ_LINK
HRESULT WINAPI SHAutoComplete(HWND hwndEdit, DWORD dwFlags)
#define PathRemoveBackslash
DWORD WINAPI SHExpandEnvironmentStringsW(LPCWSTR, LPWSTR, DWORD)
#define IDC_SHORTCUT_FIND
#define IDS_SHORTCUT_RUN_MAX
#define IDC_SHORTCUT_ADVANCED
#define IDC_SHORTCUT_RUN_COMBO
#define IDS_OPENFILELOCATION
#define IDS_SHORTCUT_RUN_MIN
#define IDC_SHORTCUT_LOCATION_EDIT
#define IDC_SHORTCUT_TEXT
#define IDC_SHORTCUT_TARGET_TEXT
#define IDC_SHORTCUT_ICON
#define IDC_SHORTCUT_KEY_HOTKEY
#define IDC_SHORTEX_RUN_DIFFERENT
#define IDI_SHELL_SHORTCUT
#define IDS_SHORTCUT_RUN_NORMAL
#define IDD_SHORTCUT_PROPERTIES
#define IDC_SHORTCUT_CHANGE_ICON
#define IDD_SHORTCUT_EXTENDED_PROPERTIES
#define IDC_SHORTCUT_TYPE_EDIT
#define IDC_SHORTCUT_COMMENT_EDIT
#define IDC_SHORTCUT_START_IN_EDIT
ITEMIDLIST UNALIGNED * LPITEMIDLIST
const ITEMIDLIST UNALIGNED * LPCITEMIDLIST
static PIXELFORMATDESCRIPTOR pfd
STRSAFEAPI StringCchPrintfW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchCopyExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags)
STRSAFEAPI StringCchCatW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCchPrintfExW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPWSTR *ppszDestEnd, size_t *pcchRemaining, STRSAFE_DWORD dwFlags, STRSAFE_LPCWSTR pszFormat,...)
STRSAFEAPI StringCchCopyW(STRSAFE_LPWSTR pszDest, size_t cchDest, STRSAFE_LPCWSTR pszSrc)
STRSAFEAPI StringCbPrintfW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszFormat,...)
CHAR szDarwinID[MAX_PATH]
WCHAR szwDarwinID[MAX_PATH]
WCHAR szwTarget[MAX_PATH]
DWORD dwNetworkVolTableOfs
WCHAR szDisplayName[MAX_PATH]
BITMAPINFOHEADER bmiHeader
#define FIELD_OFFSET(t, f)
WORD WORD PSZ PSZ pszFileName
#define INVALID_FILE_ATTRIBUTES
HPROPSHEETPAGE SH_CreatePropertySheetPageEx(WORD wDialogId, DLGPROC pfnDlgProc, LPARAM lParam, LPCWSTR pwszTitle, LPFNPSPCALLBACK Callback)
HBITMAP WINAPI CreateDIBSection(HDC hDC, CONST BITMAPINFO *BitmapInfo, UINT Usage, VOID **Bits, HANDLE hSection, DWORD dwOffset)
UINT WINAPI GetDlgItemTextW(HWND hDlg, int nIDDlgItem, LPWSTR lpString, int nMaxCount)
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
DWORD WINAPI GetLastError(void)
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define STG_E_INVALIDPOINTER
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
int WINAPI FillRect(HDC, LPCRECT, HBRUSH)
HBRUSH WINAPI CreateSolidBrush(_In_ COLORREF)
BOOL WINAPI DeleteDC(_In_ HDC)
DWORD WINAPI GetSysColor(_In_ int)
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
UINT WINAPI PrivateExtractIconsW(_In_reads_(MAX_PATH) LPCWSTR szFileName, _In_ int nIconIndex, _In_ int cxIcon, _In_ int cyIcon, _Out_writes_opt_(nIcons) HICON *phicon, _Out_writes_opt_(nIcons) UINT *piconid, _In_ UINT nIcons, _In_ UINT flags)
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE hInst, _In_ LPCWSTR name, _In_ UINT type, _In_ int cx, _In_ int cy, _In_ UINT fuLoad)
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
LRESULT WINAPI SendDlgItemMessageW(_In_ HWND, _In_ int, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI DrawIconEx(_In_ HDC, _In_ int, _In_ int, _In_ HICON, _In_ int, _In_ int, _In_ UINT, _In_opt_ HBRUSH, _In_ UINT)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
BOOL WINAPI IsWindowEnabled(_In_ HWND)
HWND WINAPI GetParent(_In_ HWND)
#define MAKEINTRESOURCEW(i)
int WINAPI GetSystemMetrics(_In_ int)
#define SW_SHOWMINNOACTIVE
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
BOOL WINAPI InsertMenuItemW(_In_ HMENU, _In_ UINT, _In_ BOOL, _In_ LPCMENUITEMINFOW)
SHORT WINAPI GetKeyState(_In_ int)
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
BOOL WINAPI DestroyIcon(_In_ HICON)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
#define IID_PPV_ARG(Itype, ppType)