/*** Autogenerated by WIDL 1.3.12 from shobjidl.idl - Do not edit ***/

#include <rpc.h>
#include <rpcndr.h>

#ifndef __WIDL_SHOBJIDL_H
#define __WIDL_SHOBJIDL_H

/* Forward declarations */

#ifndef __IPersistFolder_FWD_DEFINED__
#define __IPersistFolder_FWD_DEFINED__
typedef interface IPersistFolder IPersistFolder;
#endif

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

#ifndef __IPersistIDList_FWD_DEFINED__
#define __IPersistIDList_FWD_DEFINED__
typedef interface IPersistIDList IPersistIDList;
#endif

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

#ifndef __IShellPropSheetExt_FWD_DEFINED__
#define __IShellPropSheetExt_FWD_DEFINED__
typedef interface IShellPropSheetExt IShellPropSheetExt;
#endif

#ifndef __IShellFolder_FWD_DEFINED__
#define __IShellFolder_FWD_DEFINED__
typedef interface IShellFolder IShellFolder;
#endif

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

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

#ifndef __IShellItem_FWD_DEFINED__
#define __IShellItem_FWD_DEFINED__
typedef interface IShellItem IShellItem;
#endif

#ifndef __IShellItem2_FWD_DEFINED__
#define __IShellItem2_FWD_DEFINED__
typedef interface IShellItem2 IShellItem2;
#endif

#ifndef __INewWindowManager_FWD_DEFINED__
#define __INewWindowManager_FWD_DEFINED__
typedef interface INewWindowManager INewWindowManager;
#endif

#ifndef __IEnumShellItems_FWD_DEFINED__
#define __IEnumShellItems_FWD_DEFINED__
typedef interface IEnumShellItems IEnumShellItems;
#endif

#ifndef __IShellItemArray_FWD_DEFINED__
#define __IShellItemArray_FWD_DEFINED__
typedef interface IShellItemArray IShellItemArray;
#endif

#ifndef __IShellItemFilter_FWD_DEFINED__
#define __IShellItemFilter_FWD_DEFINED__
typedef interface IShellItemFilter IShellItemFilter;
#endif

#ifndef __IShellIcon_FWD_DEFINED__
#define __IShellIcon_FWD_DEFINED__
typedef interface IShellIcon IShellIcon;
#endif

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

#ifndef __IShellView2_FWD_DEFINED__
#define __IShellView2_FWD_DEFINED__
typedef interface IShellView2 IShellView2;
#endif

#ifndef __IFolderView_FWD_DEFINED__
#define __IFolderView_FWD_DEFINED__
typedef interface IFolderView IFolderView;
#endif

#ifndef __IShellBrowser_FWD_DEFINED__
#define __IShellBrowser_FWD_DEFINED__
typedef interface IShellBrowser IShellBrowser;
#endif

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

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

#ifndef __IShellExtInit_FWD_DEFINED__
#define __IShellExtInit_FWD_DEFINED__
typedef interface IShellExtInit IShellExtInit;
#endif

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

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

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

#ifndef __ICommDlgBrowser_FWD_DEFINED__
#define __ICommDlgBrowser_FWD_DEFINED__
typedef interface ICommDlgBrowser ICommDlgBrowser;
#endif

#ifndef __ICommDlgBrowser2_FWD_DEFINED__
#define __ICommDlgBrowser2_FWD_DEFINED__
typedef interface ICommDlgBrowser2 ICommDlgBrowser2;
#endif

#ifndef __ICommDlgBrowser3_FWD_DEFINED__
#define __ICommDlgBrowser3_FWD_DEFINED__
typedef interface ICommDlgBrowser3 ICommDlgBrowser3;
#endif

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

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

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

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

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

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

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

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

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

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

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

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

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

#ifndef __INewShortcutHookA_FWD_DEFINED__
#define __INewShortcutHookA_FWD_DEFINED__
typedef interface INewShortcutHookA INewShortcutHookA;
#endif

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

#ifndef __IRunnableTask_FWD_DEFINED__
#define __IRunnableTask_FWD_DEFINED__
typedef interface IRunnableTask IRunnableTask;
#endif

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

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

#ifndef __ITaskbarList_FWD_DEFINED__
#define __ITaskbarList_FWD_DEFINED__
typedef interface ITaskbarList ITaskbarList;
#endif

#ifndef __IAutoCompleteDropDown_FWD_DEFINED__
#define __IAutoCompleteDropDown_FWD_DEFINED__
typedef interface IAutoCompleteDropDown IAutoCompleteDropDown;
#endif

#ifndef __IProfferService_FWD_DEFINED__
#define __IProfferService_FWD_DEFINED__
typedef interface IProfferService IProfferService;
#endif

#ifndef __IExplorerBrowserEvents_FWD_DEFINED__
#define __IExplorerBrowserEvents_FWD_DEFINED__
typedef interface IExplorerBrowserEvents IExplorerBrowserEvents;
#endif

#ifndef __IExplorerPaneVisibility_FWD_DEFINED__
#define __IExplorerPaneVisibility_FWD_DEFINED__
typedef interface IExplorerPaneVisibility IExplorerPaneVisibility;
#endif

#ifndef __IExplorerBrowser_FWD_DEFINED__
#define __IExplorerBrowser_FWD_DEFINED__
typedef interface IExplorerBrowser IExplorerBrowser;
#endif

#ifndef __INameSpaceTreeControl_FWD_DEFINED__
#define __INameSpaceTreeControl_FWD_DEFINED__
typedef interface INameSpaceTreeControl INameSpaceTreeControl;
#endif

#ifndef __INameSpaceTreeControl2_FWD_DEFINED__
#define __INameSpaceTreeControl2_FWD_DEFINED__
typedef interface INameSpaceTreeControl2 INameSpaceTreeControl2;
#endif

#ifndef __INameSpaceTreeControlEvents_FWD_DEFINED__
#define __INameSpaceTreeControlEvents_FWD_DEFINED__
typedef interface INameSpaceTreeControlEvents INameSpaceTreeControlEvents;
#endif

#ifndef __INameSpaceTreeControlCustomDraw_FWD_DEFINED__
#define __INameSpaceTreeControlCustomDraw_FWD_DEFINED__
typedef interface INameSpaceTreeControlCustomDraw INameSpaceTreeControlCustomDraw;
#endif

#ifndef __INameSpaceTreeControlDropHandler_FWD_DEFINED__
#define __INameSpaceTreeControlDropHandler_FWD_DEFINED__
typedef interface INameSpaceTreeControlDropHandler INameSpaceTreeControlDropHandler;
#endif

#ifndef __IFileDialogEvents_FWD_DEFINED__
#define __IFileDialogEvents_FWD_DEFINED__
typedef interface IFileDialogEvents IFileDialogEvents;
#endif

#ifndef __IModalWindow_FWD_DEFINED__
#define __IModalWindow_FWD_DEFINED__
typedef interface IModalWindow IModalWindow;
#endif

#ifndef __IFileDialog_FWD_DEFINED__
#define __IFileDialog_FWD_DEFINED__
typedef interface IFileDialog IFileDialog;
#endif

#ifndef __IFileDialog2_FWD_DEFINED__
#define __IFileDialog2_FWD_DEFINED__
typedef interface IFileDialog2 IFileDialog2;
#endif

#ifndef __IFileOperationProgressSink_FWD_DEFINED__
#define __IFileOperationProgressSink_FWD_DEFINED__
typedef interface IFileOperationProgressSink IFileOperationProgressSink;
#endif

#ifndef __IFileSaveDialog_FWD_DEFINED__
#define __IFileSaveDialog_FWD_DEFINED__
typedef interface IFileSaveDialog IFileSaveDialog;
#endif

#ifndef __IFileOpenDialog_FWD_DEFINED__
#define __IFileOpenDialog_FWD_DEFINED__
typedef interface IFileOpenDialog IFileOpenDialog;
#endif

#ifndef __IFileDialogCustomize_FWD_DEFINED__
#define __IFileDialogCustomize_FWD_DEFINED__
typedef interface IFileDialogCustomize IFileDialogCustomize;
#endif

#ifndef __IFileDialogControlEvents_FWD_DEFINED__
#define __IFileDialogControlEvents_FWD_DEFINED__
typedef interface IFileDialogControlEvents IFileDialogControlEvents;
#endif

#ifndef __IKnownFolder_FWD_DEFINED__
#define __IKnownFolder_FWD_DEFINED__
typedef interface IKnownFolder IKnownFolder;
#endif

#ifndef __IKnownFolderManager_FWD_DEFINED__
#define __IKnownFolderManager_FWD_DEFINED__
typedef interface IKnownFolderManager IKnownFolderManager;
#endif

#ifndef __ExplorerBrowser_FWD_DEFINED__
#define __ExplorerBrowser_FWD_DEFINED__
typedef struct ExplorerBrowser ExplorerBrowser;
#endif /* defined __ExplorerBrowser_FWD_DEFINED__ */

#ifndef __FileOpenDialog_FWD_DEFINED__
#define __FileOpenDialog_FWD_DEFINED__
typedef struct FileOpenDialog FileOpenDialog;
#endif /* defined __FileOpenDialog_FWD_DEFINED__ */

#ifndef __FileSaveDialog_FWD_DEFINED__
#define __FileSaveDialog_FWD_DEFINED__
typedef struct FileSaveDialog FileSaveDialog;
#endif /* defined __FileSaveDialog_FWD_DEFINED__ */

#ifndef __NamespaceTreeControl_FWD_DEFINED__
#define __NamespaceTreeControl_FWD_DEFINED__
typedef struct NamespaceTreeControl NamespaceTreeControl;
#endif /* defined __NamespaceTreeControl_FWD_DEFINED__ */

#ifndef __KnownFolderManager_FWD_DEFINED__
#define __KnownFolderManager_FWD_DEFINED__
typedef struct KnownFolderManager KnownFolderManager;
#endif /* defined __KnownFolderManager_FWD_DEFINED__ */

/* Headers for imported files */

#include <objidl.h>
#include <oleidl.h>
#include <oaidl.h>
#include <docobj.h>
#include <shtypes.h>
#include <servprov.h>
#include <comcat.h>
#include <propidl.h>
#include <msxml.h>
#include <wtypes.h>
#include <propsys.h>

#ifdef __cplusplus
extern "C" {
#endif

/* FIXME: #include <sherrors.h> */
/*****************************************************************************
 * IPersistFolder interface
 */
#ifndef __IPersistFolder_INTERFACE_DEFINED__
#define __IPersistFolder_INTERFACE_DEFINED__

typedef IPersistFolder *LPPERSISTFOLDER;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPersistFolder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPersistFolder_Release(This) (This)->lpVtbl->Release(This)
/*** IPersist methods ***/
#define IPersistFolder_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
/*** IPersistFolder methods ***/
#define IPersistFolder_Initialize(This,pidl) (This)->lpVtbl->Initialize(This,pidl)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IPersistFolder2 interface
 */
#ifndef __IPersistFolder2_INTERFACE_DEFINED__
#define __IPersistFolder2_INTERFACE_DEFINED__

typedef IPersistFolder2 *LPPERSISTFOLDER2;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPersistFolder2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPersistFolder2_Release(This) (This)->lpVtbl->Release(This)
/*** IPersist methods ***/
#define IPersistFolder2_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
/*** IPersistFolder methods ***/
#define IPersistFolder2_Initialize(This,pidl) (This)->lpVtbl->Initialize(This,pidl)
/*** IPersistFolder2 methods ***/
#define IPersistFolder2_GetCurFolder(This,ppidl) (This)->lpVtbl->GetCurFolder(This,ppidl)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IPersistIDList interface
 */
#ifndef __IPersistIDList_INTERFACE_DEFINED__
#define __IPersistIDList_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPersistIDList, 0x1079acfc, 0x29bd, 0x11d3, 0x8e,0x0d, 0x00,0xc0,0x4f,0x68,0x37,0xd5);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IPersistIDList : public IPersist
{
    virtual HRESULT STDMETHODCALLTYPE SetIDList(
        LPCITEMIDLIST pidl) = 0;

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

};
#else
typedef struct IPersistIDListVtbl {
    BEGIN_INTERFACE

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

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

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

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

    /*** IPersistIDList methods ***/
    HRESULT (STDMETHODCALLTYPE *SetIDList)(
        IPersistIDList* This,
        LPCITEMIDLIST pidl);

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

    END_INTERFACE
} IPersistIDListVtbl;
interface IPersistIDList {
    CONST_VTBL IPersistIDListVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IPersistIDList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPersistIDList_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPersistIDList_Release(This) (This)->lpVtbl->Release(This)
/*** IPersist methods ***/
#define IPersistIDList_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
/*** IPersistIDList methods ***/
#define IPersistIDList_SetIDList(This,pidl) (This)->lpVtbl->SetIDList(This,pidl)
#define IPersistIDList_GetIDList(This,ppidl) (This)->lpVtbl->GetIDList(This,ppidl)
#endif

#endif

HRESULT STDMETHODCALLTYPE IPersistIDList_SetIDList_Proxy(
    IPersistIDList* This,
    LPCITEMIDLIST pidl);
void __RPC_STUB IPersistIDList_SetIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IPersistIDList_GetIDList_Proxy(
    IPersistIDList* This,
    LPITEMIDLIST *ppidl);
void __RPC_STUB IPersistIDList_GetIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IPersistIDList_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IEnumIDList interface
 */
#ifndef __IEnumIDList_INTERFACE_DEFINED__
#define __IEnumIDList_INTERFACE_DEFINED__

typedef IEnumIDList *LPENUMIDLIST;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumIDList_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumIDList_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumIDList methods ***/
#define IEnumIDList_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumIDList_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumIDList_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumIDList_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IEnumIDList_Skip_Proxy(
    IEnumIDList* This,
    ULONG celt);
void __RPC_STUB IEnumIDList_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumIDList_Reset_Proxy(
    IEnumIDList* This);
void __RPC_STUB IEnumIDList_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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
/*****************************************************************************
 * IShellPropSheetExt interface
 */
#ifndef __IShellPropSheetExt_INTERFACE_DEFINED__
#define __IShellPropSheetExt_INTERFACE_DEFINED__

enum tagSHELLPROPSHEETEXTPAGEID {
    EXPPS_FILETYPES = 0x1
};

typedef UINT EXPPS;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellPropSheetExt_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellPropSheetExt_Release(This) (This)->lpVtbl->Release(This)
/*** IShellPropSheetExt methods ***/
#define IShellPropSheetExt_AddPages(This,pfnAddPage,lParam) (This)->lpVtbl->AddPages(This,pfnAddPage,lParam)
#define IShellPropSheetExt_ReplacePage(This,uPageID,pfnReplaceWith,lParam) (This)->lpVtbl->ReplacePage(This,uPageID,pfnReplaceWith,lParam)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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;
/*****************************************************************************
 * IShellFolder interface
 */
#ifndef __IShellFolder_INTERFACE_DEFINED__
#define __IShellFolder_INTERFACE_DEFINED__

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;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellFolder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellFolder_Release(This) (This)->lpVtbl->Release(This)
/*** IShellFolder methods ***/
#define IShellFolder_ParseDisplayName(This,hwndOwner,pbcReserved,lpszDisplayName,pchEaten,ppidl,pdwAttributes) (This)->lpVtbl->ParseDisplayName(This,hwndOwner,pbcReserved,lpszDisplayName,pchEaten,ppidl,pdwAttributes)
#define IShellFolder_EnumObjects(This,hwndOwner,grfFlags,ppenumIDList) (This)->lpVtbl->EnumObjects(This,hwndOwner,grfFlags,ppenumIDList)
#define IShellFolder_BindToObject(This,pidl,pbcReserved,riid,ppvOut) (This)->lpVtbl->BindToObject(This,pidl,pbcReserved,riid,ppvOut)
#define IShellFolder_BindToStorage(This,pidl,pbcReserved,riid,ppvObj) (This)->lpVtbl->BindToStorage(This,pidl,pbcReserved,riid,ppvObj)
#define IShellFolder_CompareIDs(This,lParam,pidl1,pidl2) (This)->lpVtbl->CompareIDs(This,lParam,pidl1,pidl2)
#define IShellFolder_CreateViewObject(This,hwndOwner,riid,ppvOut) (This)->lpVtbl->CreateViewObject(This,hwndOwner,riid,ppvOut)
#define IShellFolder_GetAttributesOf(This,cidl,apidl,rgfInOut) (This)->lpVtbl->GetAttributesOf(This,cidl,apidl,rgfInOut)
#define IShellFolder_GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,prgfInOut,ppvOut) (This)->lpVtbl->GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,prgfInOut,ppvOut)
#define IShellFolder_GetDisplayNameOf(This,pidl,uFlags,lpName) (This)->lpVtbl->GetDisplayNameOf(This,pidl,uFlags,lpName)
#define IShellFolder_SetNameOf(This,hwnd,pidl,lpszName,uFlags,ppidlOut) (This)->lpVtbl->SetNameOf(This,hwnd,pidl,lpszName,uFlags,ppidlOut)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IEnumExtraSearch interface
 */
#ifndef __IEnumExtraSearch_INTERFACE_DEFINED__
#define __IEnumExtraSearch_INTERFACE_DEFINED__

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;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumExtraSearch_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumExtraSearch_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumExtraSearch methods ***/
#define IEnumExtraSearch_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumExtraSearch_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumExtraSearch_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumExtraSearch_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IEnumExtraSearch_Skip_Proxy(
    IEnumExtraSearch* This,
    ULONG celt);
void __RPC_STUB IEnumExtraSearch_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumExtraSearch_Reset_Proxy(
    IEnumExtraSearch* This);
void __RPC_STUB IEnumExtraSearch_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IShellFolder2 interface
 */
#ifndef __IShellFolder2_INTERFACE_DEFINED__
#define __IShellFolder2_INTERFACE_DEFINED__

typedef struct __WIDL_shobjidl_generated_name_00000001 {
    GUID fmtid;
    DWORD pid;
} SHCOLUMNID;
typedef struct __WIDL_shobjidl_generated_name_00000001 *LPSHCOLUMNID;
typedef const SHCOLUMNID *LPCSHCOLUMNID;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellFolder2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellFolder2_Release(This) (This)->lpVtbl->Release(This)
/*** IShellFolder methods ***/
#define IShellFolder2_ParseDisplayName(This,hwndOwner,pbcReserved,lpszDisplayName,pchEaten,ppidl,pdwAttributes) (This)->lpVtbl->ParseDisplayName(This,hwndOwner,pbcReserved,lpszDisplayName,pchEaten,ppidl,pdwAttributes)
#define IShellFolder2_EnumObjects(This,hwndOwner,grfFlags,ppenumIDList) (This)->lpVtbl->EnumObjects(This,hwndOwner,grfFlags,ppenumIDList)
#define IShellFolder2_BindToObject(This,pidl,pbcReserved,riid,ppvOut) (This)->lpVtbl->BindToObject(This,pidl,pbcReserved,riid,ppvOut)
#define IShellFolder2_BindToStorage(This,pidl,pbcReserved,riid,ppvObj) (This)->lpVtbl->BindToStorage(This,pidl,pbcReserved,riid,ppvObj)
#define IShellFolder2_CompareIDs(This,lParam,pidl1,pidl2) (This)->lpVtbl->CompareIDs(This,lParam,pidl1,pidl2)
#define IShellFolder2_CreateViewObject(This,hwndOwner,riid,ppvOut) (This)->lpVtbl->CreateViewObject(This,hwndOwner,riid,ppvOut)
#define IShellFolder2_GetAttributesOf(This,cidl,apidl,rgfInOut) (This)->lpVtbl->GetAttributesOf(This,cidl,apidl,rgfInOut)
#define IShellFolder2_GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,prgfInOut,ppvOut) (This)->lpVtbl->GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,prgfInOut,ppvOut)
#define IShellFolder2_GetDisplayNameOf(This,pidl,uFlags,lpName) (This)->lpVtbl->GetDisplayNameOf(This,pidl,uFlags,lpName)
#define IShellFolder2_SetNameOf(This,hwnd,pidl,lpszName,uFlags,ppidlOut) (This)->lpVtbl->SetNameOf(This,hwnd,pidl,lpszName,uFlags,ppidlOut)
/*** IShellFolder2 methods ***/
#define IShellFolder2_GetDefaultSearchGUID(This,lpguid) (This)->lpVtbl->GetDefaultSearchGUID(This,lpguid)
#define IShellFolder2_EnumSearches(This,ppenum) (This)->lpVtbl->EnumSearches(This,ppenum)
#define IShellFolder2_GetDefaultColumn(This,dwReserved,pSort,pDisplay) (This)->lpVtbl->GetDefaultColumn(This,dwReserved,pSort,pDisplay)
#define IShellFolder2_GetDefaultColumnState(This,iColumn,pcsFlags) (This)->lpVtbl->GetDefaultColumnState(This,iColumn,pcsFlags)
#define IShellFolder2_GetDetailsEx(This,pidl,pscid,pv) (This)->lpVtbl->GetDetailsEx(This,pidl,pscid,pv)
#define IShellFolder2_GetDetailsOf(This,pidl,iColumn,psd) (This)->lpVtbl->GetDetailsOf(This,pidl,iColumn,psd)
#define IShellFolder2_MapColumnToSCID(This,iColumn,pscid) (This)->lpVtbl->MapColumnToSCID(This,iColumn,pscid)
#endif

#endif

HRESULT STDMETHODCALLTYPE IShellFolder2_GetDefaultSearchGUID_Proxy(
    IShellFolder2* This,
    GUID *lpguid);
void __RPC_STUB IShellFolder2_GetDefaultSearchGUID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellFolder2_EnumSearches_Proxy(
    IShellFolder2* This,
    IEnumExtraSearch **ppenum);
void __RPC_STUB IShellFolder2_EnumSearches_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IShellItem interface
 */
#ifndef __IShellItem_INTERFACE_DEFINED__
#define __IShellItem_INTERFACE_DEFINED__

typedef enum __WIDL_shobjidl_generated_name_00000002 {
    SIGDN_NORMALDISPLAY = 0,
    SIGDN_PARENTRELATIVEPARSING = 0x80018001,
    SIGDN_DESKTOPABSOLUTEPARSING = 0x80028000,
    SIGDN_PARENTRELATIVEEDITING = 0x80031001,
    SIGDN_DESKTOPABSOLUTEEDITING = 0x8004c000,
    SIGDN_FILESYSPATH = 0x80058000,
    SIGDN_URL = 0x80068000,
    SIGDN_PARENTRELATIVEFORADDRESSBAR = 0x8007c001,
    SIGDN_PARENTRELATIVE = 0x80080001
} SIGDN;
enum _SICHINTF {
    SICHINT_DISPLAY = 0x0,
    SICHINT_CANONICAL = 0x10000000,
    SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000,
    SICHINT_ALLFIELDS = 0x80000000
};

typedef DWORD SICHINTF;
DEFINE_GUID(IID_IShellItem, 0x43826d1e, 0xe718, 0x42ee, 0xbc,0x55, 0xa1,0xe2,0x61,0xc3,0x7b,0xfe);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellItem : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE BindToHandler(
        IBindCtx *pbc,
        REFGUID rbhid,
        REFIID riid,
        void **ppvOut) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetParent(
        IShellItem **ppsi) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
        SIGDN sigdnName,
        LPWSTR *ppszName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAttributes(
        SFGAOF sfgaoMask,
        SFGAOF *psfgaoAttribs) = 0;

    virtual HRESULT STDMETHODCALLTYPE Compare(
        IShellItem *psi,
        SICHINTF hint,
        int *piOrder) = 0;

};
#else
typedef struct IShellItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IShellItem methods ***/
    HRESULT (STDMETHODCALLTYPE *BindToHandler)(
        IShellItem* This,
        IBindCtx *pbc,
        REFGUID rbhid,
        REFIID riid,
        void **ppvOut);

    HRESULT (STDMETHODCALLTYPE *GetParent)(
        IShellItem* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
        IShellItem* This,
        SIGDN sigdnName,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetAttributes)(
        IShellItem* This,
        SFGAOF sfgaoMask,
        SFGAOF *psfgaoAttribs);

    HRESULT (STDMETHODCALLTYPE *Compare)(
        IShellItem* This,
        IShellItem *psi,
        SICHINTF hint,
        int *piOrder);

    END_INTERFACE
} IShellItemVtbl;
interface IShellItem {
    CONST_VTBL IShellItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellItem_Release(This) (This)->lpVtbl->Release(This)
/*** IShellItem methods ***/
#define IShellItem_BindToHandler(This,pbc,rbhid,riid,ppvOut) (This)->lpVtbl->BindToHandler(This,pbc,rbhid,riid,ppvOut)
#define IShellItem_GetParent(This,ppsi) (This)->lpVtbl->GetParent(This,ppsi)
#define IShellItem_GetDisplayName(This,sigdnName,ppszName) (This)->lpVtbl->GetDisplayName(This,sigdnName,ppszName)
#define IShellItem_GetAttributes(This,sfgaoMask,psfgaoAttribs) (This)->lpVtbl->GetAttributes(This,sfgaoMask,psfgaoAttribs)
#define IShellItem_Compare(This,psi,hint,piOrder) (This)->lpVtbl->Compare(This,psi,hint,piOrder)
#endif

#endif

HRESULT STDMETHODCALLTYPE IShellItem_BindToHandler_Proxy(
    IShellItem* This,
    IBindCtx *pbc,
    REFGUID rbhid,
    REFIID riid,
    void **ppvOut);
void __RPC_STUB IShellItem_BindToHandler_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem_GetParent_Proxy(
    IShellItem* This,
    IShellItem **ppsi);
void __RPC_STUB IShellItem_GetParent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem_GetDisplayName_Proxy(
    IShellItem* This,
    SIGDN sigdnName,
    LPWSTR *ppszName);
void __RPC_STUB IShellItem_GetDisplayName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem_GetAttributes_Proxy(
    IShellItem* This,
    SFGAOF sfgaoMask,
    SFGAOF *psfgaoAttribs);
void __RPC_STUB IShellItem_GetAttributes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem_Compare_Proxy(
    IShellItem* This,
    IShellItem *psi,
    SICHINTF hint,
    int *piOrder);
void __RPC_STUB IShellItem_Compare_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellItem_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IShellItem2 interface
 */
#ifndef __IShellItem2_INTERFACE_DEFINED__
#define __IShellItem2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellItem2, 0x7e9fb0d3, 0x919f, 0x4307, 0xab,0x2e, 0x9b,0x18,0x60,0x31,0x0c,0x93);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellItem2 : public IShellItem
{
    virtual HRESULT STDMETHODCALLTYPE GetPropertyStore(
        GETPROPERTYSTOREFLAGS flags,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyStoreWithCreateObject(
        GETPROPERTYSTOREFLAGS flags,
        IUnknown *punkCreateObject,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyStoreForKeys(
        const PROPERTYKEY *rgKeys,
        UINT cKeys,
        GETPROPERTYSTOREFLAGS flags,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyDescriptionList(
        REFPROPERTYKEY keyType,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE Update(
        IBindCtx *pbc) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProperty(
        REFPROPERTYKEY key,
        PROPVARIANT *ppropvar) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCLSID(
        REFPROPERTYKEY key,
        CLSID *pclsid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFileTime(
        REFPROPERTYKEY key,
        FILETIME *pft) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt32(
        REFPROPERTYKEY key,
        int *pi) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        REFPROPERTYKEY key,
        LPWSTR *ppsz) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetUInt32(
        REFPROPERTYKEY key,
        ULONG *pui) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetUInt64(
        REFPROPERTYKEY key,
        ULONGLONG *pull) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBool(
        REFPROPERTYKEY key,
        BOOL *pf) = 0;

};
#else
typedef struct IShellItem2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IShellItem methods ***/
    HRESULT (STDMETHODCALLTYPE *BindToHandler)(
        IShellItem2* This,
        IBindCtx *pbc,
        REFGUID rbhid,
        REFIID riid,
        void **ppvOut);

    HRESULT (STDMETHODCALLTYPE *GetParent)(
        IShellItem2* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
        IShellItem2* This,
        SIGDN sigdnName,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetAttributes)(
        IShellItem2* This,
        SFGAOF sfgaoMask,
        SFGAOF *psfgaoAttribs);

    HRESULT (STDMETHODCALLTYPE *Compare)(
        IShellItem2* This,
        IShellItem *psi,
        SICHINTF hint,
        int *piOrder);

    /*** IShellItem2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPropertyStore)(
        IShellItem2* This,
        GETPROPERTYSTOREFLAGS flags,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetPropertyStoreWithCreateObject)(
        IShellItem2* This,
        GETPROPERTYSTOREFLAGS flags,
        IUnknown *punkCreateObject,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetPropertyStoreForKeys)(
        IShellItem2* This,
        const PROPERTYKEY *rgKeys,
        UINT cKeys,
        GETPROPERTYSTOREFLAGS flags,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetPropertyDescriptionList)(
        IShellItem2* This,
        REFPROPERTYKEY keyType,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *Update)(
        IShellItem2* This,
        IBindCtx *pbc);

    HRESULT (STDMETHODCALLTYPE *GetProperty)(
        IShellItem2* This,
        REFPROPERTYKEY key,
        PROPVARIANT *ppropvar);

    HRESULT (STDMETHODCALLTYPE *GetCLSID)(
        IShellItem2* This,
        REFPROPERTYKEY key,
        CLSID *pclsid);

    HRESULT (STDMETHODCALLTYPE *GetFileTime)(
        IShellItem2* This,
        REFPROPERTYKEY key,
        FILETIME *pft);

    HRESULT (STDMETHODCALLTYPE *GetInt32)(
        IShellItem2* This,
        REFPROPERTYKEY key,
        int *pi);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IShellItem2* This,
        REFPROPERTYKEY key,
        LPWSTR *ppsz);

    HRESULT (STDMETHODCALLTYPE *GetUInt32)(
        IShellItem2* This,
        REFPROPERTYKEY key,
        ULONG *pui);

    HRESULT (STDMETHODCALLTYPE *GetUInt64)(
        IShellItem2* This,
        REFPROPERTYKEY key,
        ULONGLONG *pull);

    HRESULT (STDMETHODCALLTYPE *GetBool)(
        IShellItem2* This,
        REFPROPERTYKEY key,
        BOOL *pf);

    END_INTERFACE
} IShellItem2Vtbl;
interface IShellItem2 {
    CONST_VTBL IShellItem2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellItem2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellItem2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellItem2_Release(This) (This)->lpVtbl->Release(This)
/*** IShellItem methods ***/
#define IShellItem2_BindToHandler(This,pbc,rbhid,riid,ppvOut) (This)->lpVtbl->BindToHandler(This,pbc,rbhid,riid,ppvOut)
#define IShellItem2_GetParent(This,ppsi) (This)->lpVtbl->GetParent(This,ppsi)
#define IShellItem2_GetDisplayName(This,sigdnName,ppszName) (This)->lpVtbl->GetDisplayName(This,sigdnName,ppszName)
#define IShellItem2_GetAttributes(This,sfgaoMask,psfgaoAttribs) (This)->lpVtbl->GetAttributes(This,sfgaoMask,psfgaoAttribs)
#define IShellItem2_Compare(This,psi,hint,piOrder) (This)->lpVtbl->Compare(This,psi,hint,piOrder)
/*** IShellItem2 methods ***/
#define IShellItem2_GetPropertyStore(This,flags,riid,ppv) (This)->lpVtbl->GetPropertyStore(This,flags,riid,ppv)
#define IShellItem2_GetPropertyStoreWithCreateObject(This,flags,punkCreateObject,riid,ppv) (This)->lpVtbl->GetPropertyStoreWithCreateObject(This,flags,punkCreateObject,riid,ppv)
#define IShellItem2_GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv) (This)->lpVtbl->GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv)
#define IShellItem2_GetPropertyDescriptionList(This,keyType,riid,ppv) (This)->lpVtbl->GetPropertyDescriptionList(This,keyType,riid,ppv)
#define IShellItem2_Update(This,pbc) (This)->lpVtbl->Update(This,pbc)
#define IShellItem2_GetProperty(This,key,ppropvar) (This)->lpVtbl->GetProperty(This,key,ppropvar)
#define IShellItem2_GetCLSID(This,key,pclsid) (This)->lpVtbl->GetCLSID(This,key,pclsid)
#define IShellItem2_GetFileTime(This,key,pft) (This)->lpVtbl->GetFileTime(This,key,pft)
#define IShellItem2_GetInt32(This,key,pi) (This)->lpVtbl->GetInt32(This,key,pi)
#define IShellItem2_GetString(This,key,ppsz) (This)->lpVtbl->GetString(This,key,ppsz)
#define IShellItem2_GetUInt32(This,key,pui) (This)->lpVtbl->GetUInt32(This,key,pui)
#define IShellItem2_GetUInt64(This,key,pull) (This)->lpVtbl->GetUInt64(This,key,pull)
#define IShellItem2_GetBool(This,key,pf) (This)->lpVtbl->GetBool(This,key,pf)
#endif

#endif

HRESULT STDMETHODCALLTYPE IShellItem2_GetPropertyStore_Proxy(
    IShellItem2* This,
    GETPROPERTYSTOREFLAGS flags,
    REFIID riid,
    void **ppv);
void __RPC_STUB IShellItem2_GetPropertyStore_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem2_GetPropertyStoreWithCreateObject_Proxy(
    IShellItem2* This,
    GETPROPERTYSTOREFLAGS flags,
    IUnknown *punkCreateObject,
    REFIID riid,
    void **ppv);
void __RPC_STUB IShellItem2_GetPropertyStoreWithCreateObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem2_GetPropertyStoreForKeys_Proxy(
    IShellItem2* This,
    const PROPERTYKEY *rgKeys,
    UINT cKeys,
    GETPROPERTYSTOREFLAGS flags,
    REFIID riid,
    void **ppv);
void __RPC_STUB IShellItem2_GetPropertyStoreForKeys_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem2_GetPropertyDescriptionList_Proxy(
    IShellItem2* This,
    REFPROPERTYKEY keyType,
    REFIID riid,
    void **ppv);
void __RPC_STUB IShellItem2_GetPropertyDescriptionList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem2_Update_Proxy(
    IShellItem2* This,
    IBindCtx *pbc);
void __RPC_STUB IShellItem2_Update_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem2_GetProperty_Proxy(
    IShellItem2* This,
    REFPROPERTYKEY key,
    PROPVARIANT *ppropvar);
void __RPC_STUB IShellItem2_GetProperty_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem2_GetCLSID_Proxy(
    IShellItem2* This,
    REFPROPERTYKEY key,
    CLSID *pclsid);
void __RPC_STUB IShellItem2_GetCLSID_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem2_GetFileTime_Proxy(
    IShellItem2* This,
    REFPROPERTYKEY key,
    FILETIME *pft);
void __RPC_STUB IShellItem2_GetFileTime_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem2_GetInt32_Proxy(
    IShellItem2* This,
    REFPROPERTYKEY key,
    int *pi);
void __RPC_STUB IShellItem2_GetInt32_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem2_GetString_Proxy(
    IShellItem2* This,
    REFPROPERTYKEY key,
    LPWSTR *ppsz);
void __RPC_STUB IShellItem2_GetString_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem2_GetUInt32_Proxy(
    IShellItem2* This,
    REFPROPERTYKEY key,
    ULONG *pui);
void __RPC_STUB IShellItem2_GetUInt32_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem2_GetUInt64_Proxy(
    IShellItem2* This,
    REFPROPERTYKEY key,
    ULONGLONG *pull);
void __RPC_STUB IShellItem2_GetUInt64_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItem2_GetBool_Proxy(
    IShellItem2* This,
    REFPROPERTYKEY key,
    BOOL *pf);
void __RPC_STUB IShellItem2_GetBool_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellItem2_INTERFACE_DEFINED__ */

typedef enum tagNWMF {
    NWMF_UNLOADING = 0x1,
    NWMF_USERINITED = 0x2,
    NWMF_FIRST = 0x4,
    NWMF_OVERRIDEKEY = 0x8,
    NWMF_SHOWHELP = 0x10,
    NWMF_HTMLDIALOG = 0x20,
    NWMF_FROMDIALOGCHILD = 0x40,
    NWMF_USERREQUESTED = 0x80,
    NWMF_USERALLOWED = 0x100
} NWMF;
/*****************************************************************************
 * INewWindowManager interface
 */
#ifndef __INewWindowManager_INTERFACE_DEFINED__
#define __INewWindowManager_INTERFACE_DEFINED__

DEFINE_GUID(IID_INewWindowManager, 0xd2bc4c84, 0x3f72, 0x4a52, 0xa6,0x04, 0x7b,0xcb,0xf3,0x98,0x2c,0xbb);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface INewWindowManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE EvaluateNewWindow(
        LPCWSTR pszUrl,
        LPCWSTR pszName,
        LPCWSTR pszUrlContext,
        LPCWSTR pszFeatures,
        BOOL fReplace,
        DWORD dwFlags,
        DWORD dwUserActionTime) = 0;

};
#else
typedef struct INewWindowManagerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INewWindowManager methods ***/
    HRESULT (STDMETHODCALLTYPE *EvaluateNewWindow)(
        INewWindowManager* This,
        LPCWSTR pszUrl,
        LPCWSTR pszName,
        LPCWSTR pszUrlContext,
        LPCWSTR pszFeatures,
        BOOL fReplace,
        DWORD dwFlags,
        DWORD dwUserActionTime);

    END_INTERFACE
} INewWindowManagerVtbl;
interface INewWindowManager {
    CONST_VTBL INewWindowManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define INewWindowManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INewWindowManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INewWindowManager_Release(This) (This)->lpVtbl->Release(This)
/*** INewWindowManager methods ***/
#define INewWindowManager_EvaluateNewWindow(This,pszUrl,pszName,pszUrlContext,pszFeatures,fReplace,dwFlags,dwUserActionTime) (This)->lpVtbl->EvaluateNewWindow(This,pszUrl,pszName,pszUrlContext,pszFeatures,fReplace,dwFlags,dwUserActionTime)
#endif

#endif

HRESULT STDMETHODCALLTYPE INewWindowManager_EvaluateNewWindow_Proxy(
    INewWindowManager* This,
    LPCWSTR pszUrl,
    LPCWSTR pszName,
    LPCWSTR pszUrlContext,
    LPCWSTR pszFeatures,
    BOOL fReplace,
    DWORD dwFlags,
    DWORD dwUserActionTime);
void __RPC_STUB INewWindowManager_EvaluateNewWindow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __INewWindowManager_INTERFACE_DEFINED__ */

#define SID_SNewWindowManager IID_INewWindowManager
/*****************************************************************************
 * IEnumShellItems interface
 */
#ifndef __IEnumShellItems_INTERFACE_DEFINED__
#define __IEnumShellItems_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumShellItems, 0x70629033, 0xe363, 0x4a28, 0xa5,0x67, 0x0d,0xb7,0x80,0x06,0xe6,0xd7);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IEnumShellItems : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        IShellItem **rgelt,
        ULONG *pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

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

};
#else
typedef struct IEnumShellItemsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumShellItems methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumShellItems* This,
        ULONG celt,
        IShellItem **rgelt,
        ULONG *pceltFetched);

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

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

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

    END_INTERFACE
} IEnumShellItemsVtbl;
interface IEnumShellItems {
    CONST_VTBL IEnumShellItemsVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumShellItems_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumShellItems_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumShellItems_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumShellItems methods ***/
#define IEnumShellItems_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumShellItems_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumShellItems_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumShellItems_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumShellItems_RemoteNext_Proxy(
    IEnumShellItems* This,
    ULONG celt,
    IShellItem **rgelt,
    ULONG *pceltFetched);
void __RPC_STUB IEnumShellItems_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumShellItems_Skip_Proxy(
    IEnumShellItems* This,
    ULONG celt);
void __RPC_STUB IEnumShellItems_Skip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumShellItems_Reset_Proxy(
    IEnumShellItems* This);
void __RPC_STUB IEnumShellItems_Reset_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IEnumShellItems_Clone_Proxy(
    IEnumShellItems* This,
    IEnumShellItems **ppenum);
void __RPC_STUB IEnumShellItems_Clone_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumShellItems_Next_Proxy(
    IEnumShellItems* This,
    ULONG celt,
    IShellItem **rgelt,
    ULONG *pceltFetched);
HRESULT __RPC_STUB IEnumShellItems_Next_Stub(
    IEnumShellItems* This,
    ULONG celt,
    IShellItem **rgelt,
    ULONG *pceltFetched);

#endif  /* __IEnumShellItems_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IShellItemArray interface
 */
#ifndef __IShellItemArray_INTERFACE_DEFINED__
#define __IShellItemArray_INTERFACE_DEFINED__

typedef enum SIATTRIBFLAGS {
    SIATTRIBFLAGS_AND = 0x1,
    SIATTRIBFLAGS_OR = 0x2,
    SIATTRIBFLAGS_APPCOMPAT = 0x3,
    SIATTRIBFLAGS_MASK = 0x3,
    SIATTRIBFLAGS_ALLITEMS = 0x4000
} SIATTRIBFLAGS;
DEFINE_ENUM_FLAG_OPERATORS(SIATTRIBFLAGS)
DEFINE_GUID(IID_IShellItemArray, 0xb63ea76d, 0x1f85, 0x456f, 0xa1,0x9c, 0x48,0x15,0x9e,0xfa,0x85,0x8b);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellItemArray : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE BindToHandler(
        IBindCtx *pbc,
        REFGUID bhid,
        REFIID riid,
        void **ppvOut) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyStore(
        GETPROPERTYSTOREFLAGS flags,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyDescriptionList(
        REFPROPERTYKEY keyType,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAttributes(
        SIATTRIBFLAGS AttribFlags,
        SFGAOF sfgaoMask,
        SFGAOF *psfgaoAttribs) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCount(
        DWORD *pdwNumItems) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetItemAt(
        DWORD dwIndex,
        IShellItem **ppsi) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumItems(
        IEnumShellItems **ppenumShellItems) = 0;

};
#else
typedef struct IShellItemArrayVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IShellItemArray methods ***/
    HRESULT (STDMETHODCALLTYPE *BindToHandler)(
        IShellItemArray* This,
        IBindCtx *pbc,
        REFGUID bhid,
        REFIID riid,
        void **ppvOut);

    HRESULT (STDMETHODCALLTYPE *GetPropertyStore)(
        IShellItemArray* This,
        GETPROPERTYSTOREFLAGS flags,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetPropertyDescriptionList)(
        IShellItemArray* This,
        REFPROPERTYKEY keyType,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetAttributes)(
        IShellItemArray* This,
        SIATTRIBFLAGS AttribFlags,
        SFGAOF sfgaoMask,
        SFGAOF *psfgaoAttribs);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        IShellItemArray* This,
        DWORD *pdwNumItems);

