/*** Autogenerated by WIDL 0.9.40 from shobjidl.idl - Do not edit ***/
#include <rpc.h>
#include <rpcndr.h>

#ifndef __WIDL_SHOBJIDL_H
#define __WIDL_SHOBJIDL_H
#ifdef __cplusplus
extern "C" {
#endif
#include <objidl.h>
#include <oleidl.h>
#include <oaidl.h>
#include <shtypes.h>
#include <servprov.h>
#include <comcat.h>
#include <propidl.h>
#ifndef __IPersistFolder_FWD_DEFINED__
#define __IPersistFolder_FWD_DEFINED__
typedef interface IPersistFolder IPersistFolder;
#endif

typedef IPersistFolder *LPPERSISTFOLDER;
/*****************************************************************************
 * IPersistFolder interface
 */
#ifndef __IPersistFolder_INTERFACE_DEFINED__
#define __IPersistFolder_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPersistFolder, 0x000214ea, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IPersistFolder : public IPersist
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        LPCITEMIDLIST pidl) = 0;

};
#else
typedef struct IPersistFolderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPersistFolder* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPersistFolder* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPersistFolder* This);

    /*** IPersist methods ***/
    HRESULT (STDMETHODCALLTYPE *GetClassID)(
        IPersistFolder* This,
        CLSID *pClassID);

    /*** IPersistFolder methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IPersistFolder* This,
        LPCITEMIDLIST pidl);

    END_INTERFACE
} IPersistFolderVtbl;
interface IPersistFolder {
    CONST_VTBL IPersistFolderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IPersistFolder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IPersistFolder_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IPersistFolder_Release(p) (p)->lpVtbl->Release(p)
/*** IPersist methods ***/
#define IPersistFolder_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
/*** IPersistFolder methods ***/
#define IPersistFolder_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
#endif

#endif

HRESULT CALLBACK IPersistFolder_Initialize_Proxy(
    IPersistFolder* This,
    LPCITEMIDLIST pidl);
void __RPC_STUB IPersistFolder_Initialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IPersistFolder_INTERFACE_DEFINED__ */

#ifndef __IPersistFolder2_FWD_DEFINED__
#define __IPersistFolder2_FWD_DEFINED__
typedef interface IPersistFolder2 IPersistFolder2;
#endif

typedef IPersistFolder2 *LPPERSISTFOLDER2;
/*****************************************************************************
 * IPersistFolder2 interface
 */
#ifndef __IPersistFolder2_INTERFACE_DEFINED__
#define __IPersistFolder2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPersistFolder2, 0x1ac3d9f0, 0x175c, 0x11d1, 0x95,0xbe, 0x00,0x60,0x97,0x97,0xea,0x4f);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IPersistFolder2 : public IPersistFolder
{
    virtual HRESULT STDMETHODCALLTYPE GetCurFolder(
        LPITEMIDLIST *ppidl) = 0;

};
#else
typedef struct IPersistFolder2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPersistFolder2* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPersistFolder2* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPersistFolder2* This);

    /*** IPersist methods ***/
    HRESULT (STDMETHODCALLTYPE *GetClassID)(
        IPersistFolder2* This,
        CLSID *pClassID);

    /*** IPersistFolder methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IPersistFolder2* This,
        LPCITEMIDLIST pidl);

    /*** IPersistFolder2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCurFolder)(
        IPersistFolder2* This,
        LPITEMIDLIST *ppidl);

    END_INTERFACE
} IPersistFolder2Vtbl;
interface IPersistFolder2 {
    CONST_VTBL IPersistFolder2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IPersistFolder2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IPersistFolder2_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IPersistFolder2_Release(p) (p)->lpVtbl->Release(p)
/*** IPersist methods ***/
#define IPersistFolder2_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
/*** IPersistFolder methods ***/
#define IPersistFolder2_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
/*** IPersistFolder2 methods ***/
#define IPersistFolder2_GetCurFolder(p,a) (p)->lpVtbl->GetCurFolder(p,a)
#endif

#endif

HRESULT CALLBACK IPersistFolder2_GetCurFolder_Proxy(
    IPersistFolder2* This,
    LPITEMIDLIST *ppidl);
void __RPC_STUB IPersistFolder2_GetCurFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IPersistFolder2_INTERFACE_DEFINED__ */

#ifndef __IEnumIDList_FWD_DEFINED__
#define __IEnumIDList_FWD_DEFINED__
typedef interface IEnumIDList IEnumIDList;
#endif

typedef IEnumIDList *LPENUMIDLIST;
/*****************************************************************************
 * IEnumIDList interface
 */
#ifndef __IEnumIDList_INTERFACE_DEFINED__
#define __IEnumIDList_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumIDList, 0x000214f2, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IEnumIDList : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        LPITEMIDLIST *rgelt,
        ULONG *pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumIDList **ppenum) = 0;

};
#else
typedef struct IEnumIDListVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IEnumIDList* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IEnumIDList* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IEnumIDList* This);

    /*** IEnumIDList methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumIDList* This,
        ULONG celt,
        LPITEMIDLIST *rgelt,
        ULONG *pceltFetched);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumIDList* This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumIDList* This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumIDList* This,
        IEnumIDList **ppenum);

    END_INTERFACE
} IEnumIDListVtbl;
interface IEnumIDList {
    CONST_VTBL IEnumIDListVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumIDList_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IEnumIDList_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IEnumIDList_Release(p) (p)->lpVtbl->Release(p)
/*** IEnumIDList methods ***/
#define IEnumIDList_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
#define IEnumIDList_Skip(p,a) (p)->lpVtbl->Skip(p,a)
#define IEnumIDList_Reset(p) (p)->lpVtbl->Reset(p)
#define IEnumIDList_Clone(p,a) (p)->lpVtbl->Clone(p,a)
#endif

#endif

HRESULT CALLBACK IEnumIDList_Next_Proxy(
    IEnumIDList* This,
    ULONG celt,
    LPITEMIDLIST *rgelt,
    ULONG *pceltFetched);
void __RPC_STUB IEnumIDList_Next_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumIDList_Skip_Proxy(
    IEnumIDList* This,
    ULONG celt);
void __RPC_STUB IEnumIDList_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumIDList_Reset_Proxy(
    IEnumIDList* This);
void __RPC_STUB IEnumIDList_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumIDList_Clone_Proxy(
    IEnumIDList* This,
    IEnumIDList **ppenum);
void __RPC_STUB IEnumIDList_Clone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IEnumIDList_INTERFACE_DEFINED__ */

#if 0
typedef LPARAM LPFNSVADDPROPSHEETPAGE;
#else
#include <prsht.h>
typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;
#endif
#ifndef __IShellPropSheetExt_FWD_DEFINED__
#define __IShellPropSheetExt_FWD_DEFINED__
typedef interface IShellPropSheetExt IShellPropSheetExt;
#endif

enum tagSHELLPROPSHEETEXTPAGEID {
    EXPPS_FILETYPES = 0x1
};

typedef UINT EXPPS;
/*****************************************************************************
 * IShellPropSheetExt interface
 */
#ifndef __IShellPropSheetExt_INTERFACE_DEFINED__
#define __IShellPropSheetExt_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellPropSheetExt, 0x000214e9, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellPropSheetExt : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddPages(
        LPFNSVADDPROPSHEETPAGE pfnAddPage,
        LPARAM lParam) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReplacePage(
        EXPPS uPageID,
        LPFNSVADDPROPSHEETPAGE pfnReplaceWith,
        LPARAM lParam) = 0;

};
#else
typedef struct IShellPropSheetExtVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellPropSheetExt* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellPropSheetExt* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellPropSheetExt* This);

    /*** IShellPropSheetExt methods ***/
    HRESULT (STDMETHODCALLTYPE *AddPages)(
        IShellPropSheetExt* This,
        LPFNSVADDPROPSHEETPAGE pfnAddPage,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *ReplacePage)(
        IShellPropSheetExt* This,
        EXPPS uPageID,
        LPFNSVADDPROPSHEETPAGE pfnReplaceWith,
        LPARAM lParam);

    END_INTERFACE
} IShellPropSheetExtVtbl;
interface IShellPropSheetExt {
    CONST_VTBL IShellPropSheetExtVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellPropSheetExt_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellPropSheetExt_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellPropSheetExt_Release(p) (p)->lpVtbl->Release(p)
/*** IShellPropSheetExt methods ***/
#define IShellPropSheetExt_AddPages(p,a,b) (p)->lpVtbl->AddPages(p,a,b)
#define IShellPropSheetExt_ReplacePage(p,a,b,c) (p)->lpVtbl->ReplacePage(p,a,b,c)
#endif

#endif

HRESULT CALLBACK IShellPropSheetExt_AddPages_Proxy(
    IShellPropSheetExt* This,
    LPFNSVADDPROPSHEETPAGE pfnAddPage,
    LPARAM lParam);
void __RPC_STUB IShellPropSheetExt_AddPages_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellPropSheetExt_ReplacePage_Proxy(
    IShellPropSheetExt* This,
    EXPPS uPageID,
    LPFNSVADDPROPSHEETPAGE pfnReplaceWith,
    LPARAM lParam);
void __RPC_STUB IShellPropSheetExt_ReplacePage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellPropSheetExt_INTERFACE_DEFINED__ */

typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
#ifndef __IShellFolder_FWD_DEFINED__
#define __IShellFolder_FWD_DEFINED__
typedef interface IShellFolder IShellFolder;
#endif

typedef IShellFolder *LPSHELLFOLDER;
typedef enum tagSHGDN {
    SHGDN_NORMAL = 0,
    SHGDN_INFOLDER = 1,
    SHGDN_FOREDITING = 0x1000,
    SHGDN_INCLUDE_NONFILESYS = 0x2000,
    SHGDN_FORADDRESSBAR = 0x4000,
    SHGDN_FORPARSING = 0x8000
} SHGNO;
typedef DWORD SHGDNF;
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
};

typedef DWORD SHCONTF;
#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_ENCRYPTED         0x00002000L
#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   0x000FC000L
#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_BROWSABLE         0x08000000L
#define SFGAO_NONENUMERATED     0x00100000L
#define SFGAO_NEWCONTENT        0x00200000L
#define SFGAO_STREAM            0x00400000L
#define SFGAO_STORAGEANCESTOR   0x00800000L
typedef ULONG SFGAOF;
/*****************************************************************************
 * IShellFolder interface
 */
#ifndef __IShellFolder_INTERFACE_DEFINED__
#define __IShellFolder_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellFolder, 0x000214e6, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellFolder : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
        HWND hwndOwner,
        LPBC pbcReserved,
        LPOLESTR lpszDisplayName,
        ULONG *pchEaten,
        LPITEMIDLIST *ppidl,
        ULONG *pdwAttributes) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumObjects(
        HWND hwndOwner,
        SHCONTF grfFlags,
        IEnumIDList **ppenumIDList) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindToObject(
        LPCITEMIDLIST pidl,
        LPBC pbcReserved,
        REFIID riid,
        void **ppvOut) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindToStorage(
        LPCITEMIDLIST pidl,
        LPBC pbcReserved,
        REFIID riid,
        void **ppvObj) = 0;

    virtual HRESULT STDMETHODCALLTYPE CompareIDs(
        LPARAM lParam,
        LPCITEMIDLIST pidl1,
        LPCITEMIDLIST pidl2) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateViewObject(
        HWND hwndOwner,
        REFIID riid,
        void **ppvOut) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAttributesOf(
        UINT cidl,
        LPCITEMIDLIST *apidl,
        SFGAOF *rgfInOut) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetUIObjectOf(
        HWND hwndOwner,
        UINT cidl,
        LPCITEMIDLIST *apidl,
        REFIID riid,
        UINT *prgfInOut,
        void **ppvOut) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayNameOf(
        LPCITEMIDLIST pidl,
        SHGDNF uFlags,
        STRRET *lpName) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNameOf(
        HWND hwnd,
        LPCITEMIDLIST pidl,
        LPCOLESTR lpszName,
        SHGDNF uFlags,
        LPITEMIDLIST *ppidlOut) = 0;

};
#else
typedef struct IShellFolderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellFolder* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellFolder* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellFolder* This);

    /*** IShellFolder methods ***/
    HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
        IShellFolder* This,
        HWND hwndOwner,
        LPBC pbcReserved,
        LPOLESTR lpszDisplayName,
        ULONG *pchEaten,
        LPITEMIDLIST *ppidl,
        ULONG *pdwAttributes);

    HRESULT (STDMETHODCALLTYPE *EnumObjects)(
        IShellFolder* This,
        HWND hwndOwner,
        SHCONTF grfFlags,
        IEnumIDList **ppenumIDList);

    HRESULT (STDMETHODCALLTYPE *BindToObject)(
        IShellFolder* This,
        LPCITEMIDLIST pidl,
        LPBC pbcReserved,
        REFIID riid,
        void **ppvOut);

    HRESULT (STDMETHODCALLTYPE *BindToStorage)(
        IShellFolder* This,
        LPCITEMIDLIST pidl,
        LPBC pbcReserved,
        REFIID riid,
        void **ppvObj);

    HRESULT (STDMETHODCALLTYPE *CompareIDs)(
        IShellFolder* This,
        LPARAM lParam,
        LPCITEMIDLIST pidl1,
        LPCITEMIDLIST pidl2);

    HRESULT (STDMETHODCALLTYPE *CreateViewObject)(
        IShellFolder* This,
        HWND hwndOwner,
        REFIID riid,
        void **ppvOut);

    HRESULT (STDMETHODCALLTYPE *GetAttributesOf)(
        IShellFolder* This,
        UINT cidl,
        LPCITEMIDLIST *apidl,
        SFGAOF *rgfInOut);

    HRESULT (STDMETHODCALLTYPE *GetUIObjectOf)(
        IShellFolder* This,
        HWND hwndOwner,
        UINT cidl,
        LPCITEMIDLIST *apidl,
        REFIID riid,
        UINT *prgfInOut,
        void **ppvOut);

    HRESULT (STDMETHODCALLTYPE *GetDisplayNameOf)(
        IShellFolder* This,
        LPCITEMIDLIST pidl,
        SHGDNF uFlags,
        STRRET *lpName);

    HRESULT (STDMETHODCALLTYPE *SetNameOf)(
        IShellFolder* This,
        HWND hwnd,
        LPCITEMIDLIST pidl,
        LPCOLESTR lpszName,
        SHGDNF uFlags,
        LPITEMIDLIST *ppidlOut);

    END_INTERFACE
} IShellFolderVtbl;
interface IShellFolder {
    CONST_VTBL IShellFolderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellFolder_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellFolder_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellFolder_Release(p) (p)->lpVtbl->Release(p)
/*** IShellFolder methods ***/
#define IShellFolder_ParseDisplayName(p,a,b,c,d,e,f) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d,e,f)
#define IShellFolder_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
#define IShellFolder_BindToObject(p,a,b,c,d) (p)->lpVtbl->BindToObject(p,a,b,c,d)
#define IShellFolder_BindToStorage(p,a,b,c,d) (p)->lpVtbl->BindToStorage(p,a,b,c,d)
#define IShellFolder_CompareIDs(p,a,b,c) (p)->lpVtbl->CompareIDs(p,a,b,c)
#define IShellFolder_CreateViewObject(p,a,b,c) (p)->lpVtbl->CreateViewObject(p,a,b,c)
#define IShellFolder_GetAttributesOf(p,a,b,c) (p)->lpVtbl->GetAttributesOf(p,a,b,c)
#define IShellFolder_GetUIObjectOf(p,a,b,c,d,e,f) (p)->lpVtbl->GetUIObjectOf(p,a,b,c,d,e,f)
#define IShellFolder_GetDisplayNameOf(p,a,b,c) (p)->lpVtbl->GetDisplayNameOf(p,a,b,c)
#define IShellFolder_SetNameOf(p,a,b,c,d,e) (p)->lpVtbl->SetNameOf(p,a,b,c,d,e)
#endif

#endif

HRESULT CALLBACK IShellFolder_ParseDisplayName_Proxy(
    IShellFolder* This,
    HWND hwndOwner,
    LPBC pbcReserved,
    LPOLESTR lpszDisplayName,
    ULONG *pchEaten,
    LPITEMIDLIST *ppidl,
    ULONG *pdwAttributes);
void __RPC_STUB IShellFolder_ParseDisplayName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder_EnumObjects_Proxy(
    IShellFolder* This,
    HWND hwndOwner,
    SHCONTF grfFlags,
    IEnumIDList **ppenumIDList);
void __RPC_STUB IShellFolder_EnumObjects_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder_BindToObject_Proxy(
    IShellFolder* This,
    LPCITEMIDLIST pidl,
    LPBC pbcReserved,
    REFIID riid,
    void **ppvOut);
void __RPC_STUB IShellFolder_BindToObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder_BindToStorage_Proxy(
    IShellFolder* This,
    LPCITEMIDLIST pidl,
    LPBC pbcReserved,
    REFIID riid,
    void **ppvObj);
void __RPC_STUB IShellFolder_BindToStorage_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder_CompareIDs_Proxy(
    IShellFolder* This,
    LPARAM lParam,
    LPCITEMIDLIST pidl1,
    LPCITEMIDLIST pidl2);
void __RPC_STUB IShellFolder_CompareIDs_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder_CreateViewObject_Proxy(
    IShellFolder* This,
    HWND hwndOwner,
    REFIID riid,
    void **ppvOut);
void __RPC_STUB IShellFolder_CreateViewObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder_GetAttributesOf_Proxy(
    IShellFolder* This,
    UINT cidl,
    LPCITEMIDLIST *apidl,
    SFGAOF *rgfInOut);
void __RPC_STUB IShellFolder_GetAttributesOf_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder_GetUIObjectOf_Proxy(
    IShellFolder* This,
    HWND hwndOwner,
    UINT cidl,
    LPCITEMIDLIST *apidl,
    REFIID riid,
    UINT *prgfInOut,
    void **ppvOut);
void __RPC_STUB IShellFolder_GetUIObjectOf_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder_GetDisplayNameOf_Proxy(
    IShellFolder* This,
    LPCITEMIDLIST pidl,
    SHGDNF uFlags,
    STRRET *lpName);
void __RPC_STUB IShellFolder_GetDisplayNameOf_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder_SetNameOf_Proxy(
    IShellFolder* This,
    HWND hwnd,
    LPCITEMIDLIST pidl,
    LPCOLESTR lpszName,
    SHGDNF uFlags,
    LPITEMIDLIST *ppidlOut);
void __RPC_STUB IShellFolder_SetNameOf_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellFolder_INTERFACE_DEFINED__ */

#ifndef __IEnumExtraSearch_FWD_DEFINED__
#define __IEnumExtraSearch_FWD_DEFINED__
typedef interface IEnumExtraSearch IEnumExtraSearch;
#endif

typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
typedef struct __WIDL_shobjidl_generated_name_00000000 {
    GUID guidSearch;
    WCHAR wszFriendlyName[80];
    WCHAR wszUrl[2084];
} EXTRASEARCH;
typedef struct __WIDL_shobjidl_generated_name_00000000 *LPEXTRASEARCH;
/*****************************************************************************
 * IEnumExtraSearch interface
 */
#ifndef __IEnumExtraSearch_INTERFACE_DEFINED__
#define __IEnumExtraSearch_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumExtraSearch, 0x0e700be1, 0x9db6, 0x11d1, 0xa1,0xce, 0x00,0xc0,0x4f,0xd7,0x5d,0x13);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IEnumExtraSearch : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        EXTRASEARCH *rgelt,
        ULONG *pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumExtraSearch **ppenum) = 0;

};
#else
typedef struct IEnumExtraSearchVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IEnumExtraSearch* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IEnumExtraSearch* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IEnumExtraSearch* This);

    /*** IEnumExtraSearch methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumExtraSearch* This,
        ULONG celt,
        EXTRASEARCH *rgelt,
        ULONG *pceltFetched);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumExtraSearch* This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumExtraSearch* This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumExtraSearch* This,
        IEnumExtraSearch **ppenum);

    END_INTERFACE
} IEnumExtraSearchVtbl;
interface IEnumExtraSearch {
    CONST_VTBL IEnumExtraSearchVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumExtraSearch_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IEnumExtraSearch_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IEnumExtraSearch_Release(p) (p)->lpVtbl->Release(p)
/*** IEnumExtraSearch methods ***/
#define IEnumExtraSearch_Next(p,a,b,c) (p)->lpVtbl->Next(p,a,b,c)
#define IEnumExtraSearch_Skip(p,a) (p)->lpVtbl->Skip(p,a)
#define IEnumExtraSearch_Reset(p) (p)->lpVtbl->Reset(p)
#define IEnumExtraSearch_Clone(p,a) (p)->lpVtbl->Clone(p,a)
#endif

