152#define ICON_LINK_WINDOWS_COMPAT
154#define SHLINK_LOCAL 0
155#define SHLINK_REMOTE 1
290 TRACE(
"-- destroying IShellLink(%p)\n",
this);
307 TRACE(
"%p %p\n",
this, pclsid);
311 *pclsid = CLSID_ShellLink;
320 TRACE(
"(%p)\n",
this);
341 TRACE(
"-- returning hr %08x\n",
hr);
395 *ppszFileName =
NULL;
479 TRACE(
"ret = %d type %d serial %08x name %s\n", bRet,
489 unsigned char data[1];
581 if (
n && n < loc->dwTotalSize)
584 TRACE(
"type %d serial %08x name %s path %s\n",
volume->type,
618 ERR(
"Ooops. This structure is not as expected...\n");
633 TRACE(
"%p %p\n",
this, stm);
641 ULONG dwBytesRead = 0;
646 if (dwBytesRead !=
sizeof(
m_Header))
751#if (NTDDI_VERSION < NTDDI_LONGHORN)
833 DWORD volume_info_size =
sizeof(*vol) + label_size;
834 DWORD final_path_size = 1;
835 DWORD total_size =
sizeof(*loc) + volume_info_size + path_size + final_path_size;
851 loc->
dwFinalPathOfs =
sizeof(*loc) + volume_info_size + path_size;
854 vol->
dwSize = volume_info_size;
880 TRACE(
"%p %p %x\n",
this, stm, fClearDirty);
892#if (NTDDI_VERSION < NTDDI_LONGHORN)
923 ERR(
"Write failed\n");
934 ERR(
"Failed to write PIDL\n");
1004 TRACE(
"(%p)\n",
this);
1022 if (!
path || !psPath)
1025 if (!*psPath && sPathRel)
1060 wcscpy(abs_path, sPathRel);
1076 TRACE(
"(%p)->(pfile=%p len=%u find_data=%p flags=%u)(%s)\n",
1085 hr =
GetPath(pszFileW, cchMaxPath, &wfd, fFlags);
1112 pfd->cAlternateFileName,
sizeof(
pfd->cAlternateFileName),
NULL,
NULL);
1121 TRACE(
"(%p)->(ppidl=%p)\n",
this, ppidl);
1135 TRACE(
"(%p)->(pidl=%p)\n",
this, pidl);
1141 TRACE(
"(%p)->(%p len=%u)\n",
this, pszName, cchMaxName);
1155 TRACE(
"(%p)->(pName=%s)\n",
this, pszName);
1173 TRACE(
"(%p)->(%p len=%u)\n",
this,
pszDir, cchMaxPath);
1205 TRACE(
"(%p)->(%p len=%u)\n",
this, pszArgs, cchMaxPath);
1219 TRACE(
"(%p)->(args=%s)\n",
this, pszArgs);
1244 TRACE(
"(%p)->(hotkey=%x)\n",
this, wHotkey);
1261 TRACE(
"(%p) %d\n",
this, iShowCmd);
1274 TRACE(
"(%p)->(%p len=%u iicon=%p)\n",
this, pszIconPath, cchIconPath, piIcon);
1286 pszIconPath, cchIconPath,
NULL,
NULL);
1299 TRACE(
"(%p)->(%u %p len=%u piIndex=%p pwFlags=%p)\n",
this,
uFlags, pszIconFile,
cchMax, piIndex, pwFlags);
1321 TRACE(
"(%p)->(path=%s iicon=%u)\n",
this, pszFile, nIconIndex);
1341 TRACE(
"(%p)->(path=%s iicon=%u)\n",
this, pszIconPath, iIcon);
1403 TRACE(
"(%p)->(hwnd=%p flags=%x)\n",
this,
hwnd, fFlags);
1409#if (NTDDI_VERSION < NTDDI_LONGHORN)
1413 FIXME(
"Logo3 links are not supported yet!\n");
1469 TRACE(
"(%p)->(path=%s)\n",
this, pszFile);
1488 TRACE(
"(%p)->(pfile=%p len=%u find_data=%p flags=%u)(%s)\n",
1524 pfd->nFileSizeHigh = 0;
1549 if (pInfo && (pInfo->
cbSize ==
sizeof(*pInfo)))
1556 if (fFlags)
FIXME(
"(%p): Unsupported flags %lu\n",
this, fFlags);
1567 TRACE(
"(%p)->(%p len=%u)\n",
this, pszName, cchMaxName);
1596 TRACE(
"(%p)->(%p len %u)\n",
this,
pszDir, cchMaxPath);
1627 TRACE(
"(%p)->(%p len=%u)\n",
this, pszArgs, cchMaxPath);
1658 TRACE(
"(%p)->(%p len=%u iicon=%p)\n",
this, pszIconPath, cchIconPath, piIcon);
1673 if (pInfo && (pInfo->
cbSize ==
sizeof(*pInfo)))
1713 hr = pei->GetIconLocation(
uFlags, pszIconFile,
cchMax, piIndex, pwFlags);
1734 if (
uFlags & GIL_FORSHORTCUT)
1742 uFlags |= GIL_FORSHORTCUT;
1744 if (
uFlags & GIL_DEFAULTICON)
1754 *pwFlags = GIL_NOTFILENAME | GIL_PERCLASS;
1768 *phiconLarge =
NULL;
1771 if (*phiconLarge ==
NULL)
1777 *phiconSmall =
NULL;
1780 if (*phiconSmall ==
NULL)
1786 if (phiconLarge && *phiconLarge)
1789 *phiconLarge =
NULL;
1791 if (phiconSmall && *phiconSmall)
1794 *phiconSmall =
NULL;
1803BOOL PathFullyUnExpandEnvStringsW(
1813 while (*pszPath && cchBuf > 0)
1822 p = pszPath +
wcslen(pszPath);
1826 if (
p - pszPath >= cchBuf)
1830 wcsncpy(pszBuf, pszPath,
p - pszPath);
1831 pszBuf[
p - pszPath] =
L'\0';
1834 cchBuf -= (
p - pszPath);
1835 pszBuf += (
p - pszPath);
1836 pszPath += (
p - pszPath);
1854 p = pszPath +
wcslen(pszPath);
1856 while ((*
p == *
q) && (
p > pszPath) && (
q > pszBuf))
1864 cchBuf -= (
q - pszBuf);
1881 TRACE(
"(%p)->(path=%s iicon=%u)\n",
this,
debugstr_w(pszIconPath), iIcon);
1895#ifdef ICON_LINK_WINDOWS_COMPAT
1909 if (
wcscmp(pszIconPath, szIconPath) != 0)
1919#ifdef ICON_LINK_WINDOWS_COMPAT
1921 LPCWSTR pszOrgIconPath = pszIconPath;
1922 pszIconPath = szIconPath;
1928 if (pInfo->
cbSize !=
sizeof(*pInfo))
1930 ERR(
"Ooops. This structure is not as expected...\n");
1958#ifdef ICON_LINK_WINDOWS_COMPAT
1960 pszIconPath = pszOrgIconPath;
1963 pszIconPath = szIconPath;
1979#ifdef ICON_LINK_WINDOWS_COMPAT
2046 && (dwSig != EXP_LOGO3_ID_SIG)
2060 if (pInfo->
dbh.
cbSize !=
sizeof(*pInfo))
2062 ERR(
"Ooops. This structure is not as expected...\n");
2067#if (NTDDI_VERSION < NTDDI_LONGHORN)
2068 else if (dwSig == EXP_LOGO3_ID_SIG)
2082 buffer.dbh.dwSignature = dwSig;
2096#if (NTDDI_VERSION < NTDDI_LONGHORN)
2097 else if (dwSig == EXP_LOGO3_ID_SIG)
2118 if (
str[0] !=
':' ||
str[1] !=
':')
2167#if (NTDDI_VERSION < NTDDI_LONGHORN)
2180#if (NTDDI_VERSION < NTDDI_LONGHORN)
2199 if (pidl && pszFile)
2288 if (pszFile[0] ==
L'"' && pszFile[
len-1] ==
L'"')
2340 if (pInfo->
cbSize !=
sizeof(*pInfo))
2342 ERR(
"Ooops. This structure is not as expected...\n");
2411 TRACE(
"%p %08x %p\n",
this, dwSig, ppDataBlock);
2413 *ppDataBlock =
NULL;
2418 ERR(
"unknown datablock %08x (not found)\n", dwSig);
2428 *ppDataBlock = pDataBlock;
2444 TRACE(
"%p %p\n",
this, pdwFlags);
2468 TRACE(
"%p %p %p %p\n",
this, pidlFolder, pdtobj, hkeyProgID);
2476 format.dwAspect = DVASPECT_CONTENT;
2478 format.tymed = TYMED_HGLOBAL;
2509 TRACE(
"%p %p %u %u %u %u\n",
this,
2510 hMenu, indexMenu, idCmdFirst, idCmdLast,
uFlags);
2520 mii.
cbSize =
sizeof(mii);
2524 mii.
wID = idCmdFirst +
id++;
2533 mii.
wID = idCmdFirst +
id++;
2554 ERR(
"ret: %08lX\n",
ret);
2563 TRACE(
"%p %p\n",
this, lpici);
2575 TRACE(
"failed to resolve component error 0x%08x\n",
hr);
2580 TRACE(
"idCmd: %d\n", idCmd);
2595 const BOOL unicode = IsUnicode(*lpici);
2635 sei.
fMask &= ~SEE_MASK_DOENVSUBST;
2651 FIXME(
"%p %lu %u %p %p %u\n",
this, idCmd, uType, pwReserved, pszName,
cchMax);
2708 ERR(
"SHGetFileInfoW failed for %ls (%lu)\n", lpcwFullPath,
GetLastError());
2729 TRACE(
"CShellLink::OnInitDialog(hwnd %p hwndFocus %p lParam %p)\n", hwndDlg, hwndFocus,
lParam);
2830 disablecontrols =
TRUE;
2850 disablecontrols =
TRUE;
2964 if (unquoted[0] ==
'"' && unquoted[
wcslen(unquoted) - 1] ==
'"')
3049 pThis->OnDestroy(hwndDlg);
3068 ERR(
"failed to create property sheet page\n");
3072 if (!pfnAddPage(hPage,
lParam))
3080 TRACE(
"(%p) (uPageID %u, pfnReplacePage %p lParam %p\n",
this, uPageID, pfnReplacePage,
lParam);
3086 TRACE(
"%p %p\n",
this, punk);
3100 return m_site->QueryInterface(iid, ppvSite);
3106 TRACE(
"(%p)->(DataObject=%p)\n",
this, pDataObject);
3134 TRACE(
"(%p)\n",
this);
3143 TRACE(
"(%p)\n",
this);
3157 TRACE(
"(%p)\n",
this);
3179 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)
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)
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[]
void SH_GetTargetTypeByPath(LPCWSTR lpcwFullPath, LPWSTR szBuf, UINT cchBuf)
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 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)
BOOL WINAPI PickIconDlg(HWND hWndOwner, LPWSTR lpstrFile, UINT nMaxFile, INT *lpdwIconIndex)
HRESULT SHGetNameAndFlagsW(_In_ LPCITEMIDLIST pidl, _In_ DWORD dwFlags, _Out_opt_ LPWSTR pszText, _In_ UINT cchBuf, _Inout_opt_ DWORD *pdwAttributes)
const GUID SHELL32_AdvtShortcutProduct
const GUID SHELL32_AdvtShortcutComponent
UINT WINAPI DragQueryFileW(HDROP hDrop, UINT lFile, LPWSTR lpszwFile, UINT lLength)
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 PathIsDirectoryW(LPCWSTR lpszPath)
LPWSTR WINAPI PathGetArgsW(LPCWSTR lpszPath)
BOOL WINAPI StrTrimW(LPWSTR lpszStr, LPCWSTR lpszTrim)
unsigned int(__cdecl typeof(jpeg_read_scanlines))(struct jpeg_decompress_struct *
#define MAKE_HRESULT(sev, fac, code)
HPROPSHEETPAGE SH_CreatePropertySheetPage(LPCSTR resname, DLGPROC dlgproc, LPARAM lParam, LPWSTR szTitle)
GLuint GLuint GLsizei count
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
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 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 UNREFERENCED_PARAMETER(P)
#define STGM_SHARE_EXCLUSIVE
#define STGM_SHARE_DENY_WRITE
#define PathAddBackslashW
LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST pidl)
void WINAPI ILFree(LPITEMIDLIST pidl)
HRESULT WINAPI SHILCreateFromPathW(LPCWSTR path, LPITEMIDLIST *ppidl, DWORD *attributes)
BOOL WINAPI ILRemoveLastID(LPITEMIDLIST pidl)
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast)
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)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_Check_return_ _CRTIMP _CONST_RETURN wchar_t *__cdecl wcspbrk(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_Control)
_CRTIMP wchar_t *__cdecl wcsncpy(wchar_t *_Dest, const wchar_t *_Source, size_t _Count)
_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_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
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)