    HRESULT (STDMETHODCALLTYPE *GetItemAt)(
        IShellItemArray* This,
        DWORD dwIndex,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *EnumItems)(
        IShellItemArray* This,
        IEnumShellItems **ppenumShellItems);

    END_INTERFACE
} IShellItemArrayVtbl;
interface IShellItemArray {
    CONST_VTBL IShellItemArrayVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellItemArray_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellItemArray_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellItemArray_Release(This) (This)->lpVtbl->Release(This)
/*** IShellItemArray methods ***/
#define IShellItemArray_BindToHandler(This,pbc,bhid,riid,ppvOut) (This)->lpVtbl->BindToHandler(This,pbc,bhid,riid,ppvOut)
#define IShellItemArray_GetPropertyStore(This,flags,riid,ppv) (This)->lpVtbl->GetPropertyStore(This,flags,riid,ppv)
#define IShellItemArray_GetPropertyDescriptionList(This,keyType,riid,ppv) (This)->lpVtbl->GetPropertyDescriptionList(This,keyType,riid,ppv)
#define IShellItemArray_GetAttributes(This,AttribFlags,sfgaoMask,psfgaoAttribs) (This)->lpVtbl->GetAttributes(This,AttribFlags,sfgaoMask,psfgaoAttribs)
#define IShellItemArray_GetCount(This,pdwNumItems) (This)->lpVtbl->GetCount(This,pdwNumItems)
#define IShellItemArray_GetItemAt(This,dwIndex,ppsi) (This)->lpVtbl->GetItemAt(This,dwIndex,ppsi)
#define IShellItemArray_EnumItems(This,ppenumShellItems) (This)->lpVtbl->EnumItems(This,ppenumShellItems)
#endif

#endif

HRESULT STDMETHODCALLTYPE IShellItemArray_BindToHandler_Proxy(
    IShellItemArray* This,
    IBindCtx *pbc,
    REFGUID bhid,
    REFIID riid,
    void **ppvOut);
void __RPC_STUB IShellItemArray_BindToHandler_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItemArray_GetPropertyStore_Proxy(
    IShellItemArray* This,
    GETPROPERTYSTOREFLAGS flags,
    REFIID riid,
    void **ppv);
void __RPC_STUB IShellItemArray_GetPropertyStore_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItemArray_GetPropertyDescriptionList_Proxy(
    IShellItemArray* This,
    REFPROPERTYKEY keyType,
    REFIID riid,
    void **ppv);
void __RPC_STUB IShellItemArray_GetPropertyDescriptionList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItemArray_GetAttributes_Proxy(
    IShellItemArray* This,
    SIATTRIBFLAGS AttribFlags,
    SFGAOF sfgaoMask,
    SFGAOF *psfgaoAttribs);
void __RPC_STUB IShellItemArray_GetAttributes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItemArray_GetCount_Proxy(
    IShellItemArray* This,
    DWORD *pdwNumItems);
void __RPC_STUB IShellItemArray_GetCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItemArray_GetItemAt_Proxy(
    IShellItemArray* This,
    DWORD dwIndex,
    IShellItem **ppsi);
void __RPC_STUB IShellItemArray_GetItemAt_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItemArray_EnumItems_Proxy(
    IShellItemArray* This,
    IEnumShellItems **ppenumShellItems);
void __RPC_STUB IShellItemArray_EnumItems_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellItemArray_INTERFACE_DEFINED__ */

typedef enum DATAOBJ_GET_ITEM_FLAGS {
    DOGIF_DEFAULT = 0x0,
    DOGIF_TRAVERSE_LINK = 0x1,
    DOGIF_NO_HDROP = 0x2,
    DOGIF_NO_URL = 0x4,
    DOGIF_ONLY_IF_ONE = 0x8
} DATAOBJ_GET_ITEM_FLAGS;
DEFINE_ENUM_FLAG_OPERATORS(DATAOBJ_GET_ITEM_FLAGS)
HRESULT WINAPI SHGetNameFromIDList(PCIDLIST_ABSOLUTE pidl, SIGDN sigdnName, PWSTR *ppszName);
HRESULT WINAPI SHCreateItemFromParsingName(PCWSTR pszPath, IBindCtx *pbc, REFIID riid, void **ppv);
HRESULT WINAPI SHCreateItemFromIDList(PCIDLIST_ABSOLUTE pidl, REFIID riid, void **ppv);
HRESULT WINAPI SHGetItemFromDataObject(IDataObject *pdtobj, DATAOBJ_GET_ITEM_FLAGS dwFlags, REFIID riid, void **ppv);
HRESULT WINAPI SHGetIDListFromObject(IUnknown *punk, PIDLIST_ABSOLUTE *ppidl);
HRESULT WINAPI SHGetItemFromObject(IUnknown *punk, REFIID riid, void **ppv);
HRESULT WINAPI SHCreateShellItemArray(PCIDLIST_ABSOLUTE pidlParent, IShellFolder* psf, UINT cidl, PCUITEMID_CHILD_ARRAY ppidl, IShellItemArray **ppsiItemArray);
HRESULT WINAPI SHCreateShellItemArrayFromShellItem(IShellItem *psi, REFIID riid, void **ppv);
HRESULT WINAPI SHCreateShellItemArrayFromDataObject(IDataObject *pdo, REFIID riid, void **ppv);
/*****************************************************************************
 * IShellItemFilter interface
 */
#ifndef __IShellItemFilter_INTERFACE_DEFINED__
#define __IShellItemFilter_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellItemFilter, 0x2659b475, 0xeeb8, 0x48b7, 0x8f,0x07, 0xb3,0x78,0x81,0x0f,0x48,0xcf);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellItemFilter : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE IncludeItem(
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEnumFlagsForItem(
        IShellItem *psi,
        SHCONTF *pgrfFlags) = 0;

};
#else
typedef struct IShellItemFilterVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IShellItemFilter methods ***/
    HRESULT (STDMETHODCALLTYPE *IncludeItem)(
        IShellItemFilter* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *GetEnumFlagsForItem)(
        IShellItemFilter* This,
        IShellItem *psi,
        SHCONTF *pgrfFlags);

    END_INTERFACE
} IShellItemFilterVtbl;
interface IShellItemFilter {
    CONST_VTBL IShellItemFilterVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellItemFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellItemFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellItemFilter_Release(This) (This)->lpVtbl->Release(This)
/*** IShellItemFilter methods ***/
#define IShellItemFilter_IncludeItem(This,psi) (This)->lpVtbl->IncludeItem(This,psi)
#define IShellItemFilter_GetEnumFlagsForItem(This,psi,pgrfFlags) (This)->lpVtbl->GetEnumFlagsForItem(This,psi,pgrfFlags)
#endif

#endif

HRESULT STDMETHODCALLTYPE IShellItemFilter_IncludeItem_Proxy(
    IShellItemFilter* This,
    IShellItem *psi);
void __RPC_STUB IShellItemFilter_IncludeItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellItemFilter_GetEnumFlagsForItem_Proxy(
    IShellItemFilter* This,
    IShellItem *psi,
    SHCONTF *pgrfFlags);
void __RPC_STUB IShellItemFilter_GetEnumFlagsForItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellItemFilter_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,
    FWF_NOENUMREFRESH = 0x80000,
    FWF_NOGROUPING = 0x100000,
    FWF_FULLROWSELECT = 0x200000,
    FWF_NOFILTERS = 0x400000,
    FWF_NOCOLUMNHEADER = 0x800000,
    FWF_NOHEADERINALLVIEWS = 0x1000000,
    FWF_EXTENDEDTILES = 0x2000000,
    FWF_TRICHECKSELECT = 0x4000000,
    FWF_AUTOCHECKSELECT = 0x8000000,
    FWF_NOBROWSERVIEWSTATE = 0x10000000,
    FWF_SUBSETGROUPS = 0x20000000,
    FWF_USESEARCHFOLDER = 0x40000000,
    FWF_ALLOWRTLREADING = 0x80000000
} FOLDERFLAGS;
typedef enum __WIDL_shobjidl_generated_name_00000004 {
    FVM_AUTO = -1,
    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_CONTENT = 8,
    FVM_LAST = FVM_CONTENT
} 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;
/*****************************************************************************
 * IShellIcon interface
 */