#endif

HRESULT CALLBACK IEnumExtraSearch_Next_Proxy(
    IEnumExtraSearch* This,
    ULONG celt,
    EXTRASEARCH *rgelt,
    ULONG *pceltFetched);
void __RPC_STUB IEnumExtraSearch_Next_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumExtraSearch_Skip_Proxy(
    IEnumExtraSearch* This,
    ULONG celt);
void __RPC_STUB IEnumExtraSearch_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumExtraSearch_Reset_Proxy(
    IEnumExtraSearch* This);
void __RPC_STUB IEnumExtraSearch_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumExtraSearch_Clone_Proxy(
    IEnumExtraSearch* This,
    IEnumExtraSearch **ppenum);
void __RPC_STUB IEnumExtraSearch_Clone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IEnumExtraSearch_INTERFACE_DEFINED__ */

#ifndef __IShellFolder2_FWD_DEFINED__
#define __IShellFolder2_FWD_DEFINED__
typedef interface IShellFolder2 IShellFolder2;
#endif

typedef enum __WIDL_shobjidl_generated_name_00000001 {
    SHCOLSTATE_TYPE_STR = 0x1,
    SHCOLSTATE_TYPE_INT = 0x2,
    SHCOLSTATE_TYPE_DATE = 0x3,
    SHCOLSTATE_TYPEMASK = 0xf,
    SHCOLSTATE_ONBYDEFAULT = 0x10,
    SHCOLSTATE_SLOW = 0x20,
    SHCOLSTATE_EXTENDED = 0x40,
    SHCOLSTATE_SECONDARYUI = 0x80,
    SHCOLSTATE_HIDDEN = 0x100,
    SHCOLSTATE_PREFER_VARCMP = 0x200
} SHCOLSTATE;
typedef DWORD SHCOLSTATEF;
typedef struct __WIDL_shobjidl_generated_name_00000002 {
    GUID fmtid;
    DWORD pid;
} SHCOLUMNID;
typedef struct __WIDL_shobjidl_generated_name_00000002 *LPSHCOLUMNID;
typedef const SHCOLUMNID *LPCSHCOLUMNID;
/*****************************************************************************
 * IShellFolder2 interface
 */
