/*** Autogenerated by WIDL 5.12 from ../../wine/include/shobjidl.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __shobjidl_h__
#define __shobjidl_h__

/* Forward declarations */

#ifndef __IPersistFolder_FWD_DEFINED__
#define __IPersistFolder_FWD_DEFINED__
typedef interface IPersistFolder IPersistFolder;
#ifdef __cplusplus
interface IPersistFolder;
#endif /* __cplusplus */
#endif

#ifndef __IPersistFolder2_FWD_DEFINED__
#define __IPersistFolder2_FWD_DEFINED__
typedef interface IPersistFolder2 IPersistFolder2;
#ifdef __cplusplus
interface IPersistFolder2;
#endif /* __cplusplus */
#endif

#ifndef __IPersistIDList_FWD_DEFINED__
#define __IPersistIDList_FWD_DEFINED__
typedef interface IPersistIDList IPersistIDList;
#ifdef __cplusplus
interface IPersistIDList;
#endif /* __cplusplus */
#endif

#ifndef __IEnumIDList_FWD_DEFINED__
#define __IEnumIDList_FWD_DEFINED__
typedef interface IEnumIDList IEnumIDList;
#ifdef __cplusplus
interface IEnumIDList;
#endif /* __cplusplus */
#endif

#ifndef __IShellPropSheetExt_FWD_DEFINED__
#define __IShellPropSheetExt_FWD_DEFINED__
typedef interface IShellPropSheetExt IShellPropSheetExt;
#ifdef __cplusplus
interface IShellPropSheetExt;
#endif /* __cplusplus */
#endif

#ifndef __IShellFolder_FWD_DEFINED__
#define __IShellFolder_FWD_DEFINED__
typedef interface IShellFolder IShellFolder;
#ifdef __cplusplus
interface IShellFolder;
#endif /* __cplusplus */
#endif

#ifndef __IEnumExtraSearch_FWD_DEFINED__
#define __IEnumExtraSearch_FWD_DEFINED__
typedef interface IEnumExtraSearch IEnumExtraSearch;
#ifdef __cplusplus
interface IEnumExtraSearch;
#endif /* __cplusplus */
#endif

#ifndef __IShellFolder2_FWD_DEFINED__
#define __IShellFolder2_FWD_DEFINED__
typedef interface IShellFolder2 IShellFolder2;
#ifdef __cplusplus
interface IShellFolder2;
#endif /* __cplusplus */
#endif

#ifndef __IShellItem_FWD_DEFINED__
#define __IShellItem_FWD_DEFINED__
typedef interface IShellItem IShellItem;
#ifdef __cplusplus
interface IShellItem;
#endif /* __cplusplus */
#endif

#ifndef __IShellItem2_FWD_DEFINED__
#define __IShellItem2_FWD_DEFINED__
typedef interface IShellItem2 IShellItem2;
#ifdef __cplusplus
interface IShellItem2;
#endif /* __cplusplus */
#endif

#ifndef __INewWindowManager_FWD_DEFINED__
#define __INewWindowManager_FWD_DEFINED__
typedef interface INewWindowManager INewWindowManager;
#ifdef __cplusplus
interface INewWindowManager;
#endif /* __cplusplus */
#endif

#ifndef __IEnumShellItems_FWD_DEFINED__
#define __IEnumShellItems_FWD_DEFINED__
typedef interface IEnumShellItems IEnumShellItems;
#ifdef __cplusplus
interface IEnumShellItems;
#endif /* __cplusplus */
#endif

#ifndef __IShellItemArray_FWD_DEFINED__
#define __IShellItemArray_FWD_DEFINED__
typedef interface IShellItemArray IShellItemArray;
#ifdef __cplusplus
interface IShellItemArray;
#endif /* __cplusplus */
#endif

#ifndef __IShellItemFilter_FWD_DEFINED__
#define __IShellItemFilter_FWD_DEFINED__
typedef interface IShellItemFilter IShellItemFilter;
#ifdef __cplusplus
interface IShellItemFilter;
#endif /* __cplusplus */
#endif

#ifndef __IShellIcon_FWD_DEFINED__
#define __IShellIcon_FWD_DEFINED__
typedef interface IShellIcon IShellIcon;
#ifdef __cplusplus
interface IShellIcon;
#endif /* __cplusplus */
#endif

#ifndef __IShellView_FWD_DEFINED__
#define __IShellView_FWD_DEFINED__
typedef interface IShellView IShellView;
#ifdef __cplusplus
interface IShellView;
#endif /* __cplusplus */
#endif

#ifndef __IShellView2_FWD_DEFINED__
#define __IShellView2_FWD_DEFINED__
typedef interface IShellView2 IShellView2;
#ifdef __cplusplus
interface IShellView2;
#endif /* __cplusplus */
#endif

#ifndef __IShellView3_FWD_DEFINED__
#define __IShellView3_FWD_DEFINED__
typedef interface IShellView3 IShellView3;
#ifdef __cplusplus
interface IShellView3;
#endif /* __cplusplus */
#endif

#ifndef __IFolderView_FWD_DEFINED__
#define __IFolderView_FWD_DEFINED__
typedef interface IFolderView IFolderView;
#ifdef __cplusplus
interface IFolderView;
#endif /* __cplusplus */
#endif

#ifndef __IFolderView2_FWD_DEFINED__
#define __IFolderView2_FWD_DEFINED__
typedef interface IFolderView2 IFolderView2;
#ifdef __cplusplus
interface IFolderView2;
#endif /* __cplusplus */
#endif

#ifndef __IShellBrowser_FWD_DEFINED__
#define __IShellBrowser_FWD_DEFINED__
typedef interface IShellBrowser IShellBrowser;
#ifdef __cplusplus
interface IShellBrowser;
#endif /* __cplusplus */
#endif

#ifndef __IShellLinkA_FWD_DEFINED__
#define __IShellLinkA_FWD_DEFINED__
typedef interface IShellLinkA IShellLinkA;
#ifdef __cplusplus
interface IShellLinkA;
#endif /* __cplusplus */
#endif

#ifndef __IShellLinkW_FWD_DEFINED__
#define __IShellLinkW_FWD_DEFINED__
typedef interface IShellLinkW IShellLinkW;
#ifdef __cplusplus
interface IShellLinkW;
#endif /* __cplusplus */
#endif

#ifndef __IShellExtInit_FWD_DEFINED__
#define __IShellExtInit_FWD_DEFINED__
typedef interface IShellExtInit IShellExtInit;
#ifdef __cplusplus
interface IShellExtInit;
#endif /* __cplusplus */
#endif

#ifndef __IPersistFolder3_FWD_DEFINED__
#define __IPersistFolder3_FWD_DEFINED__
typedef interface IPersistFolder3 IPersistFolder3;
#ifdef __cplusplus
interface IPersistFolder3;
#endif /* __cplusplus */
#endif

#ifndef __IExtractIconA_FWD_DEFINED__
#define __IExtractIconA_FWD_DEFINED__
typedef interface IExtractIconA IExtractIconA;
#ifdef __cplusplus
interface IExtractIconA;
#endif /* __cplusplus */
#endif

#ifndef __IExtractIconW_FWD_DEFINED__
#define __IExtractIconW_FWD_DEFINED__
typedef interface IExtractIconW IExtractIconW;
#ifdef __cplusplus
interface IExtractIconW;
#endif /* __cplusplus */
#endif

#ifndef __ICommDlgBrowser_FWD_DEFINED__
#define __ICommDlgBrowser_FWD_DEFINED__
typedef interface ICommDlgBrowser ICommDlgBrowser;
#ifdef __cplusplus
interface ICommDlgBrowser;
#endif /* __cplusplus */
#endif

#ifndef __ICommDlgBrowser2_FWD_DEFINED__
#define __ICommDlgBrowser2_FWD_DEFINED__
typedef interface ICommDlgBrowser2 ICommDlgBrowser2;
#ifdef __cplusplus
interface ICommDlgBrowser2;
#endif /* __cplusplus */
#endif

#ifndef __ICommDlgBrowser3_FWD_DEFINED__
#define __ICommDlgBrowser3_FWD_DEFINED__
typedef interface ICommDlgBrowser3 ICommDlgBrowser3;
#ifdef __cplusplus
interface ICommDlgBrowser3;
#endif /* __cplusplus */
#endif

#ifndef __IDockingWindow_FWD_DEFINED__
#define __IDockingWindow_FWD_DEFINED__
typedef interface IDockingWindow IDockingWindow;
#ifdef __cplusplus
interface IDockingWindow;
#endif /* __cplusplus */
#endif

#ifndef __IDockingWindowFrame_FWD_DEFINED__
#define __IDockingWindowFrame_FWD_DEFINED__
typedef interface IDockingWindowFrame IDockingWindowFrame;
#ifdef __cplusplus
interface IDockingWindowFrame;
#endif /* __cplusplus */
#endif

#ifndef __IDragSourceHelper_FWD_DEFINED__
#define __IDragSourceHelper_FWD_DEFINED__
typedef interface IDragSourceHelper IDragSourceHelper;
#ifdef __cplusplus
interface IDragSourceHelper;
#endif /* __cplusplus */
#endif

#ifndef __IDropTargetHelper_FWD_DEFINED__
#define __IDropTargetHelper_FWD_DEFINED__
typedef interface IDropTargetHelper IDropTargetHelper;
#ifdef __cplusplus
interface IDropTargetHelper;
#endif /* __cplusplus */
#endif

#ifndef __IContextMenu_FWD_DEFINED__
#define __IContextMenu_FWD_DEFINED__
typedef interface IContextMenu IContextMenu;
#ifdef __cplusplus
interface IContextMenu;
#endif /* __cplusplus */
#endif

#ifndef __IContextMenu2_FWD_DEFINED__
#define __IContextMenu2_FWD_DEFINED__
typedef interface IContextMenu2 IContextMenu2;
#ifdef __cplusplus
interface IContextMenu2;
#endif /* __cplusplus */
#endif

#ifndef __IContextMenu3_FWD_DEFINED__
#define __IContextMenu3_FWD_DEFINED__
typedef interface IContextMenu3 IContextMenu3;
#ifdef __cplusplus
interface IContextMenu3;
#endif /* __cplusplus */
#endif

#ifndef __IContextMenuCB_FWD_DEFINED__
#define __IContextMenuCB_FWD_DEFINED__
typedef interface IContextMenuCB IContextMenuCB;
#ifdef __cplusplus
interface IContextMenuCB;
#endif /* __cplusplus */
#endif

#ifndef __IShellExecuteHookA_FWD_DEFINED__
#define __IShellExecuteHookA_FWD_DEFINED__
typedef interface IShellExecuteHookA IShellExecuteHookA;
#ifdef __cplusplus
interface IShellExecuteHookA;
#endif /* __cplusplus */
#endif

#ifndef __IShellExecuteHookW_FWD_DEFINED__
#define __IShellExecuteHookW_FWD_DEFINED__
typedef interface IShellExecuteHookW IShellExecuteHookW;
#ifdef __cplusplus
interface IShellExecuteHookW;
#endif /* __cplusplus */
#endif

#ifndef __IShellLinkDataList_FWD_DEFINED__
#define __IShellLinkDataList_FWD_DEFINED__
typedef interface IShellLinkDataList IShellLinkDataList;
#ifdef __cplusplus
interface IShellLinkDataList;
#endif /* __cplusplus */
#endif

#ifndef __IResolveShellLink_FWD_DEFINED__
#define __IResolveShellLink_FWD_DEFINED__
typedef interface IResolveShellLink IResolveShellLink;
#ifdef __cplusplus
interface IResolveShellLink;
#endif /* __cplusplus */
#endif

#ifndef __IURLSearchHook_FWD_DEFINED__
#define __IURLSearchHook_FWD_DEFINED__
typedef interface IURLSearchHook IURLSearchHook;
#ifdef __cplusplus
interface IURLSearchHook;
#endif /* __cplusplus */
#endif

#ifndef __ISearchContext_FWD_DEFINED__
#define __ISearchContext_FWD_DEFINED__
typedef interface ISearchContext ISearchContext;
#ifdef __cplusplus
interface ISearchContext;
#endif /* __cplusplus */
#endif

#ifndef __IURLSearchHook2_FWD_DEFINED__
#define __IURLSearchHook2_FWD_DEFINED__
typedef interface IURLSearchHook2 IURLSearchHook2;
#ifdef __cplusplus
interface IURLSearchHook2;
#endif /* __cplusplus */
#endif

#ifndef __INewShortcutHookA_FWD_DEFINED__
#define __INewShortcutHookA_FWD_DEFINED__
typedef interface INewShortcutHookA INewShortcutHookA;
#ifdef __cplusplus
interface INewShortcutHookA;
#endif /* __cplusplus */
#endif

#ifndef __INewShortcutHookW_FWD_DEFINED__
#define __INewShortcutHookW_FWD_DEFINED__
typedef interface INewShortcutHookW INewShortcutHookW;
#ifdef __cplusplus
interface INewShortcutHookW;
#endif /* __cplusplus */
#endif

#ifndef __IRunnableTask_FWD_DEFINED__
#define __IRunnableTask_FWD_DEFINED__
typedef interface IRunnableTask IRunnableTask;
#ifdef __cplusplus
interface IRunnableTask;
#endif /* __cplusplus */
#endif

#ifndef __IShellChangeNotify_FWD_DEFINED__
#define __IShellChangeNotify_FWD_DEFINED__
typedef interface IShellChangeNotify IShellChangeNotify;
#ifdef __cplusplus
interface IShellChangeNotify;
#endif /* __cplusplus */
#endif

#ifndef __IFileSystemBindData_FWD_DEFINED__
#define __IFileSystemBindData_FWD_DEFINED__
typedef interface IFileSystemBindData IFileSystemBindData;
#ifdef __cplusplus
interface IFileSystemBindData;
#endif /* __cplusplus */
#endif

#ifndef __ITaskbarList_FWD_DEFINED__
#define __ITaskbarList_FWD_DEFINED__
typedef interface ITaskbarList ITaskbarList;
#ifdef __cplusplus
interface ITaskbarList;
#endif /* __cplusplus */
#endif

#ifndef __ITaskbarList2_FWD_DEFINED__
#define __ITaskbarList2_FWD_DEFINED__
typedef interface ITaskbarList2 ITaskbarList2;
#ifdef __cplusplus
interface ITaskbarList2;
#endif /* __cplusplus */
#endif

#ifndef __ITaskbarList3_FWD_DEFINED__
#define __ITaskbarList3_FWD_DEFINED__
typedef interface ITaskbarList3 ITaskbarList3;
#ifdef __cplusplus
interface ITaskbarList3;
#endif /* __cplusplus */
#endif

#ifndef __ITaskbarList4_FWD_DEFINED__
#define __ITaskbarList4_FWD_DEFINED__
typedef interface ITaskbarList4 ITaskbarList4;
#ifdef __cplusplus
interface ITaskbarList4;
#endif /* __cplusplus */
#endif

#ifndef __IAutoCompleteDropDown_FWD_DEFINED__
#define __IAutoCompleteDropDown_FWD_DEFINED__
typedef interface IAutoCompleteDropDown IAutoCompleteDropDown;
#ifdef __cplusplus
interface IAutoCompleteDropDown;
#endif /* __cplusplus */
#endif

#ifndef __IProfferService_FWD_DEFINED__
#define __IProfferService_FWD_DEFINED__
typedef interface IProfferService IProfferService;
#ifdef __cplusplus
interface IProfferService;
#endif /* __cplusplus */
#endif

#ifndef __IExplorerBrowserEvents_FWD_DEFINED__
#define __IExplorerBrowserEvents_FWD_DEFINED__
typedef interface IExplorerBrowserEvents IExplorerBrowserEvents;
#ifdef __cplusplus
interface IExplorerBrowserEvents;
#endif /* __cplusplus */
#endif

#ifndef __IExplorerPaneVisibility_FWD_DEFINED__
#define __IExplorerPaneVisibility_FWD_DEFINED__
typedef interface IExplorerPaneVisibility IExplorerPaneVisibility;
#ifdef __cplusplus
interface IExplorerPaneVisibility;
#endif /* __cplusplus */
#endif

#ifndef __IExplorerBrowser_FWD_DEFINED__
#define __IExplorerBrowser_FWD_DEFINED__
typedef interface IExplorerBrowser IExplorerBrowser;
#ifdef __cplusplus
interface IExplorerBrowser;
#endif /* __cplusplus */
#endif

#ifndef __INameSpaceTreeControl_FWD_DEFINED__
#define __INameSpaceTreeControl_FWD_DEFINED__
typedef interface INameSpaceTreeControl INameSpaceTreeControl;
#ifdef __cplusplus
interface INameSpaceTreeControl;
#endif /* __cplusplus */
#endif

#ifndef __INameSpaceTreeControl2_FWD_DEFINED__
#define __INameSpaceTreeControl2_FWD_DEFINED__
typedef interface INameSpaceTreeControl2 INameSpaceTreeControl2;
#ifdef __cplusplus
interface INameSpaceTreeControl2;
#endif /* __cplusplus */
#endif

#ifndef __INameSpaceTreeControlEvents_FWD_DEFINED__
#define __INameSpaceTreeControlEvents_FWD_DEFINED__
typedef interface INameSpaceTreeControlEvents INameSpaceTreeControlEvents;
#ifdef __cplusplus
interface INameSpaceTreeControlEvents;
#endif /* __cplusplus */
#endif

#ifndef __INameSpaceTreeControlCustomDraw_FWD_DEFINED__
#define __INameSpaceTreeControlCustomDraw_FWD_DEFINED__
typedef interface INameSpaceTreeControlCustomDraw INameSpaceTreeControlCustomDraw;
#ifdef __cplusplus
interface INameSpaceTreeControlCustomDraw;
#endif /* __cplusplus */
#endif

#ifndef __INameSpaceTreeControlDropHandler_FWD_DEFINED__
#define __INameSpaceTreeControlDropHandler_FWD_DEFINED__
typedef interface INameSpaceTreeControlDropHandler INameSpaceTreeControlDropHandler;
#ifdef __cplusplus
interface INameSpaceTreeControlDropHandler;
#endif /* __cplusplus */
#endif

#ifndef __IFileDialogEvents_FWD_DEFINED__
#define __IFileDialogEvents_FWD_DEFINED__
typedef interface IFileDialogEvents IFileDialogEvents;
#ifdef __cplusplus
interface IFileDialogEvents;
#endif /* __cplusplus */
#endif

#ifndef __IModalWindow_FWD_DEFINED__
#define __IModalWindow_FWD_DEFINED__
typedef interface IModalWindow IModalWindow;
#ifdef __cplusplus
interface IModalWindow;
#endif /* __cplusplus */
#endif

#ifndef __IFileDialog_FWD_DEFINED__
#define __IFileDialog_FWD_DEFINED__
typedef interface IFileDialog IFileDialog;
#ifdef __cplusplus
interface IFileDialog;
#endif /* __cplusplus */
#endif

#ifndef __IFileDialog2_FWD_DEFINED__
#define __IFileDialog2_FWD_DEFINED__
typedef interface IFileDialog2 IFileDialog2;
#ifdef __cplusplus
interface IFileDialog2;
#endif /* __cplusplus */
#endif

#ifndef __IFileOperationProgressSink_FWD_DEFINED__
#define __IFileOperationProgressSink_FWD_DEFINED__
typedef interface IFileOperationProgressSink IFileOperationProgressSink;
#ifdef __cplusplus
interface IFileOperationProgressSink;
#endif /* __cplusplus */
#endif

#ifndef __IFileSaveDialog_FWD_DEFINED__
#define __IFileSaveDialog_FWD_DEFINED__
typedef interface IFileSaveDialog IFileSaveDialog;
#ifdef __cplusplus
interface IFileSaveDialog;
#endif /* __cplusplus */
#endif

#ifndef __IFileOpenDialog_FWD_DEFINED__
#define __IFileOpenDialog_FWD_DEFINED__
typedef interface IFileOpenDialog IFileOpenDialog;
#ifdef __cplusplus
interface IFileOpenDialog;
#endif /* __cplusplus */
#endif

#ifndef __IFileDialogCustomize_FWD_DEFINED__
#define __IFileDialogCustomize_FWD_DEFINED__
typedef interface IFileDialogCustomize IFileDialogCustomize;
#ifdef __cplusplus
interface IFileDialogCustomize;
#endif /* __cplusplus */
#endif

#ifndef __IFileDialogControlEvents_FWD_DEFINED__
#define __IFileDialogControlEvents_FWD_DEFINED__
typedef interface IFileDialogControlEvents IFileDialogControlEvents;
#ifdef __cplusplus
interface IFileDialogControlEvents;
#endif /* __cplusplus */
#endif

#ifndef __IKnownFolder_FWD_DEFINED__
#define __IKnownFolder_FWD_DEFINED__
typedef interface IKnownFolder IKnownFolder;
#ifdef __cplusplus
interface IKnownFolder;
#endif /* __cplusplus */
#endif

#ifndef __IKnownFolderManager_FWD_DEFINED__
#define __IKnownFolderManager_FWD_DEFINED__
typedef interface IKnownFolderManager IKnownFolderManager;
#ifdef __cplusplus
interface IKnownFolderManager;
#endif /* __cplusplus */
#endif

#ifndef __IApplicationAssociationRegistration_FWD_DEFINED__
#define __IApplicationAssociationRegistration_FWD_DEFINED__
typedef interface IApplicationAssociationRegistration IApplicationAssociationRegistration;
#ifdef __cplusplus
interface IApplicationAssociationRegistration;
#endif /* __cplusplus */
#endif

#ifndef __IApplicationDestinations_FWD_DEFINED__
#define __IApplicationDestinations_FWD_DEFINED__
typedef interface IApplicationDestinations IApplicationDestinations;
#ifdef __cplusplus
interface IApplicationDestinations;
#endif /* __cplusplus */
#endif

#ifndef __ICustomDestinationList_FWD_DEFINED__
#define __ICustomDestinationList_FWD_DEFINED__
typedef interface ICustomDestinationList ICustomDestinationList;
#ifdef __cplusplus
interface ICustomDestinationList;
#endif /* __cplusplus */
#endif

#ifndef __IQueryCancelAutoPlay_FWD_DEFINED__
#define __IQueryCancelAutoPlay_FWD_DEFINED__
typedef interface IQueryCancelAutoPlay IQueryCancelAutoPlay;
#ifdef __cplusplus
interface IQueryCancelAutoPlay;
#endif /* __cplusplus */
#endif

#ifndef __ITransferAdviseSink_FWD_DEFINED__
#define __ITransferAdviseSink_FWD_DEFINED__
typedef interface ITransferAdviseSink ITransferAdviseSink;
#ifdef __cplusplus
interface ITransferAdviseSink;
#endif /* __cplusplus */
#endif

#ifndef __ITransferSource_FWD_DEFINED__
#define __ITransferSource_FWD_DEFINED__
typedef interface ITransferSource ITransferSource;
#ifdef __cplusplus
interface ITransferSource;
#endif /* __cplusplus */
#endif

#ifndef __ITransferDestination_FWD_DEFINED__
#define __ITransferDestination_FWD_DEFINED__
typedef interface ITransferDestination ITransferDestination;
#ifdef __cplusplus
interface ITransferDestination;
#endif /* __cplusplus */
#endif

#ifndef __IAssocHandlerInvoker_FWD_DEFINED__
#define __IAssocHandlerInvoker_FWD_DEFINED__
typedef interface IAssocHandlerInvoker IAssocHandlerInvoker;
#ifdef __cplusplus
interface IAssocHandlerInvoker;
#endif /* __cplusplus */
#endif

#ifndef __IAssocHandler_FWD_DEFINED__
#define __IAssocHandler_FWD_DEFINED__
typedef interface IAssocHandler IAssocHandler;
#ifdef __cplusplus
interface IAssocHandler;
#endif /* __cplusplus */
#endif

#ifndef __IEnumAssocHandlers_FWD_DEFINED__
#define __IEnumAssocHandlers_FWD_DEFINED__
typedef interface IEnumAssocHandlers IEnumAssocHandlers;
#ifdef __cplusplus
interface IEnumAssocHandlers;
#endif /* __cplusplus */
#endif

#ifndef __IItemNameLimits_FWD_DEFINED__
#define __IItemNameLimits_FWD_DEFINED__
typedef interface IItemNameLimits IItemNameLimits;
#ifdef __cplusplus
interface IItemNameLimits;
#endif /* __cplusplus */
#endif

#ifndef __IApplicationActivationManager_FWD_DEFINED__
#define __IApplicationActivationManager_FWD_DEFINED__
typedef interface IApplicationActivationManager IApplicationActivationManager;
#ifdef __cplusplus
interface IApplicationActivationManager;
#endif /* __cplusplus */
#endif

#ifndef __IPreviewHandlerFrame_FWD_DEFINED__
#define __IPreviewHandlerFrame_FWD_DEFINED__
typedef interface IPreviewHandlerFrame IPreviewHandlerFrame;
#ifdef __cplusplus
interface IPreviewHandlerFrame;
#endif /* __cplusplus */
#endif

#ifndef __ExplorerBrowser_FWD_DEFINED__
#define __ExplorerBrowser_FWD_DEFINED__
#ifdef __cplusplus
typedef class ExplorerBrowser ExplorerBrowser;
#else
typedef struct ExplorerBrowser ExplorerBrowser;
#endif /* defined __cplusplus */
#endif /* defined __ExplorerBrowser_FWD_DEFINED__ */

#ifndef __FileOpenDialog_FWD_DEFINED__
#define __FileOpenDialog_FWD_DEFINED__
#ifdef __cplusplus
typedef class FileOpenDialog FileOpenDialog;
#else
typedef struct FileOpenDialog FileOpenDialog;
#endif /* defined __cplusplus */
#endif /* defined __FileOpenDialog_FWD_DEFINED__ */

#ifndef __FileSaveDialog_FWD_DEFINED__
#define __FileSaveDialog_FWD_DEFINED__
#ifdef __cplusplus
typedef class FileSaveDialog FileSaveDialog;
#else
typedef struct FileSaveDialog FileSaveDialog;
#endif /* defined __cplusplus */
#endif /* defined __FileSaveDialog_FWD_DEFINED__ */

#ifndef __NamespaceTreeControl_FWD_DEFINED__
#define __NamespaceTreeControl_FWD_DEFINED__
#ifdef __cplusplus
typedef class NamespaceTreeControl NamespaceTreeControl;
#else
typedef struct NamespaceTreeControl NamespaceTreeControl;
#endif /* defined __cplusplus */
#endif /* defined __NamespaceTreeControl_FWD_DEFINED__ */

#ifndef __KnownFolderManager_FWD_DEFINED__
#define __KnownFolderManager_FWD_DEFINED__
#ifdef __cplusplus
typedef class KnownFolderManager KnownFolderManager;
#else
typedef struct KnownFolderManager KnownFolderManager;
#endif /* defined __cplusplus */
#endif /* defined __KnownFolderManager_FWD_DEFINED__ */

#ifndef __ApplicationAssociationRegistration_FWD_DEFINED__
#define __ApplicationAssociationRegistration_FWD_DEFINED__
#ifdef __cplusplus
typedef class ApplicationAssociationRegistration ApplicationAssociationRegistration;
#else
typedef struct ApplicationAssociationRegistration ApplicationAssociationRegistration;
#endif /* defined __cplusplus */
#endif /* defined __ApplicationAssociationRegistration_FWD_DEFINED__ */

#ifndef __ApplicationDestinations_FWD_DEFINED__
#define __ApplicationDestinations_FWD_DEFINED__
#ifdef __cplusplus
typedef class ApplicationDestinations ApplicationDestinations;
#else
typedef struct ApplicationDestinations ApplicationDestinations;
#endif /* defined __cplusplus */
#endif /* defined __ApplicationDestinations_FWD_DEFINED__ */

#ifndef __ShellLink_FWD_DEFINED__
#define __ShellLink_FWD_DEFINED__
#ifdef __cplusplus
typedef class ShellLink ShellLink;
#else
typedef struct ShellLink ShellLink;
#endif /* defined __cplusplus */
#endif /* defined __ShellLink_FWD_DEFINED__ */

#ifndef __TaskbarList_FWD_DEFINED__
#define __TaskbarList_FWD_DEFINED__
#ifdef __cplusplus
typedef class TaskbarList TaskbarList;
#else
typedef struct TaskbarList TaskbarList;
#endif /* defined __cplusplus */
#endif /* defined __TaskbarList_FWD_DEFINED__ */

#ifndef __DestinationList_FWD_DEFINED__
#define __DestinationList_FWD_DEFINED__
#ifdef __cplusplus
typedef class DestinationList DestinationList;
#else
typedef struct DestinationList DestinationList;
#endif /* defined __cplusplus */
#endif /* defined __DestinationList_FWD_DEFINED__ */

#ifndef __EnumerableObjectCollection_FWD_DEFINED__
#define __EnumerableObjectCollection_FWD_DEFINED__
#ifdef __cplusplus
typedef class EnumerableObjectCollection EnumerableObjectCollection;
#else
typedef struct EnumerableObjectCollection EnumerableObjectCollection;
#endif /* defined __cplusplus */
#endif /* defined __EnumerableObjectCollection_FWD_DEFINED__ */

#ifndef __QueryCancelAutoPlay_FWD_DEFINED__
#define __QueryCancelAutoPlay_FWD_DEFINED__
#ifdef __cplusplus
typedef class QueryCancelAutoPlay QueryCancelAutoPlay;
#else
typedef struct QueryCancelAutoPlay QueryCancelAutoPlay;
#endif /* defined __cplusplus */
#endif /* defined __QueryCancelAutoPlay_FWD_DEFINED__ */

#ifndef __ApplicationActivationManager_FWD_DEFINED__
#define __ApplicationActivationManager_FWD_DEFINED__
#ifdef __cplusplus
typedef class ApplicationActivationManager ApplicationActivationManager;
#else
typedef struct ApplicationActivationManager ApplicationActivationManager;
#endif /* defined __cplusplus */
#endif /* defined __ApplicationActivationManager_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>
#include <objectarray.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)
MIDL_INTERFACE("000214ea-0000-0000-c000-000000000046")
IPersistFolder : public IPersist
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        LPCITEMIDLIST pidl) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPersistFolder, 0x000214ea, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPersistFolder_QueryInterface(IPersistFolder* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPersistFolder_AddRef(IPersistFolder* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPersistFolder_Release(IPersistFolder* This) {
    return This->lpVtbl->Release(This);
}
/*** IPersist methods ***/
static FORCEINLINE HRESULT IPersistFolder_GetClassID(IPersistFolder* This,CLSID *pClassID) {
    return This->lpVtbl->GetClassID(This,pClassID);
}
/*** IPersistFolder methods ***/
static FORCEINLINE HRESULT IPersistFolder_Initialize(IPersistFolder* This,LPCITEMIDLIST pidl) {
    return This->lpVtbl->Initialize(This,pidl);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("1ac3d9f0-175c-11d1-95be-00609797ea4f")
IPersistFolder2 : public IPersistFolder
{
    virtual HRESULT STDMETHODCALLTYPE GetCurFolder(
        LPITEMIDLIST *ppidl) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPersistFolder2, 0x1ac3d9f0, 0x175c, 0x11d1, 0x95,0xbe, 0x00,0x60,0x97,0x97,0xea,0x4f)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPersistFolder2_QueryInterface(IPersistFolder2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPersistFolder2_AddRef(IPersistFolder2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPersistFolder2_Release(IPersistFolder2* This) {
    return This->lpVtbl->Release(This);
}
/*** IPersist methods ***/
static FORCEINLINE HRESULT IPersistFolder2_GetClassID(IPersistFolder2* This,CLSID *pClassID) {
    return This->lpVtbl->GetClassID(This,pClassID);
}
/*** IPersistFolder methods ***/
static FORCEINLINE HRESULT IPersistFolder2_Initialize(IPersistFolder2* This,LPCITEMIDLIST pidl) {
    return This->lpVtbl->Initialize(This,pidl);
}
/*** IPersistFolder2 methods ***/
static FORCEINLINE HRESULT IPersistFolder2_GetCurFolder(IPersistFolder2* This,LPITEMIDLIST *ppidl) {
    return This->lpVtbl->GetCurFolder(This,ppidl);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("1079acfc-29bd-11d3-8e0d-00c04f6837d5")
IPersistIDList : public IPersist
{
    virtual HRESULT STDMETHODCALLTYPE SetIDList(
        LPCITEMIDLIST pidl) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPersistIDList, 0x1079acfc, 0x29bd, 0x11d3, 0x8e,0x0d, 0x00,0xc0,0x4f,0x68,0x37,0xd5)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPersistIDList_QueryInterface(IPersistIDList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPersistIDList_AddRef(IPersistIDList* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPersistIDList_Release(IPersistIDList* This) {
    return This->lpVtbl->Release(This);
}
/*** IPersist methods ***/
static FORCEINLINE HRESULT IPersistIDList_GetClassID(IPersistIDList* This,CLSID *pClassID) {
    return This->lpVtbl->GetClassID(This,pClassID);
}
/*** IPersistIDList methods ***/
static FORCEINLINE HRESULT IPersistIDList_SetIDList(IPersistIDList* This,LPCITEMIDLIST pidl) {
    return This->lpVtbl->SetIDList(This,pidl);
}
static FORCEINLINE HRESULT IPersistIDList_GetIDList(IPersistIDList* This,LPITEMIDLIST *ppidl) {
    return This->lpVtbl->GetIDList(This,ppidl);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("000214f2-0000-0000-c000-000000000046")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumIDList, 0x000214f2, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IEnumIDList_QueryInterface(IEnumIDList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IEnumIDList_AddRef(IEnumIDList* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IEnumIDList_Release(IEnumIDList* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumIDList methods ***/
static FORCEINLINE HRESULT IEnumIDList_Next(IEnumIDList* This,ULONG celt,LPITEMIDLIST *rgelt,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
}
static FORCEINLINE HRESULT IEnumIDList_Skip(IEnumIDList* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT IEnumIDList_Reset(IEnumIDList* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT IEnumIDList_Clone(IEnumIDList* This,IEnumIDList **ppenum) {
    return This->lpVtbl->Clone(This,ppenum);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("000214e9-0000-0000-c000-000000000046")
IShellPropSheetExt : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddPages(
        LPFNSVADDPROPSHEETPAGE pfnAddPage,
        LPARAM lParam) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellPropSheetExt, 0x000214e9, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellPropSheetExt_QueryInterface(IShellPropSheetExt* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellPropSheetExt_AddRef(IShellPropSheetExt* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellPropSheetExt_Release(IShellPropSheetExt* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellPropSheetExt methods ***/
static FORCEINLINE HRESULT IShellPropSheetExt_AddPages(IShellPropSheetExt* This,LPFNSVADDPROPSHEETPAGE pfnAddPage,LPARAM lParam) {
    return This->lpVtbl->AddPages(This,pfnAddPage,lParam);
}
static FORCEINLINE HRESULT IShellPropSheetExt_ReplacePage(IShellPropSheetExt* This,EXPPS uPageID,LPFNSVADDPROPSHEETPAGE pfnReplaceWith,LPARAM lParam) {
    return This->lpVtbl->ReplacePage(This,uPageID,pfnReplaceWith,lParam);
}
#endif
#endif

#endif


#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_CHECKING_FOR_CHILDREN = 0x10,
    SHCONTF_FOLDERS = 0x20,
    SHCONTF_NONFOLDERS = 0x40,
    SHCONTF_INCLUDEHIDDEN = 0x80,
    SHCONTF_INIT_ON_FIRST_NEXT = 0x100,
    SHCONTF_NETPRINTERSRCH = 0x200,
    SHCONTF_SHAREABLE = 0x400,
    SHCONTF_STORAGE = 0x800,
    SHCONTF_NAVIGATION_ENUM = 0x1000,
    SHCONTF_FASTITEMS = 0x2000,
    SHCONTF_FLATLIST = 0x4000,
    SHCONTF_ENABLE_ASYNC = 0x8000,
    SHCONTF_INCLUDESUPERHIDDEN = 0x10000
};
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_SYSTEM            0x00001000L
#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_CANMONIKER        0x00400000L
#define SFGAO_HASSTORAGE        0x00400000L
#define SFGAO_STREAM            0x00400000L
#define SFGAO_STORAGEANCESTOR   0x00800000L
#define SFGAO_STORAGEGAPMASK    0x70C50008L
#define SFGAO_PKEYSFGAOMASK     0x81044000L
typedef ULONG SFGAOF;
DEFINE_GUID(IID_IShellFolder, 0x000214e6, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("000214e6-0000-0000-c000-000000000046")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellFolder, 0x000214e6, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellFolder_QueryInterface(IShellFolder* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellFolder_AddRef(IShellFolder* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellFolder_Release(IShellFolder* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellFolder methods ***/
static FORCEINLINE HRESULT IShellFolder_ParseDisplayName(IShellFolder* This,HWND hwndOwner,LPBC pbcReserved,LPOLESTR lpszDisplayName,ULONG *pchEaten,LPITEMIDLIST *ppidl,ULONG *pdwAttributes) {
    return This->lpVtbl->ParseDisplayName(This,hwndOwner,pbcReserved,lpszDisplayName,pchEaten,ppidl,pdwAttributes);
}
static FORCEINLINE HRESULT IShellFolder_EnumObjects(IShellFolder* This,HWND hwndOwner,SHCONTF grfFlags,IEnumIDList **ppenumIDList) {
    return This->lpVtbl->EnumObjects(This,hwndOwner,grfFlags,ppenumIDList);
}
static FORCEINLINE HRESULT IShellFolder_BindToObject(IShellFolder* This,LPCITEMIDLIST pidl,LPBC pbcReserved,REFIID riid,void **ppvOut) {
    return This->lpVtbl->BindToObject(This,pidl,pbcReserved,riid,ppvOut);
}
static FORCEINLINE HRESULT IShellFolder_BindToStorage(IShellFolder* This,LPCITEMIDLIST pidl,LPBC pbcReserved,REFIID riid,void **ppvObj) {
    return This->lpVtbl->BindToStorage(This,pidl,pbcReserved,riid,ppvObj);
}
static FORCEINLINE HRESULT IShellFolder_CompareIDs(IShellFolder* This,LPARAM lParam,LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2) {
    return This->lpVtbl->CompareIDs(This,lParam,pidl1,pidl2);
}
static FORCEINLINE HRESULT IShellFolder_CreateViewObject(IShellFolder* This,HWND hwndOwner,REFIID riid,void **ppvOut) {
    return This->lpVtbl->CreateViewObject(This,hwndOwner,riid,ppvOut);
}
static FORCEINLINE HRESULT IShellFolder_GetAttributesOf(IShellFolder* This,UINT cidl,LPCITEMIDLIST *apidl,SFGAOF *rgfInOut) {
    return This->lpVtbl->GetAttributesOf(This,cidl,apidl,rgfInOut);
}
static FORCEINLINE HRESULT IShellFolder_GetUIObjectOf(IShellFolder* This,HWND hwndOwner,UINT cidl,LPCITEMIDLIST *apidl,REFIID riid,UINT *prgfInOut,void **ppvOut) {
    return This->lpVtbl->GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,prgfInOut,ppvOut);
}
static FORCEINLINE HRESULT IShellFolder_GetDisplayNameOf(IShellFolder* This,LPCITEMIDLIST pidl,SHGDNF uFlags,STRRET *lpName) {
    return This->lpVtbl->GetDisplayNameOf(This,pidl,uFlags,lpName);
}
static FORCEINLINE HRESULT IShellFolder_SetNameOf(IShellFolder* This,HWND hwnd,LPCITEMIDLIST pidl,LPCOLESTR lpszName,SHGDNF uFlags,LPITEMIDLIST *ppidlOut) {
    return This->lpVtbl->SetNameOf(This,hwnd,pidl,lpszName,uFlags,ppidlOut);
}
#endif
#endif

#endif


#endif  /* __IShellFolder_INTERFACE_DEFINED__ */

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

typedef IEnumExtraSearch *LPENUMEXTRASEARCH;
typedef struct __WIDL_shobjidl_generated_name_00000022 {
    GUID guidSearch;
    WCHAR wszFriendlyName[80];
    WCHAR wszUrl[2084];
} EXTRASEARCH;
typedef struct __WIDL_shobjidl_generated_name_00000022 *LPEXTRASEARCH;
DEFINE_GUID(IID_IEnumExtraSearch, 0x0e700be1, 0x9db6, 0x11d1, 0xa1,0xce, 0x00,0xc0,0x4f,0xd7,0x5d,0x13);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0e700be1-9db6-11d1-a1ce-00c04fd75d13")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumExtraSearch, 0x0e700be1, 0x9db6, 0x11d1, 0xa1,0xce, 0x00,0xc0,0x4f,0xd7,0x5d,0x13)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IEnumExtraSearch_QueryInterface(IEnumExtraSearch* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IEnumExtraSearch_AddRef(IEnumExtraSearch* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IEnumExtraSearch_Release(IEnumExtraSearch* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumExtraSearch methods ***/
static FORCEINLINE HRESULT IEnumExtraSearch_Next(IEnumExtraSearch* This,ULONG celt,EXTRASEARCH *rgelt,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
}
static FORCEINLINE HRESULT IEnumExtraSearch_Skip(IEnumExtraSearch* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT IEnumExtraSearch_Reset(IEnumExtraSearch* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT IEnumExtraSearch_Clone(IEnumExtraSearch* This,IEnumExtraSearch **ppenum) {
    return This->lpVtbl->Clone(This,ppenum);
}
#endif
#endif

#endif


#endif  /* __IEnumExtraSearch_INTERFACE_DEFINED__ */

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

typedef struct __WIDL_shobjidl_generated_name_00000023 {
    GUID fmtid;
    DWORD pid;
} SHCOLUMNID;
typedef struct __WIDL_shobjidl_generated_name_00000023 *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)
MIDL_INTERFACE("93f2f68c-1d1b-11d3-a30e-00c04f79abd1")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellFolder2, 0x93f2f68c, 0x1d1b, 0x11d3, 0xa3,0x0e, 0x00,0xc0,0x4f,0x79,0xab,0xd1)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellFolder2_QueryInterface(IShellFolder2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellFolder2_AddRef(IShellFolder2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellFolder2_Release(IShellFolder2* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellFolder methods ***/
static FORCEINLINE HRESULT IShellFolder2_ParseDisplayName(IShellFolder2* This,HWND hwndOwner,LPBC pbcReserved,LPOLESTR lpszDisplayName,ULONG *pchEaten,LPITEMIDLIST *ppidl,ULONG *pdwAttributes) {
    return This->lpVtbl->ParseDisplayName(This,hwndOwner,pbcReserved,lpszDisplayName,pchEaten,ppidl,pdwAttributes);
}
static FORCEINLINE HRESULT IShellFolder2_EnumObjects(IShellFolder2* This,HWND hwndOwner,SHCONTF grfFlags,IEnumIDList **ppenumIDList) {
    return This->lpVtbl->EnumObjects(This,hwndOwner,grfFlags,ppenumIDList);
}
static FORCEINLINE HRESULT IShellFolder2_BindToObject(IShellFolder2* This,LPCITEMIDLIST pidl,LPBC pbcReserved,REFIID riid,void **ppvOut) {
    return This->lpVtbl->BindToObject(This,pidl,pbcReserved,riid,ppvOut);
}
static FORCEINLINE HRESULT IShellFolder2_BindToStorage(IShellFolder2* This,LPCITEMIDLIST pidl,LPBC pbcReserved,REFIID riid,void **ppvObj) {
    return This->lpVtbl->BindToStorage(This,pidl,pbcReserved,riid,ppvObj);
}
static FORCEINLINE HRESULT IShellFolder2_CompareIDs(IShellFolder2* This,LPARAM lParam,LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2) {
    return This->lpVtbl->CompareIDs(This,lParam,pidl1,pidl2);
}
static FORCEINLINE HRESULT IShellFolder2_CreateViewObject(IShellFolder2* This,HWND hwndOwner,REFIID riid,void **ppvOut) {
    return This->lpVtbl->CreateViewObject(This,hwndOwner,riid,ppvOut);
}
static FORCEINLINE HRESULT IShellFolder2_GetAttributesOf(IShellFolder2* This,UINT cidl,LPCITEMIDLIST *apidl,SFGAOF *rgfInOut) {
    return This->lpVtbl->GetAttributesOf(This,cidl,apidl,rgfInOut);
}
static FORCEINLINE HRESULT IShellFolder2_GetUIObjectOf(IShellFolder2* This,HWND hwndOwner,UINT cidl,LPCITEMIDLIST *apidl,REFIID riid,UINT *prgfInOut,void **ppvOut) {
    return This->lpVtbl->GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,prgfInOut,ppvOut);
}
static FORCEINLINE HRESULT IShellFolder2_GetDisplayNameOf(IShellFolder2* This,LPCITEMIDLIST pidl,SHGDNF uFlags,STRRET *lpName) {
    return This->lpVtbl->GetDisplayNameOf(This,pidl,uFlags,lpName);
}
static FORCEINLINE HRESULT IShellFolder2_SetNameOf(IShellFolder2* This,HWND hwnd,LPCITEMIDLIST pidl,LPCOLESTR lpszName,SHGDNF uFlags,LPITEMIDLIST *ppidlOut) {
    return This->lpVtbl->SetNameOf(This,hwnd,pidl,lpszName,uFlags,ppidlOut);
}
/*** IShellFolder2 methods ***/
static FORCEINLINE HRESULT IShellFolder2_GetDefaultSearchGUID(IShellFolder2* This,GUID *lpguid) {
    return This->lpVtbl->GetDefaultSearchGUID(This,lpguid);
}
static FORCEINLINE HRESULT IShellFolder2_EnumSearches(IShellFolder2* This,IEnumExtraSearch **ppenum) {
    return This->lpVtbl->EnumSearches(This,ppenum);
}
static FORCEINLINE HRESULT IShellFolder2_GetDefaultColumn(IShellFolder2* This,DWORD dwReserved,ULONG *pSort,ULONG *pDisplay) {
    return This->lpVtbl->GetDefaultColumn(This,dwReserved,pSort,pDisplay);
}
static FORCEINLINE HRESULT IShellFolder2_GetDefaultColumnState(IShellFolder2* This,UINT iColumn,SHCOLSTATEF *pcsFlags) {
    return This->lpVtbl->GetDefaultColumnState(This,iColumn,pcsFlags);
}
static FORCEINLINE HRESULT IShellFolder2_GetDetailsEx(IShellFolder2* This,LPCITEMIDLIST pidl,const SHCOLUMNID *pscid,VARIANT *pv) {
    return This->lpVtbl->GetDetailsEx(This,pidl,pscid,pv);
}
static FORCEINLINE HRESULT IShellFolder2_GetDetailsOf(IShellFolder2* This,LPCITEMIDLIST pidl,UINT iColumn,SHELLDETAILS *psd) {
    return This->lpVtbl->GetDetailsOf(This,pidl,iColumn,psd);
}
static FORCEINLINE HRESULT IShellFolder2_MapColumnToSCID(IShellFolder2* This,UINT iColumn,SHCOLUMNID *pscid) {
    return This->lpVtbl->MapColumnToSCID(This,iColumn,pscid);
}
#endif
#endif

#endif


#endif  /* __IShellFolder2_INTERFACE_DEFINED__ */

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

typedef enum __WIDL_shobjidl_generated_name_00000024 {
    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_PARENTRELATIVEFORUI = 0x80094001
} 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)
MIDL_INTERFACE("43826d1e-e718-42ee-bc55-a1e261c37bfe")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellItem, 0x43826d1e, 0xe718, 0x42ee, 0xbc,0x55, 0xa1,0xe2,0x61,0xc3,0x7b,0xfe)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellItem_QueryInterface(IShellItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellItem_AddRef(IShellItem* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellItem_Release(IShellItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellItem methods ***/
static FORCEINLINE HRESULT IShellItem_BindToHandler(IShellItem* This,IBindCtx *pbc,REFGUID rbhid,REFIID riid,void **ppvOut) {
    return This->lpVtbl->BindToHandler(This,pbc,rbhid,riid,ppvOut);
}
static FORCEINLINE HRESULT IShellItem_GetParent(IShellItem* This,IShellItem **ppsi) {
    return This->lpVtbl->GetParent(This,ppsi);
}
static FORCEINLINE HRESULT IShellItem_GetDisplayName(IShellItem* This,SIGDN sigdnName,LPWSTR *ppszName) {
    return This->lpVtbl->GetDisplayName(This,sigdnName,ppszName);
}
static FORCEINLINE HRESULT IShellItem_GetAttributes(IShellItem* This,SFGAOF sfgaoMask,SFGAOF *psfgaoAttribs) {
    return This->lpVtbl->GetAttributes(This,sfgaoMask,psfgaoAttribs);
}
static FORCEINLINE HRESULT IShellItem_Compare(IShellItem* This,IShellItem *psi,SICHINTF hint,int *piOrder) {
    return This->lpVtbl->Compare(This,psi,hint,piOrder);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("7e9fb0d3-919f-4307-ab2e-9b1860310c93")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellItem2, 0x7e9fb0d3, 0x919f, 0x4307, 0xab,0x2e, 0x9b,0x18,0x60,0x31,0x0c,0x93)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellItem2_QueryInterface(IShellItem2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellItem2_AddRef(IShellItem2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellItem2_Release(IShellItem2* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellItem methods ***/
static FORCEINLINE HRESULT IShellItem2_BindToHandler(IShellItem2* This,IBindCtx *pbc,REFGUID rbhid,REFIID riid,void **ppvOut) {
    return This->lpVtbl->BindToHandler(This,pbc,rbhid,riid,ppvOut);
}
static FORCEINLINE HRESULT IShellItem2_GetParent(IShellItem2* This,IShellItem **ppsi) {
    return This->lpVtbl->GetParent(This,ppsi);
}
static FORCEINLINE HRESULT IShellItem2_GetDisplayName(IShellItem2* This,SIGDN sigdnName,LPWSTR *ppszName) {
    return This->lpVtbl->GetDisplayName(This,sigdnName,ppszName);
}
static FORCEINLINE HRESULT IShellItem2_GetAttributes(IShellItem2* This,SFGAOF sfgaoMask,SFGAOF *psfgaoAttribs) {
    return This->lpVtbl->GetAttributes(This,sfgaoMask,psfgaoAttribs);
}
static FORCEINLINE HRESULT IShellItem2_Compare(IShellItem2* This,IShellItem *psi,SICHINTF hint,int *piOrder) {
    return This->lpVtbl->Compare(This,psi,hint,piOrder);
}
/*** IShellItem2 methods ***/
static FORCEINLINE HRESULT IShellItem2_GetPropertyStore(IShellItem2* This,GETPROPERTYSTOREFLAGS flags,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyStore(This,flags,riid,ppv);
}
static FORCEINLINE HRESULT IShellItem2_GetPropertyStoreWithCreateObject(IShellItem2* This,GETPROPERTYSTOREFLAGS flags,IUnknown *punkCreateObject,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyStoreWithCreateObject(This,flags,punkCreateObject,riid,ppv);
}
static FORCEINLINE HRESULT IShellItem2_GetPropertyStoreForKeys(IShellItem2* This,const PROPERTYKEY *rgKeys,UINT cKeys,GETPROPERTYSTOREFLAGS flags,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv);
}
static FORCEINLINE HRESULT IShellItem2_GetPropertyDescriptionList(IShellItem2* This,REFPROPERTYKEY keyType,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyDescriptionList(This,keyType,riid,ppv);
}
static FORCEINLINE HRESULT IShellItem2_Update(IShellItem2* This,IBindCtx *pbc) {
    return This->lpVtbl->Update(This,pbc);
}
static FORCEINLINE HRESULT IShellItem2_GetProperty(IShellItem2* This,REFPROPERTYKEY key,PROPVARIANT *ppropvar) {
    return This->lpVtbl->GetProperty(This,key,ppropvar);
}
static FORCEINLINE HRESULT IShellItem2_GetCLSID(IShellItem2* This,REFPROPERTYKEY key,CLSID *pclsid) {
    return This->lpVtbl->GetCLSID(This,key,pclsid);
}
static FORCEINLINE HRESULT IShellItem2_GetFileTime(IShellItem2* This,REFPROPERTYKEY key,FILETIME *pft) {
    return This->lpVtbl->GetFileTime(This,key,pft);
}
static FORCEINLINE HRESULT IShellItem2_GetInt32(IShellItem2* This,REFPROPERTYKEY key,int *pi) {
    return This->lpVtbl->GetInt32(This,key,pi);
}
static FORCEINLINE HRESULT IShellItem2_GetString(IShellItem2* This,REFPROPERTYKEY key,LPWSTR *ppsz) {
    return This->lpVtbl->GetString(This,key,ppsz);
}
static FORCEINLINE HRESULT IShellItem2_GetUInt32(IShellItem2* This,REFPROPERTYKEY key,ULONG *pui) {
    return This->lpVtbl->GetUInt32(This,key,pui);
}
static FORCEINLINE HRESULT IShellItem2_GetUInt64(IShellItem2* This,REFPROPERTYKEY key,ULONGLONG *pull) {
    return This->lpVtbl->GetUInt64(This,key,pull);
}
static FORCEINLINE HRESULT IShellItem2_GetBool(IShellItem2* This,REFPROPERTYKEY key,BOOL *pf) {
    return This->lpVtbl->GetBool(This,key,pf);
}
#endif
#endif

#endif


#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_FORCEWINDOW = 0x10000,
    NWMF_FORCETAB = 0x20000,
    NWMF_SUGGESTWINDOW = 0x40000,
    NWMF_SUGGESTTAB = 0x80000,
    NWMF_INACTIVETAB = 0x100000
} 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)
MIDL_INTERFACE("d2bc4c84-3f72-4a52-a604-7bcbf3982cbb")
INewWindowManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE EvaluateNewWindow(
        LPCWSTR pszUrl,
        LPCWSTR pszName,
        LPCWSTR pszUrlContext,
        LPCWSTR pszFeatures,
        BOOL fReplace,
        DWORD dwFlags,
        DWORD dwUserActionTime) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INewWindowManager, 0xd2bc4c84, 0x3f72, 0x4a52, 0xa6,0x04, 0x7b,0xcb,0xf3,0x98,0x2c,0xbb)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INewWindowManager_QueryInterface(INewWindowManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INewWindowManager_AddRef(INewWindowManager* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INewWindowManager_Release(INewWindowManager* This) {
    return This->lpVtbl->Release(This);
}
/*** INewWindowManager methods ***/
static FORCEINLINE HRESULT INewWindowManager_EvaluateNewWindow(INewWindowManager* This,LPCWSTR pszUrl,LPCWSTR pszName,LPCWSTR pszUrlContext,LPCWSTR pszFeatures,BOOL fReplace,DWORD dwFlags,DWORD dwUserActionTime) {
    return This->lpVtbl->EvaluateNewWindow(This,pszUrl,pszName,pszUrlContext,pszFeatures,fReplace,dwFlags,dwUserActionTime);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("70629033-e363-4a28-a567-0db78006e6d7")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumShellItems, 0x70629033, 0xe363, 0x4a28, 0xa5,0x67, 0x0d,0xb7,0x80,0x06,0xe6,0xd7)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IEnumShellItems_QueryInterface(IEnumShellItems* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IEnumShellItems_AddRef(IEnumShellItems* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IEnumShellItems_Release(IEnumShellItems* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumShellItems methods ***/
static FORCEINLINE HRESULT IEnumShellItems_Next(IEnumShellItems* This,ULONG celt,IShellItem **rgelt,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
}
static FORCEINLINE HRESULT IEnumShellItems_Skip(IEnumShellItems* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT IEnumShellItems_Reset(IEnumShellItems* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT IEnumShellItems_Clone(IEnumShellItems* This,IEnumShellItems **ppenum) {
    return This->lpVtbl->Clone(This,ppenum);
}
#endif
#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 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)
MIDL_INTERFACE("b63ea76d-1f85-456f-a19c-48159efa858b")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellItemArray, 0xb63ea76d, 0x1f85, 0x456f, 0xa1,0x9c, 0x48,0x15,0x9e,0xfa,0x85,0x8b)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellItemArray_QueryInterface(IShellItemArray* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellItemArray_AddRef(IShellItemArray* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellItemArray_Release(IShellItemArray* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellItemArray methods ***/
static FORCEINLINE HRESULT IShellItemArray_BindToHandler(IShellItemArray* This,IBindCtx *pbc,REFGUID bhid,REFIID riid,void **ppvOut) {
    return This->lpVtbl->BindToHandler(This,pbc,bhid,riid,ppvOut);
}
static FORCEINLINE HRESULT IShellItemArray_GetPropertyStore(IShellItemArray* This,GETPROPERTYSTOREFLAGS flags,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyStore(This,flags,riid,ppv);
}
static FORCEINLINE HRESULT IShellItemArray_GetPropertyDescriptionList(IShellItemArray* This,REFPROPERTYKEY keyType,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyDescriptionList(This,keyType,riid,ppv);
}
static FORCEINLINE HRESULT IShellItemArray_GetAttributes(IShellItemArray* This,SIATTRIBFLAGS AttribFlags,SFGAOF sfgaoMask,SFGAOF *psfgaoAttribs) {
    return This->lpVtbl->GetAttributes(This,AttribFlags,sfgaoMask,psfgaoAttribs);
}
static FORCEINLINE HRESULT IShellItemArray_GetCount(IShellItemArray* This,DWORD *pdwNumItems) {
    return This->lpVtbl->GetCount(This,pdwNumItems);
}
static FORCEINLINE HRESULT IShellItemArray_GetItemAt(IShellItemArray* This,DWORD dwIndex,IShellItem **ppsi) {
    return This->lpVtbl->GetItemAt(This,dwIndex,ppsi);
}
static FORCEINLINE HRESULT IShellItemArray_EnumItems(IShellItemArray* This,IEnumShellItems **ppenumShellItems) {
    return This->lpVtbl->EnumItems(This,ppenumShellItems);
}
#endif
#endif

#endif


#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 SHCreateItemFromRelativeName(IShellItem *parent, PCWSTR name, IBindCtx *pbc, 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 SHCreateShellItemArrayFromIDLists(UINT cidl, PCIDLIST_ABSOLUTE_ARRAY pidl_array, IShellItemArray **psia);
HRESULT WINAPI SHCreateItemInKnownFolder(REFKNOWNFOLDERID rfid, DWORD flags, PCWSTR filename, 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)
MIDL_INTERFACE("2659b475-eeb8-48b7-8f07-b378810f48cf")
IShellItemFilter : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE IncludeItem(
        IShellItem *psi) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellItemFilter, 0x2659b475, 0xeeb8, 0x48b7, 0x8f,0x07, 0xb3,0x78,0x81,0x0f,0x48,0xcf)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellItemFilter_QueryInterface(IShellItemFilter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellItemFilter_AddRef(IShellItemFilter* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellItemFilter_Release(IShellItemFilter* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellItemFilter methods ***/
static FORCEINLINE HRESULT IShellItemFilter_IncludeItem(IShellItemFilter* This,IShellItem *psi) {
    return This->lpVtbl->IncludeItem(This,psi);
}
static FORCEINLINE HRESULT IShellItemFilter_GetEnumFlagsForItem(IShellItemFilter* This,IShellItem *psi,SHCONTF *pgrfFlags) {
    return This->lpVtbl->GetEnumFlagsForItem(This,psi,pgrfFlags);
}
#endif
#endif

#endif


#endif  /* __IShellItemFilter_INTERFACE_DEFINED__ */

typedef char *LPVIEWSETTINGS;
typedef enum FOLDERFLAGS {
    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 FOLDERVIEWMODE {
    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_00000025 {
    UINT ViewMode;
    UINT fFlags;
} FOLDERSETTINGS;
typedef struct __WIDL_shobjidl_generated_name_00000025 *PFOLDERSETTINGS;
typedef struct __WIDL_shobjidl_generated_name_00000025 *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)
MIDL_INTERFACE("000214e5-0000-0000-c000-000000000046")
IShellIcon : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetIconOf(
        PCUITEMID_CHILD pidl,
        UINT flags,
        int *pIconIndex) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellIcon, 0x000214e5, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellIcon_QueryInterface(IShellIcon* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellIcon_AddRef(IShellIcon* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellIcon_Release(IShellIcon* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellIcon methods ***/
static FORCEINLINE HRESULT IShellIcon_GetIconOf(IShellIcon* This,PCUITEMID_CHILD pidl,UINT flags,int *pIconIndex) {
    return This->lpVtbl->GetIconOf(This,pidl,flags,pIconIndex);
}
#endif
#endif

#endif


#endif  /* __IShellIcon_INTERFACE_DEFINED__ */

#ifndef __IShellBrowser_FWD_DEFINED__
#define __IShellBrowser_FWD_DEFINED__
typedef interface IShellBrowser IShellBrowser;
#ifdef __cplusplus
interface IShellBrowser;
#endif /* __cplusplus */
#endif

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

typedef IShellView *LPSHELLVIEW;
typedef enum _SVSIF {
    SVSI_DESELECT = 0x0,
    SVSI_SELECT = 0x1,
    SVSI_EDIT = 0x3,
    SVSI_DESELECTOTHERS = 0x4,
    SVSI_ENSUREVISIBLE = 0x8,
    SVSI_FOCUSED = 0x10,
    SVSI_TRANSLATEPT = 0x20,
    SVSI_SELECTIONMARK = 0x40,
    SVSI_POSITIONITEM = 0x80,
    SVSI_CHECK = 0x100,
    SVSI_CHECK2 = 0x200,
    SVSI_KEYBOARDSELECT = 0x401,
    SVSI_NOTAKEFOCUS = 0x40000000
} _SVSIF;
#define SVSI_NOSTATECHANGE  0x80000000
typedef UINT SVSIF;
typedef enum _SVGIO {
    SVGIO_BACKGROUND = 0x0,
    SVGIO_SELECTION = 0x1,
    SVGIO_ALLVIEW = 0x2,
    SVGIO_CHECKED = 0x3,
    SVGIO_TYPE_MASK = 0xf,
    SVGIO_FLAG_VIEWORDER = 0x80000000
} _SVGIO;
typedef INT SVGIO;
typedef enum SVUIA_STATUS {
    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)
MIDL_INTERFACE("000214e3-0000-0000-c000-000000000046")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellView, 0x000214e3, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellView_QueryInterface(IShellView* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellView_AddRef(IShellView* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellView_Release(IShellView* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static FORCEINLINE HRESULT IShellView_GetWindow(IShellView* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static FORCEINLINE HRESULT IShellView_ContextSensitiveHelp(IShellView* This,BOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IShellView methods ***/
static FORCEINLINE HRESULT IShellView_TranslateAccelerator(IShellView* This,MSG *pmsg) {
    return This->lpVtbl->TranslateAccelerator(This,pmsg);
}
static FORCEINLINE HRESULT IShellView_EnableModeless(IShellView* This,BOOL fEnable) {
    return This->lpVtbl->EnableModeless(This,fEnable);
}
static FORCEINLINE HRESULT IShellView_UIActivate(IShellView* This,UINT uState) {
    return This->lpVtbl->UIActivate(This,uState);
}
static FORCEINLINE HRESULT IShellView_Refresh(IShellView* This) {
    return This->lpVtbl->Refresh(This);
}
static FORCEINLINE HRESULT IShellView_CreateViewWindow(IShellView* This,IShellView *psvPrevious,LPCFOLDERSETTINGS lpfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd) {
    return This->lpVtbl->CreateViewWindow(This,psvPrevious,lpfs,psb,prcView,phWnd);
}
static FORCEINLINE HRESULT IShellView_DestroyViewWindow(IShellView* This) {
    return This->lpVtbl->DestroyViewWindow(This);
}
static FORCEINLINE HRESULT IShellView_GetCurrentInfo(IShellView* This,LPFOLDERSETTINGS lpfs) {
    return This->lpVtbl->GetCurrentInfo(This,lpfs);
}
static FORCEINLINE HRESULT IShellView_AddPropertySheetPages(IShellView* This,DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam) {
    return This->lpVtbl->AddPropertySheetPages(This,dwReserved,pfn,lparam);
}
static FORCEINLINE HRESULT IShellView_SaveViewState(IShellView* This) {
    return This->lpVtbl->SaveViewState(This);
}
static FORCEINLINE HRESULT IShellView_SelectItem(IShellView* This,LPCITEMIDLIST pidlItem,SVSIF uFlags) {
    return This->lpVtbl->SelectItem(This,pidlItem,uFlags);
}
static FORCEINLINE HRESULT IShellView_GetItemObject(IShellView* This,UINT uItem,REFIID riid,void **ppv) {
    return This->lpVtbl->GetItemObject(This,uItem,riid,ppv);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("88e39e80-3578-11cf-ae69-08002b2e1262")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellView2, 0x88e39e80, 0x3578, 0x11cf, 0xae,0x69, 0x08,0x00,0x2b,0x2e,0x12,0x62)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellView2_QueryInterface(IShellView2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellView2_AddRef(IShellView2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellView2_Release(IShellView2* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static FORCEINLINE HRESULT IShellView2_GetWindow(IShellView2* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static FORCEINLINE HRESULT IShellView2_ContextSensitiveHelp(IShellView2* This,BOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IShellView methods ***/
static FORCEINLINE HRESULT IShellView2_TranslateAccelerator(IShellView2* This,MSG *pmsg) {
    return This->lpVtbl->TranslateAccelerator(This,pmsg);
}
static FORCEINLINE HRESULT IShellView2_EnableModeless(IShellView2* This,BOOL fEnable) {
    return This->lpVtbl->EnableModeless(This,fEnable);
}
static FORCEINLINE HRESULT IShellView2_UIActivate(IShellView2* This,UINT uState) {
    return This->lpVtbl->UIActivate(This,uState);
}
static FORCEINLINE HRESULT IShellView2_Refresh(IShellView2* This) {
    return This->lpVtbl->Refresh(This);
}
static FORCEINLINE HRESULT IShellView2_CreateViewWindow(IShellView2* This,IShellView *psvPrevious,LPCFOLDERSETTINGS lpfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd) {
    return This->lpVtbl->CreateViewWindow(This,psvPrevious,lpfs,psb,prcView,phWnd);
}
static FORCEINLINE HRESULT IShellView2_DestroyViewWindow(IShellView2* This) {
    return This->lpVtbl->DestroyViewWindow(This);
}
static FORCEINLINE HRESULT IShellView2_GetCurrentInfo(IShellView2* This,LPFOLDERSETTINGS lpfs) {
    return This->lpVtbl->GetCurrentInfo(This,lpfs);
}
static FORCEINLINE HRESULT IShellView2_AddPropertySheetPages(IShellView2* This,DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam) {
    return This->lpVtbl->AddPropertySheetPages(This,dwReserved,pfn,lparam);
}
static FORCEINLINE HRESULT IShellView2_SaveViewState(IShellView2* This) {
    return This->lpVtbl->SaveViewState(This);
}
static FORCEINLINE HRESULT IShellView2_SelectItem(IShellView2* This,LPCITEMIDLIST pidlItem,SVSIF uFlags) {
    return This->lpVtbl->SelectItem(This,pidlItem,uFlags);
}
static FORCEINLINE HRESULT IShellView2_GetItemObject(IShellView2* This,UINT uItem,REFIID riid,void **ppv) {
    return This->lpVtbl->GetItemObject(This,uItem,riid,ppv);
}
/*** IShellView2 methods ***/
static FORCEINLINE HRESULT IShellView2_GetView(IShellView2* This,SHELLVIEWID *view_guid,ULONG view_type) {
    return This->lpVtbl->GetView(This,view_guid,view_type);
}
static FORCEINLINE HRESULT IShellView2_CreateViewWindow2(IShellView2* This,LPSV2CVW2_PARAMS view_params) {
    return This->lpVtbl->CreateViewWindow2(This,view_params);
}
static FORCEINLINE HRESULT IShellView2_HandleRename(IShellView2* This,LPCITEMIDLIST new_pidl) {
    return This->lpVtbl->HandleRename(This,new_pidl);
}
static FORCEINLINE HRESULT IShellView2_SelectAndPositionItem(IShellView2* This,LPCITEMIDLIST item,UINT flags,POINT *point) {
    return This->lpVtbl->SelectAndPositionItem(This,item,flags,point);
}
#endif
#endif

#endif


#endif  /* __IShellView2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IShellView3 interface
 */
#ifndef __IShellView3_INTERFACE_DEFINED__
#define __IShellView3_INTERFACE_DEFINED__

enum _SV3CVW3_FLAGS {
    SV3CVW3_DEFAULT = 0x0,
    SV3CVW3_NONINTERACTIVE = 0x1,
    SV3CVW3_FORCEVIEWMODE = 0x2,
    SV3CVW3_FORCEFOLDERFLAGS = 0x4
};
typedef DWORD SV3CVW3_FLAGS;
DEFINE_GUID(IID_IShellView3, 0xec39fa88, 0xf8af, 0x41c5, 0x84,0x21, 0x38,0xbe,0xd2,0x8f,0x46,0x73);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ec39fa88-f8af-41c5-8421-38bed28f4673")
IShellView3 : public IShellView2
{
    virtual HRESULT STDMETHODCALLTYPE CreateViewWindow3(
        IShellBrowser *owner,
        IShellView *prev_view,
        SV3CVW3_FLAGS view_flags,
        FOLDERFLAGS mask,
        FOLDERFLAGS flags,
        FOLDERVIEWMODE mode,
        const SHELLVIEWID *view_id,
        const RECT *rect,
        HWND *hwnd) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellView3, 0xec39fa88, 0xf8af, 0x41c5, 0x84,0x21, 0x38,0xbe,0xd2,0x8f,0x46,0x73)
#endif
#else
typedef struct IShellView3Vtbl {
    BEGIN_INTERFACE

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /*** IShellView3 methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateViewWindow3)(
        IShellView3 *This,
        IShellBrowser *owner,
        IShellView *prev_view,
        SV3CVW3_FLAGS view_flags,
        FOLDERFLAGS mask,
        FOLDERFLAGS flags,
        FOLDERVIEWMODE mode,
        const SHELLVIEWID *view_id,
        const RECT *rect,
        HWND *hwnd);

    END_INTERFACE
} IShellView3Vtbl;

interface IShellView3 {
    CONST_VTBL IShellView3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellView3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellView3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellView3_Release(This) (This)->lpVtbl->Release(This)
/*** IOleWindow methods ***/
#define IShellView3_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
#define IShellView3_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
/*** IShellView methods ***/
#define IShellView3_TranslateAccelerator(This,pmsg) (This)->lpVtbl->TranslateAccelerator(This,pmsg)
#define IShellView3_EnableModeless(This,fEnable) (This)->lpVtbl->EnableModeless(This,fEnable)
#define IShellView3_UIActivate(This,uState) (This)->lpVtbl->UIActivate(This,uState)
#define IShellView3_Refresh(This) (This)->lpVtbl->Refresh(This)
#define IShellView3_CreateViewWindow(This,psvPrevious,lpfs,psb,prcView,phWnd) (This)->lpVtbl->CreateViewWindow(This,psvPrevious,lpfs,psb,prcView,phWnd)
#define IShellView3_DestroyViewWindow(This) (This)->lpVtbl->DestroyViewWindow(This)
#define IShellView3_GetCurrentInfo(This,lpfs) (This)->lpVtbl->GetCurrentInfo(This,lpfs)
#define IShellView3_AddPropertySheetPages(This,dwReserved,pfn,lparam) (This)->lpVtbl->AddPropertySheetPages(This,dwReserved,pfn,lparam)
#define IShellView3_SaveViewState(This) (This)->lpVtbl->SaveViewState(This)
#define IShellView3_SelectItem(This,pidlItem,uFlags) (This)->lpVtbl->SelectItem(This,pidlItem,uFlags)
#define IShellView3_GetItemObject(This,uItem,riid,ppv) (This)->lpVtbl->GetItemObject(This,uItem,riid,ppv)
/*** IShellView2 methods ***/
#define IShellView3_GetView(This,view_guid,view_type) (This)->lpVtbl->GetView(This,view_guid,view_type)
#define IShellView3_CreateViewWindow2(This,view_params) (This)->lpVtbl->CreateViewWindow2(This,view_params)
#define IShellView3_HandleRename(This,new_pidl) (This)->lpVtbl->HandleRename(This,new_pidl)
#define IShellView3_SelectAndPositionItem(This,item,flags,point) (This)->lpVtbl->SelectAndPositionItem(This,item,flags,point)
/*** IShellView3 methods ***/
#define IShellView3_CreateViewWindow3(This,owner,prev_view,view_flags,mask,flags,mode,view_id,rect,hwnd) (This)->lpVtbl->CreateViewWindow3(This,owner,prev_view,view_flags,mask,flags,mode,view_id,rect,hwnd)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellView3_QueryInterface(IShellView3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellView3_AddRef(IShellView3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellView3_Release(IShellView3* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static FORCEINLINE HRESULT IShellView3_GetWindow(IShellView3* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static FORCEINLINE HRESULT IShellView3_ContextSensitiveHelp(IShellView3* This,BOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IShellView methods ***/
static FORCEINLINE HRESULT IShellView3_TranslateAccelerator(IShellView3* This,MSG *pmsg) {
    return This->lpVtbl->TranslateAccelerator(This,pmsg);
}
static FORCEINLINE HRESULT IShellView3_EnableModeless(IShellView3* This,BOOL fEnable) {
    return This->lpVtbl->EnableModeless(This,fEnable);
}
static FORCEINLINE HRESULT IShellView3_UIActivate(IShellView3* This,UINT uState) {
    return This->lpVtbl->UIActivate(This,uState);
}
static FORCEINLINE HRESULT IShellView3_Refresh(IShellView3* This) {
    return This->lpVtbl->Refresh(This);
}
static FORCEINLINE HRESULT IShellView3_CreateViewWindow(IShellView3* This,IShellView *psvPrevious,LPCFOLDERSETTINGS lpfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd) {
    return This->lpVtbl->CreateViewWindow(This,psvPrevious,lpfs,psb,prcView,phWnd);
}
static FORCEINLINE HRESULT IShellView3_DestroyViewWindow(IShellView3* This) {
    return This->lpVtbl->DestroyViewWindow(This);
}
static FORCEINLINE HRESULT IShellView3_GetCurrentInfo(IShellView3* This,LPFOLDERSETTINGS lpfs) {
    return This->lpVtbl->GetCurrentInfo(This,lpfs);
}
static FORCEINLINE HRESULT IShellView3_AddPropertySheetPages(IShellView3* This,DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam) {
    return This->lpVtbl->AddPropertySheetPages(This,dwReserved,pfn,lparam);
}
static FORCEINLINE HRESULT IShellView3_SaveViewState(IShellView3* This) {
    return This->lpVtbl->SaveViewState(This);
}
static FORCEINLINE HRESULT IShellView3_SelectItem(IShellView3* This,LPCITEMIDLIST pidlItem,SVSIF uFlags) {
    return This->lpVtbl->SelectItem(This,pidlItem,uFlags);
}
static FORCEINLINE HRESULT IShellView3_GetItemObject(IShellView3* This,UINT uItem,REFIID riid,void **ppv) {
    return This->lpVtbl->GetItemObject(This,uItem,riid,ppv);
}
/*** IShellView2 methods ***/
static FORCEINLINE HRESULT IShellView3_GetView(IShellView3* This,SHELLVIEWID *view_guid,ULONG view_type) {
    return This->lpVtbl->GetView(This,view_guid,view_type);
}
static FORCEINLINE HRESULT IShellView3_CreateViewWindow2(IShellView3* This,LPSV2CVW2_PARAMS view_params) {
    return This->lpVtbl->CreateViewWindow2(This,view_params);
}
static FORCEINLINE HRESULT IShellView3_HandleRename(IShellView3* This,LPCITEMIDLIST new_pidl) {
    return This->lpVtbl->HandleRename(This,new_pidl);
}
static FORCEINLINE HRESULT IShellView3_SelectAndPositionItem(IShellView3* This,LPCITEMIDLIST item,UINT flags,POINT *point) {
    return This->lpVtbl->SelectAndPositionItem(This,item,flags,point);
}
/*** IShellView3 methods ***/
static FORCEINLINE HRESULT IShellView3_CreateViewWindow3(IShellView3* This,IShellBrowser *owner,IShellView *prev_view,SV3CVW3_FLAGS view_flags,FOLDERFLAGS mask,FOLDERFLAGS flags,FOLDERVIEWMODE mode,const SHELLVIEWID *view_id,const RECT *rect,HWND *hwnd) {
    return This->lpVtbl->CreateViewWindow3(This,owner,prev_view,view_flags,mask,flags,mode,view_id,rect,hwnd);
}
#endif
#endif

#endif


#endif  /* __IShellView3_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)
MIDL_INTERFACE("cde725b0-ccc9-4519-917e-325d72fab4ce")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFolderView, 0xcde725b0, 0xccc9, 0x4519, 0x91,0x7e, 0x32,0x5d,0x72,0xfa,0xb4,0xce)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFolderView_QueryInterface(IFolderView* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFolderView_AddRef(IFolderView* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFolderView_Release(IFolderView* This) {
    return This->lpVtbl->Release(This);
}
/*** IFolderView methods ***/
static FORCEINLINE HRESULT IFolderView_GetCurrentViewMode(IFolderView* This,UINT *mode) {
    return This->lpVtbl->GetCurrentViewMode(This,mode);
}
static FORCEINLINE HRESULT IFolderView_SetCurrentViewMode(IFolderView* This,UINT mode) {
    return This->lpVtbl->SetCurrentViewMode(This,mode);
}
static FORCEINLINE HRESULT IFolderView_GetFolder(IFolderView* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetFolder(This,riid,ppv);
}
static FORCEINLINE HRESULT IFolderView_Item(IFolderView* This,int index,PITEMID_CHILD *ppidl) {
    return This->lpVtbl->Item(This,index,ppidl);
}
static FORCEINLINE HRESULT IFolderView_ItemCount(IFolderView* This,UINT flags,int *items) {
    return This->lpVtbl->ItemCount(This,flags,items);
}
static FORCEINLINE HRESULT IFolderView_Items(IFolderView* This,UINT flags,REFIID riid,void **ppv) {
    return This->lpVtbl->Items(This,flags,riid,ppv);
}
static FORCEINLINE HRESULT IFolderView_GetSelectionMarkedItem(IFolderView* This,int *item) {
    return This->lpVtbl->GetSelectionMarkedItem(This,item);
}
static FORCEINLINE HRESULT IFolderView_GetFocusedItem(IFolderView* This,int *item) {
    return This->lpVtbl->GetFocusedItem(This,item);
}
static FORCEINLINE HRESULT IFolderView_GetItemPosition(IFolderView* This,PCUITEMID_CHILD pidl,POINT *ppt) {
    return This->lpVtbl->GetItemPosition(This,pidl,ppt);
}
static FORCEINLINE HRESULT IFolderView_GetSpacing(IFolderView* This,POINT *pt) {
    return This->lpVtbl->GetSpacing(This,pt);
}
static FORCEINLINE HRESULT IFolderView_GetDefaultSpacing(IFolderView* This,POINT *pt) {
    return This->lpVtbl->GetDefaultSpacing(This,pt);
}
static FORCEINLINE HRESULT IFolderView_GetAutoArrange(IFolderView* This) {
    return This->lpVtbl->GetAutoArrange(This);
}
static FORCEINLINE HRESULT IFolderView_SelectItem(IFolderView* This,int item,DWORD flags) {
    return This->lpVtbl->SelectItem(This,item,flags);
}
static FORCEINLINE HRESULT IFolderView_SelectAndPositionItems(IFolderView* This,UINT cidl,PCUITEMID_CHILD_ARRAY apidl,POINT *apt,DWORD flags) {
    return This->lpVtbl->SelectAndPositionItems(This,cidl,apidl,apt,flags);
}
#endif
#endif

#endif


#endif  /* __IFolderView_INTERFACE_DEFINED__ */

enum tagSORTDIRECTION {
    SORT_DESCENDING = -1,
    SORT_ASCENDING = 1
};
typedef int SORTDIRECTION;
typedef struct SORTCOLUMN {
    PROPERTYKEY propkey;
    SORTDIRECTION direction;
} SORTCOLUMN;
typedef enum FVTEXTTYPE {
    FVST_EMPTYTEXT = 0
} FVTEXTTYPE;
/*****************************************************************************
 * IFolderView2 interface
 */
#ifndef __IFolderView2_INTERFACE_DEFINED__
#define __IFolderView2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFolderView2, 0x1af3a467, 0x214f, 0x4298, 0x90,0x8e, 0x06,0xb0,0x3e,0x0b,0x39,0xf9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1af3a467-214f-4298-908e-06b03e0b39f9")
IFolderView2 : public IFolderView
{
    virtual HRESULT STDMETHODCALLTYPE SetGroupBy(
        REFPROPERTYKEY key,
        BOOL ascending) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGroupBy(
        PROPERTYKEY *pkey,
        BOOL *ascending) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetViewProperty(
        PCUITEMID_CHILD pidl,
        REFPROPERTYKEY propkey,
        REFPROPVARIANT propvar) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetViewProperty(
        PCUITEMID_CHILD pidl,
        REFPROPERTYKEY propkey,
        PROPVARIANT *propvar) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTileViewProperties(
        PCUITEMID_CHILD pidl,
        LPCWSTR prop_list) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetExtendedTileViewProperties(
        PCUITEMID_CHILD pidl,
        LPCWSTR prop_list) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetText(
        FVTEXTTYPE type,
        LPCWSTR text) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCurrentFolderFlags(
        DWORD mask,
        DWORD flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentFolderFlags(
        DWORD *flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSortColumnCount(
        int *columns) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSortColumns(
        const SORTCOLUMN *columns,
        int count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSortColumns(
        SORTCOLUMN *columns,
        int count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetItem(
        int ittem,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVisibleItem(
        int start,
        BOOL previous,
        int *item) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSelectedItem(
        int start,
        int *item) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSelection(
        BOOL none_implies_folder,
        IShellItemArray **array) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSelectionState(
        PCUITEMID_CHILD pidl,
        DWORD *flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE InvokeVerbOnSelection(
        LPCSTR verb) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetViewModeAndIconSize(
        FOLDERVIEWMODE mode,
        int size) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetViewModeAndIconSize(
        FOLDERVIEWMODE *mode,
        int *size) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetGroupSubsetCount(
        UINT visible_rows) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGroupSubsetCount(
        UINT *visible_rows) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRedraw(
        BOOL redraw) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsMoveInSameFolder(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoRename(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFolderView2, 0x1af3a467, 0x214f, 0x4298, 0x90,0x8e, 0x06,0xb0,0x3e,0x0b,0x39,0xf9)
#endif
#else
typedef struct IFolderView2Vtbl {
    BEGIN_INTERFACE

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /*** IFolderView2 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetGroupBy)(
        IFolderView2 *This,
        REFPROPERTYKEY key,
        BOOL ascending);

    HRESULT (STDMETHODCALLTYPE *GetGroupBy)(
        IFolderView2 *This,
        PROPERTYKEY *pkey,
        BOOL *ascending);

    HRESULT (STDMETHODCALLTYPE *SetViewProperty)(
        IFolderView2 *This,
        PCUITEMID_CHILD pidl,
        REFPROPERTYKEY propkey,
        REFPROPVARIANT propvar);

    HRESULT (STDMETHODCALLTYPE *GetViewProperty)(
        IFolderView2 *This,
        PCUITEMID_CHILD pidl,
        REFPROPERTYKEY propkey,
        PROPVARIANT *propvar);

    HRESULT (STDMETHODCALLTYPE *SetTileViewProperties)(
        IFolderView2 *This,
        PCUITEMID_CHILD pidl,
        LPCWSTR prop_list);

    HRESULT (STDMETHODCALLTYPE *SetExtendedTileViewProperties)(
        IFolderView2 *This,
        PCUITEMID_CHILD pidl,
        LPCWSTR prop_list);

    HRESULT (STDMETHODCALLTYPE *SetText)(
        IFolderView2 *This,
        FVTEXTTYPE type,
        LPCWSTR text);

    HRESULT (STDMETHODCALLTYPE *SetCurrentFolderFlags)(
        IFolderView2 *This,
        DWORD mask,
        DWORD flags);

    HRESULT (STDMETHODCALLTYPE *GetCurrentFolderFlags)(
        IFolderView2 *This,
        DWORD *flags);

    HRESULT (STDMETHODCALLTYPE *GetSortColumnCount)(
        IFolderView2 *This,
        int *columns);

    HRESULT (STDMETHODCALLTYPE *SetSortColumns)(
        IFolderView2 *This,
        const SORTCOLUMN *columns,
        int count);

    HRESULT (STDMETHODCALLTYPE *GetSortColumns)(
        IFolderView2 *This,
        SORTCOLUMN *columns,
        int count);

    HRESULT (STDMETHODCALLTYPE *GetItem)(
        IFolderView2 *This,
        int ittem,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetVisibleItem)(
        IFolderView2 *This,
        int start,
        BOOL previous,
        int *item);

    HRESULT (STDMETHODCALLTYPE *GetSelectedItem)(
        IFolderView2 *This,
        int start,
        int *item);

    HRESULT (STDMETHODCALLTYPE *GetSelection)(
        IFolderView2 *This,
        BOOL none_implies_folder,
        IShellItemArray **array);

    HRESULT (STDMETHODCALLTYPE *GetSelectionState)(
        IFolderView2 *This,
        PCUITEMID_CHILD pidl,
        DWORD *flags);

    HRESULT (STDMETHODCALLTYPE *InvokeVerbOnSelection)(
        IFolderView2 *This,
        LPCSTR verb);

    HRESULT (STDMETHODCALLTYPE *SetViewModeAndIconSize)(
        IFolderView2 *This,
        FOLDERVIEWMODE mode,
        int size);

    HRESULT (STDMETHODCALLTYPE *GetViewModeAndIconSize)(
        IFolderView2 *This,
        FOLDERVIEWMODE *mode,
        int *size);

    HRESULT (STDMETHODCALLTYPE *SetGroupSubsetCount)(
        IFolderView2 *This,
        UINT visible_rows);

    HRESULT (STDMETHODCALLTYPE *GetGroupSubsetCount)(
        IFolderView2 *This,
        UINT *visible_rows);

    HRESULT (STDMETHODCALLTYPE *SetRedraw)(
        IFolderView2 *This,
        BOOL redraw);

    HRESULT (STDMETHODCALLTYPE *IsMoveInSameFolder)(
        IFolderView2 *This);

    HRESULT (STDMETHODCALLTYPE *DoRename)(
        IFolderView2 *This);

    END_INTERFACE
} IFolderView2Vtbl;

interface IFolderView2 {
    CONST_VTBL IFolderView2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFolderView2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFolderView2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFolderView2_Release(This) (This)->lpVtbl->Release(This)
/*** IFolderView methods ***/
#define IFolderView2_GetCurrentViewMode(This,mode) (This)->lpVtbl->GetCurrentViewMode(This,mode)
#define IFolderView2_SetCurrentViewMode(This,mode) (This)->lpVtbl->SetCurrentViewMode(This,mode)
#define IFolderView2_GetFolder(This,riid,ppv) (This)->lpVtbl->GetFolder(This,riid,ppv)
#define IFolderView2_Item(This,index,ppidl) (This)->lpVtbl->Item(This,index,ppidl)
#define IFolderView2_ItemCount(This,flags,items) (This)->lpVtbl->ItemCount(This,flags,items)
#define IFolderView2_Items(This,flags,riid,ppv) (This)->lpVtbl->Items(This,flags,riid,ppv)
#define IFolderView2_GetSelectionMarkedItem(This,item) (This)->lpVtbl->GetSelectionMarkedItem(This,item)
#define IFolderView2_GetFocusedItem(This,item) (This)->lpVtbl->GetFocusedItem(This,item)
#define IFolderView2_GetItemPosition(This,pidl,ppt) (This)->lpVtbl->GetItemPosition(This,pidl,ppt)
#define IFolderView2_GetSpacing(This,pt) (This)->lpVtbl->GetSpacing(This,pt)
#define IFolderView2_GetDefaultSpacing(This,pt) (This)->lpVtbl->GetDefaultSpacing(This,pt)
#define IFolderView2_GetAutoArrange(This) (This)->lpVtbl->GetAutoArrange(This)
#define IFolderView2_SelectItem(This,item,flags) (This)->lpVtbl->SelectItem(This,item,flags)
#define IFolderView2_SelectAndPositionItems(This,cidl,apidl,apt,flags) (This)->lpVtbl->SelectAndPositionItems(This,cidl,apidl,apt,flags)
/*** IFolderView2 methods ***/
#define IFolderView2_SetGroupBy(This,key,ascending) (This)->lpVtbl->SetGroupBy(This,key,ascending)
#define IFolderView2_GetGroupBy(This,pkey,ascending) (This)->lpVtbl->GetGroupBy(This,pkey,ascending)
#define IFolderView2_SetViewProperty(This,pidl,propkey,propvar) (This)->lpVtbl->SetViewProperty(This,pidl,propkey,propvar)
#define IFolderView2_GetViewProperty(This,pidl,propkey,propvar) (This)->lpVtbl->GetViewProperty(This,pidl,propkey,propvar)
#define IFolderView2_SetTileViewProperties(This,pidl,prop_list) (This)->lpVtbl->SetTileViewProperties(This,pidl,prop_list)
#define IFolderView2_SetExtendedTileViewProperties(This,pidl,prop_list) (This)->lpVtbl->SetExtendedTileViewProperties(This,pidl,prop_list)
#define IFolderView2_SetText(This,type,text) (This)->lpVtbl->SetText(This,type,text)
#define IFolderView2_SetCurrentFolderFlags(This,mask,flags) (This)->lpVtbl->SetCurrentFolderFlags(This,mask,flags)
#define IFolderView2_GetCurrentFolderFlags(This,flags) (This)->lpVtbl->GetCurrentFolderFlags(This,flags)
#define IFolderView2_GetSortColumnCount(This,columns) (This)->lpVtbl->GetSortColumnCount(This,columns)
#define IFolderView2_SetSortColumns(This,columns,count) (This)->lpVtbl->SetSortColumns(This,columns,count)
#define IFolderView2_GetSortColumns(This,columns,count) (This)->lpVtbl->GetSortColumns(This,columns,count)
#define IFolderView2_GetItem(This,ittem,riid,ppv) (This)->lpVtbl->GetItem(This,ittem,riid,ppv)
#define IFolderView2_GetVisibleItem(This,start,previous,item) (This)->lpVtbl->GetVisibleItem(This,start,previous,item)
#define IFolderView2_GetSelectedItem(This,start,item) (This)->lpVtbl->GetSelectedItem(This,start,item)
#define IFolderView2_GetSelection(This,none_implies_folder,array) (This)->lpVtbl->GetSelection(This,none_implies_folder,array)
#define IFolderView2_GetSelectionState(This,pidl,flags) (This)->lpVtbl->GetSelectionState(This,pidl,flags)
#define IFolderView2_InvokeVerbOnSelection(This,verb) (This)->lpVtbl->InvokeVerbOnSelection(This,verb)
#define IFolderView2_SetViewModeAndIconSize(This,mode,size) (This)->lpVtbl->SetViewModeAndIconSize(This,mode,size)
#define IFolderView2_GetViewModeAndIconSize(This,mode,size) (This)->lpVtbl->GetViewModeAndIconSize(This,mode,size)
#define IFolderView2_SetGroupSubsetCount(This,visible_rows) (This)->lpVtbl->SetGroupSubsetCount(This,visible_rows)
#define IFolderView2_GetGroupSubsetCount(This,visible_rows) (This)->lpVtbl->GetGroupSubsetCount(This,visible_rows)
#define IFolderView2_SetRedraw(This,redraw) (This)->lpVtbl->SetRedraw(This,redraw)
#define IFolderView2_IsMoveInSameFolder(This) (This)->lpVtbl->IsMoveInSameFolder(This)
#define IFolderView2_DoRename(This) (This)->lpVtbl->DoRename(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFolderView2_QueryInterface(IFolderView2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFolderView2_AddRef(IFolderView2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFolderView2_Release(IFolderView2* This) {
    return This->lpVtbl->Release(This);
}
/*** IFolderView methods ***/
static FORCEINLINE HRESULT IFolderView2_GetCurrentViewMode(IFolderView2* This,UINT *mode) {
    return This->lpVtbl->GetCurrentViewMode(This,mode);
}
static FORCEINLINE HRESULT IFolderView2_SetCurrentViewMode(IFolderView2* This,UINT mode) {
    return This->lpVtbl->SetCurrentViewMode(This,mode);
}
static FORCEINLINE HRESULT IFolderView2_GetFolder(IFolderView2* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetFolder(This,riid,ppv);
}
static FORCEINLINE HRESULT IFolderView2_Item(IFolderView2* This,int index,PITEMID_CHILD *ppidl) {
    return This->lpVtbl->Item(This,index,ppidl);
}
static FORCEINLINE HRESULT IFolderView2_ItemCount(IFolderView2* This,UINT flags,int *items) {
    return This->lpVtbl->ItemCount(This,flags,items);
}
static FORCEINLINE HRESULT IFolderView2_Items(IFolderView2* This,UINT flags,REFIID riid,void **ppv) {
    return This->lpVtbl->Items(This,flags,riid,ppv);
}
static FORCEINLINE HRESULT IFolderView2_GetSelectionMarkedItem(IFolderView2* This,int *item) {
    return This->lpVtbl->GetSelectionMarkedItem(This,item);
}
static FORCEINLINE HRESULT IFolderView2_GetFocusedItem(IFolderView2* This,int *item) {
    return This->lpVtbl->GetFocusedItem(This,item);
}
static FORCEINLINE HRESULT IFolderView2_GetItemPosition(IFolderView2* This,PCUITEMID_CHILD pidl,POINT *ppt) {
    return This->lpVtbl->GetItemPosition(This,pidl,ppt);
}
static FORCEINLINE HRESULT IFolderView2_GetSpacing(IFolderView2* This,POINT *pt) {
    return This->lpVtbl->GetSpacing(This,pt);
}
static FORCEINLINE HRESULT IFolderView2_GetDefaultSpacing(IFolderView2* This,POINT *pt) {
    return This->lpVtbl->GetDefaultSpacing(This,pt);
}
static FORCEINLINE HRESULT IFolderView2_GetAutoArrange(IFolderView2* This) {
    return This->lpVtbl->GetAutoArrange(This);
}
static FORCEINLINE HRESULT IFolderView2_SelectItem(IFolderView2* This,int item,DWORD flags) {
    return This->lpVtbl->SelectItem(This,item,flags);
}
static FORCEINLINE HRESULT IFolderView2_SelectAndPositionItems(IFolderView2* This,UINT cidl,PCUITEMID_CHILD_ARRAY apidl,POINT *apt,DWORD flags) {
    return This->lpVtbl->SelectAndPositionItems(This,cidl,apidl,apt,flags);
}
/*** IFolderView2 methods ***/
static FORCEINLINE HRESULT IFolderView2_SetGroupBy(IFolderView2* This,REFPROPERTYKEY key,BOOL ascending) {
    return This->lpVtbl->SetGroupBy(This,key,ascending);
}
static FORCEINLINE HRESULT IFolderView2_GetGroupBy(IFolderView2* This,PROPERTYKEY *pkey,BOOL *ascending) {
    return This->lpVtbl->GetGroupBy(This,pkey,ascending);
}
static FORCEINLINE HRESULT IFolderView2_SetViewProperty(IFolderView2* This,PCUITEMID_CHILD pidl,REFPROPERTYKEY propkey,REFPROPVARIANT propvar) {
    return This->lpVtbl->SetViewProperty(This,pidl,propkey,propvar);
}
static FORCEINLINE HRESULT IFolderView2_GetViewProperty(IFolderView2* This,PCUITEMID_CHILD pidl,REFPROPERTYKEY propkey,PROPVARIANT *propvar) {
    return This->lpVtbl->GetViewProperty(This,pidl,propkey,propvar);
}
static FORCEINLINE HRESULT IFolderView2_SetTileViewProperties(IFolderView2* This,PCUITEMID_CHILD pidl,LPCWSTR prop_list) {
    return This->lpVtbl->SetTileViewProperties(This,pidl,prop_list);
}
static FORCEINLINE HRESULT IFolderView2_SetExtendedTileViewProperties(IFolderView2* This,PCUITEMID_CHILD pidl,LPCWSTR prop_list) {
    return This->lpVtbl->SetExtendedTileViewProperties(This,pidl,prop_list);
}
static FORCEINLINE HRESULT IFolderView2_SetText(IFolderView2* This,FVTEXTTYPE type,LPCWSTR text) {
    return This->lpVtbl->SetText(This,type,text);
}
static FORCEINLINE HRESULT IFolderView2_SetCurrentFolderFlags(IFolderView2* This,DWORD mask,DWORD flags) {
    return This->lpVtbl->SetCurrentFolderFlags(This,mask,flags);
}
static FORCEINLINE HRESULT IFolderView2_GetCurrentFolderFlags(IFolderView2* This,DWORD *flags) {
    return This->lpVtbl->GetCurrentFolderFlags(This,flags);
}
static FORCEINLINE HRESULT IFolderView2_GetSortColumnCount(IFolderView2* This,int *columns) {
    return This->lpVtbl->GetSortColumnCount(This,columns);
}
static FORCEINLINE HRESULT IFolderView2_SetSortColumns(IFolderView2* This,const SORTCOLUMN *columns,int count) {
    return This->lpVtbl->SetSortColumns(This,columns,count);
}
static FORCEINLINE HRESULT IFolderView2_GetSortColumns(IFolderView2* This,SORTCOLUMN *columns,int count) {
    return This->lpVtbl->GetSortColumns(This,columns,count);
}
static FORCEINLINE HRESULT IFolderView2_GetItem(IFolderView2* This,int ittem,REFIID riid,void **ppv) {
    return This->lpVtbl->GetItem(This,ittem,riid,ppv);
}
static FORCEINLINE HRESULT IFolderView2_GetVisibleItem(IFolderView2* This,int start,BOOL previous,int *item) {
    return This->lpVtbl->GetVisibleItem(This,start,previous,item);
}
static FORCEINLINE HRESULT IFolderView2_GetSelectedItem(IFolderView2* This,int start,int *item) {
    return This->lpVtbl->GetSelectedItem(This,start,item);
}
static FORCEINLINE HRESULT IFolderView2_GetSelection(IFolderView2* This,BOOL none_implies_folder,IShellItemArray **array) {
    return This->lpVtbl->GetSelection(This,none_implies_folder,array);
}
static FORCEINLINE HRESULT IFolderView2_GetSelectionState(IFolderView2* This,PCUITEMID_CHILD pidl,DWORD *flags) {
    return This->lpVtbl->GetSelectionState(This,pidl,flags);
}
static FORCEINLINE HRESULT IFolderView2_InvokeVerbOnSelection(IFolderView2* This,LPCSTR verb) {
    return This->lpVtbl->InvokeVerbOnSelection(This,verb);
}
static FORCEINLINE HRESULT IFolderView2_SetViewModeAndIconSize(IFolderView2* This,FOLDERVIEWMODE mode,int size) {
    return This->lpVtbl->SetViewModeAndIconSize(This,mode,size);
}
static FORCEINLINE HRESULT IFolderView2_GetViewModeAndIconSize(IFolderView2* This,FOLDERVIEWMODE *mode,int *size) {
    return This->lpVtbl->GetViewModeAndIconSize(This,mode,size);
}
static FORCEINLINE HRESULT IFolderView2_SetGroupSubsetCount(IFolderView2* This,UINT visible_rows) {
    return This->lpVtbl->SetGroupSubsetCount(This,visible_rows);
}
static FORCEINLINE HRESULT IFolderView2_GetGroupSubsetCount(IFolderView2* This,UINT *visible_rows) {
    return This->lpVtbl->GetGroupSubsetCount(This,visible_rows);
}
static FORCEINLINE HRESULT IFolderView2_SetRedraw(IFolderView2* This,BOOL redraw) {
    return This->lpVtbl->SetRedraw(This,redraw);
}
static FORCEINLINE HRESULT IFolderView2_IsMoveInSameFolder(IFolderView2* This) {
    return This->lpVtbl->IsMoveInSameFolder(This);
}
static FORCEINLINE HRESULT IFolderView2_DoRename(IFolderView2* This) {
    return This->lpVtbl->DoRename(This);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IFolderView2_RemoteGetGroupBy_Proxy(
    IFolderView2* This,
    PROPERTYKEY *pkey,
    BOOL *ascending);
void __RPC_STUB IFolderView2_RemoteGetGroupBy_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IFolderView2_GetGroupBy_Proxy(
    IFolderView2* This,
    PROPERTYKEY *pkey,
    BOOL *ascending);
HRESULT __RPC_STUB IFolderView2_GetGroupBy_Stub(
    IFolderView2* This,
    PROPERTYKEY *pkey,
    BOOL *ascending);

#endif  /* __IFolderView2_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)
MIDL_INTERFACE("000214e2-0000-0000-c000-000000000046")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellBrowser, 0x000214e2, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellBrowser_QueryInterface(IShellBrowser* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellBrowser_AddRef(IShellBrowser* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellBrowser_Release(IShellBrowser* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static FORCEINLINE HRESULT IShellBrowser_GetWindow(IShellBrowser* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static FORCEINLINE HRESULT IShellBrowser_ContextSensitiveHelp(IShellBrowser* This,BOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IShellBrowser methods ***/
static FORCEINLINE HRESULT IShellBrowser_InsertMenusSB(IShellBrowser* This,HMENU hmenuShared,LPOLEMENUGROUPWIDTHS lpMenuWidths) {
    return This->lpVtbl->InsertMenusSB(This,hmenuShared,lpMenuWidths);
}
static FORCEINLINE HRESULT IShellBrowser_SetMenuSB(IShellBrowser* This,HMENU hmenuShared,HOLEMENU holemenuReserved,HWND hwndActiveObject) {
    return This->lpVtbl->SetMenuSB(This,hmenuShared,holemenuReserved,hwndActiveObject);
}
static FORCEINLINE HRESULT IShellBrowser_RemoveMenusSB(IShellBrowser* This,HMENU hmenuShared) {
    return This->lpVtbl->RemoveMenusSB(This,hmenuShared);
}
static FORCEINLINE HRESULT IShellBrowser_SetStatusTextSB(IShellBrowser* This,LPCOLESTR pszStatusText) {
    return This->lpVtbl->SetStatusTextSB(This,pszStatusText);
}
static FORCEINLINE HRESULT IShellBrowser_EnableModelessSB(IShellBrowser* This,BOOL fEnable) {
    return This->lpVtbl->EnableModelessSB(This,fEnable);
}
static FORCEINLINE HRESULT IShellBrowser_TranslateAcceleratorSB(IShellBrowser* This,MSG *pmsg,WORD wID) {
    return This->lpVtbl->TranslateAcceleratorSB(This,pmsg,wID);
}
static FORCEINLINE HRESULT IShellBrowser_BrowseObject(IShellBrowser* This,LPCITEMIDLIST pidl,UINT wFlags) {
    return This->lpVtbl->BrowseObject(This,pidl,wFlags);
}
static FORCEINLINE HRESULT IShellBrowser_GetViewStateStream(IShellBrowser* This,DWORD grfMode,IStream **ppStrm) {
    return This->lpVtbl->GetViewStateStream(This,grfMode,ppStrm);
}
static FORCEINLINE HRESULT IShellBrowser_GetControlWindow(IShellBrowser* This,UINT id,HWND *phwnd) {
    return This->lpVtbl->GetControlWindow(This,id,phwnd);
}
static FORCEINLINE HRESULT IShellBrowser_SendControlMsg(IShellBrowser* This,UINT id,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *pret) {
    return This->lpVtbl->SendControlMsg(This,id,uMsg,wParam,lParam,pret);
}
static FORCEINLINE HRESULT IShellBrowser_QueryActiveShellView(IShellBrowser* This,IShellView **ppshv) {
    return This->lpVtbl->QueryActiveShellView(This,ppshv);
}
static FORCEINLINE HRESULT IShellBrowser_OnViewWindowActive(IShellBrowser* This,IShellView *pshv) {
    return This->lpVtbl->OnViewWindowActive(This,pshv);
}
static FORCEINLINE HRESULT IShellBrowser_SetToolbarItems(IShellBrowser* This,LPTBBUTTONSB lpButtons,UINT nButtons,UINT uFlags) {
    return This->lpVtbl->SetToolbarItems(This,lpButtons,nButtons,uFlags);
}
#endif
#endif

#endif


#endif  /* __IShellBrowser_INTERFACE_DEFINED__ */

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

typedef enum SLR_FLAGS {
    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_OFFER_DELETE_WITHOUT_FILE = 0x200,
    SLR_KNOWNFOLDER = 0x400,
    SLR_MACHINE_IN_LOCAL_TARGET = 0x800,
    SLR_UPDATE_MACHINE_AND_SID = 0x1000,
    SLR_NO_OBJECT_ID = 0x2000
} SLR_FLAGS;
typedef enum SLGP_FLAGS {
    SLGP_SHORTPATH = 0x1,
    SLGP_UNCPRIORITY = 0x2,
    SLGP_RAWPATH = 0x4,
    SLGP_RELATIVEPRIORITY = 0x8
} SLGP_FLAGS;
DEFINE_GUID(IID_IShellLinkA, 0x000214ee, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("000214ee-0000-0000-c000-000000000046")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellLinkA, 0x000214ee, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellLinkA_QueryInterface(IShellLinkA* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellLinkA_AddRef(IShellLinkA* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellLinkA_Release(IShellLinkA* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellLinkA methods ***/
static FORCEINLINE HRESULT IShellLinkA_GetPath(IShellLinkA* This,LPSTR pszFile,int cch,WIN32_FIND_DATAA *pfd,DWORD fFlags) {
    return This->lpVtbl->GetPath(This,pszFile,cch,pfd,fFlags);
}
static FORCEINLINE HRESULT IShellLinkA_GetIDList(IShellLinkA* This,LPITEMIDLIST *ppidl) {
    return This->lpVtbl->GetIDList(This,ppidl);
}
static FORCEINLINE HRESULT IShellLinkA_SetIDList(IShellLinkA* This,LPCITEMIDLIST pidl) {
    return This->lpVtbl->SetIDList(This,pidl);
}
static FORCEINLINE HRESULT IShellLinkA_GetDescription(IShellLinkA* This,LPSTR pszName,int cch) {
    return This->lpVtbl->GetDescription(This,pszName,cch);
}
static FORCEINLINE HRESULT IShellLinkA_SetDescription(IShellLinkA* This,LPCSTR pszName) {
    return This->lpVtbl->SetDescription(This,pszName);
}
static FORCEINLINE HRESULT IShellLinkA_GetWorkingDirectory(IShellLinkA* This,LPSTR pszDir,int cch) {
    return This->lpVtbl->GetWorkingDirectory(This,pszDir,cch);
}
static FORCEINLINE HRESULT IShellLinkA_SetWorkingDirectory(IShellLinkA* This,LPCSTR pszDir) {
    return This->lpVtbl->SetWorkingDirectory(This,pszDir);
}
static FORCEINLINE HRESULT IShellLinkA_GetArguments(IShellLinkA* This,LPSTR pszArgs,int cch) {
    return This->lpVtbl->GetArguments(This,pszArgs,cch);
}
static FORCEINLINE HRESULT IShellLinkA_SetArguments(IShellLinkA* This,LPCSTR pszArgs) {
    return This->lpVtbl->SetArguments(This,pszArgs);
}
static FORCEINLINE HRESULT IShellLinkA_GetHotkey(IShellLinkA* This,WORD *pwHotkey) {
    return This->lpVtbl->GetHotkey(This,pwHotkey);
}
static FORCEINLINE HRESULT IShellLinkA_SetHotkey(IShellLinkA* This,WORD wHotkey) {
    return This->lpVtbl->SetHotkey(This,wHotkey);
}
static FORCEINLINE HRESULT IShellLinkA_GetShowCmd(IShellLinkA* This,int *piShowCmd) {
    return This->lpVtbl->GetShowCmd(This,piShowCmd);
}
static FORCEINLINE HRESULT IShellLinkA_SetShowCmd(IShellLinkA* This,int iShowCmd) {
    return This->lpVtbl->SetShowCmd(This,iShowCmd);
}
static FORCEINLINE HRESULT IShellLinkA_GetIconLocation(IShellLinkA* This,LPSTR pszIconPath,int cch,int *piIcon) {
    return This->lpVtbl->GetIconLocation(This,pszIconPath,cch,piIcon);
}
static FORCEINLINE HRESULT IShellLinkA_SetIconLocation(IShellLinkA* This,LPCSTR pszIconPath,int iIcon) {
    return This->lpVtbl->SetIconLocation(This,pszIconPath,iIcon);
}
static FORCEINLINE HRESULT IShellLinkA_SetRelativePath(IShellLinkA* This,LPCSTR pszPathRel,DWORD dwReserved) {
    return This->lpVtbl->SetRelativePath(This,pszPathRel,dwReserved);
}
static FORCEINLINE HRESULT IShellLinkA_Resolve(IShellLinkA* This,HWND hwnd,DWORD fFlags) {
    return This->lpVtbl->Resolve(This,hwnd,fFlags);
}
static FORCEINLINE HRESULT IShellLinkA_SetPath(IShellLinkA* This,LPCSTR pszFile) {
    return This->lpVtbl->SetPath(This,pszFile);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("000214f9-0000-0000-c000-000000000046")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellLinkW, 0x000214f9, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellLinkW_QueryInterface(IShellLinkW* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellLinkW_AddRef(IShellLinkW* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellLinkW_Release(IShellLinkW* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellLinkW methods ***/
static FORCEINLINE HRESULT IShellLinkW_GetPath(IShellLinkW* This,LPWSTR pszFile,int cch,WIN32_FIND_DATAW *pfd,DWORD fFlags) {
    return This->lpVtbl->GetPath(This,pszFile,cch,pfd,fFlags);
}
static FORCEINLINE HRESULT IShellLinkW_GetIDList(IShellLinkW* This,LPITEMIDLIST *ppidl) {
    return This->lpVtbl->GetIDList(This,ppidl);
}
static FORCEINLINE HRESULT IShellLinkW_SetIDList(IShellLinkW* This,LPCITEMIDLIST pidl) {
    return This->lpVtbl->SetIDList(This,pidl);
}
static FORCEINLINE HRESULT IShellLinkW_GetDescription(IShellLinkW* This,LPWSTR pszName,int cch) {
    return This->lpVtbl->GetDescription(This,pszName,cch);
}
static FORCEINLINE HRESULT IShellLinkW_SetDescription(IShellLinkW* This,LPCWSTR pszName) {
    return This->lpVtbl->SetDescription(This,pszName);
}
static FORCEINLINE HRESULT IShellLinkW_GetWorkingDirectory(IShellLinkW* This,LPWSTR pszDir,int cch) {
    return This->lpVtbl->GetWorkingDirectory(This,pszDir,cch);
}
static FORCEINLINE HRESULT IShellLinkW_SetWorkingDirectory(IShellLinkW* This,LPCWSTR pszDir) {
    return This->lpVtbl->SetWorkingDirectory(This,pszDir);
}
static FORCEINLINE HRESULT IShellLinkW_GetArguments(IShellLinkW* This,LPWSTR pszArgs,int cch) {
    return This->lpVtbl->GetArguments(This,pszArgs,cch);
}
static FORCEINLINE HRESULT IShellLinkW_SetArguments(IShellLinkW* This,LPCWSTR pszArgs) {
    return This->lpVtbl->SetArguments(This,pszArgs);
}
static FORCEINLINE HRESULT IShellLinkW_GetHotkey(IShellLinkW* This,WORD *pwHotkey) {
    return This->lpVtbl->GetHotkey(This,pwHotkey);
}
static FORCEINLINE HRESULT IShellLinkW_SetHotkey(IShellLinkW* This,WORD wHotkey) {
    return This->lpVtbl->SetHotkey(This,wHotkey);
}
static FORCEINLINE HRESULT IShellLinkW_GetShowCmd(IShellLinkW* This,int *piShowCmd) {
    return This->lpVtbl->GetShowCmd(This,piShowCmd);
}
static FORCEINLINE HRESULT IShellLinkW_SetShowCmd(IShellLinkW* This,int iShowCmd) {
    return This->lpVtbl->SetShowCmd(This,iShowCmd);
}
static FORCEINLINE HRESULT IShellLinkW_GetIconLocation(IShellLinkW* This,LPWSTR pszIconPath,int cch,int *piIcon) {
    return This->lpVtbl->GetIconLocation(This,pszIconPath,cch,piIcon);
}
static FORCEINLINE HRESULT IShellLinkW_SetIconLocation(IShellLinkW* This,LPCWSTR pszIconPath,int iIcon) {
    return This->lpVtbl->SetIconLocation(This,pszIconPath,iIcon);
}
static FORCEINLINE HRESULT IShellLinkW_SetRelativePath(IShellLinkW* This,LPCWSTR pszPathRel,DWORD dwReserved) {
    return This->lpVtbl->SetRelativePath(This,pszPathRel,dwReserved);
}
static FORCEINLINE HRESULT IShellLinkW_Resolve(IShellLinkW* This,HWND hwnd,DWORD fFlags) {
    return This->lpVtbl->Resolve(This,hwnd,fFlags);
}
static FORCEINLINE HRESULT IShellLinkW_SetPath(IShellLinkW* This,LPCWSTR pszFile) {
    return This->lpVtbl->SetPath(This,pszFile);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("000214e8-0000-0000-c000-000000000046")
IShellExtInit : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        LPCITEMIDLIST pidlFolder,
        IDataObject *pdtobj,
        HKEY hkeyProgID) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellExtInit, 0x000214e8, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellExtInit_QueryInterface(IShellExtInit* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellExtInit_AddRef(IShellExtInit* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellExtInit_Release(IShellExtInit* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellExtInit methods ***/
static FORCEINLINE HRESULT IShellExtInit_Initialize(IShellExtInit* This,LPCITEMIDLIST pidlFolder,IDataObject *pdtobj,HKEY hkeyProgID) {
    return This->lpVtbl->Initialize(This,pidlFolder,pdtobj,hkeyProgID);
}
#endif
#endif

#endif


#endif  /* __IShellExtInit_INTERFACE_DEFINED__ */

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

typedef struct __WIDL_shobjidl_generated_name_00000026 {
    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)
MIDL_INTERFACE("cef04fdf-fe72-11d2-87a5-00c04f6837cf")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPersistFolder3, 0xcef04fdf, 0xfe72, 0x11d2, 0x87,0xa5, 0x00,0xc0,0x4f,0x68,0x37,0xcf)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPersistFolder3_QueryInterface(IPersistFolder3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPersistFolder3_AddRef(IPersistFolder3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPersistFolder3_Release(IPersistFolder3* This) {
    return This->lpVtbl->Release(This);
}
/*** IPersist methods ***/
static FORCEINLINE HRESULT IPersistFolder3_GetClassID(IPersistFolder3* This,CLSID *pClassID) {
    return This->lpVtbl->GetClassID(This,pClassID);
}
/*** IPersistFolder methods ***/
static FORCEINLINE HRESULT IPersistFolder3_Initialize(IPersistFolder3* This,LPCITEMIDLIST pidl) {
    return This->lpVtbl->Initialize(This,pidl);
}
/*** IPersistFolder2 methods ***/
static FORCEINLINE HRESULT IPersistFolder3_GetCurFolder(IPersistFolder3* This,LPITEMIDLIST *ppidl) {
    return This->lpVtbl->GetCurFolder(This,ppidl);
}
/*** IPersistFolder3 methods ***/
static FORCEINLINE HRESULT IPersistFolder3_InitializeEx(IPersistFolder3* This,IBindCtx *pbc,LPCITEMIDLIST pidlRoot,const PERSIST_FOLDER_TARGET_INFO *ppfti) {
    return This->lpVtbl->InitializeEx(This,pbc,pidlRoot,ppfti);
}
static FORCEINLINE HRESULT IPersistFolder3_GetFolderTargetInfo(IPersistFolder3* This,PERSIST_FOLDER_TARGET_INFO *ppfti) {
    return This->lpVtbl->GetFolderTargetInfo(This,ppfti);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("000214eb-0000-0000-c000-000000000046")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExtractIconA, 0x000214eb, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IExtractIconA_QueryInterface(IExtractIconA* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IExtractIconA_AddRef(IExtractIconA* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IExtractIconA_Release(IExtractIconA* This) {
    return This->lpVtbl->Release(This);
}
/*** IExtractIconA methods ***/
static FORCEINLINE HRESULT IExtractIconA_GetIconLocation(IExtractIconA* This,UINT uFlags,LPSTR szIconFile,UINT cchMax,INT *piIndex,UINT *pwFlags) {
    return This->lpVtbl->GetIconLocation(This,uFlags,szIconFile,cchMax,piIndex,pwFlags);
}
static FORCEINLINE HRESULT IExtractIconA_Extract(IExtractIconA* This,LPCSTR pszFile,UINT nIconIndex,HICON *phiconLarge,HICON *phiconSmall,UINT nIconSize) {
    return This->lpVtbl->Extract(This,pszFile,nIconIndex,phiconLarge,phiconSmall,nIconSize);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("000214fa-0000-0000-c000-000000000046")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExtractIconW, 0x000214fa, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IExtractIconW_QueryInterface(IExtractIconW* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IExtractIconW_AddRef(IExtractIconW* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IExtractIconW_Release(IExtractIconW* This) {
    return This->lpVtbl->Release(This);
}
/*** IExtractIconW methods ***/
static FORCEINLINE HRESULT IExtractIconW_GetIconLocation(IExtractIconW* This,UINT uFlags,LPWSTR szIconFile,UINT cchMax,INT *piIndex,UINT *pwFlags) {
    return This->lpVtbl->GetIconLocation(This,uFlags,szIconFile,cchMax,piIndex,pwFlags);
}
static FORCEINLINE HRESULT IExtractIconW_Extract(IExtractIconW* This,LPCWSTR pszFile,UINT nIconIndex,HICON *phiconLarge,HICON *phiconSmall,UINT nIconSize) {
    return This->lpVtbl->Extract(This,pszFile,nIconIndex,phiconLarge,phiconSmall,nIconSize);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("000214f1-0000-0000-c000-000000000046")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICommDlgBrowser, 0x000214f1, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICommDlgBrowser_QueryInterface(ICommDlgBrowser* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICommDlgBrowser_AddRef(ICommDlgBrowser* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICommDlgBrowser_Release(ICommDlgBrowser* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommDlgBrowser methods ***/
static FORCEINLINE HRESULT ICommDlgBrowser_OnDefaultCommand(ICommDlgBrowser* This,IShellView *shv) {
    return This->lpVtbl->OnDefaultCommand(This,shv);
}
static FORCEINLINE HRESULT ICommDlgBrowser_OnStateChange(ICommDlgBrowser* This,IShellView *shv,ULONG uChange) {
    return This->lpVtbl->OnStateChange(This,shv,uChange);
}
static FORCEINLINE HRESULT ICommDlgBrowser_IncludeObject(ICommDlgBrowser* This,IShellView *shv,LPCITEMIDLIST pidl) {
    return This->lpVtbl->IncludeObject(This,shv,pidl);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("10339516-2894-11d2-9039-00c04f8eeb3e")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICommDlgBrowser2, 0x10339516, 0x2894, 0x11d2, 0x90,0x39, 0x00,0xc0,0x4f,0x8e,0xeb,0x3e)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICommDlgBrowser2_QueryInterface(ICommDlgBrowser2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICommDlgBrowser2_AddRef(ICommDlgBrowser2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICommDlgBrowser2_Release(ICommDlgBrowser2* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommDlgBrowser methods ***/
static FORCEINLINE HRESULT ICommDlgBrowser2_OnDefaultCommand(ICommDlgBrowser2* This,IShellView *shv) {
    return This->lpVtbl->OnDefaultCommand(This,shv);
}
static FORCEINLINE HRESULT ICommDlgBrowser2_OnStateChange(ICommDlgBrowser2* This,IShellView *shv,ULONG uChange) {
    return This->lpVtbl->OnStateChange(This,shv,uChange);
}
static FORCEINLINE HRESULT ICommDlgBrowser2_IncludeObject(ICommDlgBrowser2* This,IShellView *shv,LPCITEMIDLIST pidl) {
    return This->lpVtbl->IncludeObject(This,shv,pidl);
}
/*** ICommDlgBrowser2 methods ***/
static FORCEINLINE HRESULT ICommDlgBrowser2_Notify(ICommDlgBrowser2* This,IShellView *ppshv,DWORD dwNotifyType) {
    return This->lpVtbl->Notify(This,ppshv,dwNotifyType);
}
static FORCEINLINE HRESULT ICommDlgBrowser2_GetDefaultMenuText(ICommDlgBrowser2* This,IShellView *ppshv,LPWSTR pszText,int cchMax) {
    return This->lpVtbl->GetDefaultMenuText(This,ppshv,pszText,cchMax);
}
static FORCEINLINE HRESULT ICommDlgBrowser2_GetViewFlags(ICommDlgBrowser2* This,DWORD *pdwFlags) {
    return This->lpVtbl->GetViewFlags(This,pdwFlags);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("c8ad25a1-3294-41ee-8165-71174bd01c57")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICommDlgBrowser3, 0xc8ad25a1, 0x3294, 0x41ee, 0x81,0x65, 0x71,0x17,0x4b,0xd0,0x1c,0x57)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICommDlgBrowser3_QueryInterface(ICommDlgBrowser3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICommDlgBrowser3_AddRef(ICommDlgBrowser3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICommDlgBrowser3_Release(ICommDlgBrowser3* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommDlgBrowser methods ***/
static FORCEINLINE HRESULT ICommDlgBrowser3_OnDefaultCommand(ICommDlgBrowser3* This,IShellView *shv) {
    return This->lpVtbl->OnDefaultCommand(This,shv);
}
static FORCEINLINE HRESULT ICommDlgBrowser3_OnStateChange(ICommDlgBrowser3* This,IShellView *shv,ULONG uChange) {
    return This->lpVtbl->OnStateChange(This,shv,uChange);
}
static FORCEINLINE HRESULT ICommDlgBrowser3_IncludeObject(ICommDlgBrowser3* This,IShellView *shv,LPCITEMIDLIST pidl) {
    return This->lpVtbl->IncludeObject(This,shv,pidl);
}
/*** ICommDlgBrowser2 methods ***/
static FORCEINLINE HRESULT ICommDlgBrowser3_Notify(ICommDlgBrowser3* This,IShellView *ppshv,DWORD dwNotifyType) {
    return This->lpVtbl->Notify(This,ppshv,dwNotifyType);
}
static FORCEINLINE HRESULT ICommDlgBrowser3_GetDefaultMenuText(ICommDlgBrowser3* This,IShellView *ppshv,LPWSTR pszText,int cchMax) {
    return This->lpVtbl->GetDefaultMenuText(This,ppshv,pszText,cchMax);
}
static FORCEINLINE HRESULT ICommDlgBrowser3_GetViewFlags(ICommDlgBrowser3* This,DWORD *pdwFlags) {
    return This->lpVtbl->GetViewFlags(This,pdwFlags);
}
/*** ICommDlgBrowser3 methods ***/
static FORCEINLINE HRESULT ICommDlgBrowser3_OnColumnClicked(ICommDlgBrowser3* This,IShellView *ppshv,int iColumn) {
    return This->lpVtbl->OnColumnClicked(This,ppshv,iColumn);
}
static FORCEINLINE HRESULT ICommDlgBrowser3_GetCurrentFilter(ICommDlgBrowser3* This,LPWSTR pszFileSpec,int cchFileSpec) {
    return This->lpVtbl->GetCurrentFilter(This,pszFileSpec,cchFileSpec);
}
static FORCEINLINE HRESULT ICommDlgBrowser3_OnPreViewCreated(ICommDlgBrowser3* This,IShellView *ppshv) {
    return This->lpVtbl->OnPreViewCreated(This,ppshv);
}
#endif
#endif

#endif


#endif  /* __ICommDlgBrowser3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDockingWindow interface
 */
#ifndef __IDockingWindow_INTERFACE_DEFINED__
#define __IDockingWindow_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDockingWindow, 0x012dd920, 0x7b26, 0x11d0, 0x8c,0xa9, 0x00,0xa0,0xc9,0x2d,0xbf,0xe8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("012dd920-7b26-11d0-8ca9-00a0c92dbfe8")
IDockingWindow : public IOleWindow
{
    virtual HRESULT STDMETHODCALLTYPE ShowDW(
        BOOL fShow) = 0;

    virtual HRESULT STDMETHODCALLTYPE CloseDW(
        DWORD dwReserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(
        LPCRECT prcBorder,
        IUnknown *punkToolbarSite,
        BOOL fReserved) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDockingWindow, 0x012dd920, 0x7b26, 0x11d0, 0x8c,0xa9, 0x00,0xa0,0xc9,0x2d,0xbf,0xe8)
#endif
#else
typedef struct IDockingWindowVtbl {
    BEGIN_INTERFACE

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

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

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

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

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

    /*** IDockingWindow methods ***/
    HRESULT (STDMETHODCALLTYPE *ShowDW)(
        IDockingWindow *This,
        BOOL fShow);

    HRESULT (STDMETHODCALLTYPE *CloseDW)(
        IDockingWindow *This,
        DWORD dwReserved);

    HRESULT (STDMETHODCALLTYPE *ResizeBorderDW)(
        IDockingWindow *This,
        LPCRECT prcBorder,
        IUnknown *punkToolbarSite,
        BOOL fReserved);

    END_INTERFACE
} IDockingWindowVtbl;

interface IDockingWindow {
    CONST_VTBL IDockingWindowVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDockingWindow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDockingWindow_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDockingWindow_Release(This) (This)->lpVtbl->Release(This)
/*** IOleWindow methods ***/
#define IDockingWindow_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
#define IDockingWindow_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
/*** IDockingWindow methods ***/
#define IDockingWindow_ShowDW(This,fShow) (This)->lpVtbl->ShowDW(This,fShow)
#define IDockingWindow_CloseDW(This,dwReserved) (This)->lpVtbl->CloseDW(This,dwReserved)
#define IDockingWindow_ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved) (This)->lpVtbl->ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDockingWindow_QueryInterface(IDockingWindow* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDockingWindow_AddRef(IDockingWindow* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDockingWindow_Release(IDockingWindow* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static FORCEINLINE HRESULT IDockingWindow_GetWindow(IDockingWindow* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static FORCEINLINE HRESULT IDockingWindow_ContextSensitiveHelp(IDockingWindow* This,BOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IDockingWindow methods ***/
static FORCEINLINE HRESULT IDockingWindow_ShowDW(IDockingWindow* This,BOOL fShow) {
    return This->lpVtbl->ShowDW(This,fShow);
}
static FORCEINLINE HRESULT IDockingWindow_CloseDW(IDockingWindow* This,DWORD dwReserved) {
    return This->lpVtbl->CloseDW(This,dwReserved);
}
static FORCEINLINE HRESULT IDockingWindow_ResizeBorderDW(IDockingWindow* This,LPCRECT prcBorder,IUnknown *punkToolbarSite,BOOL fReserved) {
    return This->lpVtbl->ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved);
}
#endif
#endif

#endif


#endif  /* __IDockingWindow_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)
MIDL_INTERFACE("47d2657a-7b27-11d0-8ca9-00a0c92dbfe8")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDockingWindowFrame, 0x47d2657a, 0x7b27, 0x11d0, 0x8c,0xa9, 0x00,0xa0,0xc9,0x2d,0xbf,0xe8)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDockingWindowFrame_QueryInterface(IDockingWindowFrame* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDockingWindowFrame_AddRef(IDockingWindowFrame* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDockingWindowFrame_Release(IDockingWindowFrame* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static FORCEINLINE HRESULT IDockingWindowFrame_GetWindow(IDockingWindowFrame* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static FORCEINLINE HRESULT IDockingWindowFrame_ContextSensitiveHelp(IDockingWindowFrame* This,BOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IDockingWindowFrame methods ***/
static FORCEINLINE HRESULT IDockingWindowFrame_AddToolbar(IDockingWindowFrame* This,IUnknown *punkSrc,LPCWSTR pwszItem,DWORD dwAddFlags) {
    return This->lpVtbl->AddToolbar(This,punkSrc,pwszItem,dwAddFlags);
}
static FORCEINLINE HRESULT IDockingWindowFrame_RemoveToolbar(IDockingWindowFrame* This,IUnknown *punkSrc,DWORD dwRemoveFlags) {
    return This->lpVtbl->RemoveToolbar(This,punkSrc,dwRemoveFlags);
}
static FORCEINLINE HRESULT IDockingWindowFrame_FindToolbar(IDockingWindowFrame* This,LPCWSTR pwszItem,REFIID riid,LPVOID *ppvObj) {
    return This->lpVtbl->FindToolbar(This,pwszItem,riid,ppvObj);
}
#endif
#endif

#endif


#endif  /* __IDockingWindowFrame_INTERFACE_DEFINED__ */

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

typedef struct __WIDL_shobjidl_generated_name_00000027 {
    SIZE sizeDragImage;
    POINT ptOffset;
    HBITMAP hbmpDragImage;
    COLORREF crColorKey;
} SHDRAGIMAGE;
typedef struct __WIDL_shobjidl_generated_name_00000027 *LPSHDRAGIMAGE;
DEFINE_GUID(IID_IDragSourceHelper, 0xde5bf786, 0x477a, 0x11d2, 0x83,0x9d, 0x00,0xc0,0x4f,0xd9,0x18,0xd0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("de5bf786-477a-11d2-839d-00c04fd918d0")
IDragSourceHelper : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE InitializeFromBitmap(
        LPSHDRAGIMAGE pshdi,
        IDataObject *pDataObject) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDragSourceHelper, 0xde5bf786, 0x477a, 0x11d2, 0x83,0x9d, 0x00,0xc0,0x4f,0xd9,0x18,0xd0)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDragSourceHelper_QueryInterface(IDragSourceHelper* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDragSourceHelper_AddRef(IDragSourceHelper* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDragSourceHelper_Release(IDragSourceHelper* This) {
    return This->lpVtbl->Release(This);
}
/*** IDragSourceHelper methods ***/
static FORCEINLINE HRESULT IDragSourceHelper_InitializeFromBitmap(IDragSourceHelper* This,LPSHDRAGIMAGE pshdi,IDataObject *pDataObject) {
    return This->lpVtbl->InitializeFromBitmap(This,pshdi,pDataObject);
}
static FORCEINLINE HRESULT IDragSourceHelper_InitializeFromWindow(IDragSourceHelper* This,HWND hwnd,POINT *ppt,IDataObject *pDataObject) {
    return This->lpVtbl->InitializeFromWindow(This,hwnd,ppt,pDataObject);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("4657278b-411b-11d2-839a-00c04fd918d0")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDropTargetHelper, 0x4657278b, 0x411b, 0x11d2, 0x83,0x9a, 0x00,0xc0,0x4f,0xd9,0x18,0xd0)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDropTargetHelper_QueryInterface(IDropTargetHelper* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDropTargetHelper_AddRef(IDropTargetHelper* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDropTargetHelper_Release(IDropTargetHelper* This) {
    return This->lpVtbl->Release(This);
}
/*** IDropTargetHelper methods ***/
static FORCEINLINE HRESULT IDropTargetHelper_DragEnter(IDropTargetHelper* This,HWND hwndTarget,IDataObject *pDataObject,POINT *ppt,DWORD dwEffect) {
    return This->lpVtbl->DragEnter(This,hwndTarget,pDataObject,ppt,dwEffect);
}
static FORCEINLINE HRESULT IDropTargetHelper_DragLeave(IDropTargetHelper* This) {
    return This->lpVtbl->DragLeave(This);
}
static FORCEINLINE HRESULT IDropTargetHelper_DragOver(IDropTargetHelper* This,POINT *ppt,DWORD dwEffect) {
    return This->lpVtbl->DragOver(This,ppt,dwEffect);
}
static FORCEINLINE HRESULT IDropTargetHelper_Drop(IDropTargetHelper* This,IDataObject *pDataObject,POINT *ppt,DWORD dwEffect) {
    return This->lpVtbl->Drop(This,pDataObject,ppt,dwEffect);
}
static FORCEINLINE HRESULT IDropTargetHelper_Show(IDropTargetHelper* This,BOOL fShow) {
    return This->lpVtbl->Show(This,fShow);
}
#endif
#endif

#endif


#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_ITEMMENU          0x00000080
#define CMF_EXTENDEDVERBS     0x00000100
#define CMF_DISABLEDVERBS     0x00000200
#define CMF_ASYNCVERBSTATE    0x00000400
#define CMF_OPTIMIZEFORINVOKE 0x00000800
#define CMF_SYNCCASCADEMENU   0x00001000
#define CMF_DONOTPICKDEFAULT  0x00002000
#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)
MIDL_INTERFACE("000214e4-0000-0000-c000-000000000046")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IContextMenu, 0x000214e4, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IContextMenu_QueryInterface(IContextMenu* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IContextMenu_AddRef(IContextMenu* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IContextMenu_Release(IContextMenu* This) {
    return This->lpVtbl->Release(This);
}
/*** IContextMenu methods ***/
static FORCEINLINE HRESULT IContextMenu_QueryContextMenu(IContextMenu* This,HMENU hmenu,UINT indexMenu,UINT idCmdFirst,UINT idCmdLast,UINT uFlags) {
    return This->lpVtbl->QueryContextMenu(This,hmenu,indexMenu,idCmdFirst,idCmdLast,uFlags);
}
static FORCEINLINE HRESULT IContextMenu_InvokeCommand(IContextMenu* This,LPCMINVOKECOMMANDINFO lpici) {
    return This->lpVtbl->InvokeCommand(This,lpici);
}
static FORCEINLINE HRESULT IContextMenu_GetCommandString(IContextMenu* This,UINT_PTR idCmd,UINT uType,UINT *pwReserved,LPSTR pszName,UINT cchMax) {
    return This->lpVtbl->GetCommandString(This,idCmd,uType,pwReserved,pszName,cchMax);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("000214f4-0000-0000-c000-000000000046")
IContextMenu2 : public IContextMenu
{
    virtual HRESULT STDMETHODCALLTYPE HandleMenuMsg(
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IContextMenu2, 0x000214f4, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IContextMenu2_QueryInterface(IContextMenu2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IContextMenu2_AddRef(IContextMenu2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IContextMenu2_Release(IContextMenu2* This) {
    return This->lpVtbl->Release(This);
}
/*** IContextMenu methods ***/
static FORCEINLINE HRESULT IContextMenu2_QueryContextMenu(IContextMenu2* This,HMENU hmenu,UINT indexMenu,UINT idCmdFirst,UINT idCmdLast,UINT uFlags) {
    return This->lpVtbl->QueryContextMenu(This,hmenu,indexMenu,idCmdFirst,idCmdLast,uFlags);
}
static FORCEINLINE HRESULT IContextMenu2_InvokeCommand(IContextMenu2* This,LPCMINVOKECOMMANDINFO lpici) {
    return This->lpVtbl->InvokeCommand(This,lpici);
}
static FORCEINLINE HRESULT IContextMenu2_GetCommandString(IContextMenu2* This,UINT_PTR idCmd,UINT uType,UINT *pwReserved,LPSTR pszName,UINT cchMax) {
    return This->lpVtbl->GetCommandString(This,idCmd,uType,pwReserved,pszName,cchMax);
}
/*** IContextMenu2 methods ***/
static FORCEINLINE HRESULT IContextMenu2_HandleMenuMsg(IContextMenu2* This,UINT uMsg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->HandleMenuMsg(This,uMsg,wParam,lParam);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("bcfce0a0-ec17-11d0-8d10-00a0c90f2719")
IContextMenu3 : public IContextMenu2
{
    virtual HRESULT STDMETHODCALLTYPE HandleMenuMsg2(
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam,
        LRESULT *plResult) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IContextMenu3, 0xbcfce0a0, 0xec17, 0x11d0, 0x8d,0x10, 0x00,0xa0,0xc9,0x0f,0x27,0x19)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IContextMenu3_QueryInterface(IContextMenu3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IContextMenu3_AddRef(IContextMenu3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IContextMenu3_Release(IContextMenu3* This) {
    return This->lpVtbl->Release(This);
}
/*** IContextMenu methods ***/
static FORCEINLINE HRESULT IContextMenu3_QueryContextMenu(IContextMenu3* This,HMENU hmenu,UINT indexMenu,UINT idCmdFirst,UINT idCmdLast,UINT uFlags) {
    return This->lpVtbl->QueryContextMenu(This,hmenu,indexMenu,idCmdFirst,idCmdLast,uFlags);
}
static FORCEINLINE HRESULT IContextMenu3_InvokeCommand(IContextMenu3* This,LPCMINVOKECOMMANDINFO lpici) {
    return This->lpVtbl->InvokeCommand(This,lpici);
}
static FORCEINLINE HRESULT IContextMenu3_GetCommandString(IContextMenu3* This,UINT_PTR idCmd,UINT uType,UINT *pwReserved,LPSTR pszName,UINT cchMax) {
    return This->lpVtbl->GetCommandString(This,idCmd,uType,pwReserved,pszName,cchMax);
}
/*** IContextMenu2 methods ***/
static FORCEINLINE HRESULT IContextMenu3_HandleMenuMsg(IContextMenu3* This,UINT uMsg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->HandleMenuMsg(This,uMsg,wParam,lParam);
}
/*** IContextMenu3 methods ***/
static FORCEINLINE HRESULT IContextMenu3_HandleMenuMsg2(IContextMenu3* This,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *plResult) {
    return This->lpVtbl->HandleMenuMsg2(This,uMsg,wParam,lParam,plResult);
}
#endif
#endif

#endif


#endif  /* __IContextMenu3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IContextMenuCB interface
 */
#ifndef __IContextMenuCB_INTERFACE_DEFINED__
#define __IContextMenuCB_INTERFACE_DEFINED__

DEFINE_GUID(IID_IContextMenuCB, 0x3409e930, 0x5a39, 0x11d1, 0x83,0xfa, 0x00,0xa0,0xc9,0x0d,0xc8,0x49);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3409e930-5a39-11d1-83fa-00a0c90dc849")
IContextMenuCB : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CallBack(
        IShellFolder *psf,
        HWND hwndOwner,
        IDataObject *pdtobj,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IContextMenuCB, 0x3409e930, 0x5a39, 0x11d1, 0x83,0xfa, 0x00,0xa0,0xc9,0x0d,0xc8,0x49)
#endif
#else
typedef struct IContextMenuCBVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IContextMenuCB methods ***/
    HRESULT (STDMETHODCALLTYPE *CallBack)(
        IContextMenuCB *This,
        IShellFolder *psf,
        HWND hwndOwner,
        IDataObject *pdtobj,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam);

    END_INTERFACE
} IContextMenuCBVtbl;

interface IContextMenuCB {
    CONST_VTBL IContextMenuCBVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IContextMenuCB_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IContextMenuCB_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IContextMenuCB_Release(This) (This)->lpVtbl->Release(This)
/*** IContextMenuCB methods ***/
#define IContextMenuCB_CallBack(This,psf,hwndOwner,pdtobj,uMsg,wParam,lParam) (This)->lpVtbl->CallBack(This,psf,hwndOwner,pdtobj,uMsg,wParam,lParam)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IContextMenuCB_QueryInterface(IContextMenuCB* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IContextMenuCB_AddRef(IContextMenuCB* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IContextMenuCB_Release(IContextMenuCB* This) {
    return This->lpVtbl->Release(This);
}
/*** IContextMenuCB methods ***/
static FORCEINLINE HRESULT IContextMenuCB_CallBack(IContextMenuCB* This,IShellFolder *psf,HWND hwndOwner,IDataObject *pdtobj,UINT uMsg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->CallBack(This,psf,hwndOwner,pdtobj,uMsg,wParam,lParam);
}
#endif
#endif

#endif


#endif  /* __IContextMenuCB_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)
MIDL_INTERFACE("000214f5-0000-0000-c000-000000000046")
IShellExecuteHookA : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Execute(
        struct _SHELLEXECUTEINFOA *pei) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellExecuteHookA, 0x000214f5, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellExecuteHookA_QueryInterface(IShellExecuteHookA* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellExecuteHookA_AddRef(IShellExecuteHookA* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellExecuteHookA_Release(IShellExecuteHookA* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellExecuteHookA methods ***/
static FORCEINLINE HRESULT IShellExecuteHookA_Execute(IShellExecuteHookA* This,struct _SHELLEXECUTEINFOA *pei) {
    return This->lpVtbl->Execute(This,pei);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("000214fb-0000-0000-c000-000000000046")
IShellExecuteHookW : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Execute(
        struct _SHELLEXECUTEINFOW *pei) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellExecuteHookW, 0x000214fb, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellExecuteHookW_QueryInterface(IShellExecuteHookW* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellExecuteHookW_AddRef(IShellExecuteHookW* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellExecuteHookW_Release(IShellExecuteHookW* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellExecuteHookW methods ***/
static FORCEINLINE HRESULT IShellExecuteHookW_Execute(IShellExecuteHookW* This,struct _SHELLEXECUTEINFOW *pei) {
    return This->lpVtbl->Execute(This,pei);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("45e2b4ae-b1c3-11d0-b92f-00a0c90312e1")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellLinkDataList, 0x45e2b4ae, 0xb1c3, 0x11d0, 0xb9,0x2f, 0x00,0xa0,0xc9,0x03,0x12,0xe1)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellLinkDataList_QueryInterface(IShellLinkDataList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellLinkDataList_AddRef(IShellLinkDataList* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellLinkDataList_Release(IShellLinkDataList* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellLinkDataList methods ***/
static FORCEINLINE HRESULT IShellLinkDataList_AddDataBlock(IShellLinkDataList* This,void *pDataBlock) {
    return This->lpVtbl->AddDataBlock(This,pDataBlock);
}
static FORCEINLINE HRESULT IShellLinkDataList_CopyDataBlock(IShellLinkDataList* This,DWORD dwSig,void **ppDataBlock) {
    return This->lpVtbl->CopyDataBlock(This,dwSig,ppDataBlock);
}
static FORCEINLINE HRESULT IShellLinkDataList_RemoveDataBlock(IShellLinkDataList* This,DWORD dwSig) {
    return This->lpVtbl->RemoveDataBlock(This,dwSig);
}
static FORCEINLINE HRESULT IShellLinkDataList_GetFlags(IShellLinkDataList* This,DWORD *pdwFlags) {
    return This->lpVtbl->GetFlags(This,pdwFlags);
}
static FORCEINLINE HRESULT IShellLinkDataList_SetFlags(IShellLinkDataList* This,DWORD dwFlags) {
    return This->lpVtbl->SetFlags(This,dwFlags);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("5cd52983-9449-11d2-963a-00c04f79adf0")
IResolveShellLink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ResolveShellLink(
        IUnknown *punk,
        HWND hwnd,
        DWORD fFlags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IResolveShellLink, 0x5cd52983, 0x9449, 0x11d2, 0x96,0x3a, 0x00,0xc0,0x4f,0x79,0xad,0xf0)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IResolveShellLink_QueryInterface(IResolveShellLink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IResolveShellLink_AddRef(IResolveShellLink* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IResolveShellLink_Release(IResolveShellLink* This) {
    return This->lpVtbl->Release(This);
}
/*** IResolveShellLink methods ***/
static FORCEINLINE HRESULT IResolveShellLink_ResolveShellLink(IResolveShellLink* This,IUnknown *punk,HWND hwnd,DWORD fFlags) {
    return This->lpVtbl->ResolveShellLink(This,punk,hwnd,fFlags);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("ac60f6a0-0fd9-11d0-99cb-00c04fd64497")
IURLSearchHook : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Translate(
        LPWSTR lpwszSearchURL,
        DWORD cchBufferSize) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IURLSearchHook, 0xac60f6a0, 0x0fd9, 0x11d0, 0x99,0xcb, 0x00,0xc0,0x4f,0xd6,0x44,0x97)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IURLSearchHook_QueryInterface(IURLSearchHook* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IURLSearchHook_AddRef(IURLSearchHook* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IURLSearchHook_Release(IURLSearchHook* This) {
    return This->lpVtbl->Release(This);
}
/*** IURLSearchHook methods ***/
static FORCEINLINE HRESULT IURLSearchHook_Translate(IURLSearchHook* This,LPWSTR lpwszSearchURL,DWORD cchBufferSize) {
    return This->lpVtbl->Translate(This,lpwszSearchURL,cchBufferSize);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("09f656a2-41af-480c-88f7-16cc0d164615")
ISearchContext : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetSearchUrl(
        BSTR *pbstrSearchUrl) = 0;

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

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISearchContext, 0x09f656a2, 0x41af, 0x480c, 0x88,0xf7, 0x16,0xcc,0x0d,0x16,0x46,0x15)
#endif
#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,
        DWORD *pdwSearchStyle);

    END_INTERFACE
} ISearchContextVtbl;

interface ISearchContext {
    CONST_VTBL ISearchContextVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ISearchContext_QueryInterface(ISearchContext* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ISearchContext_AddRef(ISearchContext* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ISearchContext_Release(ISearchContext* This) {
    return This->lpVtbl->Release(This);
}
/*** ISearchContext methods ***/
static FORCEINLINE HRESULT ISearchContext_GetSearchUrl(ISearchContext* This,BSTR *pbstrSearchUrl) {
    return This->lpVtbl->GetSearchUrl(This,pbstrSearchUrl);
}
static FORCEINLINE HRESULT ISearchContext_GetSearchText(ISearchContext* This,BSTR *pbstrSearchText) {
    return This->lpVtbl->GetSearchText(This,pbstrSearchText);
}
static FORCEINLINE HRESULT ISearchContext_GetSearchStyle(ISearchContext* This,DWORD *pdwSearchStyle) {
    return This->lpVtbl->GetSearchStyle(This,pdwSearchStyle);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("5ee44da4-6d32-46e3-86bc-07540dedd0e0")
IURLSearchHook2 : public IURLSearchHook
{
    virtual HRESULT STDMETHODCALLTYPE TranslateWithSearchContext(
        LPWSTR lpwszSearchURL,
        DWORD cchBufferSize,
        ISearchContext *pSearchContext) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IURLSearchHook2, 0x5ee44da4, 0x6d32, 0x46e3, 0x86,0xbc, 0x07,0x54,0x0d,0xed,0xd0,0xe0)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IURLSearchHook2_QueryInterface(IURLSearchHook2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IURLSearchHook2_AddRef(IURLSearchHook2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IURLSearchHook2_Release(IURLSearchHook2* This) {
    return This->lpVtbl->Release(This);
}
/*** IURLSearchHook methods ***/
static FORCEINLINE HRESULT IURLSearchHook2_Translate(IURLSearchHook2* This,LPWSTR lpwszSearchURL,DWORD cchBufferSize) {
    return This->lpVtbl->Translate(This,lpwszSearchURL,cchBufferSize);
}
/*** IURLSearchHook2 methods ***/
static FORCEINLINE HRESULT IURLSearchHook2_TranslateWithSearchContext(IURLSearchHook2* This,LPWSTR lpwszSearchURL,DWORD cchBufferSize,ISearchContext *pSearchContext) {
    return This->lpVtbl->TranslateWithSearchContext(This,lpwszSearchURL,cchBufferSize,pSearchContext);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("000214e1-0000-0000-c000-000000000046")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INewShortcutHookA, 0x000214e1, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INewShortcutHookA_QueryInterface(INewShortcutHookA* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INewShortcutHookA_AddRef(INewShortcutHookA* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INewShortcutHookA_Release(INewShortcutHookA* This) {
    return This->lpVtbl->Release(This);
}
/*** INewShortcutHookA methods ***/
static FORCEINLINE HRESULT INewShortcutHookA_SetReferent(INewShortcutHookA* This,LPCSTR pcszReferent,HWND hwnd) {
    return This->lpVtbl->SetReferent(This,pcszReferent,hwnd);
}
static FORCEINLINE HRESULT INewShortcutHookA_GetReferent(INewShortcutHookA* This,LPSTR pcszReferent,int cchReferent) {
    return This->lpVtbl->GetReferent(This,pcszReferent,cchReferent);
}
static FORCEINLINE HRESULT INewShortcutHookA_SetFolder(INewShortcutHookA* This,LPCSTR pcszReferent) {
    return This->lpVtbl->SetFolder(This,pcszReferent);
}
static FORCEINLINE HRESULT INewShortcutHookA_GetFolder(INewShortcutHookA* This,LPSTR pcszReferent,int cchFolder) {
    return This->lpVtbl->GetFolder(This,pcszReferent,cchFolder);
}
static FORCEINLINE HRESULT INewShortcutHookA_GetName(INewShortcutHookA* This,LPSTR pszName,int cchName) {
    return This->lpVtbl->GetName(This,pszName,cchName);
}
static FORCEINLINE HRESULT INewShortcutHookA_GetExtension(INewShortcutHookA* This,LPSTR pszExtension,int cchExtension) {
    return This->lpVtbl->GetExtension(This,pszExtension,cchExtension);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("000214f7-0000-0000-c000-000000000046")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INewShortcutHookW, 0x000214f7, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INewShortcutHookW_QueryInterface(INewShortcutHookW* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INewShortcutHookW_AddRef(INewShortcutHookW* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INewShortcutHookW_Release(INewShortcutHookW* This) {
    return This->lpVtbl->Release(This);
}
/*** INewShortcutHookW methods ***/
static FORCEINLINE HRESULT INewShortcutHookW_SetReferent(INewShortcutHookW* This,LPCWSTR pcszReferent,HWND hwnd) {
    return This->lpVtbl->SetReferent(This,pcszReferent,hwnd);
}
static FORCEINLINE HRESULT INewShortcutHookW_GetReferent(INewShortcutHookW* This,LPWSTR pcszReferent,int cchReferent) {
    return This->lpVtbl->GetReferent(This,pcszReferent,cchReferent);
}
static FORCEINLINE HRESULT INewShortcutHookW_SetFolder(INewShortcutHookW* This,LPCWSTR pcszReferent) {
    return This->lpVtbl->SetFolder(This,pcszReferent);
}
static FORCEINLINE HRESULT INewShortcutHookW_GetFolder(INewShortcutHookW* This,LPWSTR pcszReferent,int cchFolder) {
    return This->lpVtbl->GetFolder(This,pcszReferent,cchFolder);
}
static FORCEINLINE HRESULT INewShortcutHookW_GetName(INewShortcutHookW* This,LPWSTR pszName,int cchName) {
    return This->lpVtbl->GetName(This,pszName,cchName);
}
static FORCEINLINE HRESULT INewShortcutHookW_GetExtension(INewShortcutHookW* This,LPWSTR pszExtension,int cchExtension) {
    return This->lpVtbl->GetExtension(This,pszExtension,cchExtension);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("85788d00-6807-11d0-b810-00c04fd706ec")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRunnableTask, 0x85788d00, 0x6807, 0x11d0, 0xb8,0x10, 0x00,0xc0,0x4f,0xd7,0x06,0xec)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IRunnableTask_QueryInterface(IRunnableTask* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IRunnableTask_AddRef(IRunnableTask* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IRunnableTask_Release(IRunnableTask* This) {
    return This->lpVtbl->Release(This);
}
/*** IRunnableTask methods ***/
static FORCEINLINE HRESULT IRunnableTask_Run(IRunnableTask* This) {
    return This->lpVtbl->Run(This);
}
static FORCEINLINE HRESULT IRunnableTask_Kill(IRunnableTask* This,BOOL fWait) {
    return This->lpVtbl->Kill(This,fWait);
}
static FORCEINLINE HRESULT IRunnableTask_Suspend(IRunnableTask* This) {
    return This->lpVtbl->Suspend(This);
}
static FORCEINLINE HRESULT IRunnableTask_Resume(IRunnableTask* This) {
    return This->lpVtbl->Resume(This);
}
static FORCEINLINE ULONG IRunnableTask_IsRunning(IRunnableTask* This) {
    return This->lpVtbl->IsRunning(This);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("d82be2b1-5764-11d0-a96e-00c04fd705a2")
IShellChangeNotify : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnChange(
        LONG lEvent,
        LPCITEMIDLIST pidl1,
        LPCITEMIDLIST pidl2) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellChangeNotify, 0xd82be2b1, 0x5764, 0x11d0, 0xa9,0x6e, 0x00,0xc0,0x4f,0xd7,0x05,0xa2)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellChangeNotify_QueryInterface(IShellChangeNotify* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellChangeNotify_AddRef(IShellChangeNotify* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellChangeNotify_Release(IShellChangeNotify* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellChangeNotify methods ***/
static FORCEINLINE HRESULT IShellChangeNotify_OnChange(IShellChangeNotify* This,LONG lEvent,LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2) {
    return This->lpVtbl->OnChange(This,lEvent,pidl1,pidl2);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("01e18d10-4d8b-11d2-855d-006008059367")
IFileSystemBindData : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFindData(
        const WIN32_FIND_DATAW *pfd) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFileSystemBindData, 0x01e18d10, 0x4d8b, 0x11d2, 0x85,0x5d, 0x00,0x60,0x08,0x05,0x93,0x67)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFileSystemBindData_QueryInterface(IFileSystemBindData* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFileSystemBindData_AddRef(IFileSystemBindData* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFileSystemBindData_Release(IFileSystemBindData* This) {
    return This->lpVtbl->Release(This);
}
/*** IFileSystemBindData methods ***/
static FORCEINLINE HRESULT IFileSystemBindData_SetFindData(IFileSystemBindData* This,const WIN32_FIND_DATAW *pfd) {
    return This->lpVtbl->SetFindData(This,pfd);
}
static FORCEINLINE HRESULT IFileSystemBindData_GetFindData(IFileSystemBindData* This,WIN32_FIND_DATAW *pfd) {
    return This->lpVtbl->GetFindData(This,pfd);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("56fdf342-fd6d-11d0-958a-006097c9a090")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITaskbarList, 0x56fdf342, 0xfd6d, 0x11d0, 0x95,0x8a, 0x00,0x60,0x97,0xc9,0xa0,0x90)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITaskbarList_QueryInterface(ITaskbarList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITaskbarList_AddRef(ITaskbarList* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITaskbarList_Release(ITaskbarList* This) {
    return This->lpVtbl->Release(This);
}
/*** ITaskbarList methods ***/
static FORCEINLINE HRESULT ITaskbarList_HrInit(ITaskbarList* This) {
    return This->lpVtbl->HrInit(This);
}
static FORCEINLINE HRESULT ITaskbarList_AddTab(ITaskbarList* This,HWND hwnd) {
    return This->lpVtbl->AddTab(This,hwnd);
}
static FORCEINLINE HRESULT ITaskbarList_DeleteTab(ITaskbarList* This,HWND hwnd) {
    return This->lpVtbl->DeleteTab(This,hwnd);
}
static FORCEINLINE HRESULT ITaskbarList_ActivateTab(ITaskbarList* This,HWND hwnd) {
    return This->lpVtbl->ActivateTab(This,hwnd);
}
static FORCEINLINE HRESULT ITaskbarList_SetActiveAlt(ITaskbarList* This,HWND hwnd) {
    return This->lpVtbl->SetActiveAlt(This,hwnd);
}
#endif
#endif

#endif


#endif  /* __ITaskbarList_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITaskbarList2 interface
 */
#ifndef __ITaskbarList2_INTERFACE_DEFINED__
#define __ITaskbarList2_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITaskbarList2, 0x602d4995, 0xb13a, 0x429b, 0xa6,0x6e, 0x19,0x35,0xe4,0x4f,0x43,0x17);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("602d4995-b13a-429b-a66e-1935e44f4317")
ITaskbarList2 : public ITaskbarList
{
    virtual HRESULT STDMETHODCALLTYPE MarkFullscreenWindow(
        HWND hwnd,
        BOOL fullscreen) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITaskbarList2, 0x602d4995, 0xb13a, 0x429b, 0xa6,0x6e, 0x19,0x35,0xe4,0x4f,0x43,0x17)
#endif
#else
typedef struct ITaskbarList2Vtbl {
    BEGIN_INTERFACE

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

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

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

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

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

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

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

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

    /*** ITaskbarList2 methods ***/
    HRESULT (STDMETHODCALLTYPE *MarkFullscreenWindow)(
        ITaskbarList2 *This,
        HWND hwnd,
        BOOL fullscreen);

    END_INTERFACE
} ITaskbarList2Vtbl;

interface ITaskbarList2 {
    CONST_VTBL ITaskbarList2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITaskbarList2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITaskbarList2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITaskbarList2_Release(This) (This)->lpVtbl->Release(This)
/*** ITaskbarList methods ***/
#define ITaskbarList2_HrInit(This) (This)->lpVtbl->HrInit(This)
#define ITaskbarList2_AddTab(This,hwnd) (This)->lpVtbl->AddTab(This,hwnd)
#define ITaskbarList2_DeleteTab(This,hwnd) (This)->lpVtbl->DeleteTab(This,hwnd)
#define ITaskbarList2_ActivateTab(This,hwnd) (This)->lpVtbl->ActivateTab(This,hwnd)
#define ITaskbarList2_SetActiveAlt(This,hwnd) (This)->lpVtbl->SetActiveAlt(This,hwnd)
/*** ITaskbarList2 methods ***/
#define ITaskbarList2_MarkFullscreenWindow(This,hwnd,fullscreen) (This)->lpVtbl->MarkFullscreenWindow(This,hwnd,fullscreen)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITaskbarList2_QueryInterface(ITaskbarList2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITaskbarList2_AddRef(ITaskbarList2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITaskbarList2_Release(ITaskbarList2* This) {
    return This->lpVtbl->Release(This);
}
/*** ITaskbarList methods ***/
static FORCEINLINE HRESULT ITaskbarList2_HrInit(ITaskbarList2* This) {
    return This->lpVtbl->HrInit(This);
}
static FORCEINLINE HRESULT ITaskbarList2_AddTab(ITaskbarList2* This,HWND hwnd) {
    return This->lpVtbl->AddTab(This,hwnd);
}
static FORCEINLINE HRESULT ITaskbarList2_DeleteTab(ITaskbarList2* This,HWND hwnd) {
    return This->lpVtbl->DeleteTab(This,hwnd);
}
static FORCEINLINE HRESULT ITaskbarList2_ActivateTab(ITaskbarList2* This,HWND hwnd) {
    return This->lpVtbl->ActivateTab(This,hwnd);
}
static FORCEINLINE HRESULT ITaskbarList2_SetActiveAlt(ITaskbarList2* This,HWND hwnd) {
    return This->lpVtbl->SetActiveAlt(This,hwnd);
}
/*** ITaskbarList2 methods ***/
static FORCEINLINE HRESULT ITaskbarList2_MarkFullscreenWindow(ITaskbarList2* This,HWND hwnd,BOOL fullscreen) {
    return This->lpVtbl->MarkFullscreenWindow(This,hwnd,fullscreen);
}
#endif
#endif

#endif


#endif  /* __ITaskbarList2_INTERFACE_DEFINED__ */

#ifdef MIDL_PASS
typedef IUnknown *HIMAGELIST;
#endif
typedef enum THUMBBUTTONFLAGS {
    THBF_ENABLED = 0x0,
    THBF_DISABLED = 0x1,
    THBF_DISMISSONCLICK = 0x2,
    THBF_NOBACKGROUND = 0x4,
    THBF_HIDDEN = 0x8,
    THBF_NONINTERACTIVE = 0x10
} THUMBBUTTONFLAGS;
DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONFLAGS)
typedef enum THUMBBUTTONMASK {
    THB_BITMAP = 0x1,
    THB_ICON = 0x2,
    THB_TOOLTIP = 0x4,
    THB_FLAGS = 0x8
} THUMBBUTTONMASK;
DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONMASK)
#include <pshpack8.h>
typedef struct THUMBBUTTON {
    THUMBBUTTONMASK dwMask;
    UINT iId;
    UINT iBitmap;
    HICON hIcon;
    WCHAR szTip[260];
    THUMBBUTTONFLAGS dwFlags;
} THUMBBUTTON;
typedef struct THUMBBUTTON *LPTHUMBBUTTON;
#include <poppack.h>
/*****************************************************************************
 * ITaskbarList3 interface
 */
#ifndef __ITaskbarList3_INTERFACE_DEFINED__
#define __ITaskbarList3_INTERFACE_DEFINED__

typedef enum TBPFLAG {
    TBPF_NOPROGRESS = 0x0,
    TBPF_INDETERMINATE = 0x1,
    TBPF_NORMAL = 0x2,
    TBPF_ERROR = 0x4,
    TBPF_PAUSED = 0x8
} TBPFLAG;
DEFINE_ENUM_FLAG_OPERATORS(TBPFLAG)
DEFINE_GUID(IID_ITaskbarList3, 0xea1afb91, 0x9e28, 0x4b86, 0x90,0xe9, 0x9e,0x9f,0x8a,0x5e,0xef,0xaf);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ea1afb91-9e28-4b86-90e9-9e9f8a5eefaf")
ITaskbarList3 : public ITaskbarList2
{
    virtual HRESULT STDMETHODCALLTYPE SetProgressValue(
        HWND hwnd,
        ULONGLONG ullCompleted,
        ULONGLONG ullTotal) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetProgressState(
        HWND hwnd,
        TBPFLAG tbpFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE RegisterTab(
        HWND hwndTab,
        HWND hwndMDI) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnregisterTab(
        HWND hwndTab) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTabOrder(
        HWND hwndTab,
        HWND hwndInsertBefore) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTabActive(
        HWND hwndTab,
        HWND hwndMDI,
        DWORD dwReserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE ThumbBarAddButtons(
        HWND hwnd,
        UINT cButtons,
        LPTHUMBBUTTON pButton) = 0;

    virtual HRESULT STDMETHODCALLTYPE ThumbBarUpdateButtons(
        HWND hwnd,
        UINT cButtons,
        LPTHUMBBUTTON pButton) = 0;

    virtual HRESULT STDMETHODCALLTYPE ThumbBarSetImageList(
        HWND hwnd,
        HIMAGELIST himl) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOverlayIcon(
        HWND hwnd,
        HICON hIcon,
        LPCWSTR pszDescription) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetThumbnailTooltip(
        HWND hwnd,
        LPCWSTR pszTip) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetThumbnailClip(
        HWND hwnd,
        RECT *prcClip) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITaskbarList3, 0xea1afb91, 0x9e28, 0x4b86, 0x90,0xe9, 0x9e,0x9f,0x8a,0x5e,0xef,0xaf)
#endif
#else
typedef struct ITaskbarList3Vtbl {
    BEGIN_INTERFACE

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

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

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

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

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

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

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

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

    /*** ITaskbarList2 methods ***/
    HRESULT (STDMETHODCALLTYPE *MarkFullscreenWindow)(
        ITaskbarList3 *This,
        HWND hwnd,
        BOOL fullscreen);

    /*** ITaskbarList3 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetProgressValue)(
        ITaskbarList3 *This,
        HWND hwnd,
        ULONGLONG ullCompleted,
        ULONGLONG ullTotal);

    HRESULT (STDMETHODCALLTYPE *SetProgressState)(
        ITaskbarList3 *This,
        HWND hwnd,
        TBPFLAG tbpFlags);

    HRESULT (STDMETHODCALLTYPE *RegisterTab)(
        ITaskbarList3 *This,
        HWND hwndTab,
        HWND hwndMDI);

    HRESULT (STDMETHODCALLTYPE *UnregisterTab)(
        ITaskbarList3 *This,
        HWND hwndTab);

    HRESULT (STDMETHODCALLTYPE *SetTabOrder)(
        ITaskbarList3 *This,
        HWND hwndTab,
        HWND hwndInsertBefore);

    HRESULT (STDMETHODCALLTYPE *SetTabActive)(
        ITaskbarList3 *This,
        HWND hwndTab,
        HWND hwndMDI,
        DWORD dwReserved);

    HRESULT (STDMETHODCALLTYPE *ThumbBarAddButtons)(
        ITaskbarList3 *This,
        HWND hwnd,
        UINT cButtons,
        LPTHUMBBUTTON pButton);

    HRESULT (STDMETHODCALLTYPE *ThumbBarUpdateButtons)(
        ITaskbarList3 *This,
        HWND hwnd,
        UINT cButtons,
        LPTHUMBBUTTON pButton);

    HRESULT (STDMETHODCALLTYPE *ThumbBarSetImageList)(
        ITaskbarList3 *This,
        HWND hwnd,
        HIMAGELIST himl);

    HRESULT (STDMETHODCALLTYPE *SetOverlayIcon)(
        ITaskbarList3 *This,
        HWND hwnd,
        HICON hIcon,
        LPCWSTR pszDescription);

    HRESULT (STDMETHODCALLTYPE *SetThumbnailTooltip)(
        ITaskbarList3 *This,
        HWND hwnd,
        LPCWSTR pszTip);

    HRESULT (STDMETHODCALLTYPE *SetThumbnailClip)(
        ITaskbarList3 *This,
        HWND hwnd,
        RECT *prcClip);

    END_INTERFACE
} ITaskbarList3Vtbl;

interface ITaskbarList3 {
    CONST_VTBL ITaskbarList3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITaskbarList3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITaskbarList3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITaskbarList3_Release(This) (This)->lpVtbl->Release(This)
/*** ITaskbarList methods ***/
#define ITaskbarList3_HrInit(This) (This)->lpVtbl->HrInit(This)
#define ITaskbarList3_AddTab(This,hwnd) (This)->lpVtbl->AddTab(This,hwnd)
#define ITaskbarList3_DeleteTab(This,hwnd) (This)->lpVtbl->DeleteTab(This,hwnd)
#define ITaskbarList3_ActivateTab(This,hwnd) (This)->lpVtbl->ActivateTab(This,hwnd)
#define ITaskbarList3_SetActiveAlt(This,hwnd) (This)->lpVtbl->SetActiveAlt(This,hwnd)
/*** ITaskbarList2 methods ***/
#define ITaskbarList3_MarkFullscreenWindow(This,hwnd,fullscreen) (This)->lpVtbl->MarkFullscreenWindow(This,hwnd,fullscreen)
/*** ITaskbarList3 methods ***/
#define ITaskbarList3_SetProgressValue(This,hwnd,ullCompleted,ullTotal) (This)->lpVtbl->SetProgressValue(This,hwnd,ullCompleted,ullTotal)
#define ITaskbarList3_SetProgressState(This,hwnd,tbpFlags) (This)->lpVtbl->SetProgressState(This,hwnd,tbpFlags)
#define ITaskbarList3_RegisterTab(This,hwndTab,hwndMDI) (This)->lpVtbl->RegisterTab(This,hwndTab,hwndMDI)
#define ITaskbarList3_UnregisterTab(This,hwndTab) (This)->lpVtbl->UnregisterTab(This,hwndTab)
#define ITaskbarList3_SetTabOrder(This,hwndTab,hwndInsertBefore) (This)->lpVtbl->SetTabOrder(This,hwndTab,hwndInsertBefore)
#define ITaskbarList3_SetTabActive(This,hwndTab,hwndMDI,dwReserved) (This)->lpVtbl->SetTabActive(This,hwndTab,hwndMDI,dwReserved)
#define ITaskbarList3_ThumbBarAddButtons(This,hwnd,cButtons,pButton) (This)->lpVtbl->ThumbBarAddButtons(This,hwnd,cButtons,pButton)
#define ITaskbarList3_ThumbBarUpdateButtons(This,hwnd,cButtons,pButton) (This)->lpVtbl->ThumbBarUpdateButtons(This,hwnd,cButtons,pButton)
#define ITaskbarList3_ThumbBarSetImageList(This,hwnd,himl) (This)->lpVtbl->ThumbBarSetImageList(This,hwnd,himl)
#define ITaskbarList3_SetOverlayIcon(This,hwnd,hIcon,pszDescription) (This)->lpVtbl->SetOverlayIcon(This,hwnd,hIcon,pszDescription)
#define ITaskbarList3_SetThumbnailTooltip(This,hwnd,pszTip) (This)->lpVtbl->SetThumbnailTooltip(This,hwnd,pszTip)
#define ITaskbarList3_SetThumbnailClip(This,hwnd,prcClip) (This)->lpVtbl->SetThumbnailClip(This,hwnd,prcClip)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITaskbarList3_QueryInterface(ITaskbarList3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITaskbarList3_AddRef(ITaskbarList3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITaskbarList3_Release(ITaskbarList3* This) {
    return This->lpVtbl->Release(This);
}
/*** ITaskbarList methods ***/
static FORCEINLINE HRESULT ITaskbarList3_HrInit(ITaskbarList3* This) {
    return This->lpVtbl->HrInit(This);
}
static FORCEINLINE HRESULT ITaskbarList3_AddTab(ITaskbarList3* This,HWND hwnd) {
    return This->lpVtbl->AddTab(This,hwnd);
}
static FORCEINLINE HRESULT ITaskbarList3_DeleteTab(ITaskbarList3* This,HWND hwnd) {
    return This->lpVtbl->DeleteTab(This,hwnd);
}
static FORCEINLINE HRESULT ITaskbarList3_ActivateTab(ITaskbarList3* This,HWND hwnd) {
    return This->lpVtbl->ActivateTab(This,hwnd);
}
static FORCEINLINE HRESULT ITaskbarList3_SetActiveAlt(ITaskbarList3* This,HWND hwnd) {
    return This->lpVtbl->SetActiveAlt(This,hwnd);
}
/*** ITaskbarList2 methods ***/
static FORCEINLINE HRESULT ITaskbarList3_MarkFullscreenWindow(ITaskbarList3* This,HWND hwnd,BOOL fullscreen) {
    return This->lpVtbl->MarkFullscreenWindow(This,hwnd,fullscreen);
}
/*** ITaskbarList3 methods ***/
static FORCEINLINE HRESULT ITaskbarList3_SetProgressValue(ITaskbarList3* This,HWND hwnd,ULONGLONG ullCompleted,ULONGLONG ullTotal) {
    return This->lpVtbl->SetProgressValue(This,hwnd,ullCompleted,ullTotal);
}
static FORCEINLINE HRESULT ITaskbarList3_SetProgressState(ITaskbarList3* This,HWND hwnd,TBPFLAG tbpFlags) {
    return This->lpVtbl->SetProgressState(This,hwnd,tbpFlags);
}
static FORCEINLINE HRESULT ITaskbarList3_RegisterTab(ITaskbarList3* This,HWND hwndTab,HWND hwndMDI) {
    return This->lpVtbl->RegisterTab(This,hwndTab,hwndMDI);
}
static FORCEINLINE HRESULT ITaskbarList3_UnregisterTab(ITaskbarList3* This,HWND hwndTab) {
    return This->lpVtbl->UnregisterTab(This,hwndTab);
}
static FORCEINLINE HRESULT ITaskbarList3_SetTabOrder(ITaskbarList3* This,HWND hwndTab,HWND hwndInsertBefore) {
    return This->lpVtbl->SetTabOrder(This,hwndTab,hwndInsertBefore);
}
static FORCEINLINE HRESULT ITaskbarList3_SetTabActive(ITaskbarList3* This,HWND hwndTab,HWND hwndMDI,DWORD dwReserved) {
    return This->lpVtbl->SetTabActive(This,hwndTab,hwndMDI,dwReserved);
}
static FORCEINLINE HRESULT ITaskbarList3_ThumbBarAddButtons(ITaskbarList3* This,HWND hwnd,UINT cButtons,LPTHUMBBUTTON pButton) {
    return This->lpVtbl->ThumbBarAddButtons(This,hwnd,cButtons,pButton);
}
static FORCEINLINE HRESULT ITaskbarList3_ThumbBarUpdateButtons(ITaskbarList3* This,HWND hwnd,UINT cButtons,LPTHUMBBUTTON pButton) {
    return This->lpVtbl->ThumbBarUpdateButtons(This,hwnd,cButtons,pButton);
}
static FORCEINLINE HRESULT ITaskbarList3_ThumbBarSetImageList(ITaskbarList3* This,HWND hwnd,HIMAGELIST himl) {
    return This->lpVtbl->ThumbBarSetImageList(This,hwnd,himl);
}
static FORCEINLINE HRESULT ITaskbarList3_SetOverlayIcon(ITaskbarList3* This,HWND hwnd,HICON hIcon,LPCWSTR pszDescription) {
    return This->lpVtbl->SetOverlayIcon(This,hwnd,hIcon,pszDescription);
}
static FORCEINLINE HRESULT ITaskbarList3_SetThumbnailTooltip(ITaskbarList3* This,HWND hwnd,LPCWSTR pszTip) {
    return This->lpVtbl->SetThumbnailTooltip(This,hwnd,pszTip);
}
static FORCEINLINE HRESULT ITaskbarList3_SetThumbnailClip(ITaskbarList3* This,HWND hwnd,RECT *prcClip) {
    return This->lpVtbl->SetThumbnailClip(This,hwnd,prcClip);
}
#endif
#endif

#endif


#endif  /* __ITaskbarList3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITaskbarList4 interface
 */
#ifndef __ITaskbarList4_INTERFACE_DEFINED__
#define __ITaskbarList4_INTERFACE_DEFINED__

typedef enum STPFLAG {
    STPF_NONE = 0x0,
    STPF_USEAPPTHUMBNAILALWAYS = 0x1,
    STPF_USEAPPTHUMBNAILWHENACTIVE = 0x2,
    STPF_USEAPPPEEKALWAYS = 0x4,
    STPF_USEAPPPEEKWHENACTIVE = 0x8
} STPFLAG;
DEFINE_ENUM_FLAG_OPERATORS(STPFLAG)
DEFINE_GUID(IID_ITaskbarList4, 0xc43dc798, 0x95d1, 0x4bea, 0x90,0x30, 0xbb,0x99,0xe2,0x98,0x3a,0x1a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c43dc798-95d1-4bea-9030-bb99e2983a1a")
ITaskbarList4 : public ITaskbarList3
{
    virtual HRESULT STDMETHODCALLTYPE SetTabProperties(
        HWND hwndTab,
        STPFLAG stpFlags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITaskbarList4, 0xc43dc798, 0x95d1, 0x4bea, 0x90,0x30, 0xbb,0x99,0xe2,0x98,0x3a,0x1a)
#endif
#else
typedef struct ITaskbarList4Vtbl {
    BEGIN_INTERFACE

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

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

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

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

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

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

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

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

    /*** ITaskbarList2 methods ***/
    HRESULT (STDMETHODCALLTYPE *MarkFullscreenWindow)(
        ITaskbarList4 *This,
        HWND hwnd,
        BOOL fullscreen);

    /*** ITaskbarList3 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetProgressValue)(
        ITaskbarList4 *This,
        HWND hwnd,
        ULONGLONG ullCompleted,
        ULONGLONG ullTotal);

    HRESULT (STDMETHODCALLTYPE *SetProgressState)(
        ITaskbarList4 *This,
        HWND hwnd,
        TBPFLAG tbpFlags);

    HRESULT (STDMETHODCALLTYPE *RegisterTab)(
        ITaskbarList4 *This,
        HWND hwndTab,
        HWND hwndMDI);

    HRESULT (STDMETHODCALLTYPE *UnregisterTab)(
        ITaskbarList4 *This,
        HWND hwndTab);

    HRESULT (STDMETHODCALLTYPE *SetTabOrder)(
        ITaskbarList4 *This,
        HWND hwndTab,
        HWND hwndInsertBefore);

    HRESULT (STDMETHODCALLTYPE *SetTabActive)(
        ITaskbarList4 *This,
        HWND hwndTab,
        HWND hwndMDI,
        DWORD dwReserved);

    HRESULT (STDMETHODCALLTYPE *ThumbBarAddButtons)(
        ITaskbarList4 *This,
        HWND hwnd,
        UINT cButtons,
        LPTHUMBBUTTON pButton);

    HRESULT (STDMETHODCALLTYPE *ThumbBarUpdateButtons)(
        ITaskbarList4 *This,
        HWND hwnd,
        UINT cButtons,
        LPTHUMBBUTTON pButton);

    HRESULT (STDMETHODCALLTYPE *ThumbBarSetImageList)(
        ITaskbarList4 *This,
        HWND hwnd,
        HIMAGELIST himl);

    HRESULT (STDMETHODCALLTYPE *SetOverlayIcon)(
        ITaskbarList4 *This,
        HWND hwnd,
        HICON hIcon,
        LPCWSTR pszDescription);

    HRESULT (STDMETHODCALLTYPE *SetThumbnailTooltip)(
        ITaskbarList4 *This,
        HWND hwnd,
        LPCWSTR pszTip);

    HRESULT (STDMETHODCALLTYPE *SetThumbnailClip)(
        ITaskbarList4 *This,
        HWND hwnd,
        RECT *prcClip);

    /*** ITaskbarList4 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetTabProperties)(
        ITaskbarList4 *This,
        HWND hwndTab,
        STPFLAG stpFlags);

    END_INTERFACE
} ITaskbarList4Vtbl;

interface ITaskbarList4 {
    CONST_VTBL ITaskbarList4Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITaskbarList4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITaskbarList4_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITaskbarList4_Release(This) (This)->lpVtbl->Release(This)
/*** ITaskbarList methods ***/
#define ITaskbarList4_HrInit(This) (This)->lpVtbl->HrInit(This)
#define ITaskbarList4_AddTab(This,hwnd) (This)->lpVtbl->AddTab(This,hwnd)
#define ITaskbarList4_DeleteTab(This,hwnd) (This)->lpVtbl->DeleteTab(This,hwnd)
#define ITaskbarList4_ActivateTab(This,hwnd) (This)->lpVtbl->ActivateTab(This,hwnd)
#define ITaskbarList4_SetActiveAlt(This,hwnd) (This)->lpVtbl->SetActiveAlt(This,hwnd)
/*** ITaskbarList2 methods ***/
#define ITaskbarList4_MarkFullscreenWindow(This,hwnd,fullscreen) (This)->lpVtbl->MarkFullscreenWindow(This,hwnd,fullscreen)
/*** ITaskbarList3 methods ***/
#define ITaskbarList4_SetProgressValue(This,hwnd,ullCompleted,ullTotal) (This)->lpVtbl->SetProgressValue(This,hwnd,ullCompleted,ullTotal)
#define ITaskbarList4_SetProgressState(This,hwnd,tbpFlags) (This)->lpVtbl->SetProgressState(This,hwnd,tbpFlags)
#define ITaskbarList4_RegisterTab(This,hwndTab,hwndMDI) (This)->lpVtbl->RegisterTab(This,hwndTab,hwndMDI)
#define ITaskbarList4_UnregisterTab(This,hwndTab) (This)->lpVtbl->UnregisterTab(This,hwndTab)
#define ITaskbarList4_SetTabOrder(This,hwndTab,hwndInsertBefore) (This)->lpVtbl->SetTabOrder(This,hwndTab,hwndInsertBefore)
#define ITaskbarList4_SetTabActive(This,hwndTab,hwndMDI,dwReserved) (This)->lpVtbl->SetTabActive(This,hwndTab,hwndMDI,dwReserved)
#define ITaskbarList4_ThumbBarAddButtons(This,hwnd,cButtons,pButton) (This)->lpVtbl->ThumbBarAddButtons(This,hwnd,cButtons,pButton)
#define ITaskbarList4_ThumbBarUpdateButtons(This,hwnd,cButtons,pButton) (This)->lpVtbl->ThumbBarUpdateButtons(This,hwnd,cButtons,pButton)
#define ITaskbarList4_ThumbBarSetImageList(This,hwnd,himl) (This)->lpVtbl->ThumbBarSetImageList(This,hwnd,himl)
#define ITaskbarList4_SetOverlayIcon(This,hwnd,hIcon,pszDescription) (This)->lpVtbl->SetOverlayIcon(This,hwnd,hIcon,pszDescription)
#define ITaskbarList4_SetThumbnailTooltip(This,hwnd,pszTip) (This)->lpVtbl->SetThumbnailTooltip(This,hwnd,pszTip)
#define ITaskbarList4_SetThumbnailClip(This,hwnd,prcClip) (This)->lpVtbl->SetThumbnailClip(This,hwnd,prcClip)
/*** ITaskbarList4 methods ***/
#define ITaskbarList4_SetTabProperties(This,hwndTab,stpFlags) (This)->lpVtbl->SetTabProperties(This,hwndTab,stpFlags)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITaskbarList4_QueryInterface(ITaskbarList4* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITaskbarList4_AddRef(ITaskbarList4* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITaskbarList4_Release(ITaskbarList4* This) {
    return This->lpVtbl->Release(This);
}
/*** ITaskbarList methods ***/
static FORCEINLINE HRESULT ITaskbarList4_HrInit(ITaskbarList4* This) {
    return This->lpVtbl->HrInit(This);
}
static FORCEINLINE HRESULT ITaskbarList4_AddTab(ITaskbarList4* This,HWND hwnd) {
    return This->lpVtbl->AddTab(This,hwnd);
}
static FORCEINLINE HRESULT ITaskbarList4_DeleteTab(ITaskbarList4* This,HWND hwnd) {
    return This->lpVtbl->DeleteTab(This,hwnd);
}
static FORCEINLINE HRESULT ITaskbarList4_ActivateTab(ITaskbarList4* This,HWND hwnd) {
    return This->lpVtbl->ActivateTab(This,hwnd);
}
static FORCEINLINE HRESULT ITaskbarList4_SetActiveAlt(ITaskbarList4* This,HWND hwnd) {
    return This->lpVtbl->SetActiveAlt(This,hwnd);
}
/*** ITaskbarList2 methods ***/
static FORCEINLINE HRESULT ITaskbarList4_MarkFullscreenWindow(ITaskbarList4* This,HWND hwnd,BOOL fullscreen) {
    return This->lpVtbl->MarkFullscreenWindow(This,hwnd,fullscreen);
}
/*** ITaskbarList3 methods ***/
static FORCEINLINE HRESULT ITaskbarList4_SetProgressValue(ITaskbarList4* This,HWND hwnd,ULONGLONG ullCompleted,ULONGLONG ullTotal) {
    return This->lpVtbl->SetProgressValue(This,hwnd,ullCompleted,ullTotal);
}
static FORCEINLINE HRESULT ITaskbarList4_SetProgressState(ITaskbarList4* This,HWND hwnd,TBPFLAG tbpFlags) {
    return This->lpVtbl->SetProgressState(This,hwnd,tbpFlags);
}
static FORCEINLINE HRESULT ITaskbarList4_RegisterTab(ITaskbarList4* This,HWND hwndTab,HWND hwndMDI) {
    return This->lpVtbl->RegisterTab(This,hwndTab,hwndMDI);
}
static FORCEINLINE HRESULT ITaskbarList4_UnregisterTab(ITaskbarList4* This,HWND hwndTab) {
    return This->lpVtbl->UnregisterTab(This,hwndTab);
}
static FORCEINLINE HRESULT ITaskbarList4_SetTabOrder(ITaskbarList4* This,HWND hwndTab,HWND hwndInsertBefore) {
    return This->lpVtbl->SetTabOrder(This,hwndTab,hwndInsertBefore);
}
static FORCEINLINE HRESULT ITaskbarList4_SetTabActive(ITaskbarList4* This,HWND hwndTab,HWND hwndMDI,DWORD dwReserved) {
    return This->lpVtbl->SetTabActive(This,hwndTab,hwndMDI,dwReserved);
}
static FORCEINLINE HRESULT ITaskbarList4_ThumbBarAddButtons(ITaskbarList4* This,HWND hwnd,UINT cButtons,LPTHUMBBUTTON pButton) {
    return This->lpVtbl->ThumbBarAddButtons(This,hwnd,cButtons,pButton);
}
static FORCEINLINE HRESULT ITaskbarList4_ThumbBarUpdateButtons(ITaskbarList4* This,HWND hwnd,UINT cButtons,LPTHUMBBUTTON pButton) {
    return This->lpVtbl->ThumbBarUpdateButtons(This,hwnd,cButtons,pButton);
}
static FORCEINLINE HRESULT ITaskbarList4_ThumbBarSetImageList(ITaskbarList4* This,HWND hwnd,HIMAGELIST himl) {
    return This->lpVtbl->ThumbBarSetImageList(This,hwnd,himl);
}
static FORCEINLINE HRESULT ITaskbarList4_SetOverlayIcon(ITaskbarList4* This,HWND hwnd,HICON hIcon,LPCWSTR pszDescription) {
    return This->lpVtbl->SetOverlayIcon(This,hwnd,hIcon,pszDescription);
}
static FORCEINLINE HRESULT ITaskbarList4_SetThumbnailTooltip(ITaskbarList4* This,HWND hwnd,LPCWSTR pszTip) {
    return This->lpVtbl->SetThumbnailTooltip(This,hwnd,pszTip);
}
static FORCEINLINE HRESULT ITaskbarList4_SetThumbnailClip(ITaskbarList4* This,HWND hwnd,RECT *prcClip) {
    return This->lpVtbl->SetThumbnailClip(This,hwnd,prcClip);
}
/*** ITaskbarList4 methods ***/
static FORCEINLINE HRESULT ITaskbarList4_SetTabProperties(ITaskbarList4* This,HWND hwndTab,STPFLAG stpFlags) {
    return This->lpVtbl->SetTabProperties(This,hwndTab,stpFlags);
}
#endif
#endif

#endif


#endif  /* __ITaskbarList4_INTERFACE_DEFINED__ */

/*****************************************************************************
 * 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)
MIDL_INTERFACE("3cd141f4-3c6a-11d2-bcaa-00c04fd929db")
IAutoCompleteDropDown : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDropDownStatus(
        DWORD *pdwFlags,
        LPWSTR *ppwszString) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResetEnumerator(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAutoCompleteDropDown, 0x3cd141f4, 0x3c6a, 0x11d2, 0xbc,0xaa, 0x00,0xc0,0x4f,0xd9,0x29,0xdb)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IAutoCompleteDropDown_QueryInterface(IAutoCompleteDropDown* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IAutoCompleteDropDown_AddRef(IAutoCompleteDropDown* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IAutoCompleteDropDown_Release(IAutoCompleteDropDown* This) {
    return This->lpVtbl->Release(This);
}
/*** IAutoCompleteDropDown methods ***/
static FORCEINLINE HRESULT IAutoCompleteDropDown_GetDropDownStatus(IAutoCompleteDropDown* This,DWORD *pdwFlags,LPWSTR *ppwszString) {
    return This->lpVtbl->GetDropDownStatus(This,pdwFlags,ppwszString);
}
static FORCEINLINE HRESULT IAutoCompleteDropDown_ResetEnumerator(IAutoCompleteDropDown* This) {
    return This->lpVtbl->ResetEnumerator(This);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("cb728b20-f786-11ce-92ad-00aa00a74cd0")
IProfferService : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ProfferService(
        REFGUID service,
        IServiceProvider *pService,
        DWORD *pCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE RevokeService(
        DWORD cookie) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IProfferService, 0xcb728b20, 0xf786, 0x11ce, 0x92,0xad, 0x00,0xaa,0x00,0xa7,0x4c,0xd0)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IProfferService_QueryInterface(IProfferService* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IProfferService_AddRef(IProfferService* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IProfferService_Release(IProfferService* This) {
    return This->lpVtbl->Release(This);
}
/*** IProfferService methods ***/
static FORCEINLINE HRESULT IProfferService_ProfferService(IProfferService* This,REFGUID service,IServiceProvider *pService,DWORD *pCookie) {
    return This->lpVtbl->ProfferService(This,service,pService,pCookie);
}
static FORCEINLINE HRESULT IProfferService_RevokeService(IProfferService* This,DWORD cookie) {
    return This->lpVtbl->RevokeService(This,cookie);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("361bbdc7-e6ee-4e13-be58-58e2240c810f")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExplorerBrowserEvents, 0x361bbdc7, 0xe6ee, 0x4e13, 0xbe,0x58, 0x58,0xe2,0x24,0x0c,0x81,0x0f)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IExplorerBrowserEvents_QueryInterface(IExplorerBrowserEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IExplorerBrowserEvents_AddRef(IExplorerBrowserEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IExplorerBrowserEvents_Release(IExplorerBrowserEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** IExplorerBrowserEvents methods ***/
static FORCEINLINE HRESULT IExplorerBrowserEvents_OnNavigationPending(IExplorerBrowserEvents* This,PCIDLIST_ABSOLUTE pidlFolder) {
    return This->lpVtbl->OnNavigationPending(This,pidlFolder);
}
static FORCEINLINE HRESULT IExplorerBrowserEvents_OnViewCreated(IExplorerBrowserEvents* This,IShellView *psv) {
    return This->lpVtbl->OnViewCreated(This,psv);
}
static FORCEINLINE HRESULT IExplorerBrowserEvents_OnNavigationComplete(IExplorerBrowserEvents* This,PCIDLIST_ABSOLUTE pidlFolder) {
    return This->lpVtbl->OnNavigationComplete(This,pidlFolder);
}
static FORCEINLINE HRESULT IExplorerBrowserEvents_OnNavigationFailed(IExplorerBrowserEvents* This,PCIDLIST_ABSOLUTE pidlFolder) {
    return This->lpVtbl->OnNavigationFailed(This,pidlFolder);
}
#endif
#endif

#endif


#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__

enum _EXPLORERPANESTATE {
    EPS_DONTCARE = 0x0,
    EPS_DEFAULT_ON = 0x1,
    EPS_DEFAULT_OFF = 0x2,
    EPS_STATE_MASK = 0xffff,
    EPS_INITIALSTATE = 0x10000,
    EPS_FORCE = 0x20000
};
typedef DWORD EXPLORERPANESTATE;
DEFINE_GUID(IID_IExplorerPaneVisibility, 0xe07010ec, 0xbc17, 0x44c0, 0x97,0xb0, 0x46,0xc7,0xc9,0x5b,0x9e,0xdc);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e07010ec-bc17-44c0-97b0-46c7c95b9edc")
IExplorerPaneVisibility : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPaneState(
        REFEXPLORERPANE ep,
        EXPLORERPANESTATE *peps) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExplorerPaneVisibility, 0xe07010ec, 0xbc17, 0x44c0, 0x97,0xb0, 0x46,0xc7,0xc9,0x5b,0x9e,0xdc)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IExplorerPaneVisibility_QueryInterface(IExplorerPaneVisibility* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IExplorerPaneVisibility_AddRef(IExplorerPaneVisibility* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IExplorerPaneVisibility_Release(IExplorerPaneVisibility* This) {
    return This->lpVtbl->Release(This);
}
/*** IExplorerPaneVisibility methods ***/
static FORCEINLINE HRESULT IExplorerPaneVisibility_GetPaneState(IExplorerPaneVisibility* This,REFEXPLORERPANE ep,EXPLORERPANESTATE *peps) {
    return This->lpVtbl->GetPaneState(This,ep,peps);
}
#endif
#endif

#endif


#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,
    EBO_NOBORDER = 0x40,
    EBO_NOPERSISTVIEWSTATE = 0x80
} 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)
MIDL_INTERFACE("dfd3b6b5-c10c-4be9-85f6-a66969f402f6")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExplorerBrowser, 0xdfd3b6b5, 0xc10c, 0x4be9, 0x85,0xf6, 0xa6,0x69,0x69,0xf4,0x02,0xf6)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IExplorerBrowser_QueryInterface(IExplorerBrowser* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IExplorerBrowser_AddRef(IExplorerBrowser* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IExplorerBrowser_Release(IExplorerBrowser* This) {
    return This->lpVtbl->Release(This);
}
/*** IExplorerBrowser methods ***/
static FORCEINLINE HRESULT IExplorerBrowser_Initialize(IExplorerBrowser* This,HWND hwndParent,const RECT *prc,const FOLDERSETTINGS *pfs) {
    return This->lpVtbl->Initialize(This,hwndParent,prc,pfs);
}
static FORCEINLINE HRESULT IExplorerBrowser_Destroy(IExplorerBrowser* This) {
    return This->lpVtbl->Destroy(This);
}
static FORCEINLINE HRESULT IExplorerBrowser_SetRect(IExplorerBrowser* This,HDWP *phdwp,RECT rcBrowser) {
    return This->lpVtbl->SetRect(This,phdwp,rcBrowser);
}
static FORCEINLINE HRESULT IExplorerBrowser_SetPropertyBag(IExplorerBrowser* This,LPCWSTR pszPropertyBag) {
    return This->lpVtbl->SetPropertyBag(This,pszPropertyBag);
}
static FORCEINLINE HRESULT IExplorerBrowser_SetEmptyText(IExplorerBrowser* This,LPCWSTR pszEmptyText) {
    return This->lpVtbl->SetEmptyText(This,pszEmptyText);
}
static FORCEINLINE HRESULT IExplorerBrowser_SetFolderSettings(IExplorerBrowser* This,const FOLDERSETTINGS *pfs) {
    return This->lpVtbl->SetFolderSettings(This,pfs);
}
static FORCEINLINE HRESULT IExplorerBrowser_Advise(IExplorerBrowser* This,IExplorerBrowserEvents *psbe,DWORD *pdwCookie) {
    return This->lpVtbl->Advise(This,psbe,pdwCookie);
}
static FORCEINLINE HRESULT IExplorerBrowser_Unadvise(IExplorerBrowser* This,DWORD dwCookie) {
    return This->lpVtbl->Unadvise(This,dwCookie);
}
static FORCEINLINE HRESULT IExplorerBrowser_SetOptions(IExplorerBrowser* This,EXPLORER_BROWSER_OPTIONS dwFlag) {
    return This->lpVtbl->SetOptions(This,dwFlag);
}
static FORCEINLINE HRESULT IExplorerBrowser_GetOptions(IExplorerBrowser* This,EXPLORER_BROWSER_OPTIONS *pdwFlag) {
    return This->lpVtbl->GetOptions(This,pdwFlag);
}
static FORCEINLINE HRESULT IExplorerBrowser_BrowseToIDList(IExplorerBrowser* This,PCUIDLIST_RELATIVE pidl,UINT uFlags) {
    return This->lpVtbl->BrowseToIDList(This,pidl,uFlags);
}
static FORCEINLINE HRESULT IExplorerBrowser_BrowseToObject(IExplorerBrowser* This,IUnknown *punk,UINT uFlags) {
    return This->lpVtbl->BrowseToObject(This,punk,uFlags);
}
static FORCEINLINE HRESULT IExplorerBrowser_FillFromObject(IExplorerBrowser* This,IUnknown *punk,EXPLORER_BROWSER_FILL_FLAGS dwFlags) {
    return This->lpVtbl->FillFromObject(This,punk,dwFlags);
}
static FORCEINLINE HRESULT IExplorerBrowser_RemoveAll(IExplorerBrowser* This) {
    return This->lpVtbl->RemoveAll(This);
}
static FORCEINLINE HRESULT IExplorerBrowser_GetCurrentView(IExplorerBrowser* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetCurrentView(This,riid,ppv);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("028212a3-b627-47e9-8856-c14265554e4f")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INameSpaceTreeControl, 0x028212a3, 0xb627, 0x47e9, 0x88,0x56, 0xc1,0x42,0x65,0x55,0x4e,0x4f)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INameSpaceTreeControl_QueryInterface(INameSpaceTreeControl* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INameSpaceTreeControl_AddRef(INameSpaceTreeControl* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INameSpaceTreeControl_Release(INameSpaceTreeControl* This) {
    return This->lpVtbl->Release(This);
}
/*** INameSpaceTreeControl methods ***/
static FORCEINLINE HRESULT INameSpaceTreeControl_Initialize(INameSpaceTreeControl* This,HWND hwndParent,RECT *prc,NSTCSTYLE nstcsFlags) {
    return This->lpVtbl->Initialize(This,hwndParent,prc,nstcsFlags);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_TreeAdvise(INameSpaceTreeControl* This,IUnknown *punk,DWORD *pdwCookie) {
    return This->lpVtbl->TreeAdvise(This,punk,pdwCookie);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_TreeUnadvise(INameSpaceTreeControl* This,DWORD dwCookie) {
    return This->lpVtbl->TreeUnadvise(This,dwCookie);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_AppendRoot(INameSpaceTreeControl* This,IShellItem *psiRoot,SHCONTF grfEnumFlags,NSTCROOTSTYLE grfRootStyle,IShellItemFilter *pif) {
    return This->lpVtbl->AppendRoot(This,psiRoot,grfEnumFlags,grfRootStyle,pif);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_InsertRoot(INameSpaceTreeControl* This,int iIndex,IShellItem *psiRoot,SHCONTF grfEnumFlags,NSTCROOTSTYLE grfRootStyle,IShellItemFilter *pif) {
    return This->lpVtbl->InsertRoot(This,iIndex,psiRoot,grfEnumFlags,grfRootStyle,pif);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_RemoveRoot(INameSpaceTreeControl* This,IShellItem *psiRoot) {
    return This->lpVtbl->RemoveRoot(This,psiRoot);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_RemoveAllRoots(INameSpaceTreeControl* This) {
    return This->lpVtbl->RemoveAllRoots(This);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_GetRootItems(INameSpaceTreeControl* This,IShellItemArray **ppsiaRootItems) {
    return This->lpVtbl->GetRootItems(This,ppsiaRootItems);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_SetItemState(INameSpaceTreeControl* This,IShellItem *psi,NSTCITEMSTATE nstcisMask,NSTCITEMSTATE nstcisFlags) {
    return This->lpVtbl->SetItemState(This,psi,nstcisMask,nstcisFlags);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_GetItemState(INameSpaceTreeControl* This,IShellItem *psi,NSTCITEMSTATE nstcismask,NSTCITEMSTATE *pnstcisFlags) {
    return This->lpVtbl->GetItemState(This,psi,nstcismask,pnstcisFlags);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_GetSelectedItems(INameSpaceTreeControl* This,IShellItemArray **psiaItems) {
    return This->lpVtbl->GetSelectedItems(This,psiaItems);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_GetItemCustomState(INameSpaceTreeControl* This,IShellItem *psi,int *piStateNumber) {
    return This->lpVtbl->GetItemCustomState(This,psi,piStateNumber);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_SetItemCustomState(INameSpaceTreeControl* This,IShellItem *psi,int iStateNumber) {
    return This->lpVtbl->SetItemCustomState(This,psi,iStateNumber);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_EnsureItemVisible(INameSpaceTreeControl* This,IShellItem *psi) {
    return This->lpVtbl->EnsureItemVisible(This,psi);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_SetTheme(INameSpaceTreeControl* This,LPCWSTR pszTheme) {
    return This->lpVtbl->SetTheme(This,pszTheme);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_GetNextItem(INameSpaceTreeControl* This,IShellItem *psi,NSTCGNI nstcgi,IShellItem **ppsiNext) {
    return This->lpVtbl->GetNextItem(This,psi,nstcgi,ppsiNext);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_HitTest(INameSpaceTreeControl* This,POINT *ppt,IShellItem **ppsiOut) {
    return This->lpVtbl->HitTest(This,ppt,ppsiOut);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_GetItemRect(INameSpaceTreeControl* This,IShellItem *psi,RECT *prect) {
    return This->lpVtbl->GetItemRect(This,psi,prect);
}
static FORCEINLINE HRESULT INameSpaceTreeControl_CollapseAll(INameSpaceTreeControl* This) {
    return This->lpVtbl->CollapseAll(This);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("7cc7aed8-290e-49bc-8945-c1401cc9306c")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INameSpaceTreeControl2, 0x7cc7aed8, 0x290e, 0x49bc, 0x89,0x45, 0xc1,0x40,0x1c,0xc9,0x30,0x6c)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INameSpaceTreeControl2_QueryInterface(INameSpaceTreeControl2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INameSpaceTreeControl2_AddRef(INameSpaceTreeControl2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INameSpaceTreeControl2_Release(INameSpaceTreeControl2* This) {
    return This->lpVtbl->Release(This);
}
/*** INameSpaceTreeControl methods ***/
static FORCEINLINE HRESULT INameSpaceTreeControl2_Initialize(INameSpaceTreeControl2* This,HWND hwndParent,RECT *prc,NSTCSTYLE nstcsFlags) {
    return This->lpVtbl->Initialize(This,hwndParent,prc,nstcsFlags);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_TreeAdvise(INameSpaceTreeControl2* This,IUnknown *punk,DWORD *pdwCookie) {
    return This->lpVtbl->TreeAdvise(This,punk,pdwCookie);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_TreeUnadvise(INameSpaceTreeControl2* This,DWORD dwCookie) {
    return This->lpVtbl->TreeUnadvise(This,dwCookie);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_AppendRoot(INameSpaceTreeControl2* This,IShellItem *psiRoot,SHCONTF grfEnumFlags,NSTCROOTSTYLE grfRootStyle,IShellItemFilter *pif) {
    return This->lpVtbl->AppendRoot(This,psiRoot,grfEnumFlags,grfRootStyle,pif);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_InsertRoot(INameSpaceTreeControl2* This,int iIndex,IShellItem *psiRoot,SHCONTF grfEnumFlags,NSTCROOTSTYLE grfRootStyle,IShellItemFilter *pif) {
    return This->lpVtbl->InsertRoot(This,iIndex,psiRoot,grfEnumFlags,grfRootStyle,pif);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_RemoveRoot(INameSpaceTreeControl2* This,IShellItem *psiRoot) {
    return This->lpVtbl->RemoveRoot(This,psiRoot);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_RemoveAllRoots(INameSpaceTreeControl2* This) {
    return This->lpVtbl->RemoveAllRoots(This);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_GetRootItems(INameSpaceTreeControl2* This,IShellItemArray **ppsiaRootItems) {
    return This->lpVtbl->GetRootItems(This,ppsiaRootItems);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_SetItemState(INameSpaceTreeControl2* This,IShellItem *psi,NSTCITEMSTATE nstcisMask,NSTCITEMSTATE nstcisFlags) {
    return This->lpVtbl->SetItemState(This,psi,nstcisMask,nstcisFlags);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_GetItemState(INameSpaceTreeControl2* This,IShellItem *psi,NSTCITEMSTATE nstcismask,NSTCITEMSTATE *pnstcisFlags) {
    return This->lpVtbl->GetItemState(This,psi,nstcismask,pnstcisFlags);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_GetSelectedItems(INameSpaceTreeControl2* This,IShellItemArray **psiaItems) {
    return This->lpVtbl->GetSelectedItems(This,psiaItems);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_GetItemCustomState(INameSpaceTreeControl2* This,IShellItem *psi,int *piStateNumber) {
    return This->lpVtbl->GetItemCustomState(This,psi,piStateNumber);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_SetItemCustomState(INameSpaceTreeControl2* This,IShellItem *psi,int iStateNumber) {
    return This->lpVtbl->SetItemCustomState(This,psi,iStateNumber);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_EnsureItemVisible(INameSpaceTreeControl2* This,IShellItem *psi) {
    return This->lpVtbl->EnsureItemVisible(This,psi);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_SetTheme(INameSpaceTreeControl2* This,LPCWSTR pszTheme) {
    return This->lpVtbl->SetTheme(This,pszTheme);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_GetNextItem(INameSpaceTreeControl2* This,IShellItem *psi,NSTCGNI nstcgi,IShellItem **ppsiNext) {
    return This->lpVtbl->GetNextItem(This,psi,nstcgi,ppsiNext);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_HitTest(INameSpaceTreeControl2* This,POINT *ppt,IShellItem **ppsiOut) {
    return This->lpVtbl->HitTest(This,ppt,ppsiOut);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_GetItemRect(INameSpaceTreeControl2* This,IShellItem *psi,RECT *prect) {
    return This->lpVtbl->GetItemRect(This,psi,prect);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_CollapseAll(INameSpaceTreeControl2* This) {
    return This->lpVtbl->CollapseAll(This);
}
/*** INameSpaceTreeControl2 methods ***/
static FORCEINLINE HRESULT INameSpaceTreeControl2_SetControlStyle(INameSpaceTreeControl2* This,NSTCSTYLE nstcsMask,NSTCSTYLE nstcsStyle) {
    return This->lpVtbl->SetControlStyle(This,nstcsMask,nstcsStyle);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_GetControlStyle(INameSpaceTreeControl2* This,NSTCSTYLE nstcsMask,NSTCSTYLE *pnstcsStyle) {
    return This->lpVtbl->GetControlStyle(This,nstcsMask,pnstcsStyle);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_SetControlStyle2(INameSpaceTreeControl2* This,NSTCSTYLE2 nstcsMask,NSTCSTYLE2 nstcsStyle) {
    return This->lpVtbl->SetControlStyle2(This,nstcsMask,nstcsStyle);
}
static FORCEINLINE HRESULT INameSpaceTreeControl2_GetControlStyle2(INameSpaceTreeControl2* This,NSTCSTYLE2 nstcsMask,NSTCSTYLE2 *pnstcsStyle) {
    return This->lpVtbl->GetControlStyle2(This,nstcsMask,pnstcsStyle);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("93d77985-b3d8-4484-8318-672cdda002ce")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INameSpaceTreeControlEvents, 0x93d77985, 0xb3d8, 0x4484, 0x83,0x18, 0x67,0x2c,0xdd,0xa0,0x02,0xce)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_QueryInterface(INameSpaceTreeControlEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INameSpaceTreeControlEvents_AddRef(INameSpaceTreeControlEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INameSpaceTreeControlEvents_Release(INameSpaceTreeControlEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** INameSpaceTreeControlEvents methods ***/
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnItemClick(INameSpaceTreeControlEvents* This,IShellItem *psi,NSTCEHITTEST nstceHitTest,NSTCECLICKTYPE nstceClickType) {
    return This->lpVtbl->OnItemClick(This,psi,nstceHitTest,nstceClickType);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnPropertyItemCommit(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnPropertyItemCommit(This,psi);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnItemStateChanging(INameSpaceTreeControlEvents* This,IShellItem *psi,NSTCITEMSTATE nstcisMask,NSTCITEMSTATE nstcisState) {
    return This->lpVtbl->OnItemStateChanging(This,psi,nstcisMask,nstcisState);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnItemStateChanged(INameSpaceTreeControlEvents* This,IShellItem *psi,NSTCITEMSTATE nstcisMask,NSTCITEMSTATE nstcisState) {
    return This->lpVtbl->OnItemStateChanged(This,psi,nstcisMask,nstcisState);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnSelectionChanged(INameSpaceTreeControlEvents* This,IShellItemArray *psiaSelection) {
    return This->lpVtbl->OnSelectionChanged(This,psiaSelection);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnKeyboardInput(INameSpaceTreeControlEvents* This,UINT uMsg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->OnKeyboardInput(This,uMsg,wParam,lParam);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnBeforeExpand(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnBeforeExpand(This,psi);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnAfterExpand(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnAfterExpand(This,psi);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnBeginLabelEdit(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnBeginLabelEdit(This,psi);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnEndLabelEdit(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnEndLabelEdit(This,psi);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnGetToolTip(INameSpaceTreeControlEvents* This,IShellItem *psi,LPWSTR pszTip,int cchTip) {
    return This->lpVtbl->OnGetToolTip(This,psi,pszTip,cchTip);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnBeforeItemDelete(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnBeforeItemDelete(This,psi);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnItemAdded(INameSpaceTreeControlEvents* This,IShellItem *psi,BOOL fIsRoot) {
    return This->lpVtbl->OnItemAdded(This,psi,fIsRoot);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnItemDeleted(INameSpaceTreeControlEvents* This,IShellItem *psi,BOOL fIsRoot) {
    return This->lpVtbl->OnItemDeleted(This,psi,fIsRoot);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnBeforeContextMenu(INameSpaceTreeControlEvents* This,IShellItem *psi,REFIID riid,void **ppv) {
    return This->lpVtbl->OnBeforeContextMenu(This,psi,riid,ppv);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnAfterContextMenu(INameSpaceTreeControlEvents* This,IShellItem *psi,IContextMenu *pcmIn,REFIID riid,void **ppv) {
    return This->lpVtbl->OnAfterContextMenu(This,psi,pcmIn,riid,ppv);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnBeforeStateImageChange(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnBeforeStateImageChange(This,psi);
}
static FORCEINLINE HRESULT INameSpaceTreeControlEvents_OnGetDefaultIconIndex(INameSpaceTreeControlEvents* This,IShellItem *psi,int *piDefaultIcon,int *piOpenIcon) {
    return This->lpVtbl->OnGetDefaultIconIndex(This,psi,piDefaultIcon,piOpenIcon);
}
#endif
#endif

#endif


#endif  /* __INameSpaceTreeControlEvents_INTERFACE_DEFINED__ */

/*****************************************************************************
 * 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)
MIDL_INTERFACE("2d3ba758-33ee-42d5-bb7b-5f3431d86c78")
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,
        NSTCCUSTOMDRAW *pnstccdItem,
        COLORREF *pclrText,
        COLORREF *pclrTextBk,
        LRESULT *plres) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INameSpaceTreeControlCustomDraw, 0x2d3ba758, 0x33ee, 0x42d5, 0xbb,0x7b, 0x5f,0x34,0x31,0xd8,0x6c,0x78)
#endif
#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,
        NSTCCUSTOMDRAW *pnstccdItem,
        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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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,pnstccdItem,pclrText,pclrTextBk,plres) (This)->lpVtbl->ItemPrePaint(This,hdc,prc,pnstccdItem,pclrText,pclrTextBk,plres)
#define INameSpaceTreeControlCustomDraw_ItemPostPaint(This,hdc,prc,pnstccdItem) (This)->lpVtbl->ItemPostPaint(This,hdc,prc,pnstccdItem)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INameSpaceTreeControlCustomDraw_QueryInterface(INameSpaceTreeControlCustomDraw* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INameSpaceTreeControlCustomDraw_AddRef(INameSpaceTreeControlCustomDraw* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INameSpaceTreeControlCustomDraw_Release(INameSpaceTreeControlCustomDraw* This) {
    return This->lpVtbl->Release(This);
}
/*** INameSpaceTreeControlCustomDraw methods ***/
static FORCEINLINE HRESULT INameSpaceTreeControlCustomDraw_PrePaint(INameSpaceTreeControlCustomDraw* This,HDC hdc,RECT *prc,LRESULT *plres) {
    return This->lpVtbl->PrePaint(This,hdc,prc,plres);
}
static FORCEINLINE HRESULT INameSpaceTreeControlCustomDraw_PostPaint(INameSpaceTreeControlCustomDraw* This,HDC hdc,RECT *prc) {
    return This->lpVtbl->PostPaint(This,hdc,prc);
}
static FORCEINLINE HRESULT INameSpaceTreeControlCustomDraw_ItemPrePaint(INameSpaceTreeControlCustomDraw* This,HDC hdc,RECT *prc,NSTCCUSTOMDRAW *pnstccdItem,COLORREF *pclrText,COLORREF *pclrTextBk,LRESULT *plres) {
    return This->lpVtbl->ItemPrePaint(This,hdc,prc,pnstccdItem,pclrText,pclrTextBk,plres);
}
static FORCEINLINE HRESULT INameSpaceTreeControlCustomDraw_ItemPostPaint(INameSpaceTreeControlCustomDraw* This,HDC hdc,RECT *prc,NSTCCUSTOMDRAW *pnstccdItem) {
    return This->lpVtbl->ItemPostPaint(This,hdc,prc,pnstccdItem);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("f9c665d6-c2f2-4c19-bf33-8322d7352f51")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INameSpaceTreeControlDropHandler, 0xf9c665d6, 0xc2f2, 0x4c19, 0xbf,0x33, 0x83,0x22,0xd7,0x35,0x2f,0x51)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INameSpaceTreeControlDropHandler_QueryInterface(INameSpaceTreeControlDropHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INameSpaceTreeControlDropHandler_AddRef(INameSpaceTreeControlDropHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INameSpaceTreeControlDropHandler_Release(INameSpaceTreeControlDropHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** INameSpaceTreeControlDropHandler methods ***/
static FORCEINLINE HRESULT INameSpaceTreeControlDropHandler_OnDragEnter(INameSpaceTreeControlDropHandler* This,IShellItem *psiOver,IShellItemArray *psiaData,BOOL fOutsideSource,DWORD grfKeyState,DWORD *pdwEffect) {
    return This->lpVtbl->OnDragEnter(This,psiOver,psiaData,fOutsideSource,grfKeyState,pdwEffect);
}
static FORCEINLINE HRESULT INameSpaceTreeControlDropHandler_OnDragOver(INameSpaceTreeControlDropHandler* This,IShellItem *psiOver,IShellItemArray *psiaData,DWORD grfKeyState,DWORD *pdwEffect) {
    return This->lpVtbl->OnDragOver(This,psiOver,psiaData,grfKeyState,pdwEffect);
}
static FORCEINLINE HRESULT INameSpaceTreeControlDropHandler_OnDragPosition(INameSpaceTreeControlDropHandler* This,IShellItem *psiOver,IShellItemArray *psiaData,int iNewPosition,int iOldPosition) {
    return This->lpVtbl->OnDragPosition(This,psiOver,psiaData,iNewPosition,iOldPosition);
}
static FORCEINLINE HRESULT INameSpaceTreeControlDropHandler_OnDrop(INameSpaceTreeControlDropHandler* This,IShellItem *psiOver,IShellItemArray *psiaData,int iPosition,DWORD grfKeyState,DWORD *pdwEffect) {
    return This->lpVtbl->OnDrop(This,psiOver,psiaData,iPosition,grfKeyState,pdwEffect);
}
static FORCEINLINE HRESULT INameSpaceTreeControlDropHandler_OnDropPosition(INameSpaceTreeControlDropHandler* This,IShellItem *psiOver,IShellItemArray *psiaData,int iNewPosition,int iOldPosition) {
    return This->lpVtbl->OnDropPosition(This,psiOver,psiaData,iNewPosition,iOldPosition);
}
static FORCEINLINE HRESULT INameSpaceTreeControlDropHandler_OnDragLeave(INameSpaceTreeControlDropHandler* This,IShellItem *psiOver) {
    return This->lpVtbl->OnDragLeave(This,psiOver);
}
#endif
#endif

#endif


#endif  /* __INameSpaceTreeControlDropHandler_INTERFACE_DEFINED__ */

#define NSTCDHPOS_ONTOP -1
#ifndef __IFileDialog_FWD_DEFINED__
#define __IFileDialog_FWD_DEFINED__
typedef interface IFileDialog IFileDialog;
#ifdef __cplusplus
interface IFileDialog;
#endif /* __cplusplus */
#endif

typedef enum FDE_OVERWRITE_RESPONSE {
    FDEOR_DEFAULT = 0,
    FDEOR_ACCEPT = 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)
MIDL_INTERFACE("973510db-7d7f-452b-8975-74a85828d354")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFileDialogEvents, 0x973510db, 0x7d7f, 0x452b, 0x89,0x75, 0x74,0xa8,0x58,0x28,0xd3,0x54)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFileDialogEvents_QueryInterface(IFileDialogEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFileDialogEvents_AddRef(IFileDialogEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFileDialogEvents_Release(IFileDialogEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** IFileDialogEvents methods ***/
static FORCEINLINE HRESULT IFileDialogEvents_OnFileOk(IFileDialogEvents* This,IFileDialog *pfd) {
    return This->lpVtbl->OnFileOk(This,pfd);
}
static FORCEINLINE HRESULT IFileDialogEvents_OnFolderChanging(IFileDialogEvents* This,IFileDialog *pfd,IShellItem *psiFolder) {
    return This->lpVtbl->OnFolderChanging(This,pfd,psiFolder);
}
static FORCEINLINE HRESULT IFileDialogEvents_OnFolderChange(IFileDialogEvents* This,IFileDialog *pfd) {
    return This->lpVtbl->OnFolderChange(This,pfd);
}
static FORCEINLINE HRESULT IFileDialogEvents_OnSelectionChange(IFileDialogEvents* This,IFileDialog *pfd) {
    return This->lpVtbl->OnSelectionChange(This,pfd);
}
static FORCEINLINE HRESULT IFileDialogEvents_OnShareViolation(IFileDialogEvents* This,IFileDialog *pfd,IShellItem *psi,FDE_SHAREVIOLATION_RESPONSE *pResponse) {
    return This->lpVtbl->OnShareViolation(This,pfd,psi,pResponse);
}
static FORCEINLINE HRESULT IFileDialogEvents_OnTypeChange(IFileDialogEvents* This,IFileDialog *pfd) {
    return This->lpVtbl->OnTypeChange(This,pfd);
}
static FORCEINLINE HRESULT IFileDialogEvents_OnOverwrite(IFileDialogEvents* This,IFileDialog *pfd,IShellItem *psi,FDE_OVERWRITE_RESPONSE *pResponse) {
    return This->lpVtbl->OnOverwrite(This,pfd,psi,pResponse);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("b4db1657-70d7-485e-8e3e-6fcb5a5c1802")
IModalWindow : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Show(
        HWND hwndOwner) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IModalWindow, 0xb4db1657, 0x70d7, 0x485e, 0x8e,0x3e, 0x6f,0xcb,0x5a,0x5c,0x18,0x02)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IModalWindow_QueryInterface(IModalWindow* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IModalWindow_AddRef(IModalWindow* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IModalWindow_Release(IModalWindow* This) {
    return This->lpVtbl->Release(This);
}
/*** IModalWindow methods ***/
static FORCEINLINE HRESULT IModalWindow_Show(IModalWindow* This,HWND hwndOwner) {
    return This->lpVtbl->Show(This,hwndOwner);
}
#endif
#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,
    FOS_SUPPORTSTREAMABLEITEMS = 0x80000000
};
typedef DWORD FILEOPENDIALOGOPTIONS;
DEFINE_GUID(IID_IFileDialog, 0x42f85136, 0xdb7e, 0x439c, 0x85,0xf1, 0xe4,0x07,0x5d,0x13,0x5f,0xc8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("42f85136-db7e-439c-85f1-e4075d135fc8")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFileDialog, 0x42f85136, 0xdb7e, 0x439c, 0x85,0xf1, 0xe4,0x07,0x5d,0x13,0x5f,0xc8)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFileDialog_QueryInterface(IFileDialog* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFileDialog_AddRef(IFileDialog* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFileDialog_Release(IFileDialog* This) {
    return This->lpVtbl->Release(This);
}
/*** IModalWindow methods ***/
static FORCEINLINE HRESULT IFileDialog_Show(IFileDialog* This,HWND hwndOwner) {
    return This->lpVtbl->Show(This,hwndOwner);
}
/*** IFileDialog methods ***/
static FORCEINLINE HRESULT IFileDialog_SetFileTypes(IFileDialog* This,UINT cFileTypes,const COMDLG_FILTERSPEC *rgFilterSpec) {
    return This->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec);
}
static FORCEINLINE HRESULT IFileDialog_SetFileTypeIndex(IFileDialog* This,UINT iFileType) {
    return This->lpVtbl->SetFileTypeIndex(This,iFileType);
}
static FORCEINLINE HRESULT IFileDialog_GetFileTypeIndex(IFileDialog* This,UINT *piFileType) {
    return This->lpVtbl->GetFileTypeIndex(This,piFileType);
}
static FORCEINLINE HRESULT IFileDialog_Advise(IFileDialog* This,IFileDialogEvents *pfde,DWORD *pdwCookie) {
    return This->lpVtbl->Advise(This,pfde,pdwCookie);
}
static FORCEINLINE HRESULT IFileDialog_Unadvise(IFileDialog* This,DWORD dwCookie) {
    return This->lpVtbl->Unadvise(This,dwCookie);
}
static FORCEINLINE HRESULT IFileDialog_SetOptions(IFileDialog* This,FILEOPENDIALOGOPTIONS fos) {
    return This->lpVtbl->SetOptions(This,fos);
}
static FORCEINLINE HRESULT IFileDialog_GetOptions(IFileDialog* This,FILEOPENDIALOGOPTIONS *pfos) {
    return This->lpVtbl->GetOptions(This,pfos);
}
static FORCEINLINE HRESULT IFileDialog_SetDefaultFolder(IFileDialog* This,IShellItem *psi) {
    return This->lpVtbl->SetDefaultFolder(This,psi);
}
static FORCEINLINE HRESULT IFileDialog_SetFolder(IFileDialog* This,IShellItem *psi) {
    return This->lpVtbl->SetFolder(This,psi);
}
static FORCEINLINE HRESULT IFileDialog_GetFolder(IFileDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetFolder(This,ppsi);
}
static FORCEINLINE HRESULT IFileDialog_GetCurrentSelection(IFileDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetCurrentSelection(This,ppsi);
}
static FORCEINLINE HRESULT IFileDialog_SetFileName(IFileDialog* This,LPCWSTR pszName) {
    return This->lpVtbl->SetFileName(This,pszName);
}
static FORCEINLINE HRESULT IFileDialog_GetFileName(IFileDialog* This,LPWSTR *pszName) {
    return This->lpVtbl->GetFileName(This,pszName);
}
static FORCEINLINE HRESULT IFileDialog_SetTitle(IFileDialog* This,LPCWSTR pszTitle) {
    return This->lpVtbl->SetTitle(This,pszTitle);
}
static FORCEINLINE HRESULT IFileDialog_SetOkButtonLabel(IFileDialog* This,LPCWSTR pszText) {
    return This->lpVtbl->SetOkButtonLabel(This,pszText);
}
static FORCEINLINE HRESULT IFileDialog_SetFileNameLabel(IFileDialog* This,LPCWSTR pszLabel) {
    return This->lpVtbl->SetFileNameLabel(This,pszLabel);
}
static FORCEINLINE HRESULT IFileDialog_GetResult(IFileDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetResult(This,ppsi);
}
static FORCEINLINE HRESULT IFileDialog_AddPlace(IFileDialog* This,IShellItem *psi,FDAP fdap) {
    return This->lpVtbl->AddPlace(This,psi,fdap);
}
static FORCEINLINE HRESULT IFileDialog_SetDefaultExtension(IFileDialog* This,LPCWSTR pszDefaultExtension) {
    return This->lpVtbl->SetDefaultExtension(This,pszDefaultExtension);
}
static FORCEINLINE HRESULT IFileDialog_Close(IFileDialog* This,HRESULT hr) {
    return This->lpVtbl->Close(This,hr);
}
static FORCEINLINE HRESULT IFileDialog_SetClientGuid(IFileDialog* This,REFGUID guid) {
    return This->lpVtbl->SetClientGuid(This,guid);
}
static FORCEINLINE HRESULT IFileDialog_ClearClientData(IFileDialog* This) {
    return This->lpVtbl->ClearClientData(This);
}
static FORCEINLINE HRESULT IFileDialog_SetFilter(IFileDialog* This,IShellItemFilter *pFilter) {
    return This->lpVtbl->SetFilter(This,pFilter);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("61744fc7-85b5-4791-a9b0-272276309b13")
IFileDialog2 : public IFileDialog
{
    virtual HRESULT STDMETHODCALLTYPE SetCancelButtonLabel(
        LPCWSTR pszLabel) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFileDialog2, 0x61744fc7, 0x85b5, 0x4791, 0xa9,0xb0, 0x27,0x22,0x76,0x30,0x9b,0x13)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFileDialog2_QueryInterface(IFileDialog2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFileDialog2_AddRef(IFileDialog2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFileDialog2_Release(IFileDialog2* This) {
    return This->lpVtbl->Release(This);
}
/*** IModalWindow methods ***/
static FORCEINLINE HRESULT IFileDialog2_Show(IFileDialog2* This,HWND hwndOwner) {
    return This->lpVtbl->Show(This,hwndOwner);
}
/*** IFileDialog methods ***/
static FORCEINLINE HRESULT IFileDialog2_SetFileTypes(IFileDialog2* This,UINT cFileTypes,const COMDLG_FILTERSPEC *rgFilterSpec) {
    return This->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec);
}
static FORCEINLINE HRESULT IFileDialog2_SetFileTypeIndex(IFileDialog2* This,UINT iFileType) {
    return This->lpVtbl->SetFileTypeIndex(This,iFileType);
}
static FORCEINLINE HRESULT IFileDialog2_GetFileTypeIndex(IFileDialog2* This,UINT *piFileType) {
    return This->lpVtbl->GetFileTypeIndex(This,piFileType);
}
static FORCEINLINE HRESULT IFileDialog2_Advise(IFileDialog2* This,IFileDialogEvents *pfde,DWORD *pdwCookie) {
    return This->lpVtbl->Advise(This,pfde,pdwCookie);
}
static FORCEINLINE HRESULT IFileDialog2_Unadvise(IFileDialog2* This,DWORD dwCookie) {
    return This->lpVtbl->Unadvise(This,dwCookie);
}
static FORCEINLINE HRESULT IFileDialog2_SetOptions(IFileDialog2* This,FILEOPENDIALOGOPTIONS fos) {
    return This->lpVtbl->SetOptions(This,fos);
}
static FORCEINLINE HRESULT IFileDialog2_GetOptions(IFileDialog2* This,FILEOPENDIALOGOPTIONS *pfos) {
    return This->lpVtbl->GetOptions(This,pfos);
}
static FORCEINLINE HRESULT IFileDialog2_SetDefaultFolder(IFileDialog2* This,IShellItem *psi) {
    return This->lpVtbl->SetDefaultFolder(This,psi);
}
static FORCEINLINE HRESULT IFileDialog2_SetFolder(IFileDialog2* This,IShellItem *psi) {
    return This->lpVtbl->SetFolder(This,psi);
}
static FORCEINLINE HRESULT IFileDialog2_GetFolder(IFileDialog2* This,IShellItem **ppsi) {
    return This->lpVtbl->GetFolder(This,ppsi);
}
static FORCEINLINE HRESULT IFileDialog2_GetCurrentSelection(IFileDialog2* This,IShellItem **ppsi) {
    return This->lpVtbl->GetCurrentSelection(This,ppsi);
}
static FORCEINLINE HRESULT IFileDialog2_SetFileName(IFileDialog2* This,LPCWSTR pszName) {
    return This->lpVtbl->SetFileName(This,pszName);
}
static FORCEINLINE HRESULT IFileDialog2_GetFileName(IFileDialog2* This,LPWSTR *pszName) {
    return This->lpVtbl->GetFileName(This,pszName);
}
static FORCEINLINE HRESULT IFileDialog2_SetTitle(IFileDialog2* This,LPCWSTR pszTitle) {
    return This->lpVtbl->SetTitle(This,pszTitle);
}
static FORCEINLINE HRESULT IFileDialog2_SetOkButtonLabel(IFileDialog2* This,LPCWSTR pszText) {
    return This->lpVtbl->SetOkButtonLabel(This,pszText);
}
static FORCEINLINE HRESULT IFileDialog2_SetFileNameLabel(IFileDialog2* This,LPCWSTR pszLabel) {
    return This->lpVtbl->SetFileNameLabel(This,pszLabel);
}
static FORCEINLINE HRESULT IFileDialog2_GetResult(IFileDialog2* This,IShellItem **ppsi) {
    return This->lpVtbl->GetResult(This,ppsi);
}
static FORCEINLINE HRESULT IFileDialog2_AddPlace(IFileDialog2* This,IShellItem *psi,FDAP fdap) {
    return This->lpVtbl->AddPlace(This,psi,fdap);
}
static FORCEINLINE HRESULT IFileDialog2_SetDefaultExtension(IFileDialog2* This,LPCWSTR pszDefaultExtension) {
    return This->lpVtbl->SetDefaultExtension(This,pszDefaultExtension);
}
static FORCEINLINE HRESULT IFileDialog2_Close(IFileDialog2* This,HRESULT hr) {
    return This->lpVtbl->Close(This,hr);
}
static FORCEINLINE HRESULT IFileDialog2_SetClientGuid(IFileDialog2* This,REFGUID guid) {
    return This->lpVtbl->SetClientGuid(This,guid);
}
static FORCEINLINE HRESULT IFileDialog2_ClearClientData(IFileDialog2* This) {
    return This->lpVtbl->ClearClientData(This);
}
static FORCEINLINE HRESULT IFileDialog2_SetFilter(IFileDialog2* This,IShellItemFilter *pFilter) {
    return This->lpVtbl->SetFilter(This,pFilter);
}
/*** IFileDialog2 methods ***/
static FORCEINLINE HRESULT IFileDialog2_SetCancelButtonLabel(IFileDialog2* This,LPCWSTR pszLabel) {
    return This->lpVtbl->SetCancelButtonLabel(This,pszLabel);
}
static FORCEINLINE HRESULT IFileDialog2_SetNavigationRoot(IFileDialog2* This,IShellItem *psi) {
    return This->lpVtbl->SetNavigationRoot(This,psi);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("04b0f1a7-9490-44bc-96e1-4296a31252e2")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFileOperationProgressSink, 0x04b0f1a7, 0x9490, 0x44bc, 0x96,0xe1, 0x42,0x96,0xa3,0x12,0x52,0xe2)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFileOperationProgressSink_QueryInterface(IFileOperationProgressSink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFileOperationProgressSink_AddRef(IFileOperationProgressSink* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFileOperationProgressSink_Release(IFileOperationProgressSink* This) {
    return This->lpVtbl->Release(This);
}
/*** IFileOperationProgressSink methods ***/
static FORCEINLINE HRESULT IFileOperationProgressSink_StartOperations(IFileOperationProgressSink* This) {
    return This->lpVtbl->StartOperations(This);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_FinishOperations(IFileOperationProgressSink* This,HRESULT hrResult) {
    return This->lpVtbl->FinishOperations(This,hrResult);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_PreRenameItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiItem,LPCWSTR pszNewName) {
    return This->lpVtbl->PreRenameItem(This,dwFlags,psiItem,pszNewName);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_PostRenameItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiItem,LPCWSTR pszNewName,HRESULT hrRename,IShellItem *psiNewlyCreated) {
    return This->lpVtbl->PostRenameItem(This,dwFlags,psiItem,pszNewName,hrRename,psiNewlyCreated);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_PreMoveItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiItem,IShellItem *psiDestinationFolder,LPCWSTR pszNewName) {
    return This->lpVtbl->PreMoveItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_PostMoveItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiItem,IShellItem *psiDestinationFolder,LPCWSTR pszNewName,HRESULT hrMove,IShellItem *psiNewlyCreated) {
    return This->lpVtbl->PostMoveItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName,hrMove,psiNewlyCreated);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_PreCopyItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiItem,IShellItem *psiDestinationFolder,LPCWSTR pszNewName) {
    return This->lpVtbl->PreCopyItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_PostCopyItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiItem,IShellItem *psiDestinationFolder,LPCWSTR pszNewName,HRESULT hrCopy,IShellItem *psiNewlyCreated) {
    return This->lpVtbl->PostCopyItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName,hrCopy,psiNewlyCreated);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_PreDeleteItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiItem) {
    return This->lpVtbl->PreDeleteItem(This,dwFlags,psiItem);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_PostDeleteItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiItem,HRESULT hrDelete,IShellItem *psiNewlyCreated) {
    return This->lpVtbl->PostDeleteItem(This,dwFlags,psiItem,hrDelete,psiNewlyCreated);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_PreNewItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiDestinationFolder,LPCWSTR pszNewName) {
    return This->lpVtbl->PreNewItem(This,dwFlags,psiDestinationFolder,pszNewName);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_PostNewItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiDestinationFolder,LPCWSTR pszNewName,LPCWSTR pszTemplateName,DWORD dwFileAttributes,HRESULT hrNew,IShellItem *psiNewItem) {
    return This->lpVtbl->PostNewItem(This,dwFlags,psiDestinationFolder,pszNewName,pszTemplateName,dwFileAttributes,hrNew,psiNewItem);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_UpdateProgress(IFileOperationProgressSink* This,UINT iWorkTotal,UINT iWorkSoFar) {
    return This->lpVtbl->UpdateProgress(This,iWorkTotal,iWorkSoFar);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_ResetTimer(IFileOperationProgressSink* This) {
    return This->lpVtbl->ResetTimer(This);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_PauseTimer(IFileOperationProgressSink* This) {
    return This->lpVtbl->PauseTimer(This);
}
static FORCEINLINE HRESULT IFileOperationProgressSink_ResumeTimer(IFileOperationProgressSink* This) {
    return This->lpVtbl->ResumeTimer(This);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("84bccd23-5fde-4cdb-aea4-af64b83d78ab")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFileSaveDialog, 0x84bccd23, 0x5fde, 0x4cdb, 0xae,0xa4, 0xaf,0x64,0xb8,0x3d,0x78,0xab)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFileSaveDialog_QueryInterface(IFileSaveDialog* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFileSaveDialog_AddRef(IFileSaveDialog* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFileSaveDialog_Release(IFileSaveDialog* This) {
    return This->lpVtbl->Release(This);
}
/*** IModalWindow methods ***/
static FORCEINLINE HRESULT IFileSaveDialog_Show(IFileSaveDialog* This,HWND hwndOwner) {
    return This->lpVtbl->Show(This,hwndOwner);
}
/*** IFileDialog methods ***/
static FORCEINLINE HRESULT IFileSaveDialog_SetFileTypes(IFileSaveDialog* This,UINT cFileTypes,const COMDLG_FILTERSPEC *rgFilterSpec) {
    return This->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec);
}
static FORCEINLINE HRESULT IFileSaveDialog_SetFileTypeIndex(IFileSaveDialog* This,UINT iFileType) {
    return This->lpVtbl->SetFileTypeIndex(This,iFileType);
}
static FORCEINLINE HRESULT IFileSaveDialog_GetFileTypeIndex(IFileSaveDialog* This,UINT *piFileType) {
    return This->lpVtbl->GetFileTypeIndex(This,piFileType);
}
static FORCEINLINE HRESULT IFileSaveDialog_Advise(IFileSaveDialog* This,IFileDialogEvents *pfde,DWORD *pdwCookie) {
    return This->lpVtbl->Advise(This,pfde,pdwCookie);
}
static FORCEINLINE HRESULT IFileSaveDialog_Unadvise(IFileSaveDialog* This,DWORD dwCookie) {
    return This->lpVtbl->Unadvise(This,dwCookie);
}
static FORCEINLINE HRESULT IFileSaveDialog_SetOptions(IFileSaveDialog* This,FILEOPENDIALOGOPTIONS fos) {
    return This->lpVtbl->SetOptions(This,fos);
}
static FORCEINLINE HRESULT IFileSaveDialog_GetOptions(IFileSaveDialog* This,FILEOPENDIALOGOPTIONS *pfos) {
    return This->lpVtbl->GetOptions(This,pfos);
}
static FORCEINLINE HRESULT IFileSaveDialog_SetDefaultFolder(IFileSaveDialog* This,IShellItem *psi) {
    return This->lpVtbl->SetDefaultFolder(This,psi);
}
static FORCEINLINE HRESULT IFileSaveDialog_SetFolder(IFileSaveDialog* This,IShellItem *psi) {
    return This->lpVtbl->SetFolder(This,psi);
}
static FORCEINLINE HRESULT IFileSaveDialog_GetFolder(IFileSaveDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetFolder(This,ppsi);
}
static FORCEINLINE HRESULT IFileSaveDialog_GetCurrentSelection(IFileSaveDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetCurrentSelection(This,ppsi);
}
static FORCEINLINE HRESULT IFileSaveDialog_SetFileName(IFileSaveDialog* This,LPCWSTR pszName) {
    return This->lpVtbl->SetFileName(This,pszName);
}
static FORCEINLINE HRESULT IFileSaveDialog_GetFileName(IFileSaveDialog* This,LPWSTR *pszName) {
    return This->lpVtbl->GetFileName(This,pszName);
}
static FORCEINLINE HRESULT IFileSaveDialog_SetTitle(IFileSaveDialog* This,LPCWSTR pszTitle) {
    return This->lpVtbl->SetTitle(This,pszTitle);
}
static FORCEINLINE HRESULT IFileSaveDialog_SetOkButtonLabel(IFileSaveDialog* This,LPCWSTR pszText) {
    return This->lpVtbl->SetOkButtonLabel(This,pszText);
}
static FORCEINLINE HRESULT IFileSaveDialog_SetFileNameLabel(IFileSaveDialog* This,LPCWSTR pszLabel) {
    return This->lpVtbl->SetFileNameLabel(This,pszLabel);
}
static FORCEINLINE HRESULT IFileSaveDialog_GetResult(IFileSaveDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetResult(This,ppsi);
}
static FORCEINLINE HRESULT IFileSaveDialog_AddPlace(IFileSaveDialog* This,IShellItem *psi,FDAP fdap) {
    return This->lpVtbl->AddPlace(This,psi,fdap);
}
static FORCEINLINE HRESULT IFileSaveDialog_SetDefaultExtension(IFileSaveDialog* This,LPCWSTR pszDefaultExtension) {
    return This->lpVtbl->SetDefaultExtension(This,pszDefaultExtension);
}
static FORCEINLINE HRESULT IFileSaveDialog_Close(IFileSaveDialog* This,HRESULT hr) {
    return This->lpVtbl->Close(This,hr);
}
static FORCEINLINE HRESULT IFileSaveDialog_SetClientGuid(IFileSaveDialog* This,REFGUID guid) {
    return This->lpVtbl->SetClientGuid(This,guid);
}
static FORCEINLINE HRESULT IFileSaveDialog_ClearClientData(IFileSaveDialog* This) {
    return This->lpVtbl->ClearClientData(This);
}
static FORCEINLINE HRESULT IFileSaveDialog_SetFilter(IFileSaveDialog* This,IShellItemFilter *pFilter) {
    return This->lpVtbl->SetFilter(This,pFilter);
}
/*** IFileSaveDialog methods ***/
static FORCEINLINE HRESULT IFileSaveDialog_SetSaveAsItem(IFileSaveDialog* This,IShellItem *psi) {
    return This->lpVtbl->SetSaveAsItem(This,psi);
}
static FORCEINLINE HRESULT IFileSaveDialog_SetProperties(IFileSaveDialog* This,IPropertyStore *pStore) {
    return This->lpVtbl->SetProperties(This,pStore);
}
static FORCEINLINE HRESULT IFileSaveDialog_SetCollectedProperties(IFileSaveDialog* This,IPropertyDescriptionList *pList,BOOL fAppendDefault) {
    return This->lpVtbl->SetCollectedProperties(This,pList,fAppendDefault);
}
static FORCEINLINE HRESULT IFileSaveDialog_GetProperties(IFileSaveDialog* This,IPropertyStore **ppStore) {
    return This->lpVtbl->GetProperties(This,ppStore);
}
static FORCEINLINE HRESULT IFileSaveDialog_ApplyProperties(IFileSaveDialog* This,IShellItem *psi,IPropertyStore *pStore,HWND hwnd,IFileOperationProgressSink *pSink) {
    return This->lpVtbl->ApplyProperties(This,psi,pStore,hwnd,pSink);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("d57c7288-d4ad-4768-be02-9d969532d960")
IFileOpenDialog : public IFileDialog
{
    virtual HRESULT STDMETHODCALLTYPE GetResults(
        IShellItemArray **ppenum) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFileOpenDialog, 0xd57c7288, 0xd4ad, 0x4768, 0xbe,0x02, 0x9d,0x96,0x95,0x32,0xd9,0x60)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFileOpenDialog_QueryInterface(IFileOpenDialog* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFileOpenDialog_AddRef(IFileOpenDialog* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFileOpenDialog_Release(IFileOpenDialog* This) {
    return This->lpVtbl->Release(This);
}
/*** IModalWindow methods ***/
static FORCEINLINE HRESULT IFileOpenDialog_Show(IFileOpenDialog* This,HWND hwndOwner) {
    return This->lpVtbl->Show(This,hwndOwner);
}
/*** IFileDialog methods ***/
static FORCEINLINE HRESULT IFileOpenDialog_SetFileTypes(IFileOpenDialog* This,UINT cFileTypes,const COMDLG_FILTERSPEC *rgFilterSpec) {
    return This->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec);
}
static FORCEINLINE HRESULT IFileOpenDialog_SetFileTypeIndex(IFileOpenDialog* This,UINT iFileType) {
    return This->lpVtbl->SetFileTypeIndex(This,iFileType);
}
static FORCEINLINE HRESULT IFileOpenDialog_GetFileTypeIndex(IFileOpenDialog* This,UINT *piFileType) {
    return This->lpVtbl->GetFileTypeIndex(This,piFileType);
}
static FORCEINLINE HRESULT IFileOpenDialog_Advise(IFileOpenDialog* This,IFileDialogEvents *pfde,DWORD *pdwCookie) {
    return This->lpVtbl->Advise(This,pfde,pdwCookie);
}
static FORCEINLINE HRESULT IFileOpenDialog_Unadvise(IFileOpenDialog* This,DWORD dwCookie) {
    return This->lpVtbl->Unadvise(This,dwCookie);
}
static FORCEINLINE HRESULT IFileOpenDialog_SetOptions(IFileOpenDialog* This,FILEOPENDIALOGOPTIONS fos) {
    return This->lpVtbl->SetOptions(This,fos);
}
static FORCEINLINE HRESULT IFileOpenDialog_GetOptions(IFileOpenDialog* This,FILEOPENDIALOGOPTIONS *pfos) {
    return This->lpVtbl->GetOptions(This,pfos);
}
static FORCEINLINE HRESULT IFileOpenDialog_SetDefaultFolder(IFileOpenDialog* This,IShellItem *psi) {
    return This->lpVtbl->SetDefaultFolder(This,psi);
}
static FORCEINLINE HRESULT IFileOpenDialog_SetFolder(IFileOpenDialog* This,IShellItem *psi) {
    return This->lpVtbl->SetFolder(This,psi);
}
static FORCEINLINE HRESULT IFileOpenDialog_GetFolder(IFileOpenDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetFolder(This,ppsi);
}
static FORCEINLINE HRESULT IFileOpenDialog_GetCurrentSelection(IFileOpenDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetCurrentSelection(This,ppsi);
}
static FORCEINLINE HRESULT IFileOpenDialog_SetFileName(IFileOpenDialog* This,LPCWSTR pszName) {
    return This->lpVtbl->SetFileName(This,pszName);
}
static FORCEINLINE HRESULT IFileOpenDialog_GetFileName(IFileOpenDialog* This,LPWSTR *pszName) {
    return This->lpVtbl->GetFileName(This,pszName);
}
static FORCEINLINE HRESULT IFileOpenDialog_SetTitle(IFileOpenDialog* This,LPCWSTR pszTitle) {
    return This->lpVtbl->SetTitle(This,pszTitle);
}
static FORCEINLINE HRESULT IFileOpenDialog_SetOkButtonLabel(IFileOpenDialog* This,LPCWSTR pszText) {
    return This->lpVtbl->SetOkButtonLabel(This,pszText);
}
static FORCEINLINE HRESULT IFileOpenDialog_SetFileNameLabel(IFileOpenDialog* This,LPCWSTR pszLabel) {
    return This->lpVtbl->SetFileNameLabel(This,pszLabel);
}
static FORCEINLINE HRESULT IFileOpenDialog_GetResult(IFileOpenDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetResult(This,ppsi);
}
static FORCEINLINE HRESULT IFileOpenDialog_AddPlace(IFileOpenDialog* This,IShellItem *psi,FDAP fdap) {
    return This->lpVtbl->AddPlace(This,psi,fdap);
}
static FORCEINLINE HRESULT IFileOpenDialog_SetDefaultExtension(IFileOpenDialog* This,LPCWSTR pszDefaultExtension) {
    return This->lpVtbl->SetDefaultExtension(This,pszDefaultExtension);
}
static FORCEINLINE HRESULT IFileOpenDialog_Close(IFileOpenDialog* This,HRESULT hr) {
    return This->lpVtbl->Close(This,hr);
}
static FORCEINLINE HRESULT IFileOpenDialog_SetClientGuid(IFileOpenDialog* This,REFGUID guid) {
    return This->lpVtbl->SetClientGuid(This,guid);
}
static FORCEINLINE HRESULT IFileOpenDialog_ClearClientData(IFileOpenDialog* This) {
    return This->lpVtbl->ClearClientData(This);
}
static FORCEINLINE HRESULT IFileOpenDialog_SetFilter(IFileOpenDialog* This,IShellItemFilter *pFilter) {
    return This->lpVtbl->SetFilter(This,pFilter);
}
/*** IFileOpenDialog methods ***/
static FORCEINLINE HRESULT IFileOpenDialog_GetResults(IFileOpenDialog* This,IShellItemArray **ppenum) {
    return This->lpVtbl->GetResults(This,ppenum);
}
static FORCEINLINE HRESULT IFileOpenDialog_GetSelectedItems(IFileOpenDialog* This,IShellItemArray **ppsai) {
    return This->lpVtbl->GetSelectedItems(This,ppsai);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("e6fdd21a-163f-4975-9c8c-a69f1ba37034")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFileDialogCustomize, 0xe6fdd21a, 0x163f, 0x4975, 0x9c,0x8c, 0xa6,0x9f,0x1b,0xa3,0x70,0x34)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFileDialogCustomize_QueryInterface(IFileDialogCustomize* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFileDialogCustomize_AddRef(IFileDialogCustomize* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFileDialogCustomize_Release(IFileDialogCustomize* This) {
    return This->lpVtbl->Release(This);
}
/*** IFileDialogCustomize methods ***/
static FORCEINLINE HRESULT IFileDialogCustomize_EnableOpenDropDown(IFileDialogCustomize* This,DWORD dwIDCtl) {
    return This->lpVtbl->EnableOpenDropDown(This,dwIDCtl);
}
static FORCEINLINE HRESULT IFileDialogCustomize_AddMenu(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszLabel) {
    return This->lpVtbl->AddMenu(This,dwIDCtl,pszLabel);
}
static FORCEINLINE HRESULT IFileDialogCustomize_AddPushButton(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszLabel) {
    return This->lpVtbl->AddPushButton(This,dwIDCtl,pszLabel);
}
static FORCEINLINE HRESULT IFileDialogCustomize_AddComboBox(IFileDialogCustomize* This,DWORD dwIDCtl) {
    return This->lpVtbl->AddComboBox(This,dwIDCtl);
}
static FORCEINLINE HRESULT IFileDialogCustomize_AddRadioButtonList(IFileDialogCustomize* This,DWORD dwIDCtl) {
    return This->lpVtbl->AddRadioButtonList(This,dwIDCtl);
}
static FORCEINLINE HRESULT IFileDialogCustomize_AddCheckButton(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszLabel,BOOL bChecked) {
    return This->lpVtbl->AddCheckButton(This,dwIDCtl,pszLabel,bChecked);
}
static FORCEINLINE HRESULT IFileDialogCustomize_AddEditBox(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszText) {
    return This->lpVtbl->AddEditBox(This,dwIDCtl,pszText);
}
static FORCEINLINE HRESULT IFileDialogCustomize_AddSeparator(IFileDialogCustomize* This,DWORD dwIDCtl) {
    return This->lpVtbl->AddSeparator(This,dwIDCtl);
}
static FORCEINLINE HRESULT IFileDialogCustomize_AddText(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszText) {
    return This->lpVtbl->AddText(This,dwIDCtl,pszText);
}
static FORCEINLINE HRESULT IFileDialogCustomize_SetControlLabel(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszLabel) {
    return This->lpVtbl->SetControlLabel(This,dwIDCtl,pszLabel);
}
static FORCEINLINE HRESULT IFileDialogCustomize_GetControlState(IFileDialogCustomize* This,DWORD dwIDCtl,CDCONTROLSTATEF *pdwState) {
    return This->lpVtbl->GetControlState(This,dwIDCtl,pdwState);
}
static FORCEINLINE HRESULT IFileDialogCustomize_SetControlState(IFileDialogCustomize* This,DWORD dwIDCtl,CDCONTROLSTATEF dwState) {
    return This->lpVtbl->SetControlState(This,dwIDCtl,dwState);
}
static FORCEINLINE HRESULT IFileDialogCustomize_GetEditBoxText(IFileDialogCustomize* This,DWORD dwIDCtl,WCHAR **ppszText) {
    return This->lpVtbl->GetEditBoxText(This,dwIDCtl,ppszText);
}
static FORCEINLINE HRESULT IFileDialogCustomize_SetEditBoxText(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszText) {
    return This->lpVtbl->SetEditBoxText(This,dwIDCtl,pszText);
}
static FORCEINLINE HRESULT IFileDialogCustomize_GetCheckButtonState(IFileDialogCustomize* This,DWORD dwIDCtl,BOOL *pbChecked) {
    return This->lpVtbl->GetCheckButtonState(This,dwIDCtl,pbChecked);
}
static FORCEINLINE HRESULT IFileDialogCustomize_SetCheckButtonState(IFileDialogCustomize* This,DWORD dwIDCtl,BOOL bChecked) {
    return This->lpVtbl->SetCheckButtonState(This,dwIDCtl,bChecked);
}
static FORCEINLINE HRESULT IFileDialogCustomize_AddControlItem(IFileDialogCustomize* This,DWORD dwIDCtl,DWORD dwIDItem,LPCWSTR pszLabel) {
    return This->lpVtbl->AddControlItem(This,dwIDCtl,dwIDItem,pszLabel);
}
static FORCEINLINE HRESULT IFileDialogCustomize_RemoveControlItem(IFileDialogCustomize* This,DWORD dwIDCtl,DWORD dwIDItem) {
    return This->lpVtbl->RemoveControlItem(This,dwIDCtl,dwIDItem);
}
static FORCEINLINE HRESULT IFileDialogCustomize_RemoveAllControlItems(IFileDialogCustomize* This,DWORD dwIDCtl) {
    return This->lpVtbl->RemoveAllControlItems(This,dwIDCtl);
}
static FORCEINLINE HRESULT IFileDialogCustomize_GetControlItemState(IFileDialogCustomize* This,DWORD dwIDCtl,DWORD dwIDItem,CDCONTROLSTATEF *pdwState) {
    return This->lpVtbl->GetControlItemState(This,dwIDCtl,dwIDItem,pdwState);
}
static FORCEINLINE HRESULT IFileDialogCustomize_SetControlItemState(IFileDialogCustomize* This,DWORD dwIDCtl,DWORD dwIDItem,CDCONTROLSTATEF dwState) {
    return This->lpVtbl->SetControlItemState(This,dwIDCtl,dwIDItem,dwState);
}
static FORCEINLINE HRESULT IFileDialogCustomize_GetSelectedControlItem(IFileDialogCustomize* This,DWORD dwIDCtl,DWORD *pdwIDItem) {
    return This->lpVtbl->GetSelectedControlItem(This,dwIDCtl,pdwIDItem);
}
static FORCEINLINE HRESULT IFileDialogCustomize_SetSelectedControlItem(IFileDialogCustomize* This,DWORD dwIDCtl,DWORD dwIDItem) {
    return This->lpVtbl->SetSelectedControlItem(This,dwIDCtl,dwIDItem);
}
static FORCEINLINE HRESULT IFileDialogCustomize_StartVisualGroup(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszLabel) {
    return This->lpVtbl->StartVisualGroup(This,dwIDCtl,pszLabel);
}
static FORCEINLINE HRESULT IFileDialogCustomize_EndVisualGroup(IFileDialogCustomize* This) {
    return This->lpVtbl->EndVisualGroup(This);
}
static FORCEINLINE HRESULT IFileDialogCustomize_MakeProminent(IFileDialogCustomize* This,DWORD dwIDCtl) {
    return This->lpVtbl->MakeProminent(This,dwIDCtl);
}
static FORCEINLINE HRESULT IFileDialogCustomize_SetControlItemText(IFileDialogCustomize* This,DWORD dwIDCtl,DWORD dwIDItem,LPCWSTR pszLabel) {
    return This->lpVtbl->SetControlItemText(This,dwIDCtl,dwIDItem,pszLabel);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("36116642-d713-4b97-9b83-7484a9d00433")
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,
        DWORD dwIDCtl,
        BOOL bChecked) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnControlActivating(
        IFileDialogCustomize *pfdc,
        DWORD dwIDCtl) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFileDialogControlEvents, 0x36116642, 0xd713, 0x4b97, 0x9b,0x83, 0x74,0x84,0xa9,0xd0,0x04,0x33)
#endif
#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,
        DWORD dwIDCtl,
        BOOL bChecked);

    HRESULT (STDMETHODCALLTYPE *OnControlActivating)(
        IFileDialogControlEvents *This,
        IFileDialogCustomize *pfdc,
        DWORD dwIDCtl);

    END_INTERFACE
} IFileDialogControlEventsVtbl;

interface IFileDialogControlEvents {
    CONST_VTBL IFileDialogControlEventsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFileDialogControlEvents_QueryInterface(IFileDialogControlEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFileDialogControlEvents_AddRef(IFileDialogControlEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFileDialogControlEvents_Release(IFileDialogControlEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** IFileDialogControlEvents methods ***/
static FORCEINLINE HRESULT IFileDialogControlEvents_OnItemSelected(IFileDialogControlEvents* This,IFileDialogCustomize *pfdc,DWORD dwIDCtl,DWORD dwIDItem) {
    return This->lpVtbl->OnItemSelected(This,pfdc,dwIDCtl,dwIDItem);
}
static FORCEINLINE HRESULT IFileDialogControlEvents_OnButtonClicked(IFileDialogControlEvents* This,IFileDialogCustomize *pfdc,DWORD dwIDCtl) {
    return This->lpVtbl->OnButtonClicked(This,pfdc,dwIDCtl);
}
static FORCEINLINE HRESULT IFileDialogControlEvents_OnCheckButtonToggled(IFileDialogControlEvents* This,IFileDialogCustomize *pfdc,DWORD dwIDCtl,BOOL bChecked) {
    return This->lpVtbl->OnCheckButtonToggled(This,pfdc,dwIDCtl,bChecked);
}
static FORCEINLINE HRESULT IFileDialogControlEvents_OnControlActivating(IFileDialogControlEvents* This,IFileDialogCustomize *pfdc,DWORD dwIDCtl) {
    return This->lpVtbl->OnControlActivating(This,pfdc,dwIDCtl);
}
#endif
#endif

#endif


#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,
    KFDF_STREAM = 0x10,
    KFDF_PUBLISHEXPANDEDPATH = 0x20,
    KFDF_NO_REDIRECT_UI = 0x40
} 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)
MIDL_INTERFACE("3aa7af7e-9b36-420c-a8e3-f77d4674a488")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IKnownFolder, 0x3aa7af7e, 0x9b36, 0x420c, 0xa8,0xe3, 0xf7,0x7d,0x46,0x74,0xa4,0x88)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IKnownFolder_QueryInterface(IKnownFolder* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IKnownFolder_AddRef(IKnownFolder* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IKnownFolder_Release(IKnownFolder* This) {
    return This->lpVtbl->Release(This);
}
/*** IKnownFolder methods ***/
static FORCEINLINE HRESULT IKnownFolder_GetId(IKnownFolder* This,KNOWNFOLDERID *pkfid) {
    return This->lpVtbl->GetId(This,pkfid);
}
static FORCEINLINE HRESULT IKnownFolder_GetCategory(IKnownFolder* This,KF_CATEGORY *pCategory) {
    return This->lpVtbl->GetCategory(This,pCategory);
}
static FORCEINLINE HRESULT IKnownFolder_GetShellItem(IKnownFolder* This,DWORD dwFlags,REFIID riid,void **ppv) {
    return This->lpVtbl->GetShellItem(This,dwFlags,riid,ppv);
}
static FORCEINLINE HRESULT IKnownFolder_GetPath(IKnownFolder* This,DWORD dwFlags,LPWSTR *ppszPath) {
    return This->lpVtbl->GetPath(This,dwFlags,ppszPath);
}
static FORCEINLINE HRESULT IKnownFolder_SetPath(IKnownFolder* This,DWORD dwFlags,LPCWSTR pszPath) {
    return This->lpVtbl->SetPath(This,dwFlags,pszPath);
}
static FORCEINLINE HRESULT IKnownFolder_GetIDList(IKnownFolder* This,DWORD dwFlags,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetIDList(This,dwFlags,ppidl);
}
static FORCEINLINE HRESULT IKnownFolder_GetFolderType(IKnownFolder* This,FOLDERTYPEID *pftid) {
    return This->lpVtbl->GetFolderType(This,pftid);
}
static FORCEINLINE HRESULT IKnownFolder_GetRedirectionCapabilities(IKnownFolder* This,KF_REDIRECTION_CAPABILITIES *pCapabilities) {
    return This->lpVtbl->GetRedirectionCapabilities(This,pCapabilities);
}
static FORCEINLINE HRESULT IKnownFolder_GetFolderDefinition(IKnownFolder* This,KNOWNFOLDER_DEFINITION *pKFD) {
    return This->lpVtbl->GetFolderDefinition(This,pKFD);
}
#endif
#endif

#endif


#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)
MIDL_INTERFACE("8be2d872-86aa-4d47-b776-32cca40c7018")
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;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IKnownFolderManager, 0x8be2d872, 0x86aa, 0x4d47, 0xb7,0x76, 0x32,0xcc,0xa4,0x0c,0x70,0x18)
#endif
#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
#ifndef WIDL_C_INLINE_WRAPPERS
/*** 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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IKnownFolderManager_QueryInterface(IKnownFolderManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IKnownFolderManager_AddRef(IKnownFolderManager* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IKnownFolderManager_Release(IKnownFolderManager* This) {
    return This->lpVtbl->Release(This);
}
/*** IKnownFolderManager methods ***/
static FORCEINLINE HRESULT IKnownFolderManager_FolderIdFromCsidl(IKnownFolderManager* This,int nCsidl,KNOWNFOLDERID *pfid) {
    return This->lpVtbl->FolderIdFromCsidl(This,nCsidl,pfid);
}
static FORCEINLINE HRESULT IKnownFolderManager_FolderIdToCsidl(IKnownFolderManager* This,REFKNOWNFOLDERID rfid,int *pnCsidl) {
    return This->lpVtbl->FolderIdToCsidl(This,rfid,pnCsidl);
}
static FORCEINLINE HRESULT IKnownFolderManager_GetFolderIds(IKnownFolderManager* This,KNOWNFOLDERID **ppKFId,UINT *pCount) {
    return This->lpVtbl->GetFolderIds(This,ppKFId,pCount);
}
static FORCEINLINE HRESULT IKnownFolderManager_GetFolder(IKnownFolderManager* This,REFKNOWNFOLDERID rfid,IKnownFolder **ppkf) {
    return This->lpVtbl->GetFolder(This,rfid,ppkf);
}
static FORCEINLINE HRESULT IKnownFolderManager_GetFolderByName(IKnownFolderManager* This,LPCWSTR pszCanonicalName,IKnownFolder **ppkf) {
    return This->lpVtbl->GetFolderByName(This,pszCanonicalName,ppkf);
}
static FORCEINLINE HRESULT IKnownFolderManager_RegisterFolder(IKnownFolderManager* This,REFKNOWNFOLDERID rfid,const KNOWNFOLDER_DEFINITION *pKFD) {
    return This->lpVtbl->RegisterFolder(This,rfid,pKFD);
}
static FORCEINLINE HRESULT IKnownFolderManager_UnregisterFolder(IKnownFolderManager* This,REFKNOWNFOLDERID rfid) {
    return This->lpVtbl->UnregisterFolder(This,rfid);
}
static FORCEINLINE HRESULT IKnownFolderManager_FindFolderFromPath(IKnownFolderManager* This,LPCWSTR pszPath,FFFP_MODE mode,IKnownFolder **ppkf) {
    return This->lpVtbl->FindFolderFromPath(This,pszPath,mode,ppkf);
}
static FORCEINLINE HRESULT IKnownFolderManager_FindFolderFromIDList(IKnownFolderManager* This,PCIDLIST_ABSOLUTE pidl,IKnownFolder **ppkf) {
    return This->lpVtbl->FindFolderFromIDList(This,pidl,ppkf);
}
static FORCEINLINE HRESULT IKnownFolderManager_Redirect(IKnownFolderManager* This,REFKNOWNFOLDERID rfid,HWND hwnd,KF_REDIRECT_FLAGS flags,LPCWSTR pszTargetPath,UINT cFolders,const KNOWNFOLDERID *pExclusion,LPWSTR *ppszError) {
    return This->lpVtbl->Redirect(This,rfid,hwnd,flags,pszTargetPath,cFolders,pExclusion,ppszError);
}
#endif
#endif

#endif


#endif  /* __IKnownFolderManager_INTERFACE_DEFINED__ */

static inline void FreeKnownFolderDefinitionFields(KNOWNFOLDER_DEFINITION *pKFD)
{
    CoTaskMemFree(pKFD->pszName);
    CoTaskMemFree(pKFD->pszDescription);
    CoTaskMemFree(pKFD->pszRelativePath);
    CoTaskMemFree(pKFD->pszParsingName);
    CoTaskMemFree(pKFD->pszTooltip);
    CoTaskMemFree(pKFD->pszLocalizedName);
    CoTaskMemFree(pKFD->pszIcon);
    CoTaskMemFree(pKFD->pszSecurity);
}
typedef enum ASSOCIATIONLEVEL {
    AL_MACHINE = 0,
    AL_EFFECTIVE = 1,
    AL_USER = 2
} ASSOCIATIONLEVEL;
typedef enum ASSOCIATIONTYPE {
    AT_FILEEXTENSION = 0,
    AT_URLPROTOCOL = 1,
    AT_STARTMENUCLIENT = 2,
    AT_MIMETYPE = 3
} ASSOCIATIONTYPE;
/*****************************************************************************
 * IApplicationAssociationRegistration interface
 */
#ifndef __IApplicationAssociationRegistration_INTERFACE_DEFINED__
#define __IApplicationAssociationRegistration_INTERFACE_DEFINED__

DEFINE_GUID(IID_IApplicationAssociationRegistration, 0x4e530b0a, 0xe611, 0x4c77, 0xa3,0xac, 0x90,0x31,0xd0,0x22,0x28,0x1b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4e530b0a-e611-4c77-a3ac-9031d022281b")
IApplicationAssociationRegistration : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE QueryCurrentDefault(
        LPCWSTR pszQuery,
        ASSOCIATIONTYPE atQueryType,
        ASSOCIATIONLEVEL alQueryLevel,
        LPWSTR *ppszAssociation) = 0;

    virtual HRESULT STDMETHODCALLTYPE QueryAppIsDefault(
        LPCWSTR pszQuery,
        ASSOCIATIONTYPE atQueryType,
        ASSOCIATIONLEVEL alQueryLevel,
        LPCWSTR pszAppRegistryName,
        BOOL *pfDefault) = 0;

    virtual HRESULT STDMETHODCALLTYPE QueryAppIsDefaultAll(
        ASSOCIATIONLEVEL alQueryLevel,
        LPCWSTR pszAppRegistryName,
        BOOL *pfDefault) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAppAsDefault(
        LPCWSTR pszAppRegistryName,
        LPCWSTR pszSet,
        ASSOCIATIONTYPE atSetType) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAppAsDefaultAll(
        LPCWSTR pszAppRegistryName) = 0;

    virtual HRESULT STDMETHODCALLTYPE ClearUserAssociations(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IApplicationAssociationRegistration, 0x4e530b0a, 0xe611, 0x4c77, 0xa3,0xac, 0x90,0x31,0xd0,0x22,0x28,0x1b)
#endif
#else
typedef struct IApplicationAssociationRegistrationVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IApplicationAssociationRegistration methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryCurrentDefault)(
        IApplicationAssociationRegistration *This,
        LPCWSTR pszQuery,
        ASSOCIATIONTYPE atQueryType,
        ASSOCIATIONLEVEL alQueryLevel,
        LPWSTR *ppszAssociation);

    HRESULT (STDMETHODCALLTYPE *QueryAppIsDefault)(
        IApplicationAssociationRegistration *This,
        LPCWSTR pszQuery,
        ASSOCIATIONTYPE atQueryType,
        ASSOCIATIONLEVEL alQueryLevel,
        LPCWSTR pszAppRegistryName,
        BOOL *pfDefault);

    HRESULT (STDMETHODCALLTYPE *QueryAppIsDefaultAll)(
        IApplicationAssociationRegistration *This,
        ASSOCIATIONLEVEL alQueryLevel,
        LPCWSTR pszAppRegistryName,
        BOOL *pfDefault);

    HRESULT (STDMETHODCALLTYPE *SetAppAsDefault)(
        IApplicationAssociationRegistration *This,
        LPCWSTR pszAppRegistryName,
        LPCWSTR pszSet,
        ASSOCIATIONTYPE atSetType);

    HRESULT (STDMETHODCALLTYPE *SetAppAsDefaultAll)(
        IApplicationAssociationRegistration *This,
        LPCWSTR pszAppRegistryName);

    HRESULT (STDMETHODCALLTYPE *ClearUserAssociations)(
        IApplicationAssociationRegistration *This);

    END_INTERFACE
} IApplicationAssociationRegistrationVtbl;

interface IApplicationAssociationRegistration {
    CONST_VTBL IApplicationAssociationRegistrationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IApplicationAssociationRegistration_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IApplicationAssociationRegistration_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IApplicationAssociationRegistration_Release(This) (This)->lpVtbl->Release(This)
/*** IApplicationAssociationRegistration methods ***/
#define IApplicationAssociationRegistration_QueryCurrentDefault(This,pszQuery,atQueryType,alQueryLevel,ppszAssociation) (This)->lpVtbl->QueryCurrentDefault(This,pszQuery,atQueryType,alQueryLevel,ppszAssociation)
#define IApplicationAssociationRegistration_QueryAppIsDefault(This,pszQuery,atQueryType,alQueryLevel,pszAppRegistryName,pfDefault) (This)->lpVtbl->QueryAppIsDefault(This,pszQuery,atQueryType,alQueryLevel,pszAppRegistryName,pfDefault)
#define IApplicationAssociationRegistration_QueryAppIsDefaultAll(This,alQueryLevel,pszAppRegistryName,pfDefault) (This)->lpVtbl->QueryAppIsDefaultAll(This,alQueryLevel,pszAppRegistryName,pfDefault)
#define IApplicationAssociationRegistration_SetAppAsDefault(This,pszAppRegistryName,pszSet,atSetType) (This)->lpVtbl->SetAppAsDefault(This,pszAppRegistryName,pszSet,atSetType)
#define IApplicationAssociationRegistration_SetAppAsDefaultAll(This,pszAppRegistryName) (This)->lpVtbl->SetAppAsDefaultAll(This,pszAppRegistryName)
#define IApplicationAssociationRegistration_ClearUserAssociations(This) (This)->lpVtbl->ClearUserAssociations(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IApplicationAssociationRegistration_QueryInterface(IApplicationAssociationRegistration* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IApplicationAssociationRegistration_AddRef(IApplicationAssociationRegistration* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IApplicationAssociationRegistration_Release(IApplicationAssociationRegistration* This) {
    return This->lpVtbl->Release(This);
}
/*** IApplicationAssociationRegistration methods ***/
static FORCEINLINE HRESULT IApplicationAssociationRegistration_QueryCurrentDefault(IApplicationAssociationRegistration* This,LPCWSTR pszQuery,ASSOCIATIONTYPE atQueryType,ASSOCIATIONLEVEL alQueryLevel,LPWSTR *ppszAssociation) {
    return This->lpVtbl->QueryCurrentDefault(This,pszQuery,atQueryType,alQueryLevel,ppszAssociation);
}
static FORCEINLINE HRESULT IApplicationAssociationRegistration_QueryAppIsDefault(IApplicationAssociationRegistration* This,LPCWSTR pszQuery,ASSOCIATIONTYPE atQueryType,ASSOCIATIONLEVEL alQueryLevel,LPCWSTR pszAppRegistryName,BOOL *pfDefault) {
    return This->lpVtbl->QueryAppIsDefault(This,pszQuery,atQueryType,alQueryLevel,pszAppRegistryName,pfDefault);
}
static FORCEINLINE HRESULT IApplicationAssociationRegistration_QueryAppIsDefaultAll(IApplicationAssociationRegistration* This,ASSOCIATIONLEVEL alQueryLevel,LPCWSTR pszAppRegistryName,BOOL *pfDefault) {
    return This->lpVtbl->QueryAppIsDefaultAll(This,alQueryLevel,pszAppRegistryName,pfDefault);
}
static FORCEINLINE HRESULT IApplicationAssociationRegistration_SetAppAsDefault(IApplicationAssociationRegistration* This,LPCWSTR pszAppRegistryName,LPCWSTR pszSet,ASSOCIATIONTYPE atSetType) {
    return This->lpVtbl->SetAppAsDefault(This,pszAppRegistryName,pszSet,atSetType);
}
static FORCEINLINE HRESULT IApplicationAssociationRegistration_SetAppAsDefaultAll(IApplicationAssociationRegistration* This,LPCWSTR pszAppRegistryName) {
    return This->lpVtbl->SetAppAsDefaultAll(This,pszAppRegistryName);
}
static FORCEINLINE HRESULT IApplicationAssociationRegistration_ClearUserAssociations(IApplicationAssociationRegistration* This) {
    return This->lpVtbl->ClearUserAssociations(This);
}
#endif
#endif

#endif


#endif  /* __IApplicationAssociationRegistration_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IApplicationDestinations interface
 */
#ifndef __IApplicationDestinations_INTERFACE_DEFINED__
#define __IApplicationDestinations_INTERFACE_DEFINED__

DEFINE_GUID(IID_IApplicationDestinations, 0x12337d35, 0x94c6, 0x48a0, 0xbc,0xe7, 0x6a,0x9c,0x69,0xd4,0xd6,0x00);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("12337d35-94c6-48a0-bce7-6a9c69d4d600")
IApplicationDestinations : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetAppID(
        LPCWSTR pszAppID) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveDestination(
        IUnknown *punk) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveAllDestinations(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IApplicationDestinations, 0x12337d35, 0x94c6, 0x48a0, 0xbc,0xe7, 0x6a,0x9c,0x69,0xd4,0xd6,0x00)
#endif
#else
typedef struct IApplicationDestinationsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IApplicationDestinations methods ***/
    HRESULT (STDMETHODCALLTYPE *SetAppID)(
        IApplicationDestinations *This,
        LPCWSTR pszAppID);

    HRESULT (STDMETHODCALLTYPE *RemoveDestination)(
        IApplicationDestinations *This,
        IUnknown *punk);

    HRESULT (STDMETHODCALLTYPE *RemoveAllDestinations)(
        IApplicationDestinations *This);

    END_INTERFACE
} IApplicationDestinationsVtbl;

interface IApplicationDestinations {
    CONST_VTBL IApplicationDestinationsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IApplicationDestinations_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IApplicationDestinations_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IApplicationDestinations_Release(This) (This)->lpVtbl->Release(This)
/*** IApplicationDestinations methods ***/
#define IApplicationDestinations_SetAppID(This,pszAppID) (This)->lpVtbl->SetAppID(This,pszAppID)
#define IApplicationDestinations_RemoveDestination(This,punk) (This)->lpVtbl->RemoveDestination(This,punk)
#define IApplicationDestinations_RemoveAllDestinations(This) (This)->lpVtbl->RemoveAllDestinations(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IApplicationDestinations_QueryInterface(IApplicationDestinations* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IApplicationDestinations_AddRef(IApplicationDestinations* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IApplicationDestinations_Release(IApplicationDestinations* This) {
    return This->lpVtbl->Release(This);
}
/*** IApplicationDestinations methods ***/
static FORCEINLINE HRESULT IApplicationDestinations_SetAppID(IApplicationDestinations* This,LPCWSTR pszAppID) {
    return This->lpVtbl->SetAppID(This,pszAppID);
}
static FORCEINLINE HRESULT IApplicationDestinations_RemoveDestination(IApplicationDestinations* This,IUnknown *punk) {
    return This->lpVtbl->RemoveDestination(This,punk);
}
static FORCEINLINE HRESULT IApplicationDestinations_RemoveAllDestinations(IApplicationDestinations* This) {
    return This->lpVtbl->RemoveAllDestinations(This);
}
#endif
#endif

#endif


#endif  /* __IApplicationDestinations_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICustomDestinationList interface
 */
#ifndef __ICustomDestinationList_INTERFACE_DEFINED__
#define __ICustomDestinationList_INTERFACE_DEFINED__

typedef enum KNOWNDESTCATEGORY {
    KDC_FREQUENT = 1,
    KDC_RECENT = 2
} KNOWNDESTCATEGORY;
DEFINE_GUID(IID_ICustomDestinationList, 0x6332debf, 0x87b5, 0x4670, 0x90,0xc0, 0x5e,0x57,0xb4,0x08,0xa4,0x9e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6332debf-87b5-4670-90c0-5e57b408a49e")
ICustomDestinationList : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetAppID(
        LPCWSTR pszAppID) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginList(
        UINT *pcMinSlots,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE AppendCategory(
        LPCWSTR pszCategory,
        IObjectArray *poa) = 0;

    virtual HRESULT STDMETHODCALLTYPE AppendKnownCategory(
        KNOWNDESTCATEGORY category) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddUserTasks(
        IObjectArray *poa) = 0;

    virtual HRESULT STDMETHODCALLTYPE CommitList(
        ) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE DeleteList(
        LPCWSTR pszAppID) = 0;

    virtual HRESULT STDMETHODCALLTYPE AbortList(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICustomDestinationList, 0x6332debf, 0x87b5, 0x4670, 0x90,0xc0, 0x5e,0x57,0xb4,0x08,0xa4,0x9e)
#endif
#else
typedef struct ICustomDestinationListVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ICustomDestinationList methods ***/
    HRESULT (STDMETHODCALLTYPE *SetAppID)(
        ICustomDestinationList *This,
        LPCWSTR pszAppID);

    HRESULT (STDMETHODCALLTYPE *BeginList)(
        ICustomDestinationList *This,
        UINT *pcMinSlots,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *AppendCategory)(
        ICustomDestinationList *This,
        LPCWSTR pszCategory,
        IObjectArray *poa);

    HRESULT (STDMETHODCALLTYPE *AppendKnownCategory)(
        ICustomDestinationList *This,
        KNOWNDESTCATEGORY category);

    HRESULT (STDMETHODCALLTYPE *AddUserTasks)(
        ICustomDestinationList *This,
        IObjectArray *poa);

    HRESULT (STDMETHODCALLTYPE *CommitList)(
        ICustomDestinationList *This);

    HRESULT (STDMETHODCALLTYPE *GetRemovedDestinations)(
        ICustomDestinationList *This,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *DeleteList)(
        ICustomDestinationList *This,
        LPCWSTR pszAppID);

    HRESULT (STDMETHODCALLTYPE *AbortList)(
        ICustomDestinationList *This);

    END_INTERFACE
} ICustomDestinationListVtbl;

interface ICustomDestinationList {
    CONST_VTBL ICustomDestinationListVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICustomDestinationList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICustomDestinationList_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICustomDestinationList_Release(This) (This)->lpVtbl->Release(This)
/*** ICustomDestinationList methods ***/
#define ICustomDestinationList_SetAppID(This,pszAppID) (This)->lpVtbl->SetAppID(This,pszAppID)
#define ICustomDestinationList_BeginList(This,pcMinSlots,riid,ppv) (This)->lpVtbl->BeginList(This,pcMinSlots,riid,ppv)
#define ICustomDestinationList_AppendCategory(This,pszCategory,poa) (This)->lpVtbl->AppendCategory(This,pszCategory,poa)
#define ICustomDestinationList_AppendKnownCategory(This,category) (This)->lpVtbl->AppendKnownCategory(This,category)
#define ICustomDestinationList_AddUserTasks(This,poa) (This)->lpVtbl->AddUserTasks(This,poa)
#define ICustomDestinationList_CommitList(This) (This)->lpVtbl->CommitList(This)
#define ICustomDestinationList_GetRemovedDestinations(This,riid,ppv) (This)->lpVtbl->GetRemovedDestinations(This,riid,ppv)
#define ICustomDestinationList_DeleteList(This,pszAppID) (This)->lpVtbl->DeleteList(This,pszAppID)
#define ICustomDestinationList_AbortList(This) (This)->lpVtbl->AbortList(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICustomDestinationList_QueryInterface(ICustomDestinationList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICustomDestinationList_AddRef(ICustomDestinationList* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICustomDestinationList_Release(ICustomDestinationList* This) {
    return This->lpVtbl->Release(This);
}
/*** ICustomDestinationList methods ***/
static FORCEINLINE HRESULT ICustomDestinationList_SetAppID(ICustomDestinationList* This,LPCWSTR pszAppID) {
    return This->lpVtbl->SetAppID(This,pszAppID);
}
static FORCEINLINE HRESULT ICustomDestinationList_BeginList(ICustomDestinationList* This,UINT *pcMinSlots,REFIID riid,void **ppv) {
    return This->lpVtbl->BeginList(This,pcMinSlots,riid,ppv);
}
static FORCEINLINE HRESULT ICustomDestinationList_AppendCategory(ICustomDestinationList* This,LPCWSTR pszCategory,IObjectArray *poa) {
    return This->lpVtbl->AppendCategory(This,pszCategory,poa);
}
static FORCEINLINE HRESULT ICustomDestinationList_AppendKnownCategory(ICustomDestinationList* This,KNOWNDESTCATEGORY category) {
    return This->lpVtbl->AppendKnownCategory(This,category);
}
static FORCEINLINE HRESULT ICustomDestinationList_AddUserTasks(ICustomDestinationList* This,IObjectArray *poa) {
    return This->lpVtbl->AddUserTasks(This,poa);
}
static FORCEINLINE HRESULT ICustomDestinationList_CommitList(ICustomDestinationList* This) {
    return This->lpVtbl->CommitList(This);
}
static FORCEINLINE HRESULT ICustomDestinationList_GetRemovedDestinations(ICustomDestinationList* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetRemovedDestinations(This,riid,ppv);
}
static FORCEINLINE HRESULT ICustomDestinationList_DeleteList(ICustomDestinationList* This,LPCWSTR pszAppID) {
    return This->lpVtbl->DeleteList(This,pszAppID);
}
static FORCEINLINE HRESULT ICustomDestinationList_AbortList(ICustomDestinationList* This) {
    return This->lpVtbl->AbortList(This);
}
#endif
#endif

#endif


#endif  /* __ICustomDestinationList_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IQueryCancelAutoPlay interface
 */
#ifndef __IQueryCancelAutoPlay_INTERFACE_DEFINED__
#define __IQueryCancelAutoPlay_INTERFACE_DEFINED__

DEFINE_GUID(IID_IQueryCancelAutoPlay, 0xddefe873, 0x6997, 0x4e68, 0xbe,0x26, 0x39,0xb6,0x33,0xad,0xbe,0x12);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ddefe873-6997-4e68-be26-39b633adbe12")
IQueryCancelAutoPlay : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AllowAutoPlay(
        LPCWSTR path,
        DWORD content_type,
        LPCWSTR label,
        DWORD serial_number) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IQueryCancelAutoPlay, 0xddefe873, 0x6997, 0x4e68, 0xbe,0x26, 0x39,0xb6,0x33,0xad,0xbe,0x12)
#endif
#else
typedef struct IQueryCancelAutoPlayVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IQueryCancelAutoPlay methods ***/
    HRESULT (STDMETHODCALLTYPE *AllowAutoPlay)(
        IQueryCancelAutoPlay *This,
        LPCWSTR path,
        DWORD content_type,
        LPCWSTR label,
        DWORD serial_number);

    END_INTERFACE
} IQueryCancelAutoPlayVtbl;

interface IQueryCancelAutoPlay {
    CONST_VTBL IQueryCancelAutoPlayVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IQueryCancelAutoPlay_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IQueryCancelAutoPlay_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IQueryCancelAutoPlay_Release(This) (This)->lpVtbl->Release(This)
/*** IQueryCancelAutoPlay methods ***/
#define IQueryCancelAutoPlay_AllowAutoPlay(This,path,content_type,label,serial_number) (This)->lpVtbl->AllowAutoPlay(This,path,content_type,label,serial_number)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IQueryCancelAutoPlay_QueryInterface(IQueryCancelAutoPlay* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IQueryCancelAutoPlay_AddRef(IQueryCancelAutoPlay* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IQueryCancelAutoPlay_Release(IQueryCancelAutoPlay* This) {
    return This->lpVtbl->Release(This);
}
/*** IQueryCancelAutoPlay methods ***/
static FORCEINLINE HRESULT IQueryCancelAutoPlay_AllowAutoPlay(IQueryCancelAutoPlay* This,LPCWSTR path,DWORD content_type,LPCWSTR label,DWORD serial_number) {
    return This->lpVtbl->AllowAutoPlay(This,path,content_type,label,serial_number);
}
#endif
#endif

#endif


#endif  /* __IQueryCancelAutoPlay_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransferAdviseSink interface
 */
#ifndef __ITransferAdviseSink_INTERFACE_DEFINED__
#define __ITransferAdviseSink_INTERFACE_DEFINED__

enum _TRANSFER_ADVISE_STATE {
    TS_NONE = 0,
    TS_PERFORMING = 1,
    TS_PREPARING = 2,
    TS_INDETERMINATE = 4
};
typedef DWORD TRANSFER_ADVISE_STATE;
DEFINE_GUID(IID_ITransferAdviseSink, 0xd594d0d8, 0x8da7, 0x457b, 0xb3,0xb4, 0xce,0x5d,0xba,0xac,0x0b,0x88);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d594d0d8-8da7-457b-b3b4-ce5dbaac0b88")
ITransferAdviseSink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE UpdateProgress(
        ULONGLONG size_current,
        ULONGLONG size_total,
        INT files_current,
        INT files_total,
        INT folders_current,
        INT folders_total) = 0;

    virtual HRESULT STDMETHODCALLTYPE UpdateTransferState(
        TRANSFER_ADVISE_STATE state) = 0;

    virtual HRESULT STDMETHODCALLTYPE ConfirmOverwrite(
        IShellItem *source,
        IShellItem *dest_parent,
        LPCWSTR name) = 0;

    virtual HRESULT STDMETHODCALLTYPE ConfirmEncryptionLoss(
        IShellItem *source) = 0;

    virtual HRESULT STDMETHODCALLTYPE FileFailure(
        IShellItem *item,
        LPCWSTR itemname,
        HRESULT hr,
        LPWSTR rename,
        ULONG crename) = 0;

    virtual HRESULT STDMETHODCALLTYPE SubStreamFailure(
        IShellItem *item,
        LPCWSTR stream,
        HRESULT hr) = 0;

    virtual HRESULT STDMETHODCALLTYPE PropertyFailure(
        IShellItem *item,
        const PROPERTYKEY *key,
        HRESULT hr) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransferAdviseSink, 0xd594d0d8, 0x8da7, 0x457b, 0xb3,0xb4, 0xce,0x5d,0xba,0xac,0x0b,0x88)
#endif
#else
typedef struct ITransferAdviseSinkVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITransferAdviseSink methods ***/
    HRESULT (STDMETHODCALLTYPE *UpdateProgress)(
        ITransferAdviseSink *This,
        ULONGLONG size_current,
        ULONGLONG size_total,
        INT files_current,
        INT files_total,
        INT folders_current,
        INT folders_total);

    HRESULT (STDMETHODCALLTYPE *UpdateTransferState)(
        ITransferAdviseSink *This,
        TRANSFER_ADVISE_STATE state);

    HRESULT (STDMETHODCALLTYPE *ConfirmOverwrite)(
        ITransferAdviseSink *This,
        IShellItem *source,
        IShellItem *dest_parent,
        LPCWSTR name);

    HRESULT (STDMETHODCALLTYPE *ConfirmEncryptionLoss)(
        ITransferAdviseSink *This,
        IShellItem *source);

    HRESULT (STDMETHODCALLTYPE *FileFailure)(
        ITransferAdviseSink *This,
        IShellItem *item,
        LPCWSTR itemname,
        HRESULT hr,
        LPWSTR rename,
        ULONG crename);

    HRESULT (STDMETHODCALLTYPE *SubStreamFailure)(
        ITransferAdviseSink *This,
        IShellItem *item,
        LPCWSTR stream,
        HRESULT hr);

    HRESULT (STDMETHODCALLTYPE *PropertyFailure)(
        ITransferAdviseSink *This,
        IShellItem *item,
        const PROPERTYKEY *key,
        HRESULT hr);

    END_INTERFACE
} ITransferAdviseSinkVtbl;

interface ITransferAdviseSink {
    CONST_VTBL ITransferAdviseSinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransferAdviseSink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransferAdviseSink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransferAdviseSink_Release(This) (This)->lpVtbl->Release(This)
/*** ITransferAdviseSink methods ***/
#define ITransferAdviseSink_UpdateProgress(This,size_current,size_total,files_current,files_total,folders_current,folders_total) (This)->lpVtbl->UpdateProgress(This,size_current,size_total,files_current,files_total,folders_current,folders_total)
#define ITransferAdviseSink_UpdateTransferState(This,state) (This)->lpVtbl->UpdateTransferState(This,state)
#define ITransferAdviseSink_ConfirmOverwrite(This,source,dest_parent,name) (This)->lpVtbl->ConfirmOverwrite(This,source,dest_parent,name)
#define ITransferAdviseSink_ConfirmEncryptionLoss(This,source) (This)->lpVtbl->ConfirmEncryptionLoss(This,source)
#define ITransferAdviseSink_FileFailure(This,item,itemname,hr,rename,crename) (This)->lpVtbl->FileFailure(This,item,itemname,hr,rename,crename)
#define ITransferAdviseSink_SubStreamFailure(This,item,stream,hr) (This)->lpVtbl->SubStreamFailure(This,item,stream,hr)
#define ITransferAdviseSink_PropertyFailure(This,item,key,hr) (This)->lpVtbl->PropertyFailure(This,item,key,hr)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITransferAdviseSink_QueryInterface(ITransferAdviseSink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITransferAdviseSink_AddRef(ITransferAdviseSink* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITransferAdviseSink_Release(ITransferAdviseSink* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransferAdviseSink methods ***/
static FORCEINLINE HRESULT ITransferAdviseSink_UpdateProgress(ITransferAdviseSink* This,ULONGLONG size_current,ULONGLONG size_total,INT files_current,INT files_total,INT folders_current,INT folders_total) {
    return This->lpVtbl->UpdateProgress(This,size_current,size_total,files_current,files_total,folders_current,folders_total);
}
static FORCEINLINE HRESULT ITransferAdviseSink_UpdateTransferState(ITransferAdviseSink* This,TRANSFER_ADVISE_STATE state) {
    return This->lpVtbl->UpdateTransferState(This,state);
}
static FORCEINLINE HRESULT ITransferAdviseSink_ConfirmOverwrite(ITransferAdviseSink* This,IShellItem *source,IShellItem *dest_parent,LPCWSTR name) {
    return This->lpVtbl->ConfirmOverwrite(This,source,dest_parent,name);
}
static FORCEINLINE HRESULT ITransferAdviseSink_ConfirmEncryptionLoss(ITransferAdviseSink* This,IShellItem *source) {
    return This->lpVtbl->ConfirmEncryptionLoss(This,source);
}
static FORCEINLINE HRESULT ITransferAdviseSink_FileFailure(ITransferAdviseSink* This,IShellItem *item,LPCWSTR itemname,HRESULT hr,LPWSTR rename,ULONG crename) {
    return This->lpVtbl->FileFailure(This,item,itemname,hr,rename,crename);
}
static FORCEINLINE HRESULT ITransferAdviseSink_SubStreamFailure(ITransferAdviseSink* This,IShellItem *item,LPCWSTR stream,HRESULT hr) {
    return This->lpVtbl->SubStreamFailure(This,item,stream,hr);
}
static FORCEINLINE HRESULT ITransferAdviseSink_PropertyFailure(ITransferAdviseSink* This,IShellItem *item,const PROPERTYKEY *key,HRESULT hr) {
    return This->lpVtbl->PropertyFailure(This,item,key,hr);
}
#endif
#endif

#endif


#endif  /* __ITransferAdviseSink_INTERFACE_DEFINED__ */

enum _TRANSFER_SOURCE_FLAGS {
    TSF_NORMAL = 0,
    TSF_FAIL_EXIST = 0,
    TSF_RENAME_EXIST = 0x1,
    TSF_OVERWRITE_EXIST = 0x2,
    TSF_ALLOW_DECRYPTION = 0x4,
    TSF_NO_SECURITY = 0x8,
    TSF_COPY_CREATION_TIME = 0x10,
    TSF_COPY_WRITE_TIME = 0x20,
    TSF_USE_FULL_ACCESS = 0x40,
    TSF_DELETE_RECYCLE_IF_POSSIBLE = 0x80,
    TSF_COPY_HARD_LINK = 0x100,
    TSF_COPY_LOCALIZED_NAME = 0x200,
    TSF_MOVE_AS_COPY_DELETE = 0x400,
    TSF_SUSPEND_SHELLEVENTS = 0x800
};
typedef DWORD TRANSFER_SOURCE_FLAGS;
/*****************************************************************************
 * ITransferSource interface
 */
#ifndef __ITransferSource_INTERFACE_DEFINED__
#define __ITransferSource_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransferSource, 0x00adb003, 0xbde9, 0x45c6, 0x8e,0x29, 0xd0,0x9f,0x93,0x53,0xe1,0x08);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("00adb003-bde9-45c6-8e29-d09f9353e108")
ITransferSource : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Advise(
        ITransferAdviseSink *sink,
        DWORD *cookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unadvise(
        DWORD cookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetProperties(
        IPropertyChangeArray *array) = 0;

    virtual HRESULT STDMETHODCALLTYPE OpenItem(
        IShellItem *item,
        TRANSFER_SOURCE_FLAGS flags,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE MoveItem(
        IShellItem *item,
        IShellItem *parent_dest,
        LPCWSTR name_dest,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **newitem) = 0;

    virtual HRESULT STDMETHODCALLTYPE RecycleItem(
        IShellItem *source,
        IShellItem *parent_dest,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **new_dest) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveItem(
        IShellItem *source,
        TRANSFER_SOURCE_FLAGS flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE RenameItem(
        IShellItem *source,
        LPCWSTR newname,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **new_dest) = 0;

    virtual HRESULT STDMETHODCALLTYPE LinkItem(
        IShellItem *source,
        IShellItem *parent_dest,
        LPCWSTR new_name,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **new_dest) = 0;

    virtual HRESULT STDMETHODCALLTYPE ApplyPropertiesToItem(
        IShellItem *source,
        IShellItem **newitem) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultDestinationName(
        IShellItem *source,
        IShellItem *parent_dest,
        LPWSTR *dest_name) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnterFolder(
        IShellItem *child_folder) = 0;

    virtual HRESULT STDMETHODCALLTYPE LeaveFolder(
        IShellItem *child_folder) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransferSource, 0x00adb003, 0xbde9, 0x45c6, 0x8e,0x29, 0xd0,0x9f,0x93,0x53,0xe1,0x08)
#endif
#else
typedef struct ITransferSourceVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITransferSource methods ***/
    HRESULT (STDMETHODCALLTYPE *Advise)(
        ITransferSource *This,
        ITransferAdviseSink *sink,
        DWORD *cookie);

    HRESULT (STDMETHODCALLTYPE *Unadvise)(
        ITransferSource *This,
        DWORD cookie);

    HRESULT (STDMETHODCALLTYPE *SetProperties)(
        ITransferSource *This,
        IPropertyChangeArray *array);

    HRESULT (STDMETHODCALLTYPE *OpenItem)(
        ITransferSource *This,
        IShellItem *item,
        TRANSFER_SOURCE_FLAGS flags,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *MoveItem)(
        ITransferSource *This,
        IShellItem *item,
        IShellItem *parent_dest,
        LPCWSTR name_dest,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **newitem);

    HRESULT (STDMETHODCALLTYPE *RecycleItem)(
        ITransferSource *This,
        IShellItem *source,
        IShellItem *parent_dest,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **new_dest);

    HRESULT (STDMETHODCALLTYPE *RemoveItem)(
        ITransferSource *This,
        IShellItem *source,
        TRANSFER_SOURCE_FLAGS flags);

    HRESULT (STDMETHODCALLTYPE *RenameItem)(
        ITransferSource *This,
        IShellItem *source,
        LPCWSTR newname,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **new_dest);

    HRESULT (STDMETHODCALLTYPE *LinkItem)(
        ITransferSource *This,
        IShellItem *source,
        IShellItem *parent_dest,
        LPCWSTR new_name,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **new_dest);

    HRESULT (STDMETHODCALLTYPE *ApplyPropertiesToItem)(
        ITransferSource *This,
        IShellItem *source,
        IShellItem **newitem);

    HRESULT (STDMETHODCALLTYPE *GetDefaultDestinationName)(
        ITransferSource *This,
        IShellItem *source,
        IShellItem *parent_dest,
        LPWSTR *dest_name);

    HRESULT (STDMETHODCALLTYPE *EnterFolder)(
        ITransferSource *This,
        IShellItem *child_folder);

    HRESULT (STDMETHODCALLTYPE *LeaveFolder)(
        ITransferSource *This,
        IShellItem *child_folder);

    END_INTERFACE
} ITransferSourceVtbl;

interface ITransferSource {
    CONST_VTBL ITransferSourceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransferSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransferSource_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransferSource_Release(This) (This)->lpVtbl->Release(This)
/*** ITransferSource methods ***/
#define ITransferSource_Advise(This,sink,cookie) (This)->lpVtbl->Advise(This,sink,cookie)
#define ITransferSource_Unadvise(This,cookie) (This)->lpVtbl->Unadvise(This,cookie)
#define ITransferSource_SetProperties(This,array) (This)->lpVtbl->SetProperties(This,array)
#define ITransferSource_OpenItem(This,item,flags,riid,ppv) (This)->lpVtbl->OpenItem(This,item,flags,riid,ppv)
#define ITransferSource_MoveItem(This,item,parent_dest,name_dest,flags,newitem) (This)->lpVtbl->MoveItem(This,item,parent_dest,name_dest,flags,newitem)
#define ITransferSource_RecycleItem(This,source,parent_dest,flags,new_dest) (This)->lpVtbl->RecycleItem(This,source,parent_dest,flags,new_dest)
#define ITransferSource_RemoveItem(This,source,flags) (This)->lpVtbl->RemoveItem(This,source,flags)
#define ITransferSource_RenameItem(This,source,newname,flags,new_dest) (This)->lpVtbl->RenameItem(This,source,newname,flags,new_dest)
#define ITransferSource_LinkItem(This,source,parent_dest,new_name,flags,new_dest) (This)->lpVtbl->LinkItem(This,source,parent_dest,new_name,flags,new_dest)
#define ITransferSource_ApplyPropertiesToItem(This,source,newitem) (This)->lpVtbl->ApplyPropertiesToItem(This,source,newitem)
#define ITransferSource_GetDefaultDestinationName(This,source,parent_dest,dest_name) (This)->lpVtbl->GetDefaultDestinationName(This,source,parent_dest,dest_name)
#define ITransferSource_EnterFolder(This,child_folder) (This)->lpVtbl->EnterFolder(This,child_folder)
#define ITransferSource_LeaveFolder(This,child_folder) (This)->lpVtbl->LeaveFolder(This,child_folder)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITransferSource_QueryInterface(ITransferSource* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITransferSource_AddRef(ITransferSource* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITransferSource_Release(ITransferSource* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransferSource methods ***/
static FORCEINLINE HRESULT ITransferSource_Advise(ITransferSource* This,ITransferAdviseSink *sink,DWORD *cookie) {
    return This->lpVtbl->Advise(This,sink,cookie);
}
static FORCEINLINE HRESULT ITransferSource_Unadvise(ITransferSource* This,DWORD cookie) {
    return This->lpVtbl->Unadvise(This,cookie);
}
static FORCEINLINE HRESULT ITransferSource_SetProperties(ITransferSource* This,IPropertyChangeArray *array) {
    return This->lpVtbl->SetProperties(This,array);
}
static FORCEINLINE HRESULT ITransferSource_OpenItem(ITransferSource* This,IShellItem *item,TRANSFER_SOURCE_FLAGS flags,REFIID riid,void **ppv) {
    return This->lpVtbl->OpenItem(This,item,flags,riid,ppv);
}
static FORCEINLINE HRESULT ITransferSource_MoveItem(ITransferSource* This,IShellItem *item,IShellItem *parent_dest,LPCWSTR name_dest,TRANSFER_SOURCE_FLAGS flags,IShellItem **newitem) {
    return This->lpVtbl->MoveItem(This,item,parent_dest,name_dest,flags,newitem);
}
static FORCEINLINE HRESULT ITransferSource_RecycleItem(ITransferSource* This,IShellItem *source,IShellItem *parent_dest,TRANSFER_SOURCE_FLAGS flags,IShellItem **new_dest) {
    return This->lpVtbl->RecycleItem(This,source,parent_dest,flags,new_dest);
}
static FORCEINLINE HRESULT ITransferSource_RemoveItem(ITransferSource* This,IShellItem *source,TRANSFER_SOURCE_FLAGS flags) {
    return This->lpVtbl->RemoveItem(This,source,flags);
}
static FORCEINLINE HRESULT ITransferSource_RenameItem(ITransferSource* This,IShellItem *source,LPCWSTR newname,TRANSFER_SOURCE_FLAGS flags,IShellItem **new_dest) {
    return This->lpVtbl->RenameItem(This,source,newname,flags,new_dest);
}
static FORCEINLINE HRESULT ITransferSource_LinkItem(ITransferSource* This,IShellItem *source,IShellItem *parent_dest,LPCWSTR new_name,TRANSFER_SOURCE_FLAGS flags,IShellItem **new_dest) {
    return This->lpVtbl->LinkItem(This,source,parent_dest,new_name,flags,new_dest);
}
static FORCEINLINE HRESULT ITransferSource_ApplyPropertiesToItem(ITransferSource* This,IShellItem *source,IShellItem **newitem) {
    return This->lpVtbl->ApplyPropertiesToItem(This,source,newitem);
}
static FORCEINLINE HRESULT ITransferSource_GetDefaultDestinationName(ITransferSource* This,IShellItem *source,IShellItem *parent_dest,LPWSTR *dest_name) {
    return This->lpVtbl->GetDefaultDestinationName(This,source,parent_dest,dest_name);
}
static FORCEINLINE HRESULT ITransferSource_EnterFolder(ITransferSource* This,IShellItem *child_folder) {
    return This->lpVtbl->EnterFolder(This,child_folder);
}
static FORCEINLINE HRESULT ITransferSource_LeaveFolder(ITransferSource* This,IShellItem *child_folder) {
    return This->lpVtbl->LeaveFolder(This,child_folder);
}
#endif
#endif

#endif


#endif  /* __ITransferSource_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ITransferDestination interface
 */
#ifndef __ITransferDestination_INTERFACE_DEFINED__
#define __ITransferDestination_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransferDestination, 0x48addd32, 0x3ca5, 0x4124, 0xab,0xe3, 0xb5,0xa7,0x25,0x31,0xb2,0x07);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("48addd32-3ca5-4124-abe3-b5a72531b207")
ITransferDestination : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Advise(
        ITransferAdviseSink *sink,
        DWORD *cookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unadvise(
        DWORD cookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateItem(
        LPCWSTR name,
        DWORD attr,
        ULONGLONG size,
        TRANSFER_SOURCE_FLAGS flags,
        REFIID riid,
        void **ppv,
        REFIID resources,
        void **presources) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransferDestination, 0x48addd32, 0x3ca5, 0x4124, 0xab,0xe3, 0xb5,0xa7,0x25,0x31,0xb2,0x07)
#endif
#else
typedef struct ITransferDestinationVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITransferDestination methods ***/
    HRESULT (STDMETHODCALLTYPE *Advise)(
        ITransferDestination *This,
        ITransferAdviseSink *sink,
        DWORD *cookie);

    HRESULT (STDMETHODCALLTYPE *Unadvise)(
        ITransferDestination *This,
        DWORD cookie);

    HRESULT (STDMETHODCALLTYPE *CreateItem)(
        ITransferDestination *This,
        LPCWSTR name,
        DWORD attr,
        ULONGLONG size,
        TRANSFER_SOURCE_FLAGS flags,
        REFIID riid,
        void **ppv,
        REFIID resources,
        void **presources);

    END_INTERFACE
} ITransferDestinationVtbl;

interface ITransferDestination {
    CONST_VTBL ITransferDestinationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransferDestination_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransferDestination_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransferDestination_Release(This) (This)->lpVtbl->Release(This)
/*** ITransferDestination methods ***/
#define ITransferDestination_Advise(This,sink,cookie) (This)->lpVtbl->Advise(This,sink,cookie)
#define ITransferDestination_Unadvise(This,cookie) (This)->lpVtbl->Unadvise(This,cookie)
#define ITransferDestination_CreateItem(This,name,attr,size,flags,riid,ppv,resources,presources) (This)->lpVtbl->CreateItem(This,name,attr,size,flags,riid,ppv,resources,presources)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ITransferDestination_QueryInterface(ITransferDestination* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ITransferDestination_AddRef(ITransferDestination* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ITransferDestination_Release(ITransferDestination* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransferDestination methods ***/
static FORCEINLINE HRESULT ITransferDestination_Advise(ITransferDestination* This,ITransferAdviseSink *sink,DWORD *cookie) {
    return This->lpVtbl->Advise(This,sink,cookie);
}
static FORCEINLINE HRESULT ITransferDestination_Unadvise(ITransferDestination* This,DWORD cookie) {
    return This->lpVtbl->Unadvise(This,cookie);
}
static FORCEINLINE HRESULT ITransferDestination_CreateItem(ITransferDestination* This,LPCWSTR name,DWORD attr,ULONGLONG size,TRANSFER_SOURCE_FLAGS flags,REFIID riid,void **ppv,REFIID resources,void **presources) {
    return This->lpVtbl->CreateItem(This,name,attr,size,flags,riid,ppv,resources,presources);
}
#endif
#endif

#endif


#endif  /* __ITransferDestination_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAssocHandlerInvoker interface
 */
#ifndef __IAssocHandlerInvoker_INTERFACE_DEFINED__
#define __IAssocHandlerInvoker_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAssocHandlerInvoker, 0x92218cab, 0xecaa, 0x4335, 0x81,0x33, 0x80,0x7f,0xd2,0x34,0xc2,0xee);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("92218cab-ecaa-4335-8133-807fd234c2ee")
IAssocHandlerInvoker : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SupportsSelection(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Invoke(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAssocHandlerInvoker, 0x92218cab, 0xecaa, 0x4335, 0x81,0x33, 0x80,0x7f,0xd2,0x34,0xc2,0xee)
#endif
#else
typedef struct IAssocHandlerInvokerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAssocHandlerInvoker methods ***/
    HRESULT (STDMETHODCALLTYPE *SupportsSelection)(
        IAssocHandlerInvoker *This);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IAssocHandlerInvoker *This);

    END_INTERFACE
} IAssocHandlerInvokerVtbl;

interface IAssocHandlerInvoker {
    CONST_VTBL IAssocHandlerInvokerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAssocHandlerInvoker_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAssocHandlerInvoker_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAssocHandlerInvoker_Release(This) (This)->lpVtbl->Release(This)
/*** IAssocHandlerInvoker methods ***/
#define IAssocHandlerInvoker_SupportsSelection(This) (This)->lpVtbl->SupportsSelection(This)
#define IAssocHandlerInvoker_Invoke(This) (This)->lpVtbl->Invoke(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IAssocHandlerInvoker_QueryInterface(IAssocHandlerInvoker* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IAssocHandlerInvoker_AddRef(IAssocHandlerInvoker* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IAssocHandlerInvoker_Release(IAssocHandlerInvoker* This) {
    return This->lpVtbl->Release(This);
}
/*** IAssocHandlerInvoker methods ***/
static FORCEINLINE HRESULT IAssocHandlerInvoker_SupportsSelection(IAssocHandlerInvoker* This) {
    return This->lpVtbl->SupportsSelection(This);
}
static FORCEINLINE HRESULT IAssocHandlerInvoker_Invoke(IAssocHandlerInvoker* This) {
    return This->lpVtbl->Invoke(This);
}
#endif
#endif

#endif


#endif  /* __IAssocHandlerInvoker_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAssocHandler interface
 */
#ifndef __IAssocHandler_INTERFACE_DEFINED__
#define __IAssocHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAssocHandler, 0xf04061ac, 0x1659, 0x4a3f, 0xa9,0x54, 0x77,0x5a,0xa5,0x7f,0xc0,0x83);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f04061ac-1659-4a3f-a954-775aa57fc083")
IAssocHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetName(
        LPWSTR *name) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetUIName(
        LPWSTR *uiname) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIconLocation(
        LPWSTR *path,
        int *index) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsRecommended(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE MakeDefault(
        LPCWSTR description) = 0;

    virtual HRESULT STDMETHODCALLTYPE Invoke(
        IDataObject *object) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateInvoker(
        IDataObject *object,
        IAssocHandlerInvoker **invoker) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAssocHandler, 0xf04061ac, 0x1659, 0x4a3f, 0xa9,0x54, 0x77,0x5a,0xa5,0x7f,0xc0,0x83)
#endif
#else
typedef struct IAssocHandlerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAssocHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *GetName)(
        IAssocHandler *This,
        LPWSTR *name);

    HRESULT (STDMETHODCALLTYPE *GetUIName)(
        IAssocHandler *This,
        LPWSTR *uiname);

    HRESULT (STDMETHODCALLTYPE *GetIconLocation)(
        IAssocHandler *This,
        LPWSTR *path,
        int *index);

    HRESULT (STDMETHODCALLTYPE *IsRecommended)(
        IAssocHandler *This);

    HRESULT (STDMETHODCALLTYPE *MakeDefault)(
        IAssocHandler *This,
        LPCWSTR description);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IAssocHandler *This,
        IDataObject *object);

    HRESULT (STDMETHODCALLTYPE *CreateInvoker)(
        IAssocHandler *This,
        IDataObject *object,
        IAssocHandlerInvoker **invoker);

    END_INTERFACE
} IAssocHandlerVtbl;

interface IAssocHandler {
    CONST_VTBL IAssocHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAssocHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAssocHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAssocHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IAssocHandler methods ***/
#define IAssocHandler_GetName(This,name) (This)->lpVtbl->GetName(This,name)
#define IAssocHandler_GetUIName(This,uiname) (This)->lpVtbl->GetUIName(This,uiname)
#define IAssocHandler_GetIconLocation(This,path,index) (This)->lpVtbl->GetIconLocation(This,path,index)
#define IAssocHandler_IsRecommended(This) (This)->lpVtbl->IsRecommended(This)
#define IAssocHandler_MakeDefault(This,description) (This)->lpVtbl->MakeDefault(This,description)
#define IAssocHandler_Invoke(This,object) (This)->lpVtbl->Invoke(This,object)
#define IAssocHandler_CreateInvoker(This,object,invoker) (This)->lpVtbl->CreateInvoker(This,object,invoker)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IAssocHandler_QueryInterface(IAssocHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IAssocHandler_AddRef(IAssocHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IAssocHandler_Release(IAssocHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IAssocHandler methods ***/
static FORCEINLINE HRESULT IAssocHandler_GetName(IAssocHandler* This,LPWSTR *name) {
    return This->lpVtbl->GetName(This,name);
}
static FORCEINLINE HRESULT IAssocHandler_GetUIName(IAssocHandler* This,LPWSTR *uiname) {
    return This->lpVtbl->GetUIName(This,uiname);
}
static FORCEINLINE HRESULT IAssocHandler_GetIconLocation(IAssocHandler* This,LPWSTR *path,int *index) {
    return This->lpVtbl->GetIconLocation(This,path,index);
}
static FORCEINLINE HRESULT IAssocHandler_IsRecommended(IAssocHandler* This) {
    return This->lpVtbl->IsRecommended(This);
}
static FORCEINLINE HRESULT IAssocHandler_MakeDefault(IAssocHandler* This,LPCWSTR description) {
    return This->lpVtbl->MakeDefault(This,description);
}
static FORCEINLINE HRESULT IAssocHandler_Invoke(IAssocHandler* This,IDataObject *object) {
    return This->lpVtbl->Invoke(This,object);
}
static FORCEINLINE HRESULT IAssocHandler_CreateInvoker(IAssocHandler* This,IDataObject *object,IAssocHandlerInvoker **invoker) {
    return This->lpVtbl->CreateInvoker(This,object,invoker);
}
#endif
#endif

#endif


#endif  /* __IAssocHandler_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IEnumAssocHandlers interface
 */
#ifndef __IEnumAssocHandlers_INTERFACE_DEFINED__
#define __IEnumAssocHandlers_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumAssocHandlers, 0x973810ae, 0x9599, 0x4b88, 0x9e,0x4d, 0x6e,0xe9,0x8c,0x95,0x52,0xda);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("973810ae-9599-4b88-9e4d-6ee98c9552da")
IEnumAssocHandlers : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG count,
        IAssocHandler **handlers,
        ULONG *fetched) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumAssocHandlers, 0x973810ae, 0x9599, 0x4b88, 0x9e,0x4d, 0x6e,0xe9,0x8c,0x95,0x52,0xda)
#endif
#else
typedef struct IEnumAssocHandlersVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumAssocHandlers methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumAssocHandlers *This,
        ULONG count,
        IAssocHandler **handlers,
        ULONG *fetched);

    END_INTERFACE
} IEnumAssocHandlersVtbl;

interface IEnumAssocHandlers {
    CONST_VTBL IEnumAssocHandlersVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumAssocHandlers_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumAssocHandlers_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumAssocHandlers_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumAssocHandlers methods ***/
#define IEnumAssocHandlers_Next(This,count,handlers,fetched) (This)->lpVtbl->Next(This,count,handlers,fetched)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IEnumAssocHandlers_QueryInterface(IEnumAssocHandlers* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IEnumAssocHandlers_AddRef(IEnumAssocHandlers* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IEnumAssocHandlers_Release(IEnumAssocHandlers* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumAssocHandlers methods ***/
static FORCEINLINE HRESULT IEnumAssocHandlers_Next(IEnumAssocHandlers* This,ULONG count,IAssocHandler **handlers,ULONG *fetched) {
    return This->lpVtbl->Next(This,count,handlers,fetched);
}
#endif
#endif

#endif


#endif  /* __IEnumAssocHandlers_INTERFACE_DEFINED__ */

typedef enum ASSOC_FILTER {
    ASSOC_FILTER_NONE = 0,
    ASSOC_FILTER_RECOMMENDED = 1
} ASSOC_FILTER;
HRESULT WINAPI SHAssocEnumHandlers(PCWSTR extra, ASSOC_FILTER filter, IEnumAssocHandlers **handlersenum);
/*****************************************************************************
 * IItemNameLimits interface
 */
#ifndef __IItemNameLimits_INTERFACE_DEFINED__
#define __IItemNameLimits_INTERFACE_DEFINED__

DEFINE_GUID(IID_IItemNameLimits, 0x1df0d7f1, 0xb267, 0x4d28, 0x8b,0x10, 0x12,0xe2,0x32,0x02,0xa5,0xc4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1df0d7f1-b267-4d28-8b10-12e23202a5c4")
IItemNameLimits : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetValidCharacters(
        LPWSTR *validchars,
        LPWSTR *invalidchars) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMaxLength(
        LPCWSTR name,
        int *max_length) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IItemNameLimits, 0x1df0d7f1, 0xb267, 0x4d28, 0x8b,0x10, 0x12,0xe2,0x32,0x02,0xa5,0xc4)
#endif
#else
typedef struct IItemNameLimitsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IItemNameLimits methods ***/
    HRESULT (STDMETHODCALLTYPE *GetValidCharacters)(
        IItemNameLimits *This,
        LPWSTR *validchars,
        LPWSTR *invalidchars);

    HRESULT (STDMETHODCALLTYPE *GetMaxLength)(
        IItemNameLimits *This,
        LPCWSTR name,
        int *max_length);

    END_INTERFACE
} IItemNameLimitsVtbl;

interface IItemNameLimits {
    CONST_VTBL IItemNameLimitsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IItemNameLimits_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IItemNameLimits_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IItemNameLimits_Release(This) (This)->lpVtbl->Release(This)
/*** IItemNameLimits methods ***/
#define IItemNameLimits_GetValidCharacters(This,validchars,invalidchars) (This)->lpVtbl->GetValidCharacters(This,validchars,invalidchars)
#define IItemNameLimits_GetMaxLength(This,name,max_length) (This)->lpVtbl->GetMaxLength(This,name,max_length)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IItemNameLimits_QueryInterface(IItemNameLimits* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IItemNameLimits_AddRef(IItemNameLimits* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IItemNameLimits_Release(IItemNameLimits* This) {
    return This->lpVtbl->Release(This);
}
/*** IItemNameLimits methods ***/
static FORCEINLINE HRESULT IItemNameLimits_GetValidCharacters(IItemNameLimits* This,LPWSTR *validchars,LPWSTR *invalidchars) {
    return This->lpVtbl->GetValidCharacters(This,validchars,invalidchars);
}
static FORCEINLINE HRESULT IItemNameLimits_GetMaxLength(IItemNameLimits* This,LPCWSTR name,int *max_length) {
    return This->lpVtbl->GetMaxLength(This,name,max_length);
}
#endif
#endif

#endif


#endif  /* __IItemNameLimits_INTERFACE_DEFINED__ */

typedef enum ACTIVATEOPTIONS {
    AO_NONE = 0x0,
    AO_DESIGNMODE = 0x1,
    AO_NOERRORUI = 0x2,
    AO_NOSPLASHSCREEN = 0x4,
    AO_PRELAUNCH = 0x2000000
} ACTIVATEOPTIONS;
/*****************************************************************************
 * IApplicationActivationManager interface
 */
#ifndef __IApplicationActivationManager_INTERFACE_DEFINED__
#define __IApplicationActivationManager_INTERFACE_DEFINED__

DEFINE_GUID(IID_IApplicationActivationManager, 0x2e941141, 0x7f97, 0x4756, 0xba,0x1d, 0x9d,0xec,0xde,0x89,0x4a,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2e941141-7f97-4756-ba1d-9decde894a3d")
IApplicationActivationManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ActivateApplication(
        LPCWSTR appusermodelid,
        LPCWSTR arguments,
        ACTIVATEOPTIONS options,
        DWORD *processid) = 0;

    virtual HRESULT STDMETHODCALLTYPE ActivateForFile(
        LPCWSTR appusermodelid,
        IShellItemArray *itemarray,
        LPCWSTR verb,
        DWORD *processid) = 0;

    virtual HRESULT STDMETHODCALLTYPE ActivateForProtocol(
        LPCWSTR appusermodelid,
        IShellItemArray *itemarray,
        DWORD *processid) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IApplicationActivationManager, 0x2e941141, 0x7f97, 0x4756, 0xba,0x1d, 0x9d,0xec,0xde,0x89,0x4a,0x3d)
#endif
#else
typedef struct IApplicationActivationManagerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IApplicationActivationManager methods ***/
    HRESULT (STDMETHODCALLTYPE *ActivateApplication)(
        IApplicationActivationManager *This,
        LPCWSTR appusermodelid,
        LPCWSTR arguments,
        ACTIVATEOPTIONS options,
        DWORD *processid);

    HRESULT (STDMETHODCALLTYPE *ActivateForFile)(
        IApplicationActivationManager *This,
        LPCWSTR appusermodelid,
        IShellItemArray *itemarray,
        LPCWSTR verb,
        DWORD *processid);

    HRESULT (STDMETHODCALLTYPE *ActivateForProtocol)(
        IApplicationActivationManager *This,
        LPCWSTR appusermodelid,
        IShellItemArray *itemarray,
        DWORD *processid);

    END_INTERFACE
} IApplicationActivationManagerVtbl;

interface IApplicationActivationManager {
    CONST_VTBL IApplicationActivationManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IApplicationActivationManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IApplicationActivationManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IApplicationActivationManager_Release(This) (This)->lpVtbl->Release(This)
/*** IApplicationActivationManager methods ***/
#define IApplicationActivationManager_ActivateApplication(This,appusermodelid,arguments,options,processid) (This)->lpVtbl->ActivateApplication(This,appusermodelid,arguments,options,processid)
#define IApplicationActivationManager_ActivateForFile(This,appusermodelid,itemarray,verb,processid) (This)->lpVtbl->ActivateForFile(This,appusermodelid,itemarray,verb,processid)
#define IApplicationActivationManager_ActivateForProtocol(This,appusermodelid,itemarray,processid) (This)->lpVtbl->ActivateForProtocol(This,appusermodelid,itemarray,processid)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IApplicationActivationManager_QueryInterface(IApplicationActivationManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IApplicationActivationManager_AddRef(IApplicationActivationManager* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IApplicationActivationManager_Release(IApplicationActivationManager* This) {
    return This->lpVtbl->Release(This);
}
/*** IApplicationActivationManager methods ***/
static FORCEINLINE HRESULT IApplicationActivationManager_ActivateApplication(IApplicationActivationManager* This,LPCWSTR appusermodelid,LPCWSTR arguments,ACTIVATEOPTIONS options,DWORD *processid) {
    return This->lpVtbl->ActivateApplication(This,appusermodelid,arguments,options,processid);
}
static FORCEINLINE HRESULT IApplicationActivationManager_ActivateForFile(IApplicationActivationManager* This,LPCWSTR appusermodelid,IShellItemArray *itemarray,LPCWSTR verb,DWORD *processid) {
    return This->lpVtbl->ActivateForFile(This,appusermodelid,itemarray,verb,processid);
}
static FORCEINLINE HRESULT IApplicationActivationManager_ActivateForProtocol(IApplicationActivationManager* This,LPCWSTR appusermodelid,IShellItemArray *itemarray,DWORD *processid) {
    return This->lpVtbl->ActivateForProtocol(This,appusermodelid,itemarray,processid);
}
#endif
#endif

#endif


#endif  /* __IApplicationActivationManager_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IPreviewHandlerFrame interface
 */
#ifndef __IPreviewHandlerFrame_INTERFACE_DEFINED__
#define __IPreviewHandlerFrame_INTERFACE_DEFINED__

typedef struct PREVIEWHANDLERFRAMEINFO {
    HACCEL haccel;
    UINT cAccelEntries;
} PREVIEWHANDLERFRAMEINFO;
DEFINE_GUID(IID_IPreviewHandlerFrame, 0xfec87aaf, 0x35f9, 0x447a, 0xad,0xb7, 0x20,0x23,0x44,0x91,0x40,0x1a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fec87aaf-35f9-447a-adb7-20234491401a")
IPreviewHandlerFrame : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetWindowContext(
        PREVIEWHANDLERFRAMEINFO *info) = 0;

    virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
        MSG *msg) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPreviewHandlerFrame, 0xfec87aaf, 0x35f9, 0x447a, 0xad,0xb7, 0x20,0x23,0x44,0x91,0x40,0x1a)
#endif
#else
typedef struct IPreviewHandlerFrameVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IPreviewHandlerFrame methods ***/
    HRESULT (STDMETHODCALLTYPE *GetWindowContext)(
        IPreviewHandlerFrame *This,
        PREVIEWHANDLERFRAMEINFO *info);

    HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)(
        IPreviewHandlerFrame *This,
        MSG *msg);

    END_INTERFACE
} IPreviewHandlerFrameVtbl;

interface IPreviewHandlerFrame {
    CONST_VTBL IPreviewHandlerFrameVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPreviewHandlerFrame_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPreviewHandlerFrame_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPreviewHandlerFrame_Release(This) (This)->lpVtbl->Release(This)
/*** IPreviewHandlerFrame methods ***/
#define IPreviewHandlerFrame_GetWindowContext(This,info) (This)->lpVtbl->GetWindowContext(This,info)
#define IPreviewHandlerFrame_TranslateAccelerator(This,msg) (This)->lpVtbl->TranslateAccelerator(This,msg)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IPreviewHandlerFrame_QueryInterface(IPreviewHandlerFrame* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IPreviewHandlerFrame_AddRef(IPreviewHandlerFrame* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IPreviewHandlerFrame_Release(IPreviewHandlerFrame* This) {
    return This->lpVtbl->Release(This);
}
/*** IPreviewHandlerFrame methods ***/
static FORCEINLINE HRESULT IPreviewHandlerFrame_GetWindowContext(IPreviewHandlerFrame* This,PREVIEWHANDLERFRAMEINFO *info) {
    return This->lpVtbl->GetWindowContext(This,info);
}
static FORCEINLINE HRESULT IPreviewHandlerFrame_TranslateAccelerator(IPreviewHandlerFrame* This,MSG *msg) {
    return This->lpVtbl->TranslateAccelerator(This,msg);
}
#endif
#endif

#endif


#endif  /* __IPreviewHandlerFrame_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);

#ifdef __cplusplus
class DECLSPEC_UUID("71f96385-ddd6-48d3-a0c1-ae06e8b055fb") ExplorerBrowser;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ExplorerBrowser, 0x71f96385, 0xddd6, 0x48d3, 0xa0,0xc1, 0xae,0x06,0xe8,0xb0,0x55,0xfb)
#endif
#endif

/*****************************************************************************
 * FileOpenDialog coclass
 */

DEFINE_GUID(CLSID_FileOpenDialog, 0xdc1c5a9c, 0xe88a, 0x4dde, 0xa5,0xa1, 0x60,0xf8,0x2a,0x20,0xae,0xf7);

#ifdef __cplusplus
class DECLSPEC_UUID("dc1c5a9c-e88a-4dde-a5a1-60f82a20aef7") FileOpenDialog;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FileOpenDialog, 0xdc1c5a9c, 0xe88a, 0x4dde, 0xa5,0xa1, 0x60,0xf8,0x2a,0x20,0xae,0xf7)
#endif
#endif

/*****************************************************************************
 * FileSaveDialog coclass
 */

DEFINE_GUID(CLSID_FileSaveDialog, 0xc0b4e2f3, 0xba21, 0x4773, 0x8d,0xba, 0x33,0x5e,0xc9,0x46,0xeb,0x8b);

#ifdef __cplusplus
class DECLSPEC_UUID("c0b4e2f3-ba21-4773-8dba-335ec946eb8b") FileSaveDialog;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FileSaveDialog, 0xc0b4e2f3, 0xba21, 0x4773, 0x8d,0xba, 0x33,0x5e,0xc9,0x46,0xeb,0x8b)
#endif
#endif

/*****************************************************************************
 * NamespaceTreeControl coclass
 */

DEFINE_GUID(CLSID_NamespaceTreeControl, 0xae054212, 0x3535, 0x4430, 0x83,0xed, 0xd5,0x01,0xaa,0x66,0x80,0xe6);

#ifdef __cplusplus
class DECLSPEC_UUID("ae054212-3535-4430-83ed-d501aa6680e6") NamespaceTreeControl;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(NamespaceTreeControl, 0xae054212, 0x3535, 0x4430, 0x83,0xed, 0xd5,0x01,0xaa,0x66,0x80,0xe6)
#endif
#endif

/*****************************************************************************
 * KnownFolderManager coclass
 */

DEFINE_GUID(CLSID_KnownFolderManager, 0x4df0c730, 0xdf9d, 0x4ae3, 0x91,0x53, 0xaa,0x6b,0x82,0xe9,0x79,0x5a);

#ifdef __cplusplus
class DECLSPEC_UUID("4df0c730-df9d-4ae3-9153-aa6b82e9795a") KnownFolderManager;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(KnownFolderManager, 0x4df0c730, 0xdf9d, 0x4ae3, 0x91,0x53, 0xaa,0x6b,0x82,0xe9,0x79,0x5a)
#endif
#endif

/*****************************************************************************
 * ApplicationAssociationRegistration coclass
 */

DEFINE_GUID(CLSID_ApplicationAssociationRegistration, 0x591209c7, 0x767b, 0x42b2, 0x9f,0xba, 0x44,0xee,0x46,0x15,0xf2,0xc7);

#ifdef __cplusplus
class DECLSPEC_UUID("591209c7-767b-42b2-9fba-44ee4615f2c7") ApplicationAssociationRegistration;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ApplicationAssociationRegistration, 0x591209c7, 0x767b, 0x42b2, 0x9f,0xba, 0x44,0xee,0x46,0x15,0xf2,0xc7)
#endif
#endif

/*****************************************************************************
 * ApplicationDestinations coclass
 */

DEFINE_GUID(CLSID_ApplicationDestinations, 0x86c14003, 0x4d6b, 0x4ef3, 0xa7,0xb4, 0x05,0x06,0x66,0x3b,0x2e,0x68);

#ifdef __cplusplus
class DECLSPEC_UUID("86c14003-4d6b-4ef3-a7b4-0506663b2e68") ApplicationDestinations;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ApplicationDestinations, 0x86c14003, 0x4d6b, 0x4ef3, 0xa7,0xb4, 0x05,0x06,0x66,0x3b,0x2e,0x68)
#endif
#endif

/*****************************************************************************
 * ShellLink coclass
 */

DEFINE_GUID(CLSID_ShellLink, 0x00021401, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);

#ifdef __cplusplus
class DECLSPEC_UUID("00021401-0000-0000-c000-000000000046") ShellLink;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ShellLink, 0x00021401, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#endif

/*****************************************************************************
 * TaskbarList coclass
 */

DEFINE_GUID(CLSID_TaskbarList, 0x56fdf344, 0xfd6d, 0x11d0, 0x95,0x8a, 0x00,0x60,0x97,0xc9,0xa0,0x90);

#ifdef __cplusplus
class DECLSPEC_UUID("56fdf344-fd6d-11d0-958a-006097c9a090") TaskbarList;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(TaskbarList, 0x56fdf344, 0xfd6d, 0x11d0, 0x95,0x8a, 0x00,0x60,0x97,0xc9,0xa0,0x90)
#endif
#endif

/*****************************************************************************
 * DestinationList coclass
 */

DEFINE_GUID(CLSID_DestinationList, 0x77f10cf0, 0x3db5, 0x4966, 0xb5,0x20, 0xb7,0xc5,0x4f,0xd3,0x5e,0xd6);

#ifdef __cplusplus
class DECLSPEC_UUID("77f10cf0-3db5-4966-b520-b7c54fd35ed6") DestinationList;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(DestinationList, 0x77f10cf0, 0x3db5, 0x4966, 0xb5,0x20, 0xb7,0xc5,0x4f,0xd3,0x5e,0xd6)
#endif
#endif

/*****************************************************************************
 * EnumerableObjectCollection coclass
 */

DEFINE_GUID(CLSID_EnumerableObjectCollection, 0x2d3468c1, 0x36a7, 0x43b6, 0xac,0x24, 0xd3,0xf0,0x2f,0xd9,0x60,0x7a);

#ifdef __cplusplus
class DECLSPEC_UUID("2d3468c1-36a7-43b6-ac24-d3f02fd9607a") EnumerableObjectCollection;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(EnumerableObjectCollection, 0x2d3468c1, 0x36a7, 0x43b6, 0xac,0x24, 0xd3,0xf0,0x2f,0xd9,0x60,0x7a)
#endif
#endif

/*****************************************************************************
 * QueryCancelAutoPlay coclass
 */

DEFINE_GUID(CLSID_QueryCancelAutoPlay, 0x331f1768, 0x05a9, 0x4ddd, 0xb8,0x6e, 0xda,0xe3,0x4d,0xdc,0x99,0x8a);

#ifdef __cplusplus
class DECLSPEC_UUID("331f1768-05a9-4ddd-b86e-dae34ddc998a") QueryCancelAutoPlay;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(QueryCancelAutoPlay, 0x331f1768, 0x05a9, 0x4ddd, 0xb8,0x6e, 0xda,0xe3,0x4d,0xdc,0x99,0x8a)
#endif
#endif

/*****************************************************************************
 * ApplicationActivationManager coclass
 */

DEFINE_GUID(CLSID_ApplicationActivationManager, 0x45ba127d, 0x10a8, 0x46ea, 0x8a,0xb7, 0x56,0xea,0x90,0x78,0x94,0x3c);

#ifdef __cplusplus
class DECLSPEC_UUID("45ba127d-10a8-46ea-8ab7-56ea9078943c") ApplicationActivationManager;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ApplicationActivationManager, 0x45ba127d, 0x10a8, 0x46ea, 0x8a,0xb7, 0x56,0xea,0x90,0x78,0x94,0x3c)
#endif
#endif

/* 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 *);
ULONG           __RPC_USER HICON_UserSize     (ULONG *, ULONG, HICON *);
unsigned char * __RPC_USER HICON_UserMarshal  (ULONG *, unsigned char *, HICON *);
unsigned char * __RPC_USER HICON_UserUnmarshal(ULONG *, unsigned char *, HICON *);
void            __RPC_USER HICON_UserFree     (ULONG *, HICON *);
ULONG           __RPC_USER HACCEL_UserSize     (ULONG *, ULONG, HACCEL *);
unsigned char * __RPC_USER HACCEL_UserMarshal  (ULONG *, unsigned char *, HACCEL *);
unsigned char * __RPC_USER HACCEL_UserUnmarshal(ULONG *, unsigned char *, HACCEL *);
void            __RPC_USER HACCEL_UserFree     (ULONG *, HACCEL *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __shobjidl_h__ */