#ifndef __IShellIcon_INTERFACE_DEFINED__
#define __IShellIcon_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellIcon, 0x000214e5, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellIcon : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetIconOf(
        PCUITEMID_CHILD pidl,
        UINT flags,
        int *pIconIndex) = 0;

};
#else
typedef struct IShellIconVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IShellIcon methods ***/
    HRESULT (STDMETHODCALLTYPE *GetIconOf)(
        IShellIcon* This,
        PCUITEMID_CHILD pidl,
        UINT flags,
        int *pIconIndex);

    END_INTERFACE
} IShellIconVtbl;
interface IShellIcon {
    CONST_VTBL IShellIconVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellIcon_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellIcon_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellIcon_Release(This) (This)->lpVtbl->Release(This)
/*** IShellIcon methods ***/
#define IShellIcon_GetIconOf(This,pidl,flags,pIconIndex) (This)->lpVtbl->GetIconOf(This,pidl,flags,pIconIndex)
#endif

#endif

HRESULT STDMETHODCALLTYPE IShellIcon_GetIconOf_Proxy(
    IShellIcon* This,
    PCUITEMID_CHILD pidl,
    UINT flags,
    int *pIconIndex);
void __RPC_STUB IShellIcon_GetIconOf_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellIcon_INTERFACE_DEFINED__ */

#ifndef __IShellBrowser_FWD_DEFINED__
#define __IShellBrowser_FWD_DEFINED__
typedef interface IShellBrowser IShellBrowser;
#endif

/*****************************************************************************
 * IShellView interface
 */
#ifndef __IShellView_INTERFACE_DEFINED__
#define __IShellView_INTERFACE_DEFINED__

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;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellView_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellView_Release(This) (This)->lpVtbl->Release(This)
/*** IOleWindow methods ***/
#define IShellView_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
#define IShellView_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
/*** IShellView methods ***/
#define IShellView_TranslateAccelerator(This,pmsg) (This)->lpVtbl->TranslateAccelerator(This,pmsg)
#define IShellView_EnableModeless(This,fEnable) (This)->lpVtbl->EnableModeless(This,fEnable)
#define IShellView_UIActivate(This,uState) (This)->lpVtbl->UIActivate(This,uState)
#define IShellView_Refresh(This) (This)->lpVtbl->Refresh(This)
#define IShellView_CreateViewWindow(This,psvPrevious,lpfs,psb,prcView,phWnd) (This)->lpVtbl->CreateViewWindow(This,psvPrevious,lpfs,psb,prcView,phWnd)
#define IShellView_DestroyViewWindow(This) (This)->lpVtbl->DestroyViewWindow(This)
#define IShellView_GetCurrentInfo(This,lpfs) (This)->lpVtbl->GetCurrentInfo(This,lpfs)
#define IShellView_AddPropertySheetPages(This,dwReserved,pfn,lparam) (This)->lpVtbl->AddPropertySheetPages(This,dwReserved,pfn,lparam)
#define IShellView_SaveViewState(This) (This)->lpVtbl->SaveViewState(This)
#define IShellView_SelectItem(This,pidlItem,uFlags) (This)->lpVtbl->SelectItem(This,pidlItem,uFlags)
#define IShellView_GetItemObject(This,uItem,riid,ppv) (This)->lpVtbl->GetItemObject(This,uItem,riid,ppv)
#endif

#endif

HRESULT STDMETHODCALLTYPE IShellView_TranslateAccelerator_Proxy(
    IShellView* This,
    MSG *pmsg);
void __RPC_STUB IShellView_TranslateAccelerator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellView_EnableModeless_Proxy(
    IShellView* This,
    BOOL fEnable);
void __RPC_STUB IShellView_EnableModeless_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellView_UIActivate_Proxy(
    IShellView* This,
    UINT uState);
void __RPC_STUB IShellView_UIActivate_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellView_Refresh_Proxy(
    IShellView* This);
void __RPC_STUB IShellView_Refresh_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IShellView_DestroyViewWindow_Proxy(
    IShellView* This);
void __RPC_STUB IShellView_DestroyViewWindow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellView_GetCurrentInfo_Proxy(
    IShellView* This,
    LPFOLDERSETTINGS lpfs);
void __RPC_STUB IShellView_GetCurrentInfo_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellView_SaveViewState_Proxy(
    IShellView* This);
void __RPC_STUB IShellView_SaveViewState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IShellView2 interface
 */
#ifndef __IShellView2_INTERFACE_DEFINED__
#define __IShellView2_INTERFACE_DEFINED__

typedef GUID SHELLVIEWID;
#include <pshpack8.h>
typedef struct _SV2CVW2_PARAMS {
    DWORD cbSize;
    IShellView *psvPrev;
    LPCFOLDERSETTINGS pfs;
    IShellBrowser *psbOwner;
    RECT *prcView;
    const SHELLVIEWID *pvid;
    HWND hwndView;
} SV2CVW2_PARAMS;
typedef struct _SV2CVW2_PARAMS *LPSV2CVW2_PARAMS;
#include <poppack.h>
DEFINE_GUID(IID_IShellView2, 0x88e39e80, 0x3578, 0x11cf, 0xae,0x69, 0x08,0x00,0x2b,0x2e,0x12,0x62);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IShellView2 : public IShellView
{
    virtual HRESULT STDMETHODCALLTYPE GetView(
        SHELLVIEWID *view_guid,
        ULONG view_type) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateViewWindow2(
        LPSV2CVW2_PARAMS view_params) = 0;

    virtual HRESULT STDMETHODCALLTYPE HandleRename(
        LPCITEMIDLIST new_pidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE SelectAndPositionItem(
        LPCITEMIDLIST item,
        UINT flags,
        POINT *point) = 0;

};
#else
typedef struct IShellView2Vtbl {
    BEGIN_INTERFACE

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /*** IShellView2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetView)(
        IShellView2* This,
        SHELLVIEWID *view_guid,
        ULONG view_type);

    HRESULT (STDMETHODCALLTYPE *CreateViewWindow2)(
        IShellView2* This,
        LPSV2CVW2_PARAMS view_params);

    HRESULT (STDMETHODCALLTYPE *HandleRename)(
        IShellView2* This,
        LPCITEMIDLIST new_pidl);

    HRESULT (STDMETHODCALLTYPE *SelectAndPositionItem)(
        IShellView2* This,
        LPCITEMIDLIST item,
        UINT flags,
        POINT *point);

    END_INTERFACE
} IShellView2Vtbl;
interface IShellView2 {
    CONST_VTBL IShellView2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IShellView2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellView2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellView2_Release(This) (This)->lpVtbl->Release(This)
/*** IOleWindow methods ***/
#define IShellView2_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
#define IShellView2_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
/*** IShellView methods ***/
#define IShellView2_TranslateAccelerator(This,pmsg) (This)->lpVtbl->TranslateAccelerator(This,pmsg)
#define IShellView2_EnableModeless(This,fEnable) (This)->lpVtbl->EnableModeless(This,fEnable)
#define IShellView2_UIActivate(This,uState) (This)->lpVtbl->UIActivate(This,uState)
#define IShellView2_Refresh(This) (This)->lpVtbl->Refresh(This)
#define IShellView2_CreateViewWindow(This,psvPrevious,lpfs,psb,prcView,phWnd) (This)->lpVtbl->CreateViewWindow(This,psvPrevious,lpfs,psb,prcView,phWnd)
#define IShellView2_DestroyViewWindow(This) (This)->lpVtbl->DestroyViewWindow(This)
#define IShellView2_GetCurrentInfo(This,lpfs) (This)->lpVtbl->GetCurrentInfo(This,lpfs)
#define IShellView2_AddPropertySheetPages(This,dwReserved,pfn,lparam) (This)->lpVtbl->AddPropertySheetPages(This,dwReserved,pfn,lparam)
#define IShellView2_SaveViewState(This) (This)->lpVtbl->SaveViewState(This)
#define IShellView2_SelectItem(This,pidlItem,uFlags) (This)->lpVtbl->SelectItem(This,pidlItem,uFlags)
#define IShellView2_GetItemObject(This,uItem,riid,ppv) (This)->lpVtbl->GetItemObject(This,uItem,riid,ppv)
/*** IShellView2 methods ***/
#define IShellView2_GetView(This,view_guid,view_type) (This)->lpVtbl->GetView(This,view_guid,view_type)
#define IShellView2_CreateViewWindow2(This,view_params) (This)->lpVtbl->CreateViewWindow2(This,view_params)
#define IShellView2_HandleRename(This,new_pidl) (This)->lpVtbl->HandleRename(This,new_pidl)
#define IShellView2_SelectAndPositionItem(This,item,flags,point) (This)->lpVtbl->SelectAndPositionItem(This,item,flags,point)
#endif

#endif

HRESULT STDMETHODCALLTYPE IShellView2_GetView_Proxy(
    IShellView2* This,
    SHELLVIEWID *view_guid,
    ULONG view_type);
void __RPC_STUB IShellView2_GetView_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellView2_CreateViewWindow2_Proxy(
    IShellView2* This,
    LPSV2CVW2_PARAMS view_params);
void __RPC_STUB IShellView2_CreateViewWindow2_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellView2_HandleRename_Proxy(
    IShellView2* This,
    LPCITEMIDLIST new_pidl);
void __RPC_STUB IShellView2_HandleRename_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellView2_SelectAndPositionItem_Proxy(
    IShellView2* This,
    LPCITEMIDLIST item,
    UINT flags,
    POINT *point);
void __RPC_STUB IShellView2_SelectAndPositionItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IShellView2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IFolderView interface
 */
#ifndef __IFolderView_INTERFACE_DEFINED__
#define __IFolderView_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFolderView, 0xcde725b0, 0xccc9, 0x4519, 0x91,0x7e, 0x32,0x5d,0x72,0xfa,0xb4,0xce);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IFolderView : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCurrentViewMode(
        UINT *mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCurrentViewMode(
        UINT mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolder(
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        int index,
        PITEMID_CHILD *ppidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE ItemCount(
        UINT flags,
        int *items) = 0;

    virtual HRESULT STDMETHODCALLTYPE Items(
        UINT flags,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSelectionMarkedItem(
        int *item) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFocusedItem(
        int *item) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetItemPosition(
        PCUITEMID_CHILD pidl,
        POINT *ppt) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSpacing(
        POINT *pt) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultSpacing(
        POINT *pt) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAutoArrange(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SelectItem(
        int item,
        DWORD flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SelectAndPositionItems(
        UINT cidl,
        PCUITEMID_CHILD_ARRAY apidl,
        POINT *apt,
        DWORD flags) = 0;

};
#else
typedef struct IFolderViewVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFolderView methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCurrentViewMode)(
        IFolderView* This,
        UINT *mode);

    HRESULT (STDMETHODCALLTYPE *SetCurrentViewMode)(
        IFolderView* This,
        UINT mode);

    HRESULT (STDMETHODCALLTYPE *GetFolder)(
        IFolderView* This,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *Item)(
        IFolderView* This,
        int index,
        PITEMID_CHILD *ppidl);

    HRESULT (STDMETHODCALLTYPE *ItemCount)(
        IFolderView* This,
        UINT flags,
        int *items);

    HRESULT (STDMETHODCALLTYPE *Items)(
        IFolderView* This,
        UINT flags,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetSelectionMarkedItem)(
        IFolderView* This,
        int *item);

    HRESULT (STDMETHODCALLTYPE *GetFocusedItem)(
        IFolderView* This,
        int *item);

    HRESULT (STDMETHODCALLTYPE *GetItemPosition)(
        IFolderView* This,
        PCUITEMID_CHILD pidl,
        POINT *ppt);

    HRESULT (STDMETHODCALLTYPE *GetSpacing)(
        IFolderView* This,
        POINT *pt);

    HRESULT (STDMETHODCALLTYPE *GetDefaultSpacing)(
        IFolderView* This,
        POINT *pt);

    HRESULT (STDMETHODCALLTYPE *GetAutoArrange)(
        IFolderView* This);

    HRESULT (STDMETHODCALLTYPE *SelectItem)(
        IFolderView* This,
        int item,
        DWORD flags);

    HRESULT (STDMETHODCALLTYPE *SelectAndPositionItems)(
        IFolderView* This,
        UINT cidl,
        PCUITEMID_CHILD_ARRAY apidl,
        POINT *apt,
        DWORD flags);

    END_INTERFACE
} IFolderViewVtbl;
interface IFolderView {
    CONST_VTBL IFolderViewVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFolderView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFolderView_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFolderView_Release(This) (This)->lpVtbl->Release(This)
/*** IFolderView methods ***/
#define IFolderView_GetCurrentViewMode(This,mode) (This)->lpVtbl->GetCurrentViewMode(This,mode)
#define IFolderView_SetCurrentViewMode(This,mode) (This)->lpVtbl->SetCurrentViewMode(This,mode)
#define IFolderView_GetFolder(This,riid,ppv) (This)->lpVtbl->GetFolder(This,riid,ppv)
#define IFolderView_Item(This,index,ppidl) (This)->lpVtbl->Item(This,index,ppidl)
#define IFolderView_ItemCount(This,flags,items) (This)->lpVtbl->ItemCount(This,flags,items)
#define IFolderView_Items(This,flags,riid,ppv) (This)->lpVtbl->Items(This,flags,riid,ppv)
#define IFolderView_GetSelectionMarkedItem(This,item) (This)->lpVtbl->GetSelectionMarkedItem(This,item)
#define IFolderView_GetFocusedItem(This,item) (This)->lpVtbl->GetFocusedItem(This,item)
#define IFolderView_GetItemPosition(This,pidl,ppt) (This)->lpVtbl->GetItemPosition(This,pidl,ppt)
#define IFolderView_GetSpacing(This,pt) (This)->lpVtbl->GetSpacing(This,pt)
#define IFolderView_GetDefaultSpacing(This,pt) (This)->lpVtbl->GetDefaultSpacing(This,pt)
#define IFolderView_GetAutoArrange(This) (This)->lpVtbl->GetAutoArrange(This)
#define IFolderView_SelectItem(This,item,flags) (This)->lpVtbl->SelectItem(This,item,flags)
#define IFolderView_SelectAndPositionItems(This,cidl,apidl,apt,flags) (This)->lpVtbl->SelectAndPositionItems(This,cidl,apidl,apt,flags)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFolderView_GetCurrentViewMode_Proxy(
    IFolderView* This,
    UINT *mode);
void __RPC_STUB IFolderView_GetCurrentViewMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFolderView_SetCurrentViewMode_Proxy(
    IFolderView* This,
    UINT mode);
void __RPC_STUB IFolderView_SetCurrentViewMode_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFolderView_GetFolder_Proxy(
    IFolderView* This,
    REFIID riid,
    void **ppv);
void __RPC_STUB IFolderView_GetFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFolderView_Item_Proxy(
    IFolderView* This,
    int index,
    PITEMID_CHILD *ppidl);
void __RPC_STUB IFolderView_Item_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFolderView_ItemCount_Proxy(
    IFolderView* This,
    UINT flags,
    int *items);
void __RPC_STUB IFolderView_ItemCount_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFolderView_Items_Proxy(
    IFolderView* This,
    UINT flags,
    REFIID riid,
    void **ppv);
void __RPC_STUB IFolderView_Items_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFolderView_GetSelectionMarkedItem_Proxy(
    IFolderView* This,
    int *item);
void __RPC_STUB IFolderView_GetSelectionMarkedItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFolderView_GetFocusedItem_Proxy(
    IFolderView* This,
    int *item);
void __RPC_STUB IFolderView_GetFocusedItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFolderView_GetItemPosition_Proxy(
    IFolderView* This,
    PCUITEMID_CHILD pidl,
    POINT *ppt);
void __RPC_STUB IFolderView_GetItemPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFolderView_GetSpacing_Proxy(
    IFolderView* This,
    POINT *pt);
void __RPC_STUB IFolderView_GetSpacing_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFolderView_GetDefaultSpacing_Proxy(
    IFolderView* This,
    POINT *pt);
void __RPC_STUB IFolderView_GetDefaultSpacing_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFolderView_GetAutoArrange_Proxy(
    IFolderView* This);
void __RPC_STUB IFolderView_GetAutoArrange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFolderView_SelectItem_Proxy(
    IFolderView* This,
    int item,
    DWORD flags);
void __RPC_STUB IFolderView_SelectItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFolderView_SelectAndPositionItems_Proxy(
    IFolderView* This,
    UINT cidl,
    PCUITEMID_CHILD_ARRAY apidl,
    POINT *apt,
    DWORD flags);
void __RPC_STUB IFolderView_SelectAndPositionItems_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFolderView_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IShellBrowser interface
 */
#ifndef __IShellBrowser_INTERFACE_DEFINED__
#define __IShellBrowser_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_KEEPSAMETEMPLATE      0x00020000
#define SBSP_KEEPWORDWHEELTEXT     0x00040000
#define SBSP_ACTIVATE_NOFOCUS      0x00080000
#define SBSP_CREATENOHISTORY       0x00100000
#define SBSP_PLAYNOSOUND           0x00200000
#define SBSP_CALLERUNTURUSTED      0x00800000
#define SBSP_TRUSTFIRSTDOWNLOAD    0x01000000
#define SBSP_UNTRUSTEDFORDOWNLOAD  0x02000000
#define SBSP_NOAUTOSELECT          0x04000000
#define SBSP_WRITENOHISTORY        0x08000000
#define SBSP_TRUSTEDFORACTIVEX     0x10000000
#define SBSP_FEEDNAVIGATION        0x20000000
#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
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellBrowser_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellBrowser_Release(This) (This)->lpVtbl->Release(This)
/*** IOleWindow methods ***/
#define IShellBrowser_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
#define IShellBrowser_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
/*** IShellBrowser methods ***/
#define IShellBrowser_InsertMenusSB(This,hmenuShared,lpMenuWidths) (This)->lpVtbl->InsertMenusSB(This,hmenuShared,lpMenuWidths)
#define IShellBrowser_SetMenuSB(This,hmenuShared,holemenuReserved,hwndActiveObject) (This)->lpVtbl->SetMenuSB(This,hmenuShared,holemenuReserved,hwndActiveObject)
#define IShellBrowser_RemoveMenusSB(This,hmenuShared) (This)->lpVtbl->RemoveMenusSB(This,hmenuShared)
#define IShellBrowser_SetStatusTextSB(This,pszStatusText) (This)->lpVtbl->SetStatusTextSB(This,pszStatusText)
#define IShellBrowser_EnableModelessSB(This,fEnable) (This)->lpVtbl->EnableModelessSB(This,fEnable)
#define IShellBrowser_TranslateAcceleratorSB(This,pmsg,wID) (This)->lpVtbl->TranslateAcceleratorSB(This,pmsg,wID)
#define IShellBrowser_BrowseObject(This,pidl,wFlags) (This)->lpVtbl->BrowseObject(This,pidl,wFlags)
#define IShellBrowser_GetViewStateStream(This,grfMode,ppStrm) (This)->lpVtbl->GetViewStateStream(This,grfMode,ppStrm)
#define IShellBrowser_GetControlWindow(This,id,phwnd) (This)->lpVtbl->GetControlWindow(This,id,phwnd)
#define IShellBrowser_SendControlMsg(This,id,uMsg,wParam,lParam,pret) (This)->lpVtbl->SendControlMsg(This,id,uMsg,wParam,lParam,pret)
#define IShellBrowser_QueryActiveShellView(This,ppshv) (This)->lpVtbl->QueryActiveShellView(This,ppshv)
#define IShellBrowser_OnViewWindowActive(This,pshv) (This)->lpVtbl->OnViewWindowActive(This,pshv)
#define IShellBrowser_SetToolbarItems(This,lpButtons,nButtons,uFlags) (This)->lpVtbl->SetToolbarItems(This,lpButtons,nButtons,uFlags)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IShellBrowser_RemoveMenusSB_Proxy(
    IShellBrowser* This,
    HMENU hmenuShared);
void __RPC_STUB IShellBrowser_RemoveMenusSB_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellBrowser_SetStatusTextSB_Proxy(
    IShellBrowser* This,
    LPCOLESTR pszStatusText);
void __RPC_STUB IShellBrowser_SetStatusTextSB_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellBrowser_EnableModelessSB_Proxy(
    IShellBrowser* This,
    BOOL fEnable);
void __RPC_STUB IShellBrowser_EnableModelessSB_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IShellBrowser_QueryActiveShellView_Proxy(
    IShellBrowser* This,
    IShellView **ppshv);
void __RPC_STUB IShellBrowser_QueryActiveShellView_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IShellLinkA interface
 */
#ifndef __IShellLinkA_INTERFACE_DEFINED__
#define __IShellLinkA_INTERFACE_DEFINED__

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;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellLinkA_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellLinkA_Release(This) (This)->lpVtbl->Release(This)
/*** IShellLinkA methods ***/
#define IShellLinkA_GetPath(This,pszFile,cch,pfd,fFlags) (This)->lpVtbl->GetPath(This,pszFile,cch,pfd,fFlags)
#define IShellLinkA_GetIDList(This,ppidl) (This)->lpVtbl->GetIDList(This,ppidl)
#define IShellLinkA_SetIDList(This,pidl) (This)->lpVtbl->SetIDList(This,pidl)
#define IShellLinkA_GetDescription(This,pszName,cch) (This)->lpVtbl->GetDescription(This,pszName,cch)
#define IShellLinkA_SetDescription(This,pszName) (This)->lpVtbl->SetDescription(This,pszName)
#define IShellLinkA_GetWorkingDirectory(This,pszDir,cch) (This)->lpVtbl->GetWorkingDirectory(This,pszDir,cch)
#define IShellLinkA_SetWorkingDirectory(This,pszDir) (This)->lpVtbl->SetWorkingDirectory(This,pszDir)
#define IShellLinkA_GetArguments(This,pszArgs,cch) (This)->lpVtbl->GetArguments(This,pszArgs,cch)
#define IShellLinkA_SetArguments(This,pszArgs) (This)->lpVtbl->SetArguments(This,pszArgs)
#define IShellLinkA_GetHotkey(This,pwHotkey) (This)->lpVtbl->GetHotkey(This,pwHotkey)
#define IShellLinkA_SetHotkey(This,wHotkey) (This)->lpVtbl->SetHotkey(This,wHotkey)
#define IShellLinkA_GetShowCmd(This,piShowCmd) (This)->lpVtbl->GetShowCmd(This,piShowCmd)
#define IShellLinkA_SetShowCmd(This,iShowCmd) (This)->lpVtbl->SetShowCmd(This,iShowCmd)
#define IShellLinkA_GetIconLocation(This,pszIconPath,cch,piIcon) (This)->lpVtbl->GetIconLocation(This,pszIconPath,cch,piIcon)
#define IShellLinkA_SetIconLocation(This,pszIconPath,iIcon) (This)->lpVtbl->SetIconLocation(This,pszIconPath,iIcon)
#define IShellLinkA_SetRelativePath(This,pszPathRel,dwReserved) (This)->lpVtbl->SetRelativePath(This,pszPathRel,dwReserved)
#define IShellLinkA_Resolve(This,hwnd,fFlags) (This)->lpVtbl->Resolve(This,hwnd,fFlags)
#define IShellLinkA_SetPath(This,pszFile) (This)->lpVtbl->SetPath(This,pszFile)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IShellLinkA_GetIDList_Proxy(
    IShellLinkA* This,
    LPITEMIDLIST *ppidl);
void __RPC_STUB IShellLinkA_GetIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellLinkA_SetIDList_Proxy(
    IShellLinkA* This,
    LPCITEMIDLIST pidl);
void __RPC_STUB IShellLinkA_SetIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IShellLinkA_SetDescription_Proxy(
    IShellLinkA* This,
    LPCSTR pszName);
void __RPC_STUB IShellLinkA_SetDescription_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IShellLinkA_SetWorkingDirectory_Proxy(
    IShellLinkA* This,
    LPCSTR pszDir);
void __RPC_STUB IShellLinkA_SetWorkingDirectory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IShellLinkA_SetArguments_Proxy(
    IShellLinkA* This,
    LPCSTR pszArgs);
void __RPC_STUB IShellLinkA_SetArguments_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellLinkA_GetHotkey_Proxy(
    IShellLinkA* This,
    WORD *pwHotkey);
void __RPC_STUB IShellLinkA_GetHotkey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellLinkA_SetHotkey_Proxy(
    IShellLinkA* This,
    WORD wHotkey);
void __RPC_STUB IShellLinkA_SetHotkey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellLinkA_GetShowCmd_Proxy(
    IShellLinkA* This,
    int *piShowCmd);
void __RPC_STUB IShellLinkA_GetShowCmd_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellLinkA_SetShowCmd_Proxy(
    IShellLinkA* This,
    int iShowCmd);
void __RPC_STUB IShellLinkA_SetShowCmd_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * 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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellLinkW_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellLinkW_Release(This) (This)->lpVtbl->Release(This)
/*** IShellLinkW methods ***/
#define IShellLinkW_GetPath(This,pszFile,cch,pfd,fFlags) (This)->lpVtbl->GetPath(This,pszFile,cch,pfd,fFlags)
#define IShellLinkW_GetIDList(This,ppidl) (This)->lpVtbl->GetIDList(This,ppidl)
#define IShellLinkW_SetIDList(This,pidl) (This)->lpVtbl->SetIDList(This,pidl)
#define IShellLinkW_GetDescription(This,pszName,cch) (This)->lpVtbl->GetDescription(This,pszName,cch)
#define IShellLinkW_SetDescription(This,pszName) (This)->lpVtbl->SetDescription(This,pszName)
#define IShellLinkW_GetWorkingDirectory(This,pszDir,cch) (This)->lpVtbl->GetWorkingDirectory(This,pszDir,cch)
#define IShellLinkW_SetWorkingDirectory(This,pszDir) (This)->lpVtbl->SetWorkingDirectory(This,pszDir)
#define IShellLinkW_GetArguments(This,pszArgs,cch) (This)->lpVtbl->GetArguments(This,pszArgs,cch)
#define IShellLinkW_SetArguments(This,pszArgs) (This)->lpVtbl->SetArguments(This,pszArgs)
#define IShellLinkW_GetHotkey(This,pwHotkey) (This)->lpVtbl->GetHotkey(This,pwHotkey)
#define IShellLinkW_SetHotkey(This,wHotkey) (This)->lpVtbl->SetHotkey(This,wHotkey)
#define IShellLinkW_GetShowCmd(This,piShowCmd) (This)->lpVtbl->GetShowCmd(This,piShowCmd)
#define IShellLinkW_SetShowCmd(This,iShowCmd) (This)->lpVtbl->SetShowCmd(This,iShowCmd)
#define IShellLinkW_GetIconLocation(This,pszIconPath,cch,piIcon) (This)->lpVtbl->GetIconLocation(This,pszIconPath,cch,piIcon)
#define IShellLinkW_SetIconLocation(This,pszIconPath,iIcon) (This)->lpVtbl->SetIconLocation(This,pszIconPath,iIcon)
#define IShellLinkW_SetRelativePath(This,pszPathRel,dwReserved) (This)->lpVtbl->SetRelativePath(This,pszPathRel,dwReserved)
#define IShellLinkW_Resolve(This,hwnd,fFlags) (This)->lpVtbl->Resolve(This,hwnd,fFlags)
#define IShellLinkW_SetPath(This,pszFile) (This)->lpVtbl->SetPath(This,pszFile)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IShellLinkW_GetIDList_Proxy(
    IShellLinkW* This,
    LPITEMIDLIST *ppidl);
void __RPC_STUB IShellLinkW_GetIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellLinkW_SetIDList_Proxy(
    IShellLinkW* This,
    LPCITEMIDLIST pidl);
void __RPC_STUB IShellLinkW_SetIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IShellLinkW_SetDescription_Proxy(
    IShellLinkW* This,
    LPCWSTR pszName);
void __RPC_STUB IShellLinkW_SetDescription_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IShellLinkW_SetWorkingDirectory_Proxy(
    IShellLinkW* This,
    LPCWSTR pszDir);
void __RPC_STUB IShellLinkW_SetWorkingDirectory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IShellLinkW_SetArguments_Proxy(
    IShellLinkW* This,
    LPCWSTR pszArgs);
void __RPC_STUB IShellLinkW_SetArguments_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellLinkW_GetHotkey_Proxy(
    IShellLinkW* This,
    WORD *pwHotkey);
void __RPC_STUB IShellLinkW_GetHotkey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellLinkW_SetHotkey_Proxy(
    IShellLinkW* This,
    WORD wHotkey);
void __RPC_STUB IShellLinkW_SetHotkey_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellLinkW_GetShowCmd_Proxy(
    IShellLinkW* This,
    int *piShowCmd);
void __RPC_STUB IShellLinkW_GetShowCmd_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellLinkW_SetShowCmd_Proxy(
    IShellLinkW* This,
    int iShowCmd);
void __RPC_STUB IShellLinkW_SetShowCmd_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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)
/*****************************************************************************
 * IShellExtInit interface
 */
#ifndef __IShellExtInit_INTERFACE_DEFINED__
#define __IShellExtInit_INTERFACE_DEFINED__

typedef IShellExtInit *LPSHELLEXTINIT;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellExtInit_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellExtInit_Release(This) (This)->lpVtbl->Release(This)
/*** IShellExtInit methods ***/
#define IShellExtInit_Initialize(This,pidlFolder,pdtobj,hkeyProgID) (This)->lpVtbl->Initialize(This,pidlFolder,pdtobj,hkeyProgID)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IPersistFolder3 interface
 */
#ifndef __IPersistFolder3_INTERFACE_DEFINED__
#define __IPersistFolder3_INTERFACE_DEFINED__

typedef struct __WIDL_shobjidl_generated_name_0000000A {
    LPITEMIDLIST pidlTargetFolder;
    WCHAR szTargetParsingName[260];
    WCHAR szNetworkProvider[260];
    DWORD dwAttributes;
    int csidl;
} PERSIST_FOLDER_TARGET_INFO;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPersistFolder3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPersistFolder3_Release(This) (This)->lpVtbl->Release(This)
/*** IPersist methods ***/
#define IPersistFolder3_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
/*** IPersistFolder methods ***/
#define IPersistFolder3_Initialize(This,pidl) (This)->lpVtbl->Initialize(This,pidl)
/*** IPersistFolder2 methods ***/
#define IPersistFolder3_GetCurFolder(This,ppidl) (This)->lpVtbl->GetCurFolder(This,ppidl)
/*** IPersistFolder3 methods ***/
#define IPersistFolder3_InitializeEx(This,pbc,pidlRoot,ppfti) (This)->lpVtbl->InitializeEx(This,pbc,pidlRoot,ppfti)
#define IPersistFolder3_GetFolderTargetInfo(This,ppfti) (This)->lpVtbl->GetFolderTargetInfo(This,ppfti)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IExtractIconA interface
 */
#ifndef __IExtractIconA_INTERFACE_DEFINED__
#define __IExtractIconA_INTERFACE_DEFINED__

#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;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExtractIconA_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExtractIconA_Release(This) (This)->lpVtbl->Release(This)
/*** IExtractIconA methods ***/
#define IExtractIconA_GetIconLocation(This,uFlags,szIconFile,cchMax,piIndex,pwFlags) (This)->lpVtbl->GetIconLocation(This,uFlags,szIconFile,cchMax,piIndex,pwFlags)
#define IExtractIconA_Extract(This,pszFile,nIconIndex,phiconLarge,phiconSmall,nIconSize) (This)->lpVtbl->Extract(This,pszFile,nIconIndex,phiconLarge,phiconSmall,nIconSize)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IExtractIconW interface
 */
#ifndef __IExtractIconW_INTERFACE_DEFINED__
#define __IExtractIconW_INTERFACE_DEFINED__

typedef IExtractIconW *LPEXTRACTICONW;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExtractIconW_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExtractIconW_Release(This) (This)->lpVtbl->Release(This)
/*** IExtractIconW methods ***/
#define IExtractIconW_GetIconLocation(This,uFlags,szIconFile,cchMax,piIndex,pwFlags) (This)->lpVtbl->GetIconLocation(This,uFlags,szIconFile,cchMax,piIndex,pwFlags)
#define IExtractIconW_Extract(This,pszFile,nIconIndex,phiconLarge,phiconSmall,nIconSize) (This)->lpVtbl->Extract(This,pszFile,nIconIndex,phiconLarge,phiconSmall,nIconSize)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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)
/*****************************************************************************
 * ICommDlgBrowser interface
 */
#ifndef __ICommDlgBrowser_INTERFACE_DEFINED__
#define __ICommDlgBrowser_INTERFACE_DEFINED__

#define CDBOSC_SETFOCUS     0x00000000
#define CDBOSC_KILLFOCUS    0x00000001
#define CDBOSC_SELCHANGE    0x00000002
#define CDBOSC_RENAME       0x00000003
#define CDBOSC_STATECHANGE  0x00000004
typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICommDlgBrowser_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICommDlgBrowser_Release(This) (This)->lpVtbl->Release(This)
/*** ICommDlgBrowser methods ***/
#define ICommDlgBrowser_OnDefaultCommand(This,shv) (This)->lpVtbl->OnDefaultCommand(This,shv)
#define ICommDlgBrowser_OnStateChange(This,shv,uChange) (This)->lpVtbl->OnStateChange(This,shv,uChange)
#define ICommDlgBrowser_IncludeObject(This,shv,pidl) (This)->lpVtbl->IncludeObject(This,shv,pidl)
#endif

#endif

HRESULT STDMETHODCALLTYPE ICommDlgBrowser_OnDefaultCommand_Proxy(
    ICommDlgBrowser* This,
    IShellView *shv);
void __RPC_STUB ICommDlgBrowser_OnDefaultCommand_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * ICommDlgBrowser2 interface
 */
#ifndef __ICommDlgBrowser2_INTERFACE_DEFINED__
#define __ICommDlgBrowser2_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICommDlgBrowser2, 0x10339516, 0x2894, 0x11d2, 0x90,0x39, 0x00,0xc0,0x4f,0x8e,0xeb,0x3e);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface ICommDlgBrowser2 : public ICommDlgBrowser
{
    virtual HRESULT STDMETHODCALLTYPE Notify(
        IShellView *ppshv,
        DWORD dwNotifyType) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultMenuText(
        IShellView *ppshv,
        LPWSTR pszText,
        int cchMax) = 0;

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

};
#else
typedef struct ICommDlgBrowser2Vtbl {
    BEGIN_INTERFACE

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

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

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

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

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

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

    /*** ICommDlgBrowser2 methods ***/
    HRESULT (STDMETHODCALLTYPE *Notify)(
        ICommDlgBrowser2* This,
        IShellView *ppshv,
        DWORD dwNotifyType);

    HRESULT (STDMETHODCALLTYPE *GetDefaultMenuText)(
        ICommDlgBrowser2* This,
        IShellView *ppshv,
        LPWSTR pszText,
        int cchMax);

    HRESULT (STDMETHODCALLTYPE *GetViewFlags)(
        ICommDlgBrowser2* This,
        DWORD *pdwFlags);

    END_INTERFACE
} ICommDlgBrowser2Vtbl;
interface ICommDlgBrowser2 {
    CONST_VTBL ICommDlgBrowser2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ICommDlgBrowser2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICommDlgBrowser2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICommDlgBrowser2_Release(This) (This)->lpVtbl->Release(This)
/*** ICommDlgBrowser methods ***/
#define ICommDlgBrowser2_OnDefaultCommand(This,shv) (This)->lpVtbl->OnDefaultCommand(This,shv)
#define ICommDlgBrowser2_OnStateChange(This,shv,uChange) (This)->lpVtbl->OnStateChange(This,shv,uChange)
#define ICommDlgBrowser2_IncludeObject(This,shv,pidl) (This)->lpVtbl->IncludeObject(This,shv,pidl)
/*** ICommDlgBrowser2 methods ***/
#define ICommDlgBrowser2_Notify(This,ppshv,dwNotifyType) (This)->lpVtbl->Notify(This,ppshv,dwNotifyType)
#define ICommDlgBrowser2_GetDefaultMenuText(This,ppshv,pszText,cchMax) (This)->lpVtbl->GetDefaultMenuText(This,ppshv,pszText,cchMax)
#define ICommDlgBrowser2_GetViewFlags(This,pdwFlags) (This)->lpVtbl->GetViewFlags(This,pdwFlags)
#endif

#endif

HRESULT STDMETHODCALLTYPE ICommDlgBrowser2_Notify_Proxy(
    ICommDlgBrowser2* This,
    IShellView *ppshv,
    DWORD dwNotifyType);
void __RPC_STUB ICommDlgBrowser2_Notify_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICommDlgBrowser2_GetDefaultMenuText_Proxy(
    ICommDlgBrowser2* This,
    IShellView *ppshv,
    LPWSTR pszText,
    int cchMax);
void __RPC_STUB ICommDlgBrowser2_GetDefaultMenuText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICommDlgBrowser2_GetViewFlags_Proxy(
    ICommDlgBrowser2* This,
    DWORD *pdwFlags);
void __RPC_STUB ICommDlgBrowser2_GetViewFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ICommDlgBrowser2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICommDlgBrowser3 interface
 */
#ifndef __ICommDlgBrowser3_INTERFACE_DEFINED__
#define __ICommDlgBrowser3_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICommDlgBrowser3, 0xc8ad25a1, 0x3294, 0x41ee, 0x81,0x65, 0x71,0x17,0x4b,0xd0,0x1c,0x57);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface ICommDlgBrowser3 : public ICommDlgBrowser2
{
    virtual HRESULT STDMETHODCALLTYPE OnColumnClicked(
        IShellView *ppshv,
        int iColumn) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentFilter(
        LPWSTR pszFileSpec,
        int cchFileSpec) = 0;

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

};
#else
typedef struct ICommDlgBrowser3Vtbl {
    BEGIN_INTERFACE

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

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

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

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

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

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

    /*** ICommDlgBrowser2 methods ***/
    HRESULT (STDMETHODCALLTYPE *Notify)(
        ICommDlgBrowser3* This,
        IShellView *ppshv,
        DWORD dwNotifyType);

    HRESULT (STDMETHODCALLTYPE *GetDefaultMenuText)(
        ICommDlgBrowser3* This,
        IShellView *ppshv,
        LPWSTR pszText,
        int cchMax);

    HRESULT (STDMETHODCALLTYPE *GetViewFlags)(
        ICommDlgBrowser3* This,
        DWORD *pdwFlags);

    /*** ICommDlgBrowser3 methods ***/
    HRESULT (STDMETHODCALLTYPE *OnColumnClicked)(
        ICommDlgBrowser3* This,
        IShellView *ppshv,
        int iColumn);

    HRESULT (STDMETHODCALLTYPE *GetCurrentFilter)(
        ICommDlgBrowser3* This,
        LPWSTR pszFileSpec,
        int cchFileSpec);

    HRESULT (STDMETHODCALLTYPE *OnPreviewCreated)(
        ICommDlgBrowser3* This,
        IShellView *ppshv);

    END_INTERFACE
} ICommDlgBrowser3Vtbl;
interface ICommDlgBrowser3 {
    CONST_VTBL ICommDlgBrowser3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ICommDlgBrowser3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICommDlgBrowser3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICommDlgBrowser3_Release(This) (This)->lpVtbl->Release(This)
/*** ICommDlgBrowser methods ***/
#define ICommDlgBrowser3_OnDefaultCommand(This,shv) (This)->lpVtbl->OnDefaultCommand(This,shv)
#define ICommDlgBrowser3_OnStateChange(This,shv,uChange) (This)->lpVtbl->OnStateChange(This,shv,uChange)
#define ICommDlgBrowser3_IncludeObject(This,shv,pidl) (This)->lpVtbl->IncludeObject(This,shv,pidl)
/*** ICommDlgBrowser2 methods ***/
#define ICommDlgBrowser3_Notify(This,ppshv,dwNotifyType) (This)->lpVtbl->Notify(This,ppshv,dwNotifyType)
#define ICommDlgBrowser3_GetDefaultMenuText(This,ppshv,pszText,cchMax) (This)->lpVtbl->GetDefaultMenuText(This,ppshv,pszText,cchMax)
#define ICommDlgBrowser3_GetViewFlags(This,pdwFlags) (This)->lpVtbl->GetViewFlags(This,pdwFlags)
/*** ICommDlgBrowser3 methods ***/
#define ICommDlgBrowser3_OnColumnClicked(This,ppshv,iColumn) (This)->lpVtbl->OnColumnClicked(This,ppshv,iColumn)
#define ICommDlgBrowser3_GetCurrentFilter(This,pszFileSpec,cchFileSpec) (This)->lpVtbl->GetCurrentFilter(This,pszFileSpec,cchFileSpec)
#define ICommDlgBrowser3_OnPreviewCreated(This,ppshv) (This)->lpVtbl->OnPreviewCreated(This,ppshv)
#endif

#endif

HRESULT STDMETHODCALLTYPE ICommDlgBrowser3_OnColumnClicked_Proxy(
    ICommDlgBrowser3* This,
    IShellView *ppshv,
    int iColumn);
void __RPC_STUB ICommDlgBrowser3_OnColumnClicked_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICommDlgBrowser3_GetCurrentFilter_Proxy(
    ICommDlgBrowser3* This,
    LPWSTR pszFileSpec,
    int cchFileSpec);
void __RPC_STUB ICommDlgBrowser3_GetCurrentFilter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ICommDlgBrowser3_OnPreviewCreated_Proxy(
    ICommDlgBrowser3* This,
    IShellView *ppshv);
void __RPC_STUB ICommDlgBrowser3_OnPreviewCreated_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ICommDlgBrowser3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDockingWindowFrame interface
 */
#ifndef __IDockingWindowFrame_INTERFACE_DEFINED__
#define __IDockingWindowFrame_INTERFACE_DEFINED__

#define DWFRF_NORMAL           0x0000
#define DWFRF_DELETECONFIGDATA 0x0001
#define DWFAF_HIDDEN           0x0001
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDockingWindowFrame_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDockingWindowFrame_Release(This) (This)->lpVtbl->Release(This)
/*** IOleWindow methods ***/
#define IDockingWindowFrame_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
#define IDockingWindowFrame_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
/*** IDockingWindowFrame methods ***/
#define IDockingWindowFrame_AddToolbar(This,punkSrc,pwszItem,dwAddFlags) (This)->lpVtbl->AddToolbar(This,punkSrc,pwszItem,dwAddFlags)
#define IDockingWindowFrame_RemoveToolbar(This,punkSrc,dwRemoveFlags) (This)->lpVtbl->RemoveToolbar(This,punkSrc,dwRemoveFlags)
#define IDockingWindowFrame_FindToolbar(This,pwszItem,riid,ppvObj) (This)->lpVtbl->FindToolbar(This,pwszItem,riid,ppvObj)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IDragSourceHelper interface
 */
#ifndef __IDragSourceHelper_INTERFACE_DEFINED__
#define __IDragSourceHelper_INTERFACE_DEFINED__

typedef struct __WIDL_shobjidl_generated_name_0000000B {
    SIZE sizeDragImage;
    POINT ptOffset;
    HBITMAP hbmpDragImage;
    COLORREF crColorKey;
} SHDRAGIMAGE;
typedef struct __WIDL_shobjidl_generated_name_0000000B *LPSHDRAGIMAGE;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDragSourceHelper_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDragSourceHelper_Release(This) (This)->lpVtbl->Release(This)
/*** IDragSourceHelper methods ***/
#define IDragSourceHelper_InitializeFromBitmap(This,pshdi,pDataObject) (This)->lpVtbl->InitializeFromBitmap(This,pshdi,pDataObject)
#define IDragSourceHelper_InitializeFromWindow(This,hwnd,ppt,pDataObject) (This)->lpVtbl->InitializeFromWindow(This,hwnd,ppt,pDataObject)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * 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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDropTargetHelper_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDropTargetHelper_Release(This) (This)->lpVtbl->Release(This)
/*** IDropTargetHelper methods ***/
#define IDropTargetHelper_DragEnter(This,hwndTarget,pDataObject,ppt,dwEffect) (This)->lpVtbl->DragEnter(This,hwndTarget,pDataObject,ppt,dwEffect)
#define IDropTargetHelper_DragLeave(This) (This)->lpVtbl->DragLeave(This)
#define IDropTargetHelper_DragOver(This,ppt,dwEffect) (This)->lpVtbl->DragOver(This,ppt,dwEffect)
#define IDropTargetHelper_Drop(This,pDataObject,ppt,dwEffect) (This)->lpVtbl->Drop(This,pDataObject,ppt,dwEffect)
#define IDropTargetHelper_Show(This,fShow) (This)->lpVtbl->Show(This,fShow)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IDropTargetHelper_DragLeave_Proxy(
    IDropTargetHelper* This);
void __RPC_STUB IDropTargetHelper_DragLeave_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IContextMenu interface
 */
#ifndef __IContextMenu_INTERFACE_DEFINED__
#define __IContextMenu_INTERFACE_DEFINED__

#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_NOASYNC        SEE_MASK_NOASYNC
#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;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IContextMenu_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IContextMenu_Release(This) (This)->lpVtbl->Release(This)
/*** IContextMenu methods ***/
#define IContextMenu_QueryContextMenu(This,hmenu,indexMenu,idCmdFirst,idCmdLast,uFlags) (This)->lpVtbl->QueryContextMenu(This,hmenu,indexMenu,idCmdFirst,idCmdLast,uFlags)
#define IContextMenu_InvokeCommand(This,lpici) (This)->lpVtbl->InvokeCommand(This,lpici)
#define IContextMenu_GetCommandString(This,idCmd,uType,pwReserved,pszName,cchMax) (This)->lpVtbl->GetCommandString(This,idCmd,uType,pwReserved,pszName,cchMax)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE IContextMenu_InvokeCommand_Proxy(
    IContextMenu* This,
    LPCMINVOKECOMMANDINFO lpici);
void __RPC_STUB IContextMenu_InvokeCommand_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IContextMenu2 interface
 */
#ifndef __IContextMenu2_INTERFACE_DEFINED__
#define __IContextMenu2_INTERFACE_DEFINED__

typedef IContextMenu2 *LPCONTEXTMENU2;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IContextMenu2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IContextMenu2_Release(This) (This)->lpVtbl->Release(This)
/*** IContextMenu methods ***/
#define IContextMenu2_QueryContextMenu(This,hmenu,indexMenu,idCmdFirst,idCmdLast,uFlags) (This)->lpVtbl->QueryContextMenu(This,hmenu,indexMenu,idCmdFirst,idCmdLast,uFlags)
#define IContextMenu2_InvokeCommand(This,lpici) (This)->lpVtbl->InvokeCommand(This,lpici)
#define IContextMenu2_GetCommandString(This,idCmd,uType,pwReserved,pszName,cchMax) (This)->lpVtbl->GetCommandString(This,idCmd,uType,pwReserved,pszName,cchMax)
/*** IContextMenu2 methods ***/
#define IContextMenu2_HandleMenuMsg(This,uMsg,wParam,lParam) (This)->lpVtbl->HandleMenuMsg(This,uMsg,wParam,lParam)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IContextMenu3 interface
 */
#ifndef __IContextMenu3_INTERFACE_DEFINED__
#define __IContextMenu3_INTERFACE_DEFINED__

typedef IContextMenu3 *LPCONTEXTMENU3;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IContextMenu3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IContextMenu3_Release(This) (This)->lpVtbl->Release(This)
/*** IContextMenu methods ***/
#define IContextMenu3_QueryContextMenu(This,hmenu,indexMenu,idCmdFirst,idCmdLast,uFlags) (This)->lpVtbl->QueryContextMenu(This,hmenu,indexMenu,idCmdFirst,idCmdLast,uFlags)
#define IContextMenu3_InvokeCommand(This,lpici) (This)->lpVtbl->InvokeCommand(This,lpici)
#define IContextMenu3_GetCommandString(This,idCmd,uType,pwReserved,pszName,cchMax) (This)->lpVtbl->GetCommandString(This,idCmd,uType,pwReserved,pszName,cchMax)
/*** IContextMenu2 methods ***/
#define IContextMenu3_HandleMenuMsg(This,uMsg,wParam,lParam) (This)->lpVtbl->HandleMenuMsg(This,uMsg,wParam,lParam)
/*** IContextMenu3 methods ***/
#define IContextMenu3_HandleMenuMsg2(This,uMsg,wParam,lParam,plResult) (This)->lpVtbl->HandleMenuMsg2(This,uMsg,wParam,lParam,plResult)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IShellExecuteHookA interface
 */
#ifndef __IShellExecuteHookA_INTERFACE_DEFINED__
#define __IShellExecuteHookA_INTERFACE_DEFINED__

struct _SHELLEXECUTEINFOA;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellExecuteHookA_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellExecuteHookA_Release(This) (This)->lpVtbl->Release(This)
/*** IShellExecuteHookA methods ***/
#define IShellExecuteHookA_Execute(This,pei) (This)->lpVtbl->Execute(This,pei)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IShellExecuteHookW interface
 */
#ifndef __IShellExecuteHookW_INTERFACE_DEFINED__
#define __IShellExecuteHookW_INTERFACE_DEFINED__

struct _SHELLEXECUTEINFOW;
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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellExecuteHookW_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellExecuteHookW_Release(This) (This)->lpVtbl->Release(This)
/*** IShellExecuteHookW methods ***/
#define IShellExecuteHookW_Execute(This,pei) (This)->lpVtbl->Execute(This,pei)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * 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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellLinkDataList_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellLinkDataList_Release(This) (This)->lpVtbl->Release(This)
/*** IShellLinkDataList methods ***/
#define IShellLinkDataList_AddDataBlock(This,pDataBlock) (This)->lpVtbl->AddDataBlock(This,pDataBlock)
#define IShellLinkDataList_CopyDataBlock(This,dwSig,ppDataBlock) (This)->lpVtbl->CopyDataBlock(This,dwSig,ppDataBlock)
#define IShellLinkDataList_RemoveDataBlock(This,dwSig) (This)->lpVtbl->RemoveDataBlock(This,dwSig)
#define IShellLinkDataList_GetFlags(This,pdwFlags) (This)->lpVtbl->GetFlags(This,pdwFlags)
#define IShellLinkDataList_SetFlags(This,dwFlags) (This)->lpVtbl->SetFlags(This,dwFlags)
#endif

#endif

HRESULT STDMETHODCALLTYPE IShellLinkDataList_RemoveDataBlock_Proxy(
    IShellLinkDataList* This,
    DWORD dwSig);
void __RPC_STUB IShellLinkDataList_RemoveDataBlock_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IShellLinkDataList_GetFlags_Proxy(
    IShellLinkDataList* This,
    DWORD *pdwFlags);
void __RPC_STUB IShellLinkDataList_GetFlags_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * 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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IResolveShellLink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IResolveShellLink_Release(This) (This)->lpVtbl->Release(This)
/*** IResolveShellLink methods ***/
#define IResolveShellLink_ResolveShellLink(This,punk,hwnd,fFlags) (This)->lpVtbl->ResolveShellLink(This,punk,hwnd,fFlags)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * 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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IURLSearchHook_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IURLSearchHook_Release(This) (This)->lpVtbl->Release(This)
/*** IURLSearchHook methods ***/
#define IURLSearchHook_Translate(This,lpwszSearchURL,cchBufferSize) (This)->lpVtbl->Translate(This,lpwszSearchURL,cchBufferSize)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * 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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISearchContext_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISearchContext_Release(This) (This)->lpVtbl->Release(This)
/*** ISearchContext methods ***/
#define ISearchContext_GetSearchUrl(This,pbstrSearchUrl) (This)->lpVtbl->GetSearchUrl(This,pbstrSearchUrl)
#define ISearchContext_GetSearchText(This,pbstrSearchText) (This)->lpVtbl->GetSearchText(This,pbstrSearchText)
#define ISearchContext_GetSearchStyle(This,pdwSearchStyle) (This)->lpVtbl->GetSearchStyle(This,pdwSearchStyle)
#endif

#endif

HRESULT STDMETHODCALLTYPE ISearchContext_GetSearchUrl_Proxy(
    ISearchContext* This,
    BSTR *pbstrSearchUrl);
void __RPC_STUB ISearchContext_GetSearchUrl_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ISearchContext_GetSearchText_Proxy(
    ISearchContext* This,
    BSTR *pbstrSearchText);
void __RPC_STUB ISearchContext_GetSearchText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * 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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IURLSearchHook2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IURLSearchHook2_Release(This) (This)->lpVtbl->Release(This)
/*** IURLSearchHook methods ***/
#define IURLSearchHook2_Translate(This,lpwszSearchURL,cchBufferSize) (This)->lpVtbl->Translate(This,lpwszSearchURL,cchBufferSize)
/*** IURLSearchHook2 methods ***/
#define IURLSearchHook2_TranslateWithSearchContext(This,lpwszSearchURL,cchBufferSize,pSearchContext) (This)->lpVtbl->TranslateWithSearchContext(This,lpwszSearchURL,cchBufferSize,pSearchContext)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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)
/*****************************************************************************
 * 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(
        LPSTR 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,
        LPSTR 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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INewShortcutHookA_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INewShortcutHookA_Release(This) (This)->lpVtbl->Release(This)
/*** INewShortcutHookA methods ***/
#define INewShortcutHookA_SetReferent(This,pcszReferent,hwnd) (This)->lpVtbl->SetReferent(This,pcszReferent,hwnd)
#define INewShortcutHookA_GetReferent(This,pcszReferent,cchReferent) (This)->lpVtbl->GetReferent(This,pcszReferent,cchReferent)
#define INewShortcutHookA_SetFolder(This,pcszReferent) (This)->lpVtbl->SetFolder(This,pcszReferent)
#define INewShortcutHookA_GetFolder(This,pcszReferent,cchFolder) (This)->lpVtbl->GetFolder(This,pcszReferent,cchFolder)
#define INewShortcutHookA_GetName(This,pszName,cchName) (This)->lpVtbl->GetName(This,pszName,cchName)
#define INewShortcutHookA_GetExtension(This,pszExtension,cchExtension) (This)->lpVtbl->GetExtension(This,pszExtension,cchExtension)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE INewShortcutHookA_GetReferent_Proxy(
    INewShortcutHookA* This,
    LPSTR pcszReferent,
    int cchReferent);