#ifndef __IShellFolder2_INTERFACE_DEFINED__
#define __IShellFolder2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellFolder2, 0x93f2f68c, 0x1d1b, 0x11d3, 0xa3,0x0e, 0x00,0xc0,0x4f,0x79,0xab,0xd1);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellFolder2 : public IShellFolder
{
    virtual HRESULT STDMETHODCALLTYPE GetDefaultSearchGUID(
        GUID *lpguid) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumSearches(
        IEnumExtraSearch **ppenum) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultColumn(
        DWORD dwReserved,
        ULONG *pSort,
        ULONG *pDisplay) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultColumnState(
        UINT iColumn,
        SHCOLSTATEF *pcsFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDetailsEx(
        LPCITEMIDLIST pidl,
        const SHCOLUMNID *pscid,
        VARIANT *pv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDetailsOf(
        LPCITEMIDLIST pidl,
        UINT iColumn,
        SHELLDETAILS *psd) = 0;

    virtual HRESULT STDMETHODCALLTYPE MapColumnToSCID(
        UINT iColumn,
        SHCOLUMNID *pscid) = 0;

};
#else
typedef struct IShellFolder2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellFolder2* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellFolder2* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellFolder2* This);

    /*** IShellFolder methods ***/
    HRESULT (STDMETHODCALLTYPE *ParseDisplayName)(
        IShellFolder2* This,
        HWND hwndOwner,
        LPBC pbcReserved,
        LPOLESTR lpszDisplayName,
        ULONG *pchEaten,
        LPITEMIDLIST *ppidl,
        ULONG *pdwAttributes);

    HRESULT (STDMETHODCALLTYPE *EnumObjects)(
        IShellFolder2* This,
        HWND hwndOwner,
        SHCONTF grfFlags,
        IEnumIDList **ppenumIDList);

    HRESULT (STDMETHODCALLTYPE *BindToObject)(
        IShellFolder2* This,
        LPCITEMIDLIST pidl,
        LPBC pbcReserved,
        REFIID riid,
        void **ppvOut);

    HRESULT (STDMETHODCALLTYPE *BindToStorage)(
        IShellFolder2* This,
        LPCITEMIDLIST pidl,
        LPBC pbcReserved,
        REFIID riid,
        void **ppvObj);

    HRESULT (STDMETHODCALLTYPE *CompareIDs)(
        IShellFolder2* This,
        LPARAM lParam,
        LPCITEMIDLIST pidl1,
        LPCITEMIDLIST pidl2);

    HRESULT (STDMETHODCALLTYPE *CreateViewObject)(
        IShellFolder2* This,
        HWND hwndOwner,
        REFIID riid,
        void **ppvOut);

    HRESULT (STDMETHODCALLTYPE *GetAttributesOf)(
        IShellFolder2* This,
        UINT cidl,
        LPCITEMIDLIST *apidl,
        SFGAOF *rgfInOut);

    HRESULT (STDMETHODCALLTYPE *GetUIObjectOf)(
        IShellFolder2* This,
        HWND hwndOwner,
        UINT cidl,
        LPCITEMIDLIST *apidl,
        REFIID riid,
        UINT *prgfInOut,
        void **ppvOut);

    HRESULT (STDMETHODCALLTYPE *GetDisplayNameOf)(
        IShellFolder2* This,
        LPCITEMIDLIST pidl,
        SHGDNF uFlags,
        STRRET *lpName);

    HRESULT (STDMETHODCALLTYPE *SetNameOf)(
        IShellFolder2* This,
        HWND hwnd,
        LPCITEMIDLIST pidl,
        LPCOLESTR lpszName,
        SHGDNF uFlags,
        LPITEMIDLIST *ppidlOut);

    /*** IShellFolder2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDefaultSearchGUID)(
        IShellFolder2* This,
        GUID *lpguid);

    HRESULT (STDMETHODCALLTYPE *EnumSearches)(
        IShellFolder2* This,
        IEnumExtraSearch **ppenum);

    HRESULT (STDMETHODCALLTYPE *GetDefaultColumn)(
        IShellFolder2* This,
        DWORD dwReserved,
        ULONG *pSort,
        ULONG *pDisplay);

    HRESULT (STDMETHODCALLTYPE *GetDefaultColumnState)(
        IShellFolder2* This,
        UINT iColumn,
        SHCOLSTATEF *pcsFlags);

    HRESULT (STDMETHODCALLTYPE *GetDetailsEx)(
        IShellFolder2* This,
        LPCITEMIDLIST pidl,
        const SHCOLUMNID *pscid,
        VARIANT *pv);

    HRESULT (STDMETHODCALLTYPE *GetDetailsOf)(
        IShellFolder2* This,
        LPCITEMIDLIST pidl,
        UINT iColumn,
        SHELLDETAILS *psd);

    HRESULT (STDMETHODCALLTYPE *MapColumnToSCID)(
        IShellFolder2* This,
        UINT iColumn,
        SHCOLUMNID *pscid);

    END_INTERFACE
} IShellFolder2Vtbl;
interface IShellFolder2 {
    CONST_VTBL IShellFolder2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellFolder2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellFolder2_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellFolder2_Release(p) (p)->lpVtbl->Release(p)
/*** IShellFolder methods ***/
#define IShellFolder2_ParseDisplayName(p,a,b,c,d,e,f) (p)->lpVtbl->ParseDisplayName(p,a,b,c,d,e,f)
#define IShellFolder2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
#define IShellFolder2_BindToObject(p,a,b,c,d) (p)->lpVtbl->BindToObject(p,a,b,c,d)
#define IShellFolder2_BindToStorage(p,a,b,c,d) (p)->lpVtbl->BindToStorage(p,a,b,c,d)
#define IShellFolder2_CompareIDs(p,a,b,c) (p)->lpVtbl->CompareIDs(p,a,b,c)
#define IShellFolder2_CreateViewObject(p,a,b,c) (p)->lpVtbl->CreateViewObject(p,a,b,c)
#define IShellFolder2_GetAttributesOf(p,a,b,c) (p)->lpVtbl->GetAttributesOf(p,a,b,c)
#define IShellFolder2_GetUIObjectOf(p,a,b,c,d,e,f) (p)->lpVtbl->GetUIObjectOf(p,a,b,c,d,e,f)
#define IShellFolder2_GetDisplayNameOf(p,a,b,c) (p)->lpVtbl->GetDisplayNameOf(p,a,b,c)
#define IShellFolder2_SetNameOf(p,a,b,c,d,e) (p)->lpVtbl->SetNameOf(p,a,b,c,d,e)
/*** IShellFolder2 methods ***/
#define IShellFolder2_GetDefaultSearchGUID(p,a) (p)->lpVtbl->GetDefaultSearchGUID(p,a)
#define IShellFolder2_EnumSearches(p,a) (p)->lpVtbl->EnumSearches(p,a)
#define IShellFolder2_GetDefaultColumn(p,a,b,c) (p)->lpVtbl->GetDefaultColumn(p,a,b,c)
#define IShellFolder2_GetDefaultColumnState(p,a,b) (p)->lpVtbl->GetDefaultColumnState(p,a,b)
#define IShellFolder2_GetDetailsEx(p,a,b,c) (p)->lpVtbl->GetDetailsEx(p,a,b,c)
#define IShellFolder2_GetDetailsOf(p,a,b,c) (p)->lpVtbl->GetDetailsOf(p,a,b,c)
#define IShellFolder2_MapColumnToSCID(p,a,b) (p)->lpVtbl->MapColumnToSCID(p,a,b)
#endif

#endif

HRESULT CALLBACK IShellFolder2_GetDefaultSearchGUID_Proxy(
    IShellFolder2* This,
    GUID *lpguid);
void __RPC_STUB IShellFolder2_GetDefaultSearchGUID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder2_EnumSearches_Proxy(
    IShellFolder2* This,
    IEnumExtraSearch **ppenum);
void __RPC_STUB IShellFolder2_EnumSearches_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder2_GetDefaultColumn_Proxy(
    IShellFolder2* This,
    DWORD dwReserved,
    ULONG *pSort,
    ULONG *pDisplay);
void __RPC_STUB IShellFolder2_GetDefaultColumn_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder2_GetDefaultColumnState_Proxy(
    IShellFolder2* This,
    UINT iColumn,
    SHCOLSTATEF *pcsFlags);
void __RPC_STUB IShellFolder2_GetDefaultColumnState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder2_GetDetailsEx_Proxy(
    IShellFolder2* This,
    LPCITEMIDLIST pidl,
    const SHCOLUMNID *pscid,
    VARIANT *pv);
void __RPC_STUB IShellFolder2_GetDetailsEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder2_GetDetailsOf_Proxy(
    IShellFolder2* This,
    LPCITEMIDLIST pidl,
    UINT iColumn,
    SHELLDETAILS *psd);
void __RPC_STUB IShellFolder2_GetDetailsOf_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder2_MapColumnToSCID_Proxy(
    IShellFolder2* This,
    UINT iColumn,
    SHCOLUMNID *pscid);
void __RPC_STUB IShellFolder2_MapColumnToSCID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellFolder2_INTERFACE_DEFINED__ */

typedef char *LPVIEWSETTINGS;
typedef enum __WIDL_shobjidl_generated_name_00000003 {
    FWF_AUTOARRANGE = 0x1,
    FWF_ABBREVIATEDNAMES = 0x2,
    FWF_SNAPTOGRID = 0x4,
    FWF_OWNERDATA = 0x8,
    FWF_BESTFITWINDOW = 0x10,
    FWF_DESKTOP = 0x20,
    FWF_SINGLESEL = 0x40,
    FWF_NOSUBFOLDERS = 0x80,
    FWF_TRANSPARENT = 0x100,
    FWF_NOCLIENTEDGE = 0x200,
    FWF_NOSCROLL = 0x400,
    FWF_ALIGNLEFT = 0x800,
    FWF_NOICONS = 0x1000,
    FWF_SHOWSELALWAYS = 0x2000,
    FWF_NOVISIBLE = 0x4000,
    FWF_SINGLECLICKACTIVATE = 0x8000,
    FWF_NOWEBVIEW = 0x10000,
    FWF_HIDEFILENAMES = 0x20000,
    FWF_CHECKSELECT = 0x40000
} FOLDERFLAGS;
typedef enum __WIDL_shobjidl_generated_name_00000004 {
    FVM_ICON = 1,
    FVM_FIRST = FVM_ICON,
    FVM_SMALLICON = 2,
    FVM_LIST = 3,
    FVM_DETAILS = 4,
    FVM_THUMBNAIL = 5,
    FVM_TILE = 6,
    FVM_THUMBSTRIP = 7,
    FVM_LAST = FVM_THUMBSTRIP
} FOLDERVIEWMODE;
typedef struct __WIDL_shobjidl_generated_name_00000005 {
    UINT ViewMode;
    UINT fFlags;
} FOLDERSETTINGS;
typedef struct __WIDL_shobjidl_generated_name_00000005 *PFOLDERSETTINGS;
typedef struct __WIDL_shobjidl_generated_name_00000005 *LPFOLDERSETTINGS;
typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
#ifndef __IShellBrowser_FWD_DEFINED__
#define __IShellBrowser_FWD_DEFINED__
typedef interface IShellBrowser IShellBrowser;
#endif

#ifndef __IShellView_FWD_DEFINED__
#define __IShellView_FWD_DEFINED__
typedef interface IShellView IShellView;
#endif

typedef IShellView *LPSHELLVIEW;
#define SVSI_DESELECT       0x00000000
#define SVSI_SELECT         0x00000001
#define SVSI_EDIT           0x00000003
#define SVSI_DESELECTOTHERS 0x00000004
#define SVSI_ENSUREVISIBLE  0x00000008
#define SVSI_FOCUSED        0x00000010
#define SVSI_TRANSLATEPT    0x00000020
#define SVSI_SELECTIONMARK  0x00000040
#define SVSI_POSITIONITEM   0x00000080
#define SVSI_CHECK          0x00000100
#define SVSI_NOSTATECHANGE  0x80000000
typedef UINT SVSIF;
typedef enum __WIDL_shobjidl_generated_name_00000006 {
    SVGIO_BACKGROUND = 0x0,
    SVGIO_SELECTION = 0x1,
    SVGIO_ALLVIEW = 0x2,
    SVGIO_CHECKED = 0x3,
    SVGIO_TYPE_MASK = 0xf,
    SVGIO_FLAG_VIEWORDER = 0x80000000
} SVGIO;
typedef enum __WIDL_shobjidl_generated_name_00000007 {
    SVUIA_DEACTIVATE = 0,
    SVUIA_ACTIVATE_NOFOCUS = 1,
    SVUIA_ACTIVATE_FOCUS = 2,
    SVUIA_INPLACEACTIVATE = 3
} SVUIA_STATUS;
/*****************************************************************************
 * IShellView interface
 */
#ifndef __IShellView_INTERFACE_DEFINED__
#define __IShellView_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellView, 0x000214e3, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellView : public IOleWindow
{
    virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
        MSG *pmsg) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableModeless(
        BOOL fEnable) = 0;

    virtual HRESULT STDMETHODCALLTYPE UIActivate(
        UINT uState) = 0;

    virtual HRESULT STDMETHODCALLTYPE Refresh(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateViewWindow(
        IShellView *psvPrevious,
        LPCFOLDERSETTINGS lpfs,
        IShellBrowser *psb,
        RECT *prcView,
        HWND *phWnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE DestroyViewWindow(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentInfo(
        LPFOLDERSETTINGS lpfs) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddPropertySheetPages(
        DWORD dwReserved,
        LPFNSVADDPROPSHEETPAGE pfn,
        LPARAM lparam) = 0;

    virtual HRESULT STDMETHODCALLTYPE SaveViewState(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SelectItem(
        LPCITEMIDLIST pidlItem,
        SVSIF uFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetItemObject(
        UINT uItem,
        REFIID riid,
        void **ppv) = 0;

};
#else
typedef struct IShellViewVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellView* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellView* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellView* This);

    /*** IOleWindow methods ***/
    HRESULT (STDMETHODCALLTYPE *GetWindow)(
        IShellView* This,
        HWND *phwnd);

    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
        IShellView* This,
        BOOL fEnterMode);

    /*** IShellView methods ***/
    HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)(
        IShellView* This,
        MSG *pmsg);

    HRESULT (STDMETHODCALLTYPE *EnableModeless)(
        IShellView* This,
        BOOL fEnable);

    HRESULT (STDMETHODCALLTYPE *UIActivate)(
        IShellView* This,
        UINT uState);

    HRESULT (STDMETHODCALLTYPE *Refresh)(
        IShellView* This);

    HRESULT (STDMETHODCALLTYPE *CreateViewWindow)(
        IShellView* This,
        IShellView *psvPrevious,
        LPCFOLDERSETTINGS lpfs,
        IShellBrowser *psb,
        RECT *prcView,
        HWND *phWnd);

    HRESULT (STDMETHODCALLTYPE *DestroyViewWindow)(
        IShellView* This);

    HRESULT (STDMETHODCALLTYPE *GetCurrentInfo)(
        IShellView* This,
        LPFOLDERSETTINGS lpfs);

    HRESULT (STDMETHODCALLTYPE *AddPropertySheetPages)(
        IShellView* This,
        DWORD dwReserved,
        LPFNSVADDPROPSHEETPAGE pfn,
        LPARAM lparam);

    HRESULT (STDMETHODCALLTYPE *SaveViewState)(
        IShellView* This);

    HRESULT (STDMETHODCALLTYPE *SelectItem)(
        IShellView* This,
        LPCITEMIDLIST pidlItem,
        SVSIF uFlags);

    HRESULT (STDMETHODCALLTYPE *GetItemObject)(
        IShellView* This,
        UINT uItem,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} IShellViewVtbl;
interface IShellView {
    CONST_VTBL IShellViewVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellView_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellView_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellView_Release(p) (p)->lpVtbl->Release(p)
/*** IOleWindow methods ***/
#define IShellView_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
#define IShellView_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
/*** IShellView methods ***/
#define IShellView_TranslateAccelerator(p,a) (p)->lpVtbl->TranslateAccelerator(p,a)
#define IShellView_EnableModeless(p,a) (p)->lpVtbl->EnableModeless(p,a)
#define IShellView_UIActivate(p,a) (p)->lpVtbl->UIActivate(p,a)
#define IShellView_Refresh(p) (p)->lpVtbl->Refresh(p)
#define IShellView_CreateViewWindow(p,a,b,c,d,e) (p)->lpVtbl->CreateViewWindow(p,a,b,c,d,e)
#define IShellView_DestroyViewWindow(p) (p)->lpVtbl->DestroyViewWindow(p)
#define IShellView_GetCurrentInfo(p,a) (p)->lpVtbl->GetCurrentInfo(p,a)
#define IShellView_AddPropertySheetPages(p,a,b,c) (p)->lpVtbl->AddPropertySheetPages(p,a,b,c)
#define IShellView_SaveViewState(p) (p)->lpVtbl->SaveViewState(p)
#define IShellView_SelectItem(p,a,b) (p)->lpVtbl->SelectItem(p,a,b)
#define IShellView_GetItemObject(p,a,b,c) (p)->lpVtbl->GetItemObject(p,a,b,c)
#endif

#endif

HRESULT CALLBACK IShellView_TranslateAccelerator_Proxy(
    IShellView* This,
    MSG *pmsg);
void __RPC_STUB IShellView_TranslateAccelerator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellView_EnableModeless_Proxy(
    IShellView* This,
    BOOL fEnable);
void __RPC_STUB IShellView_EnableModeless_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellView_UIActivate_Proxy(
    IShellView* This,
    UINT uState);
void __RPC_STUB IShellView_UIActivate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellView_Refresh_Proxy(
    IShellView* This);
void __RPC_STUB IShellView_Refresh_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellView_CreateViewWindow_Proxy(
    IShellView* This,
    IShellView *psvPrevious,
    LPCFOLDERSETTINGS lpfs,
    IShellBrowser *psb,
    RECT *prcView,
    HWND *phWnd);
void __RPC_STUB IShellView_CreateViewWindow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellView_DestroyViewWindow_Proxy(
    IShellView* This);
void __RPC_STUB IShellView_DestroyViewWindow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellView_GetCurrentInfo_Proxy(
    IShellView* This,
    LPFOLDERSETTINGS lpfs);
void __RPC_STUB IShellView_GetCurrentInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellView_SaveViewState_Proxy(
    IShellView* This);
void __RPC_STUB IShellView_SaveViewState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellView_SelectItem_Proxy(
    IShellView* This,
    LPCITEMIDLIST pidlItem,
    SVSIF uFlags);
void __RPC_STUB IShellView_SelectItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellView_GetItemObject_Proxy(
    IShellView* This,
    UINT uItem,
    REFIID riid,
    void **ppv);
void __RPC_STUB IShellView_GetItemObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellView_INTERFACE_DEFINED__ */

typedef IShellBrowser *LPSHELLBROWSER;
#define SBSP_DEFBROWSER            0x00000000
#define SBSP_SAMEBROWSER           0x00000001
#define SBSP_NEWBROWSER            0x00000002
#define SBSP_DEFMODE               0x00000000
#define SBSP_OPENMODE              0x00000010
#define SBSP_EXPLOREMODE           0x00000020
#define SBSP_HELPMODE              0x00000040
#define SBSP_NOTRANSFERHIST        0x00000080
#define SBSP_ABSOLUTE              0x00000000
#define SBSP_RELATIVE              0x00001000
#define SBSP_PARENT                0x00002000
#define SBSP_NAVIGATEBACK          0x00004000
#define SBSP_NAVIGATEFORWARD       0x00008000
#define SBSP_ALLOW_AUTONAVIGATE    0x00010000
#define SBSP_NOAUTOSELECT          0x04000000
#define SBSP_WRITENOHISTORY        0x08000000
#define SBSP_REDIRECT              0x40000000
#define SBSP_INITIATEDBYHLINKFRAME 0x80000000
#define FCW_STATUS      0x0001
#define FCW_TOOLBAR     0x0002
#define FCW_TREE        0x0003
#define FCW_INTERNETBAR 0x0006
#define FCW_PROGRESS    0x0008
#define FCT_MERGE       0x0001
#define FCT_CONFIGABLE  0x0002
#define FCT_ADDTOEND    0x0004
#if 0
typedef LPARAM LPTBBUTTONSB;
#else
#include <commctrl.h>
typedef LPTBBUTTON LPTBBUTTONSB;
#endif
/*****************************************************************************
 * IShellBrowser interface
 */
#ifndef __IShellBrowser_INTERFACE_DEFINED__
#define __IShellBrowser_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellBrowser, 0x000214e2, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellBrowser : public IOleWindow
{
    virtual HRESULT STDMETHODCALLTYPE InsertMenusSB(
        HMENU hmenuShared,
        LPOLEMENUGROUPWIDTHS lpMenuWidths) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMenuSB(
        HMENU hmenuShared,
        HOLEMENU holemenuReserved,
        HWND hwndActiveObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveMenusSB(
        HMENU hmenuShared) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetStatusTextSB(
        LPCOLESTR pszStatusText) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableModelessSB(
        BOOL fEnable) = 0;

    virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorSB(
        MSG *pmsg,
        WORD wID) = 0;

    virtual HRESULT STDMETHODCALLTYPE BrowseObject(
        LPCITEMIDLIST pidl,
        UINT wFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetViewStateStream(
        DWORD grfMode,
        IStream **ppStrm) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetControlWindow(
        UINT id,
        HWND *phwnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE SendControlMsg(
        UINT id,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *pret) = 0;

    virtual HRESULT STDMETHODCALLTYPE QueryActiveShellView(
        IShellView **ppshv) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnViewWindowActive(
        IShellView *pshv) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetToolbarItems(
        LPTBBUTTONSB lpButtons,
        UINT nButtons,
        UINT uFlags) = 0;

};
#else
typedef struct IShellBrowserVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellBrowser* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellBrowser* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellBrowser* This);

    /*** IOleWindow methods ***/
    HRESULT (STDMETHODCALLTYPE *GetWindow)(
        IShellBrowser* This,
        HWND *phwnd);

    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
        IShellBrowser* This,
        BOOL fEnterMode);

    /*** IShellBrowser methods ***/
    HRESULT (STDMETHODCALLTYPE *InsertMenusSB)(
        IShellBrowser* This,
        HMENU hmenuShared,
        LPOLEMENUGROUPWIDTHS lpMenuWidths);

    HRESULT (STDMETHODCALLTYPE *SetMenuSB)(
        IShellBrowser* This,
        HMENU hmenuShared,
        HOLEMENU holemenuReserved,
        HWND hwndActiveObject);

    HRESULT (STDMETHODCALLTYPE *RemoveMenusSB)(
        IShellBrowser* This,
        HMENU hmenuShared);

    HRESULT (STDMETHODCALLTYPE *SetStatusTextSB)(
        IShellBrowser* This,
        LPCOLESTR pszStatusText);

    HRESULT (STDMETHODCALLTYPE *EnableModelessSB)(
        IShellBrowser* This,
        BOOL fEnable);

    HRESULT (STDMETHODCALLTYPE *TranslateAcceleratorSB)(
        IShellBrowser* This,
        MSG *pmsg,
        WORD wID);

    HRESULT (STDMETHODCALLTYPE *BrowseObject)(
        IShellBrowser* This,
        LPCITEMIDLIST pidl,
        UINT wFlags);

    HRESULT (STDMETHODCALLTYPE *GetViewStateStream)(
        IShellBrowser* This,
        DWORD grfMode,
        IStream **ppStrm);

    HRESULT (STDMETHODCALLTYPE *GetControlWindow)(
        IShellBrowser* This,
        UINT id,
        HWND *phwnd);

    HRESULT (STDMETHODCALLTYPE *SendControlMsg)(
        IShellBrowser* This,
        UINT id,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *pret);

    HRESULT (STDMETHODCALLTYPE *QueryActiveShellView)(
        IShellBrowser* This,
        IShellView **ppshv);

    HRESULT (STDMETHODCALLTYPE *OnViewWindowActive)(
        IShellBrowser* This,
        IShellView *pshv);

    HRESULT (STDMETHODCALLTYPE *SetToolbarItems)(
        IShellBrowser* This,
        LPTBBUTTONSB lpButtons,
        UINT nButtons,
        UINT uFlags);

    END_INTERFACE
} IShellBrowserVtbl;
interface IShellBrowser {
    CONST_VTBL IShellBrowserVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellBrowser_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellBrowser_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellBrowser_Release(p) (p)->lpVtbl->Release(p)
/*** IOleWindow methods ***/
#define IShellBrowser_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
#define IShellBrowser_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
/*** IShellBrowser methods ***/
#define IShellBrowser_InsertMenusSB(p,a,b) (p)->lpVtbl->InsertMenusSB(p,a,b)
#define IShellBrowser_SetMenuSB(p,a,b,c) (p)->lpVtbl->SetMenuSB(p,a,b,c)
#define IShellBrowser_RemoveMenusSB(p,a) (p)->lpVtbl->RemoveMenusSB(p,a)
#define IShellBrowser_SetStatusTextSB(p,a) (p)->lpVtbl->SetStatusTextSB(p,a)
#define IShellBrowser_EnableModelessSB(p,a) (p)->lpVtbl->EnableModelessSB(p,a)
#define IShellBrowser_TranslateAcceleratorSB(p,a,b) (p)->lpVtbl->TranslateAcceleratorSB(p,a,b)
#define IShellBrowser_BrowseObject(p,a,b) (p)->lpVtbl->BrowseObject(p,a,b)
#define IShellBrowser_GetViewStateStream(p,a,b) (p)->lpVtbl->GetViewStateStream(p,a,b)
#define IShellBrowser_GetControlWindow(p,a,b) (p)->lpVtbl->GetControlWindow(p,a,b)
#define IShellBrowser_SendControlMsg(p,a,b,c,d,e) (p)->lpVtbl->SendControlMsg(p,a,b,c,d,e)
#define IShellBrowser_QueryActiveShellView(p,a) (p)->lpVtbl->QueryActiveShellView(p,a)
#define IShellBrowser_OnViewWindowActive(p,a) (p)->lpVtbl->OnViewWindowActive(p,a)
#define IShellBrowser_SetToolbarItems(p,a,b,c) (p)->lpVtbl->SetToolbarItems(p,a,b,c)
#endif

#endif

HRESULT CALLBACK IShellBrowser_InsertMenusSB_Proxy(
    IShellBrowser* This,
    HMENU hmenuShared,
    LPOLEMENUGROUPWIDTHS lpMenuWidths);
void __RPC_STUB IShellBrowser_InsertMenusSB_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellBrowser_SetMenuSB_Proxy(
    IShellBrowser* This,
    HMENU hmenuShared,
    HOLEMENU holemenuReserved,
    HWND hwndActiveObject);
void __RPC_STUB IShellBrowser_SetMenuSB_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellBrowser_RemoveMenusSB_Proxy(
    IShellBrowser* This,
    HMENU hmenuShared);
void __RPC_STUB IShellBrowser_RemoveMenusSB_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellBrowser_SetStatusTextSB_Proxy(
    IShellBrowser* This,
    LPCOLESTR pszStatusText);
void __RPC_STUB IShellBrowser_SetStatusTextSB_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellBrowser_EnableModelessSB_Proxy(
    IShellBrowser* This,
    BOOL fEnable);
void __RPC_STUB IShellBrowser_EnableModelessSB_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellBrowser_TranslateAcceleratorSB_Proxy(
    IShellBrowser* This,
    MSG *pmsg,
    WORD wID);
void __RPC_STUB IShellBrowser_TranslateAcceleratorSB_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellBrowser_BrowseObject_Proxy(
    IShellBrowser* This,
    LPCITEMIDLIST pidl,
    UINT wFlags);
void __RPC_STUB IShellBrowser_BrowseObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellBrowser_GetViewStateStream_Proxy(
    IShellBrowser* This,
    DWORD grfMode,
    IStream **ppStrm);
void __RPC_STUB IShellBrowser_GetViewStateStream_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellBrowser_GetControlWindow_Proxy(
    IShellBrowser* This,
    UINT id,
    HWND *phwnd);
void __RPC_STUB IShellBrowser_GetControlWindow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellBrowser_QueryActiveShellView_Proxy(
    IShellBrowser* This,
    IShellView **ppshv);
void __RPC_STUB IShellBrowser_QueryActiveShellView_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellBrowser_OnViewWindowActive_Proxy(
    IShellBrowser* This,
    IShellView *pshv);
void __RPC_STUB IShellBrowser_OnViewWindowActive_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellBrowser_INTERFACE_DEFINED__ */

#ifndef __IShellLinkA_FWD_DEFINED__
#define __IShellLinkA_FWD_DEFINED__
typedef interface IShellLinkA IShellLinkA;
#endif

typedef enum __WIDL_shobjidl_generated_name_00000008 {
    SLR_NO_UI = 0x1,
    SLR_ANY_MATCH = 0x2,
    SLR_UPDATE = 0x4,
    SLR_NOUPDATE = 0x8,
    SLR_NOSEARCH = 0x10,
    SLR_NOTRACK = 0x20,
    SLR_NOLINKINFO = 0x40,
    SLR_INVOKE_MSI = 0x80,
    SLR_NO_UI_WITH_MSG_PUMP = 0x101
} SLR_FLAGS;
typedef enum __WIDL_shobjidl_generated_name_00000009 {
    SLGP_SHORTPATH = 0x1,
    SLGP_UNCPRIORITY = 0x2,
    SLGP_RAWPATH = 0x4
} SLGP_FLAGS;
/*****************************************************************************
 * IShellLinkA interface
 */
#ifndef __IShellLinkA_INTERFACE_DEFINED__
#define __IShellLinkA_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellLinkA, 0x000214ee, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellLinkA : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPath(
        LPSTR pszFile,
        int cch,
        WIN32_FIND_DATAA *pfd,
        DWORD fFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIDList(
        LPITEMIDLIST *ppidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIDList(
        LPCITEMIDLIST pidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDescription(
        LPSTR pszName,
        int cch) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDescription(
        LPCSTR pszName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetWorkingDirectory(
        LPSTR pszDir,
        int cch) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWorkingDirectory(
        LPCSTR pszDir) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetArguments(
        LPSTR pszArgs,
        int cch) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetArguments(
        LPCSTR pszArgs) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHotkey(
        WORD *pwHotkey) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetHotkey(
        WORD wHotkey) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetShowCmd(
        int *piShowCmd) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetShowCmd(
        int iShowCmd) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIconLocation(
        LPSTR pszIconPath,
        int cch,
        int *piIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIconLocation(
        LPCSTR pszIconPath,
        int iIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRelativePath(
        LPCSTR pszPathRel,
        DWORD dwReserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resolve(
        HWND hwnd,
        DWORD fFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPath(
        LPCSTR pszFile) = 0;

};
#else
typedef struct IShellLinkAVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellLinkA* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellLinkA* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellLinkA* This);

    /*** IShellLinkA methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPath)(
        IShellLinkA* This,
        LPSTR pszFile,
        int cch,
        WIN32_FIND_DATAA *pfd,
        DWORD fFlags);

    HRESULT (STDMETHODCALLTYPE *GetIDList)(
        IShellLinkA* This,
        LPITEMIDLIST *ppidl);

    HRESULT (STDMETHODCALLTYPE *SetIDList)(
        IShellLinkA* This,
        LPCITEMIDLIST pidl);

    HRESULT (STDMETHODCALLTYPE *GetDescription)(
        IShellLinkA* This,
        LPSTR pszName,
        int cch);

    HRESULT (STDMETHODCALLTYPE *SetDescription)(
        IShellLinkA* This,
        LPCSTR pszName);

    HRESULT (STDMETHODCALLTYPE *GetWorkingDirectory)(
        IShellLinkA* This,
        LPSTR pszDir,
        int cch);

    HRESULT (STDMETHODCALLTYPE *SetWorkingDirectory)(
        IShellLinkA* This,
        LPCSTR pszDir);

    HRESULT (STDMETHODCALLTYPE *GetArguments)(
        IShellLinkA* This,
        LPSTR pszArgs,
        int cch);

    HRESULT (STDMETHODCALLTYPE *SetArguments)(
        IShellLinkA* This,
        LPCSTR pszArgs);

    HRESULT (STDMETHODCALLTYPE *GetHotkey)(
        IShellLinkA* This,
        WORD *pwHotkey);

    HRESULT (STDMETHODCALLTYPE *SetHotkey)(
        IShellLinkA* This,
        WORD wHotkey);

    HRESULT (STDMETHODCALLTYPE *GetShowCmd)(
        IShellLinkA* This,
        int *piShowCmd);

    HRESULT (STDMETHODCALLTYPE *SetShowCmd)(
        IShellLinkA* This,
        int iShowCmd);

    HRESULT (STDMETHODCALLTYPE *GetIconLocation)(
        IShellLinkA* This,
        LPSTR pszIconPath,
        int cch,
        int *piIcon);

    HRESULT (STDMETHODCALLTYPE *SetIconLocation)(
        IShellLinkA* This,
        LPCSTR pszIconPath,
        int iIcon);

    HRESULT (STDMETHODCALLTYPE *SetRelativePath)(
        IShellLinkA* This,
        LPCSTR pszPathRel,
        DWORD dwReserved);

    HRESULT (STDMETHODCALLTYPE *Resolve)(
        IShellLinkA* This,
        HWND hwnd,
        DWORD fFlags);

    HRESULT (STDMETHODCALLTYPE *SetPath)(
        IShellLinkA* This,
        LPCSTR pszFile);

    END_INTERFACE
} IShellLinkAVtbl;
interface IShellLinkA {
    CONST_VTBL IShellLinkAVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellLinkA_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellLinkA_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellLinkA_Release(p) (p)->lpVtbl->Release(p)
/*** IShellLinkA methods ***/
#define IShellLinkA_GetPath(p,a,b,c,d) (p)->lpVtbl->GetPath(p,a,b,c,d)
#define IShellLinkA_GetIDList(p,a) (p)->lpVtbl->GetIDList(p,a)
#define IShellLinkA_SetIDList(p,a) (p)->lpVtbl->SetIDList(p,a)
#define IShellLinkA_GetDescription(p,a,b) (p)->lpVtbl->GetDescription(p,a,b)
#define IShellLinkA_SetDescription(p,a) (p)->lpVtbl->SetDescription(p,a)
#define IShellLinkA_GetWorkingDirectory(p,a,b) (p)->lpVtbl->GetWorkingDirectory(p,a,b)
#define IShellLinkA_SetWorkingDirectory(p,a) (p)->lpVtbl->SetWorkingDirectory(p,a)
#define IShellLinkA_GetArguments(p,a,b) (p)->lpVtbl->GetArguments(p,a,b)
#define IShellLinkA_SetArguments(p,a) (p)->lpVtbl->SetArguments(p,a)
#define IShellLinkA_GetHotkey(p,a) (p)->lpVtbl->GetHotkey(p,a)
#define IShellLinkA_SetHotkey(p,a) (p)->lpVtbl->SetHotkey(p,a)
#define IShellLinkA_GetShowCmd(p,a) (p)->lpVtbl->GetShowCmd(p,a)
#define IShellLinkA_SetShowCmd(p,a) (p)->lpVtbl->SetShowCmd(p,a)
#define IShellLinkA_GetIconLocation(p,a,b,c) (p)->lpVtbl->GetIconLocation(p,a,b,c)
#define IShellLinkA_SetIconLocation(p,a,b) (p)->lpVtbl->SetIconLocation(p,a,b)
#define IShellLinkA_SetRelativePath(p,a,b) (p)->lpVtbl->SetRelativePath(p,a,b)
#define IShellLinkA_Resolve(p,a,b) (p)->lpVtbl->Resolve(p,a,b)
#define IShellLinkA_SetPath(p,a) (p)->lpVtbl->SetPath(p,a)
#endif

#endif

HRESULT CALLBACK IShellLinkA_GetPath_Proxy(
    IShellLinkA* This,
    LPSTR pszFile,
    int cch,
    WIN32_FIND_DATAA *pfd,
    DWORD fFlags);
void __RPC_STUB IShellLinkA_GetPath_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_GetIDList_Proxy(
    IShellLinkA* This,
    LPITEMIDLIST *ppidl);
void __RPC_STUB IShellLinkA_GetIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_SetIDList_Proxy(
    IShellLinkA* This,
    LPCITEMIDLIST pidl);
void __RPC_STUB IShellLinkA_SetIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_GetDescription_Proxy(
    IShellLinkA* This,
    LPSTR pszName,
    int cch);
void __RPC_STUB IShellLinkA_GetDescription_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_SetDescription_Proxy(
    IShellLinkA* This,
    LPCSTR pszName);
void __RPC_STUB IShellLinkA_SetDescription_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_GetWorkingDirectory_Proxy(
    IShellLinkA* This,
    LPSTR pszDir,
    int cch);
void __RPC_STUB IShellLinkA_GetWorkingDirectory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_SetWorkingDirectory_Proxy(
    IShellLinkA* This,
    LPCSTR pszDir);
void __RPC_STUB IShellLinkA_SetWorkingDirectory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_GetArguments_Proxy(
    IShellLinkA* This,
    LPSTR pszArgs,
    int cch);
void __RPC_STUB IShellLinkA_GetArguments_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_SetArguments_Proxy(
    IShellLinkA* This,
    LPCSTR pszArgs);
void __RPC_STUB IShellLinkA_SetArguments_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_GetHotkey_Proxy(
    IShellLinkA* This,
    WORD *pwHotkey);
void __RPC_STUB IShellLinkA_GetHotkey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_SetHotkey_Proxy(
    IShellLinkA* This,
    WORD wHotkey);
void __RPC_STUB IShellLinkA_SetHotkey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_GetShowCmd_Proxy(
    IShellLinkA* This,
    int *piShowCmd);
void __RPC_STUB IShellLinkA_GetShowCmd_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_SetShowCmd_Proxy(
    IShellLinkA* This,
    int iShowCmd);
void __RPC_STUB IShellLinkA_SetShowCmd_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_GetIconLocation_Proxy(
    IShellLinkA* This,
    LPSTR pszIconPath,
    int cch,
    int *piIcon);
void __RPC_STUB IShellLinkA_GetIconLocation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_SetIconLocation_Proxy(
    IShellLinkA* This,
    LPCSTR pszIconPath,
    int iIcon);
void __RPC_STUB IShellLinkA_SetIconLocation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_SetRelativePath_Proxy(
    IShellLinkA* This,
    LPCSTR pszPathRel,
    DWORD dwReserved);
void __RPC_STUB IShellLinkA_SetRelativePath_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_Resolve_Proxy(
    IShellLinkA* This,
    HWND hwnd,
    DWORD fFlags);
void __RPC_STUB IShellLinkA_Resolve_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkA_SetPath_Proxy(
    IShellLinkA* This,
    LPCSTR pszFile);
void __RPC_STUB IShellLinkA_SetPath_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellLinkA_INTERFACE_DEFINED__ */

#ifndef __IShellLinkW_FWD_DEFINED__
#define __IShellLinkW_FWD_DEFINED__
typedef interface IShellLinkW IShellLinkW;
#endif

/*****************************************************************************
 * IShellLinkW interface
 */
#ifndef __IShellLinkW_INTERFACE_DEFINED__
#define __IShellLinkW_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellLinkW, 0x000214f9, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellLinkW : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPath(
        LPWSTR pszFile,
        int cch,
        WIN32_FIND_DATAW *pfd,
        DWORD fFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIDList(
        LPITEMIDLIST *ppidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIDList(
        LPCITEMIDLIST pidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDescription(
        LPWSTR pszName,
        int cch) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDescription(
        LPCWSTR pszName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetWorkingDirectory(
        LPWSTR pszDir,
        int cch) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWorkingDirectory(
        LPCWSTR pszDir) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetArguments(
        LPWSTR pszArgs,
        int cch) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetArguments(
        LPCWSTR pszArgs) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHotkey(
        WORD *pwHotkey) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetHotkey(
        WORD wHotkey) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetShowCmd(
        int *piShowCmd) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetShowCmd(
        int iShowCmd) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIconLocation(
        LPWSTR pszIconPath,
        int cch,
        int *piIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIconLocation(
        LPCWSTR pszIconPath,
        int iIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRelativePath(
        LPCWSTR pszPathRel,
        DWORD dwReserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resolve(
        HWND hwnd,
        DWORD fFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPath(
        LPCWSTR pszFile) = 0;

};
#else
typedef struct IShellLinkWVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellLinkW* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellLinkW* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellLinkW* This);

    /*** IShellLinkW methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPath)(
        IShellLinkW* This,
        LPWSTR pszFile,
        int cch,
        WIN32_FIND_DATAW *pfd,
        DWORD fFlags);

    HRESULT (STDMETHODCALLTYPE *GetIDList)(
        IShellLinkW* This,
        LPITEMIDLIST *ppidl);

    HRESULT (STDMETHODCALLTYPE *SetIDList)(
        IShellLinkW* This,
        LPCITEMIDLIST pidl);

    HRESULT (STDMETHODCALLTYPE *GetDescription)(
        IShellLinkW* This,
        LPWSTR pszName,
        int cch);

    HRESULT (STDMETHODCALLTYPE *SetDescription)(
        IShellLinkW* This,
        LPCWSTR pszName);

    HRESULT (STDMETHODCALLTYPE *GetWorkingDirectory)(
        IShellLinkW* This,
        LPWSTR pszDir,
        int cch);

    HRESULT (STDMETHODCALLTYPE *SetWorkingDirectory)(
        IShellLinkW* This,
        LPCWSTR pszDir);

    HRESULT (STDMETHODCALLTYPE *GetArguments)(
        IShellLinkW* This,
        LPWSTR pszArgs,
        int cch);

    HRESULT (STDMETHODCALLTYPE *SetArguments)(
        IShellLinkW* This,
        LPCWSTR pszArgs);

    HRESULT (STDMETHODCALLTYPE *GetHotkey)(
        IShellLinkW* This,
        WORD *pwHotkey);

    HRESULT (STDMETHODCALLTYPE *SetHotkey)(
        IShellLinkW* This,
        WORD wHotkey);

    HRESULT (STDMETHODCALLTYPE *GetShowCmd)(
        IShellLinkW* This,
        int *piShowCmd);

    HRESULT (STDMETHODCALLTYPE *SetShowCmd)(
        IShellLinkW* This,
        int iShowCmd);

    HRESULT (STDMETHODCALLTYPE *GetIconLocation)(
        IShellLinkW* This,
        LPWSTR pszIconPath,
        int cch,
        int *piIcon);

    HRESULT (STDMETHODCALLTYPE *SetIconLocation)(
        IShellLinkW* This,
        LPCWSTR pszIconPath,
        int iIcon);

    HRESULT (STDMETHODCALLTYPE *SetRelativePath)(
        IShellLinkW* This,
        LPCWSTR pszPathRel,
        DWORD dwReserved);

    HRESULT (STDMETHODCALLTYPE *Resolve)(
        IShellLinkW* This,
        HWND hwnd,
        DWORD fFlags);

    HRESULT (STDMETHODCALLTYPE *SetPath)(
        IShellLinkW* This,
        LPCWSTR pszFile);

    END_INTERFACE
} IShellLinkWVtbl;
interface IShellLinkW {
    CONST_VTBL IShellLinkWVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellLinkW_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellLinkW_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellLinkW_Release(p) (p)->lpVtbl->Release(p)
/*** IShellLinkW methods ***/
#define IShellLinkW_GetPath(p,a,b,c,d) (p)->lpVtbl->GetPath(p,a,b,c,d)
#define IShellLinkW_GetIDList(p,a) (p)->lpVtbl->GetIDList(p,a)
#define IShellLinkW_SetIDList(p,a) (p)->lpVtbl->SetIDList(p,a)
#define IShellLinkW_GetDescription(p,a,b) (p)->lpVtbl->GetDescription(p,a,b)
#define IShellLinkW_SetDescription(p,a) (p)->lpVtbl->SetDescription(p,a)
#define IShellLinkW_GetWorkingDirectory(p,a,b) (p)->lpVtbl->GetWorkingDirectory(p,a,b)
#define IShellLinkW_SetWorkingDirectory(p,a) (p)->lpVtbl->SetWorkingDirectory(p,a)
#define IShellLinkW_GetArguments(p,a,b) (p)->lpVtbl->GetArguments(p,a,b)
#define IShellLinkW_SetArguments(p,a) (p)->lpVtbl->SetArguments(p,a)
#define IShellLinkW_GetHotkey(p,a) (p)->lpVtbl->GetHotkey(p,a)
#define IShellLinkW_SetHotkey(p,a) (p)->lpVtbl->SetHotkey(p,a)
#define IShellLinkW_GetShowCmd(p,a) (p)->lpVtbl->GetShowCmd(p,a)
#define IShellLinkW_SetShowCmd(p,a) (p)->lpVtbl->SetShowCmd(p,a)
#define IShellLinkW_GetIconLocation(p,a,b,c) (p)->lpVtbl->GetIconLocation(p,a,b,c)
#define IShellLinkW_SetIconLocation(p,a,b) (p)->lpVtbl->SetIconLocation(p,a,b)
#define IShellLinkW_SetRelativePath(p,a,b) (p)->lpVtbl->SetRelativePath(p,a,b)
#define IShellLinkW_Resolve(p,a,b) (p)->lpVtbl->Resolve(p,a,b)
#define IShellLinkW_SetPath(p,a) (p)->lpVtbl->SetPath(p,a)
#endif

#endif

HRESULT CALLBACK IShellLinkW_GetPath_Proxy(
    IShellLinkW* This,
    LPWSTR pszFile,
    int cch,
    WIN32_FIND_DATAW *pfd,
    DWORD fFlags);
void __RPC_STUB IShellLinkW_GetPath_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_GetIDList_Proxy(
    IShellLinkW* This,
    LPITEMIDLIST *ppidl);
void __RPC_STUB IShellLinkW_GetIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_SetIDList_Proxy(
    IShellLinkW* This,
    LPCITEMIDLIST pidl);
void __RPC_STUB IShellLinkW_SetIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_GetDescription_Proxy(
    IShellLinkW* This,
    LPWSTR pszName,
    int cch);
void __RPC_STUB IShellLinkW_GetDescription_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_SetDescription_Proxy(
    IShellLinkW* This,
    LPCWSTR pszName);
void __RPC_STUB IShellLinkW_SetDescription_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_GetWorkingDirectory_Proxy(
    IShellLinkW* This,
    LPWSTR pszDir,
    int cch);
void __RPC_STUB IShellLinkW_GetWorkingDirectory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_SetWorkingDirectory_Proxy(
    IShellLinkW* This,
    LPCWSTR pszDir);
void __RPC_STUB IShellLinkW_SetWorkingDirectory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_GetArguments_Proxy(
    IShellLinkW* This,
    LPWSTR pszArgs,
    int cch);
void __RPC_STUB IShellLinkW_GetArguments_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_SetArguments_Proxy(
    IShellLinkW* This,
    LPCWSTR pszArgs);
void __RPC_STUB IShellLinkW_SetArguments_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_GetHotkey_Proxy(
    IShellLinkW* This,
    WORD *pwHotkey);
void __RPC_STUB IShellLinkW_GetHotkey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_SetHotkey_Proxy(
    IShellLinkW* This,
    WORD wHotkey);
void __RPC_STUB IShellLinkW_SetHotkey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_GetShowCmd_Proxy(
    IShellLinkW* This,
    int *piShowCmd);
void __RPC_STUB IShellLinkW_GetShowCmd_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_SetShowCmd_Proxy(
    IShellLinkW* This,
    int iShowCmd);
void __RPC_STUB IShellLinkW_SetShowCmd_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_GetIconLocation_Proxy(
    IShellLinkW* This,
    LPWSTR pszIconPath,
    int cch,
    int *piIcon);
void __RPC_STUB IShellLinkW_GetIconLocation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_SetIconLocation_Proxy(
    IShellLinkW* This,
    LPCWSTR pszIconPath,
    int iIcon);
void __RPC_STUB IShellLinkW_SetIconLocation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_SetRelativePath_Proxy(
    IShellLinkW* This,
    LPCWSTR pszPathRel,
    DWORD dwReserved);
void __RPC_STUB IShellLinkW_SetRelativePath_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_Resolve_Proxy(
    IShellLinkW* This,
    HWND hwnd,
    DWORD fFlags);
void __RPC_STUB IShellLinkW_Resolve_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkW_SetPath_Proxy(
    IShellLinkW* This,
    LPCWSTR pszFile);
void __RPC_STUB IShellLinkW_SetPath_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellLinkW_INTERFACE_DEFINED__ */

#define IShellLink WINELIB_NAME_AW(IShellLink)
#ifndef __IShellExtInit_FWD_DEFINED__
#define __IShellExtInit_FWD_DEFINED__
typedef interface IShellExtInit IShellExtInit;
#endif

typedef IShellExtInit *LPSHELLEXTINIT;
/*****************************************************************************
 * IShellExtInit interface
 */
#ifndef __IShellExtInit_INTERFACE_DEFINED__
#define __IShellExtInit_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellExtInit, 0x000214e8, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellExtInit : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        LPCITEMIDLIST pidlFolder,
        IDataObject *pdtobj,
        HKEY hkeyProgID) = 0;

};
#else
typedef struct IShellExtInitVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellExtInit* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellExtInit* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellExtInit* This);

    /*** IShellExtInit methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IShellExtInit* This,
        LPCITEMIDLIST pidlFolder,
        IDataObject *pdtobj,
        HKEY hkeyProgID);

    END_INTERFACE
} IShellExtInitVtbl;
interface IShellExtInit {
    CONST_VTBL IShellExtInitVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellExtInit_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellExtInit_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellExtInit_Release(p) (p)->lpVtbl->Release(p)
/*** IShellExtInit methods ***/
#define IShellExtInit_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
#endif

#endif

HRESULT CALLBACK IShellExtInit_Initialize_Proxy(
    IShellExtInit* This,
    LPCITEMIDLIST pidlFolder,
    IDataObject *pdtobj,
    HKEY hkeyProgID);
void __RPC_STUB IShellExtInit_Initialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellExtInit_INTERFACE_DEFINED__ */

#ifndef __IPersistFolder3_FWD_DEFINED__
#define __IPersistFolder3_FWD_DEFINED__
typedef interface IPersistFolder3 IPersistFolder3;
#endif

typedef struct __WIDL_shobjidl_generated_name_0000000A {
    LPITEMIDLIST pidlTargetFolder;
    WCHAR szTargetParsingName[260];
    WCHAR szNetworkProvider[260];
    DWORD dwAttributes;
    int csidl;
} PERSIST_FOLDER_TARGET_INFO;
/*****************************************************************************
 * IPersistFolder3 interface
 */
#ifndef __IPersistFolder3_INTERFACE_DEFINED__
#define __IPersistFolder3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPersistFolder3, 0xcef04fdf, 0xfe72, 0x11d2, 0x87,0xa5, 0x00,0xc0,0x4f,0x68,0x37,0xcf);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IPersistFolder3 : public IPersistFolder2
{
    virtual HRESULT STDMETHODCALLTYPE InitializeEx(
        IBindCtx *pbc,
        LPCITEMIDLIST pidlRoot,
        const PERSIST_FOLDER_TARGET_INFO *ppfti) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolderTargetInfo(
        PERSIST_FOLDER_TARGET_INFO *ppfti) = 0;

};
#else
typedef struct IPersistFolder3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IPersistFolder3* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IPersistFolder3* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IPersistFolder3* This);

    /*** IPersist methods ***/
    HRESULT (STDMETHODCALLTYPE *GetClassID)(
        IPersistFolder3* This,
        CLSID *pClassID);

    /*** IPersistFolder methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IPersistFolder3* This,
        LPCITEMIDLIST pidl);

    /*** IPersistFolder2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCurFolder)(
        IPersistFolder3* This,
        LPITEMIDLIST *ppidl);

    /*** IPersistFolder3 methods ***/
    HRESULT (STDMETHODCALLTYPE *InitializeEx)(
        IPersistFolder3* This,
        IBindCtx *pbc,
        LPCITEMIDLIST pidlRoot,
        const PERSIST_FOLDER_TARGET_INFO *ppfti);

    HRESULT (STDMETHODCALLTYPE *GetFolderTargetInfo)(
        IPersistFolder3* This,
        PERSIST_FOLDER_TARGET_INFO *ppfti);

    END_INTERFACE
} IPersistFolder3Vtbl;
interface IPersistFolder3 {
    CONST_VTBL IPersistFolder3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IPersistFolder3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IPersistFolder3_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IPersistFolder3_Release(p) (p)->lpVtbl->Release(p)
/*** IPersist methods ***/
#define IPersistFolder3_GetClassID(p,a) (p)->lpVtbl->GetClassID(p,a)
/*** IPersistFolder methods ***/
#define IPersistFolder3_Initialize(p,a) (p)->lpVtbl->Initialize(p,a)
/*** IPersistFolder2 methods ***/
#define IPersistFolder3_GetCurFolder(p,a) (p)->lpVtbl->GetCurFolder(p,a)
/*** IPersistFolder3 methods ***/
#define IPersistFolder3_InitializeEx(p,a,b,c) (p)->lpVtbl->InitializeEx(p,a,b,c)
#define IPersistFolder3_GetFolderTargetInfo(p,a) (p)->lpVtbl->GetFolderTargetInfo(p,a)
#endif

#endif

HRESULT CALLBACK IPersistFolder3_InitializeEx_Proxy(
    IPersistFolder3* This,
    IBindCtx *pbc,
    LPCITEMIDLIST pidlRoot,
    const PERSIST_FOLDER_TARGET_INFO *ppfti);
void __RPC_STUB IPersistFolder3_InitializeEx_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IPersistFolder3_GetFolderTargetInfo_Proxy(
    IPersistFolder3* This,
    PERSIST_FOLDER_TARGET_INFO *ppfti);
void __RPC_STUB IPersistFolder3_GetFolderTargetInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IPersistFolder3_INTERFACE_DEFINED__ */

#ifndef __IExtractIconA_FWD_DEFINED__
#define __IExtractIconA_FWD_DEFINED__
typedef interface IExtractIconA IExtractIconA;
#endif

#define GIL_OPENICON     0x0001
#define GIL_FORSHELL     0x0002
#define GIL_ASYNC        0x0020
#define GIL_DEFAULTICON  0x0040
#define GIL_FORSHORTCUT  0x0080
#define GIL_SIMULATEDOC  0x0001
#define GIL_PERINSTANCE  0x0002
#define GIL_PERCLASS     0x0004
#define GIL_NOTFILENAME  0x0008
#define GIL_DONTCACHE    0x0010
typedef IExtractIconA *LPEXTRACTICONA;
/*****************************************************************************
 * IExtractIconA interface
 */
#ifndef __IExtractIconA_INTERFACE_DEFINED__
#define __IExtractIconA_INTERFACE_DEFINED__

DEFINE_GUID(IID_IExtractIconA, 0x000214eb, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IExtractIconA : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetIconLocation(
        UINT uFlags,
        LPSTR szIconFile,
        UINT cchMax,
        INT *piIndex,
        UINT *pwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE Extract(
        LPCSTR pszFile,
        UINT nIconIndex,
        HICON *phiconLarge,
        HICON *phiconSmall,
        UINT nIconSize) = 0;

};
#else
typedef struct IExtractIconAVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IExtractIconA* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IExtractIconA* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IExtractIconA* This);

    /*** IExtractIconA methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIconLocation)(
        IExtractIconA* This,
        UINT uFlags,
        LPSTR szIconFile,
        UINT cchMax,
        INT *piIndex,
        UINT *pwFlags);

    HRESULT (STDMETHODCALLTYPE *Extract)(
        IExtractIconA* This,
        LPCSTR pszFile,
        UINT nIconIndex,
        HICON *phiconLarge,
        HICON *phiconSmall,
        UINT nIconSize);

    END_INTERFACE
} IExtractIconAVtbl;
interface IExtractIconA {
    CONST_VTBL IExtractIconAVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IExtractIconA_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IExtractIconA_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IExtractIconA_Release(p) (p)->lpVtbl->Release(p)
/*** IExtractIconA methods ***/
#define IExtractIconA_GetIconLocation(p,a,b,c,d,e) (p)->lpVtbl->GetIconLocation(p,a,b,c,d,e)
#define IExtractIconA_Extract(p,a,b,c,d,e) (p)->lpVtbl->Extract(p,a,b,c,d,e)
#endif

#endif

HRESULT CALLBACK IExtractIconA_GetIconLocation_Proxy(
    IExtractIconA* This,
    UINT uFlags,
    LPSTR szIconFile,
    UINT cchMax,
    INT *piIndex,
    UINT *pwFlags);
void __RPC_STUB IExtractIconA_GetIconLocation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IExtractIconA_Extract_Proxy(
    IExtractIconA* This,
    LPCSTR pszFile,
    UINT nIconIndex,
    HICON *phiconLarge,
    HICON *phiconSmall,
    UINT nIconSize);
void __RPC_STUB IExtractIconA_Extract_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IExtractIconA_INTERFACE_DEFINED__ */

#ifndef __IExtractIconW_FWD_DEFINED__
#define __IExtractIconW_FWD_DEFINED__
typedef interface IExtractIconW IExtractIconW;
#endif

typedef IExtractIconW *LPEXTRACTICONW;
/*****************************************************************************
 * IExtractIconW interface
 */
#ifndef __IExtractIconW_INTERFACE_DEFINED__
#define __IExtractIconW_INTERFACE_DEFINED__

DEFINE_GUID(IID_IExtractIconW, 0x000214fa, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IExtractIconW : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetIconLocation(
        UINT uFlags,
        LPWSTR szIconFile,
        UINT cchMax,
        INT *piIndex,
        UINT *pwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE Extract(
        LPCWSTR pszFile,
        UINT nIconIndex,
        HICON *phiconLarge,
        HICON *phiconSmall,
        UINT nIconSize) = 0;

};
#else
typedef struct IExtractIconWVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IExtractIconW* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IExtractIconW* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IExtractIconW* This);

    /*** IExtractIconW methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIconLocation)(
        IExtractIconW* This,
        UINT uFlags,
        LPWSTR szIconFile,
        UINT cchMax,
        INT *piIndex,
        UINT *pwFlags);

    HRESULT (STDMETHODCALLTYPE *Extract)(
        IExtractIconW* This,
        LPCWSTR pszFile,
        UINT nIconIndex,
        HICON *phiconLarge,
        HICON *phiconSmall,
        UINT nIconSize);

    END_INTERFACE
} IExtractIconWVtbl;
interface IExtractIconW {
    CONST_VTBL IExtractIconWVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IExtractIconW_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IExtractIconW_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IExtractIconW_Release(p) (p)->lpVtbl->Release(p)
/*** IExtractIconW methods ***/
#define IExtractIconW_GetIconLocation(p,a,b,c,d,e) (p)->lpVtbl->GetIconLocation(p,a,b,c,d,e)
#define IExtractIconW_Extract(p,a,b,c,d,e) (p)->lpVtbl->Extract(p,a,b,c,d,e)
#endif

#endif

HRESULT CALLBACK IExtractIconW_GetIconLocation_Proxy(
    IExtractIconW* This,
    UINT uFlags,
    LPWSTR szIconFile,
    UINT cchMax,
    INT *piIndex,
    UINT *pwFlags);
void __RPC_STUB IExtractIconW_GetIconLocation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IExtractIconW_Extract_Proxy(
    IExtractIconW* This,
    LPCWSTR pszFile,
    UINT nIconIndex,
    HICON *phiconLarge,
    HICON *phiconSmall,
    UINT nIconSize);
void __RPC_STUB IExtractIconW_Extract_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IExtractIconW_INTERFACE_DEFINED__ */

#define LPEXTRACTICON WINELIB_NAME_AW(LPEXTRACTICON)
#define IExtractIcon WINELIB_NAME_AW(IExtractIcon)
#ifndef __ICommDlgBrowser_FWD_DEFINED__
#define __ICommDlgBrowser_FWD_DEFINED__
typedef interface ICommDlgBrowser ICommDlgBrowser;
#endif

#define CDBOSC_SETFOCUS     0x00000000
#define CDBOSC_KILLFOCUS    0x00000001
#define CDBOSC_SELCHANGE    0x00000002
#define CDBOSC_RENAME       0x00000003
#define CDBOSC_STATECHANGE  0x00000004
typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
/*****************************************************************************
 * ICommDlgBrowser interface
 */
#ifndef __ICommDlgBrowser_INTERFACE_DEFINED__
#define __ICommDlgBrowser_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICommDlgBrowser, 0x000214f1, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface ICommDlgBrowser : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnDefaultCommand(
        IShellView *shv) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnStateChange(
        IShellView *shv,
        ULONG uChange) = 0;

    virtual HRESULT STDMETHODCALLTYPE IncludeObject(
        IShellView *shv,
        LPCITEMIDLIST pidl) = 0;

};
#else
typedef struct ICommDlgBrowserVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICommDlgBrowser* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICommDlgBrowser* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICommDlgBrowser* This);

    /*** ICommDlgBrowser methods ***/
    HRESULT (STDMETHODCALLTYPE *OnDefaultCommand)(
        ICommDlgBrowser* This,
        IShellView *shv);

    HRESULT (STDMETHODCALLTYPE *OnStateChange)(
        ICommDlgBrowser* This,
        IShellView *shv,
        ULONG uChange);

    HRESULT (STDMETHODCALLTYPE *IncludeObject)(
        ICommDlgBrowser* This,
        IShellView *shv,
        LPCITEMIDLIST pidl);

    END_INTERFACE
} ICommDlgBrowserVtbl;
interface ICommDlgBrowser {
    CONST_VTBL ICommDlgBrowserVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ICommDlgBrowser_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define ICommDlgBrowser_AddRef(p) (p)->lpVtbl->AddRef(p)
#define ICommDlgBrowser_Release(p) (p)->lpVtbl->Release(p)
/*** ICommDlgBrowser methods ***/
#define ICommDlgBrowser_OnDefaultCommand(p,a) (p)->lpVtbl->OnDefaultCommand(p,a)
#define ICommDlgBrowser_OnStateChange(p,a,b) (p)->lpVtbl->OnStateChange(p,a,b)
#define ICommDlgBrowser_IncludeObject(p,a,b) (p)->lpVtbl->IncludeObject(p,a,b)
#endif

#endif

HRESULT CALLBACK ICommDlgBrowser_OnDefaultCommand_Proxy(
    ICommDlgBrowser* This,
    IShellView *shv);
void __RPC_STUB ICommDlgBrowser_OnDefaultCommand_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ICommDlgBrowser_OnStateChange_Proxy(
    ICommDlgBrowser* This,
    IShellView *shv,
    ULONG uChange);
void __RPC_STUB ICommDlgBrowser_OnStateChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ICommDlgBrowser_IncludeObject_Proxy(
    ICommDlgBrowser* This,
    IShellView *shv,
    LPCITEMIDLIST pidl);
void __RPC_STUB ICommDlgBrowser_IncludeObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ICommDlgBrowser_INTERFACE_DEFINED__ */

#ifndef __IDockingWindowFrame_FWD_DEFINED__
#define __IDockingWindowFrame_FWD_DEFINED__
typedef interface IDockingWindowFrame IDockingWindowFrame;
#endif

#define DWFRF_NORMAL           0x0000
#define DWFRF_DELETECONFIGDATA 0x0001
#define DWFAF_HIDDEN           0x0001
/*****************************************************************************
 * IDockingWindowFrame interface
 */
#ifndef __IDockingWindowFrame_INTERFACE_DEFINED__
#define __IDockingWindowFrame_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDockingWindowFrame, 0x47d2657a, 0x7b27, 0x11d0, 0x8c,0xa9, 0x00,0xa0,0xc9,0x2d,0xbf,0xe8);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDockingWindowFrame : public IOleWindow
{
    virtual HRESULT STDMETHODCALLTYPE AddToolbar(
        IUnknown *punkSrc,
        LPCWSTR pwszItem,
        DWORD dwAddFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveToolbar(
        IUnknown *punkSrc,
        DWORD dwRemoveFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindToolbar(
        LPCWSTR pwszItem,
        REFIID riid,
        LPVOID *ppvObj) = 0;

};
#else
typedef struct IDockingWindowFrameVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDockingWindowFrame* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDockingWindowFrame* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDockingWindowFrame* This);

    /*** IOleWindow methods ***/
    HRESULT (STDMETHODCALLTYPE *GetWindow)(
        IDockingWindowFrame* This,
        HWND *phwnd);

    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
        IDockingWindowFrame* This,
        BOOL fEnterMode);

    /*** IDockingWindowFrame methods ***/
    HRESULT (STDMETHODCALLTYPE *AddToolbar)(
        IDockingWindowFrame* This,
        IUnknown *punkSrc,
        LPCWSTR pwszItem,
        DWORD dwAddFlags);

    HRESULT (STDMETHODCALLTYPE *RemoveToolbar)(
        IDockingWindowFrame* This,
        IUnknown *punkSrc,
        DWORD dwRemoveFlags);

    HRESULT (STDMETHODCALLTYPE *FindToolbar)(
        IDockingWindowFrame* This,
        LPCWSTR pwszItem,
        REFIID riid,
        LPVOID *ppvObj);

    END_INTERFACE
} IDockingWindowFrameVtbl;
interface IDockingWindowFrame {
    CONST_VTBL IDockingWindowFrameVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDockingWindowFrame_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDockingWindowFrame_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDockingWindowFrame_Release(p) (p)->lpVtbl->Release(p)
/*** IOleWindow methods ***/
#define IDockingWindowFrame_GetWindow(p,a) (p)->lpVtbl->GetWindow(p,a)
#define IDockingWindowFrame_ContextSensitiveHelp(p,a) (p)->lpVtbl->ContextSensitiveHelp(p,a)
/*** IDockingWindowFrame methods ***/
#define IDockingWindowFrame_AddToolbar(p,a,b,c) (p)->lpVtbl->AddToolbar(p,a,b,c)
#define IDockingWindowFrame_RemoveToolbar(p,a,b) (p)->lpVtbl->RemoveToolbar(p,a,b)
#define IDockingWindowFrame_FindToolbar(p,a,b,c) (p)->lpVtbl->FindToolbar(p,a,b,c)
#endif

#endif

HRESULT CALLBACK IDockingWindowFrame_AddToolbar_Proxy(
    IDockingWindowFrame* This,
    IUnknown *punkSrc,
    LPCWSTR pwszItem,
    DWORD dwAddFlags);
void __RPC_STUB IDockingWindowFrame_AddToolbar_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDockingWindowFrame_RemoveToolbar_Proxy(
    IDockingWindowFrame* This,
    IUnknown *punkSrc,
    DWORD dwRemoveFlags);
void __RPC_STUB IDockingWindowFrame_RemoveToolbar_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDockingWindowFrame_FindToolbar_Proxy(
    IDockingWindowFrame* This,
    LPCWSTR pwszItem,
    REFIID riid,
    LPVOID *ppvObj);
void __RPC_STUB IDockingWindowFrame_FindToolbar_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IDockingWindowFrame_INTERFACE_DEFINED__ */

#ifndef __IDragSourceHelper_FWD_DEFINED__
#define __IDragSourceHelper_FWD_DEFINED__
typedef interface IDragSourceHelper IDragSourceHelper;
#endif

typedef struct __WIDL_shobjidl_generated_name_0000000B {
    SIZE sizeDragImage;
    POINT ptOffset;
    HBITMAP hbmpDragImage;
    COLORREF crColorKey;
} SHDRAGIMAGE;
typedef struct __WIDL_shobjidl_generated_name_0000000B *LPSHDRAGIMAGE;
/*****************************************************************************
 * IDragSourceHelper interface
 */
#ifndef __IDragSourceHelper_INTERFACE_DEFINED__
#define __IDragSourceHelper_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDragSourceHelper, 0xde5bf786, 0x477a, 0x11d2, 0x83,0x9d, 0x00,0xc0,0x4f,0xd9,0x18,0xd0);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDragSourceHelper : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE InitializeFromBitmap(
        LPSHDRAGIMAGE pshdi,
        IDataObject *pDataObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitializeFromWindow(
        HWND hwnd,
        POINT *ppt,
        IDataObject *pDataObject) = 0;

};
#else
typedef struct IDragSourceHelperVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDragSourceHelper* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDragSourceHelper* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDragSourceHelper* This);

    /*** IDragSourceHelper methods ***/
    HRESULT (STDMETHODCALLTYPE *InitializeFromBitmap)(
        IDragSourceHelper* This,
        LPSHDRAGIMAGE pshdi,
        IDataObject *pDataObject);

    HRESULT (STDMETHODCALLTYPE *InitializeFromWindow)(
        IDragSourceHelper* This,
        HWND hwnd,
        POINT *ppt,
        IDataObject *pDataObject);

    END_INTERFACE
} IDragSourceHelperVtbl;
interface IDragSourceHelper {
    CONST_VTBL IDragSourceHelperVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDragSourceHelper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDragSourceHelper_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDragSourceHelper_Release(p) (p)->lpVtbl->Release(p)
/*** IDragSourceHelper methods ***/
#define IDragSourceHelper_InitializeFromBitmap(p,a,b) (p)->lpVtbl->InitializeFromBitmap(p,a,b)
#define IDragSourceHelper_InitializeFromWindow(p,a,b,c) (p)->lpVtbl->InitializeFromWindow(p,a,b,c)
#endif

#endif

HRESULT CALLBACK IDragSourceHelper_InitializeFromBitmap_Proxy(
    IDragSourceHelper* This,
    LPSHDRAGIMAGE pshdi,
    IDataObject *pDataObject);
void __RPC_STUB IDragSourceHelper_InitializeFromBitmap_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDragSourceHelper_InitializeFromWindow_Proxy(
    IDragSourceHelper* This,
    HWND hwnd,
    POINT *ppt,
    IDataObject *pDataObject);
void __RPC_STUB IDragSourceHelper_InitializeFromWindow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IDragSourceHelper_INTERFACE_DEFINED__ */

#ifndef __IDropTargetHelper_FWD_DEFINED__
#define __IDropTargetHelper_FWD_DEFINED__
typedef interface IDropTargetHelper IDropTargetHelper;
#endif

/*****************************************************************************
 * IDropTargetHelper interface
 */
#ifndef __IDropTargetHelper_INTERFACE_DEFINED__
#define __IDropTargetHelper_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDropTargetHelper, 0x4657278b, 0x411b, 0x11d2, 0x83,0x9a, 0x00,0xc0,0x4f,0xd9,0x18,0xd0);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IDropTargetHelper : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DragEnter(
        HWND hwndTarget,
        IDataObject *pDataObject,
        POINT *ppt,
        DWORD dwEffect) = 0;

    virtual HRESULT STDMETHODCALLTYPE DragLeave(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE DragOver(
        POINT *ppt,
        DWORD dwEffect) = 0;

    virtual HRESULT STDMETHODCALLTYPE Drop(
        IDataObject *pDataObject,
        POINT *ppt,
        DWORD dwEffect) = 0;

    virtual HRESULT STDMETHODCALLTYPE Show(
        BOOL fShow) = 0;

};
#else
typedef struct IDropTargetHelperVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDropTargetHelper* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDropTargetHelper* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDropTargetHelper* This);

    /*** IDropTargetHelper methods ***/
    HRESULT (STDMETHODCALLTYPE *DragEnter)(
        IDropTargetHelper* This,
        HWND hwndTarget,
        IDataObject *pDataObject,
        POINT *ppt,
        DWORD dwEffect);

    HRESULT (STDMETHODCALLTYPE *DragLeave)(
        IDropTargetHelper* This);

    HRESULT (STDMETHODCALLTYPE *DragOver)(
        IDropTargetHelper* This,
        POINT *ppt,
        DWORD dwEffect);

    HRESULT (STDMETHODCALLTYPE *Drop)(
        IDropTargetHelper* This,
        IDataObject *pDataObject,
        POINT *ppt,
        DWORD dwEffect);

    HRESULT (STDMETHODCALLTYPE *Show)(
        IDropTargetHelper* This,
        BOOL fShow);

    END_INTERFACE
} IDropTargetHelperVtbl;
interface IDropTargetHelper {
    CONST_VTBL IDropTargetHelperVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IDropTargetHelper_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IDropTargetHelper_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IDropTargetHelper_Release(p) (p)->lpVtbl->Release(p)
/*** IDropTargetHelper methods ***/
#define IDropTargetHelper_DragEnter(p,a,b,c,d) (p)->lpVtbl->DragEnter(p,a,b,c,d)
#define IDropTargetHelper_DragLeave(p) (p)->lpVtbl->DragLeave(p)
#define IDropTargetHelper_DragOver(p,a,b) (p)->lpVtbl->DragOver(p,a,b)
#define IDropTargetHelper_Drop(p,a,b,c) (p)->lpVtbl->Drop(p,a,b,c)
#define IDropTargetHelper_Show(p,a) (p)->lpVtbl->Show(p,a)
#endif

#endif

HRESULT CALLBACK IDropTargetHelper_DragEnter_Proxy(
    IDropTargetHelper* This,
    HWND hwndTarget,
    IDataObject *pDataObject,
    POINT *ppt,
    DWORD dwEffect);
void __RPC_STUB IDropTargetHelper_DragEnter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDropTargetHelper_DragLeave_Proxy(
    IDropTargetHelper* This);
void __RPC_STUB IDropTargetHelper_DragLeave_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDropTargetHelper_DragOver_Proxy(
    IDropTargetHelper* This,
    POINT *ppt,
    DWORD dwEffect);
void __RPC_STUB IDropTargetHelper_DragOver_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDropTargetHelper_Drop_Proxy(
    IDropTargetHelper* This,
    IDataObject *pDataObject,
    POINT *ppt,
    DWORD dwEffect);
void __RPC_STUB IDropTargetHelper_Drop_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IDropTargetHelper_Show_Proxy(
    IDropTargetHelper* This,
    BOOL fShow);
void __RPC_STUB IDropTargetHelper_Show_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IDropTargetHelper_INTERFACE_DEFINED__ */

#ifndef __IContextMenu_FWD_DEFINED__
#define __IContextMenu_FWD_DEFINED__
typedef interface IContextMenu IContextMenu;
#endif

#define CMF_NORMAL        0x00000000
#define CMF_DEFAULTONLY   0x00000001
#define CMF_VERBSONLY     0x00000002
#define CMF_EXPLORE       0x00000004
#define CMF_NOVERBS       0x00000008
#define CMF_CANRENAME     0x00000010
#define CMF_NODEFAULT     0x00000020
#define CMF_INCLUDESTATIC 0x00000040
#define CMF_EXTENDEDVERBS 0x00000100
#define CMF_RESERVED      0xffff0000
#define GCS_VERBA         0x00000000
#define GCS_HELPTEXTA     0x00000001
#define GCS_VALIDATEA     0x00000002
#define GCS_VERBW         0x00000004
#define GCS_HELPTEXTW     0x00000005
#define GCS_VALIDATEW     0x00000006
#define GCS_UNICODE       0x00000004
#define GCS_VERB          WINELIB_NAME_AW(GCS_VERB)
#define GCS_HELPTEXT      WINELIB_NAME_AW(GCS_HELPTEXT)
#define GCS_VALIDATE      WINELIB_NAME_AW(GCS_VALIDATE)
#define CMDSTR_NEWFOLDERA   "NewFolder"
#define CMDSTR_VIEWLISTA    "ViewList"
#define CMDSTR_VIEWDETAILSA "ViewDetails"
#if defined(__GNUC__)
# define CMDSTR_NEWFOLDERW (const WCHAR []){ 'N','e','w','F','o','l','d','e','r',0 }
# define CMDSTR_VIEWLISTW (const WCHAR []){ 'V','i','e','w','L','i','s','t',0 }
# define CMDSTR_VIEWDETAILSW (const WCHAR []){ 'V','i','e','w','D','e','t','a','i','l','s',0 }
#elif defined(_MSC_VER)
# define CMDSTR_NEWFOLDERW   L"NewFolder"
# define CMDSTR_VIEWLISTW    L"ViewList"
# define CMDSTR_VIEWDETAILSW L"ViewDetails"
#else
static const WCHAR CMDSTR_NEWFOLDERW[] = {'N','e','w','F','o','l','d','e','r',0};
static const WCHAR CMDSTR_VIEWLISTW [] = {'V','i','e','w','L','i','s','t',0};
static const WCHAR CMDSTR_VIEWDETAILSW[] = {'V','i','e','w','D','e','t','a','i','l','s',0};
#endif
#define CMDSTR_NEWFOLDER    WINELIB_NAME_AW(CMDSTR_NEWFOLDER)
#define CMDSTR_VIEWLIST     WINELIB_NAME_AW(CMDSTR_VIEWLIST)
#define CMDSTR_VIEWDETAILS  WINELIB_NAME_AW(CMDSTR_VIEWDETAILS)
#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_NO_CONSOLE     SEE_MASK_NO_CONSOLE
#define CMIC_MASK_HASLINKNAME    SEE_MASK_HASLINKNAME
#define CMIC_MASK_FLAG_SEP_VDM   SEE_MASK_FLAG_SEPVDM
#define CMIC_MASK_HASTITLE       SEE_MASK_HASTITLE
#define CMIC_MASK_ASYNCOK        SEE_MASK_ASYNCOK
#define CMIC_MASK_SHIFT_DOWN     0x10000000
#define CMIC_MASK_PTINVOKE       0x20000000
#define CMIC_MASK_CONTROL_DOWN   0x40000000
#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE
#define CMIC_MASK_NOZONECHECKS   SEE_MASK_NOZONECHECKS
typedef IContextMenu *LPCONTEXTMENU;
typedef struct tagCMINVOKECOMMANDINFO {
    DWORD cbSize;
    DWORD fMask;
    HWND hwnd;
    LPCSTR lpVerb;
    LPCSTR lpParameters;
    LPCSTR lpDirectory;
    INT nShow;
    DWORD dwHotKey;
    HANDLE hIcon;
} CMINVOKECOMMANDINFO;
typedef struct tagCMINVOKECOMMANDINFO *LPCMINVOKECOMMANDINFO;
typedef struct tagCMInvokeCommandInfoEx {
    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;
typedef struct tagCMInvokeCommandInfoEx *LPCMINVOKECOMMANDINFOEX;
/*****************************************************************************
 * IContextMenu interface
 */
#ifndef __IContextMenu_INTERFACE_DEFINED__
#define __IContextMenu_INTERFACE_DEFINED__

DEFINE_GUID(IID_IContextMenu, 0x000214e4, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IContextMenu : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE QueryContextMenu(
        HMENU hmenu,
        UINT indexMenu,
        UINT idCmdFirst,
        UINT idCmdLast,
        UINT uFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE InvokeCommand(
        LPCMINVOKECOMMANDINFO lpici) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCommandString(
        UINT_PTR idCmd,
        UINT uType,
        UINT *pwReserved,
        LPSTR pszName,
        UINT cchMax) = 0;

};
#else
typedef struct IContextMenuVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IContextMenu* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IContextMenu* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IContextMenu* This);

    /*** IContextMenu methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryContextMenu)(
        IContextMenu* This,
        HMENU hmenu,
        UINT indexMenu,
        UINT idCmdFirst,
        UINT idCmdLast,
        UINT uFlags);

    HRESULT (STDMETHODCALLTYPE *InvokeCommand)(
        IContextMenu* This,
        LPCMINVOKECOMMANDINFO lpici);

    HRESULT (STDMETHODCALLTYPE *GetCommandString)(
        IContextMenu* This,
        UINT_PTR idCmd,
        UINT uType,
        UINT *pwReserved,
        LPSTR pszName,
        UINT cchMax);

    END_INTERFACE
} IContextMenuVtbl;
interface IContextMenu {
    CONST_VTBL IContextMenuVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IContextMenu_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IContextMenu_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IContextMenu_Release(p) (p)->lpVtbl->Release(p)
/*** IContextMenu methods ***/
#define IContextMenu_QueryContextMenu(p,a,b,c,d,e) (p)->lpVtbl->QueryContextMenu(p,a,b,c,d,e)
#define IContextMenu_InvokeCommand(p,a) (p)->lpVtbl->InvokeCommand(p,a)
#define IContextMenu_GetCommandString(p,a,b,c,d,e) (p)->lpVtbl->GetCommandString(p,a,b,c,d,e)
#endif

#endif

HRESULT CALLBACK IContextMenu_QueryContextMenu_Proxy(
    IContextMenu* This,
    HMENU hmenu,
    UINT indexMenu,
    UINT idCmdFirst,
    UINT idCmdLast,
    UINT uFlags);
void __RPC_STUB IContextMenu_QueryContextMenu_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IContextMenu_InvokeCommand_Proxy(
    IContextMenu* This,
    LPCMINVOKECOMMANDINFO lpici);
void __RPC_STUB IContextMenu_InvokeCommand_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IContextMenu_GetCommandString_Proxy(
    IContextMenu* This,
    UINT_PTR idCmd,
    UINT uType,
    UINT *pwReserved,
    LPSTR pszName,
    UINT cchMax);
void __RPC_STUB IContextMenu_GetCommandString_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IContextMenu_INTERFACE_DEFINED__ */

#ifndef __IContextMenu2_FWD_DEFINED__
#define __IContextMenu2_FWD_DEFINED__
typedef interface IContextMenu2 IContextMenu2;
#endif

typedef IContextMenu2 *LPCONTEXTMENU2;
/*****************************************************************************
 * IContextMenu2 interface
 */
#ifndef __IContextMenu2_INTERFACE_DEFINED__
#define __IContextMenu2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IContextMenu2, 0x000214f4, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IContextMenu2 : public IContextMenu
{
    virtual HRESULT STDMETHODCALLTYPE HandleMenuMsg(
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam) = 0;

};
#else
typedef struct IContextMenu2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IContextMenu2* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IContextMenu2* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IContextMenu2* This);

    /*** IContextMenu methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryContextMenu)(
        IContextMenu2* This,
        HMENU hmenu,
        UINT indexMenu,
        UINT idCmdFirst,
        UINT idCmdLast,
        UINT uFlags);

    HRESULT (STDMETHODCALLTYPE *InvokeCommand)(
        IContextMenu2* This,
        LPCMINVOKECOMMANDINFO lpici);

    HRESULT (STDMETHODCALLTYPE *GetCommandString)(
        IContextMenu2* This,
        UINT_PTR idCmd,
        UINT uType,
        UINT *pwReserved,
        LPSTR pszName,
        UINT cchMax);

    /*** IContextMenu2 methods ***/
    HRESULT (STDMETHODCALLTYPE *HandleMenuMsg)(
        IContextMenu2* This,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam);

    END_INTERFACE
} IContextMenu2Vtbl;
interface IContextMenu2 {
    CONST_VTBL IContextMenu2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IContextMenu2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IContextMenu2_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IContextMenu2_Release(p) (p)->lpVtbl->Release(p)
/*** IContextMenu methods ***/
#define IContextMenu2_QueryContextMenu(p,a,b,c,d,e) (p)->lpVtbl->QueryContextMenu(p,a,b,c,d,e)
#define IContextMenu2_InvokeCommand(p,a) (p)->lpVtbl->InvokeCommand(p,a)
#define IContextMenu2_GetCommandString(p,a,b,c,d,e) (p)->lpVtbl->GetCommandString(p,a,b,c,d,e)
/*** IContextMenu2 methods ***/
#define IContextMenu2_HandleMenuMsg(p,a,b,c) (p)->lpVtbl->HandleMenuMsg(p,a,b,c)
#endif

#endif

HRESULT CALLBACK IContextMenu2_HandleMenuMsg_Proxy(
    IContextMenu2* This,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam);
void __RPC_STUB IContextMenu2_HandleMenuMsg_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IContextMenu2_INTERFACE_DEFINED__ */

#ifndef __IContextMenu3_FWD_DEFINED__
#define __IContextMenu3_FWD_DEFINED__
typedef interface IContextMenu3 IContextMenu3;
#endif

typedef IContextMenu3 *LPCONTEXTMENU3;
/*****************************************************************************
 * IContextMenu3 interface
 */
#ifndef __IContextMenu3_INTERFACE_DEFINED__
#define __IContextMenu3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IContextMenu3, 0xbcfce0a0, 0xec17, 0x11d0, 0x8d,0x10, 0x00,0xa0,0xc9,0x0f,0x27,0x19);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IContextMenu3 : public IContextMenu2
{
    virtual HRESULT STDMETHODCALLTYPE HandleMenuMsg2(
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *plResult) = 0;

};
#else
typedef struct IContextMenu3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IContextMenu3* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IContextMenu3* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IContextMenu3* This);

    /*** IContextMenu methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryContextMenu)(
        IContextMenu3* This,
        HMENU hmenu,
        UINT indexMenu,
        UINT idCmdFirst,
        UINT idCmdLast,
        UINT uFlags);

    HRESULT (STDMETHODCALLTYPE *InvokeCommand)(
        IContextMenu3* This,
        LPCMINVOKECOMMANDINFO lpici);

    HRESULT (STDMETHODCALLTYPE *GetCommandString)(
        IContextMenu3* This,
        UINT_PTR idCmd,
        UINT uType,
        UINT *pwReserved,
        LPSTR pszName,
        UINT cchMax);

    /*** IContextMenu2 methods ***/
    HRESULT (STDMETHODCALLTYPE *HandleMenuMsg)(
        IContextMenu3* This,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam);

    /*** IContextMenu3 methods ***/
    HRESULT (STDMETHODCALLTYPE *HandleMenuMsg2)(
        IContextMenu3* This,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *plResult);

    END_INTERFACE
} IContextMenu3Vtbl;
interface IContextMenu3 {
    CONST_VTBL IContextMenu3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IContextMenu3_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IContextMenu3_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IContextMenu3_Release(p) (p)->lpVtbl->Release(p)
/*** IContextMenu methods ***/
#define IContextMenu3_QueryContextMenu(p,a,b,c,d,e) (p)->lpVtbl->QueryContextMenu(p,a,b,c,d,e)
#define IContextMenu3_InvokeCommand(p,a) (p)->lpVtbl->InvokeCommand(p,a)
#define IContextMenu3_GetCommandString(p,a,b,c,d,e) (p)->lpVtbl->GetCommandString(p,a,b,c,d,e)
/*** IContextMenu2 methods ***/
#define IContextMenu3_HandleMenuMsg(p,a,b,c) (p)->lpVtbl->HandleMenuMsg(p,a,b,c)
/*** IContextMenu3 methods ***/
#define IContextMenu3_HandleMenuMsg2(p,a,b,c,d) (p)->lpVtbl->HandleMenuMsg2(p,a,b,c,d)
#endif

#endif

HRESULT CALLBACK IContextMenu3_HandleMenuMsg2_Proxy(
    IContextMenu3* This,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam,
    LRESULT *plResult);
void __RPC_STUB IContextMenu3_HandleMenuMsg2_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IContextMenu3_INTERFACE_DEFINED__ */

#ifndef __IShellExecuteHookA_FWD_DEFINED__
#define __IShellExecuteHookA_FWD_DEFINED__
typedef interface IShellExecuteHookA IShellExecuteHookA;
#endif

struct _SHELLEXECUTEINFOA;
/*****************************************************************************
 * IShellExecuteHookA interface
 */
#ifndef __IShellExecuteHookA_INTERFACE_DEFINED__
#define __IShellExecuteHookA_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellExecuteHookA, 0x000214f5, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellExecuteHookA : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Execute(
        struct _SHELLEXECUTEINFOA *pei) = 0;

};
#else
typedef struct IShellExecuteHookAVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellExecuteHookA* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellExecuteHookA* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellExecuteHookA* This);

    /*** IShellExecuteHookA methods ***/
    HRESULT (STDMETHODCALLTYPE *Execute)(
        IShellExecuteHookA* This,
        struct _SHELLEXECUTEINFOA *pei);

    END_INTERFACE
} IShellExecuteHookAVtbl;
interface IShellExecuteHookA {
    CONST_VTBL IShellExecuteHookAVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellExecuteHookA_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellExecuteHookA_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellExecuteHookA_Release(p) (p)->lpVtbl->Release(p)
/*** IShellExecuteHookA methods ***/
#define IShellExecuteHookA_Execute(p,a) (p)->lpVtbl->Execute(p,a)
#endif

#endif

HRESULT CALLBACK IShellExecuteHookA_Execute_Proxy(
    IShellExecuteHookA* This,
    struct _SHELLEXECUTEINFOA *pei);
void __RPC_STUB IShellExecuteHookA_Execute_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellExecuteHookA_INTERFACE_DEFINED__ */

#ifndef __IShellExecuteHookW_FWD_DEFINED__
#define __IShellExecuteHookW_FWD_DEFINED__
typedef interface IShellExecuteHookW IShellExecuteHookW;
#endif

struct _SHELLEXECUTEINFOW;
/*****************************************************************************
 * IShellExecuteHookW interface
 */
#ifndef __IShellExecuteHookW_INTERFACE_DEFINED__
#define __IShellExecuteHookW_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellExecuteHookW, 0x000214fb, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellExecuteHookW : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Execute(
        struct _SHELLEXECUTEINFOW *pei) = 0;

};
#else
typedef struct IShellExecuteHookWVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellExecuteHookW* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellExecuteHookW* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellExecuteHookW* This);

    /*** IShellExecuteHookW methods ***/
    HRESULT (STDMETHODCALLTYPE *Execute)(
        IShellExecuteHookW* This,
        struct _SHELLEXECUTEINFOW *pei);

    END_INTERFACE
} IShellExecuteHookWVtbl;
interface IShellExecuteHookW {
    CONST_VTBL IShellExecuteHookWVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellExecuteHookW_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellExecuteHookW_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellExecuteHookW_Release(p) (p)->lpVtbl->Release(p)
/*** IShellExecuteHookW methods ***/
#define IShellExecuteHookW_Execute(p,a) (p)->lpVtbl->Execute(p,a)
#endif

#endif

HRESULT CALLBACK IShellExecuteHookW_Execute_Proxy(
    IShellExecuteHookW* This,
    struct _SHELLEXECUTEINFOW *pei);
void __RPC_STUB IShellExecuteHookW_Execute_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellExecuteHookW_INTERFACE_DEFINED__ */

#ifndef __IShellLinkDataList_FWD_DEFINED__
#define __IShellLinkDataList_FWD_DEFINED__
typedef interface IShellLinkDataList IShellLinkDataList;
#endif

/*****************************************************************************
 * IShellLinkDataList interface
 */
#ifndef __IShellLinkDataList_INTERFACE_DEFINED__
#define __IShellLinkDataList_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellLinkDataList, 0x45e2b4ae, 0xb1c3, 0x11d0, 0xb9,0x2f, 0x00,0xa0,0xc9,0x03,0x12,0xe1);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellLinkDataList : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddDataBlock(
        void *pDataBlock) = 0;

    virtual HRESULT STDMETHODCALLTYPE CopyDataBlock(
        DWORD dwSig,
        void **ppDataBlock) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveDataBlock(
        DWORD dwSig) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlags(
        DWORD *pdwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFlags(
        DWORD dwFlags) = 0;

};
#else
typedef struct IShellLinkDataListVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellLinkDataList* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellLinkDataList* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellLinkDataList* This);

    /*** IShellLinkDataList methods ***/
    HRESULT (STDMETHODCALLTYPE *AddDataBlock)(
        IShellLinkDataList* This,
        void *pDataBlock);

    HRESULT (STDMETHODCALLTYPE *CopyDataBlock)(
        IShellLinkDataList* This,
        DWORD dwSig,
        void **ppDataBlock);

    HRESULT (STDMETHODCALLTYPE *RemoveDataBlock)(
        IShellLinkDataList* This,
        DWORD dwSig);

    HRESULT (STDMETHODCALLTYPE *GetFlags)(
        IShellLinkDataList* This,
        DWORD *pdwFlags);

    HRESULT (STDMETHODCALLTYPE *SetFlags)(
        IShellLinkDataList* This,
        DWORD dwFlags);

    END_INTERFACE
} IShellLinkDataListVtbl;
interface IShellLinkDataList {
    CONST_VTBL IShellLinkDataListVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellLinkDataList_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellLinkDataList_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellLinkDataList_Release(p) (p)->lpVtbl->Release(p)
/*** IShellLinkDataList methods ***/
#define IShellLinkDataList_AddDataBlock(p,a) (p)->lpVtbl->AddDataBlock(p,a)
#define IShellLinkDataList_CopyDataBlock(p,a,b) (p)->lpVtbl->CopyDataBlock(p,a,b)
#define IShellLinkDataList_RemoveDataBlock(p,a) (p)->lpVtbl->RemoveDataBlock(p,a)
#define IShellLinkDataList_GetFlags(p,a) (p)->lpVtbl->GetFlags(p,a)
#define IShellLinkDataList_SetFlags(p,a) (p)->lpVtbl->SetFlags(p,a)
#endif

#endif

HRESULT CALLBACK IShellLinkDataList_AddDataBlock_Proxy(
    IShellLinkDataList* This,
    void *pDataBlock);
void __RPC_STUB IShellLinkDataList_AddDataBlock_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkDataList_CopyDataBlock_Proxy(
    IShellLinkDataList* This,
    DWORD dwSig,
    void **ppDataBlock);
void __RPC_STUB IShellLinkDataList_CopyDataBlock_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkDataList_RemoveDataBlock_Proxy(
    IShellLinkDataList* This,
    DWORD dwSig);
void __RPC_STUB IShellLinkDataList_RemoveDataBlock_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkDataList_GetFlags_Proxy(
    IShellLinkDataList* This,
    DWORD *pdwFlags);
void __RPC_STUB IShellLinkDataList_GetFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellLinkDataList_SetFlags_Proxy(
    IShellLinkDataList* This,
    DWORD dwFlags);
void __RPC_STUB IShellLinkDataList_SetFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellLinkDataList_INTERFACE_DEFINED__ */

#ifndef __IResolveShellLink_FWD_DEFINED__
#define __IResolveShellLink_FWD_DEFINED__
typedef interface IResolveShellLink IResolveShellLink;
#endif

/*****************************************************************************
 * IResolveShellLink interface
 */
#ifndef __IResolveShellLink_INTERFACE_DEFINED__
#define __IResolveShellLink_INTERFACE_DEFINED__

DEFINE_GUID(IID_IResolveShellLink, 0x5cd52983, 0x9449, 0x11d2, 0x96,0x3a, 0x00,0xc0,0x4f,0x79,0xad,0xf0);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IResolveShellLink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ResolveShellLink(
        IUnknown *punk,
        HWND hwnd,
        DWORD fFlags) = 0;

};
#else
typedef struct IResolveShellLinkVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IResolveShellLink* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IResolveShellLink* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IResolveShellLink* This);

    /*** IResolveShellLink methods ***/
    HRESULT (STDMETHODCALLTYPE *ResolveShellLink)(
        IResolveShellLink* This,
        IUnknown *punk,
        HWND hwnd,
        DWORD fFlags);

    END_INTERFACE
} IResolveShellLinkVtbl;
interface IResolveShellLink {
    CONST_VTBL IResolveShellLinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IResolveShellLink_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IResolveShellLink_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IResolveShellLink_Release(p) (p)->lpVtbl->Release(p)
/*** IResolveShellLink methods ***/
#define IResolveShellLink_ResolveShellLink(p,a,b,c) (p)->lpVtbl->ResolveShellLink(p,a,b,c)
#endif

#endif

HRESULT CALLBACK IResolveShellLink_ResolveShellLink_Proxy(
    IResolveShellLink* This,
    IUnknown *punk,
    HWND hwnd,
    DWORD fFlags);
void __RPC_STUB IResolveShellLink_ResolveShellLink_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IResolveShellLink_INTERFACE_DEFINED__ */

#ifndef __IURLSearchHook_FWD_DEFINED__
#define __IURLSearchHook_FWD_DEFINED__
typedef interface IURLSearchHook IURLSearchHook;
#endif

/*****************************************************************************
 * IURLSearchHook interface
 */
#ifndef __IURLSearchHook_INTERFACE_DEFINED__
#define __IURLSearchHook_INTERFACE_DEFINED__

DEFINE_GUID(IID_IURLSearchHook, 0xac60f6a0, 0x0fd9, 0x11d0, 0x99,0xcb, 0x00,0xc0,0x4f,0xd6,0x44,0x97);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IURLSearchHook : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Translate(
        LPWSTR lpwszSearchURL,
        DWORD cchBufferSize) = 0;

};
#else
typedef struct IURLSearchHookVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IURLSearchHook* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IURLSearchHook* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IURLSearchHook* This);

    /*** IURLSearchHook methods ***/
    HRESULT (STDMETHODCALLTYPE *Translate)(
        IURLSearchHook* This,
        LPWSTR lpwszSearchURL,
        DWORD cchBufferSize);

    END_INTERFACE
} IURLSearchHookVtbl;
interface IURLSearchHook {
    CONST_VTBL IURLSearchHookVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IURLSearchHook_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IURLSearchHook_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IURLSearchHook_Release(p) (p)->lpVtbl->Release(p)
/*** IURLSearchHook methods ***/
#define IURLSearchHook_Translate(p,a,b) (p)->lpVtbl->Translate(p,a,b)
#endif

#endif

HRESULT CALLBACK IURLSearchHook_Translate_Proxy(
    IURLSearchHook* This,
    LPWSTR lpwszSearchURL,
    DWORD cchBufferSize);
void __RPC_STUB IURLSearchHook_Translate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IURLSearchHook_INTERFACE_DEFINED__ */

#ifndef __ISearchContext_FWD_DEFINED__
#define __ISearchContext_FWD_DEFINED__
typedef interface ISearchContext ISearchContext;
#endif

/*****************************************************************************
 * ISearchContext interface
 */
#ifndef __ISearchContext_INTERFACE_DEFINED__
#define __ISearchContext_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISearchContext, 0x09f656a2, 0x41af, 0x480c, 0x88,0xf7, 0x16,0xcc,0x0d,0x16,0x46,0x15);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface ISearchContext : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetSearchUrl(
        BSTR *pbstrSearchUrl) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSearchText(
        BSTR *pbstrSearchText) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSearchStyle(
        BSTR *pdwSearchStyle) = 0;

};
#else
typedef struct ISearchContextVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ISearchContext* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ISearchContext* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ISearchContext* This);

    /*** ISearchContext methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSearchUrl)(
        ISearchContext* This,
        BSTR *pbstrSearchUrl);

    HRESULT (STDMETHODCALLTYPE *GetSearchText)(
        ISearchContext* This,
        BSTR *pbstrSearchText);

    HRESULT (STDMETHODCALLTYPE *GetSearchStyle)(
        ISearchContext* This,
        BSTR *pdwSearchStyle);

    END_INTERFACE
} ISearchContextVtbl;
interface ISearchContext {
    CONST_VTBL ISearchContextVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ISearchContext_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define ISearchContext_AddRef(p) (p)->lpVtbl->AddRef(p)
#define ISearchContext_Release(p) (p)->lpVtbl->Release(p)
/*** ISearchContext methods ***/
#define ISearchContext_GetSearchUrl(p,a) (p)->lpVtbl->GetSearchUrl(p,a)
#define ISearchContext_GetSearchText(p,a) (p)->lpVtbl->GetSearchText(p,a)
#define ISearchContext_GetSearchStyle(p,a) (p)->lpVtbl->GetSearchStyle(p,a)
#endif

