finish header restructuring
[reactos.git] / reactos / w32api / include / shlobj.h
diff --git a/reactos/w32api/include/shlobj.h b/reactos/w32api/include/shlobj.h
deleted file mode 100644 (file)
index 1f303f6..0000000
+++ /dev/null
@@ -1,1883 +0,0 @@
-#ifndef _SHLOBJ_H
-#define _SHLOBJ_H
-#if __GNUC__ >= 3
-#pragma GCC system_header
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <ole2.h>
-#include <shlguid.h>
-#include <shellapi.h>
-#include <shtypes.h>
-#include <commctrl.h>
-
-#pragma pack(push,1)
-
-#define BIF_RETURNONLYFSDIRS 1
-#define BIF_DONTGOBELOWDOMAIN 2
-#define BIF_STATUSTEXT 4
-#define BIF_RETURNFSANCESTORS 8
-#define BIF_EDITBOX 16
-#define BIF_VALIDATE 32
-#define BIF_NEWDIALOGSTYLE 64
-#define BIF_BROWSEINCLUDEURLS 128
-#define BIF_USENEWUI ( BIF_EDITBOX | BIF_NEWDIALOGSTYLE )
-#define BIF_BROWSEFORCOMPUTER 0x1000
-#define BIF_BROWSEFORPRINTER 0x2000
-#define BIF_BROWSEINCLUDEFILES 0x4000
-#define BIF_SHAREABLE 0x8000
-#define BFFM_INITIALIZED 1
-#define BFFM_SELCHANGED 2
-#define BFFM_VALIDATEFAILEDA 3
-#define BFFM_VALIDATEFAILEDW 4
-#define BFFM_SETSTATUSTEXTA (WM_USER + 100)
-#define BFFM_SETSTATUSTEXTW (WM_USER + 104)
-#define BFFM_ENABLEOK (WM_USER + 101)
-#define BFFM_SETSELECTIONA (WM_USER + 102)
-#define BFFM_SETSELECTIONW (WM_USER + 103)
-#define BFFM_SETOKTEXT (WM_USER + 105)
-#define BFFM_SETEXPANDED (WM_USER + 106)
-#ifdef UNICODE
-#define BFFM_SETSTATUSTEXT  BFFM_SETSTATUSTEXTW
-#define BFFM_SETSELECTION   BFFM_SETSELECTIONW
-#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDW
-#else
-#define BFFM_SETSTATUSTEXT  BFFM_SETSTATUSTEXTA
-#define BFFM_SETSELECTION   BFFM_SETSELECTIONA
-#define BFFM_VALIDATEFAILED BFFM_VALIDATEFAILEDA
-#endif
-#define DVASPECT_SHORTNAME 2
-#define SHARD_PIDL     1
-#define SHARD_PATHA    2
-#define SHARD_PATHW    3
-#ifdef UNICODE
-#define SHARD_PATH     SHARD_PATHW
-#else
-#define SHARD_PATH     SHARD_PATHA
-#endif
-#define SHCNE_RENAMEITEM       1
-#define SHCNE_CREATE   2
-#define SHCNE_DELETE   4
-#define SHCNE_MKDIR    8
-#define SHCNE_RMDIR    16
-#define SHCNE_MEDIAINSERTED    32
-#define SHCNE_MEDIAREMOVED     64
-#define SHCNE_DRIVEREMOVED     128
-#define SHCNE_DRIVEADD 256
-#define SHCNE_NETSHARE 512
-#define SHCNE_NETUNSHARE       1024
-#define SHCNE_ATTRIBUTES       2048
-#define SHCNE_UPDATEDIR        4096
-#define SHCNE_UPDATEITEM       8192
-#define SHCNE_SERVERDISCONNECT 16384
-#define SHCNE_UPDATEIMAGE      32768
-#define SHCNE_DRIVEADDGUI      65536
-#define SHCNE_RENAMEFOLDER     0x20000
-#define SHCNE_FREESPACE        0x40000
-#define SHCNE_ASSOCCHANGED     0x8000000
-#define SHCNE_DISKEVENTS       0x2381F
-#define SHCNE_GLOBALEVENTS     0xC0581E0
-#define SHCNE_ALLEVENTS        0x7FFFFFFF
-#define SHCNE_INTERRUPT        0x80000000
-#define SHCNF_IDLIST   0
-#define SHCNF_PATHA    1
-#define SHCNF_PRINTERA 2
-#define SHCNF_DWORD    3
-#define SHCNF_PATHW    5
-#define SHCNF_PRINTERW 6
-#define SHCNF_TYPE     0xFF
-#define SHCNF_FLUSH    0x1000
-#define SHCNF_FLUSHNOWAIT      0x2000
-#ifdef UNICODE
-#define SHCNF_PATH      SHCNF_PATHW
-#define SHCNF_PRINTER   SHCNF_PRINTERW
-#else
-#define SHCNF_PATH      SHCNF_PATHA
-#define SHCNF_PRINTER   SHCNF_PRINTERA
-#endif
-#define SFGAO_CANCOPY  DROPEFFECT_COPY
-#define SFGAO_CANMOVE  DROPEFFECT_MOVE
-#define SFGAO_CANLINK  DROPEFFECT_LINK
-#define SFGAO_STORAGE          0x00000008L
-#define SFGAO_CANRENAME                0x00000010L
-#define SFGAO_CANDELETE                0x00000020L
-#define SFGAO_HASPROPSHEET     0x00000040L
-#define SFGAO_DROPTARGET       0x00000100L
-#define SFGAO_CAPABILITYMASK   0x00000177L
-#define SFGAO_ISSLOW            0x00004000L
-#define SFGAO_GHOSTED          0x00008000L
-#define SFGAO_LINK             0x00010000L
-#define SFGAO_SHARE            0x00020000L
-#define SFGAO_READONLY         0x00040000L
-#define SFGAO_HIDDEN           0x00080000L
-#define SFGAO_DISPLAYATTRMASK  0x000F0000L
-#define SFGAO_FILESYSANCESTOR  0x10000000L
-#define SFGAO_FOLDER           0x20000000L
-#define SFGAO_FILESYSTEM       0x40000000L
-#define SFGAO_HASSUBFOLDER     0x80000000L
-#define SFGAO_CONTENTSMASK     0x80000000L
-#define SFGAO_VALIDATE         0x01000000L
-#define SFGAO_REMOVABLE                0x02000000L
-#define SFGAO_COMPRESSED       0x04000000L
-#define SFGAO_STORAGEANCESTOR  0x00800000L
-#define STRRET_WSTR    0
-#define STRRET_OFFSET  1
-#define STRRET_CSTR    2
-#define SHGDFIL_FINDDATA       1
-#define SHGDFIL_NETRESOURCE    2
-#define SHGDFIL_DESCRIPTIONID  3
-#define SHDID_ROOT_REGITEM     1
-#define SHDID_FS_FILE  2
-#define SHDID_FS_DIRECTORY     3
-#define SHDID_FS_OTHER 4
-#define SHDID_COMPUTER_DRIVE35 5
-#define SHDID_COMPUTER_DRIVE525        6
-#define SHDID_COMPUTER_REMOVABLE       7
-#define SHDID_COMPUTER_FIXED   8
-#define SHDID_COMPUTER_NETDRIVE        9
-#define SHDID_COMPUTER_CDROM   10
-#define SHDID_COMPUTER_RAMDISK 11
-#define SHDID_COMPUTER_OTHER   12
-#define SHDID_NET_DOMAIN       13
-#define SHDID_NET_SERVER       14
-#define SHDID_NET_SHARE        15
-#define SHDID_NET_RESTOFNET    16
-#define SHDID_NET_OTHER        17
-#ifndef REGSTR_PATH_EXPLORER
-#define REGSTR_PATH_EXPLORER   TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Explorer")
-#endif
-#define REGSTR_PATH_SPECIAL_FOLDERS    REGSTR_PATH_EXPLORER TEXT("\\Shell Folders")
-
-#define CSIDL_DESKTOP          0x0000
-#define CSIDL_INTERNET         0x0001
-#define CSIDL_PROGRAMS         0x0002
-#define CSIDL_CONTROLS         0x0003
-#define CSIDL_PRINTERS         0x0004
-#define CSIDL_PERSONAL         0x0005
-#define CSIDL_FAVORITES                0x0006
-#define CSIDL_STARTUP          0x0007
-#define CSIDL_RECENT           0x0008
-#define CSIDL_SENDTO           0x0009
-#define CSIDL_BITBUCKET                0x000a
-#define CSIDL_STARTMENU                0x000b
-#define CSIDL_MYDOCUMENTS      0x000c
-#define CSIDL_MYMUSIC          0x000d
-#define CSIDL_MYVIDEO          0x000e
-#define CSIDL_DESKTOPDIRECTORY 0x0010
-#define CSIDL_DRIVES           0x0011
-#define CSIDL_NETWORK          0x0012
-#define CSIDL_NETHOOD          0x0013
-#define CSIDL_FONTS            0x0014
-#define CSIDL_TEMPLATES                0x0015
-#define CSIDL_COMMON_STARTMENU 0x0016
-#define CSIDL_COMMON_PROGRAMS  0X0017
-#define CSIDL_COMMON_STARTUP   0x0018
-#define CSIDL_COMMON_DESKTOPDIRECTORY  0x0019
-#define CSIDL_APPDATA          0x001a
-#define CSIDL_PRINTHOOD                0x001b
-#define CSIDL_LOCAL_APPDATA    0x001c
-#define CSIDL_ALTSTARTUP       0x001d
-#define CSIDL_COMMON_ALTSTARTUP        0x001e
-#define CSIDL_COMMON_FAVORITES  0x001f
-#define CSIDL_INTERNET_CACHE   0x0020
-#define CSIDL_COOKIES          0x0021
-#define CSIDL_HISTORY          0x0022
-#define CSIDL_COMMON_APPDATA   0x0023
-#define CSIDL_WINDOWS          0x0024
-#define CSIDL_SYSTEM           0x0025
-#define CSIDL_PROGRAM_FILES    0x0026
-#define CSIDL_MYPICTURES       0x0027
-#define CSIDL_PROFILE          0x0028
-#define CSIDL_SYSTEMX86                0x0029
-#define CSIDL_PROGRAM_FILESX86 0x002a
-#define CSIDL_PROGRAM_FILES_COMMON     0x002b
-#define CSIDL_PROGRAM_FILES_COMMONX86  0x002c
-#define CSIDL_COMMON_TEMPLATES 0x002d
-#define CSIDL_COMMON_DOCUMENTS 0x002e
-#define CSIDL_COMMON_ADMINTOOLS        0x002f
-#define CSIDL_ADMINTOOLS       0x0030
-#define CSIDL_CONNECTIONS      0x0031
-#define CSIDL_COMMON_MUSIC     0x0035
-#define CSIDL_COMMON_PICTURES  0x0036
-#define CSIDL_COMMON_VIDEO     0x0037
-#define CSIDL_RESOURCES                0x0038
-#define CSIDL_RESOURCES_LOCALIZED 0x0039
-#define CSIDL_COMMON_OEM_LINKS 0x003a
-#define CSIDL_CDBURN_AREA      0x003b
-#define CSIDL_COMPUTERSNEARME  0x003d
-#define CSIDL_PROFILES         0x003e
-#define CSIDL_FOLDER_MASK      0x00ff
-#define CSIDL_FLAG_PER_USER_INIT 0x0800
-#define CSIDL_FLAG_NO_ALIAS    0x1000
-#define CSIDL_FLAG_DONT_VERIFY 0x4000
-#define CSIDL_FLAG_CREATE      0x8000
-#define CSIDL_FLAG_MASK                0xff00
-
-#define CFSTR_SHELLIDLIST      TEXT("Shell IDList Array")
-#define CFSTR_SHELLIDLISTOFFSET        TEXT("Shell Object Offsets")
-#define CFSTR_NETRESOURCES     TEXT("Net Resource")
-#define CFSTR_FILECONTENTS     TEXT("FileContents")
-#define CFSTR_FILENAMEA                TEXT("FileName")
-#define CFSTR_FILENAMEMAPA     TEXT("FileNameMap")
-#define CFSTR_FILEDESCRIPTORA  TEXT("FileGroupDescriptor")
-#define CFSTR_INETURLA         TEXT("UniformResourceLocator")
-#define CFSTR_SHELLURL         CFSTR_INETURLA
-#define CFSTR_FILENAMEW                TEXT("FileNameW")
-#define CFSTR_FILENAMEMAPW     TEXT("FileNameMapW")
-#define CFSTR_FILEDESCRIPTORW  TEXT("FileGroupDescriptorW")
-#define CFSTR_INETURLW         TEXT("UniformResourceLocatorW")
-#ifdef UNICODE
-#define CFSTR_FILENAME         CFSTR_FILENAMEW
-#define CFSTR_FILENAMEMAP      CFSTR_FILENAMEMAPW
-#define CFSTR_FILEDESCRIPTOR   CFSTR_FILEDESCRIPTORW
-#define CFSTR_INETURL          CFSTR_INETURLW
-#else
-#define CFSTR_FILENAME         CFSTR_FILENAMEA
-#define CFSTR_FILENAMEMAP      CFSTR_FILENAMEMAPA
-#define CFSTR_FILEDESCRIPTOR   CFSTR_FILEDESCRIPTORA
-#define CFSTR_INETURL          CFSTR_INETURLA
-#endif
-#define CFSTR_PRINTERGROUP     TEXT("PrinterFriendlyName")
-#define CFSTR_INDRAGLOOP       TEXT("InShellDragLoop")
-#define CFSTR_PASTESUCCEEDED   TEXT("Paste Succeeded")
-#define CFSTR_PERFORMEDDROPEFFECT      TEXT("Performed DropEffect")
-#define CFSTR_PREFERREDDROPEFFECT      TEXT("Preferred DropEffect")
-#define CMF_NORMAL     0
-#define CMF_DEFAULTONLY        1
-#define CMF_VERBSONLY  2
-#define CMF_EXPLORE    4
-#define CMF_NOVERBS    8
-#define CMF_CANRENAME  16
-#define CMF_NODEFAULT  32
-#define CMF_INCLUDESTATIC      64
-#define CMF_RESERVED   0xffff0000
-#define GCS_VERBA        0
-#define GCS_HELPTEXTA    1
-#define GCS_VALIDATEA    2
-#define GCS_VERBW        4
-#define GCS_HELPTEXTW    5
-#define GCS_VALIDATEW    6
-#define GCS_UNICODE      4
-#ifdef UNICODE
-#define GCS_VERB        GCS_VERBW
-#define GCS_HELPTEXT    GCS_HELPTEXTW
-#define GCS_VALIDATE    GCS_VALIDATEW
-#else
-#define GCS_VERB        GCS_VERBA
-#define GCS_HELPTEXT    GCS_HELPTEXTA
-#define GCS_VALIDATE    GCS_VALIDATEA
-#endif
-#define CMDSTR_NEWFOLDERA      "NewFolder"
-#define CMDSTR_VIEWLISTA       "ViewList"
-#define CMDSTR_VIEWDETAILSA    "ViewDetails"
-#define CMDSTR_NEWFOLDERW      L"NewFolder"
-#define CMDSTR_VIEWLISTW       L"ViewList"
-#define CMDSTR_VIEWDETAILSW    L"ViewDetails"
-#ifdef UNICODE
-#define CMDSTR_NEWFOLDER       CMDSTR_NEWFOLDERW
-#define CMDSTR_VIEWLIST                CMDSTR_VIEWLISTW
-#define CMDSTR_VIEWDETAILS     CMDSTR_VIEWDETAILSW
-#else
-#define CMDSTR_NEWFOLDER       CMDSTR_NEWFOLDER
-#define CMDSTR_VIEWLIST                CMDSTR_VIEWLIST
-#define CMDSTR_VIEWDETAILS     CMDSTR_VIEWDETAILS
-#endif
-#define CMIC_MASK_HOTKEY       SEE_MASK_HOTKEY
-#define CMIC_MASK_ICON SEE_MASK_ICON
-#define CMIC_MASK_FLAG_NO_UI   SEE_MASK_FLAG_NO_UI
-#define CMIC_MASK_UNICODE      SEE_MASK_UNICODE
-#define CMIC_MASK_MODAL        0x80000000
-#define CMIC_VALID_SEE_FLAGS   SEE_VALID_CMIC_FLAGS
-#define GIL_OPENICON   1
-#define GIL_FORSHELL   2
-#define GIL_ASYNC      32
-#define GIL_DEFAULTICON        64
-#define GIL_FORSHORTCUT        128
-#define GIL_SIMULATEDOC        1
-#define GIL_PERINSTANCE        2
-#define GIL_PERCLASS   4
-#define GIL_NOTFILENAME        8
-#define GIL_DONTCACHE  16
-#define FVSIF_RECT     1
-#define FVSIF_PINNED   2
-#define FVSIF_NEWFAILED 0x8000000
-#define FVSIF_NEWFILE  0x80000000
-#define FVSIF_CANVIEWIT 0x40000000
-#define CDBOSC_SETFOCUS        0
-#define CDBOSC_KILLFOCUS       1
-#define CDBOSC_SELCHANGE       2
-#define CDBOSC_RENAME  3
-#define FCIDM_SHVIEWFIRST      0
-#define FCIDM_SHVIEWLAST       0x7fff
-#define FCIDM_BROWSERFIRST     0xa000
-#define FCIDM_BROWSERLAST      0xbf00
-#define FCIDM_GLOBALFIRST      0x8000
-#define FCIDM_GLOBALLAST       0x9fff
-#define FCIDM_MENU_FILE        FCIDM_GLOBALFIRST
-#define FCIDM_MENU_EDIT        (FCIDM_GLOBALFIRST+0x0040)
-#define FCIDM_MENU_VIEW        (FCIDM_GLOBALFIRST+0x0080)
-#define FCIDM_MENU_VIEW_SEP_OPTIONS    (FCIDM_GLOBALFIRST+0x0081)
-#define FCIDM_MENU_TOOLS       (FCIDM_GLOBALFIRST+0x00c0)
-#define FCIDM_MENU_TOOLS_SEP_GOTO      (FCIDM_GLOBALFIRST+0x00c1)
-#define FCIDM_MENU_HELP        (FCIDM_GLOBALFIRST+0x0100)
-#define FCIDM_MENU_FIND        (FCIDM_GLOBALFIRST+0x0140)
-#define FCIDM_MENU_EXPLORE     (FCIDM_GLOBALFIRST+0x0150)
-#define FCIDM_MENU_FAVORITES   (FCIDM_GLOBALFIRST+0x0170)
-#define FCIDM_TOOLBAR  FCIDM_BROWSERFIRST
-#define FCIDM_STATUS   (FCIDM_BROWSERFIRST+1)
-#define SBSP_DEFBROWSER        0
-#define SBSP_SAMEBROWSER       1
-#define SBSP_NEWBROWSER        2
-#define SBSP_DEFMODE   0
-#define SBSP_OPENMODE  16
-#define SBSP_EXPLOREMODE       32
-#define SBSP_ABSOLUTE  0
-#define SBSP_HELPMODE  0x40
-#define SBSP_NOTRANSFERHIST    0x80
-#define SBSP_RELATIVE  0x1000
-#define SBSP_PARENT    0x2000
-#define SBSP_NAVIGATEBACK      0x4000
-#define SBSP_NAVIGATEFORWARD   0x8000
-#define SBSP_ALLOW_AUTONAVIGATE        0x10000
-#define SBSP_NOAUTOSELECT      0x4000000
-#define SBSP_WRITENOHISTORY    0x8000000
-#define SBSP_INITIATEDBYHLINKFRAME     0x80000000
-#define SBSP_REDIRECT  0x40000000
-#define FCW_STATUS     1
-#define FCW_TOOLBAR    2
-#define FCW_TREE       3
-#define FCT_MERGE      1
-#define FCT_CONFIGABLE 2
-#define FCT_ADDTOEND   4
-#define SVSI_DESELECT  0
-#define SVSI_SELECT    1
-#define SVSI_EDIT      3
-#define SVSI_DESELECTOTHERS    4
-#define SVSI_ENSUREVISIBLE     8
-#define SVSI_FOCUSED   16
-#define SVGIO_BACKGROUND       0
-#define SVGIO_SELECTION        1
-#define SVGIO_ALLVIEW  2
-#define SV2GV_CURRENTVIEW ((UINT)-1)
-#define SV2GV_DEFAULTVIEW ((UINT)-2)
-#define SHCNE_RENAMEITEM       0x00000001
-#define SHCNE_CREATE           0x00000002
-#define SHCNE_DELETE           0x00000004
-#define SHCNE_MKDIR            0x00000008
-#define SHCNE_RMDIR            0x00000010
-#define SHCNE_MEDIAINSERTED    0x00000020
-#define SHCNE_MEDIAREMOVED     0x00000040
-#define SHCNE_DRIVEREMOVED     0x00000080
-#define SHCNE_DRIVEADD         0x00000100
-#define SHCNE_NETSHARE         0x00000200
-#define SHCNE_NETUNSHARE       0x00000400
-#define SHCNE_ATTRIBUTES       0x00000800
-#define SHCNE_UPDATEDIR                0x00001000
-#define SHCNE_UPDATEITEM       0x00002000
-#define SHCNE_SERVERDISCONNECT 0x00004000
-#define SHCNE_UPDATEIMAGE      0x00008000
-#define SHCNE_DRIVEADDGUI      0x00010000
-#define SHCNE_RENAMEFOLDER     0x00020000
-#define SHCNE_FREESPACE                0x00040000
-#define SHCNE_EXTENDED_EVENT   0x04000000
-#define SHCNE_ASSOCCHANGED     0x08000000
-#define SHCNE_DISKEVENTS       0x0002381F
-#define SHCNE_GLOBALEVENTS     0x0C0581E0
-#define SHCNE_ALLEVENTS                0x7FFFFFFF
-#define SHCNE_INTERRUPT                0x80000000
-#define SHCNEE_ORDERCHANGED    0x0002L
-#define SHCNEE_MSI_CHANGE      0x0004L
-#define SHCNEE_MSI_UNINSTALL   0x0005L
-#define SHCNF_IDLIST           0x0000
-#define SHCNF_PATHA            0x0001
-#define SHCNF_PRINTERA         0x0002
-#define SHCNF_DWORD            0x0003
-#define SHCNF_PATHW            0x0005
-#define SHCNF_PRINTERW         0x0006
-#define SHCNF_TYPE             0x00FF
-#define SHCNF_FLUSH            0x1000
-#define SHCNF_FLUSHNOWAIT      0x2000
-#ifdef UNICODE
-#define SHCNF_PATH              SHCNF_PATHW
-#define SHCNF_PRINTER           SHCNF_PRINTERW
-#else
-#define SHCNF_PATH              SHCNF_PATHA
-#define SHCNF_PRINTER           SHCNF_PRINTERA
-#endif
-#define PCS_FATAL              0x80000000
-#define PCS_REPLACEDCHAR       0x00000001
-#define PCS_REMOVEDCHAR                0x00000002
-#define PCS_TRUNCATED          0x00000004
-#define PCS_PATHTOOLONG                0x00000008
-#define SHFMT_ERROR            0xFFFFFFFFL
-#define SHFMT_CANCEL           0xFFFFFFFEL
-#define SHFMT_NOFORMAT         0xFFFFFFFDL
-#define EXP_SZ_LINK_SIG         0xa0000001
-#define NT_CONSOLE_PROPS_SIG    0xa0000002
-#define NT_FE_CONSOLE_PROPS_SIG 0xa0000004
-#define EXP_SPECIAL_FOLDER_SIG  0xa0000005
-#define EXP_DARWIN_ID_SIG       0xa0000006
-#define EXP_LOGO3_ID_SIG        0xa0000007
-#define EXP_SZ_ICON_SIG         0xa0000007
-#define SHOP_PRINTERNAME       0x01
-#define SHOP_FILEPATH          0x02
-#define SHOP_VOLUMEGUID                0x04
-
-typedef ULONG SFGAOF;
-typedef DWORD SHGDNF;
-
-typedef struct _IDA {
-       UINT cidl;
-       UINT aoffset[1];
-} CIDA,*LPIDA;
-typedef int (CALLBACK* BFFCALLBACK)(HWND,UINT,LPARAM,LPARAM);
-typedef struct _browseinfoA {
-       HWND    hwndOwner;
-       LPCITEMIDLIST   pidlRoot;
-       LPSTR   pszDisplayName;
-       LPCSTR  lpszTitle;
-       UINT    ulFlags;
-       BFFCALLBACK     lpfn;
-       LPARAM  lParam;
-       int     iImage;
-} BROWSEINFOA,*PBROWSEINFOA,*LPBROWSEINFOA;
-typedef struct _browseinfoW {
-       HWND    hwndOwner;
-       LPCITEMIDLIST   pidlRoot;
-       LPWSTR  pszDisplayName;
-       LPCWSTR lpszTitle;
-       UINT    ulFlags;
-       BFFCALLBACK     lpfn;
-       LPARAM  lParam;
-       int     iImage;
-} BROWSEINFOW,*PBROWSEINFOW,*LPBROWSEINFOW;
-typedef struct _CMInvokeCommandInfo {
-       DWORD cbSize;
-       DWORD fMask;
-       HWND hwnd;
-       LPCSTR lpVerb;
-       LPCSTR lpParameters;
-       LPCSTR lpDirectory;
-       int nShow;
-       DWORD dwHotKey;
-       HANDLE hIcon;
-} CMINVOKECOMMANDINFO,*LPCMINVOKECOMMANDINFO;
-typedef struct _CMInvokeCommandInfoEx {
-       DWORD cbSize;
-       DWORD fMask;
-       HWND hwnd;
-       LPCSTR lpVerb;
-       LPCSTR lpParameters;
-       LPCSTR lpDirectory;
-       INT nShow;
-       DWORD dwHotKey;
-       HANDLE hIcon;
-       LPCSTR lpTitle;
-       LPCWSTR lpVerbW;
-       LPCWSTR lpParametersW;
-       LPCWSTR lpDirectoryW;
-       LPCWSTR lpTitleW;
-       POINT ptInvoke;
-} CMINVOKECOMMANDINFOEX, *LPCMINVOKECOMMANDINFOEX;
-typedef struct _DROPFILES {
-       DWORD pFiles;
-       POINT pt;
-       BOOL fNC;
-       BOOL fWide;
-} DROPFILES,*LPDROPFILES;
-typedef enum tagSHGDN {
-       SHGDN_NORMAL=0,
-       SHGDN_INFOLDER,
-       SHGDN_FOREDITING=0x1000,
-       SHGDN_INCLUDE_NONFILESYS=0x2000,
-       SHGDN_FORADDRESSBAR=0x4000,
-       SHGDN_FORPARSING=0x8000
-} SHGNO;
-typedef enum {
-       SHGFP_TYPE_CURRENT = 0,
-       SHGFP_TYPE_DEFAULT = 1
-} SHGFP_TYPE;
-typedef enum tagSHCONTF {
-       SHCONTF_FOLDERS = 32,
-       SHCONTF_NONFOLDERS = 64,
-       SHCONTF_INCLUDEHIDDEN = 128,
-       SHCONTF_INIT_ON_FIRST_NEXT = 256,
-       SHCONTF_NETPRINTERSRCH = 512,
-       SHCONTF_SHAREABLE = 1024,
-       SHCONTF_STORAGE = 2048
-} SHCONTF;
-typedef enum {
-       FD_CLSID=1,FD_SIZEPOINT=2,FD_ATTRIBUTES=4,FD_CREATETIME=8,FD_ACCESSTIME=16,
-       FD_WRITESTIME=32,FD_FILESIZE=64,FD_LINKUI=0x8000
-} FD_FLAGS;
-typedef struct _FILEDESCRIPTOR {
-       DWORD dwFlags;
-       CLSID clsid;
-       SIZEL sizel;
-       POINTL pointl;
-       DWORD dwFileAttributes;
-       FILETIME ftCreationTime;
-       FILETIME ftLastAccessTime;
-       FILETIME ftLastWriteTime;
-       DWORD nFileSizeHigh;
-       DWORD nFileSizeLow;
-       CHAR cFileName[MAX_PATH];
-} FILEDESCRIPTOR,*LPFILEDESCRIPTOR;
-typedef struct _FILEGROUPDESCRIPTOR {
-       UINT cItems;
-       FILEDESCRIPTOR fgd[1];
-} FILEGROUPDESCRIPTOR,*LPFILEGROUPDESCRIPTOR;
-typedef enum {
-       SLR_NO_UI=1,
-       SLR_ANY_MATCH=2,
-       SLR_UPDATE=4,
-       SLR_NOUPDATE=8,
-       SLR_NOSEARCH=16,
-       SLR_NOTRACK=32,
-       SLR_NOLINKINFO=64,
-       SLR_INVOKE_MSI=128
-} SLR_FLAGS;
-typedef enum {
-       SLGP_SHORTPATH=0x1,
-       SLGP_UNCPRIORITY=0x2,
-       SLGP_RAWPATH=0x4
-} SLGP_FLAGS;
-typedef PBYTE LPVIEWSETTINGS;
-typedef enum {
-       FWF_AUTOARRANGE=1,FWF_ABBREVIATEDNAMES=2,FWF_SNAPTOGRID=4,FWF_OWNERDATA=8,
-       FWF_BESTFITWINDOW=16,FWF_DESKTOP=32,FWF_SINGLESEL=64,FWF_NOSUBFOLDERS=128,
-       FWF_TRANSPARENT=256,FWF_NOCLIENTEDGE=512,FWF_NOSCROLL=0x400,FWF_ALIGNLEFT=0x800,
-       FWF_SINGLECLICKACTIVATE=0x8000
-} FOLDERFLAGS;
-typedef enum {
-       FVM_ICON=1,
-       FVM_SMALLICON,
-       FVM_LIST,
-       FVM_DETAILS
-} FOLDERVIEWMODE;
-typedef struct {
-       UINT ViewMode;
-       UINT fFlags;
-} FOLDERSETTINGS,*LPFOLDERSETTINGS;
-typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
-typedef struct {
-    DWORD cbSize;
-       HWND hwndOwner;
-       int iShow;
-       DWORD dwFlags;
-       RECT rect;
-       LPUNKNOWN punkRel;
-       OLECHAR strNewFile[MAX_PATH];
-} FVSHOWINFO,*LPFVSHOWINFO;
-typedef struct _NRESARRAY {
-       UINT cItems;
-       NETRESOURCE nr[1];
-} NRESARRAY, *LPNRESARRAY;
-enum { SBSC_HIDE,SBSC_SHOW,SBSC_TOGGLE,SBSC_QUERY };
-enum {
-       SBCMDID_ENABLESHOWTREE,SBCMDID_SHOWCONTROL,SBCMDID_CANCELNAVIGATION,
-       SBCMDID_MAYSAVECHANGES,SBCMDID_SETHLINKFRAME,SBCMDID_ENABLESTOP,SBCMDID_OPTIONS
-};
-typedef enum {
-       SVUIA_DEACTIVATE,SVUIA_ACTIVATE_NOFOCUS,SVUIA_ACTIVATE_FOCUS,
-       SVUIA_INPLACEACTIVATE
-} SVUIA_STATUS;
-#if (_WIN32_IE >= 0x0500)
-typedef struct tagEXTRASEARCH
-{
-       GUID guidSearch;
-       WCHAR wszFriendlyName[80];
-       WCHAR wszUrl[2084];
-} EXTRASEARCH, *LPEXTRASEARCH;
-typedef DWORD SHCOLSTATEF;
-typedef struct
-{
-       GUID fmtid;
-       DWORD pid;
-} SHCOLUMNID, *LPSHCOLUMNID;
-typedef const SHCOLUMNID *LPCSHCOLUMNID;
-typedef struct
-{
-       LPITEMIDLIST pidlTargetFolder;
-       WCHAR szTargetParsingName[MAX_PATH];
-       WCHAR szNetworkProvider[MAX_PATH];
-       DWORD dwAttributes;
-       int csidl;
-} PERSIST_FOLDER_TARGET_INFO;
-#endif
-typedef struct _SHChangeNotifyEntry
-{
-    LPCITEMIDLIST pidl;
-    BOOL   fRecursive;
-} SHChangeNotifyEntry;
-#define NUM_POINTS 3
-typedef struct
-{
-    int   iNextSample;
-    DWORD dwLastScroll;
-    BOOL  bFull;
-    POINT pts[NUM_POINTS];
-    DWORD dwTimes[NUM_POINTS];
-} AUTO_SCROLL_DATA;
-typedef struct
-{
-    WORD cLength;
-    WORD nVersion;
-    BOOL fFullPathTitle:1;
-    BOOL fSaveLocalView:1;
-    BOOL fNotShell:1;
-    BOOL fSimpleDefault:1;
-    BOOL fDontShowDescBar:1;
-    BOOL fNewWindowMode:1;
-    BOOL fShowCompColor:1;
-    BOOL fDontPrettyNames:1;
-    BOOL fAdminsCreateCommonGroups:1;
-    UINT fUnusedFlags:7;
-    UINT fMenuEnumFilter;
-} CABINETSTATE, *LPCABINETSTATE;
-typedef enum RESTRICTIONS
-{
-       REST_NONE                       = 0x00000000,
-       REST_NORUN                      = 0x00000001,
-       REST_NOCLOSE                    = 0x00000002,
-       REST_NOSAVESET                  = 0x00000004,
-       REST_NOFILEMENU                 = 0x00000008,
-       REST_NOSETFOLDERS               = 0x00000010,
-       REST_NOSETTASKBAR               = 0x00000020,
-       REST_NODESKTOP                  = 0x00000040,
-       REST_NOFIND                     = 0x00000080,
-       REST_NODRIVES                   = 0x00000100,
-       REST_NODRIVEAUTORUN             = 0x00000200,
-       REST_NODRIVETYPEAUTORUN         = 0x00000400,
-       REST_NONETHOOD                  = 0x00000800,
-       REST_STARTBANNER                = 0x00001000,
-       REST_RESTRICTRUN                = 0x00002000,
-       REST_NOPRINTERTABS              = 0x00004000,
-       REST_NOPRINTERDELETE            = 0x00008000,
-       REST_NOPRINTERADD               = 0x00010000,
-       REST_NOSTARTMENUSUBFOLDERS      = 0x00020000,
-       REST_MYDOCSONNET                = 0x00040000,
-       REST_NOEXITTODOS                = 0x00080000,
-       REST_ENFORCESHELLEXTSECURITY    = 0x00100000,
-       REST_LINKRESOLVEIGNORELINKINFO  = 0x00200000,
-       REST_NOCOMMONGROUPS             = 0x00400000,
-       REST_SEPARATEDESKTOPPROCESS     = 0x00800000,
-       REST_NOWEB                      = 0x01000000,
-       REST_NOTRAYCONTEXTMENU          = 0x02000000,
-       REST_NOVIEWCONTEXTMENU          = 0x04000000,
-       REST_NONETCONNECTDISCONNECT     = 0x08000000,
-       REST_STARTMENULOGOFF            = 0x10000000,
-       REST_NOSETTINGSASSIST           = 0x20000000,
-       REST_NOINTERNETICON             = 0x40000001,
-       REST_NORECENTDOCSHISTORY,
-       REST_NORECENTDOCSMENU,
-       REST_NOACTIVEDESKTOP,
-       REST_NOACTIVEDESKTOPCHANGES,
-       REST_NOFAVORITESMENU,
-       REST_CLEARRECENTDOCSONEXIT,
-       REST_CLASSICSHELL,
-       REST_NOCUSTOMIZEWEBVIEW,
-
-       REST_NOHTMLWALLPAPER            = 0x40000010,
-       REST_NOCHANGINGWALLPAPER,
-       REST_NODESKCOMP,
-       REST_NOADDDESKCOMP,
-       REST_NODELDESKCOMP,
-       REST_NOCLOSEDESKCOMP,
-       REST_NOCLOSE_DRAGDROPBAND,
-       REST_NOMOVINGBAND,
-       REST_NOEDITDESKCOMP,
-       REST_NORESOLVESEARCH,
-       REST_NORESOLVETRACK,
-       REST_FORCECOPYACLWITHFILE,
-       REST_NOLOGO3CHANNELNOTIFY,
-       REST_NOFORGETSOFTWAREUPDATE,
-       REST_NOSETACTIVEDESKTOP,
-       REST_NOUPDATEWINDOWS,
-       REST_NOCHANGESTARMENU,          /* 0x40000020 */
-       REST_NOFOLDEROPTIONS,
-       REST_HASFINDCOMPUTERS,
-       REST_INTELLIMENUS,
-       REST_RUNDLGMEMCHECKBOX,
-       REST_ARP_ShowPostSetup,
-       REST_NOCSC,
-       REST_NOCONTROLPANEL,
-       REST_ENUMWORKGROUP,
-       REST_ARP_NOARP,
-       REST_ARP_NOREMOVEPAGE,
-       REST_ARP_NOADDPAGE,
-       REST_ARP_NOWINSETUPPAGE,
-       REST_GREYMSIADS,
-       REST_NOCHANGEMAPPEDDRIVELABEL,
-       REST_NOCHANGEMAPPEDDRIVECOMMENT,
-       REST_MaxRecentDocs,             /* 0x40000030 */
-       REST_NONETWORKCONNECTIONS,
-       REST_FORCESTARTMENULOGOFF,
-       REST_NOWEBVIEW,
-       REST_NOCUSTOMIZETHISFOLDER,
-       REST_NOENCRYPTION,
-
-       REST_ALLOWFRENCHENCRYPTION,     /* not documented */
-
-       REST_DONTSHOWSUPERHIDDEN,
-       REST_NOSHELLSEARCHBUTTON,
-       REST_NOHARDWARETAB,
-       REST_NORUNASINSTALLPROMPT,
-       REST_PROMPTRUNASINSTALLNETPATH,
-       REST_NOMANAGEMYCOMPUTERVERB,
-       REST_NORECENTDOCSNETHOOD,
-       REST_DISALLOWRUN,
-       REST_NOWELCOMESCREEN,
-       REST_RESTRICTCPL,               /* 0x40000040 */
-       REST_DISALLOWCPL,
-       REST_NOSMBALLOONTIP,
-       REST_NOSMHELP,
-       REST_NOWINKEYS,
-       REST_NOENCRYPTONMOVE,
-       REST_NOLOCALMACHINERUN,
-       REST_NOCURRENTUSERRUN,
-       REST_NOLOCALMACHINERUNONCE,
-       REST_NOCURRENTUSERRUNONCE,
-       REST_FORCEACTIVEDESKTOPON,
-       REST_NOCOMPUTERSNEARME,
-       REST_NOVIEWONDRIVE,
-       REST_NONETCRAWL,
-       REST_NOSHAREDDOCUMENTS,
-       REST_NOSMMYDOCS,
-       REST_NOSMMYPICS,                /* 0x40000050 */
-       REST_ALLOWBITBUCKDRIVES,
-       REST_NONLEGACYSHELLMODE,
-       REST_NOCONTROLPANELBARRICADE,
-       REST_NOSTARTPAGE,
-       REST_NOAUTOTRAYNOTIFY,
-       REST_NOTASKGROUPING,
-       REST_NOCDBURNING,
-       REST_MYCOMPNOPROP,
-       REST_MYDOCSNOPROP,
-       REST_NOSTARTPANEL,
-       REST_NODISPLAYAPPEARANCEPAGE,
-       REST_NOTHEMESTAB,
-       REST_NOVISUALSTYLECHOICE,
-       REST_NOSIZECHOICE,
-       REST_NOCOLORCHOICE,
-       REST_SETVISUALSTYLE,            /* 0x40000060 */
-       REST_STARTRUNNOHOMEPATH,
-       REST_NOUSERNAMEINSTARTPANEL,
-       REST_NOMYCOMPUTERICON,
-       REST_NOSMNETWORKPLACES,
-       REST_NOSMPINNEDLIST,
-       REST_NOSMMYMUSIC,
-       REST_NOSMEJECTPC,
-       REST_NOSMMOREPROGRAMS,
-       REST_NOSMMFUPROGRAMS,
-       REST_NOTRAYITEMSDISPLAY,
-       REST_NOTOOLBARSONTASKBAR,
-       /* 0x4000006C
-          0x4000006D
-          0x4000006E */
-       REST_NOSMCONFIGUREPROGRAMS      = 0x4000006F,
-       REST_HIDECLOCK,                 /* 0x40000070 */
-       REST_NOLOWDISKSPACECHECKS,
-       REST_NOENTIRENETWORK,
-       REST_NODESKTOPCLEANUP,
-       REST_BITBUCKNUKEONDELETE,
-       REST_BITBUCKCONFIRMDELETE,
-       REST_BITBUCKNOPROP,
-       REST_NODISPBACKGROUND,
-       REST_NODISPSCREENSAVEPG,
-       REST_NODISPSETTINGSPG,
-       REST_NODISPSCREENSAVEPREVIEW,
-       REST_NODISPLAYCPL,
-       REST_HIDERUNASVERB,
-       REST_NOTHUMBNAILCACHE,
-       REST_NOSTRCMPLOGICAL,
-       REST_NOPUBLISHWIZARD,
-       REST_NOONLINEPRINTSWIZARD,      /* 0x40000080 */
-       REST_NOWEBSERVICES,
-       REST_ALLOWUNHASHEDWEBVIEW,
-       REST_ALLOWLEGACYWEBVIEW,
-       REST_REVERTWEBVIEWSECURITY,
-
-       REST_INHERITCONSOLEHANDLES      = 0x40000086,
-
-       REST_NODISCONNECT               = 0x41000001,
-       REST_NOSECURITY,
-       REST_NOFILEASSOCIATE,           /* 0x41000003 */
-} RESTRICTIONS;
-
-typedef enum {
-    SLDF_HAS_ID_LIST = 0x00000001,
-    SLDF_HAS_LINK_INFO = 0x00000002,
-    SLDF_HAS_NAME = 0x00000004,
-    SLDF_HAS_RELPATH = 0x00000008,
-    SLDF_HAS_WORKINGDIR = 0x00000010,
-    SLDF_HAS_ARGS = 0x00000020,
-    SLDF_HAS_ICONLOCATION = 0x00000040,
-    SLDF_UNICODE = 0x00000080,
-    SLDF_FORCE_NO_LINKINFO = 0x00000100,
-    SLDF_HAS_EXP_SZ = 0x00000200,
-    SLDF_RUN_IN_SEPERATE = 0x00000400,
-    SLDF_HAS_LOGO3ID = 0x00000800,
-    SLDF_HAS_DARWINID = 0x00001000,
-    SLDF_RUNAS_USER = 0x00002000,
-    SLDF_HAS_EXP_ICON_SZ = 0x00004000,
-    SLDF_NO_PIDL_ALIAS = 0x00008000,
-    SLDF_FORCE_UNCNAME = 0x00010000,
-    SLDF_RUN_WITH_SHIMLAYER = 0x00020000,
-    SLDF_RESERVED = 0x80000000,
-} SHELL_LINK_DATA_FLAGS;
-
-typedef struct tagDATABLOCKHEADER
-{
-    DWORD cbSize;
-    DWORD dwSignature;
-} DATABLOCK_HEADER, *LPDATABLOCK_HEADER, *LPDBLIST;
-
-typedef struct {
-    DATABLOCK_HEADER dbh;
-    CHAR szDarwinID[MAX_PATH];
-    WCHAR szwDarwinID[MAX_PATH];
-} EXP_DARWIN_LINK, *LPEXP_DARWIN_LINK;
-
-DECLARE_ENUMERATOR_(IEnumIDList,LPITEMIDLIST);
-typedef IEnumIDList *LPENUMIDLIST;
-
-#ifdef COBJMACROS
-#define IEnumIDList_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IEnumIDList_Release(T) (T)->lpVtbl->AddRef(T)
-#define IEnumIDList_AddRef(T) (T)->lpVtbl->Release(T)
-#define IEnumIDList_Next(T,a,b,c) (T)->lpVtbl->Next(T,a,b,c)
-#define IEnumIDList_Skip(T,a) (T)->lpVtbl->Skip(T,a)
-#define IEnumIDList_Reset(T) (T)->lpVtbl->Reset(T)
-#define IEnumIDList_Clone(T,a) (T)->lpVtbl->Clone(T,a)
-#endif
-
-#define INTERFACE IContextMenu
-DECLARE_INTERFACE_(IContextMenu,IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
-       STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
-       STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
-};
-typedef IContextMenu *LPCONTEXTMENU;
-
-#ifdef COBJMACROS
-#define IContextMenu_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IContextMenu_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IContextMenu_Release(T) (T)->lpVtbl->Release(T)
-#define IContextMenu_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e)
-#define IContextMenu_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a)
-#define IContextMenu_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e)
-#endif
-
-#define INTERFACE IContextMenu2
-DECLARE_INTERFACE_(IContextMenu2,IContextMenu)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(QueryContextMenu)(THIS_ HMENU,UINT,UINT,UINT,UINT) PURE;
-       STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO) PURE;
-       STDMETHOD(GetCommandString)(THIS_ UINT,UINT,PUINT,LPSTR,UINT) PURE;
-       STDMETHOD(HandleMenuMsg)(THIS_ UINT,WPARAM,LPARAM) PURE;
-};
-#undef INTERFACE
-typedef IContextMenu2 *LPCONTEXTMENU2;
-
-#if (_WIN32_IE >= 0x0500)
-#pragma pack(push,8)
-typedef struct {
-       ULONG dwFlags;
-       ULONG dwReserved;
-       WCHAR wszFolder[MAX_PATH];
-} SHCOLUMNINIT,*LPSHCOLUMNINIT;
-typedef const SHCOLUMNINIT* LPCSHCOLUMNINIT;
-typedef struct {
-       ULONG dwFlags;
-       DWORD dwFileAttributes;
-       ULONG dwReserved;
-       WCHAR *pwszExt;
-       WCHAR wszFile[MAX_PATH];
-} SHCOLUMNDATA,*LPSHCOLUMNDATA;
-typedef const SHCOLUMNDATA* LPCSHCOLUMNDATA;
-#pragma pack(pop)
-
-#define MAX_COLUMN_NAME_LEN 80
-#define MAX_COLUMN_DESC_LEN 128
-
-#pragma pack(push,1)
-typedef struct {
-       SHCOLUMNID scid;
-       VARTYPE vt;
-       DWORD fmt;
-       UINT cChars;
-       DWORD csFlags;
-       WCHAR wszTitle[MAX_COLUMN_NAME_LEN];
-       WCHAR wszDescription[MAX_COLUMN_DESC_LEN];
-} SHCOLUMNINFO,*LPSHCOLUMNINFO;
-typedef const SHCOLUMNINFO* LPCSHCOLUMNINFO;
-#pragma pack(pop)
-
-typedef enum {
-       SHCOLSTATE_TYPE_STR = 0x00000001,
-       SHCOLSTATE_TYPE_INT = 0x00000002,
-       SHCOLSTATE_TYPE_DATE = 0x00000003,
-       SHCOLSTATE_TYPEMASK = 0x0000000f,
-       SHCOLSTATE_ONBYDEFAULT = 0x00000010,
-       SHCOLSTATE_SLOW = 0x00000020,
-       SHCOLSTATE_EXTENDED = 0x00000040,
-       SHCOLSTATE_SECONDARYUI = 0x00000080,
-       SHCOLSTATE_HIDDEN = 0x00000100,
-       SHCOLSTATE_PREFER_VARCMP = 0x00000200
-} SHCOLSTATE;
-
-#ifdef COBJMACROS
-#define IContextMenu2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IContextMenu2_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IContextMenu2_Release(T) (T)->lpVtbl->Release(T)
-#define IContextMenu2_QueryContextMenu(T,a,b,c,d,e) (T)->lpVtbl->QueryContextMenu(T,a,b,c,d,e)
-#define IContextMenu2_InvokeCommand(T,a) (T)->lpVtbl->InvokeCommand(T,a)
-#define IContextMenu2_GetCommandString(T,a,b,c,d,e) (T)->lpVtbl->GetCommandString(T,a,b,c,d,e)
-#define IContextMenu2_HandleMenuMsg(T,a,b,c) (T)->lpVtbl->HandleMenuMsg(T,a,b,c)
-#endif
-
-#define INTERFACE IColumnProvider
-DECLARE_INTERFACE_(IColumnProvider,IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(Initialize)(THIS_ LPCSHCOLUMNINIT) PURE;
-       STDMETHOD(GetColumnInfo)(THIS_ DWORD,SHCOLUMNINFO*) PURE;
-       STDMETHOD(GetItemData)(THIS_ LPCSHCOLUMNID,LPCSHCOLUMNDATA,VARIANT*) PURE;
-};
-#undef INTERFACE
-#endif  /* _WIN32_IE >= 0x0500 */
-
-#define INTERFACE IQueryInfo
-DECLARE_INTERFACE_(IQueryInfo,IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(GetInfoTip)(THIS_ DWORD,WCHAR**) PURE;
-       STDMETHOD(GetInfoFlags)(THIS_ DWORD*) PURE;
-};
-#undef INTERFACE
-
-#if !defined(__cplusplus) || defined(CINTERFACE)
-/*** IUnknown methods ***/
-#define IQueryInfo_QueryInterface(p,a,b)      (p)->lpVtbl->QueryInterface(p,a,b)
-#define IQueryInfo_AddRef(p)                  (p)->lpVtbl->AddRef(p)
-#define IQueryInfo_Release(p)                 (p)->lpVtbl->Release(p)
-/*** IQueryInfo methods ***/
-#define IQueryInfo_GetInfoTip(p,a,b)          (p)->lpVtbl->GetInfoTip(p,a,b)
-#define IQueryInfo_GetInfoFlags(p,a)          (p)->lpVtbl->GetInfoFlags(p,a)
-#endif
-
-#define INTERFACE IShellExtInit
-DECLARE_INTERFACE_(IShellExtInit, IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST,LPDATAOBJECT,HKEY) PURE;
-};
-#undef INTERFACE
-typedef IShellExtInit *LPSHELLEXTINIT;
-
-#define INTERFACE IShellPropSheetExt
-DECLARE_INTERFACE_(IShellPropSheetExt, IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(AddPages)(THIS_ LPFNADDPROPSHEETPAGE,LPARAM) PURE;
-       STDMETHOD(ReplacePage)(THIS_ UINT,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
-};
-#undef INTERFACE
-typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
-
-#define INTERFACE IExtractIconA
-DECLARE_INTERFACE_(IExtractIconA, IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(GetIconLocation)(THIS_ UINT,LPSTR,UINT,int*,PUINT) PURE;
-       STDMETHOD(Extract)(THIS_ LPCSTR,UINT,HICON*,HICON*,UINT) PURE;
-};
-#undef INTERFACE
-typedef IExtractIconA *LPEXTRACTICONA;
-
-#ifdef COBJMACROS
-#define IExtractIconA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IExtractIconA_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IExtractIconA_Release(T) (T)->lpVtbl->Release(T)
-#define IExtractIconA_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e)
-#define IExtractIconA_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e)
-#endif
-
-#define INTERFACE IExtractIconW
-DECLARE_INTERFACE_(IExtractIconW, IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(GetIconLocation)(THIS_ UINT,LPWSTR,UINT,int*,PUINT) PURE;
-       STDMETHOD(Extract)(THIS_ LPCWSTR,UINT,HICON*,HICON*,UINT) PURE;
-};
-#undef INTERFACE
-typedef IExtractIconW *LPEXTRACTICONW;
-
-#ifdef COBJMACROS
-#define IExtractIconW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IExtractIconW_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IExtractIconW_Release(T) (T)->lpVtbl->Release(T)
-#define IExtractIconW_GetIconLocation(T,a,b,c,d,e) (T)->lpVtbl->GetIconLocation(T,a,b,c,d,e)
-#define IExtractIconW_Extract(T,a,b,c,d,e) (T)->lpVtbl->Extract(T,a,b,c,d,e)
-#endif
-
-#ifdef UNICODE
-#define IExtractIcon IExtractIconW
-#define LPEXTRACTICON LPEXTRACTICONW
-#else
-#define IExtractIcon IExtractIconA
-#define LPEXTRACTICON LPEXTRACTICONA
-#endif
-
-#define INTERFACE IShellLinkA
-DECLARE_INTERFACE_(IShellLinkA, IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(GetPath)(THIS_ LPSTR,int,WIN32_FIND_DATAA*,DWORD) PURE;
-       STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
-       STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
-       STDMETHOD(GetDescription)(THIS_ LPSTR,int) PURE;
-       STDMETHOD(SetDescription)(THIS_ LPCSTR) PURE;
-       STDMETHOD(GetWorkingDirectory)(THIS_ LPSTR,int) PURE;
-       STDMETHOD(SetWorkingDirectory)(THIS_ LPCSTR) PURE;
-       STDMETHOD(GetArguments)(THIS_ LPSTR,int) PURE;
-       STDMETHOD(SetArguments)(THIS_ LPCSTR) PURE;
-       STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
-       STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
-       STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
-       STDMETHOD(SetShowCmd)(THIS_ int) PURE;
-       STDMETHOD(GetIconLocation)(THIS_ LPSTR,int,int*) PURE;
-       STDMETHOD(SetIconLocation)(THIS_ LPCSTR,int) PURE;
-       STDMETHOD(SetRelativePath)(THIS_ LPCSTR ,DWORD) PURE;
-       STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
-       STDMETHOD(SetPath)(THIS_ LPCSTR) PURE;
-};
-#undef INTERFACE
-
-#ifdef COBJMACROS
-#define IShellLinkA_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IShellLinkA_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IShellLinkA_Release(T) (T)->lpVtbl->Release(T)
-#define IShellLinkA_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d)
-#define IShellLinkA_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a)
-#define IShellLinkA_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a)
-#define IShellLinkA_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b)
-#define IShellLinkA_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a)
-#define IShellLinkA_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b)
-#define IShellLinkA_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a)
-#define IShellLinkA_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b)
-#define IShellLinkA_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a)
-#define IShellLinkA_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a)
-#define IShellLinkA_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a)
-#define IShellLinkA_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a)
-#define IShellLinkA_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a)
-#define IShellLinkA_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c)
-#define IShellLinkA_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b)
-#define IShellLinkA_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b)
-#define IShellLinkA_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b)
-#define IShellLinkA_SetPath(T,a) (T)->lpVtbl->SetPath(T,a)
-#endif
-
-#define INTERFACE IShellLinkW
-DECLARE_INTERFACE_(IShellLinkW, IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(GetPath)(THIS_ LPWSTR,int,WIN32_FIND_DATAW*,DWORD) PURE;
-       STDMETHOD(GetIDList)(THIS_ LPITEMIDLIST*) PURE;
-       STDMETHOD(SetIDList)(THIS_ LPCITEMIDLIST) PURE;
-       STDMETHOD(GetDescription)(THIS_ LPWSTR,int) PURE;
-       STDMETHOD(SetDescription)(THIS_ LPCWSTR) PURE;
-       STDMETHOD(GetWorkingDirectory)(THIS_ LPWSTR,int) PURE;
-       STDMETHOD(SetWorkingDirectory)(THIS_ LPCWSTR) PURE;
-       STDMETHOD(GetArguments)(THIS_ LPWSTR,int) PURE;
-       STDMETHOD(SetArguments)(THIS_ LPCWSTR) PURE;
-       STDMETHOD(GetHotkey)(THIS_ PWORD) PURE;
-       STDMETHOD(SetHotkey)(THIS_ WORD) PURE;
-       STDMETHOD(GetShowCmd)(THIS_ int*) PURE;
-       STDMETHOD(SetShowCmd)(THIS_ int) PURE;
-       STDMETHOD(GetIconLocation)(THIS_ LPWSTR,int,int*) PURE;
-       STDMETHOD(SetIconLocation)(THIS_ LPCWSTR,int) PURE;
-       STDMETHOD(SetRelativePath)(THIS_ LPCWSTR ,DWORD) PURE;
-       STDMETHOD(Resolve)(THIS_ HWND,DWORD) PURE;
-       STDMETHOD(SetPath)(THIS_ LPCWSTR) PURE;
-};
-#undef INTERFACE
-
-#ifdef COBJMACROS
-#define IShellLinkW_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IShellLinkW_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IShellLinkW_Release(T) (T)->lpVtbl->Release(T)
-#define IShellLinkW_GetPath(T,a,b,c,d) (T)->lpVtbl->GetPath(T,a,b,c,d)
-#define IShellLinkW_GetIDList(T,a) (T)->lpVtbl->GetIDList(T,a)
-#define IShellLinkW_SetIDList(T,a) (T)->lpVtbl->SetIDList(T,a)
-#define IShellLinkW_GetDescription(T,a,b) (T)->lpVtbl->GetDescription(T,a,b)
-#define IShellLinkW_SetDescription(T,a) (T)->lpVtbl->SetDescription(T,a)
-#define IShellLinkW_GetWorkingDirectory(T,a,b) (T)->lpVtbl->GetWorkingDirectory(T,a,b)
-#define IShellLinkW_SetWorkingDirectory(T,a) (T)->lpVtbl->SetWorkingDirectory(T,a)
-#define IShellLinkW_GetArguments(T,a,b) (T)->lpVtbl->GetArguments(T,a,b)
-#define IShellLinkW_SetArguments(T,a) (T)->lpVtbl->SetArguments(T,a)
-#define IShellLinkW_GetHotkey(T,a) (T)->lpVtbl->GetHotkey(T,a)
-#define IShellLinkW_SetHotkey(T,a) (T)->lpVtbl->SetHotkey(T,a)
-#define IShellLinkW_GetShowCmd(T,a) (T)->lpVtbl->GetShowCmd(T,a)
-#define IShellLinkW_SetShowCmd(T,a) (T)->lpVtbl->SetShowCmd(T,a)
-#define IShellLinkW_GetIconLocation(T,a,b,c) (T)->lpVtbl->GetIconLocation(T,a,b,c)
-#define IShellLinkW_SetIconLocation(T,a,b) (T)->lpVtbl->SetIconLocation(T,a,b)
-#define IShellLinkW_SetRelativePath(T,a,b) (T)->lpVtbl->SetRelativePath(T,a,b)
-#define IShellLinkW_Resolve(T,a,b) (T)->lpVtbl->Resolve(T,a,b)
-#define IShellLinkW_SetPath(T,a) (T)->lpVtbl->SetPath(T,a)
-#endif
-
-#define INTERFACE IShellLinkDataList
-DECLARE_INTERFACE_(IShellLinkDataList, IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(AddDataBlock)(THIS_ PVOID) PURE;
-       STDMETHOD(CopyDataBlock)(THIS_ DWORD,PVOID*) PURE;
-       STDMETHOD(RemoveDataBlock)(THIS_ DWORD) PURE;
-       STDMETHOD(GetFlags)(THIS_ PDWORD) PURE;
-       STDMETHOD(SetFlags)(THIS_ DWORD) PURE;
-};
-#undef INTERFACE
-
-#ifdef COBJMACROS
-#define IShellLinkDataList_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IShellLinkDataList_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IShellLinkDataList_Release(T) (T)->lpVtbl->Release(T)
-#define IShellLinkDataList_AddDataBlock(T,a) (T)->lpVtbl->AddDataBlock(T,a)
-#define IShellLinkDataList_CopyDataBlock(T,a,b) (T)->lpVtbl->CopyDataBlock(T,a,b)
-#define IShellLinkDataList_RemoveDataBlock(T,a) (T)->lpVtbl->RemoveDataBlock(T,a)
-#define IShellLinkDataList_GetFlags(T,a) (T)->lpVtbl->GetFlags(T,a)
-#define IShellLinkDataList_SetFlags(T,a) (T)->lpVtbl->SetFlags(T,a)
-#endif
-
-#define INTERFACE IShellFolder
-DECLARE_INTERFACE_(IShellFolder, IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE;
-       STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE;
-       STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
-       STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
-       STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE;
-       STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE;
-       STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE;
-       STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE;
-       STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE;
-       STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE;
-};
-#undef INTERFACE
-typedef IShellFolder *LPSHELLFOLDER;
-
-#ifdef COBJMACROS
-#define IShellFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IShellFolder_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IShellFolder_Release(T) (T)->lpVtbl->Release(T)
-#define IShellFolder_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f)
-#define IShellFolder_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c)
-#define IShellFolder_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d)
-#define IShellFolder_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d)
-#define IShellFolder_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c)
-#define IShellFolder_CreateViewObject(T,a,b,c) (T)->lpVtbl->CreateViewObject(T,a,b,c)
-#define IShellFolder_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c)
-#define IShellFolder_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f)
-#define IShellFolder_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c)
-#define IShellFolder_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e)
-#endif
-
-#if (_WIN32_IE >= 0x0500)
-
-DECLARE_ENUMERATOR_(IEnumExtraSearch,LPEXTRASEARCH);
-typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
-
-#define INTERFACE IShellFolder2
-DECLARE_INTERFACE_(IShellFolder2, IShellFolder)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(ParseDisplayName)(THIS_ HWND,LPBC,LPOLESTR,PULONG,LPITEMIDLIST*,PULONG) PURE;
-       STDMETHOD(EnumObjects)(THIS_ HWND,DWORD,LPENUMIDLIST*) PURE;
-       STDMETHOD(BindToObject)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
-       STDMETHOD(BindToStorage)(THIS_ LPCITEMIDLIST,LPBC,REFIID,PVOID*) PURE;
-       STDMETHOD(CompareIDs)(THIS_ LPARAM,LPCITEMIDLIST,LPCITEMIDLIST) PURE;
-       STDMETHOD(CreateViewObject)(THIS_ HWND,REFIID,PVOID*) PURE;
-       STDMETHOD(GetAttributesOf)(THIS_ UINT,LPCITEMIDLIST*,PULONG) PURE;
-       STDMETHOD(GetUIObjectOf)(THIS_ HWND,UINT,LPCITEMIDLIST*,REFIID,PUINT,PVOID*) PURE;
-       STDMETHOD(GetDisplayNameOf)(THIS_ LPCITEMIDLIST,DWORD,LPSTRRET) PURE;
-       STDMETHOD(SetNameOf)(THIS_ HWND,LPCITEMIDLIST,LPCOLESTR,DWORD,LPITEMIDLIST*) PURE;
-       STDMETHOD(GetDefaultSearchGUID)(THIS_ GUID*) PURE;
-       STDMETHOD(EnumSearches)(THIS_ IEnumExtraSearch**) PURE;
-       STDMETHOD(GetDefaultColumn)(THIS_ DWORD,ULONG*,ULONG*) PURE;
-       STDMETHOD(GetDefaultColumnState)(THIS_ UINT,SHCOLSTATEF*) PURE;
-       STDMETHOD(GetDetailsEx)(THIS_ LPCITEMIDLIST,const SHCOLUMNID*,VARIANT*) PURE;
-       STDMETHOD(GetDetailsOf)(THIS_ LPCITEMIDLIST,UINT,SHELLDETAILS*) PURE;
-       STDMETHOD(MapColumnToSCID)(THIS_ UINT,SHCOLUMNID*) PURE;
-};
-#undef INTERFACE
-typedef IShellFolder2 *LPSHELLFOLDER2;
-
-#ifdef COBJMACROS
-#define IShellFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IShellFolder2_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IShellFolder2_Release(T) (T)->lpVtbl->Release(T)
-#define IShellFolder2_ParseDisplayName(T,a,b,c,d,e,f) (T)->lpVtbl->ParseDisplayName(T,a,b,c,d,e,f)
-#define IShellFolder2_EnumObjects(T,a,b,c) (T)->lpVtbl->EnumObjects(T,a,b,c)
-#define IShellFolder2_BindToObject(T,a,b,c,d) (T)->lpVtbl->BindToObject(T,a,b,c,d)
-#define IShellFolder2_BindToStorage(T,a,b,c,d) (T)->lpVtbl->BindToStorage(T,a,b,c,d)
-#define IShellFolder2_CompareIDs(T,a,b,c) (T)->lpVtbl->CompareIDs(T,a,b,c)
-#define IShellFolder2_CreateViewObject(T,a,b) (T)->lpVtbl->CreateViewObject(T,a,b)
-#define IShellFolder2_GetAttributesOf(T,a,b,c) (T)->lpVtbl->GetAttributesOf(T,a,b,c)
-#define IShellFolder2_GetUIObjectOf(T,a,b,c,d,e,f) (T)->lpVtbl->GetUIObjectOf(T,a,b,c,d,e,f)
-#define IShellFolder2_GetDisplayNameOf(T,a,b,c) (T)->lpVtbl->GetDisplayNameOf(T,a,b,c)
-#define IShellFolder2_SetNameOf(T,a,b,c,d,e) (T)->lpVtbl->SetNameOf(T,a,b,c,d,e)
-#define IShellFolder2_GetDefaultSearchGUID(T,a) (T)->lpVtbl->GetDefaultSearchGUID(T,a)
-#define IShellFolder2_EnumSearches(T,a) (T)->lpVtbl->EnumSearches(T,a)
-#define IShellFolder2_GetDefaultColumn(T,a,b,c) (T)->lpVtbl->GetDefaultColumn(T,a,b,c)
-#define IShellFolder2_GetDefaultColumnState(T,a,b) (T)->lpVtbl->GetDefaultColumnState(T,a,b)
-#define IShellFolder2_GetDetailsEx(T,a,b,c) (T)->lpVtbl->GetDetailsEx(T,a,b,c)
-#define IShellFolder2_GetDetailsOf(T,a,b,c) (T)->lpVtbl->GetDetailsOf(T,a,b,c)
-#define IShellFolder2_MapColumnToSCID(T,a,b) (T)->lpVtbl->MapColumnToSCID(T,a,b)
-#endif
-
-#endif /* _WIN32_IE >= 0x0500 */
-#define INTERFACE ICopyHook
-DECLARE_INTERFACE_(ICopyHook, IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD_(UINT,CopyCallback)(THIS_ HWND,UINT,UINT,LPCSTR,DWORD,LPCSTR,DWORD) PURE;
-};
-#undef INTERFACE
-typedef ICopyHook *LPCOPYHOOK;
-
-#define INTERFACE IFileViewerSite
-DECLARE_INTERFACE(IFileViewerSite)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(SetPinnedWindow)(THIS_ HWND) PURE;
-       STDMETHOD(GetPinnedWindow)(THIS_ HWND*) PURE;
-};
-#undef INTERFACE
-typedef IFileViewerSite *LPFILEVIEWERSITE;
-
-#define INTERFACE IFileViewer
-DECLARE_INTERFACE(IFileViewer)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(ShowInitialize)(THIS_ LPFILEVIEWERSITE) PURE;
-       STDMETHOD(Show)(THIS_ LPFVSHOWINFO) PURE;
-       STDMETHOD(PrintTo)(THIS_ LPSTR,BOOL) PURE;
-};
-#undef INTERFACE
-typedef IFileViewer *LPFILEVIEWER;
-
-#define INTERFACE IFileSystemBindData
-DECLARE_INTERFACE_(IFileSystemBindData, IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(SetFindData)(THIS_ const WIN32_FIND_DATAW*) PURE;
-       STDMETHOD(GetFindData)(THIS_ WIN32_FIND_DATAW*) PURE;
-};
-#undef INTERFACE
-
-#define INTERFACE IPersistFolder
-DECLARE_INTERFACE_(IPersistFolder,IPersist)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
-       STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
-};
-#undef INTERFACE
-typedef IPersistFolder *LPPERSISTFOLDER;
-
-#ifdef COBJMACROS
-#define IPersistFolder_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IPersistFolder_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IPersistFolder_Release(T) (T)->lpVtbl->Release(T)
-#define IPersistFolder_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
-#define IPersistFolder_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
-#endif
-
-#if (_WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500)
-
-#define INTERFACE IPersistFolder2
-DECLARE_INTERFACE_(IPersistFolder2,IPersistFolder)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
-       STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
-       STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE;
-};
-#undef INTERFACE
-typedef IPersistFolder2 *LPPERSISTFOLDER2;
-
-#ifdef COBJMACROS
-#define IPersistFolder2_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IPersistFolder2_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IPersistFolder2_Release(T) (T)->lpVtbl->Release(T)
-#define IPersistFolder2_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
-#define IPersistFolder2_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
-#define IPersistFolder2_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a)
-#endif
-
-#endif /* _WIN32_IE >= 0x0400 || _WIN32_WINNT >= 0x0500 */
-
-#if (_WIN32_IE >= 0x0500)
-
-#define INTERFACE IPersistFolder3
-DECLARE_INTERFACE_(IPersistFolder3,IPersistFolder2)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(GetClassID)(THIS_ CLSID*) PURE;
-       STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST) PURE;
-       STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST*) PURE;
-       STDMETHOD(InitializeEx)(THIS_ IBindCtx*,LPCITEMIDLIST,const PERSIST_FOLDER_TARGET_INFO*) PURE;
-       STDMETHOD(GetFolderTargetInfo)(THIS_ PERSIST_FOLDER_TARGET_INFO*) PURE;
-};
-#undef INTERFACE
-typedef IPersistFolder3 *LPPERSISTFOLDER3;
-
-#ifdef COBJMACROS
-#define IPersistFolder3_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IPersistFolder3_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IPersistFolder3_Release(T) (T)->lpVtbl->Release(T)
-#define IPersistFolder3_GetClassID(T,a) (T)->lpVtbl->GetClassID(T,a)
-#define IPersistFolder3_Initialize(T,a) (T)->lpVtbl->Initialize(T,a)
-#define IPersistFolder3_GetCurFolder(T,a) (T)->lpVtbl->GetCurFolder(T,a)
-#define IPersistFolder3_InitializeEx(T,a,b,c) (T)->lpVtbl->InitializeEx(T,a,b,c)
-#define IPersistFolder3_GetFolderTargetInfo(T,a) (T)->lpVtbl->GetFolderTargetInfo(T,a)
-#endif
-
-#endif /* _WIN32_IE >= 0x0500 */
-
-typedef interface IShellBrowser *LPSHELLBROWSER;
-typedef interface IShellView *LPSHELLVIEW;
-
-#define INTERFACE IShellBrowser
-DECLARE_INTERFACE_(IShellBrowser,IOleWindow)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
-       STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
-       STDMETHOD(InsertMenusSB)(THIS_ HMENU,LPOLEMENUGROUPWIDTHS) PURE;
-       STDMETHOD(SetMenuSB)(THIS_ HMENU,HOLEMENU,HWND) PURE;
-       STDMETHOD(RemoveMenusSB)(THIS_ HMENU) PURE;
-       STDMETHOD(SetStatusTextSB)(THIS_ LPCOLESTR) PURE;
-       STDMETHOD(EnableModelessSB)(THIS_ BOOL) PURE;
-       STDMETHOD(TranslateAcceleratorSB) (THIS_ LPMSG,WORD) PURE;
-       STDMETHOD(BrowseObject)(THIS_ LPCITEMIDLIST,UINT) PURE;
-       STDMETHOD(GetViewStateStream)(THIS_ DWORD,LPSTREAM*) PURE;
-       STDMETHOD(GetControlWindow)(THIS_ UINT,HWND*) PURE;
-       STDMETHOD(SendControlMsg)(THIS_ UINT,UINT,WPARAM,LPARAM,LRESULT*) PURE;
-       STDMETHOD(QueryActiveShellView)(THIS_ LPSHELLVIEW*) PURE;
-       STDMETHOD(OnViewWindowActive)(THIS_ LPSHELLVIEW) PURE;
-       STDMETHOD(SetToolbarItems)(THIS_ LPTBBUTTON,UINT,UINT) PURE;
-};
-#undef INTERFACE
-
-#ifdef COBJMACROS
-#define IShellBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IShellBrowser_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IShellBrowser_Release(T) (T)->lpVtbl->Release(T)
-#define IShellBrowser_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
-#define IShellBrowser_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
-#define IShellBrowser_InsertMenusSB(T,a,b) (T)->lpVtbl->InsertMenusSB(T,a,b)
-#define IShellBrowser_SetMenuSB(T,a,b,c) (T)->lpVtbl->SetMenuSB(T,a,b,c)
-#define IShellBrowser_RemoveMenusSB(T,a) (T)->lpVtbl->RemoveMenusSB(T,a)
-#define IShellBrowser_SetStatusTextSB(T,a) (T)->lpVtbl->SetStatusTextSB(T,a)
-#define IShellBrowser_EnableModelessSB(T,a) (T)->lpVtbl->EnableModelessSB(T,a)
-#define IShellBrowser_TranslateAcceleratorSB(T,a,b) (T)->lpVtbl->TranslateAcceleratorSB(T,a,b)
-#define IShellBrowser_BrowseObject(T,a,b) (T)->lpVtbl->BrowseObject(T,a,b)
-#define IShellBrowser_GetViewStateStream(T,a,b) (T)->lpVtbl->GetViewStateStream(T,a,b)
-#define IShellBrowser_GetControlWindow(T,a,b) (T)->lpVtbl->GetControlWindow(T,a,b)
-#define IShellBrowser_SendControlMsg(T,a,b,c,d,e) (T)->lpVtbl->SendControlMsg(T,a,b,c,d,e)
-#define IShellBrowser_QueryActiveShellView(T,a) (T)->lpVtbl->QueryActiveShellView(T,a)
-#define IShellBrowser_OnViewWindowActive(T,a) (T)->lpVtbl->OnViewWindowActive(T,a)
-#define IShellBrowser_SetToolbarItems(T,a,b,c) (T)->lpVtbl->SetToolbarItems(T,a,b,c)
-#endif
-
-#define INTERFACE IShellView
-DECLARE_INTERFACE_(IShellView,IOleWindow)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
-       STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
-       STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
-#ifdef _FIX_ENABLEMODELESS_CONFLICT
-       STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
-#else
-       STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
-#endif
-       STDMETHOD(UIActivate)(THIS_ UINT) PURE;
-       STDMETHOD(Refresh) (THIS) PURE;
-       STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
-       STDMETHOD(DestroyViewWindow)(THIS) PURE;
-       STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
-       STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
-       STDMETHOD(SaveViewState)(THIS) PURE;
-       STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
-       STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
-};
-#undef INTERFACE
-
-#ifdef COBJMACROS
-#define IShellView_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define IShellView_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define IShellView_Release(T) (T)->lpVtbl->Release(T)
-#define IShellView_GetWindow(T,a) (T)->lpVtbl->GetWindow(T,a)
-#define IShellView_ContextSensitiveHelp(T,a) (T)->lpVtbl->ContextSensitiveHelp(T,a)
-#define IShellView_TranslateAccelerator(T,a) (T)->lpVtbl->TranslateAccelerator(T,a)
-#ifdef _FIX_ENABLEMODELESS_CONFLICT
-#define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModelessSV(T,a)
-#else
-#define IShellView_EnableModeless(T,a) (T)->lpVtbl->EnableModeless(T,a)
-#endif
-#define IShellView_UIActivate(T,a) (T)->lpVtbl->UIActivate(T,a)
-#define IShellView_Refresh(T) (T)->lpVtbl->Refresh(T)
-#define IShellView_CreateViewWindow(T,a,b,c,d,e) (T)->lpVtbl->CreateViewWindow(T,a,b,c,d,e)
-#define IShellView_DestroyViewWindow(T) (T)->lpVtbl->DestroyViewWindow(T)
-#define IShellView_GetCurrentInfo(T,a) (T)->lpVtbl->GetCurrentInfo(T,a)
-#define IShellView_AddPropertySheetPages(T,a,b,c) (T)->lpVtbl->AddPropertySheetPages(T,a,b,c)
-#define IShellView_SaveViewState(T) (T)->lpVtbl->SaveViewState(T)
-#define IShellView_SelectItem(T,a,b) (T)->lpVtbl->SelectItem(T,a,b)
-#define IShellView_GetItemObject(T,a,b,c) (T)->lpVtbl->GetItemObject(T,a,b,c)
-#endif
-
-#define INTERFACE ICommDlgBrowser
-DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(OnDefaultCommand)(THIS_ IShellView*) PURE;
-       STDMETHOD(OnStateChange)(THIS_ IShellView*,ULONG) PURE;
-       STDMETHOD(IncludeObject)(THIS_ IShellView*,LPCITEMIDLIST) PURE;
-};
-#undef INTERFACE
-typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
-
-#ifdef COBJMACROS
-#define ICommDlgBrowser_QueryInterface(T,a,b) (T)->lpVtbl->QueryInterface(T,a,b)
-#define ICommDlgBrowser_AddRef(T) (T)->lpVtbl->AddRef(T)
-#define ICommDlgBrowser_Release(T) (T)->lpVtbl->Release(T)
-#define ICommDlgBrowser_OnDefaultCommand(T,a) (T)->lpVtbl->OnDefaultCommand(T,a)
-#define ICommDlgBrowser_OnStateChange(T,a,b) (T)->lpVtbl->OnStateChange(T,a,b)
-#define ICommDlgBrowser_IncludeObject(T,a,b) (T)->lpVtbl->IncludeObject(T,a,b)
-#endif
-
-typedef GUID SHELLVIEWID;
-typedef struct _SV2CVW2_PARAMS {
-       DWORD cbSize;
-       IShellView *psvPrev;
-       FOLDERSETTINGS const *pfs;
-       IShellBrowser *psbOwner;
-       RECT *prcView;
-       SHELLVIEWID const *pvid;
-       HWND hwndView;
-} SV2CVW2_PARAMS,*LPSV2CVW2_PARAMS;
-#define INTERFACE IShellView2
-DECLARE_INTERFACE_(IShellView2,IShellView)
-{
-
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
-       STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
-       STDMETHOD(TranslateAccelerator) (THIS_ LPMSG) PURE;
-#ifdef _FIX_ENABLEMODELESS_CONFLICT
-       STDMETHOD(EnableModelessSV)(THIS_ BOOL) PURE;
-#else
-       STDMETHOD(EnableModeless)(THIS_ BOOL) PURE;
-#endif
-       STDMETHOD(UIActivate)(THIS_ UINT) PURE;
-       STDMETHOD(Refresh) (THIS) PURE;
-       STDMETHOD(CreateViewWindow)(THIS_ IShellView*,LPCFOLDERSETTINGS,LPSHELLBROWSER,RECT*,HWND*) PURE;
-       STDMETHOD(DestroyViewWindow)(THIS) PURE;
-       STDMETHOD(GetCurrentInfo)(THIS_ LPFOLDERSETTINGS) PURE;
-       STDMETHOD(AddPropertySheetPages)(THIS_ DWORD,LPFNADDPROPSHEETPAGE,LPARAM) PURE;
-       STDMETHOD(SaveViewState)(THIS) PURE;
-       STDMETHOD(SelectItem)(THIS_ LPCITEMIDLIST,UINT) PURE;
-       STDMETHOD(GetItemObject)(THIS_ UINT,REFIID,PVOID*) PURE;
-       STDMETHOD(GetView)(THIS_ SHELLVIEWID*,ULONG) PURE;
-       STDMETHOD(CreateViewWindow2)(THIS_ LPSV2CVW2_PARAMS) PURE;
-};
-#undef INTERFACE
-
-#define INTERFACE IShellExecuteHookA
-DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA) PURE;
-};
-#undef INTERFACE
-
-#define INTERFACE IShellExecuteHookW
-DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW) PURE;
-};
-#undef INTERFACE
-
-#define INTERFACE IShellIcon
-DECLARE_INTERFACE_(IShellIcon,IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST,UINT,PINT) PURE;
-};
-#undef INTERFACE
-typedef IShellIcon *LPSHELLICON;
-
-typedef struct {
-       BOOL fShowAllObjects : 1;
-       BOOL fShowExtensions : 1;
-       BOOL fNoConfirmRecycle : 1;
-       BOOL fShowSysFiles : 1;
-       BOOL fShowCompColor : 1;
-       BOOL fDoubleClickInWebView : 1;
-       BOOL fDesktopHTML : 1;
-       BOOL fWin95Classic : 1;
-       BOOL fDontPrettyPath : 1;
-       BOOL fShowAttribCol : 1;
-       BOOL fMapNetDrvBtn : 1;
-       BOOL fShowInfoTip : 1;
-       BOOL fHideIcons : 1;
-       UINT fRestFlags : 3;
-} SHELLFLAGSTATE, * LPSHELLFLAGSTATE;
-
-#define SSF_SHOWALLOBJECTS 0x1
-#define SSF_SHOWEXTENSIONS 0x2
-#define SSF_SHOWCOMPCOLOR 0x8
-#define SSF_SHOWSYSFILES 0x20
-#define SSF_DOUBLECLICKINWEBVIEW 0x80
-#define SSF_SHOWATTRIBCOL 0x100
-#define SSF_DESKTOPHTML 0x200
-#define SSF_WIN95CLASSIC 0x400
-#define SSF_DONTPRETTYPATH 0x800
-#define SSF_MAPNETDRVBUTTON 0x1000
-#define SSF_SHOWINFOTIP 0x2000
-#define SSF_HIDEICONS 0x4000
-#define SSF_NOCONFIRMRECYCLE 0x8000
-
-#undef  INTERFACE
-#define INTERFACE IShellIconOverlayIdentifier
-DECLARE_INTERFACE_(IShellIconOverlayIdentifier,IUnknown)
-{
-       STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
-       STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-       STDMETHOD_(ULONG,Release)(THIS) PURE;
-       STDMETHOD(IsMemberOf)(THIS_ LPCWSTR,DWORD) PURE;
-       STDMETHOD(GetOverlayInfo)(THIS_ LPWSTR,int,int*,DWORD*) PURE;
-       STDMETHOD(GetPriority)(THIS_ int*) PURE;
-};
-
-#define ISIOI_ICONFILE 0x00000001
-#define ISIOI_ICONINDEX 0x00000002
-
-#if (_WIN32_WINNT >= 0x0500) /* W2K */
-typedef struct {
-       BOOL fShowAllObjects : 1;
-       BOOL fShowExtensions : 1;
-       BOOL fNoConfirmRecycle : 1;
-       BOOL fShowSysFiles : 1;
-       BOOL fShowCompColor : 1;
-       BOOL fDoubleClickInWebView : 1;
-       BOOL fDesktopHTML : 1;
-       BOOL fWin95Classic : 1;
-       BOOL fDontPrettyPath : 1;
-       BOOL fShowAttribCol : 1;
-       BOOL fMapNetDrvBtn : 1;
-       BOOL fShowInfoTip : 1;
-       BOOL fHideIcons : 1;
-       BOOL fWebView : 1;
-       BOOL fFilter : 1;
-       BOOL fShowSuperHidden : 1;
-       BOOL fNoNetCrawling : 1;
-       DWORD dwWin95Unused;
-       UINT uWin95Unused;
-       LONG lParamSort;
-       int iSortDirection;
-       UINT version;
-       UINT uNotUsed;
-       BOOL fSepProcess : 1;
-       BOOL fStartPanelOn : 1;
-       BOOL fShowStartPage : 1;
-       UINT fSpareFlags : 13;
-} SHELLSTATE, *LPSHELLSTATE;
-#endif /* _WIN32_WINNT >= 0x0500 */
-
-#if (_WIN32_IE >= 0x0500)
-#pragma pack(push,8)
-typedef struct
-{
-       SIZE sizeDragImage;
-       POINT ptOffset;
-       HBITMAP hbmpDragImage;
-       COLORREF crColorKey;
-} SHDRAGIMAGE, *LPSHDRAGIMAGE;
-#pragma pack(pop)
-
-#define INTERFACE IDragSourceHelper
-DECLARE_INTERFACE_(IDragSourceHelper, IUnknown)
-{
-       STDMETHOD (QueryInterface)(THIS_ REFIID riid, void **ppv) PURE;
-       STDMETHOD_(ULONG, AddRef) (THIS) PURE;
-       STDMETHOD_(ULONG, Release) (THIS) PURE;
-       STDMETHOD (InitializeFromBitmap)(THIS_ LPSHDRAGIMAGE pshdi, IDataObject* pDataObject) PURE;
-       STDMETHOD (InitializeFromWindow)(THIS_ HWND hwnd, POINT* ppt, IDataObject* pDataObject) PURE;
-};
-#undef INTERFACE
-
-#define INTERFACE IDropTargetHelper
-DECLARE_INTERFACE_(IDropTargetHelper, IUnknown)
-{
-       STDMETHOD (QueryInterface)(THIS_ REFIID riid, void** ppv) PURE;
-       STDMETHOD_(ULONG, AddRef) (THIS) PURE;
-       STDMETHOD_(ULONG, Release) (THIS) PURE;
-       STDMETHOD (DragEnter)(THIS_ HWND hwndTarget, IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE;
-       STDMETHOD (DragLeave)(THIS) PURE;
-       STDMETHOD (DragOver)(THIS_ POINT* ppt, DWORD dwEffect) PURE;
-       STDMETHOD (Drop)(THIS_ IDataObject* pDataObject, POINT* ppt, DWORD dwEffect) PURE;
-       STDMETHOD (Show)(THIS_ BOOL fShow) PURE;
-};
-#undef INTERFACE
-#endif /* _WIN32_IE >= 0x0500 */
-
-#define INTERFACE IInputObject
-DECLARE_INTERFACE_(IInputObject,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
-    STDMETHOD_(ULONG,Release)(THIS) PURE;
-    /*** IInputObject methods ***/
-    STDMETHOD(UIActivateIO)(THIS_ BOOL bActivating, LPMSG lpMsg) PURE;
-    STDMETHOD(HasFocusIO)(THIS) PURE;
-    STDMETHOD(TranslateAcceleratorIO)(THIS_ LPMSG lpMsg) PURE;
-};
-#undef INTERFACE
-
-#if defined(COBJMACROS)
-/*** IUnknown methods ***/
-#define IInputObject_QueryInterface(p,a,b)       (p)->lpVtbl->QueryInterface(p,a,b)
-#define IInputObject_AddRef(p)                   (p)->lpVtbl->AddRef(p)
-#define IInputObject_Release(p)                  (p)->lpVtbl->Release(p)
-/*** IInputObject methods ***/
-#define IInputObject_UIActivateIO(p,a,b)         (p)->lpVtbl->UIActivateIO(p,a,b)
-#define IInputObject_HasFocusIO(p)               (p)->lpVtbl->HasFocusIO(p)
-#define IInputObject_TranslateAcceleratorIO(p,a) (p)->lpVtbl->TranslateAcceleratorIO(p,a)
-#endif
-
-#define INTERFACE IInputObjectSite
-DECLARE_INTERFACE_(IInputObjectSite,IUnknown)
-{
-    /*** IUnknown methods ***/
-    STDMETHOD_(HRESULT,QueryInterface) (THIS_ REFIID riid, void** ppvObject) PURE;
-    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
-    STDMETHOD_(ULONG,Release) (THIS) PURE;
-    /*** IInputObjectSite methods ***/
-    STDMETHOD(OnFocusChangeIS)(THIS_ LPUNKNOWN lpUnknown, BOOL bFocus) PURE;
-};
-#undef INTERFACE
-
-#if defined(COBJMACROS)
-/*** IUnknown methods ***/
-#define IInputObjectSite_QueryInterface(p,a,b)  (p)->lpVtbl->QueryInterface(p,a,b)
-#define IInputObjectSite_AddRef(p)              (p)->lpVtbl->AddRef(p)
-#define IInputObjectSite_Release(p)             (p)->lpVtbl->Release(p)
-/*** IInputObject methods ***/
-#define IInputObjectSite_OnFocusChangeIS(p,a,b) (p)->lpVtbl->OnFocusChangeIS(p,a,b)
-#endif
-
-typedef HRESULT (CALLBACK *LPFNVIEWCALLBACK)(
-       IShellView* dwUser,
-       IShellFolder* pshf,
-       HWND hWnd,
-       UINT uMsg,
-       WPARAM wParam,
-       LPARAM lParam);
-typedef struct _CSFV
-{
-  UINT             uSize;
-  IShellFolder*    pshf;
-  IShellView*      psvOuter;
-  LPCITEMIDLIST    pidlFolder;
-  LONG             lEvents;
-  LPFNVIEWCALLBACK pfnCallback;
-  FOLDERVIEWMODE   fvm;
-} CSFV, *LPCSFV;
-
-void WINAPI SHAddToRecentDocs(UINT,PCVOID);
-LPITEMIDLIST WINAPI SHBrowseForFolderA(PBROWSEINFOA);
-LPITEMIDLIST WINAPI SHBrowseForFolderW(PBROWSEINFOW);
-DWORD WINAPI SHCLSIDFromStringA(LPCSTR,CLSID*);
-DWORD WINAPI SHCLSIDFromStringW(LPCWSTR,CLSID*);
-HRESULT WINAPI SHCreateShellFolderViewEx(LPCSFV pshfvi, IShellView **ppshv);
-void WINAPI SHChangeNotify(LONG,UINT,PCVOID,PCVOID);
-HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
-HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER,LPCITEMIDLIST,int,PVOID,int);
-HRESULT WINAPI SHGetDesktopFolder(LPSHELLFOLDER*);
-HRESULT WINAPI SHGetInstanceExplorer(IUnknown **);
-HRESULT WINAPI SHGetMalloc(LPMALLOC*);
-BOOL WINAPI SHGetPathFromIDListA(LPCITEMIDLIST,LPSTR);
-BOOL WINAPI SHGetPathFromIDListW(LPCITEMIDLIST,LPWSTR);
-HRESULT WINAPI SHGetSpecialFolderLocation(HWND,int,LPITEMIDLIST*);
-HRESULT WINAPI SHLoadInProc(REFCLSID);
-#if (_WIN32_IE >= 0x0400)
-BOOL WINAPI SHGetSpecialFolderPathA(HWND,LPSTR,int,BOOL);
-BOOL WINAPI SHGetSpecialFolderPathW(HWND,LPWSTR,int,BOOL);
-#endif
-/* SHGetFolderPath in shfolder.dll on W9x, NT4, also in shell32.dll on W2K */
-HRESULT WINAPI SHGetFolderPathA(HWND,int,HANDLE,DWORD,LPSTR);
-HRESULT WINAPI SHGetFolderPathW(HWND,int,HANDLE,DWORD,LPWSTR);
-#if (_WIN32_WINDOWS >= 0x0490) || (_WIN32_WINNT >= 0x0500) /* ME or W2K */
-HRESULT WINAPI SHGetFolderLocation(HWND,int,HANDLE,DWORD,LPITEMIDLIST*);
-#endif
-#if (_WIN32_WINNT >= 0x0500)
-INT WINAPI SHCreateDirectoryExA(HWND,LPCSTR,LPSECURITY_ATTRIBUTES);
-INT WINAPI SHCreateDirectoryExW(HWND,LPCWSTR,LPSECURITY_ATTRIBUTES);
-HRESULT WINAPI SHBindToParent(LPCITEMIDLIST,REFIID,VOID**,LPCITEMIDLIST*);
-#endif
-#if (_WIN32_WINNT >= 0x0501) /* XP */
-HRESULT WINAPI SHGetFolderPathAndSubDirA(HWND,int,HANDLE,DWORD,LPCSTR,LPSTR);
-HRESULT WINAPI SHGetFolderPathAndSubDirW(HWND,int,HANDLE,DWORD,LPCWSTR,LPWSTR);
-#endif
-void WINAPI SHGetSettings(LPSHELLFLAGSTATE,DWORD);
-#if (_WIN32_WINNT >= 0x0500) /* W2K */
-void WINAPI SHGetSetSettings(LPSHELLSTATE,DWORD,BOOL);
-#endif
-
-#if (_WIN32_WINNT >= 0x0500) /* W2K */
-BOOL WINAPI ILIsEqual(LPCITEMIDLIST, LPCITEMIDLIST);
-BOOL WINAPI ILIsParent(LPCITEMIDLIST, LPCITEMIDLIST, BOOL);
-BOOL WINAPI ILRemoveLastID(LPITEMIDLIST);
-HRESULT WINAPI ILLoadFromStream(IStream*, LPITEMIDLIST*);
-HRESULT WINAPI ILSaveToStream(IStream*, LPCITEMIDLIST);
-LPITEMIDLIST WINAPI ILAppendID(LPITEMIDLIST, LPCSHITEMID, BOOL);
-LPITEMIDLIST WINAPI ILClone(LPCITEMIDLIST);
-LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST);
-LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST, LPCITEMIDLIST);
-LPITEMIDLIST WINAPI ILCreateFromPathA(LPCSTR);
-LPITEMIDLIST WINAPI ILCreateFromPathW(LPCWSTR);
-#ifdef UNICODE
-#define ILCreateFromPath ILCreateFromPathW
-#else
-#define ILCreateFromPath ILCreateFromPathA
-#endif
-LPITEMIDLIST WINAPI ILFindChild(LPCITEMIDLIST, LPCITEMIDLIST);
-LPITEMIDLIST WINAPI ILFindLastID(LPCITEMIDLIST);
-LPITEMIDLIST WINAPI ILGetNext(LPCITEMIDLIST);
-UINT WINAPI ILGetSize(LPCITEMIDLIST);
-void WINAPI ILFree(LPITEMIDLIST);
-
-HRESULT WINAPI SHCoCreateInstance(LPCWSTR,REFCLSID,IUnknown*,REFIID,void**);
-BOOL WINAPI SHObjectProperties(HWND,DWORD,LPCWSTR,LPCWSTR);
-#endif
-
-int WINAPI RestartDialog(HWND,LPCWSTR,DWORD);
-int WINAPI RestartDialogEx(HWND,LPCWSTR,DWORD,DWORD);
-
-ULONG WINAPI SHChangeNotifyRegister(HWND,int,LONG,UINT,int,SHChangeNotifyEntry *);
-BOOL WINAPI SHChangeNotifyDeregister(ULONG);
-
-#ifdef UNICODE
-typedef IShellExecuteHookW IShellExecuteHook;
-typedef IShellLinkW IShellLink;
-typedef BROWSEINFOW BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
-#define SHBrowseForFolder SHBrowseForFolderW
-#define SHCLSIDFromString SHCLSIDFromStringW
-#define SHGetDataFromIDList SHGetDataFromIDListW
-#define SHGetPathFromIDList SHGetPathFromIDListW
-#if (_WIN32_IE >= 0x0400)
-#define SHGetSpecialFolderPath SHGetSpecialFolderPathW
-#endif
-#define SHGetFolderPath SHGetFolderPathW
-#if (_WIN32_WINNT >= 0x0500)
-#define SHCreateDirectoryEx SHCreateDirectoryExW
-#endif
-#if (_WIN32_WINNT >= 0x0501)
-#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirW
-#endif
-
-#else
-typedef IShellExecuteHookA IShellExecuteHook;
-typedef IShellLinkA IShellLink;
-typedef BROWSEINFOA BROWSEINFO,*PBROWSEINFO,*LPBROWSEINFO;
-#define SHBrowseForFolder SHBrowseForFolderA
-#define SHCLSIDFromString SHCLSIDFromStringA
-#define SHGetDataFromIDList SHGetDataFromIDListA
-#define SHGetPathFromIDList SHGetPathFromIDListA
-#if (_WIN32_IE >= 0x0400)
-#define SHGetSpecialFolderPath SHGetSpecialFolderPathA
-#endif
-#define SHGetFolderPath SHGetFolderPathA
-#if (_WIN32_WINNT >= 0x0500)
-#define SHCreateDirectoryEx SHCreateDirectoryExA
-#endif
-#if (_WIN32_WINNT >= 0x0501)
-#define SHGetFolderPathAndSubDir SHGetFolderPathAndSubDirA
-#endif
-#endif /* UNICODE */
-
-#pragma pack(pop)
-#ifdef __cplusplus
-}
-#endif
-
-
-#endif /* _SHLOBJ_H */