void __RPC_STUB INewShortcutHookA_GetReferent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INewShortcutHookA_SetFolder_Proxy(
    INewShortcutHookA* This,
    LPCSTR pcszReferent);
void __RPC_STUB INewShortcutHookA_SetFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * 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(
        LPWSTR 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,
        LPWSTR 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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INewShortcutHookW_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INewShortcutHookW_Release(This) (This)->lpVtbl->Release(This)
/*** INewShortcutHookW methods ***/
#define INewShortcutHookW_SetReferent(This,pcszReferent,hwnd) (This)->lpVtbl->SetReferent(This,pcszReferent,hwnd)
#define INewShortcutHookW_GetReferent(This,pcszReferent,cchReferent) (This)->lpVtbl->GetReferent(This,pcszReferent,cchReferent)
#define INewShortcutHookW_SetFolder(This,pcszReferent) (This)->lpVtbl->SetFolder(This,pcszReferent)
#define INewShortcutHookW_GetFolder(This,pcszReferent,cchFolder) (This)->lpVtbl->GetFolder(This,pcszReferent,cchFolder)
#define INewShortcutHookW_GetName(This,pszName,cchName) (This)->lpVtbl->GetName(This,pszName,cchName)
#define INewShortcutHookW_GetExtension(This,pszExtension,cchExtension) (This)->lpVtbl->GetExtension(This,pszExtension,cchExtension)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE INewShortcutHookW_GetReferent_Proxy(
    INewShortcutHookW* This,
    LPWSTR pcszReferent,
    int cchReferent);
void __RPC_STUB INewShortcutHookW_GetReferent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INewShortcutHookW_SetFolder_Proxy(
    INewShortcutHookW* This,
    LPCWSTR pcszReferent);
void __RPC_STUB INewShortcutHookW_SetFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * IRunnableTask interface
 */
#ifndef __IRunnableTask_INTERFACE_DEFINED__
#define __IRunnableTask_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRunnableTask, 0x85788d00, 0x6807, 0x11d0, 0xb8,0x10, 0x00,0xc0,0x4f,0xd7,0x06,0xec);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IRunnableTask : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Run(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Kill(
        BOOL fWait) = 0;

    virtual HRESULT STDMETHODCALLTYPE Suspend(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resume(
        ) = 0;

    virtual ULONG STDMETHODCALLTYPE IsRunning(
        ) = 0;

};
#else
typedef struct IRunnableTaskVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRunnableTask methods ***/
    HRESULT (STDMETHODCALLTYPE *Run)(
        IRunnableTask* This);

    HRESULT (STDMETHODCALLTYPE *Kill)(
        IRunnableTask* This,
        BOOL fWait);

    HRESULT (STDMETHODCALLTYPE *Suspend)(
        IRunnableTask* This);

    HRESULT (STDMETHODCALLTYPE *Resume)(
        IRunnableTask* This);

    ULONG (STDMETHODCALLTYPE *IsRunning)(
        IRunnableTask* This);

    END_INTERFACE
} IRunnableTaskVtbl;
interface IRunnableTask {
    CONST_VTBL IRunnableTaskVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IRunnableTask_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRunnableTask_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRunnableTask_Release(This) (This)->lpVtbl->Release(This)
/*** IRunnableTask methods ***/
#define IRunnableTask_Run(This) (This)->lpVtbl->Run(This)
#define IRunnableTask_Kill(This,fWait) (This)->lpVtbl->Kill(This,fWait)
#define IRunnableTask_Suspend(This) (This)->lpVtbl->Suspend(This)
#define IRunnableTask_Resume(This) (This)->lpVtbl->Resume(This)
#define IRunnableTask_IsRunning(This) (This)->lpVtbl->IsRunning(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IRunnableTask_Run_Proxy(
    IRunnableTask* This);
void __RPC_STUB IRunnableTask_Run_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRunnableTask_Kill_Proxy(
    IRunnableTask* This,
    BOOL fWait);
void __RPC_STUB IRunnableTask_Kill_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRunnableTask_Suspend_Proxy(
    IRunnableTask* This);
void __RPC_STUB IRunnableTask_Suspend_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IRunnableTask_Resume_Proxy(
    IRunnableTask* This);
void __RPC_STUB IRunnableTask_Resume_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
ULONG STDMETHODCALLTYPE IRunnableTask_IsRunning_Proxy(
    IRunnableTask* This);
void __RPC_STUB IRunnableTask_IsRunning_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IRunnableTask_INTERFACE_DEFINED__ */

/*****************************************************************************
 * 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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellChangeNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellChangeNotify_Release(This) (This)->lpVtbl->Release(This)
/*** IShellChangeNotify methods ***/
#define IShellChangeNotify_OnChange(This,lEvent,pidl1,pidl2) (This)->lpVtbl->OnChange(This,lEvent,pidl1,pidl2)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * 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(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileSystemBindData_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileSystemBindData_Release(This) (This)->lpVtbl->Release(This)
/*** IFileSystemBindData methods ***/
#define IFileSystemBindData_SetFindData(This,pfd) (This)->lpVtbl->SetFindData(This,pfd)
#define IFileSystemBindData_GetFindData(This,pfd) (This)->lpVtbl->GetFindData(This,pfd)
#endif

#endif

HRESULT STDMETHODCALLTYPE 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 STDMETHODCALLTYPE 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__ */

/*****************************************************************************
 * ITaskbarList interface
 */
#ifndef __ITaskbarList_INTERFACE_DEFINED__
#define __ITaskbarList_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITaskbarList, 0x56fdf342, 0xfd6d, 0x11d0, 0x95,0x8a, 0x00,0x60,0x97,0xc9,0xa0,0x90);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface ITaskbarList : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE HrInit(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddTab(
        HWND hwnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteTab(
        HWND hwnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE ActivateTab(
        HWND hwnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetActiveAlt(
        HWND hwnd) = 0;

};
#else
typedef struct ITaskbarListVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITaskbarList methods ***/
    HRESULT (STDMETHODCALLTYPE *HrInit)(
        ITaskbarList* This);

    HRESULT (STDMETHODCALLTYPE *AddTab)(
        ITaskbarList* This,
        HWND hwnd);

    HRESULT (STDMETHODCALLTYPE *DeleteTab)(
        ITaskbarList* This,
        HWND hwnd);

    HRESULT (STDMETHODCALLTYPE *ActivateTab)(
        ITaskbarList* This,
        HWND hwnd);

    HRESULT (STDMETHODCALLTYPE *SetActiveAlt)(
        ITaskbarList* This,
        HWND hwnd);

    END_INTERFACE
} ITaskbarListVtbl;
interface ITaskbarList {
    CONST_VTBL ITaskbarListVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define ITaskbarList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITaskbarList_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITaskbarList_Release(This) (This)->lpVtbl->Release(This)
/*** ITaskbarList methods ***/
#define ITaskbarList_HrInit(This) (This)->lpVtbl->HrInit(This)
#define ITaskbarList_AddTab(This,hwnd) (This)->lpVtbl->AddTab(This,hwnd)
#define ITaskbarList_DeleteTab(This,hwnd) (This)->lpVtbl->DeleteTab(This,hwnd)
#define ITaskbarList_ActivateTab(This,hwnd) (This)->lpVtbl->ActivateTab(This,hwnd)
#define ITaskbarList_SetActiveAlt(This,hwnd) (This)->lpVtbl->SetActiveAlt(This,hwnd)
#endif

#endif

HRESULT STDMETHODCALLTYPE ITaskbarList_HrInit_Proxy(
    ITaskbarList* This);
void __RPC_STUB ITaskbarList_HrInit_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskbarList_AddTab_Proxy(
    ITaskbarList* This,
    HWND hwnd);
void __RPC_STUB ITaskbarList_AddTab_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskbarList_DeleteTab_Proxy(
    ITaskbarList* This,
    HWND hwnd);
void __RPC_STUB ITaskbarList_DeleteTab_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskbarList_ActivateTab_Proxy(
    ITaskbarList* This,
    HWND hwnd);
void __RPC_STUB ITaskbarList_ActivateTab_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE ITaskbarList_SetActiveAlt_Proxy(
    ITaskbarList* This,
    HWND hwnd);
void __RPC_STUB ITaskbarList_SetActiveAlt_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __ITaskbarList_INTERFACE_DEFINED__ */

EXTERN_C const CLSID CLSID_TaskbarList;
/*****************************************************************************
 * IAutoCompleteDropDown interface
 */
#ifndef __IAutoCompleteDropDown_INTERFACE_DEFINED__
#define __IAutoCompleteDropDown_INTERFACE_DEFINED__

#define ACDD_VISIBLE   0x0001
DEFINE_GUID(IID_IAutoCompleteDropDown, 0x3cd141f4, 0x3c6a, 0x11d2, 0xbc,0xaa, 0x00,0xc0,0x4f,0xd9,0x29,0xdb);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IAutoCompleteDropDown : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDropDownStatus(
        DWORD *pdwFlags,
        LPWSTR *ppwszString) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResetEnumerator(
        ) = 0;

};
#else
typedef struct IAutoCompleteDropDownVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAutoCompleteDropDown methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDropDownStatus)(
        IAutoCompleteDropDown* This,
        DWORD *pdwFlags,
        LPWSTR *ppwszString);

    HRESULT (STDMETHODCALLTYPE *ResetEnumerator)(
        IAutoCompleteDropDown* This);

    END_INTERFACE
} IAutoCompleteDropDownVtbl;
interface IAutoCompleteDropDown {
    CONST_VTBL IAutoCompleteDropDownVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IAutoCompleteDropDown_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAutoCompleteDropDown_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAutoCompleteDropDown_Release(This) (This)->lpVtbl->Release(This)
/*** IAutoCompleteDropDown methods ***/
#define IAutoCompleteDropDown_GetDropDownStatus(This,pdwFlags,ppwszString) (This)->lpVtbl->GetDropDownStatus(This,pdwFlags,ppwszString)
#define IAutoCompleteDropDown_ResetEnumerator(This) (This)->lpVtbl->ResetEnumerator(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IAutoCompleteDropDown_GetDropDownStatus_Proxy(
    IAutoCompleteDropDown* This,
    DWORD *pdwFlags,
    LPWSTR *ppwszString);
void __RPC_STUB IAutoCompleteDropDown_GetDropDownStatus_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IAutoCompleteDropDown_ResetEnumerator_Proxy(
    IAutoCompleteDropDown* This);
void __RPC_STUB IAutoCompleteDropDown_ResetEnumerator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IAutoCompleteDropDown_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IProfferService interface
 */
#ifndef __IProfferService_INTERFACE_DEFINED__
#define __IProfferService_INTERFACE_DEFINED__