#endif

HRESULT CALLBACK ISearchContext_GetSearchUrl_Proxy(
    ISearchContext* This,
    BSTR *pbstrSearchUrl);
void __RPC_STUB ISearchContext_GetSearchUrl_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ISearchContext_GetSearchText_Proxy(
    ISearchContext* This,
    BSTR *pbstrSearchText);
void __RPC_STUB ISearchContext_GetSearchText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK ISearchContext_GetSearchStyle_Proxy(
    ISearchContext* This,
    BSTR *pdwSearchStyle);
void __RPC_STUB ISearchContext_GetSearchStyle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ISearchContext_INTERFACE_DEFINED__ */

#ifndef __IURLSearchHook2_FWD_DEFINED__
#define __IURLSearchHook2_FWD_DEFINED__
typedef interface IURLSearchHook2 IURLSearchHook2;
#endif

/*****************************************************************************
 * IURLSearchHook2 interface
 */
#ifndef __IURLSearchHook2_INTERFACE_DEFINED__
#define __IURLSearchHook2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IURLSearchHook2, 0x5ee44da4, 0x6d32, 0x46e3, 0x86,0xbc, 0x07,0x54,0x0d,0xed,0xd0,0xe0);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IURLSearchHook2 : public IURLSearchHook
{
    virtual HRESULT STDMETHODCALLTYPE TranslateWithSearchContext(
        LPWSTR lpwszSearchURL,
        DWORD cchBufferSize,
        ISearchContext *pSearchContext) = 0;

};
#else
typedef struct IURLSearchHook2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IURLSearchHook2* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IURLSearchHook2* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IURLSearchHook2* This);

    /*** IURLSearchHook methods ***/
    HRESULT (STDMETHODCALLTYPE *Translate)(
        IURLSearchHook2* This,
        LPWSTR lpwszSearchURL,
        DWORD cchBufferSize);

    /*** IURLSearchHook2 methods ***/
    HRESULT (STDMETHODCALLTYPE *TranslateWithSearchContext)(
        IURLSearchHook2* This,
        LPWSTR lpwszSearchURL,
        DWORD cchBufferSize,
        ISearchContext *pSearchContext);

    END_INTERFACE
} IURLSearchHook2Vtbl;
interface IURLSearchHook2 {
    CONST_VTBL IURLSearchHook2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IURLSearchHook2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IURLSearchHook2_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IURLSearchHook2_Release(p) (p)->lpVtbl->Release(p)
/*** IURLSearchHook methods ***/
#define IURLSearchHook2_Translate(p,a,b) (p)->lpVtbl->Translate(p,a,b)
/*** IURLSearchHook2 methods ***/
#define IURLSearchHook2_TranslateWithSearchContext(p,a,b,c) (p)->lpVtbl->TranslateWithSearchContext(p,a,b,c)
#endif

#endif

HRESULT CALLBACK IURLSearchHook2_TranslateWithSearchContext_Proxy(
    IURLSearchHook2* This,
    LPWSTR lpwszSearchURL,
    DWORD cchBufferSize,
    ISearchContext *pSearchContext);
void __RPC_STUB IURLSearchHook2_TranslateWithSearchContext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IURLSearchHook2_INTERFACE_DEFINED__ */

#define INewShortcutHook WINELIB_NAME_AW(INewShortcutHook)
#ifndef __INewShortcutHookA_FWD_DEFINED__
#define __INewShortcutHookA_FWD_DEFINED__
typedef interface INewShortcutHookA INewShortcutHookA;
#endif

/*****************************************************************************
 * INewShortcutHookA interface
 */
#ifndef __INewShortcutHookA_INTERFACE_DEFINED__
#define __INewShortcutHookA_INTERFACE_DEFINED__

DEFINE_GUID(IID_INewShortcutHookA, 0x000214e1, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface INewShortcutHookA : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetReferent(
        LPCSTR pcszReferent,
        HWND hwnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetReferent(
        LPCSTR pcszReferent,
        int cchReferent) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFolder(
        LPCSTR pcszReferent) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolder(
        LPSTR pcszReferent,
        int cchFolder) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetName(
        LPSTR pszName,
        int cchName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetExtension(
        LPSTR pszExtension,
        int cchExtension) = 0;

};
#else
typedef struct INewShortcutHookAVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        INewShortcutHookA* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        INewShortcutHookA* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        INewShortcutHookA* This);

    /*** INewShortcutHookA methods ***/
    HRESULT (STDMETHODCALLTYPE *SetReferent)(
        INewShortcutHookA* This,
        LPCSTR pcszReferent,
        HWND hwnd);

    HRESULT (STDMETHODCALLTYPE *GetReferent)(
        INewShortcutHookA* This,
        LPCSTR pcszReferent,
        int cchReferent);

    HRESULT (STDMETHODCALLTYPE *SetFolder)(
        INewShortcutHookA* This,
        LPCSTR pcszReferent);

    HRESULT (STDMETHODCALLTYPE *GetFolder)(
        INewShortcutHookA* This,
        LPSTR pcszReferent,
        int cchFolder);

    HRESULT (STDMETHODCALLTYPE *GetName)(
        INewShortcutHookA* This,
        LPSTR pszName,
        int cchName);

    HRESULT (STDMETHODCALLTYPE *GetExtension)(
        INewShortcutHookA* This,
        LPSTR pszExtension,
        int cchExtension);

    END_INTERFACE
} INewShortcutHookAVtbl;
interface INewShortcutHookA {
    CONST_VTBL INewShortcutHookAVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define INewShortcutHookA_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define INewShortcutHookA_AddRef(p) (p)->lpVtbl->AddRef(p)
#define INewShortcutHookA_Release(p) (p)->lpVtbl->Release(p)
/*** INewShortcutHookA methods ***/
#define INewShortcutHookA_SetReferent(p,a,b) (p)->lpVtbl->SetReferent(p,a,b)
#define INewShortcutHookA_GetReferent(p,a,b) (p)->lpVtbl->GetReferent(p,a,b)
#define INewShortcutHookA_SetFolder(p,a) (p)->lpVtbl->SetFolder(p,a)
#define INewShortcutHookA_GetFolder(p,a,b) (p)->lpVtbl->GetFolder(p,a,b)
#define INewShortcutHookA_GetName(p,a,b) (p)->lpVtbl->GetName(p,a,b)
#define INewShortcutHookA_GetExtension(p,a,b) (p)->lpVtbl->GetExtension(p,a,b)
#endif

#endif

HRESULT CALLBACK INewShortcutHookA_SetReferent_Proxy(
    INewShortcutHookA* This,
    LPCSTR pcszReferent,
    HWND hwnd);
void __RPC_STUB INewShortcutHookA_SetReferent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK INewShortcutHookA_GetReferent_Proxy(
    INewShortcutHookA* This,
    LPCSTR pcszReferent,
    int cchReferent);
void __RPC_STUB INewShortcutHookA_GetReferent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK INewShortcutHookA_SetFolder_Proxy(
    INewShortcutHookA* This,
    LPCSTR pcszReferent);
void __RPC_STUB INewShortcutHookA_SetFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK INewShortcutHookA_GetFolder_Proxy(
    INewShortcutHookA* This,
    LPSTR pcszReferent,
    int cchFolder);
void __RPC_STUB INewShortcutHookA_GetFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK INewShortcutHookA_GetName_Proxy(
    INewShortcutHookA* This,
    LPSTR pszName,
    int cchName);
void __RPC_STUB INewShortcutHookA_GetName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK INewShortcutHookA_GetExtension_Proxy(
    INewShortcutHookA* This,
    LPSTR pszExtension,
    int cchExtension);
void __RPC_STUB INewShortcutHookA_GetExtension_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __INewShortcutHookA_INTERFACE_DEFINED__ */

#ifndef __INewShortcutHookW_FWD_DEFINED__
#define __INewShortcutHookW_FWD_DEFINED__
typedef interface INewShortcutHookW INewShortcutHookW;
#endif

/*****************************************************************************
 * INewShortcutHookW interface
 */
#ifndef __INewShortcutHookW_INTERFACE_DEFINED__
#define __INewShortcutHookW_INTERFACE_DEFINED__

DEFINE_GUID(IID_INewShortcutHookW, 0x000214f7, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface INewShortcutHookW : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetReferent(
        LPCWSTR pcszReferent,
        HWND hwnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetReferent(
        LPCWSTR pcszReferent,
        int cchReferent) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFolder(
        LPCWSTR pcszReferent) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolder(
        LPWSTR pcszReferent,
        int cchFolder) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetName(
        LPWSTR pszName,
        int cchName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetExtension(
        LPWSTR pszExtension,
        int cchExtension) = 0;

};
#else
typedef struct INewShortcutHookWVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        INewShortcutHookW* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        INewShortcutHookW* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        INewShortcutHookW* This);

    /*** INewShortcutHookW methods ***/
    HRESULT (STDMETHODCALLTYPE *SetReferent)(
        INewShortcutHookW* This,
        LPCWSTR pcszReferent,
        HWND hwnd);

    HRESULT (STDMETHODCALLTYPE *GetReferent)(
        INewShortcutHookW* This,
        LPCWSTR pcszReferent,
        int cchReferent);

    HRESULT (STDMETHODCALLTYPE *SetFolder)(
        INewShortcutHookW* This,
        LPCWSTR pcszReferent);

    HRESULT (STDMETHODCALLTYPE *GetFolder)(
        INewShortcutHookW* This,
        LPWSTR pcszReferent,
        int cchFolder);

    HRESULT (STDMETHODCALLTYPE *GetName)(
        INewShortcutHookW* This,
        LPWSTR pszName,
        int cchName);

    HRESULT (STDMETHODCALLTYPE *GetExtension)(
        INewShortcutHookW* This,
        LPWSTR pszExtension,
        int cchExtension);

    END_INTERFACE
} INewShortcutHookWVtbl;
interface INewShortcutHookW {
    CONST_VTBL INewShortcutHookWVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define INewShortcutHookW_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define INewShortcutHookW_AddRef(p) (p)->lpVtbl->AddRef(p)
#define INewShortcutHookW_Release(p) (p)->lpVtbl->Release(p)
/*** INewShortcutHookW methods ***/
#define INewShortcutHookW_SetReferent(p,a,b) (p)->lpVtbl->SetReferent(p,a,b)
#define INewShortcutHookW_GetReferent(p,a,b) (p)->lpVtbl->GetReferent(p,a,b)
#define INewShortcutHookW_SetFolder(p,a) (p)->lpVtbl->SetFolder(p,a)
#define INewShortcutHookW_GetFolder(p,a,b) (p)->lpVtbl->GetFolder(p,a,b)
#define INewShortcutHookW_GetName(p,a,b) (p)->lpVtbl->GetName(p,a,b)
#define INewShortcutHookW_GetExtension(p,a,b) (p)->lpVtbl->GetExtension(p,a,b)
#endif

#endif

HRESULT CALLBACK INewShortcutHookW_SetReferent_Proxy(
    INewShortcutHookW* This,
    LPCWSTR pcszReferent,
    HWND hwnd);
void __RPC_STUB INewShortcutHookW_SetReferent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK INewShortcutHookW_GetReferent_Proxy(
    INewShortcutHookW* This,
    LPCWSTR pcszReferent,
    int cchReferent);
void __RPC_STUB INewShortcutHookW_GetReferent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK INewShortcutHookW_SetFolder_Proxy(
    INewShortcutHookW* This,
    LPCWSTR pcszReferent);
void __RPC_STUB INewShortcutHookW_SetFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK INewShortcutHookW_GetFolder_Proxy(
    INewShortcutHookW* This,
    LPWSTR pcszReferent,
    int cchFolder);
void __RPC_STUB INewShortcutHookW_GetFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK INewShortcutHookW_GetName_Proxy(
    INewShortcutHookW* This,
    LPWSTR pszName,
    int cchName);
void __RPC_STUB INewShortcutHookW_GetName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK INewShortcutHookW_GetExtension_Proxy(
    INewShortcutHookW* This,
    LPWSTR pszExtension,
    int cchExtension);
void __RPC_STUB INewShortcutHookW_GetExtension_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __INewShortcutHookW_INTERFACE_DEFINED__ */

#ifndef __IShellChangeNotify_FWD_DEFINED__
#define __IShellChangeNotify_FWD_DEFINED__
typedef interface IShellChangeNotify IShellChangeNotify;
#endif

/*****************************************************************************
 * IShellChangeNotify interface
 */
#ifndef __IShellChangeNotify_INTERFACE_DEFINED__
#define __IShellChangeNotify_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellChangeNotify, 0xd82be2b1, 0x5764, 0x11d0, 0xa9,0x6e, 0x00,0xc0,0x4f,0xd7,0x05,0xa2);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellChangeNotify : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnChange(
        LONG lEvent,
        LPCITEMIDLIST pidl1,
        LPCITEMIDLIST pidl2) = 0;

};
#else
typedef struct IShellChangeNotifyVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellChangeNotify* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellChangeNotify* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellChangeNotify* This);

    /*** IShellChangeNotify methods ***/
    HRESULT (STDMETHODCALLTYPE *OnChange)(
        IShellChangeNotify* This,
        LONG lEvent,
        LPCITEMIDLIST pidl1,
        LPCITEMIDLIST pidl2);

    END_INTERFACE
} IShellChangeNotifyVtbl;
interface IShellChangeNotify {
    CONST_VTBL IShellChangeNotifyVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellChangeNotify_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IShellChangeNotify_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IShellChangeNotify_Release(p) (p)->lpVtbl->Release(p)
/*** IShellChangeNotify methods ***/
#define IShellChangeNotify_OnChange(p,a,b,c) (p)->lpVtbl->OnChange(p,a,b,c)
#endif

#endif

HRESULT CALLBACK IShellChangeNotify_OnChange_Proxy(
    IShellChangeNotify* This,
    LONG lEvent,
    LPCITEMIDLIST pidl1,
    LPCITEMIDLIST pidl2);
void __RPC_STUB IShellChangeNotify_OnChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellChangeNotify_INTERFACE_DEFINED__ */

#ifndef __IFileSystemBindData_FWD_DEFINED__
#define __IFileSystemBindData_FWD_DEFINED__
typedef interface IFileSystemBindData IFileSystemBindData;
#endif

/*****************************************************************************
 * IFileSystemBindData interface
 */
#ifndef __IFileSystemBindData_INTERFACE_DEFINED__
#define __IFileSystemBindData_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFileSystemBindData, 0x01e18d10, 0x4d8b, 0x11d2, 0x85,0x5d, 0x00,0x60,0x08,0x05,0x93,0x67);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IFileSystemBindData : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFindData(
        const WIN32_FIND_DATAW *pfd) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFindData(
        WIN32_FIND_DATAW *pfd) = 0;

};
#else
typedef struct IFileSystemBindDataVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IFileSystemBindData* This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IFileSystemBindData* This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IFileSystemBindData* This);

    /*** IFileSystemBindData methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFindData)(
        IFileSystemBindData* This,
        const WIN32_FIND_DATAW *pfd);

    HRESULT (STDMETHODCALLTYPE *GetFindData)(
        IFileSystemBindData* This,
        WIN32_FIND_DATAW *pfd);

    END_INTERFACE
} IFileSystemBindDataVtbl;
interface IFileSystemBindData {
    CONST_VTBL IFileSystemBindDataVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFileSystemBindData_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IFileSystemBindData_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IFileSystemBindData_Release(p) (p)->lpVtbl->Release(p)
/*** IFileSystemBindData methods ***/
#define IFileSystemBindData_SetFindData(p,a) (p)->lpVtbl->SetFindData(p,a)
#define IFileSystemBindData_GetFindData(p,a) (p)->lpVtbl->GetFindData(p,a)
#endif