DEFINE_GUID(IID_IProfferService, 0xcb728b20, 0xf786, 0x11ce, 0x92,0xad, 0x00,0xaa,0x00,0xa7,0x4c,0xd0);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IProfferService : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ProfferService(
        REFGUID service,
        IServiceProvider *pService,
        DWORD *pCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE RevokeService(
        DWORD cookie) = 0;

};
#else
typedef struct IProfferServiceVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IProfferService methods ***/
    HRESULT (STDMETHODCALLTYPE *ProfferService)(
        IProfferService* This,
        REFGUID service,
        IServiceProvider *pService,
        DWORD *pCookie);

    HRESULT (STDMETHODCALLTYPE *RevokeService)(
        IProfferService* This,
        DWORD cookie);

    END_INTERFACE
} IProfferServiceVtbl;
interface IProfferService {
    CONST_VTBL IProfferServiceVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IProfferService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IProfferService_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IProfferService_Release(This) (This)->lpVtbl->Release(This)
/*** IProfferService methods ***/
#define IProfferService_ProfferService(This,service,pService,pCookie) (This)->lpVtbl->ProfferService(This,service,pService,pCookie)
#define IProfferService_RevokeService(This,cookie) (This)->lpVtbl->RevokeService(This,cookie)
#endif

#endif

HRESULT STDMETHODCALLTYPE IProfferService_ProfferService_Proxy(
    IProfferService* This,
    REFGUID service,
    IServiceProvider *pService,
    DWORD *pCookie);
void __RPC_STUB IProfferService_ProfferService_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IProfferService_RevokeService_Proxy(
    IProfferService* This,
    DWORD cookie);
void __RPC_STUB IProfferService_RevokeService_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IProfferService_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IExplorerBrowserEvents interface
 */
#ifndef __IExplorerBrowserEvents_INTERFACE_DEFINED__
#define __IExplorerBrowserEvents_INTERFACE_DEFINED__

DEFINE_GUID(IID_IExplorerBrowserEvents, 0x361bbdc7, 0xe6ee, 0x4e13, 0xbe,0x58, 0x58,0xe2,0x24,0x0c,0x81,0x0f);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IExplorerBrowserEvents : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnNavigationPending(
        PCIDLIST_ABSOLUTE pidlFolder) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnViewCreated(
        IShellView *psv) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnNavigationComplete(
        PCIDLIST_ABSOLUTE pidlFolder) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnNavigationFailed(
        PCIDLIST_ABSOLUTE pidlFolder) = 0;

};
#else
typedef struct IExplorerBrowserEventsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IExplorerBrowserEvents methods ***/
    HRESULT (STDMETHODCALLTYPE *OnNavigationPending)(
        IExplorerBrowserEvents* This,
        PCIDLIST_ABSOLUTE pidlFolder);

    HRESULT (STDMETHODCALLTYPE *OnViewCreated)(
        IExplorerBrowserEvents* This,
        IShellView *psv);

    HRESULT (STDMETHODCALLTYPE *OnNavigationComplete)(
        IExplorerBrowserEvents* This,
        PCIDLIST_ABSOLUTE pidlFolder);

    HRESULT (STDMETHODCALLTYPE *OnNavigationFailed)(
        IExplorerBrowserEvents* This,
        PCIDLIST_ABSOLUTE pidlFolder);

    END_INTERFACE
} IExplorerBrowserEventsVtbl;
interface IExplorerBrowserEvents {
    CONST_VTBL IExplorerBrowserEventsVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IExplorerBrowserEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExplorerBrowserEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExplorerBrowserEvents_Release(This) (This)->lpVtbl->Release(This)
/*** IExplorerBrowserEvents methods ***/
#define IExplorerBrowserEvents_OnNavigationPending(This,pidlFolder) (This)->lpVtbl->OnNavigationPending(This,pidlFolder)
#define IExplorerBrowserEvents_OnViewCreated(This,psv) (This)->lpVtbl->OnViewCreated(This,psv)
#define IExplorerBrowserEvents_OnNavigationComplete(This,pidlFolder) (This)->lpVtbl->OnNavigationComplete(This,pidlFolder)
#define IExplorerBrowserEvents_OnNavigationFailed(This,pidlFolder) (This)->lpVtbl->OnNavigationFailed(This,pidlFolder)
#endif

#endif

HRESULT STDMETHODCALLTYPE IExplorerBrowserEvents_OnNavigationPending_Proxy(
    IExplorerBrowserEvents* This,
    PCIDLIST_ABSOLUTE pidlFolder);
void __RPC_STUB IExplorerBrowserEvents_OnNavigationPending_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowserEvents_OnViewCreated_Proxy(
    IExplorerBrowserEvents* This,
    IShellView *psv);
void __RPC_STUB IExplorerBrowserEvents_OnViewCreated_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowserEvents_OnNavigationComplete_Proxy(
    IExplorerBrowserEvents* This,
    PCIDLIST_ABSOLUTE pidlFolder);
void __RPC_STUB IExplorerBrowserEvents_OnNavigationComplete_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowserEvents_OnNavigationFailed_Proxy(
    IExplorerBrowserEvents* This,
    PCIDLIST_ABSOLUTE pidlFolder);
void __RPC_STUB IExplorerBrowserEvents_OnNavigationFailed_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IExplorerBrowserEvents_INTERFACE_DEFINED__ */

typedef GUID EXPLORERPANE;
typedef EXPLORERPANE *REFEXPLORERPANE;
#define SID_ExplorerPaneVisibility IID_IExplorerPaneVisibility
/*****************************************************************************
 * IExplorerPaneVisibility interface
 */
#ifndef __IExplorerPaneVisibility_INTERFACE_DEFINED__
#define __IExplorerPaneVisibility_INTERFACE_DEFINED__

typedef enum tagEXPLORERPANESTATE {
    EPS_DONTCARE = 0x0,
    EPS_DEFAULT_ON = 0x1,
    EPS_DEFAULT_OFF = 0x2,
    EPS_STATE_MASK = 0xffff,
    EPS_INITIALSTATE = 0x10000,
    EPS_FORCE = 0x20000
} EXPLORERPANESTATE;
DEFINE_GUID(IID_IExplorerPaneVisibility, 0xe07010ec, 0xbc17, 0x44c0, 0x97,0xb0, 0x46,0xc7,0xc9,0x5b,0x9e,0xdc);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IExplorerPaneVisibility : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPaneState(
        REFEXPLORERPANE ep,
        EXPLORERPANESTATE *peps) = 0;

};
#else
typedef struct IExplorerPaneVisibilityVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IExplorerPaneVisibility methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPaneState)(
        IExplorerPaneVisibility* This,
        REFEXPLORERPANE ep,
        EXPLORERPANESTATE *peps);

    END_INTERFACE
} IExplorerPaneVisibilityVtbl;
interface IExplorerPaneVisibility {
    CONST_VTBL IExplorerPaneVisibilityVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IExplorerPaneVisibility_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExplorerPaneVisibility_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExplorerPaneVisibility_Release(This) (This)->lpVtbl->Release(This)
/*** IExplorerPaneVisibility methods ***/
#define IExplorerPaneVisibility_GetPaneState(This,ep,peps) (This)->lpVtbl->GetPaneState(This,ep,peps)
#endif

#endif

HRESULT STDMETHODCALLTYPE IExplorerPaneVisibility_GetPaneState_Proxy(
    IExplorerPaneVisibility* This,
    REFEXPLORERPANE ep,
    EXPLORERPANESTATE *peps);
void __RPC_STUB IExplorerPaneVisibility_GetPaneState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IExplorerPaneVisibility_INTERFACE_DEFINED__ */

typedef enum tagEXPLORER_BROWSER_FILL_FLAGS {
    EBF_NONE = 0,
    EBF_SELECTFROMDATAOBJECT = 0x100,
    EBF_NODROPTARGET = 0x200
} EXPLORER_BROWSER_FILL_FLAGS;
typedef enum tagEXPLORER_BROWSER_OPTIONS {
    EBO_NONE = 0x0,
    EBO_NAVIGATEONCE = 0x1,
    EBO_SHOWFRAMES = 0x2,
    EBO_ALWAYSNAVIGATE = 0x4,
    EBO_NOTRAVELLOG = 0x8,
    EBO_NOWRAPPERWINDOW = 0x10,
    EBO_HTMLSHAREPOINTVIEW = 0x20
} EXPLORER_BROWSER_OPTIONS;
#define SID_SExplorerBrowserFrame IID_ICommDlgBrowser
/*****************************************************************************
 * IExplorerBrowser interface
 */
#ifndef __IExplorerBrowser_INTERFACE_DEFINED__
#define __IExplorerBrowser_INTERFACE_DEFINED__

DEFINE_GUID(IID_IExplorerBrowser, 0xdfd3b6b5, 0xc10c, 0x4be9, 0x85,0xf6, 0xa6,0x69,0x69,0xf4,0x02,0xf6);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IExplorerBrowser : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        HWND hwndParent,
        const RECT *prc,
        const FOLDERSETTINGS *pfs) = 0;

    virtual HRESULT STDMETHODCALLTYPE Destroy(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRect(
        HDWP *phdwp,
        RECT rcBrowser) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPropertyBag(
        LPCWSTR pszPropertyBag) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetEmptyText(
        LPCWSTR pszEmptyText) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFolderSettings(
        const FOLDERSETTINGS *pfs) = 0;

    virtual HRESULT STDMETHODCALLTYPE Advise(
        IExplorerBrowserEvents *psbe,
        DWORD *pdwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unadvise(
        DWORD dwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOptions(
        EXPLORER_BROWSER_OPTIONS dwFlag) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOptions(
        EXPLORER_BROWSER_OPTIONS *pdwFlag) = 0;

    virtual HRESULT STDMETHODCALLTYPE BrowseToIDList(
        PCUIDLIST_RELATIVE pidl,
        UINT uFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE BrowseToObject(
        IUnknown *punk,
        UINT uFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE FillFromObject(
        IUnknown *punk,
        EXPLORER_BROWSER_FILL_FLAGS dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveAll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentView(
        REFIID riid,
        void **ppv) = 0;

};
#else
typedef struct IExplorerBrowserVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IExplorerBrowser methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IExplorerBrowser* This,
        HWND hwndParent,
        const RECT *prc,
        const FOLDERSETTINGS *pfs);

    HRESULT (STDMETHODCALLTYPE *Destroy)(
        IExplorerBrowser* This);

    HRESULT (STDMETHODCALLTYPE *SetRect)(
        IExplorerBrowser* This,
        HDWP *phdwp,
        RECT rcBrowser);

    HRESULT (STDMETHODCALLTYPE *SetPropertyBag)(
        IExplorerBrowser* This,
        LPCWSTR pszPropertyBag);

    HRESULT (STDMETHODCALLTYPE *SetEmptyText)(
        IExplorerBrowser* This,
        LPCWSTR pszEmptyText);

    HRESULT (STDMETHODCALLTYPE *SetFolderSettings)(
        IExplorerBrowser* This,
        const FOLDERSETTINGS *pfs);

    HRESULT (STDMETHODCALLTYPE *Advise)(
        IExplorerBrowser* This,
        IExplorerBrowserEvents *psbe,
        DWORD *pdwCookie);

    HRESULT (STDMETHODCALLTYPE *Unadvise)(
        IExplorerBrowser* This,
        DWORD dwCookie);

    HRESULT (STDMETHODCALLTYPE *SetOptions)(
        IExplorerBrowser* This,
        EXPLORER_BROWSER_OPTIONS dwFlag);

    HRESULT (STDMETHODCALLTYPE *GetOptions)(
        IExplorerBrowser* This,
        EXPLORER_BROWSER_OPTIONS *pdwFlag);

    HRESULT (STDMETHODCALLTYPE *BrowseToIDList)(
        IExplorerBrowser* This,
        PCUIDLIST_RELATIVE pidl,
        UINT uFlags);

    HRESULT (STDMETHODCALLTYPE *BrowseToObject)(
        IExplorerBrowser* This,
        IUnknown *punk,
        UINT uFlags);

    HRESULT (STDMETHODCALLTYPE *FillFromObject)(
        IExplorerBrowser* This,
        IUnknown *punk,
        EXPLORER_BROWSER_FILL_FLAGS dwFlags);

    HRESULT (STDMETHODCALLTYPE *RemoveAll)(
        IExplorerBrowser* This);

    HRESULT (STDMETHODCALLTYPE *GetCurrentView)(
        IExplorerBrowser* This,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} IExplorerBrowserVtbl;
interface IExplorerBrowser {
    CONST_VTBL IExplorerBrowserVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IExplorerBrowser_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExplorerBrowser_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExplorerBrowser_Release(This) (This)->lpVtbl->Release(This)
/*** IExplorerBrowser methods ***/
#define IExplorerBrowser_Initialize(This,hwndParent,prc,pfs) (This)->lpVtbl->Initialize(This,hwndParent,prc,pfs)
#define IExplorerBrowser_Destroy(This) (This)->lpVtbl->Destroy(This)
#define IExplorerBrowser_SetRect(This,phdwp,rcBrowser) (This)->lpVtbl->SetRect(This,phdwp,rcBrowser)
#define IExplorerBrowser_SetPropertyBag(This,pszPropertyBag) (This)->lpVtbl->SetPropertyBag(This,pszPropertyBag)
#define IExplorerBrowser_SetEmptyText(This,pszEmptyText) (This)->lpVtbl->SetEmptyText(This,pszEmptyText)
#define IExplorerBrowser_SetFolderSettings(This,pfs) (This)->lpVtbl->SetFolderSettings(This,pfs)
#define IExplorerBrowser_Advise(This,psbe,pdwCookie) (This)->lpVtbl->Advise(This,psbe,pdwCookie)
#define IExplorerBrowser_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
#define IExplorerBrowser_SetOptions(This,dwFlag) (This)->lpVtbl->SetOptions(This,dwFlag)
#define IExplorerBrowser_GetOptions(This,pdwFlag) (This)->lpVtbl->GetOptions(This,pdwFlag)
#define IExplorerBrowser_BrowseToIDList(This,pidl,uFlags) (This)->lpVtbl->BrowseToIDList(This,pidl,uFlags)
#define IExplorerBrowser_BrowseToObject(This,punk,uFlags) (This)->lpVtbl->BrowseToObject(This,punk,uFlags)
#define IExplorerBrowser_FillFromObject(This,punk,dwFlags) (This)->lpVtbl->FillFromObject(This,punk,dwFlags)
#define IExplorerBrowser_RemoveAll(This) (This)->lpVtbl->RemoveAll(This)
#define IExplorerBrowser_GetCurrentView(This,riid,ppv) (This)->lpVtbl->GetCurrentView(This,riid,ppv)
#endif

#endif

HRESULT STDMETHODCALLTYPE IExplorerBrowser_Destroy_Proxy(
    IExplorerBrowser* This);
void __RPC_STUB IExplorerBrowser_Destroy_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowser_SetPropertyBag_Proxy(
    IExplorerBrowser* This,
    LPCWSTR pszPropertyBag);
void __RPC_STUB IExplorerBrowser_SetPropertyBag_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowser_SetEmptyText_Proxy(
    IExplorerBrowser* This,
    LPCWSTR pszEmptyText);
void __RPC_STUB IExplorerBrowser_SetEmptyText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowser_SetFolderSettings_Proxy(
    IExplorerBrowser* This,
    const FOLDERSETTINGS *pfs);
void __RPC_STUB IExplorerBrowser_SetFolderSettings_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowser_Advise_Proxy(
    IExplorerBrowser* This,
    IExplorerBrowserEvents *psbe,
    DWORD *pdwCookie);
void __RPC_STUB IExplorerBrowser_Advise_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowser_Unadvise_Proxy(
    IExplorerBrowser* This,
    DWORD dwCookie);
void __RPC_STUB IExplorerBrowser_Unadvise_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowser_SetOptions_Proxy(
    IExplorerBrowser* This,
    EXPLORER_BROWSER_OPTIONS dwFlag);
void __RPC_STUB IExplorerBrowser_SetOptions_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowser_GetOptions_Proxy(
    IExplorerBrowser* This,
    EXPLORER_BROWSER_OPTIONS *pdwFlag);
void __RPC_STUB IExplorerBrowser_GetOptions_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowser_BrowseToIDList_Proxy(
    IExplorerBrowser* This,
    PCUIDLIST_RELATIVE pidl,
    UINT uFlags);
void __RPC_STUB IExplorerBrowser_BrowseToIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowser_BrowseToObject_Proxy(
    IExplorerBrowser* This,
    IUnknown *punk,
    UINT uFlags);
void __RPC_STUB IExplorerBrowser_BrowseToObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowser_FillFromObject_Proxy(
    IExplorerBrowser* This,
    IUnknown *punk,
    EXPLORER_BROWSER_FILL_FLAGS dwFlags);
void __RPC_STUB IExplorerBrowser_FillFromObject_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowser_RemoveAll_Proxy(
    IExplorerBrowser* This);
void __RPC_STUB IExplorerBrowser_RemoveAll_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IExplorerBrowser_GetCurrentView_Proxy(
    IExplorerBrowser* This,
    REFIID riid,
    void **ppv);
void __RPC_STUB IExplorerBrowser_GetCurrentView_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IExplorerBrowser_INTERFACE_DEFINED__ */

/*****************************************************************************
 * INameSpaceTreeControl interface
 */
#ifndef __INameSpaceTreeControl_INTERFACE_DEFINED__
#define __INameSpaceTreeControl_INTERFACE_DEFINED__

enum _NSTCSTYLE {
    NSTCS_HASEXPANDOS = 0x1,
    NSTCS_HASLINES = 0x2,
    NSTCS_SINGLECLICKEXPAND = 0x4,
    NSTCS_FULLROWSELECT = 0x8,
    NSTCS_SPRINGEXPAND = 0x10,
    NSTCS_HORIZONTALSCROLL = 0x20,
    NSTCS_ROOTHASEXPANDO = 0x40,
    NSTCS_SHOWSELECTIONALWAYS = 0x80,
    NSTCS_NOINFOTIP = 0x200,
    NSTCS_EVENHEIGHT = 0x400,
    NSTCS_NOREPLACEOPEN = 0x800,
    NSTCS_DISABLEDRAGDROP = 0x1000,
    NSTCS_NOORDERSTREAM = 0x2000,
    NSTCS_RICHTOOLTIP = 0x4000,
    NSTCS_BORDER = 0x8000,
    NSTCS_NOEDITLABELS = 0x10000,
    NSTCS_TABSTOP = 0x20000,
    NSTCS_FAVORITESMODE = 0x80000,
    NSTCS_AUTOHSCROLL = 0x100000,
    NSTCS_FADEINOUTEXPANDOS = 0x200000,
    NSTCS_EMPTYTEXT = 0x400000,
    NSTCS_CHECKBOXES = 0x800000,
    NSTCS_PARTIALCHECKBOXES = 0x1000000,
    NSTCS_EXCLUSIONCHECKBOXES = 0x2000000,
    NSTCS_DIMMEDCHECKBOXES = 0x4000000,
    NSTCS_NOINDENTCHECKS = 0x8000000,
    NSTCS_ALLOWJUNCTIONS = 0x10000000,
    NSTCS_SHOWTABSBUTTON = 0x20000000,
    NSTCS_SHOWDELETEBUTTON = 0x40000000,
    NSTCS_SHOWREFRESHBUTTON = (int)0x80000000
};

typedef DWORD NSTCSTYLE;
enum _NSTCROOTSTYLE {
    NSTCRS_VISIBLE = 0x0,
    NSTCRS_HIDDEN = 0x1,
    NSTCRS_EXPANDED = 0x2
};

typedef DWORD NSTCROOTSTYLE;
enum _NSTCITEMSTATE {
    NSTCIS_NONE = 0x0,
    NSTCIS_SELECTED = 0x1,
    NSTCIS_EXPANDED = 0x2,
    NSTCIS_BOLD = 0x4,
    NSTCIS_DISABLED = 0x8,
    NSTCIS_SELECTEDNOEXPAND = 0x10
};

typedef DWORD NSTCITEMSTATE;
typedef enum NSTCGNI {
    NSTCGNI_NEXT = 0,
    NSTCGNI_NEXTVISIBLE = 1,
    NSTCGNI_PREV = 2,
    NSTCGNI_PREVVISIBLE = 3,
    NSTCGNI_PARENT = 4,
    NSTCGNI_CHILD = 5,
    NSTCGNI_FIRSTVISIBLE = 6,
    NSTCGNI_LASTVISIBLE = 7
} NSTCGNI;
DEFINE_GUID(IID_INameSpaceTreeControl, 0x028212a3, 0xb627, 0x47e9, 0x88,0x56, 0xc1,0x42,0x65,0x55,0x4e,0x4f);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface INameSpaceTreeControl : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        HWND hwndParent,
        RECT *prc,
        NSTCSTYLE nstcsFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE TreeAdvise(
        IUnknown *punk,
        DWORD *pdwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE TreeUnadvise(
        DWORD dwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE AppendRoot(
        IShellItem *psiRoot,
        SHCONTF grfEnumFlags,
        NSTCROOTSTYLE grfRootStyle,
        IShellItemFilter *pif) = 0;

    virtual HRESULT STDMETHODCALLTYPE InsertRoot(
        int iIndex,
        IShellItem *psiRoot,
        SHCONTF grfEnumFlags,
        NSTCROOTSTYLE grfRootStyle,
        IShellItemFilter *pif) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveRoot(
        IShellItem *psiRoot) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveAllRoots(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRootItems(
        IShellItemArray **ppsiaRootItems) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetItemState(
        IShellItem *psi,
        NSTCITEMSTATE nstcisMask,
        NSTCITEMSTATE nstcisFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetItemState(
        IShellItem *psi,
        NSTCITEMSTATE nstcismask,
        NSTCITEMSTATE *pnstcisFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSelectedItems(
        IShellItemArray **psiaItems) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetItemCustomState(
        IShellItem *psi,
        int *piStateNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetItemCustomState(
        IShellItem *psi,
        int iStateNumber) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnsureItemVisible(
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTheme(
        LPCWSTR pszTheme) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNextItem(
        IShellItem *psi,
        NSTCGNI nstcgi,
        IShellItem **ppsiNext) = 0;

    virtual HRESULT STDMETHODCALLTYPE HitTest(
        POINT *ppt,
        IShellItem **ppsiOut) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetItemRect(
        IShellItem *psi,
        RECT *prect) = 0;

    virtual HRESULT STDMETHODCALLTYPE CollapseAll(
        ) = 0;

};
#else
typedef struct INameSpaceTreeControlVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INameSpaceTreeControl methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        INameSpaceTreeControl* This,
        HWND hwndParent,
        RECT *prc,
        NSTCSTYLE nstcsFlags);

    HRESULT (STDMETHODCALLTYPE *TreeAdvise)(
        INameSpaceTreeControl* This,
        IUnknown *punk,
        DWORD *pdwCookie);

    HRESULT (STDMETHODCALLTYPE *TreeUnadvise)(
        INameSpaceTreeControl* This,
        DWORD dwCookie);

    HRESULT (STDMETHODCALLTYPE *AppendRoot)(
        INameSpaceTreeControl* This,
        IShellItem *psiRoot,
        SHCONTF grfEnumFlags,
        NSTCROOTSTYLE grfRootStyle,
        IShellItemFilter *pif);

    HRESULT (STDMETHODCALLTYPE *InsertRoot)(
        INameSpaceTreeControl* This,
        int iIndex,
        IShellItem *psiRoot,
        SHCONTF grfEnumFlags,
        NSTCROOTSTYLE grfRootStyle,
        IShellItemFilter *pif);

    HRESULT (STDMETHODCALLTYPE *RemoveRoot)(
        INameSpaceTreeControl* This,
        IShellItem *psiRoot);

    HRESULT (STDMETHODCALLTYPE *RemoveAllRoots)(
        INameSpaceTreeControl* This);

    HRESULT (STDMETHODCALLTYPE *GetRootItems)(
        INameSpaceTreeControl* This,
        IShellItemArray **ppsiaRootItems);

    HRESULT (STDMETHODCALLTYPE *SetItemState)(
        INameSpaceTreeControl* This,
        IShellItem *psi,
        NSTCITEMSTATE nstcisMask,
        NSTCITEMSTATE nstcisFlags);

    HRESULT (STDMETHODCALLTYPE *GetItemState)(
        INameSpaceTreeControl* This,
        IShellItem *psi,
        NSTCITEMSTATE nstcismask,
        NSTCITEMSTATE *pnstcisFlags);

    HRESULT (STDMETHODCALLTYPE *GetSelectedItems)(
        INameSpaceTreeControl* This,
        IShellItemArray **psiaItems);

    HRESULT (STDMETHODCALLTYPE *GetItemCustomState)(
        INameSpaceTreeControl* This,
        IShellItem *psi,
        int *piStateNumber);

    HRESULT (STDMETHODCALLTYPE *SetItemCustomState)(
        INameSpaceTreeControl* This,
        IShellItem *psi,
        int iStateNumber);

    HRESULT (STDMETHODCALLTYPE *EnsureItemVisible)(
        INameSpaceTreeControl* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *SetTheme)(
        INameSpaceTreeControl* This,
        LPCWSTR pszTheme);

    HRESULT (STDMETHODCALLTYPE *GetNextItem)(
        INameSpaceTreeControl* This,
        IShellItem *psi,
        NSTCGNI nstcgi,
        IShellItem **ppsiNext);

    HRESULT (STDMETHODCALLTYPE *HitTest)(
        INameSpaceTreeControl* This,
        POINT *ppt,
        IShellItem **ppsiOut);

    HRESULT (STDMETHODCALLTYPE *GetItemRect)(
        INameSpaceTreeControl* This,
        IShellItem *psi,
        RECT *prect);

    HRESULT (STDMETHODCALLTYPE *CollapseAll)(
        INameSpaceTreeControl* This);

    END_INTERFACE
} INameSpaceTreeControlVtbl;
interface INameSpaceTreeControl {
    CONST_VTBL INameSpaceTreeControlVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define INameSpaceTreeControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INameSpaceTreeControl_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INameSpaceTreeControl_Release(This) (This)->lpVtbl->Release(This)
/*** INameSpaceTreeControl methods ***/
#define INameSpaceTreeControl_Initialize(This,hwndParent,prc,nstcsFlags) (This)->lpVtbl->Initialize(This,hwndParent,prc,nstcsFlags)
#define INameSpaceTreeControl_TreeAdvise(This,punk,pdwCookie) (This)->lpVtbl->TreeAdvise(This,punk,pdwCookie)
#define INameSpaceTreeControl_TreeUnadvise(This,dwCookie) (This)->lpVtbl->TreeUnadvise(This,dwCookie)
#define INameSpaceTreeControl_AppendRoot(This,psiRoot,grfEnumFlags,grfRootStyle,pif) (This)->lpVtbl->AppendRoot(This,psiRoot,grfEnumFlags,grfRootStyle,pif)
#define INameSpaceTreeControl_InsertRoot(This,iIndex,psiRoot,grfEnumFlags,grfRootStyle,pif) (This)->lpVtbl->InsertRoot(This,iIndex,psiRoot,grfEnumFlags,grfRootStyle,pif)
#define INameSpaceTreeControl_RemoveRoot(This,psiRoot) (This)->lpVtbl->RemoveRoot(This,psiRoot)
#define INameSpaceTreeControl_RemoveAllRoots(This) (This)->lpVtbl->RemoveAllRoots(This)
#define INameSpaceTreeControl_GetRootItems(This,ppsiaRootItems) (This)->lpVtbl->GetRootItems(This,ppsiaRootItems)
#define INameSpaceTreeControl_SetItemState(This,psi,nstcisMask,nstcisFlags) (This)->lpVtbl->SetItemState(This,psi,nstcisMask,nstcisFlags)
#define INameSpaceTreeControl_GetItemState(This,psi,nstcismask,pnstcisFlags) (This)->lpVtbl->GetItemState(This,psi,nstcismask,pnstcisFlags)
#define INameSpaceTreeControl_GetSelectedItems(This,psiaItems) (This)->lpVtbl->GetSelectedItems(This,psiaItems)
#define INameSpaceTreeControl_GetItemCustomState(This,psi,piStateNumber) (This)->lpVtbl->GetItemCustomState(This,psi,piStateNumber)
#define INameSpaceTreeControl_SetItemCustomState(This,psi,iStateNumber) (This)->lpVtbl->SetItemCustomState(This,psi,iStateNumber)
#define INameSpaceTreeControl_EnsureItemVisible(This,psi) (This)->lpVtbl->EnsureItemVisible(This,psi)
#define INameSpaceTreeControl_SetTheme(This,pszTheme) (This)->lpVtbl->SetTheme(This,pszTheme)
#define INameSpaceTreeControl_GetNextItem(This,psi,nstcgi,ppsiNext) (This)->lpVtbl->GetNextItem(This,psi,nstcgi,ppsiNext)
#define INameSpaceTreeControl_HitTest(This,ppt,ppsiOut) (This)->lpVtbl->HitTest(This,ppt,ppsiOut)
#define INameSpaceTreeControl_GetItemRect(This,psi,prect) (This)->lpVtbl->GetItemRect(This,psi,prect)
#define INameSpaceTreeControl_CollapseAll(This) (This)->lpVtbl->CollapseAll(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_Initialize_Proxy(
    INameSpaceTreeControl* This,
    HWND hwndParent,
    RECT *prc,
    NSTCSTYLE nstcsFlags);
void __RPC_STUB INameSpaceTreeControl_Initialize_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_TreeAdvise_Proxy(
    INameSpaceTreeControl* This,
    IUnknown *punk,
    DWORD *pdwCookie);
void __RPC_STUB INameSpaceTreeControl_TreeAdvise_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_TreeUnadvise_Proxy(
    INameSpaceTreeControl* This,
    DWORD dwCookie);
void __RPC_STUB INameSpaceTreeControl_TreeUnadvise_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_AppendRoot_Proxy(
    INameSpaceTreeControl* This,
    IShellItem *psiRoot,
    SHCONTF grfEnumFlags,
    NSTCROOTSTYLE grfRootStyle,
    IShellItemFilter *pif);
void __RPC_STUB INameSpaceTreeControl_AppendRoot_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_InsertRoot_Proxy(
    INameSpaceTreeControl* This,
    int iIndex,
    IShellItem *psiRoot,
    SHCONTF grfEnumFlags,
    NSTCROOTSTYLE grfRootStyle,
    IShellItemFilter *pif);
void __RPC_STUB INameSpaceTreeControl_InsertRoot_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_RemoveRoot_Proxy(
    INameSpaceTreeControl* This,
    IShellItem *psiRoot);
void __RPC_STUB INameSpaceTreeControl_RemoveRoot_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_RemoveAllRoots_Proxy(
    INameSpaceTreeControl* This);
void __RPC_STUB INameSpaceTreeControl_RemoveAllRoots_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_GetRootItems_Proxy(
    INameSpaceTreeControl* This,
    IShellItemArray **ppsiaRootItems);
void __RPC_STUB INameSpaceTreeControl_GetRootItems_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_SetItemState_Proxy(
    INameSpaceTreeControl* This,
    IShellItem *psi,
    NSTCITEMSTATE nstcisMask,
    NSTCITEMSTATE nstcisFlags);
void __RPC_STUB INameSpaceTreeControl_SetItemState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_GetItemState_Proxy(
    INameSpaceTreeControl* This,
    IShellItem *psi,
    NSTCITEMSTATE nstcismask,
    NSTCITEMSTATE *pnstcisFlags);
void __RPC_STUB INameSpaceTreeControl_GetItemState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_GetSelectedItems_Proxy(
    INameSpaceTreeControl* This,
    IShellItemArray **psiaItems);
void __RPC_STUB INameSpaceTreeControl_GetSelectedItems_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_GetItemCustomState_Proxy(
    INameSpaceTreeControl* This,
    IShellItem *psi,
    int *piStateNumber);
void __RPC_STUB INameSpaceTreeControl_GetItemCustomState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_SetItemCustomState_Proxy(
    INameSpaceTreeControl* This,
    IShellItem *psi,
    int iStateNumber);
void __RPC_STUB INameSpaceTreeControl_SetItemCustomState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_EnsureItemVisible_Proxy(
    INameSpaceTreeControl* This,
    IShellItem *psi);
void __RPC_STUB INameSpaceTreeControl_EnsureItemVisible_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_SetTheme_Proxy(
    INameSpaceTreeControl* This,
    LPCWSTR pszTheme);
void __RPC_STUB INameSpaceTreeControl_SetTheme_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_GetNextItem_Proxy(
    INameSpaceTreeControl* This,
    IShellItem *psi,
    NSTCGNI nstcgi,
    IShellItem **ppsiNext);
void __RPC_STUB INameSpaceTreeControl_GetNextItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_HitTest_Proxy(
    INameSpaceTreeControl* This,
    POINT *ppt,
    IShellItem **ppsiOut);
void __RPC_STUB INameSpaceTreeControl_HitTest_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_GetItemRect_Proxy(
    INameSpaceTreeControl* This,
    IShellItem *psi,
    RECT *prect);
void __RPC_STUB INameSpaceTreeControl_GetItemRect_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl_CollapseAll_Proxy(
    INameSpaceTreeControl* This);
void __RPC_STUB INameSpaceTreeControl_CollapseAll_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __INameSpaceTreeControl_INTERFACE_DEFINED__ */

/*****************************************************************************
 * INameSpaceTreeControl2 interface
 */
#ifndef __INameSpaceTreeControl2_INTERFACE_DEFINED__
#define __INameSpaceTreeControl2_INTERFACE_DEFINED__

typedef enum NSTCSTYLE2 {
    NSTCS2_DEFAULT = 0x0,
    NSTCS2_INTERRUPTNOTIFICATIONS = 0x1,
    NSTCS2_SHOWNULLSPACEMENU = 0x2,
    NSTCS2_DISPLAYPADDING = 0x4,
    NSTCS2_DISPLAYPINNEDONLY = 0x8,
    NTSCS2_NOSINGLETONAUTOEXPAND = 0x10,
    NTSCS2_NEVERINSERTNONENUMERATED = 0x20
} NSTCSTYLE2;
DEFINE_ENUM_FLAG_OPERATORS(NSTCSTYLE2)
DEFINE_GUID(IID_INameSpaceTreeControl2, 0x7cc7aed8, 0x290e, 0x49bc, 0x89,0x45, 0xc1,0x40,0x1c,0xc9,0x30,0x6c);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface INameSpaceTreeControl2 : public INameSpaceTreeControl
{
    virtual HRESULT STDMETHODCALLTYPE SetControlStyle(
        NSTCSTYLE nstcsMask,
        NSTCSTYLE nstcsStyle) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetControlStyle(
        NSTCSTYLE nstcsMask,
        NSTCSTYLE *pnstcsStyle) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetControlStyle2(
        NSTCSTYLE2 nstcsMask,
        NSTCSTYLE2 nstcsStyle) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetControlStyle2(
        NSTCSTYLE2 nstcsMask,
        NSTCSTYLE2 *pnstcsStyle) = 0;

};
#else
typedef struct INameSpaceTreeControl2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INameSpaceTreeControl methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        INameSpaceTreeControl2* This,
        HWND hwndParent,
        RECT *prc,
        NSTCSTYLE nstcsFlags);

    HRESULT (STDMETHODCALLTYPE *TreeAdvise)(
        INameSpaceTreeControl2* This,
        IUnknown *punk,
        DWORD *pdwCookie);

    HRESULT (STDMETHODCALLTYPE *TreeUnadvise)(
        INameSpaceTreeControl2* This,
        DWORD dwCookie);

    HRESULT (STDMETHODCALLTYPE *AppendRoot)(
        INameSpaceTreeControl2* This,
        IShellItem *psiRoot,
        SHCONTF grfEnumFlags,
        NSTCROOTSTYLE grfRootStyle,
        IShellItemFilter *pif);

    HRESULT (STDMETHODCALLTYPE *InsertRoot)(
        INameSpaceTreeControl2* This,
        int iIndex,
        IShellItem *psiRoot,
        SHCONTF grfEnumFlags,
        NSTCROOTSTYLE grfRootStyle,
        IShellItemFilter *pif);

    HRESULT (STDMETHODCALLTYPE *RemoveRoot)(
        INameSpaceTreeControl2* This,
        IShellItem *psiRoot);

    HRESULT (STDMETHODCALLTYPE *RemoveAllRoots)(
        INameSpaceTreeControl2* This);

    HRESULT (STDMETHODCALLTYPE *GetRootItems)(
        INameSpaceTreeControl2* This,
        IShellItemArray **ppsiaRootItems);

    HRESULT (STDMETHODCALLTYPE *SetItemState)(
        INameSpaceTreeControl2* This,
        IShellItem *psi,
        NSTCITEMSTATE nstcisMask,
        NSTCITEMSTATE nstcisFlags);

    HRESULT (STDMETHODCALLTYPE *GetItemState)(
        INameSpaceTreeControl2* This,
        IShellItem *psi,
        NSTCITEMSTATE nstcismask,
        NSTCITEMSTATE *pnstcisFlags);

    HRESULT (STDMETHODCALLTYPE *GetSelectedItems)(
        INameSpaceTreeControl2* This,
        IShellItemArray **psiaItems);

    HRESULT (STDMETHODCALLTYPE *GetItemCustomState)(
        INameSpaceTreeControl2* This,
        IShellItem *psi,
        int *piStateNumber);

    HRESULT (STDMETHODCALLTYPE *SetItemCustomState)(
        INameSpaceTreeControl2* This,
        IShellItem *psi,
        int iStateNumber);

    HRESULT (STDMETHODCALLTYPE *EnsureItemVisible)(
        INameSpaceTreeControl2* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *SetTheme)(
        INameSpaceTreeControl2* This,
        LPCWSTR pszTheme);

    HRESULT (STDMETHODCALLTYPE *GetNextItem)(
        INameSpaceTreeControl2* This,
        IShellItem *psi,
        NSTCGNI nstcgi,
        IShellItem **ppsiNext);

    HRESULT (STDMETHODCALLTYPE *HitTest)(
        INameSpaceTreeControl2* This,
        POINT *ppt,
        IShellItem **ppsiOut);

    HRESULT (STDMETHODCALLTYPE *GetItemRect)(
        INameSpaceTreeControl2* This,
        IShellItem *psi,
        RECT *prect);

    HRESULT (STDMETHODCALLTYPE *CollapseAll)(
        INameSpaceTreeControl2* This);

    /*** INameSpaceTreeControl2 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetControlStyle)(
        INameSpaceTreeControl2* This,
        NSTCSTYLE nstcsMask,
        NSTCSTYLE nstcsStyle);

    HRESULT (STDMETHODCALLTYPE *GetControlStyle)(
        INameSpaceTreeControl2* This,
        NSTCSTYLE nstcsMask,
        NSTCSTYLE *pnstcsStyle);

    HRESULT (STDMETHODCALLTYPE *SetControlStyle2)(
        INameSpaceTreeControl2* This,
        NSTCSTYLE2 nstcsMask,
        NSTCSTYLE2 nstcsStyle);

    HRESULT (STDMETHODCALLTYPE *GetControlStyle2)(
        INameSpaceTreeControl2* This,
        NSTCSTYLE2 nstcsMask,
        NSTCSTYLE2 *pnstcsStyle);

    END_INTERFACE
} INameSpaceTreeControl2Vtbl;
interface INameSpaceTreeControl2 {
    CONST_VTBL INameSpaceTreeControl2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define INameSpaceTreeControl2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INameSpaceTreeControl2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INameSpaceTreeControl2_Release(This) (This)->lpVtbl->Release(This)
/*** INameSpaceTreeControl methods ***/
#define INameSpaceTreeControl2_Initialize(This,hwndParent,prc,nstcsFlags) (This)->lpVtbl->Initialize(This,hwndParent,prc,nstcsFlags)
#define INameSpaceTreeControl2_TreeAdvise(This,punk,pdwCookie) (This)->lpVtbl->TreeAdvise(This,punk,pdwCookie)
#define INameSpaceTreeControl2_TreeUnadvise(This,dwCookie) (This)->lpVtbl->TreeUnadvise(This,dwCookie)
#define INameSpaceTreeControl2_AppendRoot(This,psiRoot,grfEnumFlags,grfRootStyle,pif) (This)->lpVtbl->AppendRoot(This,psiRoot,grfEnumFlags,grfRootStyle,pif)
#define INameSpaceTreeControl2_InsertRoot(This,iIndex,psiRoot,grfEnumFlags,grfRootStyle,pif) (This)->lpVtbl->InsertRoot(This,iIndex,psiRoot,grfEnumFlags,grfRootStyle,pif)
#define INameSpaceTreeControl2_RemoveRoot(This,psiRoot) (This)->lpVtbl->RemoveRoot(This,psiRoot)
#define INameSpaceTreeControl2_RemoveAllRoots(This) (This)->lpVtbl->RemoveAllRoots(This)
#define INameSpaceTreeControl2_GetRootItems(This,ppsiaRootItems) (This)->lpVtbl->GetRootItems(This,ppsiaRootItems)
#define INameSpaceTreeControl2_SetItemState(This,psi,nstcisMask,nstcisFlags) (This)->lpVtbl->SetItemState(This,psi,nstcisMask,nstcisFlags)
#define INameSpaceTreeControl2_GetItemState(This,psi,nstcismask,pnstcisFlags) (This)->lpVtbl->GetItemState(This,psi,nstcismask,pnstcisFlags)
#define INameSpaceTreeControl2_GetSelectedItems(This,psiaItems) (This)->lpVtbl->GetSelectedItems(This,psiaItems)
#define INameSpaceTreeControl2_GetItemCustomState(This,psi,piStateNumber) (This)->lpVtbl->GetItemCustomState(This,psi,piStateNumber)
#define INameSpaceTreeControl2_SetItemCustomState(This,psi,iStateNumber) (This)->lpVtbl->SetItemCustomState(This,psi,iStateNumber)
#define INameSpaceTreeControl2_EnsureItemVisible(This,psi) (This)->lpVtbl->EnsureItemVisible(This,psi)
#define INameSpaceTreeControl2_SetTheme(This,pszTheme) (This)->lpVtbl->SetTheme(This,pszTheme)
#define INameSpaceTreeControl2_GetNextItem(This,psi,nstcgi,ppsiNext) (This)->lpVtbl->GetNextItem(This,psi,nstcgi,ppsiNext)
#define INameSpaceTreeControl2_HitTest(This,ppt,ppsiOut) (This)->lpVtbl->HitTest(This,ppt,ppsiOut)
#define INameSpaceTreeControl2_GetItemRect(This,psi,prect) (This)->lpVtbl->GetItemRect(This,psi,prect)
#define INameSpaceTreeControl2_CollapseAll(This) (This)->lpVtbl->CollapseAll(This)
/*** INameSpaceTreeControl2 methods ***/
#define INameSpaceTreeControl2_SetControlStyle(This,nstcsMask,nstcsStyle) (This)->lpVtbl->SetControlStyle(This,nstcsMask,nstcsStyle)
#define INameSpaceTreeControl2_GetControlStyle(This,nstcsMask,pnstcsStyle) (This)->lpVtbl->GetControlStyle(This,nstcsMask,pnstcsStyle)
#define INameSpaceTreeControl2_SetControlStyle2(This,nstcsMask,nstcsStyle) (This)->lpVtbl->SetControlStyle2(This,nstcsMask,nstcsStyle)
#define INameSpaceTreeControl2_GetControlStyle2(This,nstcsMask,pnstcsStyle) (This)->lpVtbl->GetControlStyle2(This,nstcsMask,pnstcsStyle)
#endif

#endif

HRESULT STDMETHODCALLTYPE INameSpaceTreeControl2_SetControlStyle_Proxy(
    INameSpaceTreeControl2* This,
    NSTCSTYLE nstcsMask,
    NSTCSTYLE nstcsStyle);
void __RPC_STUB INameSpaceTreeControl2_SetControlStyle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl2_GetControlStyle_Proxy(
    INameSpaceTreeControl2* This,
    NSTCSTYLE nstcsMask,
    NSTCSTYLE *pnstcsStyle);
void __RPC_STUB INameSpaceTreeControl2_GetControlStyle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl2_SetControlStyle2_Proxy(
    INameSpaceTreeControl2* This,
    NSTCSTYLE2 nstcsMask,
    NSTCSTYLE2 nstcsStyle);
void __RPC_STUB INameSpaceTreeControl2_SetControlStyle2_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControl2_GetControlStyle2_Proxy(
    INameSpaceTreeControl2* This,
    NSTCSTYLE2 nstcsMask,
    NSTCSTYLE2 *pnstcsStyle);
void __RPC_STUB INameSpaceTreeControl2_GetControlStyle2_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __INameSpaceTreeControl2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * INameSpaceTreeControlEvents interface
 */
#ifndef __INameSpaceTreeControlEvents_INTERFACE_DEFINED__
#define __INameSpaceTreeControlEvents_INTERFACE_DEFINED__

enum _NSTCEHITTEST {
    NSTCEHT_NOWHERE = 0x1,
    NSTCEHT_ONITEMICON = 0x2,
    NSTCEHT_ONITEMLABEL = 0x4,
    NSTCEHT_ONITEMIDENT = 0x8,
    NSTCEHT_ONITEMBUTTON = 0x10,
    NSTCEHT_ONITEMRIGHT = 0x20,
    NSTCEHT_ONITEMSTATEICON = 0x40,
    NSTCEHT_ONITEM = 0x46,
    NSTCEHT_ONITEMTABBUTTON = 0x1000
};

typedef DWORD NSTCEHITTEST;
enum _NSTCECLICKTYPE {
    NSTCECT_LBUTTON = 0x1,
    NSTCECT_MBUTTON = 0x2,
    NSTCECT_RBUTTON = 0x3,
    NSTCECT_BUTTON = 0x3,
    NSTCECT_DBLCLICK = 0x4
};

typedef DWORD NSTCECLICKTYPE;
DEFINE_GUID(IID_INameSpaceTreeControlEvents, 0x93d77985, 0xb3d8, 0x4484, 0x83,0x18, 0x67,0x2c,0xdd,0xa0,0x02,0xce);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface INameSpaceTreeControlEvents : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnItemClick(
        IShellItem *psi,
        NSTCEHITTEST nstceHitTest,
        NSTCECLICKTYPE nstceClickType) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnPropertyItemCommit(
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnItemStateChanging(
        IShellItem *psi,
        NSTCITEMSTATE nstcisMask,
        NSTCITEMSTATE nstcisState) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnItemStateChanged(
        IShellItem *psi,
        NSTCITEMSTATE nstcisMask,
        NSTCITEMSTATE nstcisState) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnSelectionChanged(
        IShellItemArray *psiaSelection) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnKeyboardInput(
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnBeforeExpand(
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnAfterExpand(
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnBeginLabelEdit(
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnEndLabelEdit(
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnGetToolTip(
        IShellItem *psi,
        LPWSTR pszTip,
        int cchTip) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnBeforeItemDelete(
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnItemAdded(
        IShellItem *psi,
        BOOL fIsRoot) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnItemDeleted(
        IShellItem *psi,
        BOOL fIsRoot) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnBeforeContextMenu(
        IShellItem *psi,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnAfterContextMenu(
        IShellItem *psi,
        IContextMenu *pcmIn,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnBeforeStateImageChange(
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnGetDefaultIconIndex(
        IShellItem *psi,
        int *piDefaultIcon,
        int *piOpenIcon) = 0;

};
#else
typedef struct INameSpaceTreeControlEventsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INameSpaceTreeControlEvents methods ***/
    HRESULT (STDMETHODCALLTYPE *OnItemClick)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi,
        NSTCEHITTEST nstceHitTest,
        NSTCECLICKTYPE nstceClickType);

    HRESULT (STDMETHODCALLTYPE *OnPropertyItemCommit)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *OnItemStateChanging)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi,
        NSTCITEMSTATE nstcisMask,
        NSTCITEMSTATE nstcisState);

    HRESULT (STDMETHODCALLTYPE *OnItemStateChanged)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi,
        NSTCITEMSTATE nstcisMask,
        NSTCITEMSTATE nstcisState);

    HRESULT (STDMETHODCALLTYPE *OnSelectionChanged)(
        INameSpaceTreeControlEvents* This,
        IShellItemArray *psiaSelection);

    HRESULT (STDMETHODCALLTYPE *OnKeyboardInput)(
        INameSpaceTreeControlEvents* This,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam);

    HRESULT (STDMETHODCALLTYPE *OnBeforeExpand)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *OnAfterExpand)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *OnBeginLabelEdit)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *OnEndLabelEdit)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *OnGetToolTip)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi,
        LPWSTR pszTip,
        int cchTip);

    HRESULT (STDMETHODCALLTYPE *OnBeforeItemDelete)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *OnItemAdded)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi,
        BOOL fIsRoot);

    HRESULT (STDMETHODCALLTYPE *OnItemDeleted)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi,
        BOOL fIsRoot);

    HRESULT (STDMETHODCALLTYPE *OnBeforeContextMenu)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *OnAfterContextMenu)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi,
        IContextMenu *pcmIn,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *OnBeforeStateImageChange)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *OnGetDefaultIconIndex)(
        INameSpaceTreeControlEvents* This,
        IShellItem *psi,
        int *piDefaultIcon,
        int *piOpenIcon);

    END_INTERFACE
} INameSpaceTreeControlEventsVtbl;
interface INameSpaceTreeControlEvents {
    CONST_VTBL INameSpaceTreeControlEventsVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define INameSpaceTreeControlEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INameSpaceTreeControlEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INameSpaceTreeControlEvents_Release(This) (This)->lpVtbl->Release(This)
/*** INameSpaceTreeControlEvents methods ***/
#define INameSpaceTreeControlEvents_OnItemClick(This,psi,nstceHitTest,nstceClickType) (This)->lpVtbl->OnItemClick(This,psi,nstceHitTest,nstceClickType)
#define INameSpaceTreeControlEvents_OnPropertyItemCommit(This,psi) (This)->lpVtbl->OnPropertyItemCommit(This,psi)
#define INameSpaceTreeControlEvents_OnItemStateChanging(This,psi,nstcisMask,nstcisState) (This)->lpVtbl->OnItemStateChanging(This,psi,nstcisMask,nstcisState)
#define INameSpaceTreeControlEvents_OnItemStateChanged(This,psi,nstcisMask,nstcisState) (This)->lpVtbl->OnItemStateChanged(This,psi,nstcisMask,nstcisState)
#define INameSpaceTreeControlEvents_OnSelectionChanged(This,psiaSelection) (This)->lpVtbl->OnSelectionChanged(This,psiaSelection)
#define INameSpaceTreeControlEvents_OnKeyboardInput(This,uMsg,wParam,lParam) (This)->lpVtbl->OnKeyboardInput(This,uMsg,wParam,lParam)
#define INameSpaceTreeControlEvents_OnBeforeExpand(This,psi) (This)->lpVtbl->OnBeforeExpand(This,psi)
#define INameSpaceTreeControlEvents_OnAfterExpand(This,psi) (This)->lpVtbl->OnAfterExpand(This,psi)
#define INameSpaceTreeControlEvents_OnBeginLabelEdit(This,psi) (This)->lpVtbl->OnBeginLabelEdit(This,psi)
#define INameSpaceTreeControlEvents_OnEndLabelEdit(This,psi) (This)->lpVtbl->OnEndLabelEdit(This,psi)
#define INameSpaceTreeControlEvents_OnGetToolTip(This,psi,pszTip,cchTip) (This)->lpVtbl->OnGetToolTip(This,psi,pszTip,cchTip)
#define INameSpaceTreeControlEvents_OnBeforeItemDelete(This,psi) (This)->lpVtbl->OnBeforeItemDelete(This,psi)
#define INameSpaceTreeControlEvents_OnItemAdded(This,psi,fIsRoot) (This)->lpVtbl->OnItemAdded(This,psi,fIsRoot)
#define INameSpaceTreeControlEvents_OnItemDeleted(This,psi,fIsRoot) (This)->lpVtbl->OnItemDeleted(This,psi,fIsRoot)
#define INameSpaceTreeControlEvents_OnBeforeContextMenu(This,psi,riid,ppv) (This)->lpVtbl->OnBeforeContextMenu(This,psi,riid,ppv)
#define INameSpaceTreeControlEvents_OnAfterContextMenu(This,psi,pcmIn,riid,ppv) (This)->lpVtbl->OnAfterContextMenu(This,psi,pcmIn,riid,ppv)
#define INameSpaceTreeControlEvents_OnBeforeStateImageChange(This,psi) (This)->lpVtbl->OnBeforeStateImageChange(This,psi)
#define INameSpaceTreeControlEvents_OnGetDefaultIconIndex(This,psi,piDefaultIcon,piOpenIcon) (This)->lpVtbl->OnGetDefaultIconIndex(This,psi,piDefaultIcon,piOpenIcon)
#endif

#endif

HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnItemClick_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi,
    NSTCEHITTEST nstceHitTest,
    NSTCECLICKTYPE nstceClickType);
void __RPC_STUB INameSpaceTreeControlEvents_OnItemClick_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnPropertyItemCommit_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi);
void __RPC_STUB INameSpaceTreeControlEvents_OnPropertyItemCommit_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnItemStateChanging_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi,
    NSTCITEMSTATE nstcisMask,
    NSTCITEMSTATE nstcisState);
void __RPC_STUB INameSpaceTreeControlEvents_OnItemStateChanging_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnItemStateChanged_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi,
    NSTCITEMSTATE nstcisMask,
    NSTCITEMSTATE nstcisState);
void __RPC_STUB INameSpaceTreeControlEvents_OnItemStateChanged_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnSelectionChanged_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItemArray *psiaSelection);
void __RPC_STUB INameSpaceTreeControlEvents_OnSelectionChanged_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnKeyboardInput_Proxy(
    INameSpaceTreeControlEvents* This,
    UINT uMsg,
    WPARAM wParam,
    LPARAM lParam);
void __RPC_STUB INameSpaceTreeControlEvents_OnKeyboardInput_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnBeforeExpand_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi);
void __RPC_STUB INameSpaceTreeControlEvents_OnBeforeExpand_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnAfterExpand_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi);
void __RPC_STUB INameSpaceTreeControlEvents_OnAfterExpand_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnBeginLabelEdit_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi);
void __RPC_STUB INameSpaceTreeControlEvents_OnBeginLabelEdit_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnEndLabelEdit_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi);
void __RPC_STUB INameSpaceTreeControlEvents_OnEndLabelEdit_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnGetToolTip_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi,
    LPWSTR pszTip,
    int cchTip);
void __RPC_STUB INameSpaceTreeControlEvents_OnGetToolTip_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnBeforeItemDelete_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi);
void __RPC_STUB INameSpaceTreeControlEvents_OnBeforeItemDelete_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnItemAdded_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi,
    BOOL fIsRoot);
void __RPC_STUB INameSpaceTreeControlEvents_OnItemAdded_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnItemDeleted_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi,
    BOOL fIsRoot);
void __RPC_STUB INameSpaceTreeControlEvents_OnItemDeleted_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnBeforeContextMenu_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi,
    REFIID riid,
    void **ppv);
void __RPC_STUB INameSpaceTreeControlEvents_OnBeforeContextMenu_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnAfterContextMenu_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi,
    IContextMenu *pcmIn,
    REFIID riid,
    void **ppv);
void __RPC_STUB INameSpaceTreeControlEvents_OnAfterContextMenu_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnBeforeStateImageChange_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi);
void __RPC_STUB INameSpaceTreeControlEvents_OnBeforeStateImageChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlEvents_OnGetDefaultIconIndex_Proxy(
    INameSpaceTreeControlEvents* This,
    IShellItem *psi,
    int *piDefaultIcon,
    int *piOpenIcon);
void __RPC_STUB INameSpaceTreeControlEvents_OnGetDefaultIconIndex_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __INameSpaceTreeControlEvents_INTERFACE_DEFINED__ */

#ifdef MIDL_PASS
typedef IUnknown *HIMAGELIST;
#endif
/*****************************************************************************
 * INameSpaceTreeControlCustomDraw interface
 */
#ifndef __INameSpaceTreeControlCustomDraw_INTERFACE_DEFINED__
#define __INameSpaceTreeControlCustomDraw_INTERFACE_DEFINED__

typedef struct NSTCCUSTOMDRAW {
    IShellItem *psi;
    UINT uItemState;
    NSTCITEMSTATE nstcis;
    LPCWSTR pszText;
    int iImage;
    HIMAGELIST himl;
    int iLevel;
    int iIndent;
} NSTCCUSTOMDRAW;
DEFINE_GUID(IID_INameSpaceTreeControlCustomDraw, 0x2d3ba758, 0x33ee, 0x42d5, 0xbb,0x7b, 0x5f,0x34,0x31,0xd8,0x6c,0x78);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface INameSpaceTreeControlCustomDraw : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE PrePaint(
        HDC hdc,
        RECT *prc,
        LRESULT *plres) = 0;

    virtual HRESULT STDMETHODCALLTYPE PostPaint(
        HDC hdc,
        RECT *prc) = 0;

    virtual HRESULT STDMETHODCALLTYPE ItemPrePaint(
        HDC hdc,
        RECT *prc,
        COLORREF *pclrText,
        COLORREF *pclrTextBk,
        LRESULT *plres) = 0;

    virtual HRESULT STDMETHODCALLTYPE ItemPostPaint(
        HDC hdc,
        RECT *prc,
        NSTCCUSTOMDRAW *pnstccdItem) = 0;

};
#else
typedef struct INameSpaceTreeControlCustomDrawVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INameSpaceTreeControlCustomDraw methods ***/
    HRESULT (STDMETHODCALLTYPE *PrePaint)(
        INameSpaceTreeControlCustomDraw* This,
        HDC hdc,
        RECT *prc,
        LRESULT *plres);

    HRESULT (STDMETHODCALLTYPE *PostPaint)(
        INameSpaceTreeControlCustomDraw* This,
        HDC hdc,
        RECT *prc);

    HRESULT (STDMETHODCALLTYPE *ItemPrePaint)(
        INameSpaceTreeControlCustomDraw* This,
        HDC hdc,
        RECT *prc,
        COLORREF *pclrText,
        COLORREF *pclrTextBk,
        LRESULT *plres);

    HRESULT (STDMETHODCALLTYPE *ItemPostPaint)(
        INameSpaceTreeControlCustomDraw* This,
        HDC hdc,
        RECT *prc,
        NSTCCUSTOMDRAW *pnstccdItem);

    END_INTERFACE
} INameSpaceTreeControlCustomDrawVtbl;
interface INameSpaceTreeControlCustomDraw {
    CONST_VTBL INameSpaceTreeControlCustomDrawVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define INameSpaceTreeControlCustomDraw_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INameSpaceTreeControlCustomDraw_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INameSpaceTreeControlCustomDraw_Release(This) (This)->lpVtbl->Release(This)
/*** INameSpaceTreeControlCustomDraw methods ***/
#define INameSpaceTreeControlCustomDraw_PrePaint(This,hdc,prc,plres) (This)->lpVtbl->PrePaint(This,hdc,prc,plres)
#define INameSpaceTreeControlCustomDraw_PostPaint(This,hdc,prc) (This)->lpVtbl->PostPaint(This,hdc,prc)
#define INameSpaceTreeControlCustomDraw_ItemPrePaint(This,hdc,prc,pclrText,pclrTextBk,plres) (This)->lpVtbl->ItemPrePaint(This,hdc,prc,pclrText,pclrTextBk,plres)
#define INameSpaceTreeControlCustomDraw_ItemPostPaint(This,hdc,prc,pnstccdItem) (This)->lpVtbl->ItemPostPaint(This,hdc,prc,pnstccdItem)
#endif

#endif

HRESULT STDMETHODCALLTYPE INameSpaceTreeControlCustomDraw_PrePaint_Proxy(
    INameSpaceTreeControlCustomDraw* This,
    HDC hdc,
    RECT *prc,
    LRESULT *plres);
void __RPC_STUB INameSpaceTreeControlCustomDraw_PrePaint_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlCustomDraw_PostPaint_Proxy(
    INameSpaceTreeControlCustomDraw* This,
    HDC hdc,
    RECT *prc);
void __RPC_STUB INameSpaceTreeControlCustomDraw_PostPaint_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlCustomDraw_ItemPrePaint_Proxy(
    INameSpaceTreeControlCustomDraw* This,
    HDC hdc,
    RECT *prc,
    COLORREF *pclrText,
    COLORREF *pclrTextBk,
    LRESULT *plres);
void __RPC_STUB INameSpaceTreeControlCustomDraw_ItemPrePaint_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlCustomDraw_ItemPostPaint_Proxy(
    INameSpaceTreeControlCustomDraw* This,
    HDC hdc,
    RECT *prc,
    NSTCCUSTOMDRAW *pnstccdItem);
void __RPC_STUB INameSpaceTreeControlCustomDraw_ItemPostPaint_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __INameSpaceTreeControlCustomDraw_INTERFACE_DEFINED__ */

/*****************************************************************************
 * INameSpaceTreeControlDropHandler interface
 */
#ifndef __INameSpaceTreeControlDropHandler_INTERFACE_DEFINED__
#define __INameSpaceTreeControlDropHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_INameSpaceTreeControlDropHandler, 0xf9c665d6, 0xc2f2, 0x4c19, 0xbf,0x33, 0x83,0x22,0xd7,0x35,0x2f,0x51);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface INameSpaceTreeControlDropHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnDragEnter(
        IShellItem *psiOver,
        IShellItemArray *psiaData,
        BOOL fOutsideSource,
        DWORD grfKeyState,
        DWORD *pdwEffect) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnDragOver(
        IShellItem *psiOver,
        IShellItemArray *psiaData,
        DWORD grfKeyState,
        DWORD *pdwEffect) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnDragPosition(
        IShellItem *psiOver,
        IShellItemArray *psiaData,
        int iNewPosition,
        int iOldPosition) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnDrop(
        IShellItem *psiOver,
        IShellItemArray *psiaData,
        int iPosition,
        DWORD grfKeyState,
        DWORD *pdwEffect) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnDropPosition(
        IShellItem *psiOver,
        IShellItemArray *psiaData,
        int iNewPosition,
        int iOldPosition) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnDragLeave(
        IShellItem *psiOver) = 0;

};
#else
typedef struct INameSpaceTreeControlDropHandlerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INameSpaceTreeControlDropHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *OnDragEnter)(
        INameSpaceTreeControlDropHandler* This,
        IShellItem *psiOver,
        IShellItemArray *psiaData,
        BOOL fOutsideSource,
        DWORD grfKeyState,
        DWORD *pdwEffect);

    HRESULT (STDMETHODCALLTYPE *OnDragOver)(
        INameSpaceTreeControlDropHandler* This,
        IShellItem *psiOver,
        IShellItemArray *psiaData,
        DWORD grfKeyState,
        DWORD *pdwEffect);

    HRESULT (STDMETHODCALLTYPE *OnDragPosition)(
        INameSpaceTreeControlDropHandler* This,
        IShellItem *psiOver,
        IShellItemArray *psiaData,
        int iNewPosition,
        int iOldPosition);

    HRESULT (STDMETHODCALLTYPE *OnDrop)(
        INameSpaceTreeControlDropHandler* This,
        IShellItem *psiOver,
        IShellItemArray *psiaData,
        int iPosition,
        DWORD grfKeyState,
        DWORD *pdwEffect);

    HRESULT (STDMETHODCALLTYPE *OnDropPosition)(
        INameSpaceTreeControlDropHandler* This,
        IShellItem *psiOver,
        IShellItemArray *psiaData,
        int iNewPosition,
        int iOldPosition);

    HRESULT (STDMETHODCALLTYPE *OnDragLeave)(
        INameSpaceTreeControlDropHandler* This,
        IShellItem *psiOver);

    END_INTERFACE
} INameSpaceTreeControlDropHandlerVtbl;
interface INameSpaceTreeControlDropHandler {
    CONST_VTBL INameSpaceTreeControlDropHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define INameSpaceTreeControlDropHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INameSpaceTreeControlDropHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INameSpaceTreeControlDropHandler_Release(This) (This)->lpVtbl->Release(This)
/*** INameSpaceTreeControlDropHandler methods ***/
#define INameSpaceTreeControlDropHandler_OnDragEnter(This,psiOver,psiaData,fOutsideSource,grfKeyState,pdwEffect) (This)->lpVtbl->OnDragEnter(This,psiOver,psiaData,fOutsideSource,grfKeyState,pdwEffect)
#define INameSpaceTreeControlDropHandler_OnDragOver(This,psiOver,psiaData,grfKeyState,pdwEffect) (This)->lpVtbl->OnDragOver(This,psiOver,psiaData,grfKeyState,pdwEffect)
#define INameSpaceTreeControlDropHandler_OnDragPosition(This,psiOver,psiaData,iNewPosition,iOldPosition) (This)->lpVtbl->OnDragPosition(This,psiOver,psiaData,iNewPosition,iOldPosition)
#define INameSpaceTreeControlDropHandler_OnDrop(This,psiOver,psiaData,iPosition,grfKeyState,pdwEffect) (This)->lpVtbl->OnDrop(This,psiOver,psiaData,iPosition,grfKeyState,pdwEffect)
#define INameSpaceTreeControlDropHandler_OnDropPosition(This,psiOver,psiaData,iNewPosition,iOldPosition) (This)->lpVtbl->OnDropPosition(This,psiOver,psiaData,iNewPosition,iOldPosition)
#define INameSpaceTreeControlDropHandler_OnDragLeave(This,psiOver) (This)->lpVtbl->OnDragLeave(This,psiOver)
#endif

#endif

HRESULT STDMETHODCALLTYPE INameSpaceTreeControlDropHandler_OnDragEnter_Proxy(
    INameSpaceTreeControlDropHandler* This,
    IShellItem *psiOver,
    IShellItemArray *psiaData,
    BOOL fOutsideSource,
    DWORD grfKeyState,
    DWORD *pdwEffect);
void __RPC_STUB INameSpaceTreeControlDropHandler_OnDragEnter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlDropHandler_OnDragOver_Proxy(
    INameSpaceTreeControlDropHandler* This,
    IShellItem *psiOver,
    IShellItemArray *psiaData,
    DWORD grfKeyState,
    DWORD *pdwEffect);
void __RPC_STUB INameSpaceTreeControlDropHandler_OnDragOver_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlDropHandler_OnDragPosition_Proxy(
    INameSpaceTreeControlDropHandler* This,
    IShellItem *psiOver,
    IShellItemArray *psiaData,
    int iNewPosition,
    int iOldPosition);
void __RPC_STUB INameSpaceTreeControlDropHandler_OnDragPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlDropHandler_OnDrop_Proxy(
    INameSpaceTreeControlDropHandler* This,
    IShellItem *psiOver,
    IShellItemArray *psiaData,
    int iPosition,
    DWORD grfKeyState,
    DWORD *pdwEffect);
void __RPC_STUB INameSpaceTreeControlDropHandler_OnDrop_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlDropHandler_OnDropPosition_Proxy(
    INameSpaceTreeControlDropHandler* This,
    IShellItem *psiOver,
    IShellItemArray *psiaData,
    int iNewPosition,
    int iOldPosition);
void __RPC_STUB INameSpaceTreeControlDropHandler_OnDropPosition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE INameSpaceTreeControlDropHandler_OnDragLeave_Proxy(
    INameSpaceTreeControlDropHandler* This,
    IShellItem *psiOver);
void __RPC_STUB INameSpaceTreeControlDropHandler_OnDragLeave_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __INameSpaceTreeControlDropHandler_INTERFACE_DEFINED__ */

#define NSTCDHPOS_ONTOP -1
#ifndef __IFileDialog_FWD_DEFINED__
#define __IFileDialog_FWD_DEFINED__
typedef interface IFileDialog IFileDialog;
#endif

typedef enum FDE_OVERWRITE_RESPONSE {
    FDEOR_DEFAULT = 0,
    FDEOR_ACCCEP = 1,
    FDEOR_REFUSE = 2
} FDE_OVERWRITE_RESPONSE;
typedef enum FDE_SHAREVIOLATION_RESPONSE {
    FDESVR_DEFAULT = 0,
    FDESVR_ACCEPT = 1,
    FDESVR_REFUSE = 2
} FDE_SHAREVIOLATION_RESPONSE;
/*****************************************************************************
 * IFileDialogEvents interface
 */
#ifndef __IFileDialogEvents_INTERFACE_DEFINED__
#define __IFileDialogEvents_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFileDialogEvents, 0x973510db, 0x7d7f, 0x452b, 0x89,0x75, 0x74,0xa8,0x58,0x28,0xd3,0x54);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IFileDialogEvents : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnFileOk(
        IFileDialog *pfd) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnFolderChanging(
        IFileDialog *pfd,
        IShellItem *psiFolder) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnFolderChange(
        IFileDialog *pfd) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnSelectionChange(
        IFileDialog *pfd) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnShareViolation(
        IFileDialog *pfd,
        IShellItem *psi,
        FDE_SHAREVIOLATION_RESPONSE *pResponse) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnTypeChange(
        IFileDialog *pfd) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnOverwrite(
        IFileDialog *pfd,
        IShellItem *psi,
        FDE_OVERWRITE_RESPONSE *pResponse) = 0;

};
#else
typedef struct IFileDialogEventsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFileDialogEvents methods ***/
    HRESULT (STDMETHODCALLTYPE *OnFileOk)(
        IFileDialogEvents* This,
        IFileDialog *pfd);

    HRESULT (STDMETHODCALLTYPE *OnFolderChanging)(
        IFileDialogEvents* This,
        IFileDialog *pfd,
        IShellItem *psiFolder);

    HRESULT (STDMETHODCALLTYPE *OnFolderChange)(
        IFileDialogEvents* This,
        IFileDialog *pfd);

    HRESULT (STDMETHODCALLTYPE *OnSelectionChange)(
        IFileDialogEvents* This,
        IFileDialog *pfd);

    HRESULT (STDMETHODCALLTYPE *OnShareViolation)(
        IFileDialogEvents* This,
        IFileDialog *pfd,
        IShellItem *psi,
        FDE_SHAREVIOLATION_RESPONSE *pResponse);

    HRESULT (STDMETHODCALLTYPE *OnTypeChange)(
        IFileDialogEvents* This,
        IFileDialog *pfd);

    HRESULT (STDMETHODCALLTYPE *OnOverwrite)(
        IFileDialogEvents* This,
        IFileDialog *pfd,
        IShellItem *psi,
        FDE_OVERWRITE_RESPONSE *pResponse);

    END_INTERFACE
} IFileDialogEventsVtbl;
interface IFileDialogEvents {
    CONST_VTBL IFileDialogEventsVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFileDialogEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileDialogEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileDialogEvents_Release(This) (This)->lpVtbl->Release(This)
/*** IFileDialogEvents methods ***/
#define IFileDialogEvents_OnFileOk(This,pfd) (This)->lpVtbl->OnFileOk(This,pfd)
#define IFileDialogEvents_OnFolderChanging(This,pfd,psiFolder) (This)->lpVtbl->OnFolderChanging(This,pfd,psiFolder)
#define IFileDialogEvents_OnFolderChange(This,pfd) (This)->lpVtbl->OnFolderChange(This,pfd)
#define IFileDialogEvents_OnSelectionChange(This,pfd) (This)->lpVtbl->OnSelectionChange(This,pfd)
#define IFileDialogEvents_OnShareViolation(This,pfd,psi,pResponse) (This)->lpVtbl->OnShareViolation(This,pfd,psi,pResponse)
#define IFileDialogEvents_OnTypeChange(This,pfd) (This)->lpVtbl->OnTypeChange(This,pfd)
#define IFileDialogEvents_OnOverwrite(This,pfd,psi,pResponse) (This)->lpVtbl->OnOverwrite(This,pfd,psi,pResponse)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFileDialogEvents_OnFileOk_Proxy(
    IFileDialogEvents* This,
    IFileDialog *pfd);
void __RPC_STUB IFileDialogEvents_OnFileOk_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogEvents_OnFolderChanging_Proxy(
    IFileDialogEvents* This,
    IFileDialog *pfd,
    IShellItem *psiFolder);
void __RPC_STUB IFileDialogEvents_OnFolderChanging_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogEvents_OnFolderChange_Proxy(
    IFileDialogEvents* This,
    IFileDialog *pfd);
void __RPC_STUB IFileDialogEvents_OnFolderChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogEvents_OnSelectionChange_Proxy(
    IFileDialogEvents* This,
    IFileDialog *pfd);
void __RPC_STUB IFileDialogEvents_OnSelectionChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogEvents_OnShareViolation_Proxy(
    IFileDialogEvents* This,
    IFileDialog *pfd,
    IShellItem *psi,
    FDE_SHAREVIOLATION_RESPONSE *pResponse);
void __RPC_STUB IFileDialogEvents_OnShareViolation_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogEvents_OnTypeChange_Proxy(
    IFileDialogEvents* This,
    IFileDialog *pfd);
void __RPC_STUB IFileDialogEvents_OnTypeChange_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogEvents_OnOverwrite_Proxy(
    IFileDialogEvents* This,
    IFileDialog *pfd,
    IShellItem *psi,
    FDE_OVERWRITE_RESPONSE *pResponse);
void __RPC_STUB IFileDialogEvents_OnOverwrite_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFileDialogEvents_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IModalWindow interface
 */
#ifndef __IModalWindow_INTERFACE_DEFINED__
#define __IModalWindow_INTERFACE_DEFINED__