#endif

HRESULT CALLBACK IFileSystemBindData_SetFindData_Proxy(
    IFileSystemBindData* This,
    const WIN32_FIND_DATAW *pfd);
void __RPC_STUB IFileSystemBindData_SetFindData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IFileSystemBindData_GetFindData_Proxy(
    IFileSystemBindData* This,
    WIN32_FIND_DATAW *pfd);
void __RPC_STUB IFileSystemBindData_GetFindData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFileSystemBindData_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER HWND_UserSize     (ULONG *, ULONG, HWND *);
unsigned char * __RPC_USER HWND_UserMarshal  (ULONG *, unsigned char *, HWND *);
unsigned char * __RPC_USER HWND_UserUnmarshal(ULONG *, unsigned char *, HWND *);
void            __RPC_USER HWND_UserFree     (ULONG *, HWND *);
ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);
ULONG           __RPC_USER HMENU_UserSize     (ULONG *, ULONG, HMENU *);
unsigned char * __RPC_USER HMENU_UserMarshal  (ULONG *, unsigned char *, HMENU *);
unsigned char * __RPC_USER HMENU_UserUnmarshal(ULONG *, unsigned char *, HMENU *);
void            __RPC_USER HMENU_UserFree     (ULONG *, HMENU *);
ULONG           __RPC_USER HGLOBAL_UserSize     (ULONG *, ULONG, HGLOBAL *);
unsigned char * __RPC_USER HGLOBAL_UserMarshal  (ULONG *, unsigned char *, HGLOBAL *);
unsigned char * __RPC_USER HGLOBAL_UserUnmarshal(ULONG *, unsigned char *, HGLOBAL *);
void            __RPC_USER HGLOBAL_UserFree     (ULONG *, HGLOBAL *);
ULONG           __RPC_USER HICON_UserSize     (ULONG *, ULONG, HICON *);
unsigned char * __RPC_USER HICON_UserMarshal  (ULONG *, unsigned char *, HICON *);
unsigned char * __RPC_USER HICON_UserUnmarshal(ULONG *, unsigned char *, HICON *);
void            __RPC_USER HICON_UserFree     (ULONG *, HICON *);
ULONG           __RPC_USER HBITMAP_UserSize     (ULONG *, ULONG, HBITMAP *);
unsigned char * __RPC_USER HBITMAP_UserMarshal  (ULONG *, unsigned char *, HBITMAP *);
unsigned char * __RPC_USER HBITMAP_UserUnmarshal(ULONG *, unsigned char *, HBITMAP *);
void            __RPC_USER HBITMAP_UserFree     (ULONG *, HBITMAP *);
ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif
#endif /* __WIDL_SHOBJIDL_H */