DEFINE_GUID(IID_IModalWindow, 0xb4db1657, 0x70d7, 0x485e, 0x8e,0x3e, 0x6f,0xcb,0x5a,0x5c,0x18,0x02);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IModalWindow : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Show(
        HWND hwndOwner) = 0;

};
#else
typedef struct IModalWindowVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IModalWindow methods ***/
    HRESULT (STDMETHODCALLTYPE *Show)(
        IModalWindow* This,
        HWND hwndOwner);

    END_INTERFACE
} IModalWindowVtbl;
interface IModalWindow {
    CONST_VTBL IModalWindowVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IModalWindow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IModalWindow_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IModalWindow_Release(This) (This)->lpVtbl->Release(This)
/*** IModalWindow methods ***/
#define IModalWindow_Show(This,hwndOwner) (This)->lpVtbl->Show(This,hwndOwner)
#endif

#endif

HRESULT STDMETHODCALLTYPE IModalWindow_RemoteShow_Proxy(
    IModalWindow* This,
    HWND hwndOwner);
void __RPC_STUB IModalWindow_RemoteShow_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IModalWindow_Show_Proxy(
    IModalWindow* This,
    HWND hwndOwner);
HRESULT __RPC_STUB IModalWindow_Show_Stub(
    IModalWindow* This,
    HWND hwndOwner);

#endif  /* __IModalWindow_INTERFACE_DEFINED__ */

typedef enum FDAP {
    FDAP_BOTTOM = 0,
    FDAP_TOP = 1
} FDAP;
/*****************************************************************************
 * IFileDialog interface
 */
#ifndef __IFileDialog_INTERFACE_DEFINED__
#define __IFileDialog_INTERFACE_DEFINED__

enum _FILEOPENDIALOGOPTIONS {
    FOS_OVERWRITEPROMPT = 0x2,
    FOS_STRICTFILETYPES = 0x4,
    FOS_NOCHANGEDIR = 0x8,
    FOS_PICKFOLDERS = 0x20,
    FOS_FORCEFILESYSTEM = 0x40,
    FOS_ALLNONSTORAGEITEMS = 0x80,
    FOS_NOVALIDATE = 0x100,
    FOS_ALLOWMULTISELECT = 0x200,
    FOS_PATHMUSTEXIST = 0x800,
    FOS_FILEMUSTEXIST = 0x1000,
    FOS_CREATEPROMPT = 0x2000,
    FOS_SHAREAWARE = 0x4000,
    FOS_NOREADONLYRETURN = 0x8000,
    FOS_NOTESTFILECREATE = 0x10000,
    FOS_HIDEMRUPLACES = 0x20000,
    FOS_HIDEPINNEDPLACES = 0x40000,
    FOS_NODEREFERENCELINKS = 0x100000,
    FOS_DONTADDTORECENT = 0x2000000,
    FOS_FORCESHOWHIDDEN = 0x10000000,
    FOS_DEFAULTNOMINIMODE = 0x20000000,
    FOS_FORCEPREVIEWPANEON = 0x40000000
};

typedef DWORD FILEOPENDIALOGOPTIONS;
DEFINE_GUID(IID_IFileDialog, 0x42f85136, 0xdb7e, 0x439c, 0x85,0xf1, 0xe4,0x07,0x5d,0x13,0x5f,0xc8);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IFileDialog : public IModalWindow
{
    virtual HRESULT STDMETHODCALLTYPE SetFileTypes(
        UINT cFileTypes,
        const COMDLG_FILTERSPEC *rgFilterSpec) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFileTypeIndex(
        UINT iFileType) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFileTypeIndex(
        UINT *piFileType) = 0;

    virtual HRESULT STDMETHODCALLTYPE Advise(
        IFileDialogEvents *pfde,
        DWORD *pdwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unadvise(
        DWORD dwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOptions(
        FILEOPENDIALOGOPTIONS fos) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOptions(
        FILEOPENDIALOGOPTIONS *pfos) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDefaultFolder(
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFolder(
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolder(
        IShellItem **ppsi) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentSelection(
        IShellItem **ppsi) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFileName(
        LPCWSTR pszName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFileName(
        LPWSTR *pszName) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTitle(
        LPCWSTR pszTitle) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOkButtonLabel(
        LPCWSTR pszText) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFileNameLabel(
        LPCWSTR pszLabel) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetResult(
        IShellItem **ppsi) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddPlace(
        IShellItem *psi,
        FDAP fdap) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDefaultExtension(
        LPCWSTR pszDefaultExtension) = 0;

    virtual HRESULT STDMETHODCALLTYPE Close(
        HRESULT hr) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetClientGuid(
        REFGUID guid) = 0;

    virtual HRESULT STDMETHODCALLTYPE ClearClientData(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFilter(
        IShellItemFilter *pFilter) = 0;

};
#else
typedef struct IFileDialogVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IModalWindow methods ***/
    HRESULT (STDMETHODCALLTYPE *Show)(
        IFileDialog* This,
        HWND hwndOwner);

    /*** IFileDialog methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFileTypes)(
        IFileDialog* This,
        UINT cFileTypes,
        const COMDLG_FILTERSPEC *rgFilterSpec);

    HRESULT (STDMETHODCALLTYPE *SetFileTypeIndex)(
        IFileDialog* This,
        UINT iFileType);

    HRESULT (STDMETHODCALLTYPE *GetFileTypeIndex)(
        IFileDialog* This,
        UINT *piFileType);

    HRESULT (STDMETHODCALLTYPE *Advise)(
        IFileDialog* This,
        IFileDialogEvents *pfde,
        DWORD *pdwCookie);

    HRESULT (STDMETHODCALLTYPE *Unadvise)(
        IFileDialog* This,
        DWORD dwCookie);

    HRESULT (STDMETHODCALLTYPE *SetOptions)(
        IFileDialog* This,
        FILEOPENDIALOGOPTIONS fos);

    HRESULT (STDMETHODCALLTYPE *GetOptions)(
        IFileDialog* This,
        FILEOPENDIALOGOPTIONS *pfos);

    HRESULT (STDMETHODCALLTYPE *SetDefaultFolder)(
        IFileDialog* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *SetFolder)(
        IFileDialog* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *GetFolder)(
        IFileDialog* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *GetCurrentSelection)(
        IFileDialog* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *SetFileName)(
        IFileDialog* This,
        LPCWSTR pszName);

    HRESULT (STDMETHODCALLTYPE *GetFileName)(
        IFileDialog* This,
        LPWSTR *pszName);

    HRESULT (STDMETHODCALLTYPE *SetTitle)(
        IFileDialog* This,
        LPCWSTR pszTitle);

    HRESULT (STDMETHODCALLTYPE *SetOkButtonLabel)(
        IFileDialog* This,
        LPCWSTR pszText);

    HRESULT (STDMETHODCALLTYPE *SetFileNameLabel)(
        IFileDialog* This,
        LPCWSTR pszLabel);

    HRESULT (STDMETHODCALLTYPE *GetResult)(
        IFileDialog* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *AddPlace)(
        IFileDialog* This,
        IShellItem *psi,
        FDAP fdap);

    HRESULT (STDMETHODCALLTYPE *SetDefaultExtension)(
        IFileDialog* This,
        LPCWSTR pszDefaultExtension);

    HRESULT (STDMETHODCALLTYPE *Close)(
        IFileDialog* This,
        HRESULT hr);

    HRESULT (STDMETHODCALLTYPE *SetClientGuid)(
        IFileDialog* This,
        REFGUID guid);

    HRESULT (STDMETHODCALLTYPE *ClearClientData)(
        IFileDialog* This);

    HRESULT (STDMETHODCALLTYPE *SetFilter)(
        IFileDialog* This,
        IShellItemFilter *pFilter);

    END_INTERFACE
} IFileDialogVtbl;
interface IFileDialog {
    CONST_VTBL IFileDialogVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFileDialog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileDialog_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileDialog_Release(This) (This)->lpVtbl->Release(This)
/*** IModalWindow methods ***/
#define IFileDialog_Show(This,hwndOwner) (This)->lpVtbl->Show(This,hwndOwner)
/*** IFileDialog methods ***/
#define IFileDialog_SetFileTypes(This,cFileTypes,rgFilterSpec) (This)->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec)
#define IFileDialog_SetFileTypeIndex(This,iFileType) (This)->lpVtbl->SetFileTypeIndex(This,iFileType)
#define IFileDialog_GetFileTypeIndex(This,piFileType) (This)->lpVtbl->GetFileTypeIndex(This,piFileType)
#define IFileDialog_Advise(This,pfde,pdwCookie) (This)->lpVtbl->Advise(This,pfde,pdwCookie)
#define IFileDialog_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
#define IFileDialog_SetOptions(This,fos) (This)->lpVtbl->SetOptions(This,fos)
#define IFileDialog_GetOptions(This,pfos) (This)->lpVtbl->GetOptions(This,pfos)
#define IFileDialog_SetDefaultFolder(This,psi) (This)->lpVtbl->SetDefaultFolder(This,psi)
#define IFileDialog_SetFolder(This,psi) (This)->lpVtbl->SetFolder(This,psi)
#define IFileDialog_GetFolder(This,ppsi) (This)->lpVtbl->GetFolder(This,ppsi)
#define IFileDialog_GetCurrentSelection(This,ppsi) (This)->lpVtbl->GetCurrentSelection(This,ppsi)
#define IFileDialog_SetFileName(This,pszName) (This)->lpVtbl->SetFileName(This,pszName)
#define IFileDialog_GetFileName(This,pszName) (This)->lpVtbl->GetFileName(This,pszName)
#define IFileDialog_SetTitle(This,pszTitle) (This)->lpVtbl->SetTitle(This,pszTitle)
#define IFileDialog_SetOkButtonLabel(This,pszText) (This)->lpVtbl->SetOkButtonLabel(This,pszText)
#define IFileDialog_SetFileNameLabel(This,pszLabel) (This)->lpVtbl->SetFileNameLabel(This,pszLabel)
#define IFileDialog_GetResult(This,ppsi) (This)->lpVtbl->GetResult(This,ppsi)
#define IFileDialog_AddPlace(This,psi,fdap) (This)->lpVtbl->AddPlace(This,psi,fdap)
#define IFileDialog_SetDefaultExtension(This,pszDefaultExtension) (This)->lpVtbl->SetDefaultExtension(This,pszDefaultExtension)
#define IFileDialog_Close(This,hr) (This)->lpVtbl->Close(This,hr)
#define IFileDialog_SetClientGuid(This,guid) (This)->lpVtbl->SetClientGuid(This,guid)
#define IFileDialog_ClearClientData(This) (This)->lpVtbl->ClearClientData(This)
#define IFileDialog_SetFilter(This,pFilter) (This)->lpVtbl->SetFilter(This,pFilter)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFileDialog_SetFileTypes_Proxy(
    IFileDialog* This,
    UINT cFileTypes,
    const COMDLG_FILTERSPEC *rgFilterSpec);
void __RPC_STUB IFileDialog_SetFileTypes_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_SetFileTypeIndex_Proxy(
    IFileDialog* This,
    UINT iFileType);
void __RPC_STUB IFileDialog_SetFileTypeIndex_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_GetFileTypeIndex_Proxy(
    IFileDialog* This,
    UINT *piFileType);
void __RPC_STUB IFileDialog_GetFileTypeIndex_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_Advise_Proxy(
    IFileDialog* This,
    IFileDialogEvents *pfde,
    DWORD *pdwCookie);
void __RPC_STUB IFileDialog_Advise_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_Unadvise_Proxy(
    IFileDialog* This,
    DWORD dwCookie);
void __RPC_STUB IFileDialog_Unadvise_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_SetOptions_Proxy(
    IFileDialog* This,
    FILEOPENDIALOGOPTIONS fos);
void __RPC_STUB IFileDialog_SetOptions_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_GetOptions_Proxy(
    IFileDialog* This,
    FILEOPENDIALOGOPTIONS *pfos);
void __RPC_STUB IFileDialog_GetOptions_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_SetDefaultFolder_Proxy(
    IFileDialog* This,
    IShellItem *psi);
void __RPC_STUB IFileDialog_SetDefaultFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_SetFolder_Proxy(
    IFileDialog* This,
    IShellItem *psi);
void __RPC_STUB IFileDialog_SetFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_GetFolder_Proxy(
    IFileDialog* This,
    IShellItem **ppsi);
void __RPC_STUB IFileDialog_GetFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_GetCurrentSelection_Proxy(
    IFileDialog* This,
    IShellItem **ppsi);
void __RPC_STUB IFileDialog_GetCurrentSelection_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_SetFileName_Proxy(
    IFileDialog* This,
    LPCWSTR pszName);
void __RPC_STUB IFileDialog_SetFileName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_GetFileName_Proxy(
    IFileDialog* This,
    LPWSTR *pszName);
void __RPC_STUB IFileDialog_GetFileName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_SetTitle_Proxy(
    IFileDialog* This,
    LPCWSTR pszTitle);
void __RPC_STUB IFileDialog_SetTitle_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_SetOkButtonLabel_Proxy(
    IFileDialog* This,
    LPCWSTR pszText);
void __RPC_STUB IFileDialog_SetOkButtonLabel_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_SetFileNameLabel_Proxy(
    IFileDialog* This,
    LPCWSTR pszLabel);
void __RPC_STUB IFileDialog_SetFileNameLabel_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_GetResult_Proxy(
    IFileDialog* This,
    IShellItem **ppsi);
void __RPC_STUB IFileDialog_GetResult_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_AddPlace_Proxy(
    IFileDialog* This,
    IShellItem *psi,
    FDAP fdap);
void __RPC_STUB IFileDialog_AddPlace_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_SetDefaultExtension_Proxy(
    IFileDialog* This,
    LPCWSTR pszDefaultExtension);
void __RPC_STUB IFileDialog_SetDefaultExtension_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_Close_Proxy(
    IFileDialog* This,
    HRESULT hr);
void __RPC_STUB IFileDialog_Close_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_SetClientGuid_Proxy(
    IFileDialog* This,
    REFGUID guid);
void __RPC_STUB IFileDialog_SetClientGuid_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_ClearClientData_Proxy(
    IFileDialog* This);
void __RPC_STUB IFileDialog_ClearClientData_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog_SetFilter_Proxy(
    IFileDialog* This,
    IShellItemFilter *pFilter);
void __RPC_STUB IFileDialog_SetFilter_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFileDialog_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IFileDialog2 interface
 */
#ifndef __IFileDialog2_INTERFACE_DEFINED__
#define __IFileDialog2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFileDialog2, 0x61744fc7, 0x85b5, 0x4791, 0xa9,0xb0, 0x27,0x22,0x76,0x30,0x9b,0x13);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IFileDialog2 : public IFileDialog
{
    virtual HRESULT STDMETHODCALLTYPE SetCancelButtonLabel(
        LPCWSTR pszLabel) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNavigationRoot(
        IShellItem *psi) = 0;

};
#else
typedef struct IFileDialog2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IModalWindow methods ***/
    HRESULT (STDMETHODCALLTYPE *Show)(
        IFileDialog2* This,
        HWND hwndOwner);

    /*** IFileDialog methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFileTypes)(
        IFileDialog2* This,
        UINT cFileTypes,
        const COMDLG_FILTERSPEC *rgFilterSpec);

    HRESULT (STDMETHODCALLTYPE *SetFileTypeIndex)(
        IFileDialog2* This,
        UINT iFileType);

    HRESULT (STDMETHODCALLTYPE *GetFileTypeIndex)(
        IFileDialog2* This,
        UINT *piFileType);

    HRESULT (STDMETHODCALLTYPE *Advise)(
        IFileDialog2* This,
        IFileDialogEvents *pfde,
        DWORD *pdwCookie);

    HRESULT (STDMETHODCALLTYPE *Unadvise)(
        IFileDialog2* This,
        DWORD dwCookie);

    HRESULT (STDMETHODCALLTYPE *SetOptions)(
        IFileDialog2* This,
        FILEOPENDIALOGOPTIONS fos);

    HRESULT (STDMETHODCALLTYPE *GetOptions)(
        IFileDialog2* This,
        FILEOPENDIALOGOPTIONS *pfos);

    HRESULT (STDMETHODCALLTYPE *SetDefaultFolder)(
        IFileDialog2* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *SetFolder)(
        IFileDialog2* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *GetFolder)(
        IFileDialog2* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *GetCurrentSelection)(
        IFileDialog2* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *SetFileName)(
        IFileDialog2* This,
        LPCWSTR pszName);

    HRESULT (STDMETHODCALLTYPE *GetFileName)(
        IFileDialog2* This,
        LPWSTR *pszName);

    HRESULT (STDMETHODCALLTYPE *SetTitle)(
        IFileDialog2* This,
        LPCWSTR pszTitle);

    HRESULT (STDMETHODCALLTYPE *SetOkButtonLabel)(
        IFileDialog2* This,
        LPCWSTR pszText);

    HRESULT (STDMETHODCALLTYPE *SetFileNameLabel)(
        IFileDialog2* This,
        LPCWSTR pszLabel);

    HRESULT (STDMETHODCALLTYPE *GetResult)(
        IFileDialog2* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *AddPlace)(
        IFileDialog2* This,
        IShellItem *psi,
        FDAP fdap);

    HRESULT (STDMETHODCALLTYPE *SetDefaultExtension)(
        IFileDialog2* This,
        LPCWSTR pszDefaultExtension);

    HRESULT (STDMETHODCALLTYPE *Close)(
        IFileDialog2* This,
        HRESULT hr);

    HRESULT (STDMETHODCALLTYPE *SetClientGuid)(
        IFileDialog2* This,
        REFGUID guid);

    HRESULT (STDMETHODCALLTYPE *ClearClientData)(
        IFileDialog2* This);

    HRESULT (STDMETHODCALLTYPE *SetFilter)(
        IFileDialog2* This,
        IShellItemFilter *pFilter);

    /*** IFileDialog2 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetCancelButtonLabel)(
        IFileDialog2* This,
        LPCWSTR pszLabel);

    HRESULT (STDMETHODCALLTYPE *SetNavigationRoot)(
        IFileDialog2* This,
        IShellItem *psi);

    END_INTERFACE
} IFileDialog2Vtbl;
interface IFileDialog2 {
    CONST_VTBL IFileDialog2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFileDialog2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileDialog2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileDialog2_Release(This) (This)->lpVtbl->Release(This)
/*** IModalWindow methods ***/
#define IFileDialog2_Show(This,hwndOwner) (This)->lpVtbl->Show(This,hwndOwner)
/*** IFileDialog methods ***/
#define IFileDialog2_SetFileTypes(This,cFileTypes,rgFilterSpec) (This)->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec)
#define IFileDialog2_SetFileTypeIndex(This,iFileType) (This)->lpVtbl->SetFileTypeIndex(This,iFileType)
#define IFileDialog2_GetFileTypeIndex(This,piFileType) (This)->lpVtbl->GetFileTypeIndex(This,piFileType)
#define IFileDialog2_Advise(This,pfde,pdwCookie) (This)->lpVtbl->Advise(This,pfde,pdwCookie)
#define IFileDialog2_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
#define IFileDialog2_SetOptions(This,fos) (This)->lpVtbl->SetOptions(This,fos)
#define IFileDialog2_GetOptions(This,pfos) (This)->lpVtbl->GetOptions(This,pfos)
#define IFileDialog2_SetDefaultFolder(This,psi) (This)->lpVtbl->SetDefaultFolder(This,psi)
#define IFileDialog2_SetFolder(This,psi) (This)->lpVtbl->SetFolder(This,psi)
#define IFileDialog2_GetFolder(This,ppsi) (This)->lpVtbl->GetFolder(This,ppsi)
#define IFileDialog2_GetCurrentSelection(This,ppsi) (This)->lpVtbl->GetCurrentSelection(This,ppsi)
#define IFileDialog2_SetFileName(This,pszName) (This)->lpVtbl->SetFileName(This,pszName)
#define IFileDialog2_GetFileName(This,pszName) (This)->lpVtbl->GetFileName(This,pszName)
#define IFileDialog2_SetTitle(This,pszTitle) (This)->lpVtbl->SetTitle(This,pszTitle)
#define IFileDialog2_SetOkButtonLabel(This,pszText) (This)->lpVtbl->SetOkButtonLabel(This,pszText)
#define IFileDialog2_SetFileNameLabel(This,pszLabel) (This)->lpVtbl->SetFileNameLabel(This,pszLabel)
#define IFileDialog2_GetResult(This,ppsi) (This)->lpVtbl->GetResult(This,ppsi)
#define IFileDialog2_AddPlace(This,psi,fdap) (This)->lpVtbl->AddPlace(This,psi,fdap)
#define IFileDialog2_SetDefaultExtension(This,pszDefaultExtension) (This)->lpVtbl->SetDefaultExtension(This,pszDefaultExtension)
#define IFileDialog2_Close(This,hr) (This)->lpVtbl->Close(This,hr)
#define IFileDialog2_SetClientGuid(This,guid) (This)->lpVtbl->SetClientGuid(This,guid)
#define IFileDialog2_ClearClientData(This) (This)->lpVtbl->ClearClientData(This)
#define IFileDialog2_SetFilter(This,pFilter) (This)->lpVtbl->SetFilter(This,pFilter)
/*** IFileDialog2 methods ***/
#define IFileDialog2_SetCancelButtonLabel(This,pszLabel) (This)->lpVtbl->SetCancelButtonLabel(This,pszLabel)
#define IFileDialog2_SetNavigationRoot(This,psi) (This)->lpVtbl->SetNavigationRoot(This,psi)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFileDialog2_SetCancelButtonLabel_Proxy(
    IFileDialog2* This,
    LPCWSTR pszLabel);
void __RPC_STUB IFileDialog2_SetCancelButtonLabel_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialog2_SetNavigationRoot_Proxy(
    IFileDialog2* This,
    IShellItem *psi);
void __RPC_STUB IFileDialog2_SetNavigationRoot_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFileDialog2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IFileOperationProgressSink interface
 */
#ifndef __IFileOperationProgressSink_INTERFACE_DEFINED__
#define __IFileOperationProgressSink_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFileOperationProgressSink, 0x04b0f1a7, 0x9490, 0x44bc, 0x96,0xe1, 0x42,0x96,0xa3,0x12,0x52,0xe2);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IFileOperationProgressSink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE StartOperations(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FinishOperations(
        HRESULT hrResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE PreRenameItem(
        DWORD dwFlags,
        IShellItem *psiItem,
        LPCWSTR pszNewName) = 0;

    virtual HRESULT STDMETHODCALLTYPE PostRenameItem(
        DWORD dwFlags,
        IShellItem *psiItem,
        LPCWSTR pszNewName,
        HRESULT hrRename,
        IShellItem *psiNewlyCreated) = 0;

    virtual HRESULT STDMETHODCALLTYPE PreMoveItem(
        DWORD dwFlags,
        IShellItem *psiItem,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName) = 0;

    virtual HRESULT STDMETHODCALLTYPE PostMoveItem(
        DWORD dwFlags,
        IShellItem *psiItem,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName,
        HRESULT hrMove,
        IShellItem *psiNewlyCreated) = 0;

    virtual HRESULT STDMETHODCALLTYPE PreCopyItem(
        DWORD dwFlags,
        IShellItem *psiItem,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName) = 0;

    virtual HRESULT STDMETHODCALLTYPE PostCopyItem(
        DWORD dwFlags,
        IShellItem *psiItem,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName,
        HRESULT hrCopy,
        IShellItem *psiNewlyCreated) = 0;

    virtual HRESULT STDMETHODCALLTYPE PreDeleteItem(
        DWORD dwFlags,
        IShellItem *psiItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE PostDeleteItem(
        DWORD dwFlags,
        IShellItem *psiItem,
        HRESULT hrDelete,
        IShellItem *psiNewlyCreated) = 0;

    virtual HRESULT STDMETHODCALLTYPE PreNewItem(
        DWORD dwFlags,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName) = 0;

    virtual HRESULT STDMETHODCALLTYPE PostNewItem(
        DWORD dwFlags,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName,
        LPCWSTR pszTemplateName,
        DWORD dwFileAttributes,
        HRESULT hrNew,
        IShellItem *psiNewItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE UpdateProgress(
        UINT iWorkTotal,
        UINT iWorkSoFar) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResetTimer(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PauseTimer(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResumeTimer(
        ) = 0;

};
#else
typedef struct IFileOperationProgressSinkVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFileOperationProgressSink methods ***/
    HRESULT (STDMETHODCALLTYPE *StartOperations)(
        IFileOperationProgressSink* This);

    HRESULT (STDMETHODCALLTYPE *FinishOperations)(
        IFileOperationProgressSink* This,
        HRESULT hrResult);

    HRESULT (STDMETHODCALLTYPE *PreRenameItem)(
        IFileOperationProgressSink* This,
        DWORD dwFlags,
        IShellItem *psiItem,
        LPCWSTR pszNewName);

    HRESULT (STDMETHODCALLTYPE *PostRenameItem)(
        IFileOperationProgressSink* This,
        DWORD dwFlags,
        IShellItem *psiItem,
        LPCWSTR pszNewName,
        HRESULT hrRename,
        IShellItem *psiNewlyCreated);

    HRESULT (STDMETHODCALLTYPE *PreMoveItem)(
        IFileOperationProgressSink* This,
        DWORD dwFlags,
        IShellItem *psiItem,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName);

    HRESULT (STDMETHODCALLTYPE *PostMoveItem)(
        IFileOperationProgressSink* This,
        DWORD dwFlags,
        IShellItem *psiItem,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName,
        HRESULT hrMove,
        IShellItem *psiNewlyCreated);

    HRESULT (STDMETHODCALLTYPE *PreCopyItem)(
        IFileOperationProgressSink* This,
        DWORD dwFlags,
        IShellItem *psiItem,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName);

    HRESULT (STDMETHODCALLTYPE *PostCopyItem)(
        IFileOperationProgressSink* This,
        DWORD dwFlags,
        IShellItem *psiItem,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName,
        HRESULT hrCopy,
        IShellItem *psiNewlyCreated);

    HRESULT (STDMETHODCALLTYPE *PreDeleteItem)(
        IFileOperationProgressSink* This,
        DWORD dwFlags,
        IShellItem *psiItem);

    HRESULT (STDMETHODCALLTYPE *PostDeleteItem)(
        IFileOperationProgressSink* This,
        DWORD dwFlags,
        IShellItem *psiItem,
        HRESULT hrDelete,
        IShellItem *psiNewlyCreated);

    HRESULT (STDMETHODCALLTYPE *PreNewItem)(
        IFileOperationProgressSink* This,
        DWORD dwFlags,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName);

    HRESULT (STDMETHODCALLTYPE *PostNewItem)(
        IFileOperationProgressSink* This,
        DWORD dwFlags,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName,
        LPCWSTR pszTemplateName,
        DWORD dwFileAttributes,
        HRESULT hrNew,
        IShellItem *psiNewItem);

    HRESULT (STDMETHODCALLTYPE *UpdateProgress)(
        IFileOperationProgressSink* This,
        UINT iWorkTotal,
        UINT iWorkSoFar);

    HRESULT (STDMETHODCALLTYPE *ResetTimer)(
        IFileOperationProgressSink* This);

    HRESULT (STDMETHODCALLTYPE *PauseTimer)(
        IFileOperationProgressSink* This);

    HRESULT (STDMETHODCALLTYPE *ResumeTimer)(
        IFileOperationProgressSink* This);

    END_INTERFACE
} IFileOperationProgressSinkVtbl;
interface IFileOperationProgressSink {
    CONST_VTBL IFileOperationProgressSinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFileOperationProgressSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileOperationProgressSink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileOperationProgressSink_Release(This) (This)->lpVtbl->Release(This)
/*** IFileOperationProgressSink methods ***/
#define IFileOperationProgressSink_StartOperations(This) (This)->lpVtbl->StartOperations(This)
#define IFileOperationProgressSink_FinishOperations(This,hrResult) (This)->lpVtbl->FinishOperations(This,hrResult)
#define IFileOperationProgressSink_PreRenameItem(This,dwFlags,psiItem,pszNewName) (This)->lpVtbl->PreRenameItem(This,dwFlags,psiItem,pszNewName)
#define IFileOperationProgressSink_PostRenameItem(This,dwFlags,psiItem,pszNewName,hrRename,psiNewlyCreated) (This)->lpVtbl->PostRenameItem(This,dwFlags,psiItem,pszNewName,hrRename,psiNewlyCreated)
#define IFileOperationProgressSink_PreMoveItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName) (This)->lpVtbl->PreMoveItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName)
#define IFileOperationProgressSink_PostMoveItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName,hrMove,psiNewlyCreated) (This)->lpVtbl->PostMoveItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName,hrMove,psiNewlyCreated)
#define IFileOperationProgressSink_PreCopyItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName) (This)->lpVtbl->PreCopyItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName)
#define IFileOperationProgressSink_PostCopyItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName,hrCopy,psiNewlyCreated) (This)->lpVtbl->PostCopyItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName,hrCopy,psiNewlyCreated)
#define IFileOperationProgressSink_PreDeleteItem(This,dwFlags,psiItem) (This)->lpVtbl->PreDeleteItem(This,dwFlags,psiItem)
#define IFileOperationProgressSink_PostDeleteItem(This,dwFlags,psiItem,hrDelete,psiNewlyCreated) (This)->lpVtbl->PostDeleteItem(This,dwFlags,psiItem,hrDelete,psiNewlyCreated)
#define IFileOperationProgressSink_PreNewItem(This,dwFlags,psiDestinationFolder,pszNewName) (This)->lpVtbl->PreNewItem(This,dwFlags,psiDestinationFolder,pszNewName)
#define IFileOperationProgressSink_PostNewItem(This,dwFlags,psiDestinationFolder,pszNewName,pszTemplateName,dwFileAttributes,hrNew,psiNewItem) (This)->lpVtbl->PostNewItem(This,dwFlags,psiDestinationFolder,pszNewName,pszTemplateName,dwFileAttributes,hrNew,psiNewItem)
#define IFileOperationProgressSink_UpdateProgress(This,iWorkTotal,iWorkSoFar) (This)->lpVtbl->UpdateProgress(This,iWorkTotal,iWorkSoFar)
#define IFileOperationProgressSink_ResetTimer(This) (This)->lpVtbl->ResetTimer(This)
#define IFileOperationProgressSink_PauseTimer(This) (This)->lpVtbl->PauseTimer(This)
#define IFileOperationProgressSink_ResumeTimer(This) (This)->lpVtbl->ResumeTimer(This)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_StartOperations_Proxy(
    IFileOperationProgressSink* This);
void __RPC_STUB IFileOperationProgressSink_StartOperations_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_FinishOperations_Proxy(
    IFileOperationProgressSink* This,
    HRESULT hrResult);
void __RPC_STUB IFileOperationProgressSink_FinishOperations_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_PreRenameItem_Proxy(
    IFileOperationProgressSink* This,
    DWORD dwFlags,
    IShellItem *psiItem,
    LPCWSTR pszNewName);
void __RPC_STUB IFileOperationProgressSink_PreRenameItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_PostRenameItem_Proxy(
    IFileOperationProgressSink* This,
    DWORD dwFlags,
    IShellItem *psiItem,
    LPCWSTR pszNewName,
    HRESULT hrRename,
    IShellItem *psiNewlyCreated);
void __RPC_STUB IFileOperationProgressSink_PostRenameItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_PreMoveItem_Proxy(
    IFileOperationProgressSink* This,
    DWORD dwFlags,
    IShellItem *psiItem,
    IShellItem *psiDestinationFolder,
    LPCWSTR pszNewName);
void __RPC_STUB IFileOperationProgressSink_PreMoveItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_PostMoveItem_Proxy(
    IFileOperationProgressSink* This,
    DWORD dwFlags,
    IShellItem *psiItem,
    IShellItem *psiDestinationFolder,
    LPCWSTR pszNewName,
    HRESULT hrMove,
    IShellItem *psiNewlyCreated);
void __RPC_STUB IFileOperationProgressSink_PostMoveItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_PreCopyItem_Proxy(
    IFileOperationProgressSink* This,
    DWORD dwFlags,
    IShellItem *psiItem,
    IShellItem *psiDestinationFolder,
    LPCWSTR pszNewName);
void __RPC_STUB IFileOperationProgressSink_PreCopyItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_PostCopyItem_Proxy(
    IFileOperationProgressSink* This,
    DWORD dwFlags,
    IShellItem *psiItem,
    IShellItem *psiDestinationFolder,
    LPCWSTR pszNewName,
    HRESULT hrCopy,
    IShellItem *psiNewlyCreated);
void __RPC_STUB IFileOperationProgressSink_PostCopyItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_PreDeleteItem_Proxy(
    IFileOperationProgressSink* This,
    DWORD dwFlags,
    IShellItem *psiItem);
void __RPC_STUB IFileOperationProgressSink_PreDeleteItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_PostDeleteItem_Proxy(
    IFileOperationProgressSink* This,
    DWORD dwFlags,
    IShellItem *psiItem,
    HRESULT hrDelete,
    IShellItem *psiNewlyCreated);
void __RPC_STUB IFileOperationProgressSink_PostDeleteItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_PreNewItem_Proxy(
    IFileOperationProgressSink* This,
    DWORD dwFlags,
    IShellItem *psiDestinationFolder,
    LPCWSTR pszNewName);
void __RPC_STUB IFileOperationProgressSink_PreNewItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_PostNewItem_Proxy(
    IFileOperationProgressSink* This,
    DWORD dwFlags,
    IShellItem *psiDestinationFolder,
    LPCWSTR pszNewName,
    LPCWSTR pszTemplateName,
    DWORD dwFileAttributes,
    HRESULT hrNew,
    IShellItem *psiNewItem);
void __RPC_STUB IFileOperationProgressSink_PostNewItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_UpdateProgress_Proxy(
    IFileOperationProgressSink* This,
    UINT iWorkTotal,
    UINT iWorkSoFar);
void __RPC_STUB IFileOperationProgressSink_UpdateProgress_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_ResetTimer_Proxy(
    IFileOperationProgressSink* This);
void __RPC_STUB IFileOperationProgressSink_ResetTimer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_PauseTimer_Proxy(
    IFileOperationProgressSink* This);
void __RPC_STUB IFileOperationProgressSink_PauseTimer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOperationProgressSink_ResumeTimer_Proxy(
    IFileOperationProgressSink* This);
void __RPC_STUB IFileOperationProgressSink_ResumeTimer_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFileOperationProgressSink_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IFileSaveDialog interface
 */
#ifndef __IFileSaveDialog_INTERFACE_DEFINED__
#define __IFileSaveDialog_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFileSaveDialog, 0x84bccd23, 0x5fde, 0x4cdb, 0xae,0xa4, 0xaf,0x64,0xb8,0x3d,0x78,0xab);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IFileSaveDialog : public IFileDialog
{
    virtual HRESULT STDMETHODCALLTYPE SetSaveAsItem(
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetProperties(
        IPropertyStore *pStore) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCollectedProperties(
        IPropertyDescriptionList *pList,
        BOOL fAppendDefault) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProperties(
        IPropertyStore **ppStore) = 0;

    virtual HRESULT STDMETHODCALLTYPE ApplyProperties(
        IShellItem *psi,
        IPropertyStore *pStore,
        HWND hwnd,
        IFileOperationProgressSink *pSink) = 0;

};
#else
typedef struct IFileSaveDialogVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IModalWindow methods ***/
    HRESULT (STDMETHODCALLTYPE *Show)(
        IFileSaveDialog* This,
        HWND hwndOwner);

    /*** IFileDialog methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFileTypes)(
        IFileSaveDialog* This,
        UINT cFileTypes,
        const COMDLG_FILTERSPEC *rgFilterSpec);

    HRESULT (STDMETHODCALLTYPE *SetFileTypeIndex)(
        IFileSaveDialog* This,
        UINT iFileType);

    HRESULT (STDMETHODCALLTYPE *GetFileTypeIndex)(
        IFileSaveDialog* This,
        UINT *piFileType);

    HRESULT (STDMETHODCALLTYPE *Advise)(
        IFileSaveDialog* This,
        IFileDialogEvents *pfde,
        DWORD *pdwCookie);

    HRESULT (STDMETHODCALLTYPE *Unadvise)(
        IFileSaveDialog* This,
        DWORD dwCookie);

    HRESULT (STDMETHODCALLTYPE *SetOptions)(
        IFileSaveDialog* This,
        FILEOPENDIALOGOPTIONS fos);

    HRESULT (STDMETHODCALLTYPE *GetOptions)(
        IFileSaveDialog* This,
        FILEOPENDIALOGOPTIONS *pfos);

    HRESULT (STDMETHODCALLTYPE *SetDefaultFolder)(
        IFileSaveDialog* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *SetFolder)(
        IFileSaveDialog* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *GetFolder)(
        IFileSaveDialog* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *GetCurrentSelection)(
        IFileSaveDialog* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *SetFileName)(
        IFileSaveDialog* This,
        LPCWSTR pszName);

    HRESULT (STDMETHODCALLTYPE *GetFileName)(
        IFileSaveDialog* This,
        LPWSTR *pszName);

    HRESULT (STDMETHODCALLTYPE *SetTitle)(
        IFileSaveDialog* This,
        LPCWSTR pszTitle);

    HRESULT (STDMETHODCALLTYPE *SetOkButtonLabel)(
        IFileSaveDialog* This,
        LPCWSTR pszText);

    HRESULT (STDMETHODCALLTYPE *SetFileNameLabel)(
        IFileSaveDialog* This,
        LPCWSTR pszLabel);

    HRESULT (STDMETHODCALLTYPE *GetResult)(
        IFileSaveDialog* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *AddPlace)(
        IFileSaveDialog* This,
        IShellItem *psi,
        FDAP fdap);

    HRESULT (STDMETHODCALLTYPE *SetDefaultExtension)(
        IFileSaveDialog* This,
        LPCWSTR pszDefaultExtension);

    HRESULT (STDMETHODCALLTYPE *Close)(
        IFileSaveDialog* This,
        HRESULT hr);

    HRESULT (STDMETHODCALLTYPE *SetClientGuid)(
        IFileSaveDialog* This,
        REFGUID guid);

    HRESULT (STDMETHODCALLTYPE *ClearClientData)(
        IFileSaveDialog* This);

    HRESULT (STDMETHODCALLTYPE *SetFilter)(
        IFileSaveDialog* This,
        IShellItemFilter *pFilter);

    /*** IFileSaveDialog methods ***/
    HRESULT (STDMETHODCALLTYPE *SetSaveAsItem)(
        IFileSaveDialog* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *SetProperties)(
        IFileSaveDialog* This,
        IPropertyStore *pStore);

    HRESULT (STDMETHODCALLTYPE *SetCollectedProperties)(
        IFileSaveDialog* This,
        IPropertyDescriptionList *pList,
        BOOL fAppendDefault);

    HRESULT (STDMETHODCALLTYPE *GetProperties)(
        IFileSaveDialog* This,
        IPropertyStore **ppStore);

    HRESULT (STDMETHODCALLTYPE *ApplyProperties)(
        IFileSaveDialog* This,
        IShellItem *psi,
        IPropertyStore *pStore,
        HWND hwnd,
        IFileOperationProgressSink *pSink);

    END_INTERFACE
} IFileSaveDialogVtbl;
interface IFileSaveDialog {
    CONST_VTBL IFileSaveDialogVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFileSaveDialog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileSaveDialog_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileSaveDialog_Release(This) (This)->lpVtbl->Release(This)
/*** IModalWindow methods ***/
#define IFileSaveDialog_Show(This,hwndOwner) (This)->lpVtbl->Show(This,hwndOwner)
/*** IFileDialog methods ***/
#define IFileSaveDialog_SetFileTypes(This,cFileTypes,rgFilterSpec) (This)->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec)
#define IFileSaveDialog_SetFileTypeIndex(This,iFileType) (This)->lpVtbl->SetFileTypeIndex(This,iFileType)
#define IFileSaveDialog_GetFileTypeIndex(This,piFileType) (This)->lpVtbl->GetFileTypeIndex(This,piFileType)
#define IFileSaveDialog_Advise(This,pfde,pdwCookie) (This)->lpVtbl->Advise(This,pfde,pdwCookie)
#define IFileSaveDialog_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
#define IFileSaveDialog_SetOptions(This,fos) (This)->lpVtbl->SetOptions(This,fos)
#define IFileSaveDialog_GetOptions(This,pfos) (This)->lpVtbl->GetOptions(This,pfos)
#define IFileSaveDialog_SetDefaultFolder(This,psi) (This)->lpVtbl->SetDefaultFolder(This,psi)
#define IFileSaveDialog_SetFolder(This,psi) (This)->lpVtbl->SetFolder(This,psi)
#define IFileSaveDialog_GetFolder(This,ppsi) (This)->lpVtbl->GetFolder(This,ppsi)
#define IFileSaveDialog_GetCurrentSelection(This,ppsi) (This)->lpVtbl->GetCurrentSelection(This,ppsi)
#define IFileSaveDialog_SetFileName(This,pszName) (This)->lpVtbl->SetFileName(This,pszName)
#define IFileSaveDialog_GetFileName(This,pszName) (This)->lpVtbl->GetFileName(This,pszName)
#define IFileSaveDialog_SetTitle(This,pszTitle) (This)->lpVtbl->SetTitle(This,pszTitle)
#define IFileSaveDialog_SetOkButtonLabel(This,pszText) (This)->lpVtbl->SetOkButtonLabel(This,pszText)
#define IFileSaveDialog_SetFileNameLabel(This,pszLabel) (This)->lpVtbl->SetFileNameLabel(This,pszLabel)
#define IFileSaveDialog_GetResult(This,ppsi) (This)->lpVtbl->GetResult(This,ppsi)
#define IFileSaveDialog_AddPlace(This,psi,fdap) (This)->lpVtbl->AddPlace(This,psi,fdap)
#define IFileSaveDialog_SetDefaultExtension(This,pszDefaultExtension) (This)->lpVtbl->SetDefaultExtension(This,pszDefaultExtension)
#define IFileSaveDialog_Close(This,hr) (This)->lpVtbl->Close(This,hr)
#define IFileSaveDialog_SetClientGuid(This,guid) (This)->lpVtbl->SetClientGuid(This,guid)
#define IFileSaveDialog_ClearClientData(This) (This)->lpVtbl->ClearClientData(This)
#define IFileSaveDialog_SetFilter(This,pFilter) (This)->lpVtbl->SetFilter(This,pFilter)
/*** IFileSaveDialog methods ***/
#define IFileSaveDialog_SetSaveAsItem(This,psi) (This)->lpVtbl->SetSaveAsItem(This,psi)
#define IFileSaveDialog_SetProperties(This,pStore) (This)->lpVtbl->SetProperties(This,pStore)
#define IFileSaveDialog_SetCollectedProperties(This,pList,fAppendDefault) (This)->lpVtbl->SetCollectedProperties(This,pList,fAppendDefault)
#define IFileSaveDialog_GetProperties(This,ppStore) (This)->lpVtbl->GetProperties(This,ppStore)
#define IFileSaveDialog_ApplyProperties(This,psi,pStore,hwnd,pSink) (This)->lpVtbl->ApplyProperties(This,psi,pStore,hwnd,pSink)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFileSaveDialog_SetSaveAsItem_Proxy(
    IFileSaveDialog* This,
    IShellItem *psi);
void __RPC_STUB IFileSaveDialog_SetSaveAsItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileSaveDialog_SetProperties_Proxy(
    IFileSaveDialog* This,
    IPropertyStore *pStore);
void __RPC_STUB IFileSaveDialog_SetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileSaveDialog_SetCollectedProperties_Proxy(
    IFileSaveDialog* This,
    IPropertyDescriptionList *pList,
    BOOL fAppendDefault);
void __RPC_STUB IFileSaveDialog_SetCollectedProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileSaveDialog_GetProperties_Proxy(
    IFileSaveDialog* This,
    IPropertyStore **ppStore);
void __RPC_STUB IFileSaveDialog_GetProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileSaveDialog_ApplyProperties_Proxy(
    IFileSaveDialog* This,
    IShellItem *psi,
    IPropertyStore *pStore,
    HWND hwnd,
    IFileOperationProgressSink *pSink);
void __RPC_STUB IFileSaveDialog_ApplyProperties_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFileSaveDialog_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IFileOpenDialog interface
 */
#ifndef __IFileOpenDialog_INTERFACE_DEFINED__
#define __IFileOpenDialog_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFileOpenDialog, 0xd57c7288, 0xd4ad, 0x4768, 0xbe,0x02, 0x9d,0x96,0x95,0x32,0xd9,0x60);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IFileOpenDialog : public IFileDialog
{
    virtual HRESULT STDMETHODCALLTYPE GetResults(
        IShellItemArray **ppenum) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSelectedItems(
        IShellItemArray **ppsai) = 0;

};
#else
typedef struct IFileOpenDialogVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IModalWindow methods ***/
    HRESULT (STDMETHODCALLTYPE *Show)(
        IFileOpenDialog* This,
        HWND hwndOwner);

    /*** IFileDialog methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFileTypes)(
        IFileOpenDialog* This,
        UINT cFileTypes,
        const COMDLG_FILTERSPEC *rgFilterSpec);

    HRESULT (STDMETHODCALLTYPE *SetFileTypeIndex)(
        IFileOpenDialog* This,
        UINT iFileType);

    HRESULT (STDMETHODCALLTYPE *GetFileTypeIndex)(
        IFileOpenDialog* This,
        UINT *piFileType);

    HRESULT (STDMETHODCALLTYPE *Advise)(
        IFileOpenDialog* This,
        IFileDialogEvents *pfde,
        DWORD *pdwCookie);

    HRESULT (STDMETHODCALLTYPE *Unadvise)(
        IFileOpenDialog* This,
        DWORD dwCookie);

    HRESULT (STDMETHODCALLTYPE *SetOptions)(
        IFileOpenDialog* This,
        FILEOPENDIALOGOPTIONS fos);

    HRESULT (STDMETHODCALLTYPE *GetOptions)(
        IFileOpenDialog* This,
        FILEOPENDIALOGOPTIONS *pfos);

    HRESULT (STDMETHODCALLTYPE *SetDefaultFolder)(
        IFileOpenDialog* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *SetFolder)(
        IFileOpenDialog* This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *GetFolder)(
        IFileOpenDialog* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *GetCurrentSelection)(
        IFileOpenDialog* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *SetFileName)(
        IFileOpenDialog* This,
        LPCWSTR pszName);

    HRESULT (STDMETHODCALLTYPE *GetFileName)(
        IFileOpenDialog* This,
        LPWSTR *pszName);

    HRESULT (STDMETHODCALLTYPE *SetTitle)(
        IFileOpenDialog* This,
        LPCWSTR pszTitle);

    HRESULT (STDMETHODCALLTYPE *SetOkButtonLabel)(
        IFileOpenDialog* This,
        LPCWSTR pszText);

    HRESULT (STDMETHODCALLTYPE *SetFileNameLabel)(
        IFileOpenDialog* This,
        LPCWSTR pszLabel);

    HRESULT (STDMETHODCALLTYPE *GetResult)(
        IFileOpenDialog* This,
        IShellItem **ppsi);

    HRESULT (STDMETHODCALLTYPE *AddPlace)(
        IFileOpenDialog* This,
        IShellItem *psi,
        FDAP fdap);

    HRESULT (STDMETHODCALLTYPE *SetDefaultExtension)(
        IFileOpenDialog* This,
        LPCWSTR pszDefaultExtension);

    HRESULT (STDMETHODCALLTYPE *Close)(
        IFileOpenDialog* This,
        HRESULT hr);

    HRESULT (STDMETHODCALLTYPE *SetClientGuid)(
        IFileOpenDialog* This,
        REFGUID guid);

    HRESULT (STDMETHODCALLTYPE *ClearClientData)(
        IFileOpenDialog* This);

    HRESULT (STDMETHODCALLTYPE *SetFilter)(
        IFileOpenDialog* This,
        IShellItemFilter *pFilter);

    /*** IFileOpenDialog methods ***/
    HRESULT (STDMETHODCALLTYPE *GetResults)(
        IFileOpenDialog* This,
        IShellItemArray **ppenum);

    HRESULT (STDMETHODCALLTYPE *GetSelectedItems)(
        IFileOpenDialog* This,
        IShellItemArray **ppsai);

    END_INTERFACE
} IFileOpenDialogVtbl;
interface IFileOpenDialog {
    CONST_VTBL IFileOpenDialogVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFileOpenDialog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileOpenDialog_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileOpenDialog_Release(This) (This)->lpVtbl->Release(This)
/*** IModalWindow methods ***/
#define IFileOpenDialog_Show(This,hwndOwner) (This)->lpVtbl->Show(This,hwndOwner)
/*** IFileDialog methods ***/
#define IFileOpenDialog_SetFileTypes(This,cFileTypes,rgFilterSpec) (This)->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec)
#define IFileOpenDialog_SetFileTypeIndex(This,iFileType) (This)->lpVtbl->SetFileTypeIndex(This,iFileType)
#define IFileOpenDialog_GetFileTypeIndex(This,piFileType) (This)->lpVtbl->GetFileTypeIndex(This,piFileType)
#define IFileOpenDialog_Advise(This,pfde,pdwCookie) (This)->lpVtbl->Advise(This,pfde,pdwCookie)
#define IFileOpenDialog_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
#define IFileOpenDialog_SetOptions(This,fos) (This)->lpVtbl->SetOptions(This,fos)
#define IFileOpenDialog_GetOptions(This,pfos) (This)->lpVtbl->GetOptions(This,pfos)
#define IFileOpenDialog_SetDefaultFolder(This,psi) (This)->lpVtbl->SetDefaultFolder(This,psi)
#define IFileOpenDialog_SetFolder(This,psi) (This)->lpVtbl->SetFolder(This,psi)
#define IFileOpenDialog_GetFolder(This,ppsi) (This)->lpVtbl->GetFolder(This,ppsi)
#define IFileOpenDialog_GetCurrentSelection(This,ppsi) (This)->lpVtbl->GetCurrentSelection(This,ppsi)
#define IFileOpenDialog_SetFileName(This,pszName) (This)->lpVtbl->SetFileName(This,pszName)
#define IFileOpenDialog_GetFileName(This,pszName) (This)->lpVtbl->GetFileName(This,pszName)
#define IFileOpenDialog_SetTitle(This,pszTitle) (This)->lpVtbl->SetTitle(This,pszTitle)
#define IFileOpenDialog_SetOkButtonLabel(This,pszText) (This)->lpVtbl->SetOkButtonLabel(This,pszText)
#define IFileOpenDialog_SetFileNameLabel(This,pszLabel) (This)->lpVtbl->SetFileNameLabel(This,pszLabel)
#define IFileOpenDialog_GetResult(This,ppsi) (This)->lpVtbl->GetResult(This,ppsi)
#define IFileOpenDialog_AddPlace(This,psi,fdap) (This)->lpVtbl->AddPlace(This,psi,fdap)
#define IFileOpenDialog_SetDefaultExtension(This,pszDefaultExtension) (This)->lpVtbl->SetDefaultExtension(This,pszDefaultExtension)
#define IFileOpenDialog_Close(This,hr) (This)->lpVtbl->Close(This,hr)
#define IFileOpenDialog_SetClientGuid(This,guid) (This)->lpVtbl->SetClientGuid(This,guid)
#define IFileOpenDialog_ClearClientData(This) (This)->lpVtbl->ClearClientData(This)
#define IFileOpenDialog_SetFilter(This,pFilter) (This)->lpVtbl->SetFilter(This,pFilter)
/*** IFileOpenDialog methods ***/
#define IFileOpenDialog_GetResults(This,ppenum) (This)->lpVtbl->GetResults(This,ppenum)
#define IFileOpenDialog_GetSelectedItems(This,ppsai) (This)->lpVtbl->GetSelectedItems(This,ppsai)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFileOpenDialog_GetResults_Proxy(
    IFileOpenDialog* This,
    IShellItemArray **ppenum);
void __RPC_STUB IFileOpenDialog_GetResults_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileOpenDialog_GetSelectedItems_Proxy(
    IFileOpenDialog* This,
    IShellItemArray **ppsai);
void __RPC_STUB IFileOpenDialog_GetSelectedItems_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFileOpenDialog_INTERFACE_DEFINED__ */

typedef enum CDCONTROLSTATEF {
    CDCS_INACTIVE = 0x0,
    CDCS_ENABLED = 0x1,
    CDCS_VISIBLE = 0x2,
    CDCS_ENABLEDVISIBLE = 0x3
} CDCONTROLSTATEF;
DEFINE_ENUM_FLAG_OPERATORS(CDCONTROLSTATEF)
/*****************************************************************************
 * IFileDialogCustomize interface
 */
#ifndef __IFileDialogCustomize_INTERFACE_DEFINED__
#define __IFileDialogCustomize_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFileDialogCustomize, 0xe6fdd21a, 0x163f, 0x4975, 0x9c,0x8c, 0xa6,0x9f,0x1b,0xa3,0x70,0x34);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IFileDialogCustomize : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE EnableOpenDropDown(
        DWORD dwIDCtl) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddMenu(
        DWORD dwIDCtl,
        LPCWSTR pszLabel) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddPushButton(
        DWORD dwIDCtl,
        LPCWSTR pszLabel) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddComboBox(
        DWORD dwIDCtl) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddRadioButtonList(
        DWORD dwIDCtl) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddCheckButton(
        DWORD dwIDCtl,
        LPCWSTR pszLabel,
        BOOL bChecked) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddEditBox(
        DWORD dwIDCtl,
        LPCWSTR pszText) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddSeparator(
        DWORD dwIDCtl) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddText(
        DWORD dwIDCtl,
        LPCWSTR pszText) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetControlLabel(
        DWORD dwIDCtl,
        LPCWSTR pszLabel) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetControlState(
        DWORD dwIDCtl,
        CDCONTROLSTATEF *pdwState) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetControlState(
        DWORD dwIDCtl,
        CDCONTROLSTATEF dwState) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEditBoxText(
        DWORD dwIDCtl,
        WCHAR **ppszText) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetEditBoxText(
        DWORD dwIDCtl,
        LPCWSTR pszText) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCheckButtonState(
        DWORD dwIDCtl,
        BOOL *pbChecked) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCheckButtonState(
        DWORD dwIDCtl,
        BOOL bChecked) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddControlItem(
        DWORD dwIDCtl,
        DWORD dwIDItem,
        LPCWSTR pszLabel) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveControlItem(
        DWORD dwIDCtl,
        DWORD dwIDItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveAllControlItems(
        DWORD dwIDCtl) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetControlItemState(
        DWORD dwIDCtl,
        DWORD dwIDItem,
        CDCONTROLSTATEF *pdwState) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetControlItemState(
        DWORD dwIDCtl,
        DWORD dwIDItem,
        CDCONTROLSTATEF dwState) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSelectedControlItem(
        DWORD dwIDCtl,
        DWORD *pdwIDItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSelectedControlItem(
        DWORD dwIDCtl,
        DWORD dwIDItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartVisualGroup(
        DWORD dwIDCtl,
        LPCWSTR pszLabel) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndVisualGroup(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE MakeProminent(
        DWORD dwIDCtl) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetControlItemText(
        DWORD dwIDCtl,
        DWORD dwIDItem,
        LPCWSTR pszLabel) = 0;

};
#else
typedef struct IFileDialogCustomizeVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFileDialogCustomize methods ***/
    HRESULT (STDMETHODCALLTYPE *EnableOpenDropDown)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl);

    HRESULT (STDMETHODCALLTYPE *AddMenu)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        LPCWSTR pszLabel);

    HRESULT (STDMETHODCALLTYPE *AddPushButton)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        LPCWSTR pszLabel);

    HRESULT (STDMETHODCALLTYPE *AddComboBox)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl);

    HRESULT (STDMETHODCALLTYPE *AddRadioButtonList)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl);

    HRESULT (STDMETHODCALLTYPE *AddCheckButton)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        LPCWSTR pszLabel,
        BOOL bChecked);

    HRESULT (STDMETHODCALLTYPE *AddEditBox)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        LPCWSTR pszText);

    HRESULT (STDMETHODCALLTYPE *AddSeparator)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl);

    HRESULT (STDMETHODCALLTYPE *AddText)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        LPCWSTR pszText);

    HRESULT (STDMETHODCALLTYPE *SetControlLabel)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        LPCWSTR pszLabel);

    HRESULT (STDMETHODCALLTYPE *GetControlState)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        CDCONTROLSTATEF *pdwState);

    HRESULT (STDMETHODCALLTYPE *SetControlState)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        CDCONTROLSTATEF dwState);

    HRESULT (STDMETHODCALLTYPE *GetEditBoxText)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        WCHAR **ppszText);

    HRESULT (STDMETHODCALLTYPE *SetEditBoxText)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        LPCWSTR pszText);

    HRESULT (STDMETHODCALLTYPE *GetCheckButtonState)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        BOOL *pbChecked);

    HRESULT (STDMETHODCALLTYPE *SetCheckButtonState)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        BOOL bChecked);

    HRESULT (STDMETHODCALLTYPE *AddControlItem)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        DWORD dwIDItem,
        LPCWSTR pszLabel);

    HRESULT (STDMETHODCALLTYPE *RemoveControlItem)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        DWORD dwIDItem);

    HRESULT (STDMETHODCALLTYPE *RemoveAllControlItems)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl);

    HRESULT (STDMETHODCALLTYPE *GetControlItemState)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        DWORD dwIDItem,
        CDCONTROLSTATEF *pdwState);

    HRESULT (STDMETHODCALLTYPE *SetControlItemState)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        DWORD dwIDItem,
        CDCONTROLSTATEF dwState);

    HRESULT (STDMETHODCALLTYPE *GetSelectedControlItem)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        DWORD *pdwIDItem);

    HRESULT (STDMETHODCALLTYPE *SetSelectedControlItem)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        DWORD dwIDItem);

    HRESULT (STDMETHODCALLTYPE *StartVisualGroup)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        LPCWSTR pszLabel);

    HRESULT (STDMETHODCALLTYPE *EndVisualGroup)(
        IFileDialogCustomize* This);

    HRESULT (STDMETHODCALLTYPE *MakeProminent)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl);

    HRESULT (STDMETHODCALLTYPE *SetControlItemText)(
        IFileDialogCustomize* This,
        DWORD dwIDCtl,
        DWORD dwIDItem,
        LPCWSTR pszLabel);

    END_INTERFACE
} IFileDialogCustomizeVtbl;
interface IFileDialogCustomize {
    CONST_VTBL IFileDialogCustomizeVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFileDialogCustomize_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileDialogCustomize_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileDialogCustomize_Release(This) (This)->lpVtbl->Release(This)
/*** IFileDialogCustomize methods ***/
#define IFileDialogCustomize_EnableOpenDropDown(This,dwIDCtl) (This)->lpVtbl->EnableOpenDropDown(This,dwIDCtl)
#define IFileDialogCustomize_AddMenu(This,dwIDCtl,pszLabel) (This)->lpVtbl->AddMenu(This,dwIDCtl,pszLabel)
#define IFileDialogCustomize_AddPushButton(This,dwIDCtl,pszLabel) (This)->lpVtbl->AddPushButton(This,dwIDCtl,pszLabel)
#define IFileDialogCustomize_AddComboBox(This,dwIDCtl) (This)->lpVtbl->AddComboBox(This,dwIDCtl)
#define IFileDialogCustomize_AddRadioButtonList(This,dwIDCtl) (This)->lpVtbl->AddRadioButtonList(This,dwIDCtl)
#define IFileDialogCustomize_AddCheckButton(This,dwIDCtl,pszLabel,bChecked) (This)->lpVtbl->AddCheckButton(This,dwIDCtl,pszLabel,bChecked)
#define IFileDialogCustomize_AddEditBox(This,dwIDCtl,pszText) (This)->lpVtbl->AddEditBox(This,dwIDCtl,pszText)
#define IFileDialogCustomize_AddSeparator(This,dwIDCtl) (This)->lpVtbl->AddSeparator(This,dwIDCtl)
#define IFileDialogCustomize_AddText(This,dwIDCtl,pszText) (This)->lpVtbl->AddText(This,dwIDCtl,pszText)
#define IFileDialogCustomize_SetControlLabel(This,dwIDCtl,pszLabel) (This)->lpVtbl->SetControlLabel(This,dwIDCtl,pszLabel)
#define IFileDialogCustomize_GetControlState(This,dwIDCtl,pdwState) (This)->lpVtbl->GetControlState(This,dwIDCtl,pdwState)
#define IFileDialogCustomize_SetControlState(This,dwIDCtl,dwState) (This)->lpVtbl->SetControlState(This,dwIDCtl,dwState)
#define IFileDialogCustomize_GetEditBoxText(This,dwIDCtl,ppszText) (This)->lpVtbl->GetEditBoxText(This,dwIDCtl,ppszText)
#define IFileDialogCustomize_SetEditBoxText(This,dwIDCtl,pszText) (This)->lpVtbl->SetEditBoxText(This,dwIDCtl,pszText)
#define IFileDialogCustomize_GetCheckButtonState(This,dwIDCtl,pbChecked) (This)->lpVtbl->GetCheckButtonState(This,dwIDCtl,pbChecked)
#define IFileDialogCustomize_SetCheckButtonState(This,dwIDCtl,bChecked) (This)->lpVtbl->SetCheckButtonState(This,dwIDCtl,bChecked)
#define IFileDialogCustomize_AddControlItem(This,dwIDCtl,dwIDItem,pszLabel) (This)->lpVtbl->AddControlItem(This,dwIDCtl,dwIDItem,pszLabel)
#define IFileDialogCustomize_RemoveControlItem(This,dwIDCtl,dwIDItem) (This)->lpVtbl->RemoveControlItem(This,dwIDCtl,dwIDItem)
#define IFileDialogCustomize_RemoveAllControlItems(This,dwIDCtl) (This)->lpVtbl->RemoveAllControlItems(This,dwIDCtl)
#define IFileDialogCustomize_GetControlItemState(This,dwIDCtl,dwIDItem,pdwState) (This)->lpVtbl->GetControlItemState(This,dwIDCtl,dwIDItem,pdwState)
#define IFileDialogCustomize_SetControlItemState(This,dwIDCtl,dwIDItem,dwState) (This)->lpVtbl->SetControlItemState(This,dwIDCtl,dwIDItem,dwState)
#define IFileDialogCustomize_GetSelectedControlItem(This,dwIDCtl,pdwIDItem) (This)->lpVtbl->GetSelectedControlItem(This,dwIDCtl,pdwIDItem)
#define IFileDialogCustomize_SetSelectedControlItem(This,dwIDCtl,dwIDItem) (This)->lpVtbl->SetSelectedControlItem(This,dwIDCtl,dwIDItem)
#define IFileDialogCustomize_StartVisualGroup(This,dwIDCtl,pszLabel) (This)->lpVtbl->StartVisualGroup(This,dwIDCtl,pszLabel)
#define IFileDialogCustomize_EndVisualGroup(This) (This)->lpVtbl->EndVisualGroup(This)
#define IFileDialogCustomize_MakeProminent(This,dwIDCtl) (This)->lpVtbl->MakeProminent(This,dwIDCtl)
#define IFileDialogCustomize_SetControlItemText(This,dwIDCtl,dwIDItem,pszLabel) (This)->lpVtbl->SetControlItemText(This,dwIDCtl,dwIDItem,pszLabel)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFileDialogCustomize_EnableOpenDropDown_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl);
void __RPC_STUB IFileDialogCustomize_EnableOpenDropDown_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_AddMenu_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    LPCWSTR pszLabel);
void __RPC_STUB IFileDialogCustomize_AddMenu_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_AddPushButton_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    LPCWSTR pszLabel);
void __RPC_STUB IFileDialogCustomize_AddPushButton_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_AddComboBox_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl);
void __RPC_STUB IFileDialogCustomize_AddComboBox_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_AddRadioButtonList_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl);
void __RPC_STUB IFileDialogCustomize_AddRadioButtonList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_AddCheckButton_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    LPCWSTR pszLabel,
    BOOL bChecked);
void __RPC_STUB IFileDialogCustomize_AddCheckButton_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_AddEditBox_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    LPCWSTR pszText);
void __RPC_STUB IFileDialogCustomize_AddEditBox_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_AddSeparator_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl);
void __RPC_STUB IFileDialogCustomize_AddSeparator_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_AddText_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    LPCWSTR pszText);
void __RPC_STUB IFileDialogCustomize_AddText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_SetControlLabel_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    LPCWSTR pszLabel);
void __RPC_STUB IFileDialogCustomize_SetControlLabel_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_GetControlState_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    CDCONTROLSTATEF *pdwState);
void __RPC_STUB IFileDialogCustomize_GetControlState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_SetControlState_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    CDCONTROLSTATEF dwState);
void __RPC_STUB IFileDialogCustomize_SetControlState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_GetEditBoxText_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    WCHAR **ppszText);
void __RPC_STUB IFileDialogCustomize_GetEditBoxText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_SetEditBoxText_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    LPCWSTR pszText);
void __RPC_STUB IFileDialogCustomize_SetEditBoxText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_GetCheckButtonState_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    BOOL *pbChecked);
void __RPC_STUB IFileDialogCustomize_GetCheckButtonState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_SetCheckButtonState_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    BOOL bChecked);
void __RPC_STUB IFileDialogCustomize_SetCheckButtonState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_AddControlItem_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    DWORD dwIDItem,
    LPCWSTR pszLabel);
void __RPC_STUB IFileDialogCustomize_AddControlItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_RemoveControlItem_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    DWORD dwIDItem);
void __RPC_STUB IFileDialogCustomize_RemoveControlItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_RemoveAllControlItems_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl);
void __RPC_STUB IFileDialogCustomize_RemoveAllControlItems_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_GetControlItemState_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    DWORD dwIDItem,
    CDCONTROLSTATEF *pdwState);
void __RPC_STUB IFileDialogCustomize_GetControlItemState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_SetControlItemState_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    DWORD dwIDItem,
    CDCONTROLSTATEF dwState);
void __RPC_STUB IFileDialogCustomize_SetControlItemState_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_GetSelectedControlItem_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    DWORD *pdwIDItem);
void __RPC_STUB IFileDialogCustomize_GetSelectedControlItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_SetSelectedControlItem_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    DWORD dwIDItem);
void __RPC_STUB IFileDialogCustomize_SetSelectedControlItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_StartVisualGroup_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    LPCWSTR pszLabel);
void __RPC_STUB IFileDialogCustomize_StartVisualGroup_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_EndVisualGroup_Proxy(
    IFileDialogCustomize* This);
void __RPC_STUB IFileDialogCustomize_EndVisualGroup_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_MakeProminent_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl);
void __RPC_STUB IFileDialogCustomize_MakeProminent_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogCustomize_SetControlItemText_Proxy(
    IFileDialogCustomize* This,
    DWORD dwIDCtl,
    DWORD dwIDItem,
    LPCWSTR pszLabel);
void __RPC_STUB IFileDialogCustomize_SetControlItemText_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFileDialogCustomize_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IFileDialogControlEvents interface
 */
#ifndef __IFileDialogControlEvents_INTERFACE_DEFINED__
#define __IFileDialogControlEvents_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFileDialogControlEvents, 0x36116642, 0xd713, 0x4b97, 0x9b,0x83, 0x74,0x84,0xa9,0xd0,0x04,0x33);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IFileDialogControlEvents : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnItemSelected(
        IFileDialogCustomize *pfdc,
        DWORD dwIDCtl,
        DWORD dwIDItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnButtonClicked(
        IFileDialogCustomize *pfdc,
        DWORD dwIDCtl) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnCheckButtonToggled(
        IFileDialogCustomize *pfdc,
        BOOL dwIDCtl,
        BOOL bChecked) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnControlActivating(
        IFileDialogCustomize *pfdc,
        DWORD dwIDCtl) = 0;

};
#else
typedef struct IFileDialogControlEventsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFileDialogControlEvents methods ***/
    HRESULT (STDMETHODCALLTYPE *OnItemSelected)(
        IFileDialogControlEvents* This,
        IFileDialogCustomize *pfdc,
        DWORD dwIDCtl,
        DWORD dwIDItem);

    HRESULT (STDMETHODCALLTYPE *OnButtonClicked)(
        IFileDialogControlEvents* This,
        IFileDialogCustomize *pfdc,
        DWORD dwIDCtl);

    HRESULT (STDMETHODCALLTYPE *OnCheckButtonToggled)(
        IFileDialogControlEvents* This,
        IFileDialogCustomize *pfdc,
        BOOL dwIDCtl,
        BOOL bChecked);

    HRESULT (STDMETHODCALLTYPE *OnControlActivating)(
        IFileDialogControlEvents* This,
        IFileDialogCustomize *pfdc,
        DWORD dwIDCtl);

    END_INTERFACE
} IFileDialogControlEventsVtbl;
interface IFileDialogControlEvents {
    CONST_VTBL IFileDialogControlEventsVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IFileDialogControlEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileDialogControlEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileDialogControlEvents_Release(This) (This)->lpVtbl->Release(This)
/*** IFileDialogControlEvents methods ***/
#define IFileDialogControlEvents_OnItemSelected(This,pfdc,dwIDCtl,dwIDItem) (This)->lpVtbl->OnItemSelected(This,pfdc,dwIDCtl,dwIDItem)
#define IFileDialogControlEvents_OnButtonClicked(This,pfdc,dwIDCtl) (This)->lpVtbl->OnButtonClicked(This,pfdc,dwIDCtl)
#define IFileDialogControlEvents_OnCheckButtonToggled(This,pfdc,dwIDCtl,bChecked) (This)->lpVtbl->OnCheckButtonToggled(This,pfdc,dwIDCtl,bChecked)
#define IFileDialogControlEvents_OnControlActivating(This,pfdc,dwIDCtl) (This)->lpVtbl->OnControlActivating(This,pfdc,dwIDCtl)
#endif

#endif

HRESULT STDMETHODCALLTYPE IFileDialogControlEvents_OnItemSelected_Proxy(
    IFileDialogControlEvents* This,
    IFileDialogCustomize *pfdc,
    DWORD dwIDCtl,
    DWORD dwIDItem);
void __RPC_STUB IFileDialogControlEvents_OnItemSelected_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogControlEvents_OnButtonClicked_Proxy(
    IFileDialogControlEvents* This,
    IFileDialogCustomize *pfdc,
    DWORD dwIDCtl);
void __RPC_STUB IFileDialogControlEvents_OnButtonClicked_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogControlEvents_OnCheckButtonToggled_Proxy(
    IFileDialogControlEvents* This,
    IFileDialogCustomize *pfdc,
    BOOL dwIDCtl,
    BOOL bChecked);
void __RPC_STUB IFileDialogControlEvents_OnCheckButtonToggled_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IFileDialogControlEvents_OnControlActivating_Proxy(
    IFileDialogControlEvents* This,
    IFileDialogCustomize *pfdc,
    DWORD dwIDCtl);
void __RPC_STUB IFileDialogControlEvents_OnControlActivating_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IFileDialogControlEvents_INTERFACE_DEFINED__ */

typedef enum tagKF_CATEGORY {
    KF_CATEGORY_VIRTUAL = 0x1,
    KF_CATEGORY_FIXED = 0x2,
    KF_CATEGORY_COMMON = 0x3,
    KF_CATEGORY_PERUSER = 0x4
} KF_CATEGORY;
typedef enum tagKF_REDIRECTION_CAPABILITIES {
    KF_REDIRECTION_CAPABILITIES_ALLOW_ALL = 0xff,
    KF_REDIRECTION_CAPABILITIES_REDIRECTABLE = 0x1,
    KF_REDIRECTION_CAPABILITIES_DENY_ALL = 0xfff00,
    KF_REDIRECTION_CAPABILITIES_DENY_POLICY_REDIRECTED = 0x100,
    KF_REDIRECTION_CAPABILITIES_DENY_POLICY = 0x200,
    KF_REDIRECTION_CAPABILITIES_DENY_PERMISSIONS = 0x400
} KF_REDIRECTION_CAPABILITIES;
typedef enum tagKF_DEFINITION_FLAGS {
    KFDF_LOCAL_REDIRECT_ONLY = 0x2,
    KFDF_ROAMABLE = 0x4,
    KFDF_PRECREATE = 0x8
} KF_DEFINITION_FLAGS;
typedef struct tagKNOWNFOLDER_DEFINITION {
    KF_CATEGORY category;
    LPWSTR pszName;
    LPWSTR pszDescription;
    KNOWNFOLDERID fidParent;
    LPWSTR pszRelativePath;
    LPWSTR pszParsingName;
    LPWSTR pszTooltip;
    LPWSTR pszLocalizedName;
    LPWSTR pszIcon;
    LPWSTR pszSecurity;
    DWORD dwAttributes;
    KF_DEFINITION_FLAGS kfdFlags;
    FOLDERTYPEID ftidType;
} KNOWNFOLDER_DEFINITION;
/*****************************************************************************
 * IKnownFolder interface
 */
#ifndef __IKnownFolder_INTERFACE_DEFINED__
#define __IKnownFolder_INTERFACE_DEFINED__

DEFINE_GUID(IID_IKnownFolder, 0x3aa7af7e, 0x9b36, 0x420c, 0xa8,0xe3, 0xf7,0x7d,0x46,0x74,0xa4,0x88);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IKnownFolder : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetId(
        KNOWNFOLDERID *pkfid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCategory(
        KF_CATEGORY *pCategory) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetShellItem(
        DWORD dwFlags,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPath(
        DWORD dwFlags,
        LPWSTR *ppszPath) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPath(
        DWORD dwFlags,
        LPCWSTR pszPath) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIDList(
        DWORD dwFlags,
        PIDLIST_ABSOLUTE *ppidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolderType(
        FOLDERTYPEID *pftid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRedirectionCapabilities(
        KF_REDIRECTION_CAPABILITIES *pCapabilities) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolderDefinition(
        KNOWNFOLDER_DEFINITION *pKFD) = 0;

};
#else
typedef struct IKnownFolderVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IKnownFolder methods ***/
    HRESULT (STDMETHODCALLTYPE *GetId)(
        IKnownFolder* This,
        KNOWNFOLDERID *pkfid);

    HRESULT (STDMETHODCALLTYPE *GetCategory)(
        IKnownFolder* This,
        KF_CATEGORY *pCategory);

    HRESULT (STDMETHODCALLTYPE *GetShellItem)(
        IKnownFolder* This,
        DWORD dwFlags,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetPath)(
        IKnownFolder* This,
        DWORD dwFlags,
        LPWSTR *ppszPath);

    HRESULT (STDMETHODCALLTYPE *SetPath)(
        IKnownFolder* This,
        DWORD dwFlags,
        LPCWSTR pszPath);

    HRESULT (STDMETHODCALLTYPE *GetIDList)(
        IKnownFolder* This,
        DWORD dwFlags,
        PIDLIST_ABSOLUTE *ppidl);

    HRESULT (STDMETHODCALLTYPE *GetFolderType)(
        IKnownFolder* This,
        FOLDERTYPEID *pftid);

    HRESULT (STDMETHODCALLTYPE *GetRedirectionCapabilities)(
        IKnownFolder* This,
        KF_REDIRECTION_CAPABILITIES *pCapabilities);

    HRESULT (STDMETHODCALLTYPE *GetFolderDefinition)(
        IKnownFolder* This,
        KNOWNFOLDER_DEFINITION *pKFD);

    END_INTERFACE
} IKnownFolderVtbl;
interface IKnownFolder {
    CONST_VTBL IKnownFolderVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IKnownFolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IKnownFolder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IKnownFolder_Release(This) (This)->lpVtbl->Release(This)
/*** IKnownFolder methods ***/
#define IKnownFolder_GetId(This,pkfid) (This)->lpVtbl->GetId(This,pkfid)
#define IKnownFolder_GetCategory(This,pCategory) (This)->lpVtbl->GetCategory(This,pCategory)
#define IKnownFolder_GetShellItem(This,dwFlags,riid,ppv) (This)->lpVtbl->GetShellItem(This,dwFlags,riid,ppv)
#define IKnownFolder_GetPath(This,dwFlags,ppszPath) (This)->lpVtbl->GetPath(This,dwFlags,ppszPath)
#define IKnownFolder_SetPath(This,dwFlags,pszPath) (This)->lpVtbl->SetPath(This,dwFlags,pszPath)
#define IKnownFolder_GetIDList(This,dwFlags,ppidl) (This)->lpVtbl->GetIDList(This,dwFlags,ppidl)
#define IKnownFolder_GetFolderType(This,pftid) (This)->lpVtbl->GetFolderType(This,pftid)
#define IKnownFolder_GetRedirectionCapabilities(This,pCapabilities) (This)->lpVtbl->GetRedirectionCapabilities(This,pCapabilities)
#define IKnownFolder_GetFolderDefinition(This,pKFD) (This)->lpVtbl->GetFolderDefinition(This,pKFD)
#endif

#endif

HRESULT STDMETHODCALLTYPE IKnownFolder_GetId_Proxy(
    IKnownFolder* This,
    KNOWNFOLDERID *pkfid);
void __RPC_STUB IKnownFolder_GetId_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolder_GetCategory_Proxy(
    IKnownFolder* This,
    KF_CATEGORY *pCategory);
void __RPC_STUB IKnownFolder_GetCategory_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolder_GetShellItem_Proxy(
    IKnownFolder* This,
    DWORD dwFlags,
    REFIID riid,
    void **ppv);
void __RPC_STUB IKnownFolder_GetShellItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolder_GetPath_Proxy(
    IKnownFolder* This,
    DWORD dwFlags,
    LPWSTR *ppszPath);
void __RPC_STUB IKnownFolder_GetPath_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolder_SetPath_Proxy(
    IKnownFolder* This,
    DWORD dwFlags,
    LPCWSTR pszPath);
void __RPC_STUB IKnownFolder_SetPath_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolder_GetIDList_Proxy(
    IKnownFolder* This,
    DWORD dwFlags,
    PIDLIST_ABSOLUTE *ppidl);
void __RPC_STUB IKnownFolder_GetIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolder_GetFolderType_Proxy(
    IKnownFolder* This,
    FOLDERTYPEID *pftid);
void __RPC_STUB IKnownFolder_GetFolderType_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolder_GetRedirectionCapabilities_Proxy(
    IKnownFolder* This,
    KF_REDIRECTION_CAPABILITIES *pCapabilities);
void __RPC_STUB IKnownFolder_GetRedirectionCapabilities_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolder_GetFolderDefinition_Proxy(
    IKnownFolder* This,
    KNOWNFOLDER_DEFINITION *pKFD);
void __RPC_STUB IKnownFolder_GetFolderDefinition_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IKnownFolder_INTERFACE_DEFINED__ */

typedef enum tagKF_REDIRECT_FLAGS {
    KF_REDIRECT_USER_EXCLUSIVE = 0x1,
    KF_REDIRECT_COPY_SOURCE_DACL = 0x2,
    KF_REDIRECT_OWNER_USER = 0x4,
    KF_REDIRECT_SET_OWNER_EXPLICIT = 0x8,
    KF_REDIRECT_CHECK_ONLY = 0x10,
    KF_REDIRECT_WITH_UI = 0x20,
    KF_REDIRECT_UNPIN = 0x40,
    KF_REDIRECT_PIN = 0x80,
    KF_REDIRECT_COPY_CONTENTS = 0x200,
    KF_REDIRECT_DEL_SOURCE_CONTENTS = 0x400,
    KF_REDIRECT_EXCLUDE_ALL_KNOWN_SUBFOLDERS = 0x800
} KF_REDIRECT_FLAGS;
/*****************************************************************************
 * IKnownFolderManager interface
 */
#ifndef __IKnownFolderManager_INTERFACE_DEFINED__
#define __IKnownFolderManager_INTERFACE_DEFINED__

typedef enum tagFFFP_MODE {
    FFFP_EXACTMATCH = 0,
    FFFP_NEARESTPARENTMATCH = 1
} FFFP_MODE;
DEFINE_GUID(IID_IKnownFolderManager, 0x8be2d872, 0x86aa, 0x4d47, 0xb7,0x76, 0x32,0xcc,0xa4,0x0c,0x70,0x18);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IKnownFolderManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE FolderIdFromCsidl(
        int nCsidl,
        KNOWNFOLDERID *pfid) = 0;

    virtual HRESULT STDMETHODCALLTYPE FolderIdToCsidl(
        REFKNOWNFOLDERID rfid,
        int *pnCsidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolderIds(
        KNOWNFOLDERID **ppKFId,
        UINT *pCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolder(
        REFKNOWNFOLDERID rfid,
        IKnownFolder **ppkf) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolderByName(
        LPCWSTR pszCanonicalName,
        IKnownFolder **ppkf) = 0;

    virtual HRESULT STDMETHODCALLTYPE RegisterFolder(
        REFKNOWNFOLDERID rfid,
        const KNOWNFOLDER_DEFINITION *pKFD) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnregisterFolder(
        REFKNOWNFOLDERID rfid) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindFolderFromPath(
        LPCWSTR pszPath,
        FFFP_MODE mode,
        IKnownFolder **ppkf) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindFolderFromIDList(
        PCIDLIST_ABSOLUTE pidl,
        IKnownFolder **ppkf) = 0;

    virtual HRESULT STDMETHODCALLTYPE Redirect(
        REFKNOWNFOLDERID rfid,
        HWND hwnd,
        KF_REDIRECT_FLAGS flags,
        LPCWSTR pszTargetPath,
        UINT cFolders,
        const KNOWNFOLDERID *pExclusion,
        LPWSTR *ppszError) = 0;

};
#else
typedef struct IKnownFolderManagerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IKnownFolderManager methods ***/
    HRESULT (STDMETHODCALLTYPE *FolderIdFromCsidl)(
        IKnownFolderManager* This,
        int nCsidl,
        KNOWNFOLDERID *pfid);

    HRESULT (STDMETHODCALLTYPE *FolderIdToCsidl)(
        IKnownFolderManager* This,
        REFKNOWNFOLDERID rfid,
        int *pnCsidl);

    HRESULT (STDMETHODCALLTYPE *GetFolderIds)(
        IKnownFolderManager* This,
        KNOWNFOLDERID **ppKFId,
        UINT *pCount);

    HRESULT (STDMETHODCALLTYPE *GetFolder)(
        IKnownFolderManager* This,
        REFKNOWNFOLDERID rfid,
        IKnownFolder **ppkf);

    HRESULT (STDMETHODCALLTYPE *GetFolderByName)(
        IKnownFolderManager* This,
        LPCWSTR pszCanonicalName,
        IKnownFolder **ppkf);

    HRESULT (STDMETHODCALLTYPE *RegisterFolder)(
        IKnownFolderManager* This,
        REFKNOWNFOLDERID rfid,
        const KNOWNFOLDER_DEFINITION *pKFD);

    HRESULT (STDMETHODCALLTYPE *UnregisterFolder)(
        IKnownFolderManager* This,
        REFKNOWNFOLDERID rfid);

    HRESULT (STDMETHODCALLTYPE *FindFolderFromPath)(
        IKnownFolderManager* This,
        LPCWSTR pszPath,
        FFFP_MODE mode,
        IKnownFolder **ppkf);

    HRESULT (STDMETHODCALLTYPE *FindFolderFromIDList)(
        IKnownFolderManager* This,
        PCIDLIST_ABSOLUTE pidl,
        IKnownFolder **ppkf);

    HRESULT (STDMETHODCALLTYPE *Redirect)(
        IKnownFolderManager* This,
        REFKNOWNFOLDERID rfid,
        HWND hwnd,
        KF_REDIRECT_FLAGS flags,
        LPCWSTR pszTargetPath,
        UINT cFolders,
        const KNOWNFOLDERID *pExclusion,
        LPWSTR *ppszError);

    END_INTERFACE
} IKnownFolderManagerVtbl;
interface IKnownFolderManager {
    CONST_VTBL IKnownFolderManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IKnownFolderManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IKnownFolderManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IKnownFolderManager_Release(This) (This)->lpVtbl->Release(This)
/*** IKnownFolderManager methods ***/
#define IKnownFolderManager_FolderIdFromCsidl(This,nCsidl,pfid) (This)->lpVtbl->FolderIdFromCsidl(This,nCsidl,pfid)
#define IKnownFolderManager_FolderIdToCsidl(This,rfid,pnCsidl) (This)->lpVtbl->FolderIdToCsidl(This,rfid,pnCsidl)
#define IKnownFolderManager_GetFolderIds(This,ppKFId,pCount) (This)->lpVtbl->GetFolderIds(This,ppKFId,pCount)
#define IKnownFolderManager_GetFolder(This,rfid,ppkf) (This)->lpVtbl->GetFolder(This,rfid,ppkf)
#define IKnownFolderManager_GetFolderByName(This,pszCanonicalName,ppkf) (This)->lpVtbl->GetFolderByName(This,pszCanonicalName,ppkf)
#define IKnownFolderManager_RegisterFolder(This,rfid,pKFD) (This)->lpVtbl->RegisterFolder(This,rfid,pKFD)
#define IKnownFolderManager_UnregisterFolder(This,rfid) (This)->lpVtbl->UnregisterFolder(This,rfid)
#define IKnownFolderManager_FindFolderFromPath(This,pszPath,mode,ppkf) (This)->lpVtbl->FindFolderFromPath(This,pszPath,mode,ppkf)
#define IKnownFolderManager_FindFolderFromIDList(This,pidl,ppkf) (This)->lpVtbl->FindFolderFromIDList(This,pidl,ppkf)
#define IKnownFolderManager_Redirect(This,rfid,hwnd,flags,pszTargetPath,cFolders,pExclusion,ppszError) (This)->lpVtbl->Redirect(This,rfid,hwnd,flags,pszTargetPath,cFolders,pExclusion,ppszError)
#endif

#endif

HRESULT STDMETHODCALLTYPE IKnownFolderManager_FolderIdFromCsidl_Proxy(
    IKnownFolderManager* This,
    int nCsidl,
    KNOWNFOLDERID *pfid);
void __RPC_STUB IKnownFolderManager_FolderIdFromCsidl_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolderManager_FolderIdToCsidl_Proxy(
    IKnownFolderManager* This,
    REFKNOWNFOLDERID rfid,
    int *pnCsidl);
void __RPC_STUB IKnownFolderManager_FolderIdToCsidl_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolderManager_GetFolderIds_Proxy(
    IKnownFolderManager* This,
    KNOWNFOLDERID **ppKFId,
    UINT *pCount);
void __RPC_STUB IKnownFolderManager_GetFolderIds_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolderManager_GetFolder_Proxy(
    IKnownFolderManager* This,
    REFKNOWNFOLDERID rfid,
    IKnownFolder **ppkf);
void __RPC_STUB IKnownFolderManager_GetFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolderManager_GetFolderByName_Proxy(
    IKnownFolderManager* This,
    LPCWSTR pszCanonicalName,
    IKnownFolder **ppkf);
void __RPC_STUB IKnownFolderManager_GetFolderByName_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolderManager_RegisterFolder_Proxy(
    IKnownFolderManager* This,
    REFKNOWNFOLDERID rfid,
    const KNOWNFOLDER_DEFINITION *pKFD);
void __RPC_STUB IKnownFolderManager_RegisterFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolderManager_UnregisterFolder_Proxy(
    IKnownFolderManager* This,
    REFKNOWNFOLDERID rfid);
void __RPC_STUB IKnownFolderManager_UnregisterFolder_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolderManager_FindFolderFromPath_Proxy(
    IKnownFolderManager* This,
    LPCWSTR pszPath,
    FFFP_MODE mode,
    IKnownFolder **ppkf);
void __RPC_STUB IKnownFolderManager_FindFolderFromPath_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolderManager_FindFolderFromIDList_Proxy(
    IKnownFolderManager* This,
    PCIDLIST_ABSOLUTE pidl,
    IKnownFolder **ppkf);
void __RPC_STUB IKnownFolderManager_FindFolderFromIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT STDMETHODCALLTYPE IKnownFolderManager_Redirect_Proxy(
    IKnownFolderManager* This,
    REFKNOWNFOLDERID rfid,
    HWND hwnd,
    KF_REDIRECT_FLAGS flags,
    LPCWSTR pszTargetPath,
    UINT cFolders,
    const KNOWNFOLDERID *pExclusion,
    LPWSTR *ppszError);
void __RPC_STUB IKnownFolderManager_Redirect_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);

#endif  /* __IKnownFolderManager_INTERFACE_DEFINED__ */


DEFINE_GUID(LIBID_ShellObjects, 0x50a7e9b1, 0x70ef, 0x11d1, 0xb7,0x5a, 0x00,0xa0,0xc9,0x05,0x64,0xfe);

/*****************************************************************************
 * ExplorerBrowser coclass
 */

DEFINE_GUID(CLSID_ExplorerBrowser, 0x71f96385, 0xddd6, 0x48d3, 0xa0,0xc1, 0xae,0x06,0xe8,0xb0,0x55,0xfb);

/*****************************************************************************
 * FileOpenDialog coclass
 */

DEFINE_GUID(CLSID_FileOpenDialog, 0xdc1c5a9c, 0xe88a, 0x4dde, 0xa5,0xa1, 0x60,0xf8,0x2a,0x20,0xae,0xf7);

/*****************************************************************************
 * FileSaveDialog coclass
 */

DEFINE_GUID(CLSID_FileSaveDialog, 0xc0b4e2f3, 0xba21, 0x4773, 0x8d,0xba, 0x33,0x5e,0xc9,0x46,0xeb,0x8b);

/*****************************************************************************
 * NamespaceTreeControl coclass
 */

DEFINE_GUID(CLSID_NamespaceTreeControl, 0xae054212, 0x3535, 0x4430, 0x83,0xed, 0xd5,0x01,0xaa,0x66,0x80,0xe6);

/*****************************************************************************
 * KnownFolderManager coclass
 */

DEFINE_GUID(CLSID_KnownFolderManager, 0x4df0c730, 0xdf9d, 0x4ae3, 0x91,0x53, 0xaa,0x6b,0x82,0xe9,0x79,0x5a);

/* 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 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 *);
ULONG           __RPC_USER LPSAFEARRAY_UserSize     (ULONG *, ULONG, LPSAFEARRAY *);
unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal  (ULONG *, unsigned char *, LPSAFEARRAY *);
unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
void            __RPC_USER LPSAFEARRAY_UserFree     (ULONG *, LPSAFEARRAY *);
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 *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __WIDL_SHOBJIDL_H */
