/*** Autogenerated by WIDL 10.0-rc1 from 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 __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 __IExecuteCommand_FWD_DEFINED__
#define __IExecuteCommand_FWD_DEFINED__
typedef interface IExecuteCommand IExecuteCommand;
#ifdef __cplusplus
interface IExecuteCommand;
#endif /* __cplusplus */
#endif

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

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

#ifndef __IShellTaskScheduler_FWD_DEFINED__
#define __IShellTaskScheduler_FWD_DEFINED__
typedef interface IShellTaskScheduler IShellTaskScheduler;
#ifdef __cplusplus
interface IShellTaskScheduler;
#endif /* __cplusplus */
#endif

#ifndef __IQueryCodePage_FWD_DEFINED__
#define __IQueryCodePage_FWD_DEFINED__
typedef interface IQueryCodePage IQueryCodePage;
#ifdef __cplusplus
interface IQueryCodePage;
#endif /* __cplusplus */
#endif

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

#ifndef __IPersistFolder3_FWD_DEFINED__
#define __IPersistFolder3_FWD_DEFINED__
typedef interface IPersistFolder3 IPersistFolder3;
#ifdef __cplusplus
interface IPersistFolder3;
#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 __IEnumFullIDList_FWD_DEFINED__
#define __IEnumFullIDList_FWD_DEFINED__
typedef interface IEnumFullIDList IEnumFullIDList;
#ifdef __cplusplus
interface IEnumFullIDList;
#endif /* __cplusplus */
#endif

#ifndef __IObjectWithFolderEnumMode_FWD_DEFINED__
#define __IObjectWithFolderEnumMode_FWD_DEFINED__
typedef interface IObjectWithFolderEnumMode IObjectWithFolderEnumMode;
#ifdef __cplusplus
interface IObjectWithFolderEnumMode;
#endif /* __cplusplus */
#endif

#ifndef __IParseAndCreateItem_FWD_DEFINED__
#define __IParseAndCreateItem_FWD_DEFINED__
typedef interface IParseAndCreateItem IParseAndCreateItem;
#ifdef __cplusplus
interface IParseAndCreateItem;
#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 __IFolderViewOptions_FWD_DEFINED__
#define __IFolderViewOptions_FWD_DEFINED__
typedef interface IFolderViewOptions IFolderViewOptions;
#ifdef __cplusplus
interface IFolderViewOptions;
#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 __ISearchBoxInfo_FWD_DEFINED__
#define __ISearchBoxInfo_FWD_DEFINED__
typedef interface ISearchBoxInfo ISearchBoxInfo;
#ifdef __cplusplus
interface ISearchBoxInfo;
#endif /* __cplusplus */
#endif

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

#ifndef __IFolderViewSettings_FWD_DEFINED__
#define __IFolderViewSettings_FWD_DEFINED__
typedef interface IFolderViewSettings IFolderViewSettings;
#ifdef __cplusplus
interface IFolderViewSettings;
#endif /* __cplusplus */
#endif

#ifndef __IPreviewHandlerVisuals_FWD_DEFINED__
#define __IPreviewHandlerVisuals_FWD_DEFINED__
typedef interface IPreviewHandlerVisuals IPreviewHandlerVisuals;
#ifdef __cplusplus
interface IPreviewHandlerVisuals;
#endif /* __cplusplus */
#endif

#ifndef __IVisualProperties_FWD_DEFINED__
#define __IVisualProperties_FWD_DEFINED__
typedef interface IVisualProperties IVisualProperties;
#ifdef __cplusplus
interface IVisualProperties;
#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 __IColumnManager_FWD_DEFINED__
#define __IColumnManager_FWD_DEFINED__
typedef interface IColumnManager IColumnManager;
#ifdef __cplusplus
interface IColumnManager;
#endif /* __cplusplus */
#endif

#ifndef __IFolderFilterSite_FWD_DEFINED__
#define __IFolderFilterSite_FWD_DEFINED__
typedef interface IFolderFilterSite IFolderFilterSite;
#ifdef __cplusplus
interface IFolderFilterSite;
#endif /* __cplusplus */
#endif

#ifndef __IFolderFilter_FWD_DEFINED__
#define __IFolderFilter_FWD_DEFINED__
typedef interface IFolderFilter IFolderFilter;
#ifdef __cplusplus
interface IFolderFilter;
#endif /* __cplusplus */
#endif

#ifndef __IInputObjectSite_FWD_DEFINED__
#define __IInputObjectSite_FWD_DEFINED__
typedef interface IInputObjectSite IInputObjectSite;
#ifdef __cplusplus
interface IInputObjectSite;
#endif /* __cplusplus */
#endif

#ifndef __IInputObject_FWD_DEFINED__
#define __IInputObject_FWD_DEFINED__
typedef interface IInputObject IInputObject;
#ifdef __cplusplus
interface IInputObject;
#endif /* __cplusplus */
#endif

#ifndef __IInputObject2_FWD_DEFINED__
#define __IInputObject2_FWD_DEFINED__
typedef interface IInputObject2 IInputObject2;
#ifdef __cplusplus
interface IInputObject2;
#endif /* __cplusplus */
#endif

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

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

#ifndef __IProfferService_FWD_DEFINED__
#define __IProfferService_FWD_DEFINED__
typedef interface IProfferService IProfferService;
#ifdef __cplusplus
interface IProfferService;
#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 __IShellItemImageFactory_FWD_DEFINED__
#define __IShellItemImageFactory_FWD_DEFINED__
typedef interface IShellItemImageFactory IShellItemImageFactory;
#ifdef __cplusplus
interface IShellItemImageFactory;
#endif /* __cplusplus */
#endif

#ifndef __IUserAccountChangeCallback_FWD_DEFINED__
#define __IUserAccountChangeCallback_FWD_DEFINED__
typedef interface IUserAccountChangeCallback IUserAccountChangeCallback;
#ifdef __cplusplus
interface IUserAccountChangeCallback;
#endif /* __cplusplus */
#endif

#ifndef __IEnumShellItems_FWD_DEFINED__
#define __IEnumShellItems_FWD_DEFINED__
typedef interface IEnumShellItems IEnumShellItems;
#ifdef __cplusplus
interface IEnumShellItems;
#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 __IEnumResources_FWD_DEFINED__
#define __IEnumResources_FWD_DEFINED__
typedef interface IEnumResources IEnumResources;
#ifdef __cplusplus
interface IEnumResources;
#endif /* __cplusplus */
#endif

#ifndef __IShellItemResources_FWD_DEFINED__
#define __IShellItemResources_FWD_DEFINED__
typedef interface IShellItemResources IShellItemResources;
#ifdef __cplusplus
interface IShellItemResources;
#endif /* __cplusplus */
#endif

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

#ifndef __IStreamAsync_FWD_DEFINED__
#define __IStreamAsync_FWD_DEFINED__
typedef interface IStreamAsync IStreamAsync;
#ifdef __cplusplus
interface IStreamAsync;
#endif /* __cplusplus */
#endif

#ifndef __IStreamUnbufferedInfo_FWD_DEFINED__
#define __IStreamUnbufferedInfo_FWD_DEFINED__
typedef interface IStreamUnbufferedInfo IStreamUnbufferedInfo;
#ifdef __cplusplus
interface IStreamUnbufferedInfo;
#endif /* __cplusplus */
#endif

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

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

#ifndef __IInitializeWithItem_FWD_DEFINED__
#define __IInitializeWithItem_FWD_DEFINED__
typedef interface IInitializeWithItem IInitializeWithItem;
#ifdef __cplusplus
interface IInitializeWithItem;
#endif /* __cplusplus */
#endif

#ifndef __IObjectWithSelection_FWD_DEFINED__
#define __IObjectWithSelection_FWD_DEFINED__
typedef interface IObjectWithSelection IObjectWithSelection;
#ifdef __cplusplus
interface IObjectWithSelection;
#endif /* __cplusplus */
#endif

#ifndef __IObjectWithBackReferences_FWD_DEFINED__
#define __IObjectWithBackReferences_FWD_DEFINED__
typedef interface IObjectWithBackReferences IObjectWithBackReferences;
#ifdef __cplusplus
interface IObjectWithBackReferences;
#endif /* __cplusplus */
#endif

#ifndef __IPropertyUI_FWD_DEFINED__
#define __IPropertyUI_FWD_DEFINED__
typedef interface IPropertyUI IPropertyUI;
#ifdef __cplusplus
interface IPropertyUI;
#endif /* __cplusplus */
#endif

#ifndef __ICategoryProvider_FWD_DEFINED__
#define __ICategoryProvider_FWD_DEFINED__
typedef interface ICategoryProvider ICategoryProvider;
#ifdef __cplusplus
interface ICategoryProvider;
#endif /* __cplusplus */
#endif

#ifndef __ICategorizer_FWD_DEFINED__
#define __ICategorizer_FWD_DEFINED__
typedef interface ICategorizer ICategorizer;
#ifdef __cplusplus
interface ICategorizer;
#endif /* __cplusplus */
#endif

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

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

#ifndef __IDragSourceHelper2_FWD_DEFINED__
#define __IDragSourceHelper2_FWD_DEFINED__
typedef interface IDragSourceHelper2 IDragSourceHelper2;
#ifdef __cplusplus
interface IDragSourceHelper2;
#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 __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 __IActionProgressDialog_FWD_DEFINED__
#define __IActionProgressDialog_FWD_DEFINED__
typedef interface IActionProgressDialog IActionProgressDialog;
#ifdef __cplusplus
interface IActionProgressDialog;
#endif /* __cplusplus */
#endif

#ifndef __IHWEventHandler_FWD_DEFINED__
#define __IHWEventHandler_FWD_DEFINED__
typedef interface IHWEventHandler IHWEventHandler;
#ifdef __cplusplus
interface IHWEventHandler;
#endif /* __cplusplus */
#endif

#ifndef __IHWEventHandler2_FWD_DEFINED__
#define __IHWEventHandler2_FWD_DEFINED__
typedef interface IHWEventHandler2 IHWEventHandler2;
#ifdef __cplusplus
interface IHWEventHandler2;
#endif /* __cplusplus */
#endif

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

#ifndef __IDynamicHWHandler_FWD_DEFINED__
#define __IDynamicHWHandler_FWD_DEFINED__
typedef interface IDynamicHWHandler IDynamicHWHandler;
#ifdef __cplusplus
interface IDynamicHWHandler;
#endif /* __cplusplus */
#endif

#ifndef __IActionProgress_FWD_DEFINED__
#define __IActionProgress_FWD_DEFINED__
typedef interface IActionProgress IActionProgress;
#ifdef __cplusplus
interface IActionProgress;
#endif /* __cplusplus */
#endif

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

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

#ifndef __IRemoteComputer_FWD_DEFINED__
#define __IRemoteComputer_FWD_DEFINED__
typedef interface IRemoteComputer IRemoteComputer;
#ifdef __cplusplus
interface IRemoteComputer;
#endif /* __cplusplus */
#endif

#ifndef __IQueryContinue_FWD_DEFINED__
#define __IQueryContinue_FWD_DEFINED__
typedef interface IQueryContinue IQueryContinue;
#ifdef __cplusplus
interface IQueryContinue;
#endif /* __cplusplus */
#endif

#ifndef __IObjectWithCancelEvent_FWD_DEFINED__
#define __IObjectWithCancelEvent_FWD_DEFINED__
typedef interface IObjectWithCancelEvent IObjectWithCancelEvent;
#ifdef __cplusplus
interface IObjectWithCancelEvent;
#endif /* __cplusplus */
#endif

#ifndef __IUserNotification_FWD_DEFINED__
#define __IUserNotification_FWD_DEFINED__
typedef interface IUserNotification IUserNotification;
#ifdef __cplusplus
interface IUserNotification;
#endif /* __cplusplus */
#endif

#ifndef __IUserNotificationCallback_FWD_DEFINED__
#define __IUserNotificationCallback_FWD_DEFINED__
typedef interface IUserNotificationCallback IUserNotificationCallback;
#ifdef __cplusplus
interface IUserNotificationCallback;
#endif /* __cplusplus */
#endif

#ifndef __IUserNotification2_FWD_DEFINED__
#define __IUserNotification2_FWD_DEFINED__
typedef interface IUserNotification2 IUserNotification2;
#ifdef __cplusplus
interface IUserNotification2;
#endif /* __cplusplus */
#endif

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

#ifndef __ISearchFolderItemFactory_FWD_DEFINED__
#define __ISearchFolderItemFactory_FWD_DEFINED__
typedef interface ISearchFolderItemFactory ISearchFolderItemFactory;
#ifdef __cplusplus
interface ISearchFolderItemFactory;
#endif /* __cplusplus */
#endif

#ifndef __IExtractImage_FWD_DEFINED__
#define __IExtractImage_FWD_DEFINED__
typedef interface IExtractImage IExtractImage;
#ifdef __cplusplus
interface IExtractImage;
#endif /* __cplusplus */
#endif

#ifndef __IExtractImage2_FWD_DEFINED__
#define __IExtractImage2_FWD_DEFINED__
typedef interface IExtractImage2 IExtractImage2;
#ifdef __cplusplus
interface IExtractImage2;
#endif /* __cplusplus */
#endif

#ifndef __IThumbnailHandlerFactory_FWD_DEFINED__
#define __IThumbnailHandlerFactory_FWD_DEFINED__
typedef interface IThumbnailHandlerFactory IThumbnailHandlerFactory;
#ifdef __cplusplus
interface IThumbnailHandlerFactory;
#endif /* __cplusplus */
#endif

#ifndef __IParentAndItem_FWD_DEFINED__
#define __IParentAndItem_FWD_DEFINED__
typedef interface IParentAndItem IParentAndItem;
#ifdef __cplusplus
interface IParentAndItem;
#endif /* __cplusplus */
#endif

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

#ifndef __IDeskBand_FWD_DEFINED__
#define __IDeskBand_FWD_DEFINED__
typedef interface IDeskBand IDeskBand;
#ifdef __cplusplus
interface IDeskBand;
#endif /* __cplusplus */
#endif

#ifndef __IDeskBandInfo_FWD_DEFINED__
#define __IDeskBandInfo_FWD_DEFINED__
typedef interface IDeskBandInfo IDeskBandInfo;
#ifdef __cplusplus
interface IDeskBandInfo;
#endif /* __cplusplus */
#endif

#ifndef __IDeskBand2_FWD_DEFINED__
#define __IDeskBand2_FWD_DEFINED__
typedef interface IDeskBand2 IDeskBand2;
#ifdef __cplusplus
interface IDeskBand2;
#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 __IStartMenuPinnedList_FWD_DEFINED__
#define __IStartMenuPinnedList_FWD_DEFINED__
typedef interface IStartMenuPinnedList IStartMenuPinnedList;
#ifdef __cplusplus
interface IStartMenuPinnedList;
#endif /* __cplusplus */
#endif

#ifndef __ICDBurn_FWD_DEFINED__
#define __ICDBurn_FWD_DEFINED__
typedef interface ICDBurn ICDBurn;
#ifdef __cplusplus
interface ICDBurn;
#endif /* __cplusplus */
#endif

#ifndef __IWizardSite_FWD_DEFINED__
#define __IWizardSite_FWD_DEFINED__
typedef interface IWizardSite IWizardSite;
#ifdef __cplusplus
interface IWizardSite;
#endif /* __cplusplus */
#endif

#ifndef __IWizardExtension_FWD_DEFINED__
#define __IWizardExtension_FWD_DEFINED__
typedef interface IWizardExtension IWizardExtension;
#ifdef __cplusplus
interface IWizardExtension;
#endif /* __cplusplus */
#endif

#ifndef __IWebWizardExtension_FWD_DEFINED__
#define __IWebWizardExtension_FWD_DEFINED__
typedef interface IWebWizardExtension IWebWizardExtension;
#ifdef __cplusplus
interface IWebWizardExtension;
#endif /* __cplusplus */
#endif

#ifndef __IPublishingWizard_FWD_DEFINED__
#define __IPublishingWizard_FWD_DEFINED__
typedef interface IPublishingWizard IPublishingWizard;
#ifdef __cplusplus
interface IPublishingWizard;
#endif /* __cplusplus */
#endif

#ifndef __IFolderViewHost_FWD_DEFINED__
#define __IFolderViewHost_FWD_DEFINED__
typedef interface IFolderViewHost IFolderViewHost;
#ifdef __cplusplus
interface IFolderViewHost;
#endif /* __cplusplus */
#endif

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

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

#ifndef __IAccessibleObject_FWD_DEFINED__
#define __IAccessibleObject_FWD_DEFINED__
typedef interface IAccessibleObject IAccessibleObject;
#ifdef __cplusplus
interface IAccessibleObject;
#endif /* __cplusplus */
#endif

#ifndef __IResultsFolder_FWD_DEFINED__
#define __IResultsFolder_FWD_DEFINED__
typedef interface IResultsFolder IResultsFolder;
#ifdef __cplusplus
interface IResultsFolder;
#endif /* __cplusplus */
#endif

#ifndef __IEnumObjects_FWD_DEFINED__
#define __IEnumObjects_FWD_DEFINED__
typedef interface IEnumObjects IEnumObjects;
#ifdef __cplusplus
interface IEnumObjects;
#endif /* __cplusplus */
#endif

#ifndef __IOperationsProgressDialog_FWD_DEFINED__
#define __IOperationsProgressDialog_FWD_DEFINED__
typedef interface IOperationsProgressDialog IOperationsProgressDialog;
#ifdef __cplusplus
interface IOperationsProgressDialog;
#endif /* __cplusplus */
#endif

#ifndef __IIOCancelInformation_FWD_DEFINED__
#define __IIOCancelInformation_FWD_DEFINED__
typedef interface IIOCancelInformation IIOCancelInformation;
#ifdef __cplusplus
interface IIOCancelInformation;
#endif /* __cplusplus */
#endif

#ifndef __IFileOperation_FWD_DEFINED__
#define __IFileOperation_FWD_DEFINED__
typedef interface IFileOperation IFileOperation;
#ifdef __cplusplus
interface IFileOperation;
#endif /* __cplusplus */
#endif

#ifndef __IObjectProvider_FWD_DEFINED__
#define __IObjectProvider_FWD_DEFINED__
typedef interface IObjectProvider IObjectProvider;
#ifdef __cplusplus
interface IObjectProvider;
#endif /* __cplusplus */
#endif

#ifndef __INamespaceWalkCB_FWD_DEFINED__
#define __INamespaceWalkCB_FWD_DEFINED__
typedef interface INamespaceWalkCB INamespaceWalkCB;
#ifdef __cplusplus
interface INamespaceWalkCB;
#endif /* __cplusplus */
#endif

#ifndef __INamespaceWalkCB2_FWD_DEFINED__
#define __INamespaceWalkCB2_FWD_DEFINED__
typedef interface INamespaceWalkCB2 INamespaceWalkCB2;
#ifdef __cplusplus
interface INamespaceWalkCB2;
#endif /* __cplusplus */
#endif

#ifndef __INamespaceWalk_FWD_DEFINED__
#define __INamespaceWalk_FWD_DEFINED__
typedef interface INamespaceWalk INamespaceWalk;
#ifdef __cplusplus
interface INamespaceWalk;
#endif /* __cplusplus */
#endif

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

#ifndef __IBandSite_FWD_DEFINED__
#define __IBandSite_FWD_DEFINED__
typedef interface IBandSite IBandSite;
#ifdef __cplusplus
interface IBandSite;
#endif /* __cplusplus */
#endif

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

#ifndef __ICDBurnExt_FWD_DEFINED__
#define __ICDBurnExt_FWD_DEFINED__
typedef interface ICDBurnExt ICDBurnExt;
#ifdef __cplusplus
interface ICDBurnExt;
#endif /* __cplusplus */
#endif

#ifndef __IContextMenuSite_FWD_DEFINED__
#define __IContextMenuSite_FWD_DEFINED__
typedef interface IContextMenuSite IContextMenuSite;
#ifdef __cplusplus
interface IContextMenuSite;
#endif /* __cplusplus */
#endif

#ifndef __IEnumReadyCallback_FWD_DEFINED__
#define __IEnumReadyCallback_FWD_DEFINED__
typedef interface IEnumReadyCallback IEnumReadyCallback;
#ifdef __cplusplus
interface IEnumReadyCallback;
#endif /* __cplusplus */
#endif

#ifndef __IEnumerableView_FWD_DEFINED__
#define __IEnumerableView_FWD_DEFINED__
typedef interface IEnumerableView IEnumerableView;
#ifdef __cplusplus
interface IEnumerableView;
#endif /* __cplusplus */
#endif

#ifndef __IInsertItem_FWD_DEFINED__
#define __IInsertItem_FWD_DEFINED__
typedef interface IInsertItem IInsertItem;
#ifdef __cplusplus
interface IInsertItem;
#endif /* __cplusplus */
#endif

#ifndef __IMenuBand_FWD_DEFINED__
#define __IMenuBand_FWD_DEFINED__
typedef interface IMenuBand IMenuBand;
#ifdef __cplusplus
interface IMenuBand;
#endif /* __cplusplus */
#endif

#ifndef __IFolderBandPriv_FWD_DEFINED__
#define __IFolderBandPriv_FWD_DEFINED__
typedef interface IFolderBandPriv IFolderBandPriv;
#ifdef __cplusplus
interface IFolderBandPriv;
#endif /* __cplusplus */
#endif

#ifndef __IRegTreeItem_FWD_DEFINED__
#define __IRegTreeItem_FWD_DEFINED__
typedef interface IRegTreeItem IRegTreeItem;
#ifdef __cplusplus
interface IRegTreeItem;
#endif /* __cplusplus */
#endif

#ifndef __IImageRecompress_FWD_DEFINED__
#define __IImageRecompress_FWD_DEFINED__
typedef interface IImageRecompress IImageRecompress;
#ifdef __cplusplus
interface IImageRecompress;
#endif /* __cplusplus */
#endif

#ifndef __IDeskBar_FWD_DEFINED__
#define __IDeskBar_FWD_DEFINED__
typedef interface IDeskBar IDeskBar;
#ifdef __cplusplus
interface IDeskBar;
#endif /* __cplusplus */
#endif

#ifndef __IMenuPopup_FWD_DEFINED__
#define __IMenuPopup_FWD_DEFINED__
typedef interface IMenuPopup IMenuPopup;
#ifdef __cplusplus
interface IMenuPopup;
#endif /* __cplusplus */
#endif

#ifndef __IFileIsInUse_FWD_DEFINED__
#define __IFileIsInUse_FWD_DEFINED__
typedef interface IFileIsInUse IFileIsInUse;
#ifdef __cplusplus
interface IFileIsInUse;
#endif /* __cplusplus */
#endif

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

#ifndef __IFileDialog_FWD_DEFINED__
#define __IFileDialog_FWD_DEFINED__
typedef interface IFileDialog IFileDialog;
#ifdef __cplusplus
interface IFileDialog;
#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 __IFileDialog2_FWD_DEFINED__
#define __IFileDialog2_FWD_DEFINED__
typedef interface IFileDialog2 IFileDialog2;
#ifdef __cplusplus
interface IFileDialog2;
#endif /* __cplusplus */
#endif

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

#ifndef __IApplicationAssociationRegistrationUI_FWD_DEFINED__
#define __IApplicationAssociationRegistrationUI_FWD_DEFINED__
typedef interface IApplicationAssociationRegistrationUI IApplicationAssociationRegistrationUI;
#ifdef __cplusplus
interface IApplicationAssociationRegistrationUI;
#endif /* __cplusplus */
#endif

#ifndef __IDelegateFolder_FWD_DEFINED__
#define __IDelegateFolder_FWD_DEFINED__
typedef interface IDelegateFolder IDelegateFolder;
#ifdef __cplusplus
interface IDelegateFolder;
#endif /* __cplusplus */
#endif

#ifndef __IBrowserFrameOptions_FWD_DEFINED__
#define __IBrowserFrameOptions_FWD_DEFINED__
typedef interface IBrowserFrameOptions IBrowserFrameOptions;
#ifdef __cplusplus
interface IBrowserFrameOptions;
#endif /* __cplusplus */
#endif

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

#ifndef __IAttachmentExecute_FWD_DEFINED__
#define __IAttachmentExecute_FWD_DEFINED__
typedef interface IAttachmentExecute IAttachmentExecute;
#ifdef __cplusplus
interface IAttachmentExecute;
#endif /* __cplusplus */
#endif

#ifndef __IShellMenuCallback_FWD_DEFINED__
#define __IShellMenuCallback_FWD_DEFINED__
typedef interface IShellMenuCallback IShellMenuCallback;
#ifdef __cplusplus
interface IShellMenuCallback;
#endif /* __cplusplus */
#endif

#ifndef __IShellMenu_FWD_DEFINED__
#define __IShellMenu_FWD_DEFINED__
typedef interface IShellMenu IShellMenu;
#ifdef __cplusplus
interface IShellMenu;
#endif /* __cplusplus */
#endif

#ifndef __IShellRunDll_FWD_DEFINED__
#define __IShellRunDll_FWD_DEFINED__
typedef interface IShellRunDll IShellRunDll;
#ifdef __cplusplus
interface IShellRunDll;
#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 __ISharingConfigurationManager_FWD_DEFINED__
#define __ISharingConfigurationManager_FWD_DEFINED__
typedef interface ISharingConfigurationManager ISharingConfigurationManager;
#ifdef __cplusplus
interface ISharingConfigurationManager;
#endif /* __cplusplus */
#endif

#ifndef __IPreviousVersionsInfo_FWD_DEFINED__
#define __IPreviousVersionsInfo_FWD_DEFINED__
typedef interface IPreviousVersionsInfo IPreviousVersionsInfo;
#ifdef __cplusplus
interface IPreviousVersionsInfo;
#endif /* __cplusplus */
#endif

#ifndef __IRelatedItem_FWD_DEFINED__
#define __IRelatedItem_FWD_DEFINED__
typedef interface IRelatedItem IRelatedItem;
#ifdef __cplusplus
interface IRelatedItem;
#endif /* __cplusplus */
#endif

#ifndef __IIdentityName_FWD_DEFINED__
#define __IIdentityName_FWD_DEFINED__
typedef interface IIdentityName IIdentityName;
#ifdef __cplusplus
interface IIdentityName;
#endif /* __cplusplus */
#endif

#ifndef __IDelegateItem_FWD_DEFINED__
#define __IDelegateItem_FWD_DEFINED__
typedef interface IDelegateItem IDelegateItem;
#ifdef __cplusplus
interface IDelegateItem;
#endif /* __cplusplus */
#endif

#ifndef __ICurrentItem_FWD_DEFINED__
#define __ICurrentItem_FWD_DEFINED__
typedef interface ICurrentItem ICurrentItem;
#ifdef __cplusplus
interface ICurrentItem;
#endif /* __cplusplus */
#endif

#ifndef __ITransferMediumItem_FWD_DEFINED__
#define __ITransferMediumItem_FWD_DEFINED__
typedef interface ITransferMediumItem ITransferMediumItem;
#ifdef __cplusplus
interface ITransferMediumItem;
#endif /* __cplusplus */
#endif

#ifndef __IUseToBrowseItem_FWD_DEFINED__
#define __IUseToBrowseItem_FWD_DEFINED__
typedef interface IUseToBrowseItem IUseToBrowseItem;
#ifdef __cplusplus
interface IUseToBrowseItem;
#endif /* __cplusplus */
#endif

#ifndef __IDisplayItem_FWD_DEFINED__
#define __IDisplayItem_FWD_DEFINED__
typedef interface IDisplayItem IDisplayItem;
#ifdef __cplusplus
interface IDisplayItem;
#endif /* __cplusplus */
#endif

#ifndef __IViewStateIdentityItem_FWD_DEFINED__
#define __IViewStateIdentityItem_FWD_DEFINED__
typedef interface IViewStateIdentityItem IViewStateIdentityItem;
#ifdef __cplusplus
interface IViewStateIdentityItem;
#endif /* __cplusplus */
#endif

#ifndef __IPreviewItem_FWD_DEFINED__
#define __IPreviewItem_FWD_DEFINED__
typedef interface IPreviewItem IPreviewItem;
#ifdef __cplusplus
interface IPreviewItem;
#endif /* __cplusplus */
#endif

#ifndef __IDestinationStreamFactory_FWD_DEFINED__
#define __IDestinationStreamFactory_FWD_DEFINED__
typedef interface IDestinationStreamFactory IDestinationStreamFactory;
#ifdef __cplusplus
interface IDestinationStreamFactory;
#endif /* __cplusplus */
#endif

#ifndef __INewMenuClient_FWD_DEFINED__
#define __INewMenuClient_FWD_DEFINED__
typedef interface INewMenuClient INewMenuClient;
#ifdef __cplusplus
interface INewMenuClient;
#endif /* __cplusplus */
#endif

#ifndef __IInitializeWithBindCtx_FWD_DEFINED__
#define __IInitializeWithBindCtx_FWD_DEFINED__
typedef interface IInitializeWithBindCtx IInitializeWithBindCtx;
#ifdef __cplusplus
interface IInitializeWithBindCtx;
#endif /* __cplusplus */
#endif

#ifndef __IShellItemFilter_FWD_DEFINED__
#define __IShellItemFilter_FWD_DEFINED__
typedef interface IShellItemFilter IShellItemFilter;
#ifdef __cplusplus
interface IShellItemFilter;
#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 __INameSpaceTreeControlDropHandler_FWD_DEFINED__
#define __INameSpaceTreeControlDropHandler_FWD_DEFINED__
typedef interface INameSpaceTreeControlDropHandler INameSpaceTreeControlDropHandler;
#ifdef __cplusplus
interface INameSpaceTreeControlDropHandler;
#endif /* __cplusplus */
#endif

#ifndef __INameSpaceTreeAccessible_FWD_DEFINED__
#define __INameSpaceTreeAccessible_FWD_DEFINED__
typedef interface INameSpaceTreeAccessible INameSpaceTreeAccessible;
#ifdef __cplusplus
interface INameSpaceTreeAccessible;
#endif /* __cplusplus */
#endif

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

#ifndef __INameSpaceTreeControlFolderCapabilities_FWD_DEFINED__
#define __INameSpaceTreeControlFolderCapabilities_FWD_DEFINED__
typedef interface INameSpaceTreeControlFolderCapabilities INameSpaceTreeControlFolderCapabilities;
#ifdef __cplusplus
interface INameSpaceTreeControlFolderCapabilities;
#endif /* __cplusplus */
#endif

#ifndef __IPreviewHandler_FWD_DEFINED__
#define __IPreviewHandler_FWD_DEFINED__
typedef interface IPreviewHandler IPreviewHandler;
#ifdef __cplusplus
interface IPreviewHandler;
#endif /* __cplusplus */
#endif

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

#ifndef __ITrayDeskBand_FWD_DEFINED__
#define __ITrayDeskBand_FWD_DEFINED__
typedef interface ITrayDeskBand ITrayDeskBand;
#ifdef __cplusplus
interface ITrayDeskBand;
#endif /* __cplusplus */
#endif

#ifndef __IBandHost_FWD_DEFINED__
#define __IBandHost_FWD_DEFINED__
typedef interface IBandHost IBandHost;
#ifdef __cplusplus
interface IBandHost;
#endif /* __cplusplus */
#endif

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

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

#ifndef __IDefaultExtractIconInit_FWD_DEFINED__
#define __IDefaultExtractIconInit_FWD_DEFINED__
typedef interface IDefaultExtractIconInit IDefaultExtractIconInit;
#ifdef __cplusplus
interface IDefaultExtractIconInit;
#endif /* __cplusplus */
#endif

#ifndef __IExplorerCommand_FWD_DEFINED__
#define __IExplorerCommand_FWD_DEFINED__
typedef interface IExplorerCommand IExplorerCommand;
#ifdef __cplusplus
interface IExplorerCommand;
#endif /* __cplusplus */
#endif

#ifndef __IExplorerCommandState_FWD_DEFINED__
#define __IExplorerCommandState_FWD_DEFINED__
typedef interface IExplorerCommandState IExplorerCommandState;
#ifdef __cplusplus
interface IExplorerCommandState;
#endif /* __cplusplus */
#endif

#ifndef __IInitializeCommand_FWD_DEFINED__
#define __IInitializeCommand_FWD_DEFINED__
typedef interface IInitializeCommand IInitializeCommand;
#ifdef __cplusplus
interface IInitializeCommand;
#endif /* __cplusplus */
#endif

#ifndef __IEnumExplorerCommand_FWD_DEFINED__
#define __IEnumExplorerCommand_FWD_DEFINED__
typedef interface IEnumExplorerCommand IEnumExplorerCommand;
#ifdef __cplusplus
interface IEnumExplorerCommand;
#endif /* __cplusplus */
#endif

#ifndef __IExplorerCommandProvider_FWD_DEFINED__
#define __IExplorerCommandProvider_FWD_DEFINED__
typedef interface IExplorerCommandProvider IExplorerCommandProvider;
#ifdef __cplusplus
interface IExplorerCommandProvider;
#endif /* __cplusplus */
#endif

#ifndef __IInitializeNetworkFolder_FWD_DEFINED__
#define __IInitializeNetworkFolder_FWD_DEFINED__
typedef interface IInitializeNetworkFolder IInitializeNetworkFolder;
#ifdef __cplusplus
interface IInitializeNetworkFolder;
#endif /* __cplusplus */
#endif

#ifndef __IOpenControlPanel_FWD_DEFINED__
#define __IOpenControlPanel_FWD_DEFINED__
typedef interface IOpenControlPanel IOpenControlPanel;
#ifdef __cplusplus
interface IOpenControlPanel;
#endif /* __cplusplus */
#endif

#ifndef __IComputerInfoChangeNotify_FWD_DEFINED__
#define __IComputerInfoChangeNotify_FWD_DEFINED__
typedef interface IComputerInfoChangeNotify IComputerInfoChangeNotify;
#ifdef __cplusplus
interface IComputerInfoChangeNotify;
#endif /* __cplusplus */
#endif

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

#ifndef __IFileSystemBindData2_FWD_DEFINED__
#define __IFileSystemBindData2_FWD_DEFINED__
typedef interface IFileSystemBindData2 IFileSystemBindData2;
#ifdef __cplusplus
interface IFileSystemBindData2;
#endif /* __cplusplus */
#endif

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

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

#ifndef __IApplicationDocumentLists_FWD_DEFINED__
#define __IApplicationDocumentLists_FWD_DEFINED__
typedef interface IApplicationDocumentLists IApplicationDocumentLists;
#ifdef __cplusplus
interface IApplicationDocumentLists;
#endif /* __cplusplus */
#endif

#ifndef __IObjectWithAppUserModelID_FWD_DEFINED__
#define __IObjectWithAppUserModelID_FWD_DEFINED__
typedef interface IObjectWithAppUserModelID IObjectWithAppUserModelID;
#ifdef __cplusplus
interface IObjectWithAppUserModelID;
#endif /* __cplusplus */
#endif

#ifndef __IObjectWithProgID_FWD_DEFINED__
#define __IObjectWithProgID_FWD_DEFINED__
typedef interface IObjectWithProgID IObjectWithProgID;
#ifdef __cplusplus
interface IObjectWithProgID;
#endif /* __cplusplus */
#endif

#ifndef __IUpdateIDList_FWD_DEFINED__
#define __IUpdateIDList_FWD_DEFINED__
typedef interface IUpdateIDList IUpdateIDList;
#ifdef __cplusplus
interface IUpdateIDList;
#endif /* __cplusplus */
#endif

#ifndef __IDesktopGadget_FWD_DEFINED__
#define __IDesktopGadget_FWD_DEFINED__
typedef interface IDesktopGadget IDesktopGadget;
#ifdef __cplusplus
interface IDesktopGadget;
#endif /* __cplusplus */
#endif

#ifndef __IVirtualDesktopManager_FWD_DEFINED__
#define __IVirtualDesktopManager_FWD_DEFINED__
typedef interface IVirtualDesktopManager IVirtualDesktopManager;
#ifdef __cplusplus
interface IVirtualDesktopManager;
#endif /* __cplusplus */
#endif

#ifndef __IDesktopWallpaper_FWD_DEFINED__
#define __IDesktopWallpaper_FWD_DEFINED__
typedef interface IDesktopWallpaper IDesktopWallpaper;
#ifdef __cplusplus
interface IDesktopWallpaper;
#endif /* __cplusplus */
#endif

#ifndef __IHomeGroup_FWD_DEFINED__
#define __IHomeGroup_FWD_DEFINED__
typedef interface IHomeGroup IHomeGroup;
#ifdef __cplusplus
interface IHomeGroup;
#endif /* __cplusplus */
#endif

#ifndef __IInitializeWithPropertyStore_FWD_DEFINED__
#define __IInitializeWithPropertyStore_FWD_DEFINED__
typedef interface IInitializeWithPropertyStore IInitializeWithPropertyStore;
#ifdef __cplusplus
interface IInitializeWithPropertyStore;
#endif /* __cplusplus */
#endif

#ifndef __IOpenSearchSource_FWD_DEFINED__
#define __IOpenSearchSource_FWD_DEFINED__
typedef interface IOpenSearchSource IOpenSearchSource;
#ifdef __cplusplus
interface IOpenSearchSource;
#endif /* __cplusplus */
#endif

#ifndef __IShellLibrary_FWD_DEFINED__
#define __IShellLibrary_FWD_DEFINED__
typedef interface IShellLibrary IShellLibrary;
#ifdef __cplusplus
interface IShellLibrary;
#endif /* __cplusplus */
#endif

#ifndef __IPlaybackManagerEvents_FWD_DEFINED__
#define __IPlaybackManagerEvents_FWD_DEFINED__
typedef interface IPlaybackManagerEvents IPlaybackManagerEvents;
#ifdef __cplusplus
interface IPlaybackManagerEvents;
#endif /* __cplusplus */
#endif

#ifndef __IPlaybackManager_FWD_DEFINED__
#define __IPlaybackManager_FWD_DEFINED__
typedef interface IPlaybackManager IPlaybackManager;
#ifdef __cplusplus
interface IPlaybackManager;
#endif /* __cplusplus */
#endif

#ifndef __IDefaultFolderMenuInitialize_FWD_DEFINED__
#define __IDefaultFolderMenuInitialize_FWD_DEFINED__
typedef interface IDefaultFolderMenuInitialize IDefaultFolderMenuInitialize;
#ifdef __cplusplus
interface IDefaultFolderMenuInitialize;
#endif /* __cplusplus */
#endif

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

#ifndef __DesktopWallpaper_FWD_DEFINED__
#define __DesktopWallpaper_FWD_DEFINED__
#ifdef __cplusplus
typedef class DesktopWallpaper DesktopWallpaper;
#else
typedef struct DesktopWallpaper DesktopWallpaper;
#endif /* defined __cplusplus */
#endif /* defined __DesktopWallpaper_FWD_DEFINED__ */

#ifndef __ShellDesktop_FWD_DEFINED__
#define __ShellDesktop_FWD_DEFINED__
#ifdef __cplusplus
typedef class ShellDesktop ShellDesktop;
#else
typedef struct ShellDesktop ShellDesktop;
#endif /* defined __cplusplus */
#endif /* defined __ShellDesktop_FWD_DEFINED__ */

#ifndef __ShellFSFolder_FWD_DEFINED__
#define __ShellFSFolder_FWD_DEFINED__
#ifdef __cplusplus
typedef class ShellFSFolder ShellFSFolder;
#else
typedef struct ShellFSFolder ShellFSFolder;
#endif /* defined __cplusplus */
#endif /* defined __ShellFSFolder_FWD_DEFINED__ */

#ifndef __NetworkPlaces_FWD_DEFINED__
#define __NetworkPlaces_FWD_DEFINED__
#ifdef __cplusplus
typedef class NetworkPlaces NetworkPlaces;
#else
typedef struct NetworkPlaces NetworkPlaces;
#endif /* defined __cplusplus */
#endif /* defined __NetworkPlaces_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 __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 __DriveSizeCategorizer_FWD_DEFINED__
#define __DriveSizeCategorizer_FWD_DEFINED__
#ifdef __cplusplus
typedef class DriveSizeCategorizer DriveSizeCategorizer;
#else
typedef struct DriveSizeCategorizer DriveSizeCategorizer;
#endif /* defined __cplusplus */
#endif /* defined __DriveSizeCategorizer_FWD_DEFINED__ */

#ifndef __DriveTypeCategorizer_FWD_DEFINED__
#define __DriveTypeCategorizer_FWD_DEFINED__
#ifdef __cplusplus
typedef class DriveTypeCategorizer DriveTypeCategorizer;
#else
typedef struct DriveTypeCategorizer DriveTypeCategorizer;
#endif /* defined __cplusplus */
#endif /* defined __DriveTypeCategorizer_FWD_DEFINED__ */

#ifndef __FreeSpaceCategorizer_FWD_DEFINED__
#define __FreeSpaceCategorizer_FWD_DEFINED__
#ifdef __cplusplus
typedef class FreeSpaceCategorizer FreeSpaceCategorizer;
#else
typedef struct FreeSpaceCategorizer FreeSpaceCategorizer;
#endif /* defined __cplusplus */
#endif /* defined __FreeSpaceCategorizer_FWD_DEFINED__ */

#ifndef __TimeCategorizer_FWD_DEFINED__
#define __TimeCategorizer_FWD_DEFINED__
#ifdef __cplusplus
typedef class TimeCategorizer TimeCategorizer;
#else
typedef struct TimeCategorizer TimeCategorizer;
#endif /* defined __cplusplus */
#endif /* defined __TimeCategorizer_FWD_DEFINED__ */

#ifndef __SizeCategorizer_FWD_DEFINED__
#define __SizeCategorizer_FWD_DEFINED__
#ifdef __cplusplus
typedef class SizeCategorizer SizeCategorizer;
#else
typedef struct SizeCategorizer SizeCategorizer;
#endif /* defined __cplusplus */
#endif /* defined __SizeCategorizer_FWD_DEFINED__ */

#ifndef __AlphabeticalCategorizer_FWD_DEFINED__
#define __AlphabeticalCategorizer_FWD_DEFINED__
#ifdef __cplusplus
typedef class AlphabeticalCategorizer AlphabeticalCategorizer;
#else
typedef struct AlphabeticalCategorizer AlphabeticalCategorizer;
#endif /* defined __cplusplus */
#endif /* defined __AlphabeticalCategorizer_FWD_DEFINED__ */

#ifndef __MergedCategorizer_FWD_DEFINED__
#define __MergedCategorizer_FWD_DEFINED__
#ifdef __cplusplus
typedef class MergedCategorizer MergedCategorizer;
#else
typedef struct MergedCategorizer MergedCategorizer;
#endif /* defined __cplusplus */
#endif /* defined __MergedCategorizer_FWD_DEFINED__ */

#ifndef __ImageProperties_FWD_DEFINED__
#define __ImageProperties_FWD_DEFINED__
#ifdef __cplusplus
typedef class ImageProperties ImageProperties;
#else
typedef struct ImageProperties ImageProperties;
#endif /* defined __cplusplus */
#endif /* defined __ImageProperties_FWD_DEFINED__ */

#ifndef __PropertiesUI_FWD_DEFINED__
#define __PropertiesUI_FWD_DEFINED__
#ifdef __cplusplus
typedef class PropertiesUI PropertiesUI;
#else
typedef struct PropertiesUI PropertiesUI;
#endif /* defined __cplusplus */
#endif /* defined __PropertiesUI_FWD_DEFINED__ */

#ifndef __UserNotification_FWD_DEFINED__
#define __UserNotification_FWD_DEFINED__
#ifdef __cplusplus
typedef class UserNotification UserNotification;
#else
typedef struct UserNotification UserNotification;
#endif /* defined __cplusplus */
#endif /* defined __UserNotification_FWD_DEFINED__ */

#ifndef __CDBurn_FWD_DEFINED__
#define __CDBurn_FWD_DEFINED__
#ifdef __cplusplus
typedef class CDBurn CDBurn;
#else
typedef struct CDBurn CDBurn;
#endif /* defined __cplusplus */
#endif /* defined __CDBurn_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 __StartMenuPin_FWD_DEFINED__
#define __StartMenuPin_FWD_DEFINED__
#ifdef __cplusplus
typedef class StartMenuPin StartMenuPin;
#else
typedef struct StartMenuPin StartMenuPin;
#endif /* defined __cplusplus */
#endif /* defined __StartMenuPin_FWD_DEFINED__ */

#ifndef __WebWizardHost_FWD_DEFINED__
#define __WebWizardHost_FWD_DEFINED__
#ifdef __cplusplus
typedef class WebWizardHost WebWizardHost;
#else
typedef struct WebWizardHost WebWizardHost;
#endif /* defined __cplusplus */
#endif /* defined __WebWizardHost_FWD_DEFINED__ */

#ifndef __PublishDropTarget_FWD_DEFINED__
#define __PublishDropTarget_FWD_DEFINED__
#ifdef __cplusplus
typedef class PublishDropTarget PublishDropTarget;
#else
typedef struct PublishDropTarget PublishDropTarget;
#endif /* defined __cplusplus */
#endif /* defined __PublishDropTarget_FWD_DEFINED__ */

#ifndef __PublishingWizard_FWD_DEFINED__
#define __PublishingWizard_FWD_DEFINED__
#ifdef __cplusplus
typedef class PublishingWizard PublishingWizard;
#else
typedef struct PublishingWizard PublishingWizard;
#endif /* defined __cplusplus */
#endif /* defined __PublishingWizard_FWD_DEFINED__ */

#ifndef __InternetPrintOrdering_FWD_DEFINED__
#define __InternetPrintOrdering_FWD_DEFINED__
#ifdef __cplusplus
typedef class InternetPrintOrdering InternetPrintOrdering;
#else
typedef struct InternetPrintOrdering InternetPrintOrdering;
#endif /* defined __cplusplus */
#endif /* defined __InternetPrintOrdering_FWD_DEFINED__ */

#ifndef __FolderViewHost_FWD_DEFINED__
#define __FolderViewHost_FWD_DEFINED__
#ifdef __cplusplus
typedef class FolderViewHost FolderViewHost;
#else
typedef struct FolderViewHost FolderViewHost;
#endif /* defined __cplusplus */
#endif /* defined __FolderViewHost_FWD_DEFINED__ */

#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 __ImageRecompress_FWD_DEFINED__
#define __ImageRecompress_FWD_DEFINED__
#ifdef __cplusplus
typedef class ImageRecompress ImageRecompress;
#else
typedef struct ImageRecompress ImageRecompress;
#endif /* defined __cplusplus */
#endif /* defined __ImageRecompress_FWD_DEFINED__ */

#ifndef __TrayBandSiteService_FWD_DEFINED__
#define __TrayBandSiteService_FWD_DEFINED__
#ifdef __cplusplus
typedef class TrayBandSiteService TrayBandSiteService;
#else
typedef struct TrayBandSiteService TrayBandSiteService;
#endif /* defined __cplusplus */
#endif /* defined __TrayBandSiteService_FWD_DEFINED__ */

#ifndef __TrayDeskBand_FWD_DEFINED__
#define __TrayDeskBand_FWD_DEFINED__
#ifdef __cplusplus
typedef class TrayDeskBand TrayDeskBand;
#else
typedef struct TrayDeskBand TrayDeskBand;
#endif /* defined __cplusplus */
#endif /* defined __TrayDeskBand_FWD_DEFINED__ */

#ifndef __AttachmentServices_FWD_DEFINED__
#define __AttachmentServices_FWD_DEFINED__
#ifdef __cplusplus
typedef class AttachmentServices AttachmentServices;
#else
typedef struct AttachmentServices AttachmentServices;
#endif /* defined __cplusplus */
#endif /* defined __AttachmentServices_FWD_DEFINED__ */

#ifndef __DocPropShellExtension_FWD_DEFINED__
#define __DocPropShellExtension_FWD_DEFINED__
#ifdef __cplusplus
typedef class DocPropShellExtension DocPropShellExtension;
#else
typedef struct DocPropShellExtension DocPropShellExtension;
#endif /* defined __cplusplus */
#endif /* defined __DocPropShellExtension_FWD_DEFINED__ */

#ifndef __ShellItem_FWD_DEFINED__
#define __ShellItem_FWD_DEFINED__
#ifdef __cplusplus
typedef class ShellItem ShellItem;
#else
typedef struct ShellItem ShellItem;
#endif /* defined __cplusplus */
#endif /* defined __ShellItem_FWD_DEFINED__ */

#ifndef __NamespaceWalker_FWD_DEFINED__
#define __NamespaceWalker_FWD_DEFINED__
#ifdef __cplusplus
typedef class NamespaceWalker NamespaceWalker;
#else
typedef struct NamespaceWalker NamespaceWalker;
#endif /* defined __cplusplus */
#endif /* defined __NamespaceWalker_FWD_DEFINED__ */

#ifndef __FileOperation_FWD_DEFINED__
#define __FileOperation_FWD_DEFINED__
#ifdef __cplusplus
typedef class FileOperation FileOperation;
#else
typedef struct FileOperation FileOperation;
#endif /* defined __cplusplus */
#endif /* defined __FileOperation_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 __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 __FSCopyHandler_FWD_DEFINED__
#define __FSCopyHandler_FWD_DEFINED__
#ifdef __cplusplus
typedef class FSCopyHandler FSCopyHandler;
#else
typedef struct FSCopyHandler FSCopyHandler;
#endif /* defined __cplusplus */
#endif /* defined __FSCopyHandler_FWD_DEFINED__ */

#ifndef __SharingConfigurationManager_FWD_DEFINED__
#define __SharingConfigurationManager_FWD_DEFINED__
#ifdef __cplusplus
typedef class SharingConfigurationManager SharingConfigurationManager;
#else
typedef struct SharingConfigurationManager SharingConfigurationManager;
#endif /* defined __cplusplus */
#endif /* defined __SharingConfigurationManager_FWD_DEFINED__ */

#ifndef __PreviousVersions_FWD_DEFINED__
#define __PreviousVersions_FWD_DEFINED__
#ifdef __cplusplus
typedef class PreviousVersions PreviousVersions;
#else
typedef struct PreviousVersions PreviousVersions;
#endif /* defined __cplusplus */
#endif /* defined __PreviousVersions_FWD_DEFINED__ */

#ifndef __NetworkConnections_FWD_DEFINED__
#define __NetworkConnections_FWD_DEFINED__
#ifdef __cplusplus
typedef class NetworkConnections NetworkConnections;
#else
typedef struct NetworkConnections NetworkConnections;
#endif /* defined __cplusplus */
#endif /* defined __NetworkConnections_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 __IENamespaceTreeControl_FWD_DEFINED__
#define __IENamespaceTreeControl_FWD_DEFINED__
#ifdef __cplusplus
typedef class IENamespaceTreeControl IENamespaceTreeControl;
#else
typedef struct IENamespaceTreeControl IENamespaceTreeControl;
#endif /* defined __cplusplus */
#endif /* defined __IENamespaceTreeControl_FWD_DEFINED__ */

#ifndef __ScheduledTasks_FWD_DEFINED__
#define __ScheduledTasks_FWD_DEFINED__
#ifdef __cplusplus
typedef class ScheduledTasks ScheduledTasks;
#else
typedef struct ScheduledTasks ScheduledTasks;
#endif /* defined __cplusplus */
#endif /* defined __ScheduledTasks_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 __ApplicationAssociationRegistrationUI_FWD_DEFINED__
#define __ApplicationAssociationRegistrationUI_FWD_DEFINED__
#ifdef __cplusplus
typedef class ApplicationAssociationRegistrationUI ApplicationAssociationRegistrationUI;
#else
typedef struct ApplicationAssociationRegistrationUI ApplicationAssociationRegistrationUI;
#endif /* defined __cplusplus */
#endif /* defined __ApplicationAssociationRegistrationUI_FWD_DEFINED__ */

#ifndef __SearchFolderItemFactory_FWD_DEFINED__
#define __SearchFolderItemFactory_FWD_DEFINED__
#ifdef __cplusplus
typedef class SearchFolderItemFactory SearchFolderItemFactory;
#else
typedef struct SearchFolderItemFactory SearchFolderItemFactory;
#endif /* defined __cplusplus */
#endif /* defined __SearchFolderItemFactory_FWD_DEFINED__ */

#ifndef __OpenControlPanel_FWD_DEFINED__
#define __OpenControlPanel_FWD_DEFINED__
#ifdef __cplusplus
typedef class OpenControlPanel OpenControlPanel;
#else
typedef struct OpenControlPanel OpenControlPanel;
#endif /* defined __cplusplus */
#endif /* defined __OpenControlPanel_FWD_DEFINED__ */

#ifndef __MailRecipient_FWD_DEFINED__
#define __MailRecipient_FWD_DEFINED__
#ifdef __cplusplus
typedef class MailRecipient MailRecipient;
#else
typedef struct MailRecipient MailRecipient;
#endif /* defined __cplusplus */
#endif /* defined __MailRecipient_FWD_DEFINED__ */

#ifndef __NetworkExplorerFolder_FWD_DEFINED__
#define __NetworkExplorerFolder_FWD_DEFINED__
#ifdef __cplusplus
typedef class NetworkExplorerFolder NetworkExplorerFolder;
#else
typedef struct NetworkExplorerFolder NetworkExplorerFolder;
#endif /* defined __cplusplus */
#endif /* defined __NetworkExplorerFolder_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 __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 __ApplicationDocumentLists_FWD_DEFINED__
#define __ApplicationDocumentLists_FWD_DEFINED__
#ifdef __cplusplus
typedef class ApplicationDocumentLists ApplicationDocumentLists;
#else
typedef struct ApplicationDocumentLists ApplicationDocumentLists;
#endif /* defined __cplusplus */
#endif /* defined __ApplicationDocumentLists_FWD_DEFINED__ */

#ifndef __HomeGroup_FWD_DEFINED__
#define __HomeGroup_FWD_DEFINED__
#ifdef __cplusplus
typedef class HomeGroup HomeGroup;
#else
typedef struct HomeGroup HomeGroup;
#endif /* defined __cplusplus */
#endif /* defined __HomeGroup_FWD_DEFINED__ */

#ifndef __ShellLibrary_FWD_DEFINED__
#define __ShellLibrary_FWD_DEFINED__
#ifdef __cplusplus
typedef class ShellLibrary ShellLibrary;
#else
typedef struct ShellLibrary ShellLibrary;
#endif /* defined __cplusplus */
#endif /* defined __ShellLibrary_FWD_DEFINED__ */

#ifndef __AppStartupLink_FWD_DEFINED__
#define __AppStartupLink_FWD_DEFINED__
#ifdef __cplusplus
typedef class AppStartupLink AppStartupLink;
#else
typedef struct AppStartupLink AppStartupLink;
#endif /* defined __cplusplus */
#endif /* defined __AppStartupLink_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 __DesktopGadget_FWD_DEFINED__
#define __DesktopGadget_FWD_DEFINED__
#ifdef __cplusplus
typedef class DesktopGadget DesktopGadget;
#else
typedef struct DesktopGadget DesktopGadget;
#endif /* defined __cplusplus */
#endif /* defined __DesktopGadget_FWD_DEFINED__ */

#ifndef __PlaybackManager_FWD_DEFINED__
#define __PlaybackManager_FWD_DEFINED__
#ifdef __cplusplus
typedef class PlaybackManager PlaybackManager;
#else
typedef struct PlaybackManager PlaybackManager;
#endif /* defined __cplusplus */
#endif /* defined __PlaybackManager_FWD_DEFINED__ */

#ifndef __AccessibilityDockingService_FWD_DEFINED__
#define __AccessibilityDockingService_FWD_DEFINED__
#ifdef __cplusplus
typedef class AccessibilityDockingService AccessibilityDockingService;
#else
typedef struct AccessibilityDockingService AccessibilityDockingService;
#endif /* defined __cplusplus */
#endif /* defined __AccessibilityDockingService_FWD_DEFINED__ */

#ifndef __FrameworkInputPane_FWD_DEFINED__
#define __FrameworkInputPane_FWD_DEFINED__
#ifdef __cplusplus
typedef class FrameworkInputPane FrameworkInputPane;
#else
typedef struct FrameworkInputPane FrameworkInputPane;
#endif /* defined __cplusplus */
#endif /* defined __FrameworkInputPane_FWD_DEFINED__ */

#ifndef __DefFolderMenu_FWD_DEFINED__
#define __DefFolderMenu_FWD_DEFINED__
#ifdef __cplusplus
typedef class DefFolderMenu DefFolderMenu;
#else
typedef struct DefFolderMenu DefFolderMenu;
#endif /* defined __cplusplus */
#endif /* defined __DefFolderMenu_FWD_DEFINED__ */

#ifndef __AppVisibility_FWD_DEFINED__
#define __AppVisibility_FWD_DEFINED__
#ifdef __cplusplus
typedef class AppVisibility AppVisibility;
#else
typedef struct AppVisibility AppVisibility;
#endif /* defined __cplusplus */
#endif /* defined __AppVisibility_FWD_DEFINED__ */

#ifndef __AppShellVerbHandler_FWD_DEFINED__
#define __AppShellVerbHandler_FWD_DEFINED__
#ifdef __cplusplus
typedef class AppShellVerbHandler AppShellVerbHandler;
#else
typedef struct AppShellVerbHandler AppShellVerbHandler;
#endif /* defined __cplusplus */
#endif /* defined __AppShellVerbHandler_FWD_DEFINED__ */

#ifndef __ExecuteUnknown_FWD_DEFINED__
#define __ExecuteUnknown_FWD_DEFINED__
#ifdef __cplusplus
typedef class ExecuteUnknown ExecuteUnknown;
#else
typedef struct ExecuteUnknown ExecuteUnknown;
#endif /* defined __cplusplus */
#endif /* defined __ExecuteUnknown_FWD_DEFINED__ */

#ifndef __PackageDebugSettings_FWD_DEFINED__
#define __PackageDebugSettings_FWD_DEFINED__
#ifdef __cplusplus
typedef class PackageDebugSettings PackageDebugSettings;
#else
typedef struct PackageDebugSettings PackageDebugSettings;
#endif /* defined __cplusplus */
#endif /* defined __PackageDebugSettings_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__ */

#ifndef __ApplicationDesignModeSettings_FWD_DEFINED__
#define __ApplicationDesignModeSettings_FWD_DEFINED__
#ifdef __cplusplus
typedef class ApplicationDesignModeSettings ApplicationDesignModeSettings;
#else
typedef struct ApplicationDesignModeSettings ApplicationDesignModeSettings;
#endif /* defined __cplusplus */
#endif /* defined __ApplicationDesignModeSettings_FWD_DEFINED__ */

#ifndef __ExecuteFolder_FWD_DEFINED__
#define __ExecuteFolder_FWD_DEFINED__
#ifdef __cplusplus
typedef class ExecuteFolder ExecuteFolder;
#else
typedef struct ExecuteFolder ExecuteFolder;
#endif /* defined __cplusplus */
#endif /* defined __ExecuteFolder_FWD_DEFINED__ */

#ifndef __VirtualDesktopManager_FWD_DEFINED__
#define __VirtualDesktopManager_FWD_DEFINED__
#ifdef __cplusplus
typedef class VirtualDesktopManager VirtualDesktopManager;
#else
typedef struct VirtualDesktopManager VirtualDesktopManager;
#endif /* defined __cplusplus */
#endif /* defined __VirtualDesktopManager_FWD_DEFINED__ */

#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 __IDataObjectProvider_FWD_DEFINED__
#define __IDataObjectProvider_FWD_DEFINED__
typedef interface IDataObjectProvider IDataObjectProvider;
#ifdef __cplusplus
interface IDataObjectProvider;
#endif /* __cplusplus */
#endif

#ifndef __IDataTransferManagerInterop_FWD_DEFINED__
#define __IDataTransferManagerInterop_FWD_DEFINED__
typedef interface IDataTransferManagerInterop IDataTransferManagerInterop;
#ifdef __cplusplus
interface IDataTransferManagerInterop;
#endif /* __cplusplus */
#endif

#ifndef __IFrameworkInputPaneHandler_FWD_DEFINED__
#define __IFrameworkInputPaneHandler_FWD_DEFINED__
typedef interface IFrameworkInputPaneHandler IFrameworkInputPaneHandler;
#ifdef __cplusplus
interface IFrameworkInputPaneHandler;
#endif /* __cplusplus */
#endif

#ifndef __IFrameworkInputPane_FWD_DEFINED__
#define __IFrameworkInputPane_FWD_DEFINED__
typedef interface IFrameworkInputPane IFrameworkInputPane;
#ifdef __cplusplus
interface IFrameworkInputPane;
#endif /* __cplusplus */
#endif

#ifndef __ISearchableApplication_FWD_DEFINED__
#define __ISearchableApplication_FWD_DEFINED__
typedef interface ISearchableApplication ISearchableApplication;
#ifdef __cplusplus
interface ISearchableApplication;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibilityDockingServiceCallback_FWD_DEFINED__
#define __IAccessibilityDockingServiceCallback_FWD_DEFINED__
typedef interface IAccessibilityDockingServiceCallback IAccessibilityDockingServiceCallback;
#ifdef __cplusplus
interface IAccessibilityDockingServiceCallback;
#endif /* __cplusplus */
#endif

#ifndef __IAccessibilityDockingService_FWD_DEFINED__
#define __IAccessibilityDockingService_FWD_DEFINED__
typedef interface IAccessibilityDockingService IAccessibilityDockingService;
#ifdef __cplusplus
interface IAccessibilityDockingService;
#endif /* __cplusplus */
#endif

#ifndef __IAppVisibilityEvents_FWD_DEFINED__
#define __IAppVisibilityEvents_FWD_DEFINED__
typedef interface IAppVisibilityEvents IAppVisibilityEvents;
#ifdef __cplusplus
interface IAppVisibilityEvents;
#endif /* __cplusplus */
#endif

#ifndef __IAppVisibility_FWD_DEFINED__
#define __IAppVisibility_FWD_DEFINED__
typedef interface IAppVisibility IAppVisibility;
#ifdef __cplusplus
interface IAppVisibility;
#endif /* __cplusplus */
#endif

#ifndef __IPackageExecutionStateChangeNotification_FWD_DEFINED__
#define __IPackageExecutionStateChangeNotification_FWD_DEFINED__
typedef interface IPackageExecutionStateChangeNotification IPackageExecutionStateChangeNotification;
#ifdef __cplusplus
interface IPackageExecutionStateChangeNotification;
#endif /* __cplusplus */
#endif

#ifndef __IPackageDebugSettings_FWD_DEFINED__
#define __IPackageDebugSettings_FWD_DEFINED__
typedef interface IPackageDebugSettings IPackageDebugSettings;
#ifdef __cplusplus
interface IPackageDebugSettings;
#endif /* __cplusplus */
#endif

#ifndef __IExecuteCommandApplicationHostEnvironment_FWD_DEFINED__
#define __IExecuteCommandApplicationHostEnvironment_FWD_DEFINED__
typedef interface IExecuteCommandApplicationHostEnvironment IExecuteCommandApplicationHostEnvironment;
#ifdef __cplusplus
interface IExecuteCommandApplicationHostEnvironment;
#endif /* __cplusplus */
#endif

#ifndef __IExecuteCommandHost_FWD_DEFINED__
#define __IExecuteCommandHost_FWD_DEFINED__
typedef interface IExecuteCommandHost IExecuteCommandHost;
#ifdef __cplusplus
interface IExecuteCommandHost;
#endif /* __cplusplus */
#endif

#ifndef __IApplicationDesignModeSettings_FWD_DEFINED__
#define __IApplicationDesignModeSettings_FWD_DEFINED__
typedef interface IApplicationDesignModeSettings IApplicationDesignModeSettings;
#ifdef __cplusplus
interface IApplicationDesignModeSettings;
#endif /* __cplusplus */
#endif

#ifndef __IInitializeWithWindow_FWD_DEFINED__
#define __IInitializeWithWindow_FWD_DEFINED__
typedef interface IInitializeWithWindow IInitializeWithWindow;
#ifdef __cplusplus
interface IInitializeWithWindow;
#endif /* __cplusplus */
#endif

#ifndef __IHandlerInfo_FWD_DEFINED__
#define __IHandlerInfo_FWD_DEFINED__
typedef interface IHandlerInfo IHandlerInfo;
#ifdef __cplusplus
interface IHandlerInfo;
#endif /* __cplusplus */
#endif

#ifndef __IHandlerActivationHost_FWD_DEFINED__
#define __IHandlerActivationHost_FWD_DEFINED__
typedef interface IHandlerActivationHost IHandlerActivationHost;
#ifdef __cplusplus
interface IHandlerActivationHost;
#endif /* __cplusplus */
#endif

/* 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 <prsht.h>
#include <msxml.h>
#include <wtypes.h>
#include <propsys.h>
#include <objectarray.h>
#include <structuredquerycondition.h>

#ifdef __cplusplus
extern "C" {
#endif

/**
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER within this package.
 */

#include <winapifamily.h>

#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

#include <_mingw_unicode.h>


#include <sherrors.h>

#ifndef SHSTDAPI
#ifdef _SHELL32_
#define SHSTDAPI STDAPI
#define SHSTDAPI_(type) STDAPI_(type)
#else
#define SHSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT STDAPICALLTYPE
#define SHSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type STDAPICALLTYPE
#endif
#endif

#define CMF_NORMAL 0x0
#define CMF_DEFAULTONLY 0x1
#define CMF_VERBSONLY 0x2
#define CMF_EXPLORE 0x4
#define CMF_NOVERBS 0x8
#define CMF_CANRENAME 0x10
#define CMF_NODEFAULT 0x20
#if NTDDI_VERSION < NTDDI_VISTA
#define CMF_INCLUDESTATIC 0x40
#endif
#if NTDDI_VERSION >= NTDDI_VISTA
#define CMF_ITEMMENU 0x80
#endif
#define CMF_EXTENDEDVERBS 0x100
#if NTDDI_VERSION >= NTDDI_VISTA
#define CMF_DISABLEDVERBS 0x200
#endif
#define CMF_ASYNCVERBSTATE 0x400
#define CMF_OPTIMIZEFORINVOKE 0x800
#define CMF_SYNCCASCADEMENU 0x1000
#define CMF_DONOTPICKDEFAULT 0x2000
#define CMF_RESERVED 0xffff0000

#define GCS_VERBA 0x0
#define GCS_HELPTEXTA 0x1
#define GCS_VALIDATEA 0x2
#define GCS_VERBW 0x4
#define GCS_HELPTEXTW 0x5
#define GCS_VALIDATEW 0x6
#define GCS_VERBICONW 0x14
#define GCS_UNICODE 0x4

#define GCS_VERB __MINGW_NAME_AW(GCS_VERB)
#define GCS_HELPTEXT __MINGW_NAME_AW(GCS_HELPTEXT)
#define GCS_VALIDATE __MINGW_NAME_AW(GCS_VALIDATE)

#define CMDSTR_NEWFOLDERA "NewFolder"
#define CMDSTR_VIEWLISTA "ViewList"
#define CMDSTR_VIEWDETAILSA "ViewDetails"
#define CMDSTR_NEWFOLDERW L"NewFolder"
#define CMDSTR_VIEWLISTW L"ViewList"
#define CMDSTR_VIEWDETAILSW L"ViewDetails"

#define CMDSTR_NEWFOLDER __MINGW_NAME_AW(CMDSTR_NEWFOLDER)
#define CMDSTR_VIEWLIST __MINGW_NAME_AW(CMDSTR_VIEWLIST)
#define CMDSTR_VIEWDETAILS __MINGW_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
#if NTDDI_VERSION < NTDDI_VISTA
#define CMIC_MASK_HASLINKNAME SEE_MASK_HASLINKNAME
#define CMIC_MASK_HASTITLE SEE_MASK_HASTITLE
#endif
#define CMIC_MASK_FLAG_SEP_VDM SEE_MASK_FLAG_SEPVDM
#define CMIC_MASK_ASYNCOK SEE_MASK_ASYNCOK
#if NTDDI_VERSION >= NTDDI_VISTA
#define CMIC_MASK_NOASYNC SEE_MASK_NOASYNC
#endif
#define CMIC_MASK_SHIFT_DOWN 0x10000000
#define CMIC_MASK_CONTROL_DOWN 0x40000000
#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE
#define CMIC_MASK_NOZONECHECKS SEE_MASK_NOZONECHECKS
#define CMIC_MASK_PTINVOKE 0x20000000

#include <pshpack8.h>
typedef struct _CMINVOKECOMMANDINFO {
    DWORD cbSize;
    DWORD fMask;
    HWND hwnd;
    LPCSTR lpVerb;
    LPCSTR lpParameters;
    LPCSTR lpDirectory;
    int nShow;
    DWORD dwHotKey;
    HANDLE hIcon;
} CMINVOKECOMMANDINFO;

typedef CMINVOKECOMMANDINFO *LPCMINVOKECOMMANDINFO;
typedef const CMINVOKECOMMANDINFO *PCCMINVOKECOMMANDINFO;

typedef struct _CMINVOKECOMMANDINFOEX {
    DWORD cbSize;
    DWORD fMask;
    HWND hwnd;
    LPCSTR lpVerb;
    LPCSTR lpParameters;
    LPCSTR lpDirectory;
    int nShow;
    DWORD dwHotKey;
    HANDLE hIcon;
    LPCSTR lpTitle;
    LPCWSTR lpVerbW;
    LPCWSTR lpParametersW;
    LPCWSTR lpDirectoryW;
    LPCWSTR lpTitleW;
    POINT ptInvoke;
} CMINVOKECOMMANDINFOEX;

typedef CMINVOKECOMMANDINFOEX *LPCMINVOKECOMMANDINFOEX;
typedef const CMINVOKECOMMANDINFOEX *PCCMINVOKECOMMANDINFOEX;
#include <poppack.h>

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

DEFINE_GUID(IID_IContextMenu, 0x000214e4, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
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(
        CMINVOKECOMMANDINFO *pici) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCommandString(
        UINT_PTR idCmd,
        UINT uType,
        UINT *pReserved,
        CHAR *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,
        CMINVOKECOMMANDINFO *pici);

    HRESULT (STDMETHODCALLTYPE *GetCommandString)(
        IContextMenu *This,
        UINT_PTR idCmd,
        UINT uType,
        UINT *pReserved,
        CHAR *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,pici) (This)->lpVtbl->InvokeCommand(This,pici)
#define IContextMenu_GetCommandString(This,idCmd,uType,pReserved,pszName,cchMax) (This)->lpVtbl->GetCommandString(This,idCmd,uType,pReserved,pszName,cchMax)
#else
/*** IUnknown methods ***/
static inline HRESULT IContextMenu_QueryInterface(IContextMenu* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IContextMenu_AddRef(IContextMenu* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IContextMenu_Release(IContextMenu* This) {
    return This->lpVtbl->Release(This);
}
/*** IContextMenu methods ***/
static inline 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 inline HRESULT IContextMenu_InvokeCommand(IContextMenu* This,CMINVOKECOMMANDINFO *pici) {
    return This->lpVtbl->InvokeCommand(This,pici);
}
static inline HRESULT IContextMenu_GetCommandString(IContextMenu* This,UINT_PTR idCmd,UINT uType,UINT *pReserved,CHAR *pszName,UINT cchMax) {
    return This->lpVtbl->GetCommandString(This,idCmd,uType,pReserved,pszName,cchMax);
}
#endif
#endif

#endif


#endif  /* __IContextMenu_INTERFACE_DEFINED__ */

typedef IContextMenu *LPCONTEXTMENU;

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

DEFINE_GUID(IID_IContextMenu2, 0x000214f4, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
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,
        CMINVOKECOMMANDINFO *pici);

    HRESULT (STDMETHODCALLTYPE *GetCommandString)(
        IContextMenu2 *This,
        UINT_PTR idCmd,
        UINT uType,
        UINT *pReserved,
        CHAR *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,pici) (This)->lpVtbl->InvokeCommand(This,pici)
#define IContextMenu2_GetCommandString(This,idCmd,uType,pReserved,pszName,cchMax) (This)->lpVtbl->GetCommandString(This,idCmd,uType,pReserved,pszName,cchMax)
/*** IContextMenu2 methods ***/
#define IContextMenu2_HandleMenuMsg(This,uMsg,wParam,lParam) (This)->lpVtbl->HandleMenuMsg(This,uMsg,wParam,lParam)
#else
/*** IUnknown methods ***/
static inline HRESULT IContextMenu2_QueryInterface(IContextMenu2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IContextMenu2_AddRef(IContextMenu2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IContextMenu2_Release(IContextMenu2* This) {
    return This->lpVtbl->Release(This);
}
/*** IContextMenu methods ***/
static inline 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 inline HRESULT IContextMenu2_InvokeCommand(IContextMenu2* This,CMINVOKECOMMANDINFO *pici) {
    return This->lpVtbl->InvokeCommand(This,pici);
}
static inline HRESULT IContextMenu2_GetCommandString(IContextMenu2* This,UINT_PTR idCmd,UINT uType,UINT *pReserved,CHAR *pszName,UINT cchMax) {
    return This->lpVtbl->GetCommandString(This,idCmd,uType,pReserved,pszName,cchMax);
}
/*** IContextMenu2 methods ***/
static inline 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__ */

typedef IContextMenu2 *LPCONTEXTMENU2;

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

DEFINE_GUID(IID_IContextMenu3, 0xbcfce0a0, 0xec17, 0x11d0, 0x8d,0x10, 0x00,0xa0,0xc9,0x0f,0x27,0x19);
#if defined(__cplusplus) && !defined(CINTERFACE)
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,
        CMINVOKECOMMANDINFO *pici);

    HRESULT (STDMETHODCALLTYPE *GetCommandString)(
        IContextMenu3 *This,
        UINT_PTR idCmd,
        UINT uType,
        UINT *pReserved,
        CHAR *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,pici) (This)->lpVtbl->InvokeCommand(This,pici)
#define IContextMenu3_GetCommandString(This,idCmd,uType,pReserved,pszName,cchMax) (This)->lpVtbl->GetCommandString(This,idCmd,uType,pReserved,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 inline HRESULT IContextMenu3_QueryInterface(IContextMenu3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IContextMenu3_AddRef(IContextMenu3* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IContextMenu3_Release(IContextMenu3* This) {
    return This->lpVtbl->Release(This);
}
/*** IContextMenu methods ***/
static inline 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 inline HRESULT IContextMenu3_InvokeCommand(IContextMenu3* This,CMINVOKECOMMANDINFO *pici) {
    return This->lpVtbl->InvokeCommand(This,pici);
}
static inline HRESULT IContextMenu3_GetCommandString(IContextMenu3* This,UINT_PTR idCmd,UINT uType,UINT *pReserved,CHAR *pszName,UINT cchMax) {
    return This->lpVtbl->GetCommandString(This,idCmd,uType,pReserved,pszName,cchMax);
}
/*** IContextMenu2 methods ***/
static inline HRESULT IContextMenu3_HandleMenuMsg(IContextMenu3* This,UINT uMsg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->HandleMenuMsg(This,uMsg,wParam,lParam);
}
/*** IContextMenu3 methods ***/
static inline 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__ */

typedef IContextMenu3 *LPCONTEXTMENU3;

/*****************************************************************************
 * IExecuteCommand interface
 */
#ifndef __IExecuteCommand_INTERFACE_DEFINED__
#define __IExecuteCommand_INTERFACE_DEFINED__

DEFINE_GUID(IID_IExecuteCommand, 0x7f9185b0, 0xcb92, 0x43c5, 0x80,0xa9, 0x92,0x27,0x7a,0x4f,0x7b,0x54);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7f9185b0-cb92-43c5-80a9-92277a4f7b54")
IExecuteCommand : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetKeyState(
        DWORD grfKeyState) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetParameters(
        LPCWSTR pszParameters) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPosition(
        POINT pt) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetShowWindow(
        int nShow) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNoShowUI(
        WINBOOL fNoShowUI) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDirectory(
        LPCWSTR pszDirectory) = 0;

    virtual HRESULT STDMETHODCALLTYPE Execute(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExecuteCommand, 0x7f9185b0, 0xcb92, 0x43c5, 0x80,0xa9, 0x92,0x27,0x7a,0x4f,0x7b,0x54)
#endif
#else
typedef struct IExecuteCommandVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IExecuteCommand methods ***/
    HRESULT (STDMETHODCALLTYPE *SetKeyState)(
        IExecuteCommand *This,
        DWORD grfKeyState);

    HRESULT (STDMETHODCALLTYPE *SetParameters)(
        IExecuteCommand *This,
        LPCWSTR pszParameters);

    HRESULT (STDMETHODCALLTYPE *SetPosition)(
        IExecuteCommand *This,
        POINT pt);

    HRESULT (STDMETHODCALLTYPE *SetShowWindow)(
        IExecuteCommand *This,
        int nShow);

    HRESULT (STDMETHODCALLTYPE *SetNoShowUI)(
        IExecuteCommand *This,
        WINBOOL fNoShowUI);

    HRESULT (STDMETHODCALLTYPE *SetDirectory)(
        IExecuteCommand *This,
        LPCWSTR pszDirectory);

    HRESULT (STDMETHODCALLTYPE *Execute)(
        IExecuteCommand *This);

    END_INTERFACE
} IExecuteCommandVtbl;

interface IExecuteCommand {
    CONST_VTBL IExecuteCommandVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IExecuteCommand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExecuteCommand_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExecuteCommand_Release(This) (This)->lpVtbl->Release(This)
/*** IExecuteCommand methods ***/
#define IExecuteCommand_SetKeyState(This,grfKeyState) (This)->lpVtbl->SetKeyState(This,grfKeyState)
#define IExecuteCommand_SetParameters(This,pszParameters) (This)->lpVtbl->SetParameters(This,pszParameters)
#define IExecuteCommand_SetPosition(This,pt) (This)->lpVtbl->SetPosition(This,pt)
#define IExecuteCommand_SetShowWindow(This,nShow) (This)->lpVtbl->SetShowWindow(This,nShow)
#define IExecuteCommand_SetNoShowUI(This,fNoShowUI) (This)->lpVtbl->SetNoShowUI(This,fNoShowUI)
#define IExecuteCommand_SetDirectory(This,pszDirectory) (This)->lpVtbl->SetDirectory(This,pszDirectory)
#define IExecuteCommand_Execute(This) (This)->lpVtbl->Execute(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IExecuteCommand_QueryInterface(IExecuteCommand* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IExecuteCommand_AddRef(IExecuteCommand* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IExecuteCommand_Release(IExecuteCommand* This) {
    return This->lpVtbl->Release(This);
}
/*** IExecuteCommand methods ***/
static inline HRESULT IExecuteCommand_SetKeyState(IExecuteCommand* This,DWORD grfKeyState) {
    return This->lpVtbl->SetKeyState(This,grfKeyState);
}
static inline HRESULT IExecuteCommand_SetParameters(IExecuteCommand* This,LPCWSTR pszParameters) {
    return This->lpVtbl->SetParameters(This,pszParameters);
}
static inline HRESULT IExecuteCommand_SetPosition(IExecuteCommand* This,POINT pt) {
    return This->lpVtbl->SetPosition(This,pt);
}
static inline HRESULT IExecuteCommand_SetShowWindow(IExecuteCommand* This,int nShow) {
    return This->lpVtbl->SetShowWindow(This,nShow);
}
static inline HRESULT IExecuteCommand_SetNoShowUI(IExecuteCommand* This,WINBOOL fNoShowUI) {
    return This->lpVtbl->SetNoShowUI(This,fNoShowUI);
}
static inline HRESULT IExecuteCommand_SetDirectory(IExecuteCommand* This,LPCWSTR pszDirectory) {
    return This->lpVtbl->SetDirectory(This,pszDirectory);
}
static inline HRESULT IExecuteCommand_Execute(IExecuteCommand* This) {
    return This->lpVtbl->Execute(This);
}
#endif
#endif

#endif


#endif  /* __IExecuteCommand_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPersistFolder interface
 */
#ifndef __IPersistFolder_INTERFACE_DEFINED__
#define __IPersistFolder_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPersistFolder, 0x000214ea, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("000214ea-0000-0000-c000-000000000046")
IPersistFolder : public IPersist
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        PCIDLIST_ABSOLUTE 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,
        PCIDLIST_ABSOLUTE 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 inline HRESULT IPersistFolder_QueryInterface(IPersistFolder* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPersistFolder_AddRef(IPersistFolder* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPersistFolder_Release(IPersistFolder* This) {
    return This->lpVtbl->Release(This);
}
/*** IPersist methods ***/
static inline HRESULT IPersistFolder_GetClassID(IPersistFolder* This,CLSID *pClassID) {
    return This->lpVtbl->GetClassID(This,pClassID);
}
/*** IPersistFolder methods ***/
static inline HRESULT IPersistFolder_Initialize(IPersistFolder* This,PCIDLIST_ABSOLUTE pidl) {
    return This->lpVtbl->Initialize(This,pidl);
}
#endif
#endif

#endif


#endif  /* __IPersistFolder_INTERFACE_DEFINED__ */

typedef IPersistFolder *LPPERSISTFOLDER;

#define IRTIR_TASK_NOT_RUNNING   0
#define IRTIR_TASK_RUNNING       1
#define IRTIR_TASK_SUSPENDED     2
#define IRTIR_TASK_PENDING       3
#define IRTIR_TASK_FINISHED      4

/*****************************************************************************
 * 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(
        WINBOOL bWait) = 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,
        WINBOOL bWait);

    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,bWait) (This)->lpVtbl->Kill(This,bWait)
#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 inline HRESULT IRunnableTask_QueryInterface(IRunnableTask* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRunnableTask_AddRef(IRunnableTask* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRunnableTask_Release(IRunnableTask* This) {
    return This->lpVtbl->Release(This);
}
/*** IRunnableTask methods ***/
static inline HRESULT IRunnableTask_Run(IRunnableTask* This) {
    return This->lpVtbl->Run(This);
}
static inline HRESULT IRunnableTask_Kill(IRunnableTask* This,WINBOOL bWait) {
    return This->lpVtbl->Kill(This,bWait);
}
static inline HRESULT IRunnableTask_Suspend(IRunnableTask* This) {
    return This->lpVtbl->Suspend(This);
}
static inline HRESULT IRunnableTask_Resume(IRunnableTask* This) {
    return This->lpVtbl->Resume(This);
}
static inline ULONG IRunnableTask_IsRunning(IRunnableTask* This) {
    return This->lpVtbl->IsRunning(This);
}
#endif
#endif

#endif


#endif  /* __IRunnableTask_INTERFACE_DEFINED__ */


#define TOID_NULL GUID_NULL
#define ITSAT_DEFAULT_LPARAM ((DWORD_PTR)-1)

#define ITSAT_DEFAULT_PRIORITY 0x10000000
#define ITSAT_MAX_PRIORITY 0x7fffffff
#define ITSAT_MIN_PRIORITY 0x00000000

#define ITSSFLAG_COMPLETE_ON_DESTROY 0x0
#define ITSSFLAG_KILL_ON_DESTROY 0x1

#define ITSSFLAG_FLAGS_MASK 0x3

#define ITSS_THREAD_DESTROY_DEFAULT_TIMEOUT (10 * 1000)
#define ITSS_THREAD_TERMINATE_TIMEOUT (INFINITE)
#define ITSS_THREAD_TIMEOUT_NO_CHANGE (INFINITE - 1)

/*****************************************************************************
 * IShellTaskScheduler interface
 */
#ifndef __IShellTaskScheduler_INTERFACE_DEFINED__
#define __IShellTaskScheduler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellTaskScheduler, 0x6ccb7be0, 0x6807, 0x11d0, 0xb8,0x10, 0x00,0xc0,0x4f,0xd7,0x06,0xec);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6ccb7be0-6807-11d0-b810-00c04fd706ec")
IShellTaskScheduler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddTask(
        IRunnableTask *prt,
        REFTASKOWNERID rtoid,
        DWORD_PTR lParam,
        DWORD dwPriority) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveTasks(
        REFTASKOWNERID rtoid,
        DWORD_PTR lParam,
        WINBOOL bWaitIfRunning) = 0;

    virtual UINT STDMETHODCALLTYPE CountTasks(
        REFTASKOWNERID rtoid) = 0;

    virtual HRESULT STDMETHODCALLTYPE Status(
        DWORD dwReleaseStatus,
        DWORD dwThreadTimeout) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellTaskScheduler, 0x6ccb7be0, 0x6807, 0x11d0, 0xb8,0x10, 0x00,0xc0,0x4f,0xd7,0x06,0xec)
#endif
#else
typedef struct IShellTaskSchedulerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IShellTaskScheduler methods ***/
    HRESULT (STDMETHODCALLTYPE *AddTask)(
        IShellTaskScheduler *This,
        IRunnableTask *prt,
        REFTASKOWNERID rtoid,
        DWORD_PTR lParam,
        DWORD dwPriority);

    HRESULT (STDMETHODCALLTYPE *RemoveTasks)(
        IShellTaskScheduler *This,
        REFTASKOWNERID rtoid,
        DWORD_PTR lParam,
        WINBOOL bWaitIfRunning);

    UINT (STDMETHODCALLTYPE *CountTasks)(
        IShellTaskScheduler *This,
        REFTASKOWNERID rtoid);

    HRESULT (STDMETHODCALLTYPE *Status)(
        IShellTaskScheduler *This,
        DWORD dwReleaseStatus,
        DWORD dwThreadTimeout);

    END_INTERFACE
} IShellTaskSchedulerVtbl;

interface IShellTaskScheduler {
    CONST_VTBL IShellTaskSchedulerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellTaskScheduler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellTaskScheduler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellTaskScheduler_Release(This) (This)->lpVtbl->Release(This)
/*** IShellTaskScheduler methods ***/
#define IShellTaskScheduler_AddTask(This,prt,rtoid,lParam,dwPriority) (This)->lpVtbl->AddTask(This,prt,rtoid,lParam,dwPriority)
#define IShellTaskScheduler_RemoveTasks(This,rtoid,lParam,bWaitIfRunning) (This)->lpVtbl->RemoveTasks(This,rtoid,lParam,bWaitIfRunning)
#define IShellTaskScheduler_CountTasks(This,rtoid) (This)->lpVtbl->CountTasks(This,rtoid)
#define IShellTaskScheduler_Status(This,dwReleaseStatus,dwThreadTimeout) (This)->lpVtbl->Status(This,dwReleaseStatus,dwThreadTimeout)
#else
/*** IUnknown methods ***/
static inline HRESULT IShellTaskScheduler_QueryInterface(IShellTaskScheduler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellTaskScheduler_AddRef(IShellTaskScheduler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellTaskScheduler_Release(IShellTaskScheduler* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellTaskScheduler methods ***/
static inline HRESULT IShellTaskScheduler_AddTask(IShellTaskScheduler* This,IRunnableTask *prt,REFTASKOWNERID rtoid,DWORD_PTR lParam,DWORD dwPriority) {
    return This->lpVtbl->AddTask(This,prt,rtoid,lParam,dwPriority);
}
static inline HRESULT IShellTaskScheduler_RemoveTasks(IShellTaskScheduler* This,REFTASKOWNERID rtoid,DWORD_PTR lParam,WINBOOL bWaitIfRunning) {
    return This->lpVtbl->RemoveTasks(This,rtoid,lParam,bWaitIfRunning);
}
static inline UINT IShellTaskScheduler_CountTasks(IShellTaskScheduler* This,REFTASKOWNERID rtoid) {
    return This->lpVtbl->CountTasks(This,rtoid);
}
static inline HRESULT IShellTaskScheduler_Status(IShellTaskScheduler* This,DWORD dwReleaseStatus,DWORD dwThreadTimeout) {
    return This->lpVtbl->Status(This,dwReleaseStatus,dwThreadTimeout);
}
#endif
#endif

#endif


#endif  /* __IShellTaskScheduler_INTERFACE_DEFINED__ */


#define SID_ShellTaskScheduler IID_IShellTaskScheduler

/*****************************************************************************
 * IQueryCodePage interface
 */
#ifndef __IQueryCodePage_INTERFACE_DEFINED__
#define __IQueryCodePage_INTERFACE_DEFINED__

DEFINE_GUID(IID_IQueryCodePage, 0xc7b236ce, 0xee80, 0x11d0, 0x98,0x5f, 0x00,0x60,0x08,0x05,0x93,0x82);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c7b236ce-ee80-11d0-985f-006008059382")
IQueryCodePage : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCodePage(
        UINT *puiCodePage) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCodePage(
        UINT uiCodePage) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IQueryCodePage, 0xc7b236ce, 0xee80, 0x11d0, 0x98,0x5f, 0x00,0x60,0x08,0x05,0x93,0x82)
#endif
#else
typedef struct IQueryCodePageVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IQueryCodePage methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCodePage)(
        IQueryCodePage *This,
        UINT *puiCodePage);

    HRESULT (STDMETHODCALLTYPE *SetCodePage)(
        IQueryCodePage *This,
        UINT uiCodePage);

    END_INTERFACE
} IQueryCodePageVtbl;

interface IQueryCodePage {
    CONST_VTBL IQueryCodePageVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IQueryCodePage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IQueryCodePage_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IQueryCodePage_Release(This) (This)->lpVtbl->Release(This)
/*** IQueryCodePage methods ***/
#define IQueryCodePage_GetCodePage(This,puiCodePage) (This)->lpVtbl->GetCodePage(This,puiCodePage)
#define IQueryCodePage_SetCodePage(This,uiCodePage) (This)->lpVtbl->SetCodePage(This,uiCodePage)
#else
/*** IUnknown methods ***/
static inline HRESULT IQueryCodePage_QueryInterface(IQueryCodePage* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IQueryCodePage_AddRef(IQueryCodePage* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IQueryCodePage_Release(IQueryCodePage* This) {
    return This->lpVtbl->Release(This);
}
/*** IQueryCodePage methods ***/
static inline HRESULT IQueryCodePage_GetCodePage(IQueryCodePage* This,UINT *puiCodePage) {
    return This->lpVtbl->GetCodePage(This,puiCodePage);
}
static inline HRESULT IQueryCodePage_SetCodePage(IQueryCodePage* This,UINT uiCodePage) {
    return This->lpVtbl->SetCodePage(This,uiCodePage);
}
#endif
#endif

#endif


#endif  /* __IQueryCodePage_INTERFACE_DEFINED__ */


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

DEFINE_GUID(IID_IPersistFolder2, 0x1ac3d9f0, 0x175c, 0x11d1, 0x95,0xbe, 0x00,0x60,0x97,0x97,0xea,0x4f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1ac3d9f0-175c-11d1-95be-00609797ea4f")
IPersistFolder2 : public IPersistFolder
{
    virtual HRESULT STDMETHODCALLTYPE GetCurFolder(
        PIDLIST_ABSOLUTE *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,
        PCIDLIST_ABSOLUTE pidl);

    /*** IPersistFolder2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCurFolder)(
        IPersistFolder2 *This,
        PIDLIST_ABSOLUTE *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 inline HRESULT IPersistFolder2_QueryInterface(IPersistFolder2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPersistFolder2_AddRef(IPersistFolder2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPersistFolder2_Release(IPersistFolder2* This) {
    return This->lpVtbl->Release(This);
}
/*** IPersist methods ***/
static inline HRESULT IPersistFolder2_GetClassID(IPersistFolder2* This,CLSID *pClassID) {
    return This->lpVtbl->GetClassID(This,pClassID);
}
/*** IPersistFolder methods ***/
static inline HRESULT IPersistFolder2_Initialize(IPersistFolder2* This,PCIDLIST_ABSOLUTE pidl) {
    return This->lpVtbl->Initialize(This,pidl);
}
/*** IPersistFolder2 methods ***/
static inline HRESULT IPersistFolder2_GetCurFolder(IPersistFolder2* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetCurFolder(This,ppidl);
}
#endif
#endif

#endif


#endif  /* __IPersistFolder2_INTERFACE_DEFINED__ */


#define CSIDL_FLAG_PFTI_TRACKTARGET CSIDL_FLAG_DONT_VERIFY

#include <pshpack8.h>
typedef struct _PERSIST_FOLDER_TARGET_INFO {
    PIDLIST_ABSOLUTE pidlTargetFolder;
    WCHAR szTargetParsingName[260];
    WCHAR szNetworkProvider[260];
    DWORD dwAttributes;
    int csidl;
} PERSIST_FOLDER_TARGET_INFO;
#include <poppack.h>

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

DEFINE_GUID(IID_IPersistFolder3, 0xcef04fdf, 0xfe72, 0x11d2, 0x87,0xa5, 0x00,0xc0,0x4f,0x68,0x37,0xcf);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cef04fdf-fe72-11d2-87a5-00c04f6837cf")
IPersistFolder3 : public IPersistFolder2
{
    virtual HRESULT STDMETHODCALLTYPE InitializeEx(
        IBindCtx *pbc,
        PCIDLIST_ABSOLUTE 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,
        PCIDLIST_ABSOLUTE pidl);

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

    /*** IPersistFolder3 methods ***/
    HRESULT (STDMETHODCALLTYPE *InitializeEx)(
        IPersistFolder3 *This,
        IBindCtx *pbc,
        PCIDLIST_ABSOLUTE 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 inline HRESULT IPersistFolder3_QueryInterface(IPersistFolder3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPersistFolder3_AddRef(IPersistFolder3* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPersistFolder3_Release(IPersistFolder3* This) {
    return This->lpVtbl->Release(This);
}
/*** IPersist methods ***/
static inline HRESULT IPersistFolder3_GetClassID(IPersistFolder3* This,CLSID *pClassID) {
    return This->lpVtbl->GetClassID(This,pClassID);
}
/*** IPersistFolder methods ***/
static inline HRESULT IPersistFolder3_Initialize(IPersistFolder3* This,PCIDLIST_ABSOLUTE pidl) {
    return This->lpVtbl->Initialize(This,pidl);
}
/*** IPersistFolder2 methods ***/
static inline HRESULT IPersistFolder3_GetCurFolder(IPersistFolder3* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetCurFolder(This,ppidl);
}
/*** IPersistFolder3 methods ***/
static inline HRESULT IPersistFolder3_InitializeEx(IPersistFolder3* This,IBindCtx *pbc,PCIDLIST_ABSOLUTE pidlRoot,const PERSIST_FOLDER_TARGET_INFO *ppfti) {
    return This->lpVtbl->InitializeEx(This,pbc,pidlRoot,ppfti);
}
static inline HRESULT IPersistFolder3_GetFolderTargetInfo(IPersistFolder3* This,PERSIST_FOLDER_TARGET_INFO *ppfti) {
    return This->lpVtbl->GetFolderTargetInfo(This,ppfti);
}
#endif
#endif

#endif


#endif  /* __IPersistFolder3_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(
        PCIDLIST_ABSOLUTE pidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIDList(
        PIDLIST_ABSOLUTE *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,
        PCIDLIST_ABSOLUTE pidl);

    HRESULT (STDMETHODCALLTYPE *GetIDList)(
        IPersistIDList *This,
        PIDLIST_ABSOLUTE *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 inline HRESULT IPersistIDList_QueryInterface(IPersistIDList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPersistIDList_AddRef(IPersistIDList* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPersistIDList_Release(IPersistIDList* This) {
    return This->lpVtbl->Release(This);
}
/*** IPersist methods ***/
static inline HRESULT IPersistIDList_GetClassID(IPersistIDList* This,CLSID *pClassID) {
    return This->lpVtbl->GetClassID(This,pClassID);
}
/*** IPersistIDList methods ***/
static inline HRESULT IPersistIDList_SetIDList(IPersistIDList* This,PCIDLIST_ABSOLUTE pidl) {
    return This->lpVtbl->SetIDList(This,pidl);
}
static inline HRESULT IPersistIDList_GetIDList(IPersistIDList* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetIDList(This,ppidl);
}
#endif
#endif

#endif


#endif  /* __IPersistIDList_INTERFACE_DEFINED__ */


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

DEFINE_GUID(IID_IEnumIDList, 0x000214f2, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("000214f2-0000-0000-c000-000000000046")
IEnumIDList : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        PITEMID_CHILD *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,
        PITEMID_CHILD *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 inline HRESULT IEnumIDList_QueryInterface(IEnumIDList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IEnumIDList_AddRef(IEnumIDList* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IEnumIDList_Release(IEnumIDList* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumIDList methods ***/
static inline HRESULT IEnumIDList_Next(IEnumIDList* This,ULONG celt,PITEMID_CHILD *rgelt,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
}
static inline HRESULT IEnumIDList_Skip(IEnumIDList* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static inline HRESULT IEnumIDList_Reset(IEnumIDList* This) {
    return This->lpVtbl->Reset(This);
}
static inline HRESULT IEnumIDList_Clone(IEnumIDList* This,IEnumIDList **ppenum) {
    return This->lpVtbl->Clone(This,ppenum);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumIDList_RemoteNext_Proxy(
    IEnumIDList* This,
    ULONG celt,
    PITEMID_CHILD *rgelt,
    ULONG *pceltFetched);
void __RPC_STUB IEnumIDList_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumIDList_Next_Proxy(
    IEnumIDList* This,
    ULONG celt,
    PITEMID_CHILD *rgelt,
    ULONG *pceltFetched);
HRESULT __RPC_STUB IEnumIDList_Next_Stub(
    IEnumIDList* This,
    ULONG celt,
    PITEMID_CHILD *rgelt,
    ULONG *pceltFetched);

#endif  /* __IEnumIDList_INTERFACE_DEFINED__ */

typedef IEnumIDList *LPENUMIDLIST;

/*****************************************************************************
 * IEnumFullIDList interface
 */
#ifndef __IEnumFullIDList_INTERFACE_DEFINED__
#define __IEnumFullIDList_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumFullIDList, 0xd0191542, 0x7954, 0x4908, 0xbc,0x06, 0xb2,0x36,0x0b,0xbe,0x45,0xba);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d0191542-7954-4908-bc06-b2360bbe45ba")
IEnumFullIDList : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        PIDLIST_ABSOLUTE *rgelt,
        ULONG *pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumFullIDList, 0xd0191542, 0x7954, 0x4908, 0xbc,0x06, 0xb2,0x36,0x0b,0xbe,0x45,0xba)
#endif
#else
typedef struct IEnumFullIDListVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumFullIDList methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumFullIDList *This,
        ULONG celt,
        PIDLIST_ABSOLUTE *rgelt,
        ULONG *pceltFetched);

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

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

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

    END_INTERFACE
} IEnumFullIDListVtbl;

interface IEnumFullIDList {
    CONST_VTBL IEnumFullIDListVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumFullIDList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumFullIDList_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumFullIDList_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumFullIDList methods ***/
#define IEnumFullIDList_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumFullIDList_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumFullIDList_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumFullIDList_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#else
/*** IUnknown methods ***/
static inline HRESULT IEnumFullIDList_QueryInterface(IEnumFullIDList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IEnumFullIDList_AddRef(IEnumFullIDList* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IEnumFullIDList_Release(IEnumFullIDList* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumFullIDList methods ***/
static inline HRESULT IEnumFullIDList_Next(IEnumFullIDList* This,ULONG celt,PIDLIST_ABSOLUTE *rgelt,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
}
static inline HRESULT IEnumFullIDList_Skip(IEnumFullIDList* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static inline HRESULT IEnumFullIDList_Reset(IEnumFullIDList* This) {
    return This->lpVtbl->Reset(This);
}
static inline HRESULT IEnumFullIDList_Clone(IEnumFullIDList* This,IEnumFullIDList **ppenum) {
    return This->lpVtbl->Clone(This,ppenum);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumFullIDList_RemoteNext_Proxy(
    IEnumFullIDList* This,
    ULONG celt,
    PIDLIST_ABSOLUTE *rgelt,
    ULONG *pceltFetched);
void __RPC_STUB IEnumFullIDList_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumFullIDList_Next_Proxy(
    IEnumFullIDList* This,
    ULONG celt,
    PIDLIST_ABSOLUTE *rgelt,
    ULONG *pceltFetched);
HRESULT __RPC_STUB IEnumFullIDList_Next_Stub(
    IEnumFullIDList* This,
    ULONG celt,
    PIDLIST_ABSOLUTE *rgelt,
    ULONG *pceltFetched);

#endif  /* __IEnumFullIDList_INTERFACE_DEFINED__ */


enum _SHGDNF {
    SHGDN_NORMAL = 0x0,
    SHGDN_INFOLDER = 0x1,
    SHGDN_FOREDITING = 0x1000,
    SHGDN_FORADDRESSBAR = 0x4000,
    SHGDN_FORPARSING = 0x8000
};

typedef DWORD SHGDNF;

enum _SHCONTF {
    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 SHCIDS_ALLFIELDS __MSABI_LONG(0x80000000)
#define SHCIDS_CANONICALONLY __MSABI_LONG(0x10000000)
#define SHCIDS_BITMASK __MSABI_LONG(0xffff0000)
#define SHCIDS_COLUMNMASK __MSABI_LONG(0x0000ffff)

#define SFGAO_CANCOPY DROPEFFECT_COPY
#define SFGAO_CANMOVE DROPEFFECT_MOVE
#define SFGAO_CANLINK DROPEFFECT_LINK
#define SFGAO_STORAGE __MSABI_LONG(0x8)
#define SFGAO_CANRENAME __MSABI_LONG(0x10)
#define SFGAO_CANDELETE __MSABI_LONG(0x20)
#define SFGAO_HASPROPSHEET __MSABI_LONG(0x40)
#define SFGAO_DROPTARGET __MSABI_LONG(0x100)

#define SFGAO_CAPABILITYMASK __MSABI_LONG(0x177)

#define SFGAO_SYSTEM __MSABI_LONG(0x1000)
#define SFGAO_ENCRYPTED __MSABI_LONG(0x2000)
#define SFGAO_ISSLOW __MSABI_LONG(0x4000)
#define SFGAO_GHOSTED __MSABI_LONG(0x8000)
#define SFGAO_LINK __MSABI_LONG(0x10000)
#define SFGAO_SHARE __MSABI_LONG(0x20000)
#define SFGAO_READONLY __MSABI_LONG(0x40000)
#define SFGAO_HIDDEN __MSABI_LONG(0x80000)

#define SFGAO_DISPLAYATTRMASK __MSABI_LONG(0xfc000)

#define SFGAO_FILESYSANCESTOR __MSABI_LONG(0x10000000)
#define SFGAO_FOLDER __MSABI_LONG(0x20000000)
#define SFGAO_FILESYSTEM __MSABI_LONG(0x40000000)
#define SFGAO_HASSUBFOLDER __MSABI_LONG(0x80000000)

#define SFGAO_CONTENTSMASK __MSABI_LONG(0x80000000)

#define SFGAO_VALIDATE __MSABI_LONG(0x1000000)
#define SFGAO_REMOVABLE __MSABI_LONG(0x2000000)
#define SFGAO_COMPRESSED __MSABI_LONG(0x4000000)
#define SFGAO_BROWSABLE __MSABI_LONG(0x8000000)
#define SFGAO_NONENUMERATED __MSABI_LONG(0x100000)
#define SFGAO_NEWCONTENT __MSABI_LONG(0x200000)
#define SFGAO_CANMONIKER __MSABI_LONG(0x400000)
#define SFGAO_HASSTORAGE __MSABI_LONG(0x400000)
#define SFGAO_STREAM __MSABI_LONG(0x400000)
#define SFGAO_STORAGEANCESTOR __MSABI_LONG(0x00800000)

#define SFGAO_STORAGECAPMASK __MSABI_LONG(0x70c50008)
#define SFGAO_PKEYSFGAOMASK __MSABI_LONG(0x81044000)

typedef ULONG SFGAOF;

#define STR_BIND_FORCE_FOLDER_SHORTCUT_RESOLVE L"Force Folder Shortcut Resolve"
#define STR_AVOID_DRIVE_RESTRICTION_POLICY L"Avoid Drive Restriction Policy"
#define STR_AVOID_DRIVE_RESTRICTION_POLICY L"Avoid Drive Restriction Policy"
#define STR_SKIP_BINDING_CLSID L"Skip Binding CLSID"
#define STR_PARSE_PREFER_FOLDER_BROWSING L"Parse Prefer Folder Browsing"
#define STR_DONT_PARSE_RELATIVE L"Don't Parse Relative"
#define STR_PARSE_TRANSLATE_ALIASES L"Parse Translate Aliases"
#define STR_PARSE_SKIP_NET_CACHE L"Skip Net Resource Cache"
#define STR_PARSE_SHELL_PROTOCOL_TO_FILE_OBJECTS L"Parse Shell Protocol To File Objects"
#if _WIN32_IE >= 0x0700
#define STR_TRACK_CLSID L"Track the CLSID"
#define STR_INTERNAL_NAVIGATE L"Internal Navigation"
#define STR_PARSE_PROPERTYSTORE L"DelegateNamedProperties"
#define STR_NO_VALIDATE_FILENAME_CHARS L"NoValidateFilenameChars"
#define STR_BIND_DELEGATE_CREATE_OBJECT L"Delegate Object Creation"
#define STR_PARSE_ALLOW_INTERNET_SHELL_FOLDERS L"Allow binding to Internet shell folder handlers and negate STR_PARSE_PREFER_WEB_BROWSING"
#define STR_PARSE_PREFER_WEB_BROWSING L"Do not bind to Internet shell folder handlers"
#define STR_PARSE_SHOW_NET_DIAGNOSTICS_UI L"Show network diagnostics UI"
#define STR_PARSE_DONT_REQUIRE_VALIDATED_URLS L"Do not require validated URLs"
#define STR_INTERNETFOLDER_PARSE_ONLY_URLMON_BINDABLE L"Validate URL"
#endif

#if NTDDI_VERSION >= NTDDI_WIN8
#define BIND_INTERRUPTABLE 0xffffffff
#endif

#if NTDDI_VERSION >= NTDDI_WIN7
#define STR_BIND_FOLDERS_READ_ONLY L"Folders As Read Only"
#define STR_BIND_FOLDER_ENUM_MODE L"Folder Enum Mode"

typedef enum FOLDER_ENUM_MODE {
    FEM_VIEWRESULT = 0,
    FEM_NAVIGATION = 1
} FOLDER_ENUM_MODE;

/*****************************************************************************
 * IObjectWithFolderEnumMode interface
 */
#ifndef __IObjectWithFolderEnumMode_INTERFACE_DEFINED__
#define __IObjectWithFolderEnumMode_INTERFACE_DEFINED__

DEFINE_GUID(IID_IObjectWithFolderEnumMode, 0x6a9d9026, 0x0e6e, 0x464c, 0xb0,0x00, 0x42,0xec,0xc0,0x7d,0xe6,0x73);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6a9d9026-0e6e-464c-b000-42ecc07de673")
IObjectWithFolderEnumMode : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetMode(
        FOLDER_ENUM_MODE feMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMode(
        FOLDER_ENUM_MODE *pfeMode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IObjectWithFolderEnumMode, 0x6a9d9026, 0x0e6e, 0x464c, 0xb0,0x00, 0x42,0xec,0xc0,0x7d,0xe6,0x73)
#endif
#else
typedef struct IObjectWithFolderEnumModeVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IObjectWithFolderEnumMode methods ***/
    HRESULT (STDMETHODCALLTYPE *SetMode)(
        IObjectWithFolderEnumMode *This,
        FOLDER_ENUM_MODE feMode);

    HRESULT (STDMETHODCALLTYPE *GetMode)(
        IObjectWithFolderEnumMode *This,
        FOLDER_ENUM_MODE *pfeMode);

    END_INTERFACE
} IObjectWithFolderEnumModeVtbl;

interface IObjectWithFolderEnumMode {
    CONST_VTBL IObjectWithFolderEnumModeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IObjectWithFolderEnumMode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IObjectWithFolderEnumMode_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IObjectWithFolderEnumMode_Release(This) (This)->lpVtbl->Release(This)
/*** IObjectWithFolderEnumMode methods ***/
#define IObjectWithFolderEnumMode_SetMode(This,feMode) (This)->lpVtbl->SetMode(This,feMode)
#define IObjectWithFolderEnumMode_GetMode(This,pfeMode) (This)->lpVtbl->GetMode(This,pfeMode)
#else
/*** IUnknown methods ***/
static inline HRESULT IObjectWithFolderEnumMode_QueryInterface(IObjectWithFolderEnumMode* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IObjectWithFolderEnumMode_AddRef(IObjectWithFolderEnumMode* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IObjectWithFolderEnumMode_Release(IObjectWithFolderEnumMode* This) {
    return This->lpVtbl->Release(This);
}
/*** IObjectWithFolderEnumMode methods ***/
static inline HRESULT IObjectWithFolderEnumMode_SetMode(IObjectWithFolderEnumMode* This,FOLDER_ENUM_MODE feMode) {
    return This->lpVtbl->SetMode(This,feMode);
}
static inline HRESULT IObjectWithFolderEnumMode_GetMode(IObjectWithFolderEnumMode* This,FOLDER_ENUM_MODE *pfeMode) {
    return This->lpVtbl->GetMode(This,pfeMode);
}
#endif
#endif

#endif


#endif  /* __IObjectWithFolderEnumMode_INTERFACE_DEFINED__ */


#define STR_PARSE_WITH_EXPLICIT_PROGID L"ExplicitProgid"
#define STR_PARSE_WITH_EXPLICIT_ASSOCAPP L"ExplicitAssociationApp"
#define STR_PARSE_EXPLICIT_ASSOCIATION_SUCCESSFUL L"ExplicitAssociationSuccessful"
#define STR_PARSE_AND_CREATE_ITEM L"ParseAndCreateItem"
#define STR_PROPERTYBAG_PARAM L"SHBindCtxPropertyBag"
#define STR_ENUM_ITEMS_FLAGS L"SHCONTF"

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


/*****************************************************************************
 * IParseAndCreateItem interface
 */
#ifndef __IParseAndCreateItem_INTERFACE_DEFINED__
#define __IParseAndCreateItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_IParseAndCreateItem, 0x67efed0e, 0xe827, 0x4408, 0xb4,0x93, 0x78,0xf3,0x98,0x2b,0x68,0x5c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("67efed0e-e827-4408-b493-78f3982b685c")
IParseAndCreateItem : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetItem(
        IShellItem *psi) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IParseAndCreateItem, 0x67efed0e, 0xe827, 0x4408, 0xb4,0x93, 0x78,0xf3,0x98,0x2b,0x68,0x5c)
#endif
#else
typedef struct IParseAndCreateItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IParseAndCreateItem methods ***/
    HRESULT (STDMETHODCALLTYPE *SetItem)(
        IParseAndCreateItem *This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *GetItem)(
        IParseAndCreateItem *This,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} IParseAndCreateItemVtbl;

interface IParseAndCreateItem {
    CONST_VTBL IParseAndCreateItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IParseAndCreateItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IParseAndCreateItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IParseAndCreateItem_Release(This) (This)->lpVtbl->Release(This)
/*** IParseAndCreateItem methods ***/
#define IParseAndCreateItem_SetItem(This,psi) (This)->lpVtbl->SetItem(This,psi)
#define IParseAndCreateItem_GetItem(This,riid,ppv) (This)->lpVtbl->GetItem(This,riid,ppv)
#else
/*** IUnknown methods ***/
static inline HRESULT IParseAndCreateItem_QueryInterface(IParseAndCreateItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IParseAndCreateItem_AddRef(IParseAndCreateItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IParseAndCreateItem_Release(IParseAndCreateItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IParseAndCreateItem methods ***/
static inline HRESULT IParseAndCreateItem_SetItem(IParseAndCreateItem* This,IShellItem *psi) {
    return This->lpVtbl->SetItem(This,psi);
}
static inline HRESULT IParseAndCreateItem_GetItem(IParseAndCreateItem* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetItem(This,riid,ppv);
}
#endif
#endif

#endif


#endif  /* __IParseAndCreateItem_INTERFACE_DEFINED__ */


#define STR_ITEM_CACHE_CONTEXT L"ItemCacheContext"
#endif

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


/*****************************************************************************
 * IShellFolder interface
 */
#ifndef __IShellFolder_INTERFACE_DEFINED__
#define __IShellFolder_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellFolder, 0x000214e6, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("000214e6-0000-0000-c000-000000000046")
IShellFolder : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ParseDisplayName(
        HWND hwnd,
        IBindCtx *pbc,
        LPWSTR pszDisplayName,
        ULONG *pchEaten,
        PIDLIST_RELATIVE *ppidl,
        ULONG *pdwAttributes) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE BindToObject(
        PCUIDLIST_RELATIVE pidl,
        IBindCtx *pbc,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE BindToStorage(
        PCUIDLIST_RELATIVE pidl,
        IBindCtx *pbc,
        REFIID riid,
        void **ppv) = 0;

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

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

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

    virtual HRESULT STDMETHODCALLTYPE GetUIObjectOf(
        HWND hwndOwner,
        UINT cidl,
        PCUITEMID_CHILD_ARRAY apidl,
        REFIID riid,
        UINT *rgfReserved,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayNameOf(
        PCUITEMID_CHILD pidl,
        SHGDNF uFlags,
        STRRET *pName) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNameOf(
        HWND hwnd,
        PCUITEMID_CHILD pidl,
        LPCWSTR pszName,
        SHGDNF uFlags,
        PITEMID_CHILD *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 hwnd,
        IBindCtx *pbc,
        LPWSTR pszDisplayName,
        ULONG *pchEaten,
        PIDLIST_RELATIVE *ppidl,
        ULONG *pdwAttributes);

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

    HRESULT (STDMETHODCALLTYPE *BindToObject)(
        IShellFolder *This,
        PCUIDLIST_RELATIVE pidl,
        IBindCtx *pbc,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *BindToStorage)(
        IShellFolder *This,
        PCUIDLIST_RELATIVE pidl,
        IBindCtx *pbc,
        REFIID riid,
        void **ppv);

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

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

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

    HRESULT (STDMETHODCALLTYPE *GetUIObjectOf)(
        IShellFolder *This,
        HWND hwndOwner,
        UINT cidl,
        PCUITEMID_CHILD_ARRAY apidl,
        REFIID riid,
        UINT *rgfReserved,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetDisplayNameOf)(
        IShellFolder *This,
        PCUITEMID_CHILD pidl,
        SHGDNF uFlags,
        STRRET *pName);

    HRESULT (STDMETHODCALLTYPE *SetNameOf)(
        IShellFolder *This,
        HWND hwnd,
        PCUITEMID_CHILD pidl,
        LPCWSTR pszName,
        SHGDNF uFlags,
        PITEMID_CHILD *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,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes) (This)->lpVtbl->ParseDisplayName(This,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes)
#define IShellFolder_EnumObjects(This,hwnd,grfFlags,ppenumIDList) (This)->lpVtbl->EnumObjects(This,hwnd,grfFlags,ppenumIDList)
#define IShellFolder_BindToObject(This,pidl,pbc,riid,ppv) (This)->lpVtbl->BindToObject(This,pidl,pbc,riid,ppv)
#define IShellFolder_BindToStorage(This,pidl,pbc,riid,ppv) (This)->lpVtbl->BindToStorage(This,pidl,pbc,riid,ppv)
#define IShellFolder_CompareIDs(This,lParam,pidl1,pidl2) (This)->lpVtbl->CompareIDs(This,lParam,pidl1,pidl2)
#define IShellFolder_CreateViewObject(This,hwndOwner,riid,ppv) (This)->lpVtbl->CreateViewObject(This,hwndOwner,riid,ppv)
#define IShellFolder_GetAttributesOf(This,cidl,apidl,rgfInOut) (This)->lpVtbl->GetAttributesOf(This,cidl,apidl,rgfInOut)
#define IShellFolder_GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv) (This)->lpVtbl->GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv)
#define IShellFolder_GetDisplayNameOf(This,pidl,uFlags,pName) (This)->lpVtbl->GetDisplayNameOf(This,pidl,uFlags,pName)
#define IShellFolder_SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut) (This)->lpVtbl->SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut)
#else
/*** IUnknown methods ***/
static inline HRESULT IShellFolder_QueryInterface(IShellFolder* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellFolder_AddRef(IShellFolder* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellFolder_Release(IShellFolder* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellFolder methods ***/
static inline HRESULT IShellFolder_ParseDisplayName(IShellFolder* This,HWND hwnd,IBindCtx *pbc,LPWSTR pszDisplayName,ULONG *pchEaten,PIDLIST_RELATIVE *ppidl,ULONG *pdwAttributes) {
    return This->lpVtbl->ParseDisplayName(This,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes);
}
static inline HRESULT IShellFolder_EnumObjects(IShellFolder* This,HWND hwnd,SHCONTF grfFlags,IEnumIDList **ppenumIDList) {
    return This->lpVtbl->EnumObjects(This,hwnd,grfFlags,ppenumIDList);
}
static inline HRESULT IShellFolder_BindToObject(IShellFolder* This,PCUIDLIST_RELATIVE pidl,IBindCtx *pbc,REFIID riid,void **ppv) {
    return This->lpVtbl->BindToObject(This,pidl,pbc,riid,ppv);
}
static inline HRESULT IShellFolder_BindToStorage(IShellFolder* This,PCUIDLIST_RELATIVE pidl,IBindCtx *pbc,REFIID riid,void **ppv) {
    return This->lpVtbl->BindToStorage(This,pidl,pbc,riid,ppv);
}
static inline HRESULT IShellFolder_CompareIDs(IShellFolder* This,LPARAM lParam,PCUIDLIST_RELATIVE pidl1,PCUIDLIST_RELATIVE pidl2) {
    return This->lpVtbl->CompareIDs(This,lParam,pidl1,pidl2);
}
static inline HRESULT IShellFolder_CreateViewObject(IShellFolder* This,HWND hwndOwner,REFIID riid,void **ppv) {
    return This->lpVtbl->CreateViewObject(This,hwndOwner,riid,ppv);
}
static inline HRESULT IShellFolder_GetAttributesOf(IShellFolder* This,UINT cidl,PCUITEMID_CHILD_ARRAY apidl,SFGAOF *rgfInOut) {
    return This->lpVtbl->GetAttributesOf(This,cidl,apidl,rgfInOut);
}
static inline HRESULT IShellFolder_GetUIObjectOf(IShellFolder* This,HWND hwndOwner,UINT cidl,PCUITEMID_CHILD_ARRAY apidl,REFIID riid,UINT *rgfReserved,void **ppv) {
    return This->lpVtbl->GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv);
}
static inline HRESULT IShellFolder_GetDisplayNameOf(IShellFolder* This,PCUITEMID_CHILD pidl,SHGDNF uFlags,STRRET *pName) {
    return This->lpVtbl->GetDisplayNameOf(This,pidl,uFlags,pName);
}
static inline HRESULT IShellFolder_SetNameOf(IShellFolder* This,HWND hwnd,PCUITEMID_CHILD pidl,LPCWSTR pszName,SHGDNF uFlags,PITEMID_CHILD *ppidlOut) {
    return This->lpVtbl->SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IShellFolder_RemoteSetNameOf_Proxy(
    IShellFolder* This,
    HWND hwnd,
    PCUITEMID_CHILD pidl,
    LPCWSTR pszName,
    SHGDNF uFlags,
    PITEMID_CHILD *ppidlOut);
void __RPC_STUB IShellFolder_RemoteSetNameOf_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IShellFolder_SetNameOf_Proxy(
    IShellFolder* This,
    HWND hwnd,
    PCUITEMID_CHILD pidl,
    LPCWSTR pszName,
    SHGDNF uFlags,
    PITEMID_CHILD *ppidlOut);
HRESULT __RPC_STUB IShellFolder_SetNameOf_Stub(
    IShellFolder* This,
    HWND hwnd,
    PCUITEMID_CHILD pidl,
    LPCWSTR pszName,
    SHGDNF uFlags,
    PITEMID_CHILD *ppidlOut);

#endif  /* __IShellFolder_INTERFACE_DEFINED__ */

typedef IShellFolder *LPSHELLFOLDER;

typedef struct EXTRASEARCH {
    GUID guidSearch;
    WCHAR wszFriendlyName[80];
    WCHAR wszUrl[2084];
} EXTRASEARCH;
typedef struct EXTRASEARCH *LPEXTRASEARCH;

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

DEFINE_GUID(IID_IEnumExtraSearch, 0x0e700be1, 0x9db6, 0x11d1, 0xa1,0xce, 0x00,0xc0,0x4f,0xd7,0x5d,0x13);
#if defined(__cplusplus) && !defined(CINTERFACE)
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 inline HRESULT IEnumExtraSearch_QueryInterface(IEnumExtraSearch* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IEnumExtraSearch_AddRef(IEnumExtraSearch* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IEnumExtraSearch_Release(IEnumExtraSearch* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumExtraSearch methods ***/
static inline HRESULT IEnumExtraSearch_Next(IEnumExtraSearch* This,ULONG celt,EXTRASEARCH *rgelt,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
}
static inline HRESULT IEnumExtraSearch_Skip(IEnumExtraSearch* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static inline HRESULT IEnumExtraSearch_Reset(IEnumExtraSearch* This) {
    return This->lpVtbl->Reset(This);
}
static inline HRESULT IEnumExtraSearch_Clone(IEnumExtraSearch* This,IEnumExtraSearch **ppenum) {
    return This->lpVtbl->Clone(This,ppenum);
}
#endif
#endif

#endif


#endif  /* __IEnumExtraSearch_INTERFACE_DEFINED__ */

typedef IEnumExtraSearch *LPENUMEXTRASEARCH;

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

DEFINE_GUID(IID_IShellFolder2, 0x93f2f68c, 0x1d1b, 0x11d3, 0xa3,0x0e, 0x00,0xc0,0x4f,0x79,0xab,0xd1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("93f2f68c-1d1b-11d3-a30e-00c04f79abd1")
IShellFolder2 : public IShellFolder
{
    virtual HRESULT STDMETHODCALLTYPE GetDefaultSearchGUID(
        GUID *pguid) = 0;

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

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

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

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

    virtual HRESULT STDMETHODCALLTYPE GetDetailsOf(
        PCUITEMID_CHILD 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 hwnd,
        IBindCtx *pbc,
        LPWSTR pszDisplayName,
        ULONG *pchEaten,
        PIDLIST_RELATIVE *ppidl,
        ULONG *pdwAttributes);

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

    HRESULT (STDMETHODCALLTYPE *BindToObject)(
        IShellFolder2 *This,
        PCUIDLIST_RELATIVE pidl,
        IBindCtx *pbc,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *BindToStorage)(
        IShellFolder2 *This,
        PCUIDLIST_RELATIVE pidl,
        IBindCtx *pbc,
        REFIID riid,
        void **ppv);

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

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

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

    HRESULT (STDMETHODCALLTYPE *GetUIObjectOf)(
        IShellFolder2 *This,
        HWND hwndOwner,
        UINT cidl,
        PCUITEMID_CHILD_ARRAY apidl,
        REFIID riid,
        UINT *rgfReserved,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetDisplayNameOf)(
        IShellFolder2 *This,
        PCUITEMID_CHILD pidl,
        SHGDNF uFlags,
        STRRET *pName);

    HRESULT (STDMETHODCALLTYPE *SetNameOf)(
        IShellFolder2 *This,
        HWND hwnd,
        PCUITEMID_CHILD pidl,
        LPCWSTR pszName,
        SHGDNF uFlags,
        PITEMID_CHILD *ppidlOut);

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

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *GetDetailsOf)(
        IShellFolder2 *This,
        PCUITEMID_CHILD 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,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes) (This)->lpVtbl->ParseDisplayName(This,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes)
#define IShellFolder2_EnumObjects(This,hwnd,grfFlags,ppenumIDList) (This)->lpVtbl->EnumObjects(This,hwnd,grfFlags,ppenumIDList)
#define IShellFolder2_BindToObject(This,pidl,pbc,riid,ppv) (This)->lpVtbl->BindToObject(This,pidl,pbc,riid,ppv)
#define IShellFolder2_BindToStorage(This,pidl,pbc,riid,ppv) (This)->lpVtbl->BindToStorage(This,pidl,pbc,riid,ppv)
#define IShellFolder2_CompareIDs(This,lParam,pidl1,pidl2) (This)->lpVtbl->CompareIDs(This,lParam,pidl1,pidl2)
#define IShellFolder2_CreateViewObject(This,hwndOwner,riid,ppv) (This)->lpVtbl->CreateViewObject(This,hwndOwner,riid,ppv)
#define IShellFolder2_GetAttributesOf(This,cidl,apidl,rgfInOut) (This)->lpVtbl->GetAttributesOf(This,cidl,apidl,rgfInOut)
#define IShellFolder2_GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv) (This)->lpVtbl->GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv)
#define IShellFolder2_GetDisplayNameOf(This,pidl,uFlags,pName) (This)->lpVtbl->GetDisplayNameOf(This,pidl,uFlags,pName)
#define IShellFolder2_SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut) (This)->lpVtbl->SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut)
/*** IShellFolder2 methods ***/
#define IShellFolder2_GetDefaultSearchGUID(This,pguid) (This)->lpVtbl->GetDefaultSearchGUID(This,pguid)
#define IShellFolder2_EnumSearches(This,ppenum) (This)->lpVtbl->EnumSearches(This,ppenum)
#define IShellFolder2_GetDefaultColumn(This,dwRes,pSort,pDisplay) (This)->lpVtbl->GetDefaultColumn(This,dwRes,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 inline HRESULT IShellFolder2_QueryInterface(IShellFolder2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellFolder2_AddRef(IShellFolder2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellFolder2_Release(IShellFolder2* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellFolder methods ***/
static inline HRESULT IShellFolder2_ParseDisplayName(IShellFolder2* This,HWND hwnd,IBindCtx *pbc,LPWSTR pszDisplayName,ULONG *pchEaten,PIDLIST_RELATIVE *ppidl,ULONG *pdwAttributes) {
    return This->lpVtbl->ParseDisplayName(This,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes);
}
static inline HRESULT IShellFolder2_EnumObjects(IShellFolder2* This,HWND hwnd,SHCONTF grfFlags,IEnumIDList **ppenumIDList) {
    return This->lpVtbl->EnumObjects(This,hwnd,grfFlags,ppenumIDList);
}
static inline HRESULT IShellFolder2_BindToObject(IShellFolder2* This,PCUIDLIST_RELATIVE pidl,IBindCtx *pbc,REFIID riid,void **ppv) {
    return This->lpVtbl->BindToObject(This,pidl,pbc,riid,ppv);
}
static inline HRESULT IShellFolder2_BindToStorage(IShellFolder2* This,PCUIDLIST_RELATIVE pidl,IBindCtx *pbc,REFIID riid,void **ppv) {
    return This->lpVtbl->BindToStorage(This,pidl,pbc,riid,ppv);
}
static inline HRESULT IShellFolder2_CompareIDs(IShellFolder2* This,LPARAM lParam,PCUIDLIST_RELATIVE pidl1,PCUIDLIST_RELATIVE pidl2) {
    return This->lpVtbl->CompareIDs(This,lParam,pidl1,pidl2);
}
static inline HRESULT IShellFolder2_CreateViewObject(IShellFolder2* This,HWND hwndOwner,REFIID riid,void **ppv) {
    return This->lpVtbl->CreateViewObject(This,hwndOwner,riid,ppv);
}
static inline HRESULT IShellFolder2_GetAttributesOf(IShellFolder2* This,UINT cidl,PCUITEMID_CHILD_ARRAY apidl,SFGAOF *rgfInOut) {
    return This->lpVtbl->GetAttributesOf(This,cidl,apidl,rgfInOut);
}
static inline HRESULT IShellFolder2_GetUIObjectOf(IShellFolder2* This,HWND hwndOwner,UINT cidl,PCUITEMID_CHILD_ARRAY apidl,REFIID riid,UINT *rgfReserved,void **ppv) {
    return This->lpVtbl->GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv);
}
static inline HRESULT IShellFolder2_GetDisplayNameOf(IShellFolder2* This,PCUITEMID_CHILD pidl,SHGDNF uFlags,STRRET *pName) {
    return This->lpVtbl->GetDisplayNameOf(This,pidl,uFlags,pName);
}
static inline HRESULT IShellFolder2_SetNameOf(IShellFolder2* This,HWND hwnd,PCUITEMID_CHILD pidl,LPCWSTR pszName,SHGDNF uFlags,PITEMID_CHILD *ppidlOut) {
    return This->lpVtbl->SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut);
}
/*** IShellFolder2 methods ***/
static inline HRESULT IShellFolder2_GetDefaultSearchGUID(IShellFolder2* This,GUID *pguid) {
    return This->lpVtbl->GetDefaultSearchGUID(This,pguid);
}
static inline HRESULT IShellFolder2_EnumSearches(IShellFolder2* This,IEnumExtraSearch **ppenum) {
    return This->lpVtbl->EnumSearches(This,ppenum);
}
static inline HRESULT IShellFolder2_GetDefaultColumn(IShellFolder2* This,DWORD dwRes,ULONG *pSort,ULONG *pDisplay) {
    return This->lpVtbl->GetDefaultColumn(This,dwRes,pSort,pDisplay);
}
static inline HRESULT IShellFolder2_GetDefaultColumnState(IShellFolder2* This,UINT iColumn,SHCOLSTATEF *pcsFlags) {
    return This->lpVtbl->GetDefaultColumnState(This,iColumn,pcsFlags);
}
static inline HRESULT IShellFolder2_GetDetailsEx(IShellFolder2* This,PCUITEMID_CHILD pidl,const SHCOLUMNID *pscid,VARIANT *pv) {
    return This->lpVtbl->GetDetailsEx(This,pidl,pscid,pv);
}
static inline HRESULT IShellFolder2_GetDetailsOf(IShellFolder2* This,PCUITEMID_CHILD pidl,UINT iColumn,SHELLDETAILS *psd) {
    return This->lpVtbl->GetDetailsOf(This,pidl,iColumn,psd);
}
static inline HRESULT IShellFolder2_MapColumnToSCID(IShellFolder2* This,UINT iColumn,SHCOLUMNID *pscid) {
    return This->lpVtbl->MapColumnToSCID(This,iColumn,pscid);
}
#endif
#endif

#endif


#endif  /* __IShellFolder2_INTERFACE_DEFINED__ */

typedef char *LPVIEWSETTINGS;

typedef enum FOLDERFLAGS {
    FWF_NONE = 0x0,
    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;

DEFINE_ENUM_FLAG_OPERATORS(FOLDERFLAGS)

typedef enum FOLDERVIEWMODE {
    FVM_AUTO = -1,
    FVM_FIRST = 1,
    FVM_ICON = 1,
    FVM_SMALLICON = 2,
    FVM_LIST = 3,
    FVM_DETAILS = 4,
    FVM_THUMBNAIL = 5,
    FVM_TILE = 6,
    FVM_THUMBSTRIP = 7,
    FVM_CONTENT = 8,
    FVM_LAST = 8
} FOLDERVIEWMODE;

#if NTDDI_VERSION >= NTDDI_VISTA
typedef enum FOLDERLOGICALVIEWMODE {
    FLVM_UNSPECIFIED = -1,
    FLVM_FIRST = 1,
    FLVM_DETAILS = 1,
    FLVM_TILES = 2,
    FLVM_ICONS = 3,
    FLVM_LIST = 4,
    FLVM_CONTENT = 5,
    FLVM_LAST = 5
} FOLDERLOGICALVIEWMODE;
#endif
typedef struct FOLDERSETTINGS {
    UINT ViewMode;
    UINT fFlags;
} FOLDERSETTINGS;

typedef FOLDERSETTINGS *LPFOLDERSETTINGS;
typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
typedef FOLDERSETTINGS *PFOLDERSETTINGS;

/*****************************************************************************
 * IFolderViewOptions interface
 */
#ifndef __IFolderViewOptions_INTERFACE_DEFINED__
#define __IFolderViewOptions_INTERFACE_DEFINED__

typedef enum FOLDERVIEWOPTIONS {
    FVO_DEFAULT = 0x0,
    FVO_VISTALAYOUT = 0x1,
    FVO_CUSTOMPOSITION = 0x2,
    FVO_CUSTOMORDERING = 0x4,
    FVO_SUPPORTHYPERLINKS = 0x8,
    FVO_NOANIMATIONS = 0x10,
    FVO_NOSCROLLTIPS = 0x20
} FOLDERVIEWOPTIONS;

DEFINE_ENUM_FLAG_OPERATORS(FOLDERVIEWOPTIONS)

DEFINE_GUID(IID_IFolderViewOptions, 0x3cc974d2, 0xb302, 0x4d36, 0xad,0x3e, 0x06,0xd9,0x3f,0x69,0x5d,0x3f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3cc974d2-b302-4d36-ad3e-06d93f695d3f")
IFolderViewOptions : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFolderViewOptions(
        FOLDERVIEWOPTIONS fvoMask,
        FOLDERVIEWOPTIONS fvoFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolderViewOptions(
        FOLDERVIEWOPTIONS *pfvoFlags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFolderViewOptions, 0x3cc974d2, 0xb302, 0x4d36, 0xad,0x3e, 0x06,0xd9,0x3f,0x69,0x5d,0x3f)
#endif
#else
typedef struct IFolderViewOptionsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFolderViewOptions methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFolderViewOptions)(
        IFolderViewOptions *This,
        FOLDERVIEWOPTIONS fvoMask,
        FOLDERVIEWOPTIONS fvoFlags);

    HRESULT (STDMETHODCALLTYPE *GetFolderViewOptions)(
        IFolderViewOptions *This,
        FOLDERVIEWOPTIONS *pfvoFlags);

    END_INTERFACE
} IFolderViewOptionsVtbl;

interface IFolderViewOptions {
    CONST_VTBL IFolderViewOptionsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFolderViewOptions_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFolderViewOptions_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFolderViewOptions_Release(This) (This)->lpVtbl->Release(This)
/*** IFolderViewOptions methods ***/
#define IFolderViewOptions_SetFolderViewOptions(This,fvoMask,fvoFlags) (This)->lpVtbl->SetFolderViewOptions(This,fvoMask,fvoFlags)
#define IFolderViewOptions_GetFolderViewOptions(This,pfvoFlags) (This)->lpVtbl->GetFolderViewOptions(This,pfvoFlags)
#else
/*** IUnknown methods ***/
static inline HRESULT IFolderViewOptions_QueryInterface(IFolderViewOptions* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFolderViewOptions_AddRef(IFolderViewOptions* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFolderViewOptions_Release(IFolderViewOptions* This) {
    return This->lpVtbl->Release(This);
}
/*** IFolderViewOptions methods ***/
static inline HRESULT IFolderViewOptions_SetFolderViewOptions(IFolderViewOptions* This,FOLDERVIEWOPTIONS fvoMask,FOLDERVIEWOPTIONS fvoFlags) {
    return This->lpVtbl->SetFolderViewOptions(This,fvoMask,fvoFlags);
}
static inline HRESULT IFolderViewOptions_GetFolderViewOptions(IFolderViewOptions* This,FOLDERVIEWOPTIONS *pfvoFlags) {
    return This->lpVtbl->GetFolderViewOptions(This,pfvoFlags);
}
#endif
#endif

#endif


#endif  /* __IFolderViewOptions_INTERFACE_DEFINED__ */

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   ((UINT)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;

DEFINE_ENUM_FLAG_OPERATORS(_SVGIO)

typedef int SVGIO;

typedef enum SVUIA_STATUS {
    SVUIA_DEACTIVATE = 0,
    SVUIA_ACTIVATE_NOFOCUS = 1,
    SVUIA_ACTIVATE_FOCUS = 2,
    SVUIA_INPLACEACTIVATE = 3
} SVUIA_STATUS;

#ifdef _FIX_ENABLEMODELESS_CONFLICT
#define EnableModeless EnableModelessSV
#endif

#if 0
typedef LPARAM LPFNSVADDPROPSHEETPAGE;
#else
#include <prsht.h>
typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;
#endif

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

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(
        WINBOOL fEnable) = 0;

    virtual HRESULT STDMETHODCALLTYPE UIActivate(
        UINT uState) = 0;

    virtual HRESULT STDMETHODCALLTYPE Refresh(
        ) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE DestroyViewWindow(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentInfo(
        LPFOLDERSETTINGS pfs) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE SaveViewState(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SelectItem(
        PCUITEMID_CHILD 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,
        WINBOOL fEnterMode);

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

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

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

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

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

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *SelectItem)(
        IShellView *This,
        PCUITEMID_CHILD 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,pfs,psb,prcView,phWnd) (This)->lpVtbl->CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd)
#define IShellView_DestroyViewWindow(This) (This)->lpVtbl->DestroyViewWindow(This)
#define IShellView_GetCurrentInfo(This,pfs) (This)->lpVtbl->GetCurrentInfo(This,pfs)
#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 inline HRESULT IShellView_QueryInterface(IShellView* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellView_AddRef(IShellView* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellView_Release(IShellView* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static inline HRESULT IShellView_GetWindow(IShellView* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static inline HRESULT IShellView_ContextSensitiveHelp(IShellView* This,WINBOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IShellView methods ***/
static inline HRESULT IShellView_TranslateAccelerator(IShellView* This,MSG *pmsg) {
    return This->lpVtbl->TranslateAccelerator(This,pmsg);
}
static inline HRESULT IShellView_EnableModeless(IShellView* This,WINBOOL fEnable) {
    return This->lpVtbl->EnableModeless(This,fEnable);
}
static inline HRESULT IShellView_UIActivate(IShellView* This,UINT uState) {
    return This->lpVtbl->UIActivate(This,uState);
}
static inline HRESULT IShellView_Refresh(IShellView* This) {
    return This->lpVtbl->Refresh(This);
}
static inline HRESULT IShellView_CreateViewWindow(IShellView* This,IShellView *psvPrevious,LPCFOLDERSETTINGS pfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd) {
    return This->lpVtbl->CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd);
}
static inline HRESULT IShellView_DestroyViewWindow(IShellView* This) {
    return This->lpVtbl->DestroyViewWindow(This);
}
static inline HRESULT IShellView_GetCurrentInfo(IShellView* This,LPFOLDERSETTINGS pfs) {
    return This->lpVtbl->GetCurrentInfo(This,pfs);
}
static inline HRESULT IShellView_AddPropertySheetPages(IShellView* This,DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam) {
    return This->lpVtbl->AddPropertySheetPages(This,dwReserved,pfn,lparam);
}
static inline HRESULT IShellView_SaveViewState(IShellView* This) {
    return This->lpVtbl->SaveViewState(This);
}
static inline HRESULT IShellView_SelectItem(IShellView* This,PCUITEMID_CHILD pidlItem,SVSIF uFlags) {
    return This->lpVtbl->SelectItem(This,pidlItem,uFlags);
}
static inline 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__ */

typedef IShellView *LPSHELLVIEW;

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

typedef GUID SHELLVIEWID;

#define SV2GV_CURRENTVIEW ((UINT)-1)
#define SV2GV_DEFAULTVIEW ((UINT)-2)

#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 *pvid,
        ULONG uView) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateViewWindow2(
        LPSV2CVW2_PARAMS lpParams) = 0;

    virtual HRESULT STDMETHODCALLTYPE HandleRename(
        PCUITEMID_CHILD pidlNew) = 0;

    virtual HRESULT STDMETHODCALLTYPE SelectAndPositionItem(
        PCUITEMID_CHILD pidlItem,
        UINT uFlags,
        POINT *ppt) = 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,
        WINBOOL fEnterMode);

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

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

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

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

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

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

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

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

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

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

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

    /*** IShellView2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetView)(
        IShellView2 *This,
        SHELLVIEWID *pvid,
        ULONG uView);

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

    HRESULT (STDMETHODCALLTYPE *HandleRename)(
        IShellView2 *This,
        PCUITEMID_CHILD pidlNew);

    HRESULT (STDMETHODCALLTYPE *SelectAndPositionItem)(
        IShellView2 *This,
        PCUITEMID_CHILD pidlItem,
        UINT uFlags,
        POINT *ppt);

    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,pfs,psb,prcView,phWnd) (This)->lpVtbl->CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd)
#define IShellView2_DestroyViewWindow(This) (This)->lpVtbl->DestroyViewWindow(This)
#define IShellView2_GetCurrentInfo(This,pfs) (This)->lpVtbl->GetCurrentInfo(This,pfs)
#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,pvid,uView) (This)->lpVtbl->GetView(This,pvid,uView)
#define IShellView2_CreateViewWindow2(This,lpParams) (This)->lpVtbl->CreateViewWindow2(This,lpParams)
#define IShellView2_HandleRename(This,pidlNew) (This)->lpVtbl->HandleRename(This,pidlNew)
#define IShellView2_SelectAndPositionItem(This,pidlItem,uFlags,ppt) (This)->lpVtbl->SelectAndPositionItem(This,pidlItem,uFlags,ppt)
#else
/*** IUnknown methods ***/
static inline HRESULT IShellView2_QueryInterface(IShellView2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellView2_AddRef(IShellView2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellView2_Release(IShellView2* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static inline HRESULT IShellView2_GetWindow(IShellView2* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static inline HRESULT IShellView2_ContextSensitiveHelp(IShellView2* This,WINBOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IShellView methods ***/
static inline HRESULT IShellView2_TranslateAccelerator(IShellView2* This,MSG *pmsg) {
    return This->lpVtbl->TranslateAccelerator(This,pmsg);
}
static inline HRESULT IShellView2_EnableModeless(IShellView2* This,WINBOOL fEnable) {
    return This->lpVtbl->EnableModeless(This,fEnable);
}
static inline HRESULT IShellView2_UIActivate(IShellView2* This,UINT uState) {
    return This->lpVtbl->UIActivate(This,uState);
}
static inline HRESULT IShellView2_Refresh(IShellView2* This) {
    return This->lpVtbl->Refresh(This);
}
static inline HRESULT IShellView2_CreateViewWindow(IShellView2* This,IShellView *psvPrevious,LPCFOLDERSETTINGS pfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd) {
    return This->lpVtbl->CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd);
}
static inline HRESULT IShellView2_DestroyViewWindow(IShellView2* This) {
    return This->lpVtbl->DestroyViewWindow(This);
}
static inline HRESULT IShellView2_GetCurrentInfo(IShellView2* This,LPFOLDERSETTINGS pfs) {
    return This->lpVtbl->GetCurrentInfo(This,pfs);
}
static inline HRESULT IShellView2_AddPropertySheetPages(IShellView2* This,DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam) {
    return This->lpVtbl->AddPropertySheetPages(This,dwReserved,pfn,lparam);
}
static inline HRESULT IShellView2_SaveViewState(IShellView2* This) {
    return This->lpVtbl->SaveViewState(This);
}
static inline HRESULT IShellView2_SelectItem(IShellView2* This,PCUITEMID_CHILD pidlItem,SVSIF uFlags) {
    return This->lpVtbl->SelectItem(This,pidlItem,uFlags);
}
static inline HRESULT IShellView2_GetItemObject(IShellView2* This,UINT uItem,REFIID riid,void **ppv) {
    return This->lpVtbl->GetItemObject(This,uItem,riid,ppv);
}
/*** IShellView2 methods ***/
static inline HRESULT IShellView2_GetView(IShellView2* This,SHELLVIEWID *pvid,ULONG uView) {
    return This->lpVtbl->GetView(This,pvid,uView);
}
static inline HRESULT IShellView2_CreateViewWindow2(IShellView2* This,LPSV2CVW2_PARAMS lpParams) {
    return This->lpVtbl->CreateViewWindow2(This,lpParams);
}
static inline HRESULT IShellView2_HandleRename(IShellView2* This,PCUITEMID_CHILD pidlNew) {
    return This->lpVtbl->HandleRename(This,pidlNew);
}
static inline HRESULT IShellView2_SelectAndPositionItem(IShellView2* This,PCUITEMID_CHILD pidlItem,UINT uFlags,POINT *ppt) {
    return This->lpVtbl->SelectAndPositionItem(This,pidlItem,uFlags,ppt);
}
#endif
#endif

#endif


#endif  /* __IShellView2_INTERFACE_DEFINED__ */


#if NTDDI_VERSION >= NTDDI_VISTA
/*****************************************************************************
 * 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 *psbOwner,
        IShellView *psvPrev,
        SV3CVW3_FLAGS dwViewFlags,
        FOLDERFLAGS dwMask,
        FOLDERFLAGS dwFlags,
        FOLDERVIEWMODE fvMode,
        const SHELLVIEWID *pvid,
        const RECT *prcView,
        HWND *phwndView) = 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,
        WINBOOL fEnterMode);

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

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

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

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

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

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

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

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

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

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

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

    /*** IShellView2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetView)(
        IShellView3 *This,
        SHELLVIEWID *pvid,
        ULONG uView);

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

    HRESULT (STDMETHODCALLTYPE *HandleRename)(
        IShellView3 *This,
        PCUITEMID_CHILD pidlNew);

    HRESULT (STDMETHODCALLTYPE *SelectAndPositionItem)(
        IShellView3 *This,
        PCUITEMID_CHILD pidlItem,
        UINT uFlags,
        POINT *ppt);

    /*** IShellView3 methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateViewWindow3)(
        IShellView3 *This,
        IShellBrowser *psbOwner,
        IShellView *psvPrev,
        SV3CVW3_FLAGS dwViewFlags,
        FOLDERFLAGS dwMask,
        FOLDERFLAGS dwFlags,
        FOLDERVIEWMODE fvMode,
        const SHELLVIEWID *pvid,
        const RECT *prcView,
        HWND *phwndView);

    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,pfs,psb,prcView,phWnd) (This)->lpVtbl->CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd)
#define IShellView3_DestroyViewWindow(This) (This)->lpVtbl->DestroyViewWindow(This)
#define IShellView3_GetCurrentInfo(This,pfs) (This)->lpVtbl->GetCurrentInfo(This,pfs)
#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,pvid,uView) (This)->lpVtbl->GetView(This,pvid,uView)
#define IShellView3_CreateViewWindow2(This,lpParams) (This)->lpVtbl->CreateViewWindow2(This,lpParams)
#define IShellView3_HandleRename(This,pidlNew) (This)->lpVtbl->HandleRename(This,pidlNew)
#define IShellView3_SelectAndPositionItem(This,pidlItem,uFlags,ppt) (This)->lpVtbl->SelectAndPositionItem(This,pidlItem,uFlags,ppt)
/*** IShellView3 methods ***/
#define IShellView3_CreateViewWindow3(This,psbOwner,psvPrev,dwViewFlags,dwMask,dwFlags,fvMode,pvid,prcView,phwndView) (This)->lpVtbl->CreateViewWindow3(This,psbOwner,psvPrev,dwViewFlags,dwMask,dwFlags,fvMode,pvid,prcView,phwndView)
#else
/*** IUnknown methods ***/
static inline HRESULT IShellView3_QueryInterface(IShellView3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellView3_AddRef(IShellView3* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellView3_Release(IShellView3* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static inline HRESULT IShellView3_GetWindow(IShellView3* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static inline HRESULT IShellView3_ContextSensitiveHelp(IShellView3* This,WINBOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IShellView methods ***/
static inline HRESULT IShellView3_TranslateAccelerator(IShellView3* This,MSG *pmsg) {
    return This->lpVtbl->TranslateAccelerator(This,pmsg);
}
static inline HRESULT IShellView3_EnableModeless(IShellView3* This,WINBOOL fEnable) {
    return This->lpVtbl->EnableModeless(This,fEnable);
}
static inline HRESULT IShellView3_UIActivate(IShellView3* This,UINT uState) {
    return This->lpVtbl->UIActivate(This,uState);
}
static inline HRESULT IShellView3_Refresh(IShellView3* This) {
    return This->lpVtbl->Refresh(This);
}
static inline HRESULT IShellView3_CreateViewWindow(IShellView3* This,IShellView *psvPrevious,LPCFOLDERSETTINGS pfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd) {
    return This->lpVtbl->CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd);
}
static inline HRESULT IShellView3_DestroyViewWindow(IShellView3* This) {
    return This->lpVtbl->DestroyViewWindow(This);
}
static inline HRESULT IShellView3_GetCurrentInfo(IShellView3* This,LPFOLDERSETTINGS pfs) {
    return This->lpVtbl->GetCurrentInfo(This,pfs);
}
static inline HRESULT IShellView3_AddPropertySheetPages(IShellView3* This,DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam) {
    return This->lpVtbl->AddPropertySheetPages(This,dwReserved,pfn,lparam);
}
static inline HRESULT IShellView3_SaveViewState(IShellView3* This) {
    return This->lpVtbl->SaveViewState(This);
}
static inline HRESULT IShellView3_SelectItem(IShellView3* This,PCUITEMID_CHILD pidlItem,SVSIF uFlags) {
    return This->lpVtbl->SelectItem(This,pidlItem,uFlags);
}
static inline HRESULT IShellView3_GetItemObject(IShellView3* This,UINT uItem,REFIID riid,void **ppv) {
    return This->lpVtbl->GetItemObject(This,uItem,riid,ppv);
}
/*** IShellView2 methods ***/
static inline HRESULT IShellView3_GetView(IShellView3* This,SHELLVIEWID *pvid,ULONG uView) {
    return This->lpVtbl->GetView(This,pvid,uView);
}
static inline HRESULT IShellView3_CreateViewWindow2(IShellView3* This,LPSV2CVW2_PARAMS lpParams) {
    return This->lpVtbl->CreateViewWindow2(This,lpParams);
}
static inline HRESULT IShellView3_HandleRename(IShellView3* This,PCUITEMID_CHILD pidlNew) {
    return This->lpVtbl->HandleRename(This,pidlNew);
}
static inline HRESULT IShellView3_SelectAndPositionItem(IShellView3* This,PCUITEMID_CHILD pidlItem,UINT uFlags,POINT *ppt) {
    return This->lpVtbl->SelectAndPositionItem(This,pidlItem,uFlags,ppt);
}
/*** IShellView3 methods ***/
static inline HRESULT IShellView3_CreateViewWindow3(IShellView3* This,IShellBrowser *psbOwner,IShellView *psvPrev,SV3CVW3_FLAGS dwViewFlags,FOLDERFLAGS dwMask,FOLDERFLAGS dwFlags,FOLDERVIEWMODE fvMode,const SHELLVIEWID *pvid,const RECT *prcView,HWND *phwndView) {
    return This->lpVtbl->CreateViewWindow3(This,psbOwner,psvPrev,dwViewFlags,dwMask,dwFlags,fvMode,pvid,prcView,phwndView);
}
#endif
#endif

#endif


#endif  /* __IShellView3_INTERFACE_DEFINED__ */

#endif
#ifdef _FIX_ENABLEMODELESS_CONFLICT
#undef EnableModeless
#endif

/*****************************************************************************
 * 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 *pViewMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCurrentViewMode(
        UINT ViewMode) = 0;

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

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

    virtual HRESULT STDMETHODCALLTYPE ItemCount(
        UINT uFlags,
        int *pcItems) = 0;

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

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

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

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

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

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

    virtual HRESULT STDMETHODCALLTYPE GetAutoArrange(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SelectItem(
        int iItem,
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SelectAndPositionItems(
        UINT cidl,
        PCUITEMID_CHILD_ARRAY apidl,
        POINT *apt,
        DWORD dwFlags) = 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 *pViewMode);

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

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

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

    HRESULT (STDMETHODCALLTYPE *ItemCount)(
        IFolderView *This,
        UINT uFlags,
        int *pcItems);

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

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

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

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *SelectItem)(
        IFolderView *This,
        int iItem,
        DWORD dwFlags);

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

    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,pViewMode) (This)->lpVtbl->GetCurrentViewMode(This,pViewMode)
#define IFolderView_SetCurrentViewMode(This,ViewMode) (This)->lpVtbl->SetCurrentViewMode(This,ViewMode)
#define IFolderView_GetFolder(This,riid,ppv) (This)->lpVtbl->GetFolder(This,riid,ppv)
#define IFolderView_Item(This,iItemIndex,ppidl) (This)->lpVtbl->Item(This,iItemIndex,ppidl)
#define IFolderView_ItemCount(This,uFlags,pcItems) (This)->lpVtbl->ItemCount(This,uFlags,pcItems)
#define IFolderView_Items(This,uFlags,riid,ppv) (This)->lpVtbl->Items(This,uFlags,riid,ppv)
#define IFolderView_GetSelectionMarkedItem(This,piItem) (This)->lpVtbl->GetSelectionMarkedItem(This,piItem)
#define IFolderView_GetFocusedItem(This,piItem) (This)->lpVtbl->GetFocusedItem(This,piItem)
#define IFolderView_GetItemPosition(This,pidl,ppt) (This)->lpVtbl->GetItemPosition(This,pidl,ppt)
#define IFolderView_GetSpacing(This,ppt) (This)->lpVtbl->GetSpacing(This,ppt)
#define IFolderView_GetDefaultSpacing(This,ppt) (This)->lpVtbl->GetDefaultSpacing(This,ppt)
#define IFolderView_GetAutoArrange(This) (This)->lpVtbl->GetAutoArrange(This)
#define IFolderView_SelectItem(This,iItem,dwFlags) (This)->lpVtbl->SelectItem(This,iItem,dwFlags)
#define IFolderView_SelectAndPositionItems(This,cidl,apidl,apt,dwFlags) (This)->lpVtbl->SelectAndPositionItems(This,cidl,apidl,apt,dwFlags)
#else
/*** IUnknown methods ***/
static inline HRESULT IFolderView_QueryInterface(IFolderView* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFolderView_AddRef(IFolderView* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFolderView_Release(IFolderView* This) {
    return This->lpVtbl->Release(This);
}
/*** IFolderView methods ***/
static inline HRESULT IFolderView_GetCurrentViewMode(IFolderView* This,UINT *pViewMode) {
    return This->lpVtbl->GetCurrentViewMode(This,pViewMode);
}
static inline HRESULT IFolderView_SetCurrentViewMode(IFolderView* This,UINT ViewMode) {
    return This->lpVtbl->SetCurrentViewMode(This,ViewMode);
}
static inline HRESULT IFolderView_GetFolder(IFolderView* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetFolder(This,riid,ppv);
}
static inline HRESULT IFolderView_Item(IFolderView* This,int iItemIndex,PITEMID_CHILD *ppidl) {
    return This->lpVtbl->Item(This,iItemIndex,ppidl);
}
static inline HRESULT IFolderView_ItemCount(IFolderView* This,UINT uFlags,int *pcItems) {
    return This->lpVtbl->ItemCount(This,uFlags,pcItems);
}
static inline HRESULT IFolderView_Items(IFolderView* This,UINT uFlags,REFIID riid,void **ppv) {
    return This->lpVtbl->Items(This,uFlags,riid,ppv);
}
static inline HRESULT IFolderView_GetSelectionMarkedItem(IFolderView* This,int *piItem) {
    return This->lpVtbl->GetSelectionMarkedItem(This,piItem);
}
static inline HRESULT IFolderView_GetFocusedItem(IFolderView* This,int *piItem) {
    return This->lpVtbl->GetFocusedItem(This,piItem);
}
static inline HRESULT IFolderView_GetItemPosition(IFolderView* This,PCUITEMID_CHILD pidl,POINT *ppt) {
    return This->lpVtbl->GetItemPosition(This,pidl,ppt);
}
static inline HRESULT IFolderView_GetSpacing(IFolderView* This,POINT *ppt) {
    return This->lpVtbl->GetSpacing(This,ppt);
}
static inline HRESULT IFolderView_GetDefaultSpacing(IFolderView* This,POINT *ppt) {
    return This->lpVtbl->GetDefaultSpacing(This,ppt);
}
static inline HRESULT IFolderView_GetAutoArrange(IFolderView* This) {
    return This->lpVtbl->GetAutoArrange(This);
}
static inline HRESULT IFolderView_SelectItem(IFolderView* This,int iItem,DWORD dwFlags) {
    return This->lpVtbl->SelectItem(This,iItem,dwFlags);
}
static inline HRESULT IFolderView_SelectAndPositionItems(IFolderView* This,UINT cidl,PCUITEMID_CHILD_ARRAY apidl,POINT *apt,DWORD dwFlags) {
    return This->lpVtbl->SelectAndPositionItems(This,cidl,apidl,apt,dwFlags);
}
#endif
#endif

#endif


#endif  /* __IFolderView_INTERFACE_DEFINED__ */


#define SID_SFolderView IID_IFolderView

#if NTDDI_VERSION >= NTDDI_WIN7
/*****************************************************************************
 * ISearchBoxInfo interface
 */
#ifndef __ISearchBoxInfo_INTERFACE_DEFINED__
#define __ISearchBoxInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISearchBoxInfo, 0x6af6e03f, 0xd664, 0x4ef4, 0x96,0x26, 0xf7,0xe0,0xed,0x36,0x75,0x5e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6af6e03f-d664-4ef4-9626-f7e0ed36755e")
ISearchBoxInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCondition(
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetText(
        LPWSTR *ppsz) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISearchBoxInfo, 0x6af6e03f, 0xd664, 0x4ef4, 0x96,0x26, 0xf7,0xe0,0xed,0x36,0x75,0x5e)
#endif
#else
typedef struct ISearchBoxInfoVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ISearchBoxInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCondition)(
        ISearchBoxInfo *This,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetText)(
        ISearchBoxInfo *This,
        LPWSTR *ppsz);

    END_INTERFACE
} ISearchBoxInfoVtbl;

interface ISearchBoxInfo {
    CONST_VTBL ISearchBoxInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISearchBoxInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISearchBoxInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISearchBoxInfo_Release(This) (This)->lpVtbl->Release(This)
/*** ISearchBoxInfo methods ***/
#define ISearchBoxInfo_GetCondition(This,riid,ppv) (This)->lpVtbl->GetCondition(This,riid,ppv)
#define ISearchBoxInfo_GetText(This,ppsz) (This)->lpVtbl->GetText(This,ppsz)
#else
/*** IUnknown methods ***/
static inline HRESULT ISearchBoxInfo_QueryInterface(ISearchBoxInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISearchBoxInfo_AddRef(ISearchBoxInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISearchBoxInfo_Release(ISearchBoxInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** ISearchBoxInfo methods ***/
static inline HRESULT ISearchBoxInfo_GetCondition(ISearchBoxInfo* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetCondition(This,riid,ppv);
}
static inline HRESULT ISearchBoxInfo_GetText(ISearchBoxInfo* This,LPWSTR *ppsz) {
    return This->lpVtbl->GetText(This,ppsz);
}
#endif
#endif

#endif


#endif  /* __ISearchBoxInfo_INTERFACE_DEFINED__ */

#endif

#if NTDDI_VERSION >= NTDDI_VISTA || _WIN32_IE >= _WIN32_IE_IE70
#ifndef NO_SHOBJIDL_SORTDIRECTION
enum tagSORTDIRECTION {
    SORT_DESCENDING = -1,
    SORT_ASCENDING = 1
};
#endif

typedef int SORTDIRECTION;

typedef struct SORTCOLUMN {
    PROPERTYKEY propkey;
    SORTDIRECTION direction;
} SORTCOLUMN;

typedef enum FVTEXTTYPE {
    FVST_EMPTYTEXT = 0
} FVTEXTTYPE;

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


typedef HRESULT DEPRECATED_HRESULT;

#ifdef __cplusplus
#define DEPRECATED_HRESULT HRESULT
#endif

/*****************************************************************************
 * 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,
        WINBOOL fAscending) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGroupBy(
        PROPERTYKEY *pkey,
        WINBOOL *pfAscending) = 0;

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

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

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

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

    virtual HRESULT STDMETHODCALLTYPE SetText(
        FVTEXTTYPE iType,
        LPCWSTR pwszText) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCurrentFolderFlags(
        DWORD dwMask,
        DWORD dwFlags) = 0;

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

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

    virtual HRESULT STDMETHODCALLTYPE SetSortColumns(
        const SORTCOLUMN *rgSortColumns,
        int cColumns) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSortColumns(
        SORTCOLUMN *rgSortColumns,
        int cColumns) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE GetVisibleItem(
        int iStart,
        WINBOOL fPrevious,
        int *piItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSelectedItem(
        int iStart,
        int *piItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSelection(
        WINBOOL fNoneImpliesFolder,
        IShellItemArray **ppsia) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE InvokeVerbOnSelection(
        LPCSTR pszVerb) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetViewModeAndIconSize(
        FOLDERVIEWMODE uViewMode,
        int iImageSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetViewModeAndIconSize(
        FOLDERVIEWMODE *puViewMode,
        int *piImageSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetGroupSubsetCount(
        UINT cVisibleRows) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE SetRedraw(
        WINBOOL fRedrawOn) = 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 *pViewMode);

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

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

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

    HRESULT (STDMETHODCALLTYPE *ItemCount)(
        IFolderView2 *This,
        UINT uFlags,
        int *pcItems);

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

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

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

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *SelectItem)(
        IFolderView2 *This,
        int iItem,
        DWORD dwFlags);

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

    /*** IFolderView2 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetGroupBy)(
        IFolderView2 *This,
        REFPROPERTYKEY key,
        WINBOOL fAscending);

    HRESULT (STDMETHODCALLTYPE *GetGroupBy)(
        IFolderView2 *This,
        PROPERTYKEY *pkey,
        WINBOOL *pfAscending);

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *SetText)(
        IFolderView2 *This,
        FVTEXTTYPE iType,
        LPCWSTR pwszText);

    HRESULT (STDMETHODCALLTYPE *SetCurrentFolderFlags)(
        IFolderView2 *This,
        DWORD dwMask,
        DWORD dwFlags);

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

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

    HRESULT (STDMETHODCALLTYPE *SetSortColumns)(
        IFolderView2 *This,
        const SORTCOLUMN *rgSortColumns,
        int cColumns);

    HRESULT (STDMETHODCALLTYPE *GetSortColumns)(
        IFolderView2 *This,
        SORTCOLUMN *rgSortColumns,
        int cColumns);

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

    HRESULT (STDMETHODCALLTYPE *GetVisibleItem)(
        IFolderView2 *This,
        int iStart,
        WINBOOL fPrevious,
        int *piItem);

    HRESULT (STDMETHODCALLTYPE *GetSelectedItem)(
        IFolderView2 *This,
        int iStart,
        int *piItem);

    HRESULT (STDMETHODCALLTYPE *GetSelection)(
        IFolderView2 *This,
        WINBOOL fNoneImpliesFolder,
        IShellItemArray **ppsia);

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

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

    HRESULT (STDMETHODCALLTYPE *SetViewModeAndIconSize)(
        IFolderView2 *This,
        FOLDERVIEWMODE uViewMode,
        int iImageSize);

    HRESULT (STDMETHODCALLTYPE *GetViewModeAndIconSize)(
        IFolderView2 *This,
        FOLDERVIEWMODE *puViewMode,
        int *piImageSize);

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

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

    HRESULT (STDMETHODCALLTYPE *SetRedraw)(
        IFolderView2 *This,
        WINBOOL fRedrawOn);

    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,pViewMode) (This)->lpVtbl->GetCurrentViewMode(This,pViewMode)
#define IFolderView2_SetCurrentViewMode(This,ViewMode) (This)->lpVtbl->SetCurrentViewMode(This,ViewMode)
#define IFolderView2_GetFolder(This,riid,ppv) (This)->lpVtbl->GetFolder(This,riid,ppv)
#define IFolderView2_Item(This,iItemIndex,ppidl) (This)->lpVtbl->Item(This,iItemIndex,ppidl)
#define IFolderView2_ItemCount(This,uFlags,pcItems) (This)->lpVtbl->ItemCount(This,uFlags,pcItems)
#define IFolderView2_Items(This,uFlags,riid,ppv) (This)->lpVtbl->Items(This,uFlags,riid,ppv)
#define IFolderView2_GetSelectionMarkedItem(This,piItem) (This)->lpVtbl->GetSelectionMarkedItem(This,piItem)
#define IFolderView2_GetFocusedItem(This,piItem) (This)->lpVtbl->GetFocusedItem(This,piItem)
#define IFolderView2_GetItemPosition(This,pidl,ppt) (This)->lpVtbl->GetItemPosition(This,pidl,ppt)
#define IFolderView2_GetSpacing(This,ppt) (This)->lpVtbl->GetSpacing(This,ppt)
#define IFolderView2_GetDefaultSpacing(This,ppt) (This)->lpVtbl->GetDefaultSpacing(This,ppt)
#define IFolderView2_GetAutoArrange(This) (This)->lpVtbl->GetAutoArrange(This)
#define IFolderView2_SelectItem(This,iItem,dwFlags) (This)->lpVtbl->SelectItem(This,iItem,dwFlags)
#define IFolderView2_SelectAndPositionItems(This,cidl,apidl,apt,dwFlags) (This)->lpVtbl->SelectAndPositionItems(This,cidl,apidl,apt,dwFlags)
/*** IFolderView2 methods ***/
#define IFolderView2_SetGroupBy(This,key,fAscending) (This)->lpVtbl->SetGroupBy(This,key,fAscending)
#define IFolderView2_GetGroupBy(This,pkey,pfAscending) (This)->lpVtbl->GetGroupBy(This,pkey,pfAscending)
#define IFolderView2_SetViewProperty(This,pidl,propkey,propvar) (This)->lpVtbl->SetViewProperty(This,pidl,propkey,propvar)
#define IFolderView2_GetViewProperty(This,pidl,propkey,ppropvar) (This)->lpVtbl->GetViewProperty(This,pidl,propkey,ppropvar)
#define IFolderView2_SetTileViewProperties(This,pidl,pszPropList) (This)->lpVtbl->SetTileViewProperties(This,pidl,pszPropList)
#define IFolderView2_SetExtendedTileViewProperties(This,pidl,pszPropList) (This)->lpVtbl->SetExtendedTileViewProperties(This,pidl,pszPropList)
#define IFolderView2_SetText(This,iType,pwszText) (This)->lpVtbl->SetText(This,iType,pwszText)
#define IFolderView2_SetCurrentFolderFlags(This,dwMask,dwFlags) (This)->lpVtbl->SetCurrentFolderFlags(This,dwMask,dwFlags)
#define IFolderView2_GetCurrentFolderFlags(This,pdwFlags) (This)->lpVtbl->GetCurrentFolderFlags(This,pdwFlags)
#define IFolderView2_GetSortColumnCount(This,pcColumns) (This)->lpVtbl->GetSortColumnCount(This,pcColumns)
#define IFolderView2_SetSortColumns(This,rgSortColumns,cColumns) (This)->lpVtbl->SetSortColumns(This,rgSortColumns,cColumns)
#define IFolderView2_GetSortColumns(This,rgSortColumns,cColumns) (This)->lpVtbl->GetSortColumns(This,rgSortColumns,cColumns)
#define IFolderView2_GetItem(This,iItem,riid,ppv) (This)->lpVtbl->GetItem(This,iItem,riid,ppv)
#define IFolderView2_GetVisibleItem(This,iStart,fPrevious,piItem) (This)->lpVtbl->GetVisibleItem(This,iStart,fPrevious,piItem)
#define IFolderView2_GetSelectedItem(This,iStart,piItem) (This)->lpVtbl->GetSelectedItem(This,iStart,piItem)
#define IFolderView2_GetSelection(This,fNoneImpliesFolder,ppsia) (This)->lpVtbl->GetSelection(This,fNoneImpliesFolder,ppsia)
#define IFolderView2_GetSelectionState(This,pidl,pdwFlags) (This)->lpVtbl->GetSelectionState(This,pidl,pdwFlags)
#define IFolderView2_InvokeVerbOnSelection(This,pszVerb) (This)->lpVtbl->InvokeVerbOnSelection(This,pszVerb)
#define IFolderView2_SetViewModeAndIconSize(This,uViewMode,iImageSize) (This)->lpVtbl->SetViewModeAndIconSize(This,uViewMode,iImageSize)
#define IFolderView2_GetViewModeAndIconSize(This,puViewMode,piImageSize) (This)->lpVtbl->GetViewModeAndIconSize(This,puViewMode,piImageSize)
#define IFolderView2_SetGroupSubsetCount(This,cVisibleRows) (This)->lpVtbl->SetGroupSubsetCount(This,cVisibleRows)
#define IFolderView2_GetGroupSubsetCount(This,pcVisibleRows) (This)->lpVtbl->GetGroupSubsetCount(This,pcVisibleRows)
#define IFolderView2_SetRedraw(This,fRedrawOn) (This)->lpVtbl->SetRedraw(This,fRedrawOn)
#define IFolderView2_IsMoveInSameFolder(This) (This)->lpVtbl->IsMoveInSameFolder(This)
#define IFolderView2_DoRename(This) (This)->lpVtbl->DoRename(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IFolderView2_QueryInterface(IFolderView2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFolderView2_AddRef(IFolderView2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFolderView2_Release(IFolderView2* This) {
    return This->lpVtbl->Release(This);
}
/*** IFolderView methods ***/
static inline HRESULT IFolderView2_GetCurrentViewMode(IFolderView2* This,UINT *pViewMode) {
    return This->lpVtbl->GetCurrentViewMode(This,pViewMode);
}
static inline HRESULT IFolderView2_SetCurrentViewMode(IFolderView2* This,UINT ViewMode) {
    return This->lpVtbl->SetCurrentViewMode(This,ViewMode);
}
static inline HRESULT IFolderView2_GetFolder(IFolderView2* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetFolder(This,riid,ppv);
}
static inline HRESULT IFolderView2_Item(IFolderView2* This,int iItemIndex,PITEMID_CHILD *ppidl) {
    return This->lpVtbl->Item(This,iItemIndex,ppidl);
}
static inline HRESULT IFolderView2_ItemCount(IFolderView2* This,UINT uFlags,int *pcItems) {
    return This->lpVtbl->ItemCount(This,uFlags,pcItems);
}
static inline HRESULT IFolderView2_Items(IFolderView2* This,UINT uFlags,REFIID riid,void **ppv) {
    return This->lpVtbl->Items(This,uFlags,riid,ppv);
}
static inline HRESULT IFolderView2_GetSelectionMarkedItem(IFolderView2* This,int *piItem) {
    return This->lpVtbl->GetSelectionMarkedItem(This,piItem);
}
static inline HRESULT IFolderView2_GetFocusedItem(IFolderView2* This,int *piItem) {
    return This->lpVtbl->GetFocusedItem(This,piItem);
}
static inline HRESULT IFolderView2_GetItemPosition(IFolderView2* This,PCUITEMID_CHILD pidl,POINT *ppt) {
    return This->lpVtbl->GetItemPosition(This,pidl,ppt);
}
static inline HRESULT IFolderView2_GetSpacing(IFolderView2* This,POINT *ppt) {
    return This->lpVtbl->GetSpacing(This,ppt);
}
static inline HRESULT IFolderView2_GetDefaultSpacing(IFolderView2* This,POINT *ppt) {
    return This->lpVtbl->GetDefaultSpacing(This,ppt);
}
static inline HRESULT IFolderView2_GetAutoArrange(IFolderView2* This) {
    return This->lpVtbl->GetAutoArrange(This);
}
static inline HRESULT IFolderView2_SelectItem(IFolderView2* This,int iItem,DWORD dwFlags) {
    return This->lpVtbl->SelectItem(This,iItem,dwFlags);
}
static inline HRESULT IFolderView2_SelectAndPositionItems(IFolderView2* This,UINT cidl,PCUITEMID_CHILD_ARRAY apidl,POINT *apt,DWORD dwFlags) {
    return This->lpVtbl->SelectAndPositionItems(This,cidl,apidl,apt,dwFlags);
}
/*** IFolderView2 methods ***/
static inline HRESULT IFolderView2_SetGroupBy(IFolderView2* This,REFPROPERTYKEY key,WINBOOL fAscending) {
    return This->lpVtbl->SetGroupBy(This,key,fAscending);
}
static inline HRESULT IFolderView2_GetGroupBy(IFolderView2* This,PROPERTYKEY *pkey,WINBOOL *pfAscending) {
    return This->lpVtbl->GetGroupBy(This,pkey,pfAscending);
}
static inline HRESULT IFolderView2_SetViewProperty(IFolderView2* This,PCUITEMID_CHILD pidl,REFPROPERTYKEY propkey,REFPROPVARIANT propvar) {
    return This->lpVtbl->SetViewProperty(This,pidl,propkey,propvar);
}
static inline HRESULT IFolderView2_GetViewProperty(IFolderView2* This,PCUITEMID_CHILD pidl,REFPROPERTYKEY propkey,PROPVARIANT *ppropvar) {
    return This->lpVtbl->GetViewProperty(This,pidl,propkey,ppropvar);
}
static inline HRESULT IFolderView2_SetTileViewProperties(IFolderView2* This,PCUITEMID_CHILD pidl,LPCWSTR pszPropList) {
    return This->lpVtbl->SetTileViewProperties(This,pidl,pszPropList);
}
static inline HRESULT IFolderView2_SetExtendedTileViewProperties(IFolderView2* This,PCUITEMID_CHILD pidl,LPCWSTR pszPropList) {
    return This->lpVtbl->SetExtendedTileViewProperties(This,pidl,pszPropList);
}
static inline HRESULT IFolderView2_SetText(IFolderView2* This,FVTEXTTYPE iType,LPCWSTR pwszText) {
    return This->lpVtbl->SetText(This,iType,pwszText);
}
static inline HRESULT IFolderView2_SetCurrentFolderFlags(IFolderView2* This,DWORD dwMask,DWORD dwFlags) {
    return This->lpVtbl->SetCurrentFolderFlags(This,dwMask,dwFlags);
}
static inline HRESULT IFolderView2_GetCurrentFolderFlags(IFolderView2* This,DWORD *pdwFlags) {
    return This->lpVtbl->GetCurrentFolderFlags(This,pdwFlags);
}
static inline HRESULT IFolderView2_GetSortColumnCount(IFolderView2* This,int *pcColumns) {
    return This->lpVtbl->GetSortColumnCount(This,pcColumns);
}
static inline HRESULT IFolderView2_SetSortColumns(IFolderView2* This,const SORTCOLUMN *rgSortColumns,int cColumns) {
    return This->lpVtbl->SetSortColumns(This,rgSortColumns,cColumns);
}
static inline HRESULT IFolderView2_GetSortColumns(IFolderView2* This,SORTCOLUMN *rgSortColumns,int cColumns) {
    return This->lpVtbl->GetSortColumns(This,rgSortColumns,cColumns);
}
static inline HRESULT IFolderView2_GetItem(IFolderView2* This,int iItem,REFIID riid,void **ppv) {
    return This->lpVtbl->GetItem(This,iItem,riid,ppv);
}
static inline HRESULT IFolderView2_GetVisibleItem(IFolderView2* This,int iStart,WINBOOL fPrevious,int *piItem) {
    return This->lpVtbl->GetVisibleItem(This,iStart,fPrevious,piItem);
}
static inline HRESULT IFolderView2_GetSelectedItem(IFolderView2* This,int iStart,int *piItem) {
    return This->lpVtbl->GetSelectedItem(This,iStart,piItem);
}
static inline HRESULT IFolderView2_GetSelection(IFolderView2* This,WINBOOL fNoneImpliesFolder,IShellItemArray **ppsia) {
    return This->lpVtbl->GetSelection(This,fNoneImpliesFolder,ppsia);
}
static inline HRESULT IFolderView2_GetSelectionState(IFolderView2* This,PCUITEMID_CHILD pidl,DWORD *pdwFlags) {
    return This->lpVtbl->GetSelectionState(This,pidl,pdwFlags);
}
static inline HRESULT IFolderView2_InvokeVerbOnSelection(IFolderView2* This,LPCSTR pszVerb) {
    return This->lpVtbl->InvokeVerbOnSelection(This,pszVerb);
}
static inline HRESULT IFolderView2_SetViewModeAndIconSize(IFolderView2* This,FOLDERVIEWMODE uViewMode,int iImageSize) {
    return This->lpVtbl->SetViewModeAndIconSize(This,uViewMode,iImageSize);
}
static inline HRESULT IFolderView2_GetViewModeAndIconSize(IFolderView2* This,FOLDERVIEWMODE *puViewMode,int *piImageSize) {
    return This->lpVtbl->GetViewModeAndIconSize(This,puViewMode,piImageSize);
}
static inline HRESULT IFolderView2_SetGroupSubsetCount(IFolderView2* This,UINT cVisibleRows) {
    return This->lpVtbl->SetGroupSubsetCount(This,cVisibleRows);
}
static inline HRESULT IFolderView2_GetGroupSubsetCount(IFolderView2* This,UINT *pcVisibleRows) {
    return This->lpVtbl->GetGroupSubsetCount(This,pcVisibleRows);
}
static inline HRESULT IFolderView2_SetRedraw(IFolderView2* This,WINBOOL fRedrawOn) {
    return This->lpVtbl->SetRedraw(This,fRedrawOn);
}
static inline HRESULT IFolderView2_IsMoveInSameFolder(IFolderView2* This) {
    return This->lpVtbl->IsMoveInSameFolder(This);
}
static inline HRESULT IFolderView2_DoRename(IFolderView2* This) {
    return This->lpVtbl->DoRename(This);
}
#endif
#endif

#endif

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

#endif  /* __IFolderView2_INTERFACE_DEFINED__ */


#if NTDDI_VERSION >= NTDDI_VISTA
/*****************************************************************************
 * IFolderViewSettings interface
 */
#ifndef __IFolderViewSettings_INTERFACE_DEFINED__
#define __IFolderViewSettings_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFolderViewSettings, 0xae8c987d, 0x8797, 0x4ed3, 0xbe,0x72, 0x2a,0x47,0xdd,0x93,0x8d,0xb0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ae8c987d-8797-4ed3-be72-2a47dd938db0")
IFolderViewSettings : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetColumnPropertyList(
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGroupByProperty(
        PROPERTYKEY *pkey,
        WINBOOL *pfGroupAscending) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetViewMode(
        FOLDERLOGICALVIEWMODE *plvm) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIconSize(
        UINT *puIconSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolderFlags(
        FOLDERFLAGS *pfolderMask,
        FOLDERFLAGS *pfolderFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSortColumns(
        SORTCOLUMN *rgSortColumns,
        UINT cColumnsIn,
        UINT *pcColumnsOut) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFolderViewSettings, 0xae8c987d, 0x8797, 0x4ed3, 0xbe,0x72, 0x2a,0x47,0xdd,0x93,0x8d,0xb0)
#endif
#else
typedef struct IFolderViewSettingsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFolderViewSettings methods ***/
    HRESULT (STDMETHODCALLTYPE *GetColumnPropertyList)(
        IFolderViewSettings *This,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetGroupByProperty)(
        IFolderViewSettings *This,
        PROPERTYKEY *pkey,
        WINBOOL *pfGroupAscending);

    HRESULT (STDMETHODCALLTYPE *GetViewMode)(
        IFolderViewSettings *This,
        FOLDERLOGICALVIEWMODE *plvm);

    HRESULT (STDMETHODCALLTYPE *GetIconSize)(
        IFolderViewSettings *This,
        UINT *puIconSize);

    HRESULT (STDMETHODCALLTYPE *GetFolderFlags)(
        IFolderViewSettings *This,
        FOLDERFLAGS *pfolderMask,
        FOLDERFLAGS *pfolderFlags);

    HRESULT (STDMETHODCALLTYPE *GetSortColumns)(
        IFolderViewSettings *This,
        SORTCOLUMN *rgSortColumns,
        UINT cColumnsIn,
        UINT *pcColumnsOut);

    HRESULT (STDMETHODCALLTYPE *GetGroupSubsetCount)(
        IFolderViewSettings *This,
        UINT *pcVisibleRows);

    END_INTERFACE
} IFolderViewSettingsVtbl;

interface IFolderViewSettings {
    CONST_VTBL IFolderViewSettingsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFolderViewSettings_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFolderViewSettings_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFolderViewSettings_Release(This) (This)->lpVtbl->Release(This)
/*** IFolderViewSettings methods ***/
#define IFolderViewSettings_GetColumnPropertyList(This,riid,ppv) (This)->lpVtbl->GetColumnPropertyList(This,riid,ppv)
#define IFolderViewSettings_GetGroupByProperty(This,pkey,pfGroupAscending) (This)->lpVtbl->GetGroupByProperty(This,pkey,pfGroupAscending)
#define IFolderViewSettings_GetViewMode(This,plvm) (This)->lpVtbl->GetViewMode(This,plvm)
#define IFolderViewSettings_GetIconSize(This,puIconSize) (This)->lpVtbl->GetIconSize(This,puIconSize)
#define IFolderViewSettings_GetFolderFlags(This,pfolderMask,pfolderFlags) (This)->lpVtbl->GetFolderFlags(This,pfolderMask,pfolderFlags)
#define IFolderViewSettings_GetSortColumns(This,rgSortColumns,cColumnsIn,pcColumnsOut) (This)->lpVtbl->GetSortColumns(This,rgSortColumns,cColumnsIn,pcColumnsOut)
#define IFolderViewSettings_GetGroupSubsetCount(This,pcVisibleRows) (This)->lpVtbl->GetGroupSubsetCount(This,pcVisibleRows)
#else
/*** IUnknown methods ***/
static inline HRESULT IFolderViewSettings_QueryInterface(IFolderViewSettings* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFolderViewSettings_AddRef(IFolderViewSettings* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFolderViewSettings_Release(IFolderViewSettings* This) {
    return This->lpVtbl->Release(This);
}
/*** IFolderViewSettings methods ***/
static inline HRESULT IFolderViewSettings_GetColumnPropertyList(IFolderViewSettings* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetColumnPropertyList(This,riid,ppv);
}
static inline HRESULT IFolderViewSettings_GetGroupByProperty(IFolderViewSettings* This,PROPERTYKEY *pkey,WINBOOL *pfGroupAscending) {
    return This->lpVtbl->GetGroupByProperty(This,pkey,pfGroupAscending);
}
static inline HRESULT IFolderViewSettings_GetViewMode(IFolderViewSettings* This,FOLDERLOGICALVIEWMODE *plvm) {
    return This->lpVtbl->GetViewMode(This,plvm);
}
static inline HRESULT IFolderViewSettings_GetIconSize(IFolderViewSettings* This,UINT *puIconSize) {
    return This->lpVtbl->GetIconSize(This,puIconSize);
}
static inline HRESULT IFolderViewSettings_GetFolderFlags(IFolderViewSettings* This,FOLDERFLAGS *pfolderMask,FOLDERFLAGS *pfolderFlags) {
    return This->lpVtbl->GetFolderFlags(This,pfolderMask,pfolderFlags);
}
static inline HRESULT IFolderViewSettings_GetSortColumns(IFolderViewSettings* This,SORTCOLUMN *rgSortColumns,UINT cColumnsIn,UINT *pcColumnsOut) {
    return This->lpVtbl->GetSortColumns(This,rgSortColumns,cColumnsIn,pcColumnsOut);
}
static inline HRESULT IFolderViewSettings_GetGroupSubsetCount(IFolderViewSettings* This,UINT *pcVisibleRows) {
    return This->lpVtbl->GetGroupSubsetCount(This,pcVisibleRows);
}
#endif
#endif

#endif


#endif  /* __IFolderViewSettings_INTERFACE_DEFINED__ */

#endif
#endif

#if _WIN32_IE >= _WIN32_IE_IE70
/*****************************************************************************
 * IPreviewHandlerVisuals interface
 */
#ifndef __IPreviewHandlerVisuals_INTERFACE_DEFINED__
#define __IPreviewHandlerVisuals_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPreviewHandlerVisuals, 0x196bf9a5, 0xb346, 0x4ef0, 0xaa,0x1e, 0x5d,0xcd,0xb7,0x67,0x68,0xb1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("196bf9a5-b346-4ef0-aa1e-5dcdb76768b1")
IPreviewHandlerVisuals : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetBackgroundColor(
        COLORREF color) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFont(
        const LOGFONTW *plf) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTextColor(
        COLORREF color) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPreviewHandlerVisuals, 0x196bf9a5, 0xb346, 0x4ef0, 0xaa,0x1e, 0x5d,0xcd,0xb7,0x67,0x68,0xb1)
#endif
#else
typedef struct IPreviewHandlerVisualsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IPreviewHandlerVisuals methods ***/
    HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)(
        IPreviewHandlerVisuals *This,
        COLORREF color);

    HRESULT (STDMETHODCALLTYPE *SetFont)(
        IPreviewHandlerVisuals *This,
        const LOGFONTW *plf);

    HRESULT (STDMETHODCALLTYPE *SetTextColor)(
        IPreviewHandlerVisuals *This,
        COLORREF color);

    END_INTERFACE
} IPreviewHandlerVisualsVtbl;

interface IPreviewHandlerVisuals {
    CONST_VTBL IPreviewHandlerVisualsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPreviewHandlerVisuals_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPreviewHandlerVisuals_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPreviewHandlerVisuals_Release(This) (This)->lpVtbl->Release(This)
/*** IPreviewHandlerVisuals methods ***/
#define IPreviewHandlerVisuals_SetBackgroundColor(This,color) (This)->lpVtbl->SetBackgroundColor(This,color)
#define IPreviewHandlerVisuals_SetFont(This,plf) (This)->lpVtbl->SetFont(This,plf)
#define IPreviewHandlerVisuals_SetTextColor(This,color) (This)->lpVtbl->SetTextColor(This,color)
#else
/*** IUnknown methods ***/
static inline HRESULT IPreviewHandlerVisuals_QueryInterface(IPreviewHandlerVisuals* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPreviewHandlerVisuals_AddRef(IPreviewHandlerVisuals* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPreviewHandlerVisuals_Release(IPreviewHandlerVisuals* This) {
    return This->lpVtbl->Release(This);
}
/*** IPreviewHandlerVisuals methods ***/
static inline HRESULT IPreviewHandlerVisuals_SetBackgroundColor(IPreviewHandlerVisuals* This,COLORREF color) {
    return This->lpVtbl->SetBackgroundColor(This,color);
}
static inline HRESULT IPreviewHandlerVisuals_SetFont(IPreviewHandlerVisuals* This,const LOGFONTW *plf) {
    return This->lpVtbl->SetFont(This,plf);
}
static inline HRESULT IPreviewHandlerVisuals_SetTextColor(IPreviewHandlerVisuals* This,COLORREF color) {
    return This->lpVtbl->SetTextColor(This,color);
}
#endif
#endif

#endif


#endif  /* __IPreviewHandlerVisuals_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IVisualProperties interface
 */
#ifndef __IVisualProperties_INTERFACE_DEFINED__
#define __IVisualProperties_INTERFACE_DEFINED__

typedef enum VPWATERMARKFLAGS {
    VPWF_DEFAULT = 0x0,
    VPWF_ALPHABLEND = 0x1
} VPWATERMARKFLAGS;

typedef enum VPCOLORFLAGS {
    VPCF_TEXT = 1,
    VPCF_BACKGROUND = 2,
    VPCF_SORTCOLUMN = 3,
    VPCF_SUBTEXT = 4,
    VPCF_TEXTBACKGROUND = 5
} VPCOLORFLAGS;

DEFINE_ENUM_FLAG_OPERATORS(VPWATERMARKFLAGS)

DEFINE_GUID(IID_IVisualProperties, 0xe693cf68, 0xd967, 0x4112, 0x87,0x63, 0x99,0x17,0x2a,0xee,0x5e,0x5a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e693cf68-d967-4112-8763-99172aee5e5a")
IVisualProperties : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetWatermark(
        HBITMAP hbmp,
        VPWATERMARKFLAGS vpwf) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetColor(
        VPCOLORFLAGS vpcf,
        COLORREF cr) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColor(
        VPCOLORFLAGS vpcf,
        COLORREF *pcr) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetItemHeight(
        int cyItemInPixels) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetItemHeight(
        int *cyItemInPixels) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFont(
        const LOGFONTW *plf,
        WINBOOL bRedraw) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFont(
        LOGFONTW *plf) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTheme(
        LPCWSTR pszSubAppName,
        LPCWSTR pszSubIdList) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IVisualProperties, 0xe693cf68, 0xd967, 0x4112, 0x87,0x63, 0x99,0x17,0x2a,0xee,0x5e,0x5a)
#endif
#else
typedef struct IVisualPropertiesVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IVisualProperties methods ***/
    HRESULT (STDMETHODCALLTYPE *SetWatermark)(
        IVisualProperties *This,
        HBITMAP hbmp,
        VPWATERMARKFLAGS vpwf);

    HRESULT (STDMETHODCALLTYPE *SetColor)(
        IVisualProperties *This,
        VPCOLORFLAGS vpcf,
        COLORREF cr);

    HRESULT (STDMETHODCALLTYPE *GetColor)(
        IVisualProperties *This,
        VPCOLORFLAGS vpcf,
        COLORREF *pcr);

    HRESULT (STDMETHODCALLTYPE *SetItemHeight)(
        IVisualProperties *This,
        int cyItemInPixels);

    HRESULT (STDMETHODCALLTYPE *GetItemHeight)(
        IVisualProperties *This,
        int *cyItemInPixels);

    HRESULT (STDMETHODCALLTYPE *SetFont)(
        IVisualProperties *This,
        const LOGFONTW *plf,
        WINBOOL bRedraw);

    HRESULT (STDMETHODCALLTYPE *GetFont)(
        IVisualProperties *This,
        LOGFONTW *plf);

    HRESULT (STDMETHODCALLTYPE *SetTheme)(
        IVisualProperties *This,
        LPCWSTR pszSubAppName,
        LPCWSTR pszSubIdList);

    END_INTERFACE
} IVisualPropertiesVtbl;

interface IVisualProperties {
    CONST_VTBL IVisualPropertiesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IVisualProperties_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVisualProperties_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVisualProperties_Release(This) (This)->lpVtbl->Release(This)
/*** IVisualProperties methods ***/
#define IVisualProperties_SetWatermark(This,hbmp,vpwf) (This)->lpVtbl->SetWatermark(This,hbmp,vpwf)
#define IVisualProperties_SetColor(This,vpcf,cr) (This)->lpVtbl->SetColor(This,vpcf,cr)
#define IVisualProperties_GetColor(This,vpcf,pcr) (This)->lpVtbl->GetColor(This,vpcf,pcr)
#define IVisualProperties_SetItemHeight(This,cyItemInPixels) (This)->lpVtbl->SetItemHeight(This,cyItemInPixels)
#define IVisualProperties_GetItemHeight(This,cyItemInPixels) (This)->lpVtbl->GetItemHeight(This,cyItemInPixels)
#define IVisualProperties_SetFont(This,plf,bRedraw) (This)->lpVtbl->SetFont(This,plf,bRedraw)
#define IVisualProperties_GetFont(This,plf) (This)->lpVtbl->GetFont(This,plf)
#define IVisualProperties_SetTheme(This,pszSubAppName,pszSubIdList) (This)->lpVtbl->SetTheme(This,pszSubAppName,pszSubIdList)
#else
/*** IUnknown methods ***/
static inline HRESULT IVisualProperties_QueryInterface(IVisualProperties* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IVisualProperties_AddRef(IVisualProperties* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IVisualProperties_Release(IVisualProperties* This) {
    return This->lpVtbl->Release(This);
}
/*** IVisualProperties methods ***/
static inline HRESULT IVisualProperties_SetWatermark(IVisualProperties* This,HBITMAP hbmp,VPWATERMARKFLAGS vpwf) {
    return This->lpVtbl->SetWatermark(This,hbmp,vpwf);
}
static inline HRESULT IVisualProperties_SetColor(IVisualProperties* This,VPCOLORFLAGS vpcf,COLORREF cr) {
    return This->lpVtbl->SetColor(This,vpcf,cr);
}
static inline HRESULT IVisualProperties_GetColor(IVisualProperties* This,VPCOLORFLAGS vpcf,COLORREF *pcr) {
    return This->lpVtbl->GetColor(This,vpcf,pcr);
}
static inline HRESULT IVisualProperties_SetItemHeight(IVisualProperties* This,int cyItemInPixels) {
    return This->lpVtbl->SetItemHeight(This,cyItemInPixels);
}
static inline HRESULT IVisualProperties_GetItemHeight(IVisualProperties* This,int *cyItemInPixels) {
    return This->lpVtbl->GetItemHeight(This,cyItemInPixels);
}
static inline HRESULT IVisualProperties_SetFont(IVisualProperties* This,const LOGFONTW *plf,WINBOOL bRedraw) {
    return This->lpVtbl->SetFont(This,plf,bRedraw);
}
static inline HRESULT IVisualProperties_GetFont(IVisualProperties* This,LOGFONTW *plf) {
    return This->lpVtbl->GetFont(This,plf);
}
static inline HRESULT IVisualProperties_SetTheme(IVisualProperties* This,LPCWSTR pszSubAppName,LPCWSTR pszSubIdList) {
    return This->lpVtbl->SetTheme(This,pszSubAppName,pszSubIdList);
}
#endif
#endif

#endif


#endif  /* __IVisualProperties_INTERFACE_DEFINED__ */

#endif

#define CDBOSC_SETFOCUS 0x00000000
#define CDBOSC_KILLFOCUS 0x00000001
#define CDBOSC_SELCHANGE 0x00000002
#define CDBOSC_RENAME 0x00000003
#define CDBOSC_STATECHANGE 0x00000004

/*****************************************************************************
 * ICommDlgBrowser interface
 */
#ifndef __ICommDlgBrowser_INTERFACE_DEFINED__
#define __ICommDlgBrowser_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICommDlgBrowser, 0x000214f1, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("000214f1-0000-0000-c000-000000000046")
ICommDlgBrowser : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnDefaultCommand(
        IShellView *ppshv) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE IncludeObject(
        IShellView *ppshv,
        PCUITEMID_CHILD 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 *ppshv);

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

    HRESULT (STDMETHODCALLTYPE *IncludeObject)(
        ICommDlgBrowser *This,
        IShellView *ppshv,
        PCUITEMID_CHILD 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,ppshv) (This)->lpVtbl->OnDefaultCommand(This,ppshv)
#define ICommDlgBrowser_OnStateChange(This,ppshv,uChange) (This)->lpVtbl->OnStateChange(This,ppshv,uChange)
#define ICommDlgBrowser_IncludeObject(This,ppshv,pidl) (This)->lpVtbl->IncludeObject(This,ppshv,pidl)
#else
/*** IUnknown methods ***/
static inline HRESULT ICommDlgBrowser_QueryInterface(ICommDlgBrowser* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ICommDlgBrowser_AddRef(ICommDlgBrowser* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ICommDlgBrowser_Release(ICommDlgBrowser* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommDlgBrowser methods ***/
static inline HRESULT ICommDlgBrowser_OnDefaultCommand(ICommDlgBrowser* This,IShellView *ppshv) {
    return This->lpVtbl->OnDefaultCommand(This,ppshv);
}
static inline HRESULT ICommDlgBrowser_OnStateChange(ICommDlgBrowser* This,IShellView *ppshv,ULONG uChange) {
    return This->lpVtbl->OnStateChange(This,ppshv,uChange);
}
static inline HRESULT ICommDlgBrowser_IncludeObject(ICommDlgBrowser* This,IShellView *ppshv,PCUITEMID_CHILD pidl) {
    return This->lpVtbl->IncludeObject(This,ppshv,pidl);
}
#endif
#endif

#endif


#endif  /* __ICommDlgBrowser_INTERFACE_DEFINED__ */

typedef ICommDlgBrowser *LPCOMMDLGBROWSER;

#define SID_SExplorerBrowserFrame IID_ICommDlgBrowser

#define CDB2N_CONTEXTMENU_DONE 0x00000001
#define CDB2N_CONTEXTMENU_START 0x00000002

#define CDB2GVF_SHOWALLFILES 0x1
#if NTDDI_VERSION >= NTDDI_VISTA
#define CDB2GVF_ISFILESAVE 0x2
#define CDB2GVF_ALLOWPREVIEWPANE 0x4
#define CDB2GVF_NOSELECTVERB 0x8
#define CDB2GVF_NOINCLUDEITEM 0x10
#define CDB2GVF_ISFOLDERPICKER 0x20
#define CDB2GVF_ADDSHIELD 0x40
#endif

/*****************************************************************************
 * 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 *ppshv);

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

    HRESULT (STDMETHODCALLTYPE *IncludeObject)(
        ICommDlgBrowser2 *This,
        IShellView *ppshv,
        PCUITEMID_CHILD 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,ppshv) (This)->lpVtbl->OnDefaultCommand(This,ppshv)
#define ICommDlgBrowser2_OnStateChange(This,ppshv,uChange) (This)->lpVtbl->OnStateChange(This,ppshv,uChange)
#define ICommDlgBrowser2_IncludeObject(This,ppshv,pidl) (This)->lpVtbl->IncludeObject(This,ppshv,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 inline HRESULT ICommDlgBrowser2_QueryInterface(ICommDlgBrowser2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ICommDlgBrowser2_AddRef(ICommDlgBrowser2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ICommDlgBrowser2_Release(ICommDlgBrowser2* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommDlgBrowser methods ***/
static inline HRESULT ICommDlgBrowser2_OnDefaultCommand(ICommDlgBrowser2* This,IShellView *ppshv) {
    return This->lpVtbl->OnDefaultCommand(This,ppshv);
}
static inline HRESULT ICommDlgBrowser2_OnStateChange(ICommDlgBrowser2* This,IShellView *ppshv,ULONG uChange) {
    return This->lpVtbl->OnStateChange(This,ppshv,uChange);
}
static inline HRESULT ICommDlgBrowser2_IncludeObject(ICommDlgBrowser2* This,IShellView *ppshv,PCUITEMID_CHILD pidl) {
    return This->lpVtbl->IncludeObject(This,ppshv,pidl);
}
/*** ICommDlgBrowser2 methods ***/
static inline HRESULT ICommDlgBrowser2_Notify(ICommDlgBrowser2* This,IShellView *ppshv,DWORD dwNotifyType) {
    return This->lpVtbl->Notify(This,ppshv,dwNotifyType);
}
static inline HRESULT ICommDlgBrowser2_GetDefaultMenuText(ICommDlgBrowser2* This,IShellView *ppshv,LPWSTR pszText,int cchMax) {
    return This->lpVtbl->GetDefaultMenuText(This,ppshv,pszText,cchMax);
}
static inline HRESULT ICommDlgBrowser2_GetViewFlags(ICommDlgBrowser2* This,DWORD *pdwFlags) {
    return This->lpVtbl->GetViewFlags(This,pdwFlags);
}
#endif
#endif

#endif


#endif  /* __ICommDlgBrowser2_INTERFACE_DEFINED__ */

typedef ICommDlgBrowser2 *LPCOMMDLGBROWSER2;

#if _WIN32_IE >= _WIN32_IE_IE70
/*****************************************************************************
 * 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 *ppshv);

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

    HRESULT (STDMETHODCALLTYPE *IncludeObject)(
        ICommDlgBrowser3 *This,
        IShellView *ppshv,
        PCUITEMID_CHILD 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,ppshv) (This)->lpVtbl->OnDefaultCommand(This,ppshv)
#define ICommDlgBrowser3_OnStateChange(This,ppshv,uChange) (This)->lpVtbl->OnStateChange(This,ppshv,uChange)
#define ICommDlgBrowser3_IncludeObject(This,ppshv,pidl) (This)->lpVtbl->IncludeObject(This,ppshv,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 inline HRESULT ICommDlgBrowser3_QueryInterface(ICommDlgBrowser3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ICommDlgBrowser3_AddRef(ICommDlgBrowser3* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ICommDlgBrowser3_Release(ICommDlgBrowser3* This) {
    return This->lpVtbl->Release(This);
}
/*** ICommDlgBrowser methods ***/
static inline HRESULT ICommDlgBrowser3_OnDefaultCommand(ICommDlgBrowser3* This,IShellView *ppshv) {
    return This->lpVtbl->OnDefaultCommand(This,ppshv);
}
static inline HRESULT ICommDlgBrowser3_OnStateChange(ICommDlgBrowser3* This,IShellView *ppshv,ULONG uChange) {
    return This->lpVtbl->OnStateChange(This,ppshv,uChange);
}
static inline HRESULT ICommDlgBrowser3_IncludeObject(ICommDlgBrowser3* This,IShellView *ppshv,PCUITEMID_CHILD pidl) {
    return This->lpVtbl->IncludeObject(This,ppshv,pidl);
}
/*** ICommDlgBrowser2 methods ***/
static inline HRESULT ICommDlgBrowser3_Notify(ICommDlgBrowser3* This,IShellView *ppshv,DWORD dwNotifyType) {
    return This->lpVtbl->Notify(This,ppshv,dwNotifyType);
}
static inline HRESULT ICommDlgBrowser3_GetDefaultMenuText(ICommDlgBrowser3* This,IShellView *ppshv,LPWSTR pszText,int cchMax) {
    return This->lpVtbl->GetDefaultMenuText(This,ppshv,pszText,cchMax);
}
static inline HRESULT ICommDlgBrowser3_GetViewFlags(ICommDlgBrowser3* This,DWORD *pdwFlags) {
    return This->lpVtbl->GetViewFlags(This,pdwFlags);
}
/*** ICommDlgBrowser3 methods ***/
static inline HRESULT ICommDlgBrowser3_OnColumnClicked(ICommDlgBrowser3* This,IShellView *ppshv,int iColumn) {
    return This->lpVtbl->OnColumnClicked(This,ppshv,iColumn);
}
static inline HRESULT ICommDlgBrowser3_GetCurrentFilter(ICommDlgBrowser3* This,LPWSTR pszFileSpec,int cchFileSpec) {
    return This->lpVtbl->GetCurrentFilter(This,pszFileSpec,cchFileSpec);
}
static inline HRESULT ICommDlgBrowser3_OnPreViewCreated(ICommDlgBrowser3* This,IShellView *ppshv) {
    return This->lpVtbl->OnPreViewCreated(This,ppshv);
}
#endif
#endif

#endif


#endif  /* __ICommDlgBrowser3_INTERFACE_DEFINED__ */


typedef enum CM_MASK {
    CM_MASK_WIDTH = 0x1,
    CM_MASK_DEFAULTWIDTH = 0x2,
    CM_MASK_IDEALWIDTH = 0x4,
    CM_MASK_NAME = 0x8,
    CM_MASK_STATE = 0x10
} CM_MASK;

DEFINE_ENUM_FLAG_OPERATORS(CM_MASK)

typedef enum CM_STATE {
    CM_STATE_NONE = 0x0,
    CM_STATE_VISIBLE = 0x1,
    CM_STATE_FIXEDWIDTH = 0x2,
    CM_STATE_NOSORTBYFOLDERNESS = 0x4,
    CM_STATE_ALWAYSVISIBLE = 0x8
} CM_STATE;

DEFINE_ENUM_FLAG_OPERATORS(CM_STATE)

typedef enum CM_ENUM_FLAGS {
    CM_ENUM_ALL = 0x1,
    CM_ENUM_VISIBLE = 0x2
} CM_ENUM_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(CM_ENUM_FLAGS)

typedef enum CM_SET_WIDTH_VALUE {
    CM_WIDTH_USEDEFAULT = -1,
    CM_WIDTH_AUTOSIZE = -2
} CM_SET_WIDTH_VALUE;

typedef struct CM_COLUMNINFO {
    DWORD cbSize;
    DWORD dwMask;
    DWORD dwState;
    UINT uWidth;
    UINT uDefaultWidth;
    UINT uIdealWidth;
    WCHAR wszName[80];
} CM_COLUMNINFO;

/*****************************************************************************
 * IColumnManager interface
 */
#ifndef __IColumnManager_INTERFACE_DEFINED__
#define __IColumnManager_INTERFACE_DEFINED__

DEFINE_GUID(IID_IColumnManager, 0xd8ec27bb, 0x3f3b, 0x4042, 0xb1,0x0a, 0x4a,0xcf,0xd9,0x24,0xd4,0x53);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d8ec27bb-3f3b-4042-b10a-4acfd924d453")
IColumnManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetColumnInfo(
        REFPROPERTYKEY propkey,
        const CM_COLUMNINFO *pcmci) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColumnInfo(
        REFPROPERTYKEY propkey,
        CM_COLUMNINFO *pcmci) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColumnCount(
        CM_ENUM_FLAGS dwFlags,
        UINT *puCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetColumns(
        CM_ENUM_FLAGS dwFlags,
        PROPERTYKEY *rgkeyOrder,
        UINT cColumns) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetColumns(
        const PROPERTYKEY *rgkeyOrder,
        UINT cVisible) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IColumnManager, 0xd8ec27bb, 0x3f3b, 0x4042, 0xb1,0x0a, 0x4a,0xcf,0xd9,0x24,0xd4,0x53)
#endif
#else
typedef struct IColumnManagerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IColumnManager methods ***/
    HRESULT (STDMETHODCALLTYPE *SetColumnInfo)(
        IColumnManager *This,
        REFPROPERTYKEY propkey,
        const CM_COLUMNINFO *pcmci);

    HRESULT (STDMETHODCALLTYPE *GetColumnInfo)(
        IColumnManager *This,
        REFPROPERTYKEY propkey,
        CM_COLUMNINFO *pcmci);

    HRESULT (STDMETHODCALLTYPE *GetColumnCount)(
        IColumnManager *This,
        CM_ENUM_FLAGS dwFlags,
        UINT *puCount);

    HRESULT (STDMETHODCALLTYPE *GetColumns)(
        IColumnManager *This,
        CM_ENUM_FLAGS dwFlags,
        PROPERTYKEY *rgkeyOrder,
        UINT cColumns);

    HRESULT (STDMETHODCALLTYPE *SetColumns)(
        IColumnManager *This,
        const PROPERTYKEY *rgkeyOrder,
        UINT cVisible);

    END_INTERFACE
} IColumnManagerVtbl;

interface IColumnManager {
    CONST_VTBL IColumnManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IColumnManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IColumnManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IColumnManager_Release(This) (This)->lpVtbl->Release(This)
/*** IColumnManager methods ***/
#define IColumnManager_SetColumnInfo(This,propkey,pcmci) (This)->lpVtbl->SetColumnInfo(This,propkey,pcmci)
#define IColumnManager_GetColumnInfo(This,propkey,pcmci) (This)->lpVtbl->GetColumnInfo(This,propkey,pcmci)
#define IColumnManager_GetColumnCount(This,dwFlags,puCount) (This)->lpVtbl->GetColumnCount(This,dwFlags,puCount)
#define IColumnManager_GetColumns(This,dwFlags,rgkeyOrder,cColumns) (This)->lpVtbl->GetColumns(This,dwFlags,rgkeyOrder,cColumns)
#define IColumnManager_SetColumns(This,rgkeyOrder,cVisible) (This)->lpVtbl->SetColumns(This,rgkeyOrder,cVisible)
#else
/*** IUnknown methods ***/
static inline HRESULT IColumnManager_QueryInterface(IColumnManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IColumnManager_AddRef(IColumnManager* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IColumnManager_Release(IColumnManager* This) {
    return This->lpVtbl->Release(This);
}
/*** IColumnManager methods ***/
static inline HRESULT IColumnManager_SetColumnInfo(IColumnManager* This,REFPROPERTYKEY propkey,const CM_COLUMNINFO *pcmci) {
    return This->lpVtbl->SetColumnInfo(This,propkey,pcmci);
}
static inline HRESULT IColumnManager_GetColumnInfo(IColumnManager* This,REFPROPERTYKEY propkey,CM_COLUMNINFO *pcmci) {
    return This->lpVtbl->GetColumnInfo(This,propkey,pcmci);
}
static inline HRESULT IColumnManager_GetColumnCount(IColumnManager* This,CM_ENUM_FLAGS dwFlags,UINT *puCount) {
    return This->lpVtbl->GetColumnCount(This,dwFlags,puCount);
}
static inline HRESULT IColumnManager_GetColumns(IColumnManager* This,CM_ENUM_FLAGS dwFlags,PROPERTYKEY *rgkeyOrder,UINT cColumns) {
    return This->lpVtbl->GetColumns(This,dwFlags,rgkeyOrder,cColumns);
}
static inline HRESULT IColumnManager_SetColumns(IColumnManager* This,const PROPERTYKEY *rgkeyOrder,UINT cVisible) {
    return This->lpVtbl->SetColumns(This,rgkeyOrder,cVisible);
}
#endif
#endif

#endif


#endif  /* __IColumnManager_INTERFACE_DEFINED__ */

#endif

/*****************************************************************************
 * IFolderFilterSite interface
 */
#ifndef __IFolderFilterSite_INTERFACE_DEFINED__
#define __IFolderFilterSite_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFolderFilterSite, 0xc0a651f5, 0xb48b, 0x11d2, 0xb5,0xed, 0x00,0x60,0x97,0xc6,0x86,0xf6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c0a651f5-b48b-11d2-b5ed-006097c686f6")
IFolderFilterSite : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFilter(
        IUnknown *punk) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFolderFilterSite, 0xc0a651f5, 0xb48b, 0x11d2, 0xb5,0xed, 0x00,0x60,0x97,0xc6,0x86,0xf6)
#endif
#else
typedef struct IFolderFilterSiteVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFolderFilterSite methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFilter)(
        IFolderFilterSite *This,
        IUnknown *punk);

    END_INTERFACE
} IFolderFilterSiteVtbl;

interface IFolderFilterSite {
    CONST_VTBL IFolderFilterSiteVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFolderFilterSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFolderFilterSite_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFolderFilterSite_Release(This) (This)->lpVtbl->Release(This)
/*** IFolderFilterSite methods ***/
#define IFolderFilterSite_SetFilter(This,punk) (This)->lpVtbl->SetFilter(This,punk)
#else
/*** IUnknown methods ***/
static inline HRESULT IFolderFilterSite_QueryInterface(IFolderFilterSite* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFolderFilterSite_AddRef(IFolderFilterSite* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFolderFilterSite_Release(IFolderFilterSite* This) {
    return This->lpVtbl->Release(This);
}
/*** IFolderFilterSite methods ***/
static inline HRESULT IFolderFilterSite_SetFilter(IFolderFilterSite* This,IUnknown *punk) {
    return This->lpVtbl->SetFilter(This,punk);
}
#endif
#endif

#endif


#endif  /* __IFolderFilterSite_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IFolderFilter interface
 */
#ifndef __IFolderFilter_INTERFACE_DEFINED__
#define __IFolderFilter_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFolderFilter, 0x9cc22886, 0xdc8e, 0x11d2, 0xb1,0xd0, 0x00,0xc0,0x4f,0x8e,0xeb,0x3e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9cc22886-dc8e-11d2-b1d0-00c04f8eeb3e")
IFolderFilter : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ShouldShow(
        IShellFolder *psf,
        PCIDLIST_ABSOLUTE pidlFolder,
        PCUITEMID_CHILD pidlItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEnumFlags(
        IShellFolder *psf,
        PCIDLIST_ABSOLUTE pidlFolder,
        HWND *phwnd,
        DWORD *pgrfFlags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFolderFilter, 0x9cc22886, 0xdc8e, 0x11d2, 0xb1,0xd0, 0x00,0xc0,0x4f,0x8e,0xeb,0x3e)
#endif
#else
typedef struct IFolderFilterVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFolderFilter methods ***/
    HRESULT (STDMETHODCALLTYPE *ShouldShow)(
        IFolderFilter *This,
        IShellFolder *psf,
        PCIDLIST_ABSOLUTE pidlFolder,
        PCUITEMID_CHILD pidlItem);

    HRESULT (STDMETHODCALLTYPE *GetEnumFlags)(
        IFolderFilter *This,
        IShellFolder *psf,
        PCIDLIST_ABSOLUTE pidlFolder,
        HWND *phwnd,
        DWORD *pgrfFlags);

    END_INTERFACE
} IFolderFilterVtbl;

interface IFolderFilter {
    CONST_VTBL IFolderFilterVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFolderFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFolderFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFolderFilter_Release(This) (This)->lpVtbl->Release(This)
/*** IFolderFilter methods ***/
#define IFolderFilter_ShouldShow(This,psf,pidlFolder,pidlItem) (This)->lpVtbl->ShouldShow(This,psf,pidlFolder,pidlItem)
#define IFolderFilter_GetEnumFlags(This,psf,pidlFolder,phwnd,pgrfFlags) (This)->lpVtbl->GetEnumFlags(This,psf,pidlFolder,phwnd,pgrfFlags)
#else
/*** IUnknown methods ***/
static inline HRESULT IFolderFilter_QueryInterface(IFolderFilter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFolderFilter_AddRef(IFolderFilter* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFolderFilter_Release(IFolderFilter* This) {
    return This->lpVtbl->Release(This);
}
/*** IFolderFilter methods ***/
static inline HRESULT IFolderFilter_ShouldShow(IFolderFilter* This,IShellFolder *psf,PCIDLIST_ABSOLUTE pidlFolder,PCUITEMID_CHILD pidlItem) {
    return This->lpVtbl->ShouldShow(This,psf,pidlFolder,pidlItem);
}
static inline HRESULT IFolderFilter_GetEnumFlags(IFolderFilter* This,IShellFolder *psf,PCIDLIST_ABSOLUTE pidlFolder,HWND *phwnd,DWORD *pgrfFlags) {
    return This->lpVtbl->GetEnumFlags(This,psf,pidlFolder,phwnd,pgrfFlags);
}
#endif
#endif

#endif


#endif  /* __IFolderFilter_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IInputObjectSite interface
 */
#ifndef __IInputObjectSite_INTERFACE_DEFINED__
#define __IInputObjectSite_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInputObjectSite, 0xf1db8392, 0x7331, 0x11d0, 0x8c,0x99, 0x00,0xa0,0xc9,0x2d,0xbf,0xe8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f1db8392-7331-11d0-8c99-00a0c92dbfe8")
IInputObjectSite : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnFocusChangeIS(
        IUnknown *punkObj,
        WINBOOL fSetFocus) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInputObjectSite, 0xf1db8392, 0x7331, 0x11d0, 0x8c,0x99, 0x00,0xa0,0xc9,0x2d,0xbf,0xe8)
#endif
#else
typedef struct IInputObjectSiteVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IInputObjectSite methods ***/
    HRESULT (STDMETHODCALLTYPE *OnFocusChangeIS)(
        IInputObjectSite *This,
        IUnknown *punkObj,
        WINBOOL fSetFocus);

    END_INTERFACE
} IInputObjectSiteVtbl;

interface IInputObjectSite {
    CONST_VTBL IInputObjectSiteVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInputObjectSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInputObjectSite_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInputObjectSite_Release(This) (This)->lpVtbl->Release(This)
/*** IInputObjectSite methods ***/
#define IInputObjectSite_OnFocusChangeIS(This,punkObj,fSetFocus) (This)->lpVtbl->OnFocusChangeIS(This,punkObj,fSetFocus)
#else
/*** IUnknown methods ***/
static inline HRESULT IInputObjectSite_QueryInterface(IInputObjectSite* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IInputObjectSite_AddRef(IInputObjectSite* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IInputObjectSite_Release(IInputObjectSite* This) {
    return This->lpVtbl->Release(This);
}
/*** IInputObjectSite methods ***/
static inline HRESULT IInputObjectSite_OnFocusChangeIS(IInputObjectSite* This,IUnknown *punkObj,WINBOOL fSetFocus) {
    return This->lpVtbl->OnFocusChangeIS(This,punkObj,fSetFocus);
}
#endif
#endif

#endif


#endif  /* __IInputObjectSite_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IInputObject interface
 */
#ifndef __IInputObject_INTERFACE_DEFINED__
#define __IInputObject_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInputObject, 0x68284faa, 0x6a48, 0x11d0, 0x8c,0x78, 0x00,0xc0,0x4f,0xd9,0x18,0xb4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("68284faa-6a48-11d0-8c78-00c04fd918b4")
IInputObject : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE UIActivateIO(
        WINBOOL fActivate,
        MSG *pMsg) = 0;

    virtual HRESULT STDMETHODCALLTYPE HasFocusIO(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorIO(
        MSG *pMsg) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInputObject, 0x68284faa, 0x6a48, 0x11d0, 0x8c,0x78, 0x00,0xc0,0x4f,0xd9,0x18,0xb4)
#endif
#else
typedef struct IInputObjectVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IInputObject methods ***/
    HRESULT (STDMETHODCALLTYPE *UIActivateIO)(
        IInputObject *This,
        WINBOOL fActivate,
        MSG *pMsg);

    HRESULT (STDMETHODCALLTYPE *HasFocusIO)(
        IInputObject *This);

    HRESULT (STDMETHODCALLTYPE *TranslateAcceleratorIO)(
        IInputObject *This,
        MSG *pMsg);

    END_INTERFACE
} IInputObjectVtbl;

interface IInputObject {
    CONST_VTBL IInputObjectVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInputObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInputObject_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInputObject_Release(This) (This)->lpVtbl->Release(This)
/*** IInputObject methods ***/
#define IInputObject_UIActivateIO(This,fActivate,pMsg) (This)->lpVtbl->UIActivateIO(This,fActivate,pMsg)
#define IInputObject_HasFocusIO(This) (This)->lpVtbl->HasFocusIO(This)
#define IInputObject_TranslateAcceleratorIO(This,pMsg) (This)->lpVtbl->TranslateAcceleratorIO(This,pMsg)
#else
/*** IUnknown methods ***/
static inline HRESULT IInputObject_QueryInterface(IInputObject* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IInputObject_AddRef(IInputObject* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IInputObject_Release(IInputObject* This) {
    return This->lpVtbl->Release(This);
}
/*** IInputObject methods ***/
static inline HRESULT IInputObject_UIActivateIO(IInputObject* This,WINBOOL fActivate,MSG *pMsg) {
    return This->lpVtbl->UIActivateIO(This,fActivate,pMsg);
}
static inline HRESULT IInputObject_HasFocusIO(IInputObject* This) {
    return This->lpVtbl->HasFocusIO(This);
}
static inline HRESULT IInputObject_TranslateAcceleratorIO(IInputObject* This,MSG *pMsg) {
    return This->lpVtbl->TranslateAcceleratorIO(This,pMsg);
}
#endif
#endif

#endif


#endif  /* __IInputObject_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IInputObject2 interface
 */
#ifndef __IInputObject2_INTERFACE_DEFINED__
#define __IInputObject2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInputObject2, 0x6915c085, 0x510b, 0x44cd, 0x94,0xaf, 0x28,0xdf,0xa5,0x6c,0xf9,0x2b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6915c085-510b-44cd-94af-28dfa56cf92b")
IInputObject2 : public IInputObject
{
    virtual HRESULT STDMETHODCALLTYPE TranslateAcceleratorGlobal(
        MSG *pMsg) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInputObject2, 0x6915c085, 0x510b, 0x44cd, 0x94,0xaf, 0x28,0xdf,0xa5,0x6c,0xf9,0x2b)
#endif
#else
typedef struct IInputObject2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IInputObject methods ***/
    HRESULT (STDMETHODCALLTYPE *UIActivateIO)(
        IInputObject2 *This,
        WINBOOL fActivate,
        MSG *pMsg);

    HRESULT (STDMETHODCALLTYPE *HasFocusIO)(
        IInputObject2 *This);

    HRESULT (STDMETHODCALLTYPE *TranslateAcceleratorIO)(
        IInputObject2 *This,
        MSG *pMsg);

    /*** IInputObject2 methods ***/
    HRESULT (STDMETHODCALLTYPE *TranslateAcceleratorGlobal)(
        IInputObject2 *This,
        MSG *pMsg);

    END_INTERFACE
} IInputObject2Vtbl;

interface IInputObject2 {
    CONST_VTBL IInputObject2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInputObject2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInputObject2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInputObject2_Release(This) (This)->lpVtbl->Release(This)
/*** IInputObject methods ***/
#define IInputObject2_UIActivateIO(This,fActivate,pMsg) (This)->lpVtbl->UIActivateIO(This,fActivate,pMsg)
#define IInputObject2_HasFocusIO(This) (This)->lpVtbl->HasFocusIO(This)
#define IInputObject2_TranslateAcceleratorIO(This,pMsg) (This)->lpVtbl->TranslateAcceleratorIO(This,pMsg)
/*** IInputObject2 methods ***/
#define IInputObject2_TranslateAcceleratorGlobal(This,pMsg) (This)->lpVtbl->TranslateAcceleratorGlobal(This,pMsg)
#else
/*** IUnknown methods ***/
static inline HRESULT IInputObject2_QueryInterface(IInputObject2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IInputObject2_AddRef(IInputObject2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IInputObject2_Release(IInputObject2* This) {
    return This->lpVtbl->Release(This);
}
/*** IInputObject methods ***/
static inline HRESULT IInputObject2_UIActivateIO(IInputObject2* This,WINBOOL fActivate,MSG *pMsg) {
    return This->lpVtbl->UIActivateIO(This,fActivate,pMsg);
}
static inline HRESULT IInputObject2_HasFocusIO(IInputObject2* This) {
    return This->lpVtbl->HasFocusIO(This);
}
static inline HRESULT IInputObject2_TranslateAcceleratorIO(IInputObject2* This,MSG *pMsg) {
    return This->lpVtbl->TranslateAcceleratorIO(This,pMsg);
}
/*** IInputObject2 methods ***/
static inline HRESULT IInputObject2_TranslateAcceleratorGlobal(IInputObject2* This,MSG *pMsg) {
    return This->lpVtbl->TranslateAcceleratorGlobal(This,pMsg);
}
#endif
#endif

#endif


#endif  /* __IInputObject2_INTERFACE_DEFINED__ */


/*****************************************************************************
 * 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 inline HRESULT IShellIcon_QueryInterface(IShellIcon* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellIcon_AddRef(IShellIcon* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellIcon_Release(IShellIcon* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellIcon methods ***/
static inline 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__ */


#define SBSP_DEFBROWSER 0x0000
#define SBSP_SAMEBROWSER 0x0001
#define SBSP_NEWBROWSER 0x0002

#define SBSP_DEFMODE 0x0000
#define SBSP_OPENMODE 0x0010
#define SBSP_EXPLOREMODE 0x0020
#define SBSP_HELPMODE 0x0040
#define SBSP_NOTRANSFERHIST 0x0080

#define SBSP_ABSOLUTE 0x0000
#define SBSP_RELATIVE 0x1000
#define SBSP_PARENT 0x2000
#define SBSP_NAVIGATEBACK 0x4000
#define SBSP_NAVIGATEFORWARD 0x8000
#define SBSP_ALLOW_AUTONAVIGATE 0x00010000
#if NTDDI_VERSION >= NTDDI_VISTA
#define SBSP_KEEPSAMETEMPLATE 0x00020000
#define SBSP_KEEPWORDWHEELTEXT 0x00040000
#define SBSP_ACTIVATE_NOFOCUS 0x00080000
#define SBSP_CREATENOHISTORY 0x00100000
#define SBSP_PLAYNOSOUND 0x00200000
#endif
#if _WIN32_IE >= _WIN32_IE_IE60SP2
#define SBSP_CALLERUNTRUSTED 0x00800000
#define SBSP_TRUSTFIRSTDOWNLOAD 0x01000000
#define SBSP_UNTRUSTEDFORDOWNLOAD 0x02000000
#endif
#define SBSP_NOAUTOSELECT 0x04000000
#define SBSP_WRITENOHISTORY 0x08000000
#if _WIN32_IE >= _WIN32_IE_IE60SP2
#define SBSP_TRUSTEDFORACTIVEX 0x10000000
#endif
#if _WIN32_IE >= _WIN32_IE_IE70
#define SBSP_FEEDNAVIGATION 0x20000000
#endif
#define SBSP_REDIRECT 0x40000000
#define SBSP_INITIATEDBYHLINKFRAME 0x80000000

#define FCW_STATUS 0x0001
#define FCW_TOOLBAR 0x0002
#define FCW_TREE 0x0003
#define FCW_INTERNETBAR 0x0006
#define FCW_PROGRESS 0x0008

#define FCT_MERGE 0x0001
#define FCT_CONFIGABLE 0x0002
#define FCT_ADDTOEND 0x0004

#if 0
typedef LPARAM LPTBBUTTONSB;
#else
#include <commctrl.h>

typedef LPTBBUTTON LPTBBUTTONSB;
#endif

/*****************************************************************************
 * IShellBrowser interface
 */
#ifndef __IShellBrowser_INTERFACE_DEFINED__
#define __IShellBrowser_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellBrowser, 0x000214e2, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
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 holemenuRes,
        HWND hwndActiveObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveMenusSB(
        HMENU hmenuShared) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetStatusTextSB(
        LPCWSTR pszStatusText) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableModelessSB(
        WINBOOL fEnable) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE BrowseObject(
        PCUIDLIST_RELATIVE 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,
        WINBOOL fEnterMode);

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

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

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *BrowseObject)(
        IShellBrowser *This,
        PCUIDLIST_RELATIVE 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,holemenuRes,hwndActiveObject) (This)->lpVtbl->SetMenuSB(This,hmenuShared,holemenuRes,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 inline HRESULT IShellBrowser_QueryInterface(IShellBrowser* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellBrowser_AddRef(IShellBrowser* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellBrowser_Release(IShellBrowser* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static inline HRESULT IShellBrowser_GetWindow(IShellBrowser* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static inline HRESULT IShellBrowser_ContextSensitiveHelp(IShellBrowser* This,WINBOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IShellBrowser methods ***/
static inline HRESULT IShellBrowser_InsertMenusSB(IShellBrowser* This,HMENU hmenuShared,LPOLEMENUGROUPWIDTHS lpMenuWidths) {
    return This->lpVtbl->InsertMenusSB(This,hmenuShared,lpMenuWidths);
}
static inline HRESULT IShellBrowser_SetMenuSB(IShellBrowser* This,HMENU hmenuShared,HOLEMENU holemenuRes,HWND hwndActiveObject) {
    return This->lpVtbl->SetMenuSB(This,hmenuShared,holemenuRes,hwndActiveObject);
}
static inline HRESULT IShellBrowser_RemoveMenusSB(IShellBrowser* This,HMENU hmenuShared) {
    return This->lpVtbl->RemoveMenusSB(This,hmenuShared);
}
static inline HRESULT IShellBrowser_SetStatusTextSB(IShellBrowser* This,LPCWSTR pszStatusText) {
    return This->lpVtbl->SetStatusTextSB(This,pszStatusText);
}
static inline HRESULT IShellBrowser_EnableModelessSB(IShellBrowser* This,WINBOOL fEnable) {
    return This->lpVtbl->EnableModelessSB(This,fEnable);
}
static inline HRESULT IShellBrowser_TranslateAcceleratorSB(IShellBrowser* This,MSG *pmsg,WORD wID) {
    return This->lpVtbl->TranslateAcceleratorSB(This,pmsg,wID);
}
static inline HRESULT IShellBrowser_BrowseObject(IShellBrowser* This,PCUIDLIST_RELATIVE pidl,UINT wFlags) {
    return This->lpVtbl->BrowseObject(This,pidl,wFlags);
}
static inline HRESULT IShellBrowser_GetViewStateStream(IShellBrowser* This,DWORD grfMode,IStream **ppStrm) {
    return This->lpVtbl->GetViewStateStream(This,grfMode,ppStrm);
}
static inline HRESULT IShellBrowser_GetControlWindow(IShellBrowser* This,UINT id,HWND *phwnd) {
    return This->lpVtbl->GetControlWindow(This,id,phwnd);
}
static inline 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 inline HRESULT IShellBrowser_QueryActiveShellView(IShellBrowser* This,IShellView **ppshv) {
    return This->lpVtbl->QueryActiveShellView(This,ppshv);
}
static inline HRESULT IShellBrowser_OnViewWindowActive(IShellBrowser* This,IShellView *pshv) {
    return This->lpVtbl->OnViewWindowActive(This,pshv);
}
static inline 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__ */


typedef IShellBrowser *LPSHELLBROWSER;

/*****************************************************************************
 * 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 guidService,
        IServiceProvider *psp,
        DWORD *pdwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE RevokeService(
        DWORD dwCookie) = 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 guidService,
        IServiceProvider *psp,
        DWORD *pdwCookie);

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

    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,guidService,psp,pdwCookie) (This)->lpVtbl->ProfferService(This,guidService,psp,pdwCookie)
#define IProfferService_RevokeService(This,dwCookie) (This)->lpVtbl->RevokeService(This,dwCookie)
#else
/*** IUnknown methods ***/
static inline HRESULT IProfferService_QueryInterface(IProfferService* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IProfferService_AddRef(IProfferService* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IProfferService_Release(IProfferService* This) {
    return This->lpVtbl->Release(This);
}
/*** IProfferService methods ***/
static inline HRESULT IProfferService_ProfferService(IProfferService* This,REFGUID guidService,IServiceProvider *psp,DWORD *pdwCookie) {
    return This->lpVtbl->ProfferService(This,guidService,psp,pdwCookie);
}
static inline HRESULT IProfferService_RevokeService(IProfferService* This,DWORD dwCookie) {
    return This->lpVtbl->RevokeService(This,dwCookie);
}
#endif
#endif

#endif


#endif  /* __IProfferService_INTERFACE_DEFINED__ */


#define SID_SProfferService IID_IProfferService
#define STR_DONT_RESOLVE_LINK L"Don't Resolve Link"
#define STR_GET_ASYNC_HANDLER L"GetAsyncHandler"

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

typedef enum _SIGDN {
    SIGDN_NORMALDISPLAY = 0x0,
    SIGDN_PARENTRELATIVEPARSING = (int)0x80018001,
    SIGDN_DESKTOPABSOLUTEPARSING = (int)0x80028000,
    SIGDN_PARENTRELATIVEEDITING = (int)0x80031001,
    SIGDN_DESKTOPABSOLUTEEDITING = (int)0x8004c000,
    SIGDN_FILESYSPATH = (int)0x80058000,
    SIGDN_URL = (int)0x80068000,
    SIGDN_PARENTRELATIVEFORADDRESSBAR = (int)0x8007c001,
    SIGDN_PARENTRELATIVE = (int)0x80080001,
    SIGDN_PARENTRELATIVEFORUI = (int)0x80094001
} SIGDN;

enum _SICHINTF {
    SICHINT_DISPLAY = 0x0,
    SICHINT_ALLFIELDS = (int)0x80000000,
    SICHINT_CANONICAL = 0x10000000,
    SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000
};

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 bhid,
        REFIID riid,
        void **ppv) = 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 bhid,
        REFIID riid,
        void **ppv);

    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,bhid,riid,ppv) (This)->lpVtbl->BindToHandler(This,pbc,bhid,riid,ppv)
#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 inline HRESULT IShellItem_QueryInterface(IShellItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellItem_AddRef(IShellItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellItem_Release(IShellItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellItem methods ***/
static inline HRESULT IShellItem_BindToHandler(IShellItem* This,IBindCtx *pbc,REFGUID bhid,REFIID riid,void **ppv) {
    return This->lpVtbl->BindToHandler(This,pbc,bhid,riid,ppv);
}
static inline HRESULT IShellItem_GetParent(IShellItem* This,IShellItem **ppsi) {
    return This->lpVtbl->GetParent(This,ppsi);
}
static inline HRESULT IShellItem_GetDisplayName(IShellItem* This,SIGDN sigdnName,LPWSTR *ppszName) {
    return This->lpVtbl->GetDisplayName(This,sigdnName,ppszName);
}
static inline HRESULT IShellItem_GetAttributes(IShellItem* This,SFGAOF sfgaoMask,SFGAOF *psfgaoAttribs) {
    return This->lpVtbl->GetAttributes(This,sfgaoMask,psfgaoAttribs);
}
static inline 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__ */


SHSTDAPI_(PIDLIST_ABSOLUTE) SHSimpleIDListFromPath(PCWSTR pszPath);

#if _WIN32_IE >= _WIN32_IE_IE70
  SHSTDAPI SHCreateItemFromIDList(PCIDLIST_ABSOLUTE pidl, REFIID riid, void **ppv);
  SHSTDAPI SHCreateItemFromParsingName(PCWSTR pszPath, IBindCtx *pbc, REFIID riid, void **ppv);
  SHSTDAPI SHCreateItemWithParent(PCIDLIST_ABSOLUTE pidlParent, IShellFolder *psfParent, PCUITEMID_CHILD pidl, REFIID riid, void **ppvItem);
  SHSTDAPI SHCreateItemFromRelativeName(IShellItem *psiParent, PCWSTR pszName, IBindCtx *pbc, REFIID riid, void **ppv);
#endif
#if NTDDI_VERSION >= NTDDI_VISTA
  SHSTDAPI SHCreateItemInKnownFolder(REFKNOWNFOLDERID kfid, DWORD dwKFFlags, PCWSTR pszItem, REFIID riid, void **ppv);
  SHSTDAPI SHGetIDListFromObject(IUnknown *punk, PIDLIST_ABSOLUTE *ppidl);
  SHSTDAPI SHGetItemFromObject(IUnknown *punk, REFIID riid, void **ppv);
  SHSTDAPI SHGetPropertyStoreFromIDList(PCIDLIST_ABSOLUTE pidl, GETPROPERTYSTOREFLAGS flags, REFIID riid, void **ppv);
  SHSTDAPI SHGetPropertyStoreFromParsingName(PCWSTR pszPath, IBindCtx *pbc, GETPROPERTYSTOREFLAGS flags, REFIID riid, void **ppv);
  SHSTDAPI SHGetNameFromIDList(PCIDLIST_ABSOLUTE pidl, SIGDN sigdnName, PWSTR *ppszName);
#endif
#if NTDDI_VERSION >= NTDDI_WIN7
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)

  STDAPI SHGetItemFromDataObject(IDataObject *pdtobj, DATAOBJ_GET_ITEM_FLAGS dwFlags, REFIID riid, void **ppv);
#endif

#define STR_GPS_HANDLERPROPERTIESONLY L"GPS_HANDLERPROPERTIESONLY"
#define STR_GPS_FASTPROPERTIESONLY L"GPS_FASTPROPERTIESONLY"
#define STR_GPS_OPENSLOWITEM L"GPS_OPENSLOWITEM"
#define STR_GPS_DELAYCREATION L"GPS_DELAYCREATION"
#define STR_GPS_BESTEFFORT L"GPS_BESTEFFORT"
#define STR_GPS_NO_OPLOCK L"GPS_NO_OPLOCK"

/*****************************************************************************
 * 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,
        WINBOOL *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 bhid,
        REFIID riid,
        void **ppv);

    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,
        WINBOOL *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,bhid,riid,ppv) (This)->lpVtbl->BindToHandler(This,pbc,bhid,riid,ppv)
#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 inline HRESULT IShellItem2_QueryInterface(IShellItem2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellItem2_AddRef(IShellItem2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellItem2_Release(IShellItem2* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellItem methods ***/
static inline HRESULT IShellItem2_BindToHandler(IShellItem2* This,IBindCtx *pbc,REFGUID bhid,REFIID riid,void **ppv) {
    return This->lpVtbl->BindToHandler(This,pbc,bhid,riid,ppv);
}
static inline HRESULT IShellItem2_GetParent(IShellItem2* This,IShellItem **ppsi) {
    return This->lpVtbl->GetParent(This,ppsi);
}
static inline HRESULT IShellItem2_GetDisplayName(IShellItem2* This,SIGDN sigdnName,LPWSTR *ppszName) {
    return This->lpVtbl->GetDisplayName(This,sigdnName,ppszName);
}
static inline HRESULT IShellItem2_GetAttributes(IShellItem2* This,SFGAOF sfgaoMask,SFGAOF *psfgaoAttribs) {
    return This->lpVtbl->GetAttributes(This,sfgaoMask,psfgaoAttribs);
}
static inline HRESULT IShellItem2_Compare(IShellItem2* This,IShellItem *psi,SICHINTF hint,int *piOrder) {
    return This->lpVtbl->Compare(This,psi,hint,piOrder);
}
/*** IShellItem2 methods ***/
static inline HRESULT IShellItem2_GetPropertyStore(IShellItem2* This,GETPROPERTYSTOREFLAGS flags,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyStore(This,flags,riid,ppv);
}
static inline HRESULT IShellItem2_GetPropertyStoreWithCreateObject(IShellItem2* This,GETPROPERTYSTOREFLAGS flags,IUnknown *punkCreateObject,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyStoreWithCreateObject(This,flags,punkCreateObject,riid,ppv);
}
static inline 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 inline HRESULT IShellItem2_GetPropertyDescriptionList(IShellItem2* This,REFPROPERTYKEY keyType,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyDescriptionList(This,keyType,riid,ppv);
}
static inline HRESULT IShellItem2_Update(IShellItem2* This,IBindCtx *pbc) {
    return This->lpVtbl->Update(This,pbc);
}
static inline HRESULT IShellItem2_GetProperty(IShellItem2* This,REFPROPERTYKEY key,PROPVARIANT *ppropvar) {
    return This->lpVtbl->GetProperty(This,key,ppropvar);
}
static inline HRESULT IShellItem2_GetCLSID(IShellItem2* This,REFPROPERTYKEY key,CLSID *pclsid) {
    return This->lpVtbl->GetCLSID(This,key,pclsid);
}
static inline HRESULT IShellItem2_GetFileTime(IShellItem2* This,REFPROPERTYKEY key,FILETIME *pft) {
    return This->lpVtbl->GetFileTime(This,key,pft);
}
static inline HRESULT IShellItem2_GetInt32(IShellItem2* This,REFPROPERTYKEY key,int *pi) {
    return This->lpVtbl->GetInt32(This,key,pi);
}
static inline HRESULT IShellItem2_GetString(IShellItem2* This,REFPROPERTYKEY key,LPWSTR *ppsz) {
    return This->lpVtbl->GetString(This,key,ppsz);
}
static inline HRESULT IShellItem2_GetUInt32(IShellItem2* This,REFPROPERTYKEY key,ULONG *pui) {
    return This->lpVtbl->GetUInt32(This,key,pui);
}
static inline HRESULT IShellItem2_GetUInt64(IShellItem2* This,REFPROPERTYKEY key,ULONGLONG *pull) {
    return This->lpVtbl->GetUInt64(This,key,pull);
}
static inline HRESULT IShellItem2_GetBool(IShellItem2* This,REFPROPERTYKEY key,WINBOOL *pf) {
    return This->lpVtbl->GetBool(This,key,pf);
}
#endif
#endif

#endif


#endif  /* __IShellItem2_INTERFACE_DEFINED__ */


enum _SIIGBF {
    SIIGBF_RESIZETOFIT = 0x0,
    SIIGBF_BIGGERSIZEOK = 0x1,
    SIIGBF_MEMORYONLY = 0x2,
    SIIGBF_ICONONLY = 0x4,
    SIIGBF_THUMBNAILONLY = 0x8,
    SIIGBF_INCACHEONLY = 0x10,
    SIIGBF_CROPTOSQUARE = 0x20,
    SIIGBF_WIDETHUMBNAILS = 0x40,
    SIIGBF_ICONBACKGROUND = 0x80,
    SIIGBF_SCALEUP = 0x100
};

typedef int SIIGBF;

/*****************************************************************************
 * IShellItemImageFactory interface
 */
#ifndef __IShellItemImageFactory_INTERFACE_DEFINED__
#define __IShellItemImageFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellItemImageFactory, 0xbcc18b79, 0xba16, 0x442f, 0x80,0xc4, 0x8a,0x59,0xc3,0x0c,0x46,0x3b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bcc18b79-ba16-442f-80c4-8a59c30c463b")
IShellItemImageFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetImage(
        SIZE size,
        SIIGBF flags,
        HBITMAP *phbm) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellItemImageFactory, 0xbcc18b79, 0xba16, 0x442f, 0x80,0xc4, 0x8a,0x59,0xc3,0x0c,0x46,0x3b)
#endif
#else
typedef struct IShellItemImageFactoryVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IShellItemImageFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *GetImage)(
        IShellItemImageFactory *This,
        SIZE size,
        SIIGBF flags,
        HBITMAP *phbm);

    END_INTERFACE
} IShellItemImageFactoryVtbl;

interface IShellItemImageFactory {
    CONST_VTBL IShellItemImageFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellItemImageFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellItemImageFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellItemImageFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IShellItemImageFactory methods ***/
#define IShellItemImageFactory_GetImage(This,size,flags,phbm) (This)->lpVtbl->GetImage(This,size,flags,phbm)
#else
/*** IUnknown methods ***/
static inline HRESULT IShellItemImageFactory_QueryInterface(IShellItemImageFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellItemImageFactory_AddRef(IShellItemImageFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellItemImageFactory_Release(IShellItemImageFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellItemImageFactory methods ***/
static inline HRESULT IShellItemImageFactory_GetImage(IShellItemImageFactory* This,SIZE size,SIIGBF flags,HBITMAP *phbm) {
    return This->lpVtbl->GetImage(This,size,flags,phbm);
}
#endif
#endif

#endif


#endif  /* __IShellItemImageFactory_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IUserAccountChangeCallback interface
 */
#ifndef __IUserAccountChangeCallback_INTERFACE_DEFINED__
#define __IUserAccountChangeCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUserAccountChangeCallback, 0xa561e69a, 0xb4b8, 0x4113, 0x91,0xa5, 0x64,0xc6,0xbc,0xca,0x34,0x30);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a561e69a-b4b8-4113-91a5-64c6bcca3430")
IUserAccountChangeCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnPictureChange(
        LPCWSTR pszUserName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUserAccountChangeCallback, 0xa561e69a, 0xb4b8, 0x4113, 0x91,0xa5, 0x64,0xc6,0xbc,0xca,0x34,0x30)
#endif
#else
typedef struct IUserAccountChangeCallbackVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IUserAccountChangeCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *OnPictureChange)(
        IUserAccountChangeCallback *This,
        LPCWSTR pszUserName);

    END_INTERFACE
} IUserAccountChangeCallbackVtbl;

interface IUserAccountChangeCallback {
    CONST_VTBL IUserAccountChangeCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUserAccountChangeCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUserAccountChangeCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUserAccountChangeCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IUserAccountChangeCallback methods ***/
#define IUserAccountChangeCallback_OnPictureChange(This,pszUserName) (This)->lpVtbl->OnPictureChange(This,pszUserName)
#else
/*** IUnknown methods ***/
static inline HRESULT IUserAccountChangeCallback_QueryInterface(IUserAccountChangeCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUserAccountChangeCallback_AddRef(IUserAccountChangeCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUserAccountChangeCallback_Release(IUserAccountChangeCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IUserAccountChangeCallback methods ***/
static inline HRESULT IUserAccountChangeCallback_OnPictureChange(IUserAccountChangeCallback* This,LPCWSTR pszUserName) {
    return This->lpVtbl->OnPictureChange(This,pszUserName);
}
#endif
#endif

#endif


#endif  /* __IUserAccountChangeCallback_INTERFACE_DEFINED__ */


/*****************************************************************************
 * 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 inline HRESULT IEnumShellItems_QueryInterface(IEnumShellItems* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IEnumShellItems_AddRef(IEnumShellItems* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IEnumShellItems_Release(IEnumShellItems* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumShellItems methods ***/
static inline HRESULT IEnumShellItems_Next(IEnumShellItems* This,ULONG celt,IShellItem **rgelt,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
}
static inline HRESULT IEnumShellItems_Skip(IEnumShellItems* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static inline HRESULT IEnumShellItems_Reset(IEnumShellItems* This) {
    return This->lpVtbl->Reset(This);
}
static inline 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__ */


typedef GUID STGTRANSCONFIRMATION;
typedef GUID *LPSTGTRANSCONFIRMATION;

typedef enum STGOP {
    STGOP_MOVE = 1,
    STGOP_COPY = 2,
    STGOP_SYNC = 3,
    STGOP_REMOVE = 5,
    STGOP_RENAME = 6,
    STGOP_APPLYPROPERTIES = 8,
    STGOP_NEW = 10
} STGOP;

enum _TRANSFER_SOURCE_FLAGS {
    TSF_NORMAL = 0x0,
    TSF_FAIL_EXIST = 0x0,
    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;

#if _WIN32_IE >= _WIN32_IE_IE70
/*****************************************************************************
 * ITransferAdviseSink interface
 */
#ifndef __ITransferAdviseSink_INTERFACE_DEFINED__
#define __ITransferAdviseSink_INTERFACE_DEFINED__

enum _TRANSFER_ADVISE_STATE {
    TS_NONE = 0x0,
    TS_PERFORMING = 0x1,
    TS_PREPARING = 0x2,
    TS_INDETERMINATE = 0x4
};

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 ullSizeCurrent,
        ULONGLONG ullSizeTotal,
        int nFilesCurrent,
        int nFilesTotal,
        int nFoldersCurrent,
        int nFoldersTotal) = 0;

    virtual HRESULT STDMETHODCALLTYPE UpdateTransferState(
        TRANSFER_ADVISE_STATE ts) = 0;

    virtual HRESULT STDMETHODCALLTYPE ConfirmOverwrite(
        IShellItem *psiSource,
        IShellItem *psiDestParent,
        LPCWSTR pszName) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE FileFailure(
        IShellItem *psi,
        LPCWSTR pszItem,
        HRESULT hrError,
        LPWSTR pszRename,
        ULONG cchRename) = 0;

    virtual HRESULT STDMETHODCALLTYPE SubStreamFailure(
        IShellItem *psi,
        LPCWSTR pszStreamName,
        HRESULT hrError) = 0;

    virtual HRESULT STDMETHODCALLTYPE PropertyFailure(
        IShellItem *psi,
        const PROPERTYKEY *pkey,
        HRESULT hrError) = 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 ullSizeCurrent,
        ULONGLONG ullSizeTotal,
        int nFilesCurrent,
        int nFilesTotal,
        int nFoldersCurrent,
        int nFoldersTotal);

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

    HRESULT (STDMETHODCALLTYPE *ConfirmOverwrite)(
        ITransferAdviseSink *This,
        IShellItem *psiSource,
        IShellItem *psiDestParent,
        LPCWSTR pszName);

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

    HRESULT (STDMETHODCALLTYPE *FileFailure)(
        ITransferAdviseSink *This,
        IShellItem *psi,
        LPCWSTR pszItem,
        HRESULT hrError,
        LPWSTR pszRename,
        ULONG cchRename);

    HRESULT (STDMETHODCALLTYPE *SubStreamFailure)(
        ITransferAdviseSink *This,
        IShellItem *psi,
        LPCWSTR pszStreamName,
        HRESULT hrError);

    HRESULT (STDMETHODCALLTYPE *PropertyFailure)(
        ITransferAdviseSink *This,
        IShellItem *psi,
        const PROPERTYKEY *pkey,
        HRESULT hrError);

    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,ullSizeCurrent,ullSizeTotal,nFilesCurrent,nFilesTotal,nFoldersCurrent,nFoldersTotal) (This)->lpVtbl->UpdateProgress(This,ullSizeCurrent,ullSizeTotal,nFilesCurrent,nFilesTotal,nFoldersCurrent,nFoldersTotal)
#define ITransferAdviseSink_UpdateTransferState(This,ts) (This)->lpVtbl->UpdateTransferState(This,ts)
#define ITransferAdviseSink_ConfirmOverwrite(This,psiSource,psiDestParent,pszName) (This)->lpVtbl->ConfirmOverwrite(This,psiSource,psiDestParent,pszName)
#define ITransferAdviseSink_ConfirmEncryptionLoss(This,psiSource) (This)->lpVtbl->ConfirmEncryptionLoss(This,psiSource)
#define ITransferAdviseSink_FileFailure(This,psi,pszItem,hrError,pszRename,cchRename) (This)->lpVtbl->FileFailure(This,psi,pszItem,hrError,pszRename,cchRename)
#define ITransferAdviseSink_SubStreamFailure(This,psi,pszStreamName,hrError) (This)->lpVtbl->SubStreamFailure(This,psi,pszStreamName,hrError)
#define ITransferAdviseSink_PropertyFailure(This,psi,pkey,hrError) (This)->lpVtbl->PropertyFailure(This,psi,pkey,hrError)
#else
/*** IUnknown methods ***/
static inline HRESULT ITransferAdviseSink_QueryInterface(ITransferAdviseSink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITransferAdviseSink_AddRef(ITransferAdviseSink* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITransferAdviseSink_Release(ITransferAdviseSink* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransferAdviseSink methods ***/
static inline HRESULT ITransferAdviseSink_UpdateProgress(ITransferAdviseSink* This,ULONGLONG ullSizeCurrent,ULONGLONG ullSizeTotal,int nFilesCurrent,int nFilesTotal,int nFoldersCurrent,int nFoldersTotal) {
    return This->lpVtbl->UpdateProgress(This,ullSizeCurrent,ullSizeTotal,nFilesCurrent,nFilesTotal,nFoldersCurrent,nFoldersTotal);
}
static inline HRESULT ITransferAdviseSink_UpdateTransferState(ITransferAdviseSink* This,TRANSFER_ADVISE_STATE ts) {
    return This->lpVtbl->UpdateTransferState(This,ts);
}
static inline HRESULT ITransferAdviseSink_ConfirmOverwrite(ITransferAdviseSink* This,IShellItem *psiSource,IShellItem *psiDestParent,LPCWSTR pszName) {
    return This->lpVtbl->ConfirmOverwrite(This,psiSource,psiDestParent,pszName);
}
static inline HRESULT ITransferAdviseSink_ConfirmEncryptionLoss(ITransferAdviseSink* This,IShellItem *psiSource) {
    return This->lpVtbl->ConfirmEncryptionLoss(This,psiSource);
}
static inline HRESULT ITransferAdviseSink_FileFailure(ITransferAdviseSink* This,IShellItem *psi,LPCWSTR pszItem,HRESULT hrError,LPWSTR pszRename,ULONG cchRename) {
    return This->lpVtbl->FileFailure(This,psi,pszItem,hrError,pszRename,cchRename);
}
static inline HRESULT ITransferAdviseSink_SubStreamFailure(ITransferAdviseSink* This,IShellItem *psi,LPCWSTR pszStreamName,HRESULT hrError) {
    return This->lpVtbl->SubStreamFailure(This,psi,pszStreamName,hrError);
}
static inline HRESULT ITransferAdviseSink_PropertyFailure(ITransferAdviseSink* This,IShellItem *psi,const PROPERTYKEY *pkey,HRESULT hrError) {
    return This->lpVtbl->PropertyFailure(This,psi,pkey,hrError);
}
#endif
#endif

#endif


#endif  /* __ITransferAdviseSink_INTERFACE_DEFINED__ */

#endif

#if NTDDI_VERSION >= NTDDI_VISTA
/*****************************************************************************
 * 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 *psink,
        DWORD *pdwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unadvise(
        DWORD dwCookie) = 0;

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

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

    virtual HRESULT STDMETHODCALLTYPE MoveItem(
        IShellItem *psi,
        IShellItem *psiParentDst,
        LPCWSTR pszNameDst,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **ppsiNew) = 0;

    virtual HRESULT STDMETHODCALLTYPE RecycleItem(
        IShellItem *psiSource,
        IShellItem *psiParentDest,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **ppsiNewDest) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE RenameItem(
        IShellItem *psiSource,
        LPCWSTR pszNewName,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **ppsiNewDest) = 0;

    virtual HRESULT STDMETHODCALLTYPE LinkItem(
        IShellItem *psiSource,
        IShellItem *psiParentDest,
        LPCWSTR pszNewName,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **ppsiNewDest) = 0;

    virtual HRESULT STDMETHODCALLTYPE ApplyPropertiesToItem(
        IShellItem *psiSource,
        IShellItem **ppsiNew) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultDestinationName(
        IShellItem *psiSource,
        IShellItem *psiParentDest,
        LPWSTR *ppszDestinationName) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE LeaveFolder(
        IShellItem *psiChildFolderDest) = 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 *psink,
        DWORD *pdwCookie);

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

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

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

    HRESULT (STDMETHODCALLTYPE *MoveItem)(
        ITransferSource *This,
        IShellItem *psi,
        IShellItem *psiParentDst,
        LPCWSTR pszNameDst,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **ppsiNew);

    HRESULT (STDMETHODCALLTYPE *RecycleItem)(
        ITransferSource *This,
        IShellItem *psiSource,
        IShellItem *psiParentDest,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **ppsiNewDest);

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

    HRESULT (STDMETHODCALLTYPE *RenameItem)(
        ITransferSource *This,
        IShellItem *psiSource,
        LPCWSTR pszNewName,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **ppsiNewDest);

    HRESULT (STDMETHODCALLTYPE *LinkItem)(
        ITransferSource *This,
        IShellItem *psiSource,
        IShellItem *psiParentDest,
        LPCWSTR pszNewName,
        TRANSFER_SOURCE_FLAGS flags,
        IShellItem **ppsiNewDest);

    HRESULT (STDMETHODCALLTYPE *ApplyPropertiesToItem)(
        ITransferSource *This,
        IShellItem *psiSource,
        IShellItem **ppsiNew);

    HRESULT (STDMETHODCALLTYPE *GetDefaultDestinationName)(
        ITransferSource *This,
        IShellItem *psiSource,
        IShellItem *psiParentDest,
        LPWSTR *ppszDestinationName);

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

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

    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,psink,pdwCookie) (This)->lpVtbl->Advise(This,psink,pdwCookie)
#define ITransferSource_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
#define ITransferSource_SetProperties(This,pproparray) (This)->lpVtbl->SetProperties(This,pproparray)
#define ITransferSource_OpenItem(This,psi,flags,riid,ppv) (This)->lpVtbl->OpenItem(This,psi,flags,riid,ppv)
#define ITransferSource_MoveItem(This,psi,psiParentDst,pszNameDst,flags,ppsiNew) (This)->lpVtbl->MoveItem(This,psi,psiParentDst,pszNameDst,flags,ppsiNew)
#define ITransferSource_RecycleItem(This,psiSource,psiParentDest,flags,ppsiNewDest) (This)->lpVtbl->RecycleItem(This,psiSource,psiParentDest,flags,ppsiNewDest)
#define ITransferSource_RemoveItem(This,psiSource,flags) (This)->lpVtbl->RemoveItem(This,psiSource,flags)
#define ITransferSource_RenameItem(This,psiSource,pszNewName,flags,ppsiNewDest) (This)->lpVtbl->RenameItem(This,psiSource,pszNewName,flags,ppsiNewDest)
#define ITransferSource_LinkItem(This,psiSource,psiParentDest,pszNewName,flags,ppsiNewDest) (This)->lpVtbl->LinkItem(This,psiSource,psiParentDest,pszNewName,flags,ppsiNewDest)
#define ITransferSource_ApplyPropertiesToItem(This,psiSource,ppsiNew) (This)->lpVtbl->ApplyPropertiesToItem(This,psiSource,ppsiNew)
#define ITransferSource_GetDefaultDestinationName(This,psiSource,psiParentDest,ppszDestinationName) (This)->lpVtbl->GetDefaultDestinationName(This,psiSource,psiParentDest,ppszDestinationName)
#define ITransferSource_EnterFolder(This,psiChildFolderDest) (This)->lpVtbl->EnterFolder(This,psiChildFolderDest)
#define ITransferSource_LeaveFolder(This,psiChildFolderDest) (This)->lpVtbl->LeaveFolder(This,psiChildFolderDest)
#else
/*** IUnknown methods ***/
static inline HRESULT ITransferSource_QueryInterface(ITransferSource* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITransferSource_AddRef(ITransferSource* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITransferSource_Release(ITransferSource* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransferSource methods ***/
static inline HRESULT ITransferSource_Advise(ITransferSource* This,ITransferAdviseSink *psink,DWORD *pdwCookie) {
    return This->lpVtbl->Advise(This,psink,pdwCookie);
}
static inline HRESULT ITransferSource_Unadvise(ITransferSource* This,DWORD dwCookie) {
    return This->lpVtbl->Unadvise(This,dwCookie);
}
static inline HRESULT ITransferSource_SetProperties(ITransferSource* This,IPropertyChangeArray *pproparray) {
    return This->lpVtbl->SetProperties(This,pproparray);
}
static inline HRESULT ITransferSource_OpenItem(ITransferSource* This,IShellItem *psi,TRANSFER_SOURCE_FLAGS flags,REFIID riid,void **ppv) {
    return This->lpVtbl->OpenItem(This,psi,flags,riid,ppv);
}
static inline HRESULT ITransferSource_MoveItem(ITransferSource* This,IShellItem *psi,IShellItem *psiParentDst,LPCWSTR pszNameDst,TRANSFER_SOURCE_FLAGS flags,IShellItem **ppsiNew) {
    return This->lpVtbl->MoveItem(This,psi,psiParentDst,pszNameDst,flags,ppsiNew);
}
static inline HRESULT ITransferSource_RecycleItem(ITransferSource* This,IShellItem *psiSource,IShellItem *psiParentDest,TRANSFER_SOURCE_FLAGS flags,IShellItem **ppsiNewDest) {
    return This->lpVtbl->RecycleItem(This,psiSource,psiParentDest,flags,ppsiNewDest);
}
static inline HRESULT ITransferSource_RemoveItem(ITransferSource* This,IShellItem *psiSource,TRANSFER_SOURCE_FLAGS flags) {
    return This->lpVtbl->RemoveItem(This,psiSource,flags);
}
static inline HRESULT ITransferSource_RenameItem(ITransferSource* This,IShellItem *psiSource,LPCWSTR pszNewName,TRANSFER_SOURCE_FLAGS flags,IShellItem **ppsiNewDest) {
    return This->lpVtbl->RenameItem(This,psiSource,pszNewName,flags,ppsiNewDest);
}
static inline HRESULT ITransferSource_LinkItem(ITransferSource* This,IShellItem *psiSource,IShellItem *psiParentDest,LPCWSTR pszNewName,TRANSFER_SOURCE_FLAGS flags,IShellItem **ppsiNewDest) {
    return This->lpVtbl->LinkItem(This,psiSource,psiParentDest,pszNewName,flags,ppsiNewDest);
}
static inline HRESULT ITransferSource_ApplyPropertiesToItem(ITransferSource* This,IShellItem *psiSource,IShellItem **ppsiNew) {
    return This->lpVtbl->ApplyPropertiesToItem(This,psiSource,ppsiNew);
}
static inline HRESULT ITransferSource_GetDefaultDestinationName(ITransferSource* This,IShellItem *psiSource,IShellItem *psiParentDest,LPWSTR *ppszDestinationName) {
    return This->lpVtbl->GetDefaultDestinationName(This,psiSource,psiParentDest,ppszDestinationName);
}
static inline HRESULT ITransferSource_EnterFolder(ITransferSource* This,IShellItem *psiChildFolderDest) {
    return This->lpVtbl->EnterFolder(This,psiChildFolderDest);
}
static inline HRESULT ITransferSource_LeaveFolder(ITransferSource* This,IShellItem *psiChildFolderDest) {
    return This->lpVtbl->LeaveFolder(This,psiChildFolderDest);
}
#endif
#endif

#endif


#endif  /* __ITransferSource_INTERFACE_DEFINED__ */

#endif

typedef struct SHELL_ITEM_RESOURCE {
    GUID guidType;
    WCHAR szName[260];
} SHELL_ITEM_RESOURCE;

/*****************************************************************************
 * IEnumResources interface
 */
#ifndef __IEnumResources_INTERFACE_DEFINED__
#define __IEnumResources_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumResources, 0x2dd81fe3, 0xa83c, 0x4da9, 0xa3,0x30, 0x47,0x24,0x9d,0x34,0x5b,0xa1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2dd81fe3-a83c-4da9-a330-47249d345ba1")
IEnumResources : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        SHELL_ITEM_RESOURCE *psir,
        ULONG *pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        IEnumResources **ppenumr) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumResources, 0x2dd81fe3, 0xa83c, 0x4da9, 0xa3,0x30, 0x47,0x24,0x9d,0x34,0x5b,0xa1)
#endif
#else
typedef struct IEnumResourcesVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumResources methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumResources *This,
        ULONG celt,
        SHELL_ITEM_RESOURCE *psir,
        ULONG *pceltFetched);

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

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

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumResources *This,
        IEnumResources **ppenumr);

    END_INTERFACE
} IEnumResourcesVtbl;

interface IEnumResources {
    CONST_VTBL IEnumResourcesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumResources_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumResources_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumResources_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumResources methods ***/
#define IEnumResources_Next(This,celt,psir,pceltFetched) (This)->lpVtbl->Next(This,celt,psir,pceltFetched)
#define IEnumResources_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumResources_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumResources_Clone(This,ppenumr) (This)->lpVtbl->Clone(This,ppenumr)
#else
/*** IUnknown methods ***/
static inline HRESULT IEnumResources_QueryInterface(IEnumResources* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IEnumResources_AddRef(IEnumResources* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IEnumResources_Release(IEnumResources* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumResources methods ***/
static inline HRESULT IEnumResources_Next(IEnumResources* This,ULONG celt,SHELL_ITEM_RESOURCE *psir,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,psir,pceltFetched);
}
static inline HRESULT IEnumResources_Skip(IEnumResources* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static inline HRESULT IEnumResources_Reset(IEnumResources* This) {
    return This->lpVtbl->Reset(This);
}
static inline HRESULT IEnumResources_Clone(IEnumResources* This,IEnumResources **ppenumr) {
    return This->lpVtbl->Clone(This,ppenumr);
}
#endif
#endif

#endif


#endif  /* __IEnumResources_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IShellItemResources interface
 */
#ifndef __IShellItemResources_INTERFACE_DEFINED__
#define __IShellItemResources_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellItemResources, 0xff5693be, 0x2ce0, 0x4d48, 0xb5,0xc5, 0x40,0x81,0x7d,0x1a,0xcd,0xb9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ff5693be-2ce0-4d48-b5c5-40817d1acdb9")
IShellItemResources : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetAttributes(
        DWORD *pdwAttributes) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSize(
        ULONGLONG *pullSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimes(
        FILETIME *pftCreation,
        FILETIME *pftWrite,
        FILETIME *pftAccess) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTimes(
        const FILETIME *pftCreation,
        const FILETIME *pftWrite,
        const FILETIME *pftAccess) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetResourceDescription(
        const SHELL_ITEM_RESOURCE *pcsir,
        LPWSTR *ppszDescription) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumResources(
        IEnumResources **ppenumr) = 0;

    virtual HRESULT STDMETHODCALLTYPE SupportsResource(
        const SHELL_ITEM_RESOURCE *pcsir) = 0;

    virtual HRESULT STDMETHODCALLTYPE OpenResource(
        const SHELL_ITEM_RESOURCE *pcsir,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateResource(
        const SHELL_ITEM_RESOURCE *pcsir,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE MarkForDelete(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellItemResources, 0xff5693be, 0x2ce0, 0x4d48, 0xb5,0xc5, 0x40,0x81,0x7d,0x1a,0xcd,0xb9)
#endif
#else
typedef struct IShellItemResourcesVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IShellItemResources methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAttributes)(
        IShellItemResources *This,
        DWORD *pdwAttributes);

    HRESULT (STDMETHODCALLTYPE *GetSize)(
        IShellItemResources *This,
        ULONGLONG *pullSize);

    HRESULT (STDMETHODCALLTYPE *GetTimes)(
        IShellItemResources *This,
        FILETIME *pftCreation,
        FILETIME *pftWrite,
        FILETIME *pftAccess);

    HRESULT (STDMETHODCALLTYPE *SetTimes)(
        IShellItemResources *This,
        const FILETIME *pftCreation,
        const FILETIME *pftWrite,
        const FILETIME *pftAccess);

    HRESULT (STDMETHODCALLTYPE *GetResourceDescription)(
        IShellItemResources *This,
        const SHELL_ITEM_RESOURCE *pcsir,
        LPWSTR *ppszDescription);

    HRESULT (STDMETHODCALLTYPE *EnumResources)(
        IShellItemResources *This,
        IEnumResources **ppenumr);

    HRESULT (STDMETHODCALLTYPE *SupportsResource)(
        IShellItemResources *This,
        const SHELL_ITEM_RESOURCE *pcsir);

    HRESULT (STDMETHODCALLTYPE *OpenResource)(
        IShellItemResources *This,
        const SHELL_ITEM_RESOURCE *pcsir,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *CreateResource)(
        IShellItemResources *This,
        const SHELL_ITEM_RESOURCE *pcsir,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *MarkForDelete)(
        IShellItemResources *This);

    END_INTERFACE
} IShellItemResourcesVtbl;

interface IShellItemResources {
    CONST_VTBL IShellItemResourcesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellItemResources_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellItemResources_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellItemResources_Release(This) (This)->lpVtbl->Release(This)
/*** IShellItemResources methods ***/
#define IShellItemResources_GetAttributes(This,pdwAttributes) (This)->lpVtbl->GetAttributes(This,pdwAttributes)
#define IShellItemResources_GetSize(This,pullSize) (This)->lpVtbl->GetSize(This,pullSize)
#define IShellItemResources_GetTimes(This,pftCreation,pftWrite,pftAccess) (This)->lpVtbl->GetTimes(This,pftCreation,pftWrite,pftAccess)
#define IShellItemResources_SetTimes(This,pftCreation,pftWrite,pftAccess) (This)->lpVtbl->SetTimes(This,pftCreation,pftWrite,pftAccess)
#define IShellItemResources_GetResourceDescription(This,pcsir,ppszDescription) (This)->lpVtbl->GetResourceDescription(This,pcsir,ppszDescription)
#define IShellItemResources_EnumResources(This,ppenumr) (This)->lpVtbl->EnumResources(This,ppenumr)
#define IShellItemResources_SupportsResource(This,pcsir) (This)->lpVtbl->SupportsResource(This,pcsir)
#define IShellItemResources_OpenResource(This,pcsir,riid,ppv) (This)->lpVtbl->OpenResource(This,pcsir,riid,ppv)
#define IShellItemResources_CreateResource(This,pcsir,riid,ppv) (This)->lpVtbl->CreateResource(This,pcsir,riid,ppv)
#define IShellItemResources_MarkForDelete(This) (This)->lpVtbl->MarkForDelete(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IShellItemResources_QueryInterface(IShellItemResources* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellItemResources_AddRef(IShellItemResources* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellItemResources_Release(IShellItemResources* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellItemResources methods ***/
static inline HRESULT IShellItemResources_GetAttributes(IShellItemResources* This,DWORD *pdwAttributes) {
    return This->lpVtbl->GetAttributes(This,pdwAttributes);
}
static inline HRESULT IShellItemResources_GetSize(IShellItemResources* This,ULONGLONG *pullSize) {
    return This->lpVtbl->GetSize(This,pullSize);
}
static inline HRESULT IShellItemResources_GetTimes(IShellItemResources* This,FILETIME *pftCreation,FILETIME *pftWrite,FILETIME *pftAccess) {
    return This->lpVtbl->GetTimes(This,pftCreation,pftWrite,pftAccess);
}
static inline HRESULT IShellItemResources_SetTimes(IShellItemResources* This,const FILETIME *pftCreation,const FILETIME *pftWrite,const FILETIME *pftAccess) {
    return This->lpVtbl->SetTimes(This,pftCreation,pftWrite,pftAccess);
}
static inline HRESULT IShellItemResources_GetResourceDescription(IShellItemResources* This,const SHELL_ITEM_RESOURCE *pcsir,LPWSTR *ppszDescription) {
    return This->lpVtbl->GetResourceDescription(This,pcsir,ppszDescription);
}
static inline HRESULT IShellItemResources_EnumResources(IShellItemResources* This,IEnumResources **ppenumr) {
    return This->lpVtbl->EnumResources(This,ppenumr);
}
static inline HRESULT IShellItemResources_SupportsResource(IShellItemResources* This,const SHELL_ITEM_RESOURCE *pcsir) {
    return This->lpVtbl->SupportsResource(This,pcsir);
}
static inline HRESULT IShellItemResources_OpenResource(IShellItemResources* This,const SHELL_ITEM_RESOURCE *pcsir,REFIID riid,void **ppv) {
    return This->lpVtbl->OpenResource(This,pcsir,riid,ppv);
}
static inline HRESULT IShellItemResources_CreateResource(IShellItemResources* This,const SHELL_ITEM_RESOURCE *pcsir,REFIID riid,void **ppv) {
    return This->lpVtbl->CreateResource(This,pcsir,riid,ppv);
}
static inline HRESULT IShellItemResources_MarkForDelete(IShellItemResources* This) {
    return This->lpVtbl->MarkForDelete(This);
}
#endif
#endif

#endif


#endif  /* __IShellItemResources_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 *psink,
        DWORD *pdwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unadvise(
        DWORD dwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateItem(
        LPCWSTR pszName,
        DWORD dwAttributes,
        ULONGLONG ullSize,
        TRANSFER_SOURCE_FLAGS flags,
        REFIID riidItem,
        void **ppvItem,
        REFIID riidResources,
        void **ppvResources) = 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 *psink,
        DWORD *pdwCookie);

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

    HRESULT (STDMETHODCALLTYPE *CreateItem)(
        ITransferDestination *This,
        LPCWSTR pszName,
        DWORD dwAttributes,
        ULONGLONG ullSize,
        TRANSFER_SOURCE_FLAGS flags,
        REFIID riidItem,
        void **ppvItem,
        REFIID riidResources,
        void **ppvResources);

    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,psink,pdwCookie) (This)->lpVtbl->Advise(This,psink,pdwCookie)
#define ITransferDestination_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
#define ITransferDestination_CreateItem(This,pszName,dwAttributes,ullSize,flags,riidItem,ppvItem,riidResources,ppvResources) (This)->lpVtbl->CreateItem(This,pszName,dwAttributes,ullSize,flags,riidItem,ppvItem,riidResources,ppvResources)
#else
/*** IUnknown methods ***/
static inline HRESULT ITransferDestination_QueryInterface(ITransferDestination* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITransferDestination_AddRef(ITransferDestination* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITransferDestination_Release(ITransferDestination* This) {
    return This->lpVtbl->Release(This);
}
/*** ITransferDestination methods ***/
static inline HRESULT ITransferDestination_Advise(ITransferDestination* This,ITransferAdviseSink *psink,DWORD *pdwCookie) {
    return This->lpVtbl->Advise(This,psink,pdwCookie);
}
static inline HRESULT ITransferDestination_Unadvise(ITransferDestination* This,DWORD dwCookie) {
    return This->lpVtbl->Unadvise(This,dwCookie);
}
static inline HRESULT ITransferDestination_CreateItem(ITransferDestination* This,LPCWSTR pszName,DWORD dwAttributes,ULONGLONG ullSize,TRANSFER_SOURCE_FLAGS flags,REFIID riidItem,void **ppvItem,REFIID riidResources,void **ppvResources) {
    return This->lpVtbl->CreateItem(This,pszName,dwAttributes,ullSize,flags,riidItem,ppvItem,riidResources,ppvResources);
}
#endif
#endif

#endif


#endif  /* __ITransferDestination_INTERFACE_DEFINED__ */

#if 0
typedef struct _OVERLAPPED {
    ULONG_PTR Internal;
    ULONG_PTR InternalHigh;
    __C89_NAMELESS union {
        __C89_NAMELESS struct {
            DWORD Offset;
            DWORD OffsetHigh;
        } __C89_NAMELESSSTRUCTNAME;
        PVOID Pointer;
    } __C89_NAMELESSUNIONNAME;
    HANDLE hEvent;
} OVERLAPPED;
typedef struct _OVERLAPPED *LPOVERLAPPED;
#endif

/*****************************************************************************
 * IStreamAsync interface
 */
#ifndef __IStreamAsync_INTERFACE_DEFINED__
#define __IStreamAsync_INTERFACE_DEFINED__

DEFINE_GUID(IID_IStreamAsync, 0xfe0b6665, 0xe0ca, 0x49b9, 0xa1,0x78, 0x2b,0x5c,0xb4,0x8d,0x92,0xa5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fe0b6665-e0ca-49b9-a178-2b5cb48d92a5")
IStreamAsync : public IStream
{
    virtual HRESULT STDMETHODCALLTYPE ReadAsync(
        void *pv,
        DWORD cb,
        LPDWORD pcbRead,
        LPOVERLAPPED lpOverlapped) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteAsync(
        const void *lpBuffer,
        DWORD cb,
        LPDWORD pcbWritten,
        LPOVERLAPPED lpOverlapped) = 0;

    virtual HRESULT STDMETHODCALLTYPE OverlappedResult(
        LPOVERLAPPED lpOverlapped,
        LPDWORD lpNumberOfBytesTransferred,
        WINBOOL bWait) = 0;

    virtual HRESULT STDMETHODCALLTYPE CancelIo(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IStreamAsync, 0xfe0b6665, 0xe0ca, 0x49b9, 0xa1,0x78, 0x2b,0x5c,0xb4,0x8d,0x92,0xa5)
#endif
#else
typedef struct IStreamAsyncVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ISequentialStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Read)(
        IStreamAsync *This,
        void *pv,
        ULONG cb,
        ULONG *pcbRead);

    HRESULT (STDMETHODCALLTYPE *Write)(
        IStreamAsync *This,
        const void *pv,
        ULONG cb,
        ULONG *pcbWritten);

    /*** IStream methods ***/
    HRESULT (STDMETHODCALLTYPE *Seek)(
        IStreamAsync *This,
        LARGE_INTEGER dlibMove,
        DWORD dwOrigin,
        ULARGE_INTEGER *plibNewPosition);

    HRESULT (STDMETHODCALLTYPE *SetSize)(
        IStreamAsync *This,
        ULARGE_INTEGER libNewSize);

    HRESULT (STDMETHODCALLTYPE *CopyTo)(
        IStreamAsync *This,
        IStream *pstm,
        ULARGE_INTEGER cb,
        ULARGE_INTEGER *pcbRead,
        ULARGE_INTEGER *pcbWritten);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        IStreamAsync *This,
        DWORD grfCommitFlags);

    HRESULT (STDMETHODCALLTYPE *Revert)(
        IStreamAsync *This);

    HRESULT (STDMETHODCALLTYPE *LockRegion)(
        IStreamAsync *This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *UnlockRegion)(
        IStreamAsync *This,
        ULARGE_INTEGER libOffset,
        ULARGE_INTEGER cb,
        DWORD dwLockType);

    HRESULT (STDMETHODCALLTYPE *Stat)(
        IStreamAsync *This,
        STATSTG *pstatstg,
        DWORD grfStatFlag);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IStreamAsync *This,
        IStream **ppstm);

    /*** IStreamAsync methods ***/
    HRESULT (STDMETHODCALLTYPE *ReadAsync)(
        IStreamAsync *This,
        void *pv,
        DWORD cb,
        LPDWORD pcbRead,
        LPOVERLAPPED lpOverlapped);

    HRESULT (STDMETHODCALLTYPE *WriteAsync)(
        IStreamAsync *This,
        const void *lpBuffer,
        DWORD cb,
        LPDWORD pcbWritten,
        LPOVERLAPPED lpOverlapped);

    HRESULT (STDMETHODCALLTYPE *OverlappedResult)(
        IStreamAsync *This,
        LPOVERLAPPED lpOverlapped,
        LPDWORD lpNumberOfBytesTransferred,
        WINBOOL bWait);

    HRESULT (STDMETHODCALLTYPE *CancelIo)(
        IStreamAsync *This);

    END_INTERFACE
} IStreamAsyncVtbl;

interface IStreamAsync {
    CONST_VTBL IStreamAsyncVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IStreamAsync_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IStreamAsync_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IStreamAsync_Release(This) (This)->lpVtbl->Release(This)
/*** ISequentialStream methods ***/
#define IStreamAsync_Read(This,pv,cb,pcbRead) (This)->lpVtbl->Read(This,pv,cb,pcbRead)
#define IStreamAsync_Write(This,pv,cb,pcbWritten) (This)->lpVtbl->Write(This,pv,cb,pcbWritten)
/*** IStream methods ***/
#define IStreamAsync_Seek(This,dlibMove,dwOrigin,plibNewPosition) (This)->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition)
#define IStreamAsync_SetSize(This,libNewSize) (This)->lpVtbl->SetSize(This,libNewSize)
#define IStreamAsync_CopyTo(This,pstm,cb,pcbRead,pcbWritten) (This)->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten)
#define IStreamAsync_Commit(This,grfCommitFlags) (This)->lpVtbl->Commit(This,grfCommitFlags)
#define IStreamAsync_Revert(This) (This)->lpVtbl->Revert(This)
#define IStreamAsync_LockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->LockRegion(This,libOffset,cb,dwLockType)
#define IStreamAsync_UnlockRegion(This,libOffset,cb,dwLockType) (This)->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType)
#define IStreamAsync_Stat(This,pstatstg,grfStatFlag) (This)->lpVtbl->Stat(This,pstatstg,grfStatFlag)
#define IStreamAsync_Clone(This,ppstm) (This)->lpVtbl->Clone(This,ppstm)
/*** IStreamAsync methods ***/
#define IStreamAsync_ReadAsync(This,pv,cb,pcbRead,lpOverlapped) (This)->lpVtbl->ReadAsync(This,pv,cb,pcbRead,lpOverlapped)
#define IStreamAsync_WriteAsync(This,lpBuffer,cb,pcbWritten,lpOverlapped) (This)->lpVtbl->WriteAsync(This,lpBuffer,cb,pcbWritten,lpOverlapped)
#define IStreamAsync_OverlappedResult(This,lpOverlapped,lpNumberOfBytesTransferred,bWait) (This)->lpVtbl->OverlappedResult(This,lpOverlapped,lpNumberOfBytesTransferred,bWait)
#define IStreamAsync_CancelIo(This) (This)->lpVtbl->CancelIo(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IStreamAsync_QueryInterface(IStreamAsync* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IStreamAsync_AddRef(IStreamAsync* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IStreamAsync_Release(IStreamAsync* This) {
    return This->lpVtbl->Release(This);
}
/*** ISequentialStream methods ***/
static inline HRESULT IStreamAsync_Read(IStreamAsync* This,void *pv,ULONG cb,ULONG *pcbRead) {
    return This->lpVtbl->Read(This,pv,cb,pcbRead);
}
static inline HRESULT IStreamAsync_Write(IStreamAsync* This,const void *pv,ULONG cb,ULONG *pcbWritten) {
    return This->lpVtbl->Write(This,pv,cb,pcbWritten);
}
/*** IStream methods ***/
static inline HRESULT IStreamAsync_Seek(IStreamAsync* This,LARGE_INTEGER dlibMove,DWORD dwOrigin,ULARGE_INTEGER *plibNewPosition) {
    return This->lpVtbl->Seek(This,dlibMove,dwOrigin,plibNewPosition);
}
static inline HRESULT IStreamAsync_SetSize(IStreamAsync* This,ULARGE_INTEGER libNewSize) {
    return This->lpVtbl->SetSize(This,libNewSize);
}
static inline HRESULT IStreamAsync_CopyTo(IStreamAsync* This,IStream *pstm,ULARGE_INTEGER cb,ULARGE_INTEGER *pcbRead,ULARGE_INTEGER *pcbWritten) {
    return This->lpVtbl->CopyTo(This,pstm,cb,pcbRead,pcbWritten);
}
static inline HRESULT IStreamAsync_Commit(IStreamAsync* This,DWORD grfCommitFlags) {
    return This->lpVtbl->Commit(This,grfCommitFlags);
}
static inline HRESULT IStreamAsync_Revert(IStreamAsync* This) {
    return This->lpVtbl->Revert(This);
}
static inline HRESULT IStreamAsync_LockRegion(IStreamAsync* This,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType) {
    return This->lpVtbl->LockRegion(This,libOffset,cb,dwLockType);
}
static inline HRESULT IStreamAsync_UnlockRegion(IStreamAsync* This,ULARGE_INTEGER libOffset,ULARGE_INTEGER cb,DWORD dwLockType) {
    return This->lpVtbl->UnlockRegion(This,libOffset,cb,dwLockType);
}
static inline HRESULT IStreamAsync_Stat(IStreamAsync* This,STATSTG *pstatstg,DWORD grfStatFlag) {
    return This->lpVtbl->Stat(This,pstatstg,grfStatFlag);
}
static inline HRESULT IStreamAsync_Clone(IStreamAsync* This,IStream **ppstm) {
    return This->lpVtbl->Clone(This,ppstm);
}
/*** IStreamAsync methods ***/
static inline HRESULT IStreamAsync_ReadAsync(IStreamAsync* This,void *pv,DWORD cb,LPDWORD pcbRead,LPOVERLAPPED lpOverlapped) {
    return This->lpVtbl->ReadAsync(This,pv,cb,pcbRead,lpOverlapped);
}
static inline HRESULT IStreamAsync_WriteAsync(IStreamAsync* This,const void *lpBuffer,DWORD cb,LPDWORD pcbWritten,LPOVERLAPPED lpOverlapped) {
    return This->lpVtbl->WriteAsync(This,lpBuffer,cb,pcbWritten,lpOverlapped);
}
static inline HRESULT IStreamAsync_OverlappedResult(IStreamAsync* This,LPOVERLAPPED lpOverlapped,LPDWORD lpNumberOfBytesTransferred,WINBOOL bWait) {
    return This->lpVtbl->OverlappedResult(This,lpOverlapped,lpNumberOfBytesTransferred,bWait);
}
static inline HRESULT IStreamAsync_CancelIo(IStreamAsync* This) {
    return This->lpVtbl->CancelIo(This);
}
#endif
#endif

#endif


#endif  /* __IStreamAsync_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IStreamUnbufferedInfo interface
 */
#ifndef __IStreamUnbufferedInfo_INTERFACE_DEFINED__
#define __IStreamUnbufferedInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IStreamUnbufferedInfo, 0x8a68fdda, 0x1fdc, 0x4c20, 0x8c,0xeb, 0x41,0x66,0x43,0xb5,0xa6,0x25);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8a68fdda-1fdc-4c20-8ceb-416643b5a625")
IStreamUnbufferedInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetSectorSize(
        ULONG *pcbSectorSize) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IStreamUnbufferedInfo, 0x8a68fdda, 0x1fdc, 0x4c20, 0x8c,0xeb, 0x41,0x66,0x43,0xb5,0xa6,0x25)
#endif
#else
typedef struct IStreamUnbufferedInfoVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IStreamUnbufferedInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSectorSize)(
        IStreamUnbufferedInfo *This,
        ULONG *pcbSectorSize);

    END_INTERFACE
} IStreamUnbufferedInfoVtbl;

interface IStreamUnbufferedInfo {
    CONST_VTBL IStreamUnbufferedInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IStreamUnbufferedInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IStreamUnbufferedInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IStreamUnbufferedInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IStreamUnbufferedInfo methods ***/
#define IStreamUnbufferedInfo_GetSectorSize(This,pcbSectorSize) (This)->lpVtbl->GetSectorSize(This,pcbSectorSize)
#else
/*** IUnknown methods ***/
static inline HRESULT IStreamUnbufferedInfo_QueryInterface(IStreamUnbufferedInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IStreamUnbufferedInfo_AddRef(IStreamUnbufferedInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IStreamUnbufferedInfo_Release(IStreamUnbufferedInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IStreamUnbufferedInfo methods ***/
static inline HRESULT IStreamUnbufferedInfo_GetSectorSize(IStreamUnbufferedInfo* This,ULONG *pcbSectorSize) {
    return This->lpVtbl->GetSectorSize(This,pcbSectorSize);
}
#endif
#endif

#endif


#endif  /* __IStreamUnbufferedInfo_INTERFACE_DEFINED__ */


#if _WIN32_IE >= _WIN32_IE_IE70
/*****************************************************************************
 * 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 inline HRESULT IFileOperationProgressSink_QueryInterface(IFileOperationProgressSink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFileOperationProgressSink_AddRef(IFileOperationProgressSink* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFileOperationProgressSink_Release(IFileOperationProgressSink* This) {
    return This->lpVtbl->Release(This);
}
/*** IFileOperationProgressSink methods ***/
static inline HRESULT IFileOperationProgressSink_StartOperations(IFileOperationProgressSink* This) {
    return This->lpVtbl->StartOperations(This);
}
static inline HRESULT IFileOperationProgressSink_FinishOperations(IFileOperationProgressSink* This,HRESULT hrResult) {
    return This->lpVtbl->FinishOperations(This,hrResult);
}
static inline HRESULT IFileOperationProgressSink_PreRenameItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiItem,LPCWSTR pszNewName) {
    return This->lpVtbl->PreRenameItem(This,dwFlags,psiItem,pszNewName);
}
static inline 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 inline HRESULT IFileOperationProgressSink_PreMoveItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiItem,IShellItem *psiDestinationFolder,LPCWSTR pszNewName) {
    return This->lpVtbl->PreMoveItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName);
}
static inline 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 inline HRESULT IFileOperationProgressSink_PreCopyItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiItem,IShellItem *psiDestinationFolder,LPCWSTR pszNewName) {
    return This->lpVtbl->PreCopyItem(This,dwFlags,psiItem,psiDestinationFolder,pszNewName);
}
static inline 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 inline HRESULT IFileOperationProgressSink_PreDeleteItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiItem) {
    return This->lpVtbl->PreDeleteItem(This,dwFlags,psiItem);
}
static inline HRESULT IFileOperationProgressSink_PostDeleteItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiItem,HRESULT hrDelete,IShellItem *psiNewlyCreated) {
    return This->lpVtbl->PostDeleteItem(This,dwFlags,psiItem,hrDelete,psiNewlyCreated);
}
static inline HRESULT IFileOperationProgressSink_PreNewItem(IFileOperationProgressSink* This,DWORD dwFlags,IShellItem *psiDestinationFolder,LPCWSTR pszNewName) {
    return This->lpVtbl->PreNewItem(This,dwFlags,psiDestinationFolder,pszNewName);
}
static inline 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 inline HRESULT IFileOperationProgressSink_UpdateProgress(IFileOperationProgressSink* This,UINT iWorkTotal,UINT iWorkSoFar) {
    return This->lpVtbl->UpdateProgress(This,iWorkTotal,iWorkSoFar);
}
static inline HRESULT IFileOperationProgressSink_ResetTimer(IFileOperationProgressSink* This) {
    return This->lpVtbl->ResetTimer(This);
}
static inline HRESULT IFileOperationProgressSink_PauseTimer(IFileOperationProgressSink* This) {
    return This->lpVtbl->PauseTimer(This);
}
static inline HRESULT IFileOperationProgressSink_ResumeTimer(IFileOperationProgressSink* This) {
    return This->lpVtbl->ResumeTimer(This);
}
#endif
#endif

#endif


#endif  /* __IFileOperationProgressSink_INTERFACE_DEFINED__ */

#endif

/*****************************************************************************
 * 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 inline HRESULT IShellItemArray_QueryInterface(IShellItemArray* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellItemArray_AddRef(IShellItemArray* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellItemArray_Release(IShellItemArray* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellItemArray methods ***/
static inline HRESULT IShellItemArray_BindToHandler(IShellItemArray* This,IBindCtx *pbc,REFGUID bhid,REFIID riid,void **ppvOut) {
    return This->lpVtbl->BindToHandler(This,pbc,bhid,riid,ppvOut);
}
static inline HRESULT IShellItemArray_GetPropertyStore(IShellItemArray* This,GETPROPERTYSTOREFLAGS flags,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyStore(This,flags,riid,ppv);
}
static inline HRESULT IShellItemArray_GetPropertyDescriptionList(IShellItemArray* This,REFPROPERTYKEY keyType,REFIID riid,void **ppv) {
    return This->lpVtbl->GetPropertyDescriptionList(This,keyType,riid,ppv);
}
static inline HRESULT IShellItemArray_GetAttributes(IShellItemArray* This,SIATTRIBFLAGS AttribFlags,SFGAOF sfgaoMask,SFGAOF *psfgaoAttribs) {
    return This->lpVtbl->GetAttributes(This,AttribFlags,sfgaoMask,psfgaoAttribs);
}
static inline HRESULT IShellItemArray_GetCount(IShellItemArray* This,DWORD *pdwNumItems) {
    return This->lpVtbl->GetCount(This,pdwNumItems);
}
static inline HRESULT IShellItemArray_GetItemAt(IShellItemArray* This,DWORD dwIndex,IShellItem **ppsi) {
    return This->lpVtbl->GetItemAt(This,dwIndex,ppsi);
}
static inline HRESULT IShellItemArray_EnumItems(IShellItemArray* This,IEnumShellItems **ppenumShellItems) {
    return This->lpVtbl->EnumItems(This,ppenumShellItems);
}
#endif
#endif

#endif


#endif  /* __IShellItemArray_INTERFACE_DEFINED__ */


#if _WIN32_IE >= _WIN32_IE_IE70
  SHSTDAPI SHCreateShellItemArray(PCIDLIST_ABSOLUTE pidlParent, IShellFolder *psf, UINT cidl, PCUITEMID_CHILD_ARRAY ppidl, IShellItemArray **ppsiItemArray);
  SHSTDAPI SHCreateShellItemArrayFromDataObject(IDataObject *pdo, REFIID riid, void **ppv);
  SHSTDAPI SHCreateShellItemArrayFromIDLists(UINT cidl, PCIDLIST_ABSOLUTE_ARRAY rgpidl, IShellItemArray **ppsiItemArray);
  SHSTDAPI SHCreateShellItemArrayFromShellItem(IShellItem *psi, REFIID riid, void **ppv);
#endif

/*****************************************************************************
 * IInitializeWithItem interface
 */
#ifndef __IInitializeWithItem_INTERFACE_DEFINED__
#define __IInitializeWithItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInitializeWithItem, 0x7f73be3f, 0xfb79, 0x493c, 0xa6,0xc7, 0x7e,0xe1,0x4e,0x24,0x58,0x41);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7f73be3f-fb79-493c-a6c7-7ee14e245841")
IInitializeWithItem : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IShellItem *psi,
        DWORD grfMode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInitializeWithItem, 0x7f73be3f, 0xfb79, 0x493c, 0xa6,0xc7, 0x7e,0xe1,0x4e,0x24,0x58,0x41)
#endif
#else
typedef struct IInitializeWithItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IInitializeWithItem methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IInitializeWithItem *This,
        IShellItem *psi,
        DWORD grfMode);

    END_INTERFACE
} IInitializeWithItemVtbl;

interface IInitializeWithItem {
    CONST_VTBL IInitializeWithItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInitializeWithItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInitializeWithItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInitializeWithItem_Release(This) (This)->lpVtbl->Release(This)
/*** IInitializeWithItem methods ***/
#define IInitializeWithItem_Initialize(This,psi,grfMode) (This)->lpVtbl->Initialize(This,psi,grfMode)
#else
/*** IUnknown methods ***/
static inline HRESULT IInitializeWithItem_QueryInterface(IInitializeWithItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IInitializeWithItem_AddRef(IInitializeWithItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IInitializeWithItem_Release(IInitializeWithItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IInitializeWithItem methods ***/
static inline HRESULT IInitializeWithItem_Initialize(IInitializeWithItem* This,IShellItem *psi,DWORD grfMode) {
    return This->lpVtbl->Initialize(This,psi,grfMode);
}
#endif
#endif

#endif


#endif  /* __IInitializeWithItem_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IObjectWithSelection interface
 */
#ifndef __IObjectWithSelection_INTERFACE_DEFINED__
#define __IObjectWithSelection_INTERFACE_DEFINED__

DEFINE_GUID(IID_IObjectWithSelection, 0x1c9cd5bb, 0x98e9, 0x4491, 0xa6,0x0f, 0x31,0xaa,0xcc,0x72,0xb8,0x3c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1c9cd5bb-98e9-4491-a60f-31aacc72b83c")
IObjectWithSelection : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetSelection(
        IShellItemArray *psia) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IObjectWithSelection, 0x1c9cd5bb, 0x98e9, 0x4491, 0xa6,0x0f, 0x31,0xaa,0xcc,0x72,0xb8,0x3c)
#endif
#else
typedef struct IObjectWithSelectionVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IObjectWithSelection methods ***/
    HRESULT (STDMETHODCALLTYPE *SetSelection)(
        IObjectWithSelection *This,
        IShellItemArray *psia);

    HRESULT (STDMETHODCALLTYPE *GetSelection)(
        IObjectWithSelection *This,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} IObjectWithSelectionVtbl;

interface IObjectWithSelection {
    CONST_VTBL IObjectWithSelectionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IObjectWithSelection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IObjectWithSelection_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IObjectWithSelection_Release(This) (This)->lpVtbl->Release(This)
/*** IObjectWithSelection methods ***/
#define IObjectWithSelection_SetSelection(This,psia) (This)->lpVtbl->SetSelection(This,psia)
#define IObjectWithSelection_GetSelection(This,riid,ppv) (This)->lpVtbl->GetSelection(This,riid,ppv)
#else
/*** IUnknown methods ***/
static inline HRESULT IObjectWithSelection_QueryInterface(IObjectWithSelection* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IObjectWithSelection_AddRef(IObjectWithSelection* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IObjectWithSelection_Release(IObjectWithSelection* This) {
    return This->lpVtbl->Release(This);
}
/*** IObjectWithSelection methods ***/
static inline HRESULT IObjectWithSelection_SetSelection(IObjectWithSelection* This,IShellItemArray *psia) {
    return This->lpVtbl->SetSelection(This,psia);
}
static inline HRESULT IObjectWithSelection_GetSelection(IObjectWithSelection* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetSelection(This,riid,ppv);
}
#endif
#endif

#endif


#endif  /* __IObjectWithSelection_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IObjectWithBackReferences interface
 */
#ifndef __IObjectWithBackReferences_INTERFACE_DEFINED__
#define __IObjectWithBackReferences_INTERFACE_DEFINED__

DEFINE_GUID(IID_IObjectWithBackReferences, 0x321a6a6a, 0xd61f, 0x4bf3, 0x97,0xae, 0x14,0xbe,0x29,0x86,0xbb,0x36);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("321a6a6a-d61f-4bf3-97ae-14be2986bb36")
IObjectWithBackReferences : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE RemoveBackReferences(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IObjectWithBackReferences, 0x321a6a6a, 0xd61f, 0x4bf3, 0x97,0xae, 0x14,0xbe,0x29,0x86,0xbb,0x36)
#endif
#else
typedef struct IObjectWithBackReferencesVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IObjectWithBackReferences methods ***/
    HRESULT (STDMETHODCALLTYPE *RemoveBackReferences)(
        IObjectWithBackReferences *This);

    END_INTERFACE
} IObjectWithBackReferencesVtbl;

interface IObjectWithBackReferences {
    CONST_VTBL IObjectWithBackReferencesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IObjectWithBackReferences_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IObjectWithBackReferences_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IObjectWithBackReferences_Release(This) (This)->lpVtbl->Release(This)
/*** IObjectWithBackReferences methods ***/
#define IObjectWithBackReferences_RemoveBackReferences(This) (This)->lpVtbl->RemoveBackReferences(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IObjectWithBackReferences_QueryInterface(IObjectWithBackReferences* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IObjectWithBackReferences_AddRef(IObjectWithBackReferences* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IObjectWithBackReferences_Release(IObjectWithBackReferences* This) {
    return This->lpVtbl->Release(This);
}
/*** IObjectWithBackReferences methods ***/
static inline HRESULT IObjectWithBackReferences_RemoveBackReferences(IObjectWithBackReferences* This) {
    return This->lpVtbl->RemoveBackReferences(This);
}
#endif
#endif

#endif


#endif  /* __IObjectWithBackReferences_INTERFACE_DEFINED__ */


enum _PROPERTYUI_NAME_FLAGS {
    PUIFNF_DEFAULT = 0x0,
    PUIFNF_MNEMONIC = 0x1
};

typedef DWORD PROPERTYUI_NAME_FLAGS;

enum _PROPERTYUI_FLAGS {
    PUIF_DEFAULT = 0x0,
    PUIF_RIGHTALIGN = 0x1,
    PUIF_NOLABELININFOTIP = 0x2
};

typedef DWORD PROPERTYUI_FLAGS;

enum _PROPERTYUI_FORMAT_FLAGS {
    PUIFFDF_DEFAULT = 0x0,
    PUIFFDF_RIGHTTOLEFT = 0x1,
    PUIFFDF_SHORTFORMAT = 0x2,
    PUIFFDF_NOTIME = 0x4,
    PUIFFDF_FRIENDLYDATE = 0x8
};

typedef DWORD PROPERTYUI_FORMAT_FLAGS;

/*****************************************************************************
 * IPropertyUI interface
 */
#ifndef __IPropertyUI_INTERFACE_DEFINED__
#define __IPropertyUI_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPropertyUI, 0x757a7d9f, 0x919a, 0x4118, 0x99,0xd7, 0xdb,0xb2,0x08,0xc8,0xcc,0x66);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("757a7d9f-919a-4118-99d7-dbb208c8cc66")
IPropertyUI : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ParsePropertyName(
        LPCWSTR pszName,
        FMTID *pfmtid,
        PROPID *ppid,
        ULONG *pchEaten) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCannonicalName(
        REFFMTID fmtid,
        PROPID pid,
        LPWSTR pwszText,
        DWORD cchText) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
        REFFMTID fmtid,
        PROPID pid,
        PROPERTYUI_NAME_FLAGS flags,
        LPWSTR pwszText,
        DWORD cchText) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPropertyDescription(
        REFFMTID fmtid,
        PROPID pid,
        LPWSTR pwszText,
        DWORD cchText) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultWidth(
        REFFMTID fmtid,
        PROPID pid,
        ULONG *pcxChars) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlags(
        REFFMTID fmtid,
        PROPID pid,
        PROPERTYUI_FLAGS *pflags) = 0;

    virtual HRESULT STDMETHODCALLTYPE FormatForDisplay(
        REFFMTID fmtid,
        PROPID pid,
        const PROPVARIANT *ppropvar,
        PROPERTYUI_FORMAT_FLAGS puiff,
        LPWSTR pwszText,
        DWORD cchText) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHelpInfo(
        REFFMTID fmtid,
        PROPID pid,
        LPWSTR pwszHelpFile,
        DWORD cch,
        UINT *puHelpID) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPropertyUI, 0x757a7d9f, 0x919a, 0x4118, 0x99,0xd7, 0xdb,0xb2,0x08,0xc8,0xcc,0x66)
#endif
#else
typedef struct IPropertyUIVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IPropertyUI methods ***/
    HRESULT (STDMETHODCALLTYPE *ParsePropertyName)(
        IPropertyUI *This,
        LPCWSTR pszName,
        FMTID *pfmtid,
        PROPID *ppid,
        ULONG *pchEaten);

    HRESULT (STDMETHODCALLTYPE *GetCannonicalName)(
        IPropertyUI *This,
        REFFMTID fmtid,
        PROPID pid,
        LPWSTR pwszText,
        DWORD cchText);

    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
        IPropertyUI *This,
        REFFMTID fmtid,
        PROPID pid,
        PROPERTYUI_NAME_FLAGS flags,
        LPWSTR pwszText,
        DWORD cchText);

    HRESULT (STDMETHODCALLTYPE *GetPropertyDescription)(
        IPropertyUI *This,
        REFFMTID fmtid,
        PROPID pid,
        LPWSTR pwszText,
        DWORD cchText);

    HRESULT (STDMETHODCALLTYPE *GetDefaultWidth)(
        IPropertyUI *This,
        REFFMTID fmtid,
        PROPID pid,
        ULONG *pcxChars);

    HRESULT (STDMETHODCALLTYPE *GetFlags)(
        IPropertyUI *This,
        REFFMTID fmtid,
        PROPID pid,
        PROPERTYUI_FLAGS *pflags);

    HRESULT (STDMETHODCALLTYPE *FormatForDisplay)(
        IPropertyUI *This,
        REFFMTID fmtid,
        PROPID pid,
        const PROPVARIANT *ppropvar,
        PROPERTYUI_FORMAT_FLAGS puiff,
        LPWSTR pwszText,
        DWORD cchText);

    HRESULT (STDMETHODCALLTYPE *GetHelpInfo)(
        IPropertyUI *This,
        REFFMTID fmtid,
        PROPID pid,
        LPWSTR pwszHelpFile,
        DWORD cch,
        UINT *puHelpID);

    END_INTERFACE
} IPropertyUIVtbl;

interface IPropertyUI {
    CONST_VTBL IPropertyUIVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPropertyUI_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPropertyUI_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPropertyUI_Release(This) (This)->lpVtbl->Release(This)
/*** IPropertyUI methods ***/
#define IPropertyUI_ParsePropertyName(This,pszName,pfmtid,ppid,pchEaten) (This)->lpVtbl->ParsePropertyName(This,pszName,pfmtid,ppid,pchEaten)
#define IPropertyUI_GetCannonicalName(This,fmtid,pid,pwszText,cchText) (This)->lpVtbl->GetCannonicalName(This,fmtid,pid,pwszText,cchText)
#define IPropertyUI_GetDisplayName(This,fmtid,pid,flags,pwszText,cchText) (This)->lpVtbl->GetDisplayName(This,fmtid,pid,flags,pwszText,cchText)
#define IPropertyUI_GetPropertyDescription(This,fmtid,pid,pwszText,cchText) (This)->lpVtbl->GetPropertyDescription(This,fmtid,pid,pwszText,cchText)
#define IPropertyUI_GetDefaultWidth(This,fmtid,pid,pcxChars) (This)->lpVtbl->GetDefaultWidth(This,fmtid,pid,pcxChars)
#define IPropertyUI_GetFlags(This,fmtid,pid,pflags) (This)->lpVtbl->GetFlags(This,fmtid,pid,pflags)
#define IPropertyUI_FormatForDisplay(This,fmtid,pid,ppropvar,puiff,pwszText,cchText) (This)->lpVtbl->FormatForDisplay(This,fmtid,pid,ppropvar,puiff,pwszText,cchText)
#define IPropertyUI_GetHelpInfo(This,fmtid,pid,pwszHelpFile,cch,puHelpID) (This)->lpVtbl->GetHelpInfo(This,fmtid,pid,pwszHelpFile,cch,puHelpID)
#else
/*** IUnknown methods ***/
static inline HRESULT IPropertyUI_QueryInterface(IPropertyUI* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPropertyUI_AddRef(IPropertyUI* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPropertyUI_Release(IPropertyUI* This) {
    return This->lpVtbl->Release(This);
}
/*** IPropertyUI methods ***/
static inline HRESULT IPropertyUI_ParsePropertyName(IPropertyUI* This,LPCWSTR pszName,FMTID *pfmtid,PROPID *ppid,ULONG *pchEaten) {
    return This->lpVtbl->ParsePropertyName(This,pszName,pfmtid,ppid,pchEaten);
}
static inline HRESULT IPropertyUI_GetCannonicalName(IPropertyUI* This,REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText) {
    return This->lpVtbl->GetCannonicalName(This,fmtid,pid,pwszText,cchText);
}
static inline HRESULT IPropertyUI_GetDisplayName(IPropertyUI* This,REFFMTID fmtid,PROPID pid,PROPERTYUI_NAME_FLAGS flags,LPWSTR pwszText,DWORD cchText) {
    return This->lpVtbl->GetDisplayName(This,fmtid,pid,flags,pwszText,cchText);
}
static inline HRESULT IPropertyUI_GetPropertyDescription(IPropertyUI* This,REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText) {
    return This->lpVtbl->GetPropertyDescription(This,fmtid,pid,pwszText,cchText);
}
static inline HRESULT IPropertyUI_GetDefaultWidth(IPropertyUI* This,REFFMTID fmtid,PROPID pid,ULONG *pcxChars) {
    return This->lpVtbl->GetDefaultWidth(This,fmtid,pid,pcxChars);
}
static inline HRESULT IPropertyUI_GetFlags(IPropertyUI* This,REFFMTID fmtid,PROPID pid,PROPERTYUI_FLAGS *pflags) {
    return This->lpVtbl->GetFlags(This,fmtid,pid,pflags);
}
static inline HRESULT IPropertyUI_FormatForDisplay(IPropertyUI* This,REFFMTID fmtid,PROPID pid,const PROPVARIANT *ppropvar,PROPERTYUI_FORMAT_FLAGS puiff,LPWSTR pwszText,DWORD cchText) {
    return This->lpVtbl->FormatForDisplay(This,fmtid,pid,ppropvar,puiff,pwszText,cchText);
}
static inline HRESULT IPropertyUI_GetHelpInfo(IPropertyUI* This,REFFMTID fmtid,PROPID pid,LPWSTR pwszHelpFile,DWORD cch,UINT *puHelpID) {
    return This->lpVtbl->GetHelpInfo(This,fmtid,pid,pwszHelpFile,cch,puHelpID);
}
#endif
#endif

#endif


#endif  /* __IPropertyUI_INTERFACE_DEFINED__ */


#if _WIN32_IE >= _WIN32_IE_IE70
  SHSTDAPI SHRemovePersonalPropertyValues(IShellItemArray *psia);
  SHSTDAPI SHAddDefaultPropertiesByExt(PCWSTR pszExt, IPropertyStore *pPropStore);
  SHSTDAPI SHCreateDefaultPropertiesOp(IShellItem *psi, IFileOperation **ppFileOp);
  SHSTDAPI SHSetDefaultProperties(HWND hwnd, IShellItem *psi, DWORD dwFileOpFlags, IFileOperationProgressSink *pfops);
#endif

/*****************************************************************************
 * ICategoryProvider interface
 */
#ifndef __ICategoryProvider_INTERFACE_DEFINED__
#define __ICategoryProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICategoryProvider, 0x9af64809, 0x5864, 0x4c26, 0xa7,0x20, 0xc1,0xf7,0x8c,0x08,0x6e,0xe3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9af64809-5864-4c26-a720-c1f78c086ee3")
ICategoryProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CanCategorizeOnSCID(
        const SHCOLUMNID *pscid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultCategory(
        GUID *pguid,
        SHCOLUMNID *pscid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCategoryForSCID(
        const SHCOLUMNID *pscid,
        GUID *pguid) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumCategories(
        IEnumGUID **penum) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCategoryName(
        const GUID *pguid,
        LPWSTR pszName,
        UINT cch) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateCategory(
        const GUID *pguid,
        REFIID riid,
        void **ppv) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICategoryProvider, 0x9af64809, 0x5864, 0x4c26, 0xa7,0x20, 0xc1,0xf7,0x8c,0x08,0x6e,0xe3)
#endif
#else
typedef struct ICategoryProviderVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ICategoryProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *CanCategorizeOnSCID)(
        ICategoryProvider *This,
        const SHCOLUMNID *pscid);

    HRESULT (STDMETHODCALLTYPE *GetDefaultCategory)(
        ICategoryProvider *This,
        GUID *pguid,
        SHCOLUMNID *pscid);

    HRESULT (STDMETHODCALLTYPE *GetCategoryForSCID)(
        ICategoryProvider *This,
        const SHCOLUMNID *pscid,
        GUID *pguid);

    HRESULT (STDMETHODCALLTYPE *EnumCategories)(
        ICategoryProvider *This,
        IEnumGUID **penum);

    HRESULT (STDMETHODCALLTYPE *GetCategoryName)(
        ICategoryProvider *This,
        const GUID *pguid,
        LPWSTR pszName,
        UINT cch);

    HRESULT (STDMETHODCALLTYPE *CreateCategory)(
        ICategoryProvider *This,
        const GUID *pguid,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} ICategoryProviderVtbl;

interface ICategoryProvider {
    CONST_VTBL ICategoryProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICategoryProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICategoryProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICategoryProvider_Release(This) (This)->lpVtbl->Release(This)
/*** ICategoryProvider methods ***/
#define ICategoryProvider_CanCategorizeOnSCID(This,pscid) (This)->lpVtbl->CanCategorizeOnSCID(This,pscid)
#define ICategoryProvider_GetDefaultCategory(This,pguid,pscid) (This)->lpVtbl->GetDefaultCategory(This,pguid,pscid)
#define ICategoryProvider_GetCategoryForSCID(This,pscid,pguid) (This)->lpVtbl->GetCategoryForSCID(This,pscid,pguid)
#define ICategoryProvider_EnumCategories(This,penum) (This)->lpVtbl->EnumCategories(This,penum)
#define ICategoryProvider_GetCategoryName(This,pguid,pszName,cch) (This)->lpVtbl->GetCategoryName(This,pguid,pszName,cch)
#define ICategoryProvider_CreateCategory(This,pguid,riid,ppv) (This)->lpVtbl->CreateCategory(This,pguid,riid,ppv)
#else
/*** IUnknown methods ***/
static inline HRESULT ICategoryProvider_QueryInterface(ICategoryProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ICategoryProvider_AddRef(ICategoryProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ICategoryProvider_Release(ICategoryProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** ICategoryProvider methods ***/
static inline HRESULT ICategoryProvider_CanCategorizeOnSCID(ICategoryProvider* This,const SHCOLUMNID *pscid) {
    return This->lpVtbl->CanCategorizeOnSCID(This,pscid);
}
static inline HRESULT ICategoryProvider_GetDefaultCategory(ICategoryProvider* This,GUID *pguid,SHCOLUMNID *pscid) {
    return This->lpVtbl->GetDefaultCategory(This,pguid,pscid);
}
static inline HRESULT ICategoryProvider_GetCategoryForSCID(ICategoryProvider* This,const SHCOLUMNID *pscid,GUID *pguid) {
    return This->lpVtbl->GetCategoryForSCID(This,pscid,pguid);
}
static inline HRESULT ICategoryProvider_EnumCategories(ICategoryProvider* This,IEnumGUID **penum) {
    return This->lpVtbl->EnumCategories(This,penum);
}
static inline HRESULT ICategoryProvider_GetCategoryName(ICategoryProvider* This,const GUID *pguid,LPWSTR pszName,UINT cch) {
    return This->lpVtbl->GetCategoryName(This,pguid,pszName,cch);
}
static inline HRESULT ICategoryProvider_CreateCategory(ICategoryProvider* This,const GUID *pguid,REFIID riid,void **ppv) {
    return This->lpVtbl->CreateCategory(This,pguid,riid,ppv);
}
#endif
#endif

#endif


#endif  /* __ICategoryProvider_INTERFACE_DEFINED__ */


typedef enum CATEGORYINFO_FLAGS {
    CATINFO_NORMAL = 0x0,
    CATINFO_COLLAPSED = 0x1,
    CATINFO_HIDDEN = 0x2,
    CATINFO_EXPANDED = 0x4,
    CATINFO_NOHEADER = 0x8,
    CATINFO_NOTCOLLAPSIBLE = 0x10,
    CATINFO_NOHEADERCOUNT = 0x20,
    CATINFO_SUBSETTED = 0x40
} CATEGORYINFO_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(CATEGORYINFO_FLAGS)

typedef enum CATSORT_FLAGS {
    CATSORT_DEFAULT = 0x0,
    CATSORT_NAME = 0x1
} CATSORT_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(CATSORT_FLAGS)

typedef struct CATEGORY_INFO {
    CATEGORYINFO_FLAGS cif;
    WCHAR wszName[260];
} CATEGORY_INFO;

/*****************************************************************************
 * ICategorizer interface
 */
#ifndef __ICategorizer_INTERFACE_DEFINED__
#define __ICategorizer_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICategorizer, 0xa3b14589, 0x9174, 0x49a8, 0x89,0xa3, 0x06,0xa1,0xae,0x2b,0x9b,0xa7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a3b14589-9174-49a8-89a3-06a1ae2b9ba7")
ICategorizer : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDescription(
        LPWSTR pszDesc,
        UINT cch) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCategory(
        UINT cidl,
        PCUITEMID_CHILD_ARRAY apidl,
        DWORD *rgCategoryIds) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCategoryInfo(
        DWORD dwCategoryId,
        CATEGORY_INFO *pci) = 0;

    virtual HRESULT STDMETHODCALLTYPE CompareCategory(
        CATSORT_FLAGS csfFlags,
        DWORD dwCategoryId1,
        DWORD dwCategoryId2) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICategorizer, 0xa3b14589, 0x9174, 0x49a8, 0x89,0xa3, 0x06,0xa1,0xae,0x2b,0x9b,0xa7)
#endif
#else
typedef struct ICategorizerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ICategorizer methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDescription)(
        ICategorizer *This,
        LPWSTR pszDesc,
        UINT cch);

    HRESULT (STDMETHODCALLTYPE *GetCategory)(
        ICategorizer *This,
        UINT cidl,
        PCUITEMID_CHILD_ARRAY apidl,
        DWORD *rgCategoryIds);

    HRESULT (STDMETHODCALLTYPE *GetCategoryInfo)(
        ICategorizer *This,
        DWORD dwCategoryId,
        CATEGORY_INFO *pci);

    HRESULT (STDMETHODCALLTYPE *CompareCategory)(
        ICategorizer *This,
        CATSORT_FLAGS csfFlags,
        DWORD dwCategoryId1,
        DWORD dwCategoryId2);

    END_INTERFACE
} ICategorizerVtbl;

interface ICategorizer {
    CONST_VTBL ICategorizerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICategorizer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICategorizer_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICategorizer_Release(This) (This)->lpVtbl->Release(This)
/*** ICategorizer methods ***/
#define ICategorizer_GetDescription(This,pszDesc,cch) (This)->lpVtbl->GetDescription(This,pszDesc,cch)
#define ICategorizer_GetCategory(This,cidl,apidl,rgCategoryIds) (This)->lpVtbl->GetCategory(This,cidl,apidl,rgCategoryIds)
#define ICategorizer_GetCategoryInfo(This,dwCategoryId,pci) (This)->lpVtbl->GetCategoryInfo(This,dwCategoryId,pci)
#define ICategorizer_CompareCategory(This,csfFlags,dwCategoryId1,dwCategoryId2) (This)->lpVtbl->CompareCategory(This,csfFlags,dwCategoryId1,dwCategoryId2)
#else
/*** IUnknown methods ***/
static inline HRESULT ICategorizer_QueryInterface(ICategorizer* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ICategorizer_AddRef(ICategorizer* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ICategorizer_Release(ICategorizer* This) {
    return This->lpVtbl->Release(This);
}
/*** ICategorizer methods ***/
static inline HRESULT ICategorizer_GetDescription(ICategorizer* This,LPWSTR pszDesc,UINT cch) {
    return This->lpVtbl->GetDescription(This,pszDesc,cch);
}
static inline HRESULT ICategorizer_GetCategory(ICategorizer* This,UINT cidl,PCUITEMID_CHILD_ARRAY apidl,DWORD *rgCategoryIds) {
    return This->lpVtbl->GetCategory(This,cidl,apidl,rgCategoryIds);
}
static inline HRESULT ICategorizer_GetCategoryInfo(ICategorizer* This,DWORD dwCategoryId,CATEGORY_INFO *pci) {
    return This->lpVtbl->GetCategoryInfo(This,dwCategoryId,pci);
}
static inline HRESULT ICategorizer_CompareCategory(ICategorizer* This,CATSORT_FLAGS csfFlags,DWORD dwCategoryId1,DWORD dwCategoryId2) {
    return This->lpVtbl->CompareCategory(This,csfFlags,dwCategoryId1,dwCategoryId2);
}
#endif
#endif

#endif


#endif  /* __ICategorizer_INTERFACE_DEFINED__ */


#include <pshpack8.h>
typedef struct SHDRAGIMAGE {
    SIZE sizeDragImage;
    POINT ptOffset;
    HBITMAP hbmpDragImage;
    COLORREF crColorKey;
} SHDRAGIMAGE;
typedef struct SHDRAGIMAGE *LPSHDRAGIMAGE;
#include <poppack.h>

#define DI_GETDRAGIMAGE     TEXT("ShellGetDragImage")

/*****************************************************************************
 * 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(
        WINBOOL 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,
        WINBOOL 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 inline HRESULT IDropTargetHelper_QueryInterface(IDropTargetHelper* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDropTargetHelper_AddRef(IDropTargetHelper* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDropTargetHelper_Release(IDropTargetHelper* This) {
    return This->lpVtbl->Release(This);
}
/*** IDropTargetHelper methods ***/
static inline HRESULT IDropTargetHelper_DragEnter(IDropTargetHelper* This,HWND hwndTarget,IDataObject *pDataObject,POINT *ppt,DWORD dwEffect) {
    return This->lpVtbl->DragEnter(This,hwndTarget,pDataObject,ppt,dwEffect);
}
static inline HRESULT IDropTargetHelper_DragLeave(IDropTargetHelper* This) {
    return This->lpVtbl->DragLeave(This);
}
static inline HRESULT IDropTargetHelper_DragOver(IDropTargetHelper* This,POINT *ppt,DWORD dwEffect) {
    return This->lpVtbl->DragOver(This,ppt,dwEffect);
}
static inline HRESULT IDropTargetHelper_Drop(IDropTargetHelper* This,IDataObject *pDataObject,POINT *ppt,DWORD dwEffect) {
    return This->lpVtbl->Drop(This,pDataObject,ppt,dwEffect);
}
static inline HRESULT IDropTargetHelper_Show(IDropTargetHelper* This,WINBOOL fShow) {
    return This->lpVtbl->Show(This,fShow);
}
#endif
#endif

#endif


#endif  /* __IDropTargetHelper_INTERFACE_DEFINED__ */


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

DEFINE_GUID(IID_IDragSourceHelper, 0xde5bf786, 0x477a, 0x11d2, 0x83,0x9d, 0x00,0xc0,0x4f,0xd9,0x18,0xd0);
#if defined(__cplusplus) && !defined(CINTERFACE)
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 inline HRESULT IDragSourceHelper_QueryInterface(IDragSourceHelper* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDragSourceHelper_AddRef(IDragSourceHelper* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDragSourceHelper_Release(IDragSourceHelper* This) {
    return This->lpVtbl->Release(This);
}
/*** IDragSourceHelper methods ***/
static inline HRESULT IDragSourceHelper_InitializeFromBitmap(IDragSourceHelper* This,LPSHDRAGIMAGE pshdi,IDataObject *pDataObject) {
    return This->lpVtbl->InitializeFromBitmap(This,pshdi,pDataObject);
}
static inline 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__ */


#if NTDDI_VERSION >= NTDDI_VISTA
typedef enum DSH_FLAGS {
    DSH_ALLOWDROPDESCRIPTIONTEXT = 0x1
} DSH_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(DSH_FLAGS)

/*****************************************************************************
 * IDragSourceHelper2 interface
 */
#ifndef __IDragSourceHelper2_INTERFACE_DEFINED__
#define __IDragSourceHelper2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDragSourceHelper2, 0x83e07d0d, 0x0c5f, 0x4163, 0xbf,0x1a, 0x60,0xb2,0x74,0x05,0x1e,0x40);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("83e07d0d-0c5f-4163-bf1a-60b274051e40")
IDragSourceHelper2 : public IDragSourceHelper
{
    virtual HRESULT STDMETHODCALLTYPE SetFlags(
        DWORD dwFlags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDragSourceHelper2, 0x83e07d0d, 0x0c5f, 0x4163, 0xbf,0x1a, 0x60,0xb2,0x74,0x05,0x1e,0x40)
#endif
#else
typedef struct IDragSourceHelper2Vtbl {
    BEGIN_INTERFACE

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

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

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

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

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

    /*** IDragSourceHelper2 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFlags)(
        IDragSourceHelper2 *This,
        DWORD dwFlags);

    END_INTERFACE
} IDragSourceHelper2Vtbl;

interface IDragSourceHelper2 {
    CONST_VTBL IDragSourceHelper2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDragSourceHelper2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDragSourceHelper2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDragSourceHelper2_Release(This) (This)->lpVtbl->Release(This)
/*** IDragSourceHelper methods ***/
#define IDragSourceHelper2_InitializeFromBitmap(This,pshdi,pDataObject) (This)->lpVtbl->InitializeFromBitmap(This,pshdi,pDataObject)
#define IDragSourceHelper2_InitializeFromWindow(This,hwnd,ppt,pDataObject) (This)->lpVtbl->InitializeFromWindow(This,hwnd,ppt,pDataObject)
/*** IDragSourceHelper2 methods ***/
#define IDragSourceHelper2_SetFlags(This,dwFlags) (This)->lpVtbl->SetFlags(This,dwFlags)
#else
/*** IUnknown methods ***/
static inline HRESULT IDragSourceHelper2_QueryInterface(IDragSourceHelper2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDragSourceHelper2_AddRef(IDragSourceHelper2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDragSourceHelper2_Release(IDragSourceHelper2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDragSourceHelper methods ***/
static inline HRESULT IDragSourceHelper2_InitializeFromBitmap(IDragSourceHelper2* This,LPSHDRAGIMAGE pshdi,IDataObject *pDataObject) {
    return This->lpVtbl->InitializeFromBitmap(This,pshdi,pDataObject);
}
static inline HRESULT IDragSourceHelper2_InitializeFromWindow(IDragSourceHelper2* This,HWND hwnd,POINT *ppt,IDataObject *pDataObject) {
    return This->lpVtbl->InitializeFromWindow(This,hwnd,ppt,pDataObject);
}
/*** IDragSourceHelper2 methods ***/
static inline HRESULT IDragSourceHelper2_SetFlags(IDragSourceHelper2* This,DWORD dwFlags) {
    return This->lpVtbl->SetFlags(This,dwFlags);
}
#endif
#endif

#endif


#endif  /* __IDragSourceHelper2_INTERFACE_DEFINED__ */

#endif

#define IShellLink __MINGW_NAME_AW(IShellLink)

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_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(SLR_FLAGS)

typedef enum SLGP_FLAGS {
    SLGP_SHORTPATH = 0x1,
    SLGP_UNCPRIORITY = 0x2,
    SLGP_RAWPATH = 0x4,
    SLGP_RELATIVEPRIORITY = 0x8
} SLGP_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(SLGP_FLAGS)

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

DEFINE_GUID(IID_IShellLinkA, 0x000214ee, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
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(
        PIDLIST_ABSOLUTE *ppidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIDList(
        PCIDLIST_ABSOLUTE 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,
        PIDLIST_ABSOLUTE *ppidl);

    HRESULT (STDMETHODCALLTYPE *SetIDList)(
        IShellLinkA *This,
        PCIDLIST_ABSOLUTE 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 inline HRESULT IShellLinkA_QueryInterface(IShellLinkA* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellLinkA_AddRef(IShellLinkA* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellLinkA_Release(IShellLinkA* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellLinkA methods ***/
static inline 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 inline HRESULT IShellLinkA_GetIDList(IShellLinkA* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetIDList(This,ppidl);
}
static inline HRESULT IShellLinkA_SetIDList(IShellLinkA* This,PCIDLIST_ABSOLUTE pidl) {
    return This->lpVtbl->SetIDList(This,pidl);
}
static inline HRESULT IShellLinkA_GetDescription(IShellLinkA* This,LPSTR pszName,int cch) {
    return This->lpVtbl->GetDescription(This,pszName,cch);
}
static inline HRESULT IShellLinkA_SetDescription(IShellLinkA* This,LPCSTR pszName) {
    return This->lpVtbl->SetDescription(This,pszName);
}
static inline HRESULT IShellLinkA_GetWorkingDirectory(IShellLinkA* This,LPSTR pszDir,int cch) {
    return This->lpVtbl->GetWorkingDirectory(This,pszDir,cch);
}
static inline HRESULT IShellLinkA_SetWorkingDirectory(IShellLinkA* This,LPCSTR pszDir) {
    return This->lpVtbl->SetWorkingDirectory(This,pszDir);
}
static inline HRESULT IShellLinkA_GetArguments(IShellLinkA* This,LPSTR pszArgs,int cch) {
    return This->lpVtbl->GetArguments(This,pszArgs,cch);
}
static inline HRESULT IShellLinkA_SetArguments(IShellLinkA* This,LPCSTR pszArgs) {
    return This->lpVtbl->SetArguments(This,pszArgs);
}
static inline HRESULT IShellLinkA_GetHotkey(IShellLinkA* This,WORD *pwHotkey) {
    return This->lpVtbl->GetHotkey(This,pwHotkey);
}
static inline HRESULT IShellLinkA_SetHotkey(IShellLinkA* This,WORD wHotkey) {
    return This->lpVtbl->SetHotkey(This,wHotkey);
}
static inline HRESULT IShellLinkA_GetShowCmd(IShellLinkA* This,int *piShowCmd) {
    return This->lpVtbl->GetShowCmd(This,piShowCmd);
}
static inline HRESULT IShellLinkA_SetShowCmd(IShellLinkA* This,int iShowCmd) {
    return This->lpVtbl->SetShowCmd(This,iShowCmd);
}
static inline HRESULT IShellLinkA_GetIconLocation(IShellLinkA* This,LPSTR pszIconPath,int cch,int *piIcon) {
    return This->lpVtbl->GetIconLocation(This,pszIconPath,cch,piIcon);
}
static inline HRESULT IShellLinkA_SetIconLocation(IShellLinkA* This,LPCSTR pszIconPath,int iIcon) {
    return This->lpVtbl->SetIconLocation(This,pszIconPath,iIcon);
}
static inline HRESULT IShellLinkA_SetRelativePath(IShellLinkA* This,LPCSTR pszPathRel,DWORD dwReserved) {
    return This->lpVtbl->SetRelativePath(This,pszPathRel,dwReserved);
}
static inline HRESULT IShellLinkA_Resolve(IShellLinkA* This,HWND hwnd,DWORD fFlags) {
    return This->lpVtbl->Resolve(This,hwnd,fFlags);
}
static inline 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(
        PIDLIST_ABSOLUTE *ppidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIDList(
        PCIDLIST_ABSOLUTE 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,
        PIDLIST_ABSOLUTE *ppidl);

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

#endif


#endif  /* __IShellLinkW_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 inline HRESULT IShellLinkDataList_QueryInterface(IShellLinkDataList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellLinkDataList_AddRef(IShellLinkDataList* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellLinkDataList_Release(IShellLinkDataList* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellLinkDataList methods ***/
static inline HRESULT IShellLinkDataList_AddDataBlock(IShellLinkDataList* This,void *pDataBlock) {
    return This->lpVtbl->AddDataBlock(This,pDataBlock);
}
static inline HRESULT IShellLinkDataList_CopyDataBlock(IShellLinkDataList* This,DWORD dwSig,void **ppDataBlock) {
    return This->lpVtbl->CopyDataBlock(This,dwSig,ppDataBlock);
}
static inline HRESULT IShellLinkDataList_RemoveDataBlock(IShellLinkDataList* This,DWORD dwSig) {
    return This->lpVtbl->RemoveDataBlock(This,dwSig);
}
static inline HRESULT IShellLinkDataList_GetFlags(IShellLinkDataList* This,DWORD *pdwFlags) {
    return This->lpVtbl->GetFlags(This,pdwFlags);
}
static inline 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 *punkLink,
        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 *punkLink,
        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,punkLink,hwnd,fFlags) (This)->lpVtbl->ResolveShellLink(This,punkLink,hwnd,fFlags)
#else
/*** IUnknown methods ***/
static inline HRESULT IResolveShellLink_QueryInterface(IResolveShellLink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IResolveShellLink_AddRef(IResolveShellLink* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IResolveShellLink_Release(IResolveShellLink* This) {
    return This->lpVtbl->Release(This);
}
/*** IResolveShellLink methods ***/
static inline HRESULT IResolveShellLink_ResolveShellLink(IResolveShellLink* This,IUnknown *punkLink,HWND hwnd,DWORD fFlags) {
    return This->lpVtbl->ResolveShellLink(This,punkLink,hwnd,fFlags);
}
#endif
#endif

#endif


#endif  /* __IResolveShellLink_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IActionProgressDialog interface
 */
#ifndef __IActionProgressDialog_INTERFACE_DEFINED__
#define __IActionProgressDialog_INTERFACE_DEFINED__

enum _SPINITF {
    SPINITF_NORMAL = 0x0,
    SPINITF_MODAL = 0x1,
    SPINITF_NOMINIMIZE = 0x8
};

typedef DWORD SPINITF;

DEFINE_GUID(IID_IActionProgressDialog, 0x49ff1172, 0xeadc, 0x446d, 0x92,0x85, 0x15,0x64,0x53,0xa6,0x43,0x1c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("49ff1172-eadc-446d-9285-156453a6431c")
IActionProgressDialog : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        SPINITF flags,
        LPCWSTR pszTitle,
        LPCWSTR pszCancel) = 0;

    virtual HRESULT STDMETHODCALLTYPE Stop(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IActionProgressDialog, 0x49ff1172, 0xeadc, 0x446d, 0x92,0x85, 0x15,0x64,0x53,0xa6,0x43,0x1c)
#endif
#else
typedef struct IActionProgressDialogVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IActionProgressDialog methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IActionProgressDialog *This,
        SPINITF flags,
        LPCWSTR pszTitle,
        LPCWSTR pszCancel);

    HRESULT (STDMETHODCALLTYPE *Stop)(
        IActionProgressDialog *This);

    END_INTERFACE
} IActionProgressDialogVtbl;

interface IActionProgressDialog {
    CONST_VTBL IActionProgressDialogVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IActionProgressDialog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IActionProgressDialog_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IActionProgressDialog_Release(This) (This)->lpVtbl->Release(This)
/*** IActionProgressDialog methods ***/
#define IActionProgressDialog_Initialize(This,flags,pszTitle,pszCancel) (This)->lpVtbl->Initialize(This,flags,pszTitle,pszCancel)
#define IActionProgressDialog_Stop(This) (This)->lpVtbl->Stop(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IActionProgressDialog_QueryInterface(IActionProgressDialog* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IActionProgressDialog_AddRef(IActionProgressDialog* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IActionProgressDialog_Release(IActionProgressDialog* This) {
    return This->lpVtbl->Release(This);
}
/*** IActionProgressDialog methods ***/
static inline HRESULT IActionProgressDialog_Initialize(IActionProgressDialog* This,SPINITF flags,LPCWSTR pszTitle,LPCWSTR pszCancel) {
    return This->lpVtbl->Initialize(This,flags,pszTitle,pszCancel);
}
static inline HRESULT IActionProgressDialog_Stop(IActionProgressDialog* This) {
    return This->lpVtbl->Stop(This);
}
#endif
#endif

#endif


#endif  /* __IActionProgressDialog_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IHWEventHandler interface
 */
#ifndef __IHWEventHandler_INTERFACE_DEFINED__
#define __IHWEventHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IHWEventHandler, 0xc1fb73d0, 0xec3a, 0x4ba2, 0xb5,0x12, 0x8c,0xdb,0x91,0x87,0xb6,0xd1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c1fb73d0-ec3a-4ba2-b512-8cdb9187b6d1")
IHWEventHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        LPCWSTR pszParams) = 0;

    virtual HRESULT STDMETHODCALLTYPE HandleEvent(
        LPCWSTR pszDeviceID,
        LPCWSTR pszAltDeviceID,
        LPCWSTR pszEventType) = 0;

    virtual HRESULT STDMETHODCALLTYPE HandleEventWithContent(
        LPCWSTR pszDeviceID,
        LPCWSTR pszAltDeviceID,
        LPCWSTR pszEventType,
        LPCWSTR pszContentTypeHandler,
        IDataObject *pdataobject) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IHWEventHandler, 0xc1fb73d0, 0xec3a, 0x4ba2, 0xb5,0x12, 0x8c,0xdb,0x91,0x87,0xb6,0xd1)
#endif
#else
typedef struct IHWEventHandlerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IHWEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IHWEventHandler *This,
        LPCWSTR pszParams);

    HRESULT (STDMETHODCALLTYPE *HandleEvent)(
        IHWEventHandler *This,
        LPCWSTR pszDeviceID,
        LPCWSTR pszAltDeviceID,
        LPCWSTR pszEventType);

    HRESULT (STDMETHODCALLTYPE *HandleEventWithContent)(
        IHWEventHandler *This,
        LPCWSTR pszDeviceID,
        LPCWSTR pszAltDeviceID,
        LPCWSTR pszEventType,
        LPCWSTR pszContentTypeHandler,
        IDataObject *pdataobject);

    END_INTERFACE
} IHWEventHandlerVtbl;

interface IHWEventHandler {
    CONST_VTBL IHWEventHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IHWEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IHWEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IHWEventHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IHWEventHandler methods ***/
#define IHWEventHandler_Initialize(This,pszParams) (This)->lpVtbl->Initialize(This,pszParams)
#define IHWEventHandler_HandleEvent(This,pszDeviceID,pszAltDeviceID,pszEventType) (This)->lpVtbl->HandleEvent(This,pszDeviceID,pszAltDeviceID,pszEventType)
#define IHWEventHandler_HandleEventWithContent(This,pszDeviceID,pszAltDeviceID,pszEventType,pszContentTypeHandler,pdataobject) (This)->lpVtbl->HandleEventWithContent(This,pszDeviceID,pszAltDeviceID,pszEventType,pszContentTypeHandler,pdataobject)
#else
/*** IUnknown methods ***/
static inline HRESULT IHWEventHandler_QueryInterface(IHWEventHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IHWEventHandler_AddRef(IHWEventHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IHWEventHandler_Release(IHWEventHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IHWEventHandler methods ***/
static inline HRESULT IHWEventHandler_Initialize(IHWEventHandler* This,LPCWSTR pszParams) {
    return This->lpVtbl->Initialize(This,pszParams);
}
static inline HRESULT IHWEventHandler_HandleEvent(IHWEventHandler* This,LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType) {
    return This->lpVtbl->HandleEvent(This,pszDeviceID,pszAltDeviceID,pszEventType);
}
static inline HRESULT IHWEventHandler_HandleEventWithContent(IHWEventHandler* This,LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType,LPCWSTR pszContentTypeHandler,IDataObject *pdataobject) {
    return This->lpVtbl->HandleEventWithContent(This,pszDeviceID,pszAltDeviceID,pszEventType,pszContentTypeHandler,pdataobject);
}
#endif
#endif

#endif


#endif  /* __IHWEventHandler_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IHWEventHandler2 interface
 */
#ifndef __IHWEventHandler2_INTERFACE_DEFINED__
#define __IHWEventHandler2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IHWEventHandler2, 0xcfcc809f, 0x295d, 0x42e8, 0x9f,0xfc, 0x42,0x4b,0x33,0xc4,0x87,0xe6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cfcc809f-295d-42e8-9ffc-424b33c487e6")
IHWEventHandler2 : public IHWEventHandler
{
    virtual HRESULT STDMETHODCALLTYPE HandleEventWithHWND(
        LPCWSTR pszDeviceID,
        LPCWSTR pszAltDeviceID,
        LPCWSTR pszEventType,
        HWND hwndOwner) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IHWEventHandler2, 0xcfcc809f, 0x295d, 0x42e8, 0x9f,0xfc, 0x42,0x4b,0x33,0xc4,0x87,0xe6)
#endif
#else
typedef struct IHWEventHandler2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IHWEventHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IHWEventHandler2 *This,
        LPCWSTR pszParams);

    HRESULT (STDMETHODCALLTYPE *HandleEvent)(
        IHWEventHandler2 *This,
        LPCWSTR pszDeviceID,
        LPCWSTR pszAltDeviceID,
        LPCWSTR pszEventType);

    HRESULT (STDMETHODCALLTYPE *HandleEventWithContent)(
        IHWEventHandler2 *This,
        LPCWSTR pszDeviceID,
        LPCWSTR pszAltDeviceID,
        LPCWSTR pszEventType,
        LPCWSTR pszContentTypeHandler,
        IDataObject *pdataobject);

    /*** IHWEventHandler2 methods ***/
    HRESULT (STDMETHODCALLTYPE *HandleEventWithHWND)(
        IHWEventHandler2 *This,
        LPCWSTR pszDeviceID,
        LPCWSTR pszAltDeviceID,
        LPCWSTR pszEventType,
        HWND hwndOwner);

    END_INTERFACE
} IHWEventHandler2Vtbl;

interface IHWEventHandler2 {
    CONST_VTBL IHWEventHandler2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IHWEventHandler2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IHWEventHandler2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IHWEventHandler2_Release(This) (This)->lpVtbl->Release(This)
/*** IHWEventHandler methods ***/
#define IHWEventHandler2_Initialize(This,pszParams) (This)->lpVtbl->Initialize(This,pszParams)
#define IHWEventHandler2_HandleEvent(This,pszDeviceID,pszAltDeviceID,pszEventType) (This)->lpVtbl->HandleEvent(This,pszDeviceID,pszAltDeviceID,pszEventType)
#define IHWEventHandler2_HandleEventWithContent(This,pszDeviceID,pszAltDeviceID,pszEventType,pszContentTypeHandler,pdataobject) (This)->lpVtbl->HandleEventWithContent(This,pszDeviceID,pszAltDeviceID,pszEventType,pszContentTypeHandler,pdataobject)
/*** IHWEventHandler2 methods ***/
#define IHWEventHandler2_HandleEventWithHWND(This,pszDeviceID,pszAltDeviceID,pszEventType,hwndOwner) (This)->lpVtbl->HandleEventWithHWND(This,pszDeviceID,pszAltDeviceID,pszEventType,hwndOwner)
#else
/*** IUnknown methods ***/
static inline HRESULT IHWEventHandler2_QueryInterface(IHWEventHandler2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IHWEventHandler2_AddRef(IHWEventHandler2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IHWEventHandler2_Release(IHWEventHandler2* This) {
    return This->lpVtbl->Release(This);
}
/*** IHWEventHandler methods ***/
static inline HRESULT IHWEventHandler2_Initialize(IHWEventHandler2* This,LPCWSTR pszParams) {
    return This->lpVtbl->Initialize(This,pszParams);
}
static inline HRESULT IHWEventHandler2_HandleEvent(IHWEventHandler2* This,LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType) {
    return This->lpVtbl->HandleEvent(This,pszDeviceID,pszAltDeviceID,pszEventType);
}
static inline HRESULT IHWEventHandler2_HandleEventWithContent(IHWEventHandler2* This,LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType,LPCWSTR pszContentTypeHandler,IDataObject *pdataobject) {
    return This->lpVtbl->HandleEventWithContent(This,pszDeviceID,pszAltDeviceID,pszEventType,pszContentTypeHandler,pdataobject);
}
/*** IHWEventHandler2 methods ***/
static inline HRESULT IHWEventHandler2_HandleEventWithHWND(IHWEventHandler2* This,LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType,HWND hwndOwner) {
    return This->lpVtbl->HandleEventWithHWND(This,pszDeviceID,pszAltDeviceID,pszEventType,hwndOwner);
}
#endif
#endif

#endif


#endif  /* __IHWEventHandler2_INTERFACE_DEFINED__ */


#define ARCONTENT_AUTORUNINF 0x00000002
#define ARCONTENT_AUDIOCD 0x00000004
#define ARCONTENT_DVDMOVIE 0x00000008
#define ARCONTENT_BLANKCD 0x00000010
#define ARCONTENT_BLANKDVD 0x00000020
#define ARCONTENT_UNKNOWNCONTENT 0x00000040
#define ARCONTENT_AUTOPLAYPIX 0x00000080
#define ARCONTENT_AUTOPLAYMUSIC 0x00000100
#define ARCONTENT_AUTOPLAYVIDEO 0x00000200

#if NTDDI_VERSION >= NTDDI_VISTA
#define ARCONTENT_VCD 0x00000400
#define ARCONTENT_SVCD 0x00000800
#define ARCONTENT_DVDAUDIO 0x00001000
#define ARCONTENT_BLANKBD 0x00002000
#define ARCONTENT_BLURAY 0x00004000
#define ARCONTENT_CAMERASTORAGE 0x00008000
#define ARCONTENT_CUSTOMEVENT 0x00010000
#define ARCONTENT_NONE 0x00000000
#define ARCONTENT_MASK 0x0001FFFE

#define ARCONTENT_PHASE_UNKNOWN 0x00000000
#define ARCONTENT_PHASE_PRESNIFF 0x10000000
#define ARCONTENT_PHASE_SNIFFING 0x20000000
#define ARCONTENT_PHASE_FINAL 0x40000000
#define ARCONTENT_PHASE_MASK 0x70000000
#endif

/*****************************************************************************
 * 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 pszPath,
        DWORD dwContentType,
        LPCWSTR pszLabel,
        DWORD dwSerialNumber) = 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 pszPath,
        DWORD dwContentType,
        LPCWSTR pszLabel,
        DWORD dwSerialNumber);

    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,pszPath,dwContentType,pszLabel,dwSerialNumber) (This)->lpVtbl->AllowAutoPlay(This,pszPath,dwContentType,pszLabel,dwSerialNumber)
#else
/*** IUnknown methods ***/
static inline HRESULT IQueryCancelAutoPlay_QueryInterface(IQueryCancelAutoPlay* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IQueryCancelAutoPlay_AddRef(IQueryCancelAutoPlay* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IQueryCancelAutoPlay_Release(IQueryCancelAutoPlay* This) {
    return This->lpVtbl->Release(This);
}
/*** IQueryCancelAutoPlay methods ***/
static inline HRESULT IQueryCancelAutoPlay_AllowAutoPlay(IQueryCancelAutoPlay* This,LPCWSTR pszPath,DWORD dwContentType,LPCWSTR pszLabel,DWORD dwSerialNumber) {
    return This->lpVtbl->AllowAutoPlay(This,pszPath,dwContentType,pszLabel,dwSerialNumber);
}
#endif
#endif

#endif


#endif  /* __IQueryCancelAutoPlay_INTERFACE_DEFINED__ */


#if NTDDI_VERSION >= NTDDI_VISTA
/*****************************************************************************
 * IDynamicHWHandler interface
 */
#ifndef __IDynamicHWHandler_INTERFACE_DEFINED__
#define __IDynamicHWHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDynamicHWHandler, 0xdc2601d7, 0x059e, 0x42fc, 0xa0,0x9d, 0x2a,0xfd,0x21,0xb6,0xd5,0xf7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("dc2601d7-059e-42fc-a09d-2afd21b6d5f7")
IDynamicHWHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDynamicInfo(
        LPCWSTR pszDeviceID,
        DWORD dwContentType,
        LPWSTR *ppszAction) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDynamicHWHandler, 0xdc2601d7, 0x059e, 0x42fc, 0xa0,0x9d, 0x2a,0xfd,0x21,0xb6,0xd5,0xf7)
#endif
#else
typedef struct IDynamicHWHandlerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDynamicHWHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDynamicInfo)(
        IDynamicHWHandler *This,
        LPCWSTR pszDeviceID,
        DWORD dwContentType,
        LPWSTR *ppszAction);

    END_INTERFACE
} IDynamicHWHandlerVtbl;

interface IDynamicHWHandler {
    CONST_VTBL IDynamicHWHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDynamicHWHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDynamicHWHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDynamicHWHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IDynamicHWHandler methods ***/
#define IDynamicHWHandler_GetDynamicInfo(This,pszDeviceID,dwContentType,ppszAction) (This)->lpVtbl->GetDynamicInfo(This,pszDeviceID,dwContentType,ppszAction)
#else
/*** IUnknown methods ***/
static inline HRESULT IDynamicHWHandler_QueryInterface(IDynamicHWHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDynamicHWHandler_AddRef(IDynamicHWHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDynamicHWHandler_Release(IDynamicHWHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IDynamicHWHandler methods ***/
static inline HRESULT IDynamicHWHandler_GetDynamicInfo(IDynamicHWHandler* This,LPCWSTR pszDeviceID,DWORD dwContentType,LPWSTR *ppszAction) {
    return This->lpVtbl->GetDynamicInfo(This,pszDeviceID,dwContentType,ppszAction);
}
#endif
#endif

#endif


#endif  /* __IDynamicHWHandler_INTERFACE_DEFINED__ */

#endif

/*****************************************************************************
 * IActionProgress interface
 */
#ifndef __IActionProgress_INTERFACE_DEFINED__
#define __IActionProgress_INTERFACE_DEFINED__

enum _SPBEGINF {
    SPBEGINF_NORMAL = 0x0,
    SPBEGINF_AUTOTIME = 0x2,
    SPBEGINF_NOPROGRESSBAR = 0x10,
    SPBEGINF_MARQUEEPROGRESS = 0x20,
    SPBEGINF_NOCANCELBUTTON = 0x40
};

typedef DWORD SPBEGINF;

typedef enum _SPACTION {
    SPACTION_NONE = 0,
    SPACTION_MOVING = 1,
    SPACTION_COPYING = 2,
    SPACTION_RECYCLING = 3,
    SPACTION_APPLYINGATTRIBS = 4,
    SPACTION_DOWNLOADING = 5,
    SPACTION_SEARCHING_INTERNET = 6,
    SPACTION_CALCULATING = 7,
    SPACTION_UPLOADING = 8,
    SPACTION_SEARCHING_FILES = 9,
    SPACTION_DELETING = 10,
    SPACTION_RENAMING = 11,
    SPACTION_FORMATTING = 12,
    SPACTION_COPY_MOVING = 13
} SPACTION;

typedef enum _SPTEXT {
    SPTEXT_ACTIONDESCRIPTION = 1,
    SPTEXT_ACTIONDETAIL = 2
} SPTEXT;

DEFINE_GUID(IID_IActionProgress, 0x49ff1173, 0xeadc, 0x446d, 0x92,0x85, 0x15,0x64,0x53,0xa6,0x43,0x1c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("49ff1173-eadc-446d-9285-156453a6431c")
IActionProgress : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Begin(
        SPACTION action,
        SPBEGINF flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE UpdateProgress(
        ULONGLONG ulCompleted,
        ULONGLONG ulTotal) = 0;

    virtual HRESULT STDMETHODCALLTYPE UpdateText(
        SPTEXT sptext,
        LPCWSTR pszText,
        WINBOOL fMayCompact) = 0;

    virtual HRESULT STDMETHODCALLTYPE QueryCancel(
        WINBOOL *pfCancelled) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResetCancel(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE End(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IActionProgress, 0x49ff1173, 0xeadc, 0x446d, 0x92,0x85, 0x15,0x64,0x53,0xa6,0x43,0x1c)
#endif
#else
typedef struct IActionProgressVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IActionProgress methods ***/
    HRESULT (STDMETHODCALLTYPE *Begin)(
        IActionProgress *This,
        SPACTION action,
        SPBEGINF flags);

    HRESULT (STDMETHODCALLTYPE *UpdateProgress)(
        IActionProgress *This,
        ULONGLONG ulCompleted,
        ULONGLONG ulTotal);

    HRESULT (STDMETHODCALLTYPE *UpdateText)(
        IActionProgress *This,
        SPTEXT sptext,
        LPCWSTR pszText,
        WINBOOL fMayCompact);

    HRESULT (STDMETHODCALLTYPE *QueryCancel)(
        IActionProgress *This,
        WINBOOL *pfCancelled);

    HRESULT (STDMETHODCALLTYPE *ResetCancel)(
        IActionProgress *This);

    HRESULT (STDMETHODCALLTYPE *End)(
        IActionProgress *This);

    END_INTERFACE
} IActionProgressVtbl;

interface IActionProgress {
    CONST_VTBL IActionProgressVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IActionProgress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IActionProgress_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IActionProgress_Release(This) (This)->lpVtbl->Release(This)
/*** IActionProgress methods ***/
#define IActionProgress_Begin(This,action,flags) (This)->lpVtbl->Begin(This,action,flags)
#define IActionProgress_UpdateProgress(This,ulCompleted,ulTotal) (This)->lpVtbl->UpdateProgress(This,ulCompleted,ulTotal)
#define IActionProgress_UpdateText(This,sptext,pszText,fMayCompact) (This)->lpVtbl->UpdateText(This,sptext,pszText,fMayCompact)
#define IActionProgress_QueryCancel(This,pfCancelled) (This)->lpVtbl->QueryCancel(This,pfCancelled)
#define IActionProgress_ResetCancel(This) (This)->lpVtbl->ResetCancel(This)
#define IActionProgress_End(This) (This)->lpVtbl->End(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IActionProgress_QueryInterface(IActionProgress* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IActionProgress_AddRef(IActionProgress* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IActionProgress_Release(IActionProgress* This) {
    return This->lpVtbl->Release(This);
}
/*** IActionProgress methods ***/
static inline HRESULT IActionProgress_Begin(IActionProgress* This,SPACTION action,SPBEGINF flags) {
    return This->lpVtbl->Begin(This,action,flags);
}
static inline HRESULT IActionProgress_UpdateProgress(IActionProgress* This,ULONGLONG ulCompleted,ULONGLONG ulTotal) {
    return This->lpVtbl->UpdateProgress(This,ulCompleted,ulTotal);
}
static inline HRESULT IActionProgress_UpdateText(IActionProgress* This,SPTEXT sptext,LPCWSTR pszText,WINBOOL fMayCompact) {
    return This->lpVtbl->UpdateText(This,sptext,pszText,fMayCompact);
}
static inline HRESULT IActionProgress_QueryCancel(IActionProgress* This,WINBOOL *pfCancelled) {
    return This->lpVtbl->QueryCancel(This,pfCancelled);
}
static inline HRESULT IActionProgress_ResetCancel(IActionProgress* This) {
    return This->lpVtbl->ResetCancel(This);
}
static inline HRESULT IActionProgress_End(IActionProgress* This) {
    return This->lpVtbl->End(This);
}
#endif
#endif

#endif


#endif  /* __IActionProgress_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IShellExtInit interface
 */
#ifndef __IShellExtInit_INTERFACE_DEFINED__
#define __IShellExtInit_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellExtInit, 0x000214e8, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("000214e8-0000-0000-c000-000000000046")
IShellExtInit : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        PCIDLIST_ABSOLUTE 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,
        PCIDLIST_ABSOLUTE 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 inline HRESULT IShellExtInit_QueryInterface(IShellExtInit* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellExtInit_AddRef(IShellExtInit* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellExtInit_Release(IShellExtInit* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellExtInit methods ***/
static inline HRESULT IShellExtInit_Initialize(IShellExtInit* This,PCIDLIST_ABSOLUTE pidlFolder,IDataObject *pdtobj,HKEY hkeyProgID) {
    return This->lpVtbl->Initialize(This,pidlFolder,pdtobj,hkeyProgID);
}
#endif
#endif

#endif


#endif  /* __IShellExtInit_INTERFACE_DEFINED__ */

typedef IShellExtInit *LPSHELLEXTINIT;

/*****************************************************************************
 * IShellPropSheetExt interface
 */
#ifndef __IShellPropSheetExt_INTERFACE_DEFINED__
#define __IShellPropSheetExt_INTERFACE_DEFINED__

enum _EXPPS {
    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 inline HRESULT IShellPropSheetExt_QueryInterface(IShellPropSheetExt* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellPropSheetExt_AddRef(IShellPropSheetExt* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellPropSheetExt_Release(IShellPropSheetExt* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellPropSheetExt methods ***/
static inline HRESULT IShellPropSheetExt_AddPages(IShellPropSheetExt* This,LPFNSVADDPROPSHEETPAGE pfnAddPage,LPARAM lParam) {
    return This->lpVtbl->AddPages(This,pfnAddPage,lParam);
}
static inline 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;

/*****************************************************************************
 * IRemoteComputer interface
 */
#ifndef __IRemoteComputer_INTERFACE_DEFINED__
#define __IRemoteComputer_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRemoteComputer, 0x000214fe, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("000214fe-0000-0000-c000-000000000046")
IRemoteComputer : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        LPCWSTR pszMachine,
        WINBOOL bEnumerating) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRemoteComputer, 0x000214fe, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#else
typedef struct IRemoteComputerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRemoteComputer methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IRemoteComputer *This,
        LPCWSTR pszMachine,
        WINBOOL bEnumerating);

    END_INTERFACE
} IRemoteComputerVtbl;

interface IRemoteComputer {
    CONST_VTBL IRemoteComputerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRemoteComputer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRemoteComputer_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRemoteComputer_Release(This) (This)->lpVtbl->Release(This)
/*** IRemoteComputer methods ***/
#define IRemoteComputer_Initialize(This,pszMachine,bEnumerating) (This)->lpVtbl->Initialize(This,pszMachine,bEnumerating)
#else
/*** IUnknown methods ***/
static inline HRESULT IRemoteComputer_QueryInterface(IRemoteComputer* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRemoteComputer_AddRef(IRemoteComputer* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRemoteComputer_Release(IRemoteComputer* This) {
    return This->lpVtbl->Release(This);
}
/*** IRemoteComputer methods ***/
static inline HRESULT IRemoteComputer_Initialize(IRemoteComputer* This,LPCWSTR pszMachine,WINBOOL bEnumerating) {
    return This->lpVtbl->Initialize(This,pszMachine,bEnumerating);
}
#endif
#endif

#endif


#endif  /* __IRemoteComputer_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IQueryContinue interface
 */
#ifndef __IQueryContinue_INTERFACE_DEFINED__
#define __IQueryContinue_INTERFACE_DEFINED__

DEFINE_GUID(IID_IQueryContinue, 0x7307055c, 0xb24a, 0x486b, 0x9f,0x25, 0x16,0x3e,0x59,0x7a,0x28,0xa9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7307055c-b24a-486b-9f25-163e597a28a9")
IQueryContinue : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE QueryContinue(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IQueryContinue, 0x7307055c, 0xb24a, 0x486b, 0x9f,0x25, 0x16,0x3e,0x59,0x7a,0x28,0xa9)
#endif
#else
typedef struct IQueryContinueVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IQueryContinue methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryContinue)(
        IQueryContinue *This);

    END_INTERFACE
} IQueryContinueVtbl;

interface IQueryContinue {
    CONST_VTBL IQueryContinueVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IQueryContinue_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IQueryContinue_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IQueryContinue_Release(This) (This)->lpVtbl->Release(This)
/*** IQueryContinue methods ***/
#define IQueryContinue_QueryContinue(This) (This)->lpVtbl->QueryContinue(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IQueryContinue_QueryInterface(IQueryContinue* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IQueryContinue_AddRef(IQueryContinue* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IQueryContinue_Release(IQueryContinue* This) {
    return This->lpVtbl->Release(This);
}
/*** IQueryContinue methods ***/
static inline HRESULT IQueryContinue_QueryContinue(IQueryContinue* This) {
    return This->lpVtbl->QueryContinue(This);
}
#endif
#endif

#endif


#endif  /* __IQueryContinue_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IObjectWithCancelEvent interface
 */
#ifndef __IObjectWithCancelEvent_INTERFACE_DEFINED__
#define __IObjectWithCancelEvent_INTERFACE_DEFINED__

DEFINE_GUID(IID_IObjectWithCancelEvent, 0xf279b885, 0x0ae9, 0x4b85, 0xac,0x06, 0xdd,0xec,0xf9,0x40,0x89,0x41);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f279b885-0ae9-4b85-ac06-ddecf9408941")
IObjectWithCancelEvent : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCancelEvent(
        HANDLE *phEvent) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IObjectWithCancelEvent, 0xf279b885, 0x0ae9, 0x4b85, 0xac,0x06, 0xdd,0xec,0xf9,0x40,0x89,0x41)
#endif
#else
typedef struct IObjectWithCancelEventVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IObjectWithCancelEvent methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCancelEvent)(
        IObjectWithCancelEvent *This,
        HANDLE *phEvent);

    END_INTERFACE
} IObjectWithCancelEventVtbl;

interface IObjectWithCancelEvent {
    CONST_VTBL IObjectWithCancelEventVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IObjectWithCancelEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IObjectWithCancelEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IObjectWithCancelEvent_Release(This) (This)->lpVtbl->Release(This)
/*** IObjectWithCancelEvent methods ***/
#define IObjectWithCancelEvent_GetCancelEvent(This,phEvent) (This)->lpVtbl->GetCancelEvent(This,phEvent)
#else
/*** IUnknown methods ***/
static inline HRESULT IObjectWithCancelEvent_QueryInterface(IObjectWithCancelEvent* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IObjectWithCancelEvent_AddRef(IObjectWithCancelEvent* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IObjectWithCancelEvent_Release(IObjectWithCancelEvent* This) {
    return This->lpVtbl->Release(This);
}
/*** IObjectWithCancelEvent methods ***/
static inline HRESULT IObjectWithCancelEvent_GetCancelEvent(IObjectWithCancelEvent* This,HANDLE *phEvent) {
    return This->lpVtbl->GetCancelEvent(This,phEvent);
}
#endif
#endif

#endif


#endif  /* __IObjectWithCancelEvent_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IUserNotification interface
 */
#ifndef __IUserNotification_INTERFACE_DEFINED__
#define __IUserNotification_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUserNotification, 0xba9711ba, 0x5893, 0x4787, 0xa7,0xe1, 0x41,0x27,0x71,0x51,0x55,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ba9711ba-5893-4787-a7e1-41277151550b")
IUserNotification : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetBalloonInfo(
        LPCWSTR pszTitle,
        LPCWSTR pszText,
        DWORD dwInfoFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBalloonRetry(
        DWORD dwShowTime,
        DWORD dwInterval,
        UINT cRetryCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIconInfo(
        HICON hIcon,
        LPCWSTR pszToolTip) = 0;

    virtual HRESULT STDMETHODCALLTYPE Show(
        IQueryContinue *pqc,
        DWORD dwContinuePollInterval) = 0;

    virtual HRESULT STDMETHODCALLTYPE PlaySound(
        LPCWSTR pszSoundName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUserNotification, 0xba9711ba, 0x5893, 0x4787, 0xa7,0xe1, 0x41,0x27,0x71,0x51,0x55,0x0b)
#endif
#else
typedef struct IUserNotificationVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IUserNotification methods ***/
    HRESULT (STDMETHODCALLTYPE *SetBalloonInfo)(
        IUserNotification *This,
        LPCWSTR pszTitle,
        LPCWSTR pszText,
        DWORD dwInfoFlags);

    HRESULT (STDMETHODCALLTYPE *SetBalloonRetry)(
        IUserNotification *This,
        DWORD dwShowTime,
        DWORD dwInterval,
        UINT cRetryCount);

    HRESULT (STDMETHODCALLTYPE *SetIconInfo)(
        IUserNotification *This,
        HICON hIcon,
        LPCWSTR pszToolTip);

    HRESULT (STDMETHODCALLTYPE *Show)(
        IUserNotification *This,
        IQueryContinue *pqc,
        DWORD dwContinuePollInterval);

    HRESULT (STDMETHODCALLTYPE *PlaySound)(
        IUserNotification *This,
        LPCWSTR pszSoundName);

    END_INTERFACE
} IUserNotificationVtbl;

interface IUserNotification {
    CONST_VTBL IUserNotificationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUserNotification_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUserNotification_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUserNotification_Release(This) (This)->lpVtbl->Release(This)
/*** IUserNotification methods ***/
#define IUserNotification_SetBalloonInfo(This,pszTitle,pszText,dwInfoFlags) (This)->lpVtbl->SetBalloonInfo(This,pszTitle,pszText,dwInfoFlags)
#define IUserNotification_SetBalloonRetry(This,dwShowTime,dwInterval,cRetryCount) (This)->lpVtbl->SetBalloonRetry(This,dwShowTime,dwInterval,cRetryCount)
#define IUserNotification_SetIconInfo(This,hIcon,pszToolTip) (This)->lpVtbl->SetIconInfo(This,hIcon,pszToolTip)
#define IUserNotification_Show(This,pqc,dwContinuePollInterval) (This)->lpVtbl->Show(This,pqc,dwContinuePollInterval)
#define IUserNotification_PlaySound(This,pszSoundName) (This)->lpVtbl->PlaySound(This,pszSoundName)
#else
/*** IUnknown methods ***/
static inline HRESULT IUserNotification_QueryInterface(IUserNotification* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUserNotification_AddRef(IUserNotification* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUserNotification_Release(IUserNotification* This) {
    return This->lpVtbl->Release(This);
}
/*** IUserNotification methods ***/
static inline HRESULT IUserNotification_SetBalloonInfo(IUserNotification* This,LPCWSTR pszTitle,LPCWSTR pszText,DWORD dwInfoFlags) {
    return This->lpVtbl->SetBalloonInfo(This,pszTitle,pszText,dwInfoFlags);
}
static inline HRESULT IUserNotification_SetBalloonRetry(IUserNotification* This,DWORD dwShowTime,DWORD dwInterval,UINT cRetryCount) {
    return This->lpVtbl->SetBalloonRetry(This,dwShowTime,dwInterval,cRetryCount);
}
static inline HRESULT IUserNotification_SetIconInfo(IUserNotification* This,HICON hIcon,LPCWSTR pszToolTip) {
    return This->lpVtbl->SetIconInfo(This,hIcon,pszToolTip);
}
static inline HRESULT IUserNotification_Show(IUserNotification* This,IQueryContinue *pqc,DWORD dwContinuePollInterval) {
    return This->lpVtbl->Show(This,pqc,dwContinuePollInterval);
}
static inline HRESULT IUserNotification_PlaySound(IUserNotification* This,LPCWSTR pszSoundName) {
    return This->lpVtbl->PlaySound(This,pszSoundName);
}
#endif
#endif

#endif


#endif  /* __IUserNotification_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IUserNotificationCallback interface
 */
#ifndef __IUserNotificationCallback_INTERFACE_DEFINED__
#define __IUserNotificationCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUserNotificationCallback, 0x19108294, 0x0441, 0x4aff, 0x80,0x13, 0xfa,0x0a,0x73,0x0b,0x0b,0xea);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("19108294-0441-4aff-8013-fa0a730b0bea")
IUserNotificationCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnBalloonUserClick(
        POINT *pt) = 0;

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

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUserNotificationCallback, 0x19108294, 0x0441, 0x4aff, 0x80,0x13, 0xfa,0x0a,0x73,0x0b,0x0b,0xea)
#endif
#else
typedef struct IUserNotificationCallbackVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IUserNotificationCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *OnBalloonUserClick)(
        IUserNotificationCallback *This,
        POINT *pt);

    HRESULT (STDMETHODCALLTYPE *OnLeftClick)(
        IUserNotificationCallback *This,
        POINT *pt);

    HRESULT (STDMETHODCALLTYPE *OnContextMenu)(
        IUserNotificationCallback *This,
        POINT *pt);

    END_INTERFACE
} IUserNotificationCallbackVtbl;

interface IUserNotificationCallback {
    CONST_VTBL IUserNotificationCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUserNotificationCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUserNotificationCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUserNotificationCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IUserNotificationCallback methods ***/
#define IUserNotificationCallback_OnBalloonUserClick(This,pt) (This)->lpVtbl->OnBalloonUserClick(This,pt)
#define IUserNotificationCallback_OnLeftClick(This,pt) (This)->lpVtbl->OnLeftClick(This,pt)
#define IUserNotificationCallback_OnContextMenu(This,pt) (This)->lpVtbl->OnContextMenu(This,pt)
#else
/*** IUnknown methods ***/
static inline HRESULT IUserNotificationCallback_QueryInterface(IUserNotificationCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUserNotificationCallback_AddRef(IUserNotificationCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUserNotificationCallback_Release(IUserNotificationCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IUserNotificationCallback methods ***/
static inline HRESULT IUserNotificationCallback_OnBalloonUserClick(IUserNotificationCallback* This,POINT *pt) {
    return This->lpVtbl->OnBalloonUserClick(This,pt);
}
static inline HRESULT IUserNotificationCallback_OnLeftClick(IUserNotificationCallback* This,POINT *pt) {
    return This->lpVtbl->OnLeftClick(This,pt);
}
static inline HRESULT IUserNotificationCallback_OnContextMenu(IUserNotificationCallback* This,POINT *pt) {
    return This->lpVtbl->OnContextMenu(This,pt);
}
#endif
#endif

#endif


#endif  /* __IUserNotificationCallback_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IUserNotification2 interface
 */
#ifndef __IUserNotification2_INTERFACE_DEFINED__
#define __IUserNotification2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUserNotification2, 0x215913cc, 0x57eb, 0x4fab, 0xab,0x5a, 0xe5,0xfa,0x7b,0xea,0x2a,0x6c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("215913cc-57eb-4fab-ab5a-e5fa7bea2a6c")
IUserNotification2 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetBalloonInfo(
        LPCWSTR pszTitle,
        LPCWSTR pszText,
        DWORD dwInfoFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBalloonRetry(
        DWORD dwShowTime,
        DWORD dwInterval,
        UINT cRetryCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIconInfo(
        HICON hIcon,
        LPCWSTR pszToolTip) = 0;

    virtual HRESULT STDMETHODCALLTYPE Show(
        IQueryContinue *pqc,
        DWORD dwContinuePollInterval,
        IUserNotificationCallback *pSink) = 0;

    virtual HRESULT STDMETHODCALLTYPE PlaySound(
        LPCWSTR pszSoundName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUserNotification2, 0x215913cc, 0x57eb, 0x4fab, 0xab,0x5a, 0xe5,0xfa,0x7b,0xea,0x2a,0x6c)
#endif
#else
typedef struct IUserNotification2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IUserNotification2 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetBalloonInfo)(
        IUserNotification2 *This,
        LPCWSTR pszTitle,
        LPCWSTR pszText,
        DWORD dwInfoFlags);

    HRESULT (STDMETHODCALLTYPE *SetBalloonRetry)(
        IUserNotification2 *This,
        DWORD dwShowTime,
        DWORD dwInterval,
        UINT cRetryCount);

    HRESULT (STDMETHODCALLTYPE *SetIconInfo)(
        IUserNotification2 *This,
        HICON hIcon,
        LPCWSTR pszToolTip);

    HRESULT (STDMETHODCALLTYPE *Show)(
        IUserNotification2 *This,
        IQueryContinue *pqc,
        DWORD dwContinuePollInterval,
        IUserNotificationCallback *pSink);

    HRESULT (STDMETHODCALLTYPE *PlaySound)(
        IUserNotification2 *This,
        LPCWSTR pszSoundName);

    END_INTERFACE
} IUserNotification2Vtbl;

interface IUserNotification2 {
    CONST_VTBL IUserNotification2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUserNotification2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUserNotification2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUserNotification2_Release(This) (This)->lpVtbl->Release(This)
/*** IUserNotification2 methods ***/
#define IUserNotification2_SetBalloonInfo(This,pszTitle,pszText,dwInfoFlags) (This)->lpVtbl->SetBalloonInfo(This,pszTitle,pszText,dwInfoFlags)
#define IUserNotification2_SetBalloonRetry(This,dwShowTime,dwInterval,cRetryCount) (This)->lpVtbl->SetBalloonRetry(This,dwShowTime,dwInterval,cRetryCount)
#define IUserNotification2_SetIconInfo(This,hIcon,pszToolTip) (This)->lpVtbl->SetIconInfo(This,hIcon,pszToolTip)
#define IUserNotification2_Show(This,pqc,dwContinuePollInterval,pSink) (This)->lpVtbl->Show(This,pqc,dwContinuePollInterval,pSink)
#define IUserNotification2_PlaySound(This,pszSoundName) (This)->lpVtbl->PlaySound(This,pszSoundName)
#else
/*** IUnknown methods ***/
static inline HRESULT IUserNotification2_QueryInterface(IUserNotification2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUserNotification2_AddRef(IUserNotification2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUserNotification2_Release(IUserNotification2* This) {
    return This->lpVtbl->Release(This);
}
/*** IUserNotification2 methods ***/
static inline HRESULT IUserNotification2_SetBalloonInfo(IUserNotification2* This,LPCWSTR pszTitle,LPCWSTR pszText,DWORD dwInfoFlags) {
    return This->lpVtbl->SetBalloonInfo(This,pszTitle,pszText,dwInfoFlags);
}
static inline HRESULT IUserNotification2_SetBalloonRetry(IUserNotification2* This,DWORD dwShowTime,DWORD dwInterval,UINT cRetryCount) {
    return This->lpVtbl->SetBalloonRetry(This,dwShowTime,dwInterval,cRetryCount);
}
static inline HRESULT IUserNotification2_SetIconInfo(IUserNotification2* This,HICON hIcon,LPCWSTR pszToolTip) {
    return This->lpVtbl->SetIconInfo(This,hIcon,pszToolTip);
}
static inline HRESULT IUserNotification2_Show(IUserNotification2* This,IQueryContinue *pqc,DWORD dwContinuePollInterval,IUserNotificationCallback *pSink) {
    return This->lpVtbl->Show(This,pqc,dwContinuePollInterval,pSink);
}
static inline HRESULT IUserNotification2_PlaySound(IUserNotification2* This,LPCWSTR pszSoundName) {
    return This->lpVtbl->PlaySound(This,pszSoundName);
}
#endif
#endif

#endif


#endif  /* __IUserNotification2_INTERFACE_DEFINED__ */


/*****************************************************************************
 * 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 *ppwszValidChars,
        LPWSTR *ppwszInvalidChars) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMaxLength(
        LPCWSTR pszName,
        int *piMaxNameLen) = 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 *ppwszValidChars,
        LPWSTR *ppwszInvalidChars);

    HRESULT (STDMETHODCALLTYPE *GetMaxLength)(
        IItemNameLimits *This,
        LPCWSTR pszName,
        int *piMaxNameLen);

    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,ppwszValidChars,ppwszInvalidChars) (This)->lpVtbl->GetValidCharacters(This,ppwszValidChars,ppwszInvalidChars)
#define IItemNameLimits_GetMaxLength(This,pszName,piMaxNameLen) (This)->lpVtbl->GetMaxLength(This,pszName,piMaxNameLen)
#else
/*** IUnknown methods ***/
static inline HRESULT IItemNameLimits_QueryInterface(IItemNameLimits* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IItemNameLimits_AddRef(IItemNameLimits* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IItemNameLimits_Release(IItemNameLimits* This) {
    return This->lpVtbl->Release(This);
}
/*** IItemNameLimits methods ***/
static inline HRESULT IItemNameLimits_GetValidCharacters(IItemNameLimits* This,LPWSTR *ppwszValidChars,LPWSTR *ppwszInvalidChars) {
    return This->lpVtbl->GetValidCharacters(This,ppwszValidChars,ppwszInvalidChars);
}
static inline HRESULT IItemNameLimits_GetMaxLength(IItemNameLimits* This,LPCWSTR pszName,int *piMaxNameLen) {
    return This->lpVtbl->GetMaxLength(This,pszName,piMaxNameLen);
}
#endif
#endif

#endif


#endif  /* __IItemNameLimits_INTERFACE_DEFINED__ */


#if NTDDI_VERSION >= NTDDI_VISTA
#ifndef __ICondition_FWD_DEFINED__
#define __ICondition_FWD_DEFINED__
typedef interface ICondition ICondition;
#ifdef __cplusplus
interface ICondition;
#endif /* __cplusplus */
#endif


/*****************************************************************************
 * ISearchFolderItemFactory interface
 */
#ifndef __ISearchFolderItemFactory_INTERFACE_DEFINED__
#define __ISearchFolderItemFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISearchFolderItemFactory, 0xa0ffbc28, 0x5482, 0x4366, 0xbe,0x27, 0x3e,0x81,0xe7,0x8e,0x06,0xc2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a0ffbc28-5482-4366-be27-3e81e78e06c2")
ISearchFolderItemFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetDisplayName(
        LPCWSTR pszDisplayName) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFolderTypeID(
        FOLDERTYPEID ftid) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFolderLogicalViewMode(
        FOLDERLOGICALVIEWMODE flvm) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIconSize(
        int iIconSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVisibleColumns(
        UINT cVisibleColumns,
        PROPERTYKEY *rgKey) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSortColumns(
        UINT cSortColumns,
        SORTCOLUMN *rgSortColumns) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetGroupColumn(
        REFPROPERTYKEY keyGroup) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetStacks(
        UINT cStackKeys,
        PROPERTYKEY *rgStackKeys) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScope(
        IShellItemArray *psiaScope) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCondition(
        ICondition *pCondition) = 0;

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

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISearchFolderItemFactory, 0xa0ffbc28, 0x5482, 0x4366, 0xbe,0x27, 0x3e,0x81,0xe7,0x8e,0x06,0xc2)
#endif
#else
typedef struct ISearchFolderItemFactoryVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ISearchFolderItemFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *SetDisplayName)(
        ISearchFolderItemFactory *This,
        LPCWSTR pszDisplayName);

    HRESULT (STDMETHODCALLTYPE *SetFolderTypeID)(
        ISearchFolderItemFactory *This,
        FOLDERTYPEID ftid);

    HRESULT (STDMETHODCALLTYPE *SetFolderLogicalViewMode)(
        ISearchFolderItemFactory *This,
        FOLDERLOGICALVIEWMODE flvm);

    HRESULT (STDMETHODCALLTYPE *SetIconSize)(
        ISearchFolderItemFactory *This,
        int iIconSize);

    HRESULT (STDMETHODCALLTYPE *SetVisibleColumns)(
        ISearchFolderItemFactory *This,
        UINT cVisibleColumns,
        PROPERTYKEY *rgKey);

    HRESULT (STDMETHODCALLTYPE *SetSortColumns)(
        ISearchFolderItemFactory *This,
        UINT cSortColumns,
        SORTCOLUMN *rgSortColumns);

    HRESULT (STDMETHODCALLTYPE *SetGroupColumn)(
        ISearchFolderItemFactory *This,
        REFPROPERTYKEY keyGroup);

    HRESULT (STDMETHODCALLTYPE *SetStacks)(
        ISearchFolderItemFactory *This,
        UINT cStackKeys,
        PROPERTYKEY *rgStackKeys);

    HRESULT (STDMETHODCALLTYPE *SetScope)(
        ISearchFolderItemFactory *This,
        IShellItemArray *psiaScope);

    HRESULT (STDMETHODCALLTYPE *SetCondition)(
        ISearchFolderItemFactory *This,
        ICondition *pCondition);

    HRESULT (STDMETHODCALLTYPE *GetShellItem)(
        ISearchFolderItemFactory *This,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetIDList)(
        ISearchFolderItemFactory *This,
        PIDLIST_ABSOLUTE *ppidl);

    END_INTERFACE
} ISearchFolderItemFactoryVtbl;

interface ISearchFolderItemFactory {
    CONST_VTBL ISearchFolderItemFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISearchFolderItemFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISearchFolderItemFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISearchFolderItemFactory_Release(This) (This)->lpVtbl->Release(This)
/*** ISearchFolderItemFactory methods ***/
#define ISearchFolderItemFactory_SetDisplayName(This,pszDisplayName) (This)->lpVtbl->SetDisplayName(This,pszDisplayName)
#define ISearchFolderItemFactory_SetFolderTypeID(This,ftid) (This)->lpVtbl->SetFolderTypeID(This,ftid)
#define ISearchFolderItemFactory_SetFolderLogicalViewMode(This,flvm) (This)->lpVtbl->SetFolderLogicalViewMode(This,flvm)
#define ISearchFolderItemFactory_SetIconSize(This,iIconSize) (This)->lpVtbl->SetIconSize(This,iIconSize)
#define ISearchFolderItemFactory_SetVisibleColumns(This,cVisibleColumns,rgKey) (This)->lpVtbl->SetVisibleColumns(This,cVisibleColumns,rgKey)
#define ISearchFolderItemFactory_SetSortColumns(This,cSortColumns,rgSortColumns) (This)->lpVtbl->SetSortColumns(This,cSortColumns,rgSortColumns)
#define ISearchFolderItemFactory_SetGroupColumn(This,keyGroup) (This)->lpVtbl->SetGroupColumn(This,keyGroup)
#define ISearchFolderItemFactory_SetStacks(This,cStackKeys,rgStackKeys) (This)->lpVtbl->SetStacks(This,cStackKeys,rgStackKeys)
#define ISearchFolderItemFactory_SetScope(This,psiaScope) (This)->lpVtbl->SetScope(This,psiaScope)
#define ISearchFolderItemFactory_SetCondition(This,pCondition) (This)->lpVtbl->SetCondition(This,pCondition)
#define ISearchFolderItemFactory_GetShellItem(This,riid,ppv) (This)->lpVtbl->GetShellItem(This,riid,ppv)
#define ISearchFolderItemFactory_GetIDList(This,ppidl) (This)->lpVtbl->GetIDList(This,ppidl)
#else
/*** IUnknown methods ***/
static inline HRESULT ISearchFolderItemFactory_QueryInterface(ISearchFolderItemFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISearchFolderItemFactory_AddRef(ISearchFolderItemFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISearchFolderItemFactory_Release(ISearchFolderItemFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** ISearchFolderItemFactory methods ***/
static inline HRESULT ISearchFolderItemFactory_SetDisplayName(ISearchFolderItemFactory* This,LPCWSTR pszDisplayName) {
    return This->lpVtbl->SetDisplayName(This,pszDisplayName);
}
static inline HRESULT ISearchFolderItemFactory_SetFolderTypeID(ISearchFolderItemFactory* This,FOLDERTYPEID ftid) {
    return This->lpVtbl->SetFolderTypeID(This,ftid);
}
static inline HRESULT ISearchFolderItemFactory_SetFolderLogicalViewMode(ISearchFolderItemFactory* This,FOLDERLOGICALVIEWMODE flvm) {
    return This->lpVtbl->SetFolderLogicalViewMode(This,flvm);
}
static inline HRESULT ISearchFolderItemFactory_SetIconSize(ISearchFolderItemFactory* This,int iIconSize) {
    return This->lpVtbl->SetIconSize(This,iIconSize);
}
static inline HRESULT ISearchFolderItemFactory_SetVisibleColumns(ISearchFolderItemFactory* This,UINT cVisibleColumns,PROPERTYKEY *rgKey) {
    return This->lpVtbl->SetVisibleColumns(This,cVisibleColumns,rgKey);
}
static inline HRESULT ISearchFolderItemFactory_SetSortColumns(ISearchFolderItemFactory* This,UINT cSortColumns,SORTCOLUMN *rgSortColumns) {
    return This->lpVtbl->SetSortColumns(This,cSortColumns,rgSortColumns);
}
static inline HRESULT ISearchFolderItemFactory_SetGroupColumn(ISearchFolderItemFactory* This,REFPROPERTYKEY keyGroup) {
    return This->lpVtbl->SetGroupColumn(This,keyGroup);
}
static inline HRESULT ISearchFolderItemFactory_SetStacks(ISearchFolderItemFactory* This,UINT cStackKeys,PROPERTYKEY *rgStackKeys) {
    return This->lpVtbl->SetStacks(This,cStackKeys,rgStackKeys);
}
static inline HRESULT ISearchFolderItemFactory_SetScope(ISearchFolderItemFactory* This,IShellItemArray *psiaScope) {
    return This->lpVtbl->SetScope(This,psiaScope);
}
static inline HRESULT ISearchFolderItemFactory_SetCondition(ISearchFolderItemFactory* This,ICondition *pCondition) {
    return This->lpVtbl->SetCondition(This,pCondition);
}
static inline HRESULT ISearchFolderItemFactory_GetShellItem(ISearchFolderItemFactory* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetShellItem(This,riid,ppv);
}
static inline HRESULT ISearchFolderItemFactory_GetIDList(ISearchFolderItemFactory* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetIDList(This,ppidl);
}
#endif
#endif

#endif


#endif  /* __ISearchFolderItemFactory_INTERFACE_DEFINED__ */

#endif

#define IEI_PRIORITY_MAX ITSAT_MAX_PRIORITY
#define IEI_PRIORITY_MIN ITSAT_MIN_PRIORITY
#define IEIT_PRIORITY_NORMAL ITSAT_DEFAULT_PRIORITY

#define IEIFLAG_ASYNC 0x0001
#define IEIFLAG_CACHE 0x0002
#define IEIFLAG_ASPECT 0x0004
#define IEIFLAG_OFFLINE 0x0008
#define IEIFLAG_GLEAM 0x0010
#define IEIFLAG_SCREEN 0x0020
#define IEIFLAG_ORIGSIZE 0x0040
#define IEIFLAG_NOSTAMP 0x0080
#define IEIFLAG_NOBORDER 0x0100
#define IEIFLAG_QUALITY 0x0200
#define IEIFLAG_REFRESH 0x0400

/*****************************************************************************
 * IExtractImage interface
 */
#ifndef __IExtractImage_INTERFACE_DEFINED__
#define __IExtractImage_INTERFACE_DEFINED__

DEFINE_GUID(IID_IExtractImage, 0xbb2e617c, 0x0920, 0x11d1, 0x9a,0x0b, 0x00,0xc0,0x4f,0xc2,0xd6,0xc1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bb2e617c-0920-11d1-9a0b-00c04fc2d6c1")
IExtractImage : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetLocation(
        LPWSTR pszPathBuffer,
        DWORD cch,
        DWORD *pdwPriority,
        const SIZE *prgSize,
        DWORD dwRecClrDepth,
        DWORD *pdwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE Extract(
        HBITMAP *phBmpThumbnail) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExtractImage, 0xbb2e617c, 0x0920, 0x11d1, 0x9a,0x0b, 0x00,0xc0,0x4f,0xc2,0xd6,0xc1)
#endif
#else
typedef struct IExtractImageVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IExtractImage methods ***/
    HRESULT (STDMETHODCALLTYPE *GetLocation)(
        IExtractImage *This,
        LPWSTR pszPathBuffer,
        DWORD cch,
        DWORD *pdwPriority,
        const SIZE *prgSize,
        DWORD dwRecClrDepth,
        DWORD *pdwFlags);

    HRESULT (STDMETHODCALLTYPE *Extract)(
        IExtractImage *This,
        HBITMAP *phBmpThumbnail);

    END_INTERFACE
} IExtractImageVtbl;

interface IExtractImage {
    CONST_VTBL IExtractImageVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IExtractImage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExtractImage_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExtractImage_Release(This) (This)->lpVtbl->Release(This)
/*** IExtractImage methods ***/
#define IExtractImage_GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags) (This)->lpVtbl->GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags)
#define IExtractImage_Extract(This,phBmpThumbnail) (This)->lpVtbl->Extract(This,phBmpThumbnail)
#else
/*** IUnknown methods ***/
static inline HRESULT IExtractImage_QueryInterface(IExtractImage* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IExtractImage_AddRef(IExtractImage* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IExtractImage_Release(IExtractImage* This) {
    return This->lpVtbl->Release(This);
}
/*** IExtractImage methods ***/
static inline HRESULT IExtractImage_GetLocation(IExtractImage* This,LPWSTR pszPathBuffer,DWORD cch,DWORD *pdwPriority,const SIZE *prgSize,DWORD dwRecClrDepth,DWORD *pdwFlags) {
    return This->lpVtbl->GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags);
}
static inline HRESULT IExtractImage_Extract(IExtractImage* This,HBITMAP *phBmpThumbnail) {
    return This->lpVtbl->Extract(This,phBmpThumbnail);
}
#endif
#endif

#endif


#endif  /* __IExtractImage_INTERFACE_DEFINED__ */

typedef IExtractImage *LPEXTRACTIMAGE;

/*****************************************************************************
 * IExtractImage2 interface
 */
#ifndef __IExtractImage2_INTERFACE_DEFINED__
#define __IExtractImage2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IExtractImage2, 0x953bb1ee, 0x93b4, 0x11d1, 0x98,0xa3, 0x00,0xc0,0x4f,0xb6,0x87,0xda);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("953bb1ee-93b4-11d1-98a3-00c04fb687da")
IExtractImage2 : public IExtractImage
{
    virtual HRESULT STDMETHODCALLTYPE GetDateStamp(
        FILETIME *pDateStamp) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExtractImage2, 0x953bb1ee, 0x93b4, 0x11d1, 0x98,0xa3, 0x00,0xc0,0x4f,0xb6,0x87,0xda)
#endif
#else
typedef struct IExtractImage2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IExtractImage methods ***/
    HRESULT (STDMETHODCALLTYPE *GetLocation)(
        IExtractImage2 *This,
        LPWSTR pszPathBuffer,
        DWORD cch,
        DWORD *pdwPriority,
        const SIZE *prgSize,
        DWORD dwRecClrDepth,
        DWORD *pdwFlags);

    HRESULT (STDMETHODCALLTYPE *Extract)(
        IExtractImage2 *This,
        HBITMAP *phBmpThumbnail);

    /*** IExtractImage2 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDateStamp)(
        IExtractImage2 *This,
        FILETIME *pDateStamp);

    END_INTERFACE
} IExtractImage2Vtbl;

interface IExtractImage2 {
    CONST_VTBL IExtractImage2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IExtractImage2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExtractImage2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExtractImage2_Release(This) (This)->lpVtbl->Release(This)
/*** IExtractImage methods ***/
#define IExtractImage2_GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags) (This)->lpVtbl->GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags)
#define IExtractImage2_Extract(This,phBmpThumbnail) (This)->lpVtbl->Extract(This,phBmpThumbnail)
/*** IExtractImage2 methods ***/
#define IExtractImage2_GetDateStamp(This,pDateStamp) (This)->lpVtbl->GetDateStamp(This,pDateStamp)
#else
/*** IUnknown methods ***/
static inline HRESULT IExtractImage2_QueryInterface(IExtractImage2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IExtractImage2_AddRef(IExtractImage2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IExtractImage2_Release(IExtractImage2* This) {
    return This->lpVtbl->Release(This);
}
/*** IExtractImage methods ***/
static inline HRESULT IExtractImage2_GetLocation(IExtractImage2* This,LPWSTR pszPathBuffer,DWORD cch,DWORD *pdwPriority,const SIZE *prgSize,DWORD dwRecClrDepth,DWORD *pdwFlags) {
    return This->lpVtbl->GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags);
}
static inline HRESULT IExtractImage2_Extract(IExtractImage2* This,HBITMAP *phBmpThumbnail) {
    return This->lpVtbl->Extract(This,phBmpThumbnail);
}
/*** IExtractImage2 methods ***/
static inline HRESULT IExtractImage2_GetDateStamp(IExtractImage2* This,FILETIME *pDateStamp) {
    return This->lpVtbl->GetDateStamp(This,pDateStamp);
}
#endif
#endif

#endif


#endif  /* __IExtractImage2_INTERFACE_DEFINED__ */

typedef IExtractImage2 *LPEXTRACTIMAGE2;

/*****************************************************************************
 * IThumbnailHandlerFactory interface
 */
#ifndef __IThumbnailHandlerFactory_INTERFACE_DEFINED__
#define __IThumbnailHandlerFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IThumbnailHandlerFactory, 0xe35b4b2e, 0x00da, 0x4bc1, 0x9f,0x13, 0x38,0xbc,0x11,0xf5,0xd4,0x17);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e35b4b2e-00da-4bc1-9f13-38bc11f5d417")
IThumbnailHandlerFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetThumbnailHandler(
        PCUITEMID_CHILD pidlChild,
        IBindCtx *pbc,
        REFIID riid,
        void **ppv) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IThumbnailHandlerFactory, 0xe35b4b2e, 0x00da, 0x4bc1, 0x9f,0x13, 0x38,0xbc,0x11,0xf5,0xd4,0x17)
#endif
#else
typedef struct IThumbnailHandlerFactoryVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IThumbnailHandlerFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *GetThumbnailHandler)(
        IThumbnailHandlerFactory *This,
        PCUITEMID_CHILD pidlChild,
        IBindCtx *pbc,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} IThumbnailHandlerFactoryVtbl;

interface IThumbnailHandlerFactory {
    CONST_VTBL IThumbnailHandlerFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IThumbnailHandlerFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IThumbnailHandlerFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IThumbnailHandlerFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IThumbnailHandlerFactory methods ***/
#define IThumbnailHandlerFactory_GetThumbnailHandler(This,pidlChild,pbc,riid,ppv) (This)->lpVtbl->GetThumbnailHandler(This,pidlChild,pbc,riid,ppv)
#else
/*** IUnknown methods ***/
static inline HRESULT IThumbnailHandlerFactory_QueryInterface(IThumbnailHandlerFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IThumbnailHandlerFactory_AddRef(IThumbnailHandlerFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IThumbnailHandlerFactory_Release(IThumbnailHandlerFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** IThumbnailHandlerFactory methods ***/
static inline HRESULT IThumbnailHandlerFactory_GetThumbnailHandler(IThumbnailHandlerFactory* This,PCUITEMID_CHILD pidlChild,IBindCtx *pbc,REFIID riid,void **ppv) {
    return This->lpVtbl->GetThumbnailHandler(This,pidlChild,pbc,riid,ppv);
}
#endif
#endif

#endif


#endif  /* __IThumbnailHandlerFactory_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IParentAndItem interface
 */
#ifndef __IParentAndItem_INTERFACE_DEFINED__
#define __IParentAndItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_IParentAndItem, 0xb3a4b685, 0xb685, 0x4805, 0x99,0xd9, 0x5d,0xea,0xd2,0x87,0x32,0x36);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b3a4b685-b685-4805-99d9-5dead2873236")
IParentAndItem : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetParentAndItem(
        PCIDLIST_ABSOLUTE pidlParent,
        IShellFolder *psf,
        PCUITEMID_CHILD pidlChild) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetParentAndItem(
        PIDLIST_ABSOLUTE *ppidlParent,
        IShellFolder **ppsf,
        PITEMID_CHILD *ppidlChild) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IParentAndItem, 0xb3a4b685, 0xb685, 0x4805, 0x99,0xd9, 0x5d,0xea,0xd2,0x87,0x32,0x36)
#endif
#else
typedef struct IParentAndItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IParentAndItem methods ***/
    HRESULT (STDMETHODCALLTYPE *SetParentAndItem)(
        IParentAndItem *This,
        PCIDLIST_ABSOLUTE pidlParent,
        IShellFolder *psf,
        PCUITEMID_CHILD pidlChild);

    HRESULT (STDMETHODCALLTYPE *GetParentAndItem)(
        IParentAndItem *This,
        PIDLIST_ABSOLUTE *ppidlParent,
        IShellFolder **ppsf,
        PITEMID_CHILD *ppidlChild);

    END_INTERFACE
} IParentAndItemVtbl;

interface IParentAndItem {
    CONST_VTBL IParentAndItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IParentAndItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IParentAndItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IParentAndItem_Release(This) (This)->lpVtbl->Release(This)
/*** IParentAndItem methods ***/
#define IParentAndItem_SetParentAndItem(This,pidlParent,psf,pidlChild) (This)->lpVtbl->SetParentAndItem(This,pidlParent,psf,pidlChild)
#define IParentAndItem_GetParentAndItem(This,ppidlParent,ppsf,ppidlChild) (This)->lpVtbl->GetParentAndItem(This,ppidlParent,ppsf,ppidlChild)
#else
/*** IUnknown methods ***/
static inline HRESULT IParentAndItem_QueryInterface(IParentAndItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IParentAndItem_AddRef(IParentAndItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IParentAndItem_Release(IParentAndItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IParentAndItem methods ***/
static inline HRESULT IParentAndItem_SetParentAndItem(IParentAndItem* This,PCIDLIST_ABSOLUTE pidlParent,IShellFolder *psf,PCUITEMID_CHILD pidlChild) {
    return This->lpVtbl->SetParentAndItem(This,pidlParent,psf,pidlChild);
}
static inline HRESULT IParentAndItem_GetParentAndItem(IParentAndItem* This,PIDLIST_ABSOLUTE *ppidlParent,IShellFolder **ppsf,PITEMID_CHILD *ppidlChild) {
    return This->lpVtbl->GetParentAndItem(This,ppidlParent,ppsf,ppidlChild);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IParentAndItem_RemoteGetParentAndItem_Proxy(
    IParentAndItem* This,
    PIDLIST_ABSOLUTE *ppidlParent,
    IShellFolder **ppsf,
    PITEMID_CHILD *ppidlChild);
void __RPC_STUB IParentAndItem_RemoteGetParentAndItem_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IParentAndItem_GetParentAndItem_Proxy(
    IParentAndItem* This,
    PIDLIST_ABSOLUTE *ppidlParent,
    IShellFolder **ppsf,
    PITEMID_CHILD *ppidlChild);
HRESULT __RPC_STUB IParentAndItem_GetParentAndItem_Stub(
    IParentAndItem* This,
    PIDLIST_ABSOLUTE *ppidlParent,
    IShellFolder **ppsf,
    PITEMID_CHILD *ppidlChild);

#endif  /* __IParentAndItem_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(
        WINBOOL fShow) = 0;

    virtual HRESULT STDMETHODCALLTYPE CloseDW(
        DWORD dwReserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResizeBorderDW(
        LPCRECT prcBorder,
        IUnknown *punkToolbarSite,
        WINBOOL 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,
        WINBOOL fEnterMode);

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

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

    HRESULT (STDMETHODCALLTYPE *ResizeBorderDW)(
        IDockingWindow *This,
        LPCRECT prcBorder,
        IUnknown *punkToolbarSite,
        WINBOOL 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 inline HRESULT IDockingWindow_QueryInterface(IDockingWindow* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDockingWindow_AddRef(IDockingWindow* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDockingWindow_Release(IDockingWindow* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static inline HRESULT IDockingWindow_GetWindow(IDockingWindow* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static inline HRESULT IDockingWindow_ContextSensitiveHelp(IDockingWindow* This,WINBOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IDockingWindow methods ***/
static inline HRESULT IDockingWindow_ShowDW(IDockingWindow* This,WINBOOL fShow) {
    return This->lpVtbl->ShowDW(This,fShow);
}
static inline HRESULT IDockingWindow_CloseDW(IDockingWindow* This,DWORD dwReserved) {
    return This->lpVtbl->CloseDW(This,dwReserved);
}
static inline HRESULT IDockingWindow_ResizeBorderDW(IDockingWindow* This,LPCRECT prcBorder,IUnknown *punkToolbarSite,WINBOOL fReserved) {
    return This->lpVtbl->ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved);
}
#endif
#endif

#endif


#endif  /* __IDockingWindow_INTERFACE_DEFINED__ */


#define DBIM_MINSIZE 0x0001
#define DBIM_MAXSIZE 0x0002
#define DBIM_INTEGRAL 0x0004
#define DBIM_ACTUAL 0x0008
#define DBIM_TITLE 0x0010
#define DBIM_MODEFLAGS 0x0020
#define DBIM_BKCOLOR 0x0040

#include <pshpack8.h>
typedef struct DESKBANDINFO {
    DWORD dwMask;
    POINTL ptMinSize;
    POINTL ptMaxSize;
    POINTL ptIntegral;
    POINTL ptActual;
    WCHAR wszTitle[256];
    DWORD dwModeFlags;
    COLORREF crBkgnd;
} DESKBANDINFO;
#include <poppack.h>

#define DBIMF_NORMAL 0x0000
#define DBIMF_FIXED 0x0001
#define DBIMF_FIXEDBMP 0x0004
#define DBIMF_VARIABLEHEIGHT 0x0008
#define DBIMF_UNDELETEABLE 0x0010
#define DBIMF_DEBOSSED 0x0020
#define DBIMF_BKCOLOR 0x0040
#define DBIMF_USECHEVRON 0x0080
#define DBIMF_BREAK 0x0100
#define DBIMF_ADDTOFRONT 0x0200
#define DBIMF_TOPALIGN 0x0400
#if NTDDI_VERSION >= NTDDI_VISTA
#define DBIMF_NOGRIPPER 0x0800
#define DBIMF_ALWAYSGRIPPER 0x1000
#define DBIMF_NOMARGINS 0x2000
#endif

#define DBIF_VIEWMODE_NORMAL 0x0000
#define DBIF_VIEWMODE_VERTICAL 0x0001
#define DBIF_VIEWMODE_FLOATING 0x0002
#define DBIF_VIEWMODE_TRANSPARENT 0x0004

enum tagDESKBANDCID {
    DBID_BANDINFOCHANGED = 0,
    DBID_SHOWONLY = 1,
    DBID_MAXIMIZEBAND = 2,
    DBID_PUSHCHEVRON = 3,
    DBID_DELAYINIT = 4,
    DBID_FINISHINIT = 5,
    DBID_SETWINDOWTHEME = 6,
    DBID_PERMITAUTOHIDE = 7
};

#define DBPC_SELECTFIRST    (DWORD)-1
#define DBPC_SELECTLAST     (DWORD)-2

#define CGID_DeskBand IID_IDeskBand

/*****************************************************************************
 * IDeskBand interface
 */
#ifndef __IDeskBand_INTERFACE_DEFINED__
#define __IDeskBand_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeskBand, 0xeb0fe172, 0x1a3a, 0x11d0, 0x89,0xb3, 0x00,0xa0,0xc9,0x0a,0x90,0xac);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("eb0fe172-1a3a-11d0-89b3-00a0c90a90ac")
IDeskBand : public IDockingWindow
{
    virtual HRESULT STDMETHODCALLTYPE GetBandInfo(
        DWORD dwBandID,
        DWORD dwViewMode,
        DESKBANDINFO *pdbi) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeskBand, 0xeb0fe172, 0x1a3a, 0x11d0, 0x89,0xb3, 0x00,0xa0,0xc9,0x0a,0x90,0xac)
#endif
#else
typedef struct IDeskBandVtbl {
    BEGIN_INTERFACE

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
        IDeskBand *This,
        WINBOOL fEnterMode);

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

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

    HRESULT (STDMETHODCALLTYPE *ResizeBorderDW)(
        IDeskBand *This,
        LPCRECT prcBorder,
        IUnknown *punkToolbarSite,
        WINBOOL fReserved);

    /*** IDeskBand methods ***/
    HRESULT (STDMETHODCALLTYPE *GetBandInfo)(
        IDeskBand *This,
        DWORD dwBandID,
        DWORD dwViewMode,
        DESKBANDINFO *pdbi);

    END_INTERFACE
} IDeskBandVtbl;

interface IDeskBand {
    CONST_VTBL IDeskBandVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeskBand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeskBand_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeskBand_Release(This) (This)->lpVtbl->Release(This)
/*** IOleWindow methods ***/
#define IDeskBand_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
#define IDeskBand_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
/*** IDockingWindow methods ***/
#define IDeskBand_ShowDW(This,fShow) (This)->lpVtbl->ShowDW(This,fShow)
#define IDeskBand_CloseDW(This,dwReserved) (This)->lpVtbl->CloseDW(This,dwReserved)
#define IDeskBand_ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved) (This)->lpVtbl->ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved)
/*** IDeskBand methods ***/
#define IDeskBand_GetBandInfo(This,dwBandID,dwViewMode,pdbi) (This)->lpVtbl->GetBandInfo(This,dwBandID,dwViewMode,pdbi)
#else
/*** IUnknown methods ***/
static inline HRESULT IDeskBand_QueryInterface(IDeskBand* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDeskBand_AddRef(IDeskBand* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDeskBand_Release(IDeskBand* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static inline HRESULT IDeskBand_GetWindow(IDeskBand* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static inline HRESULT IDeskBand_ContextSensitiveHelp(IDeskBand* This,WINBOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IDockingWindow methods ***/
static inline HRESULT IDeskBand_ShowDW(IDeskBand* This,WINBOOL fShow) {
    return This->lpVtbl->ShowDW(This,fShow);
}
static inline HRESULT IDeskBand_CloseDW(IDeskBand* This,DWORD dwReserved) {
    return This->lpVtbl->CloseDW(This,dwReserved);
}
static inline HRESULT IDeskBand_ResizeBorderDW(IDeskBand* This,LPCRECT prcBorder,IUnknown *punkToolbarSite,WINBOOL fReserved) {
    return This->lpVtbl->ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved);
}
/*** IDeskBand methods ***/
static inline HRESULT IDeskBand_GetBandInfo(IDeskBand* This,DWORD dwBandID,DWORD dwViewMode,DESKBANDINFO *pdbi) {
    return This->lpVtbl->GetBandInfo(This,dwBandID,dwViewMode,pdbi);
}
#endif
#endif

#endif


#endif  /* __IDeskBand_INTERFACE_DEFINED__ */


#if NTDDI_VERSION >= NTDDI_VISTA
/*****************************************************************************
 * IDeskBandInfo interface
 */
#ifndef __IDeskBandInfo_INTERFACE_DEFINED__
#define __IDeskBandInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeskBandInfo, 0x77e425fc, 0xcbf9, 0x4307, 0xba,0x6a, 0xbb,0x57,0x27,0x74,0x56,0x61);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("77e425fc-cbf9-4307-ba6a-bb5727745661")
IDeskBandInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDefaultBandWidth(
        DWORD dwBandID,
        DWORD dwViewMode,
        int *pnWidth) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeskBandInfo, 0x77e425fc, 0xcbf9, 0x4307, 0xba,0x6a, 0xbb,0x57,0x27,0x74,0x56,0x61)
#endif
#else
typedef struct IDeskBandInfoVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDeskBandInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDefaultBandWidth)(
        IDeskBandInfo *This,
        DWORD dwBandID,
        DWORD dwViewMode,
        int *pnWidth);

    END_INTERFACE
} IDeskBandInfoVtbl;

interface IDeskBandInfo {
    CONST_VTBL IDeskBandInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeskBandInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeskBandInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeskBandInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IDeskBandInfo methods ***/
#define IDeskBandInfo_GetDefaultBandWidth(This,dwBandID,dwViewMode,pnWidth) (This)->lpVtbl->GetDefaultBandWidth(This,dwBandID,dwViewMode,pnWidth)
#else
/*** IUnknown methods ***/
static inline HRESULT IDeskBandInfo_QueryInterface(IDeskBandInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDeskBandInfo_AddRef(IDeskBandInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDeskBandInfo_Release(IDeskBandInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeskBandInfo methods ***/
static inline HRESULT IDeskBandInfo_GetDefaultBandWidth(IDeskBandInfo* This,DWORD dwBandID,DWORD dwViewMode,int *pnWidth) {
    return This->lpVtbl->GetDefaultBandWidth(This,dwBandID,dwViewMode,pnWidth);
}
#endif
#endif

#endif


#endif  /* __IDeskBandInfo_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IDeskBand2 interface
 */
#ifndef __IDeskBand2_INTERFACE_DEFINED__
#define __IDeskBand2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeskBand2, 0x79d16de4, 0xabee, 0x4021, 0x8d,0x9d, 0x91,0x69,0xb2,0x61,0xd6,0x57);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("79d16de4-abee-4021-8d9d-9169b261d657")
IDeskBand2 : public IDeskBand
{
    virtual HRESULT STDMETHODCALLTYPE CanRenderComposited(
        WINBOOL *pfCanRenderComposited) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCompositionState(
        WINBOOL fCompositionEnabled) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCompositionState(
        WINBOOL *pfCompositionEnabled) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeskBand2, 0x79d16de4, 0xabee, 0x4021, 0x8d,0x9d, 0x91,0x69,0xb2,0x61,0xd6,0x57)
#endif
#else
typedef struct IDeskBand2Vtbl {
    BEGIN_INTERFACE

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
        IDeskBand2 *This,
        WINBOOL fEnterMode);

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

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

    HRESULT (STDMETHODCALLTYPE *ResizeBorderDW)(
        IDeskBand2 *This,
        LPCRECT prcBorder,
        IUnknown *punkToolbarSite,
        WINBOOL fReserved);

    /*** IDeskBand methods ***/
    HRESULT (STDMETHODCALLTYPE *GetBandInfo)(
        IDeskBand2 *This,
        DWORD dwBandID,
        DWORD dwViewMode,
        DESKBANDINFO *pdbi);

    /*** IDeskBand2 methods ***/
    HRESULT (STDMETHODCALLTYPE *CanRenderComposited)(
        IDeskBand2 *This,
        WINBOOL *pfCanRenderComposited);

    HRESULT (STDMETHODCALLTYPE *SetCompositionState)(
        IDeskBand2 *This,
        WINBOOL fCompositionEnabled);

    HRESULT (STDMETHODCALLTYPE *GetCompositionState)(
        IDeskBand2 *This,
        WINBOOL *pfCompositionEnabled);

    END_INTERFACE
} IDeskBand2Vtbl;

interface IDeskBand2 {
    CONST_VTBL IDeskBand2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeskBand2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeskBand2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeskBand2_Release(This) (This)->lpVtbl->Release(This)
/*** IOleWindow methods ***/
#define IDeskBand2_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
#define IDeskBand2_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
/*** IDockingWindow methods ***/
#define IDeskBand2_ShowDW(This,fShow) (This)->lpVtbl->ShowDW(This,fShow)
#define IDeskBand2_CloseDW(This,dwReserved) (This)->lpVtbl->CloseDW(This,dwReserved)
#define IDeskBand2_ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved) (This)->lpVtbl->ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved)
/*** IDeskBand methods ***/
#define IDeskBand2_GetBandInfo(This,dwBandID,dwViewMode,pdbi) (This)->lpVtbl->GetBandInfo(This,dwBandID,dwViewMode,pdbi)
/*** IDeskBand2 methods ***/
#define IDeskBand2_CanRenderComposited(This,pfCanRenderComposited) (This)->lpVtbl->CanRenderComposited(This,pfCanRenderComposited)
#define IDeskBand2_SetCompositionState(This,fCompositionEnabled) (This)->lpVtbl->SetCompositionState(This,fCompositionEnabled)
#define IDeskBand2_GetCompositionState(This,pfCompositionEnabled) (This)->lpVtbl->GetCompositionState(This,pfCompositionEnabled)
#else
/*** IUnknown methods ***/
static inline HRESULT IDeskBand2_QueryInterface(IDeskBand2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDeskBand2_AddRef(IDeskBand2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDeskBand2_Release(IDeskBand2* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static inline HRESULT IDeskBand2_GetWindow(IDeskBand2* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static inline HRESULT IDeskBand2_ContextSensitiveHelp(IDeskBand2* This,WINBOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IDockingWindow methods ***/
static inline HRESULT IDeskBand2_ShowDW(IDeskBand2* This,WINBOOL fShow) {
    return This->lpVtbl->ShowDW(This,fShow);
}
static inline HRESULT IDeskBand2_CloseDW(IDeskBand2* This,DWORD dwReserved) {
    return This->lpVtbl->CloseDW(This,dwReserved);
}
static inline HRESULT IDeskBand2_ResizeBorderDW(IDeskBand2* This,LPCRECT prcBorder,IUnknown *punkToolbarSite,WINBOOL fReserved) {
    return This->lpVtbl->ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved);
}
/*** IDeskBand methods ***/
static inline HRESULT IDeskBand2_GetBandInfo(IDeskBand2* This,DWORD dwBandID,DWORD dwViewMode,DESKBANDINFO *pdbi) {
    return This->lpVtbl->GetBandInfo(This,dwBandID,dwViewMode,pdbi);
}
/*** IDeskBand2 methods ***/
static inline HRESULT IDeskBand2_CanRenderComposited(IDeskBand2* This,WINBOOL *pfCanRenderComposited) {
    return This->lpVtbl->CanRenderComposited(This,pfCanRenderComposited);
}
static inline HRESULT IDeskBand2_SetCompositionState(IDeskBand2* This,WINBOOL fCompositionEnabled) {
    return This->lpVtbl->SetCompositionState(This,fCompositionEnabled);
}
static inline HRESULT IDeskBand2_GetCompositionState(IDeskBand2* This,WINBOOL *pfCompositionEnabled) {
    return This->lpVtbl->GetCompositionState(This,pfCompositionEnabled);
}
#endif
#endif

#endif


#endif  /* __IDeskBand2_INTERFACE_DEFINED__ */

#endif

/*****************************************************************************
 * 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 inline HRESULT ITaskbarList_QueryInterface(ITaskbarList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITaskbarList_AddRef(ITaskbarList* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITaskbarList_Release(ITaskbarList* This) {
    return This->lpVtbl->Release(This);
}
/*** ITaskbarList methods ***/
static inline HRESULT ITaskbarList_HrInit(ITaskbarList* This) {
    return This->lpVtbl->HrInit(This);
}
static inline HRESULT ITaskbarList_AddTab(ITaskbarList* This,HWND hwnd) {
    return This->lpVtbl->AddTab(This,hwnd);
}
static inline HRESULT ITaskbarList_DeleteTab(ITaskbarList* This,HWND hwnd) {
    return This->lpVtbl->DeleteTab(This,hwnd);
}
static inline HRESULT ITaskbarList_ActivateTab(ITaskbarList* This,HWND hwnd) {
    return This->lpVtbl->ActivateTab(This,hwnd);
}
static inline 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,
        WINBOOL fFullscreen) = 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,
        WINBOOL fFullscreen);

    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,fFullscreen) (This)->lpVtbl->MarkFullscreenWindow(This,hwnd,fFullscreen)
#else
/*** IUnknown methods ***/
static inline HRESULT ITaskbarList2_QueryInterface(ITaskbarList2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITaskbarList2_AddRef(ITaskbarList2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITaskbarList2_Release(ITaskbarList2* This) {
    return This->lpVtbl->Release(This);
}
/*** ITaskbarList methods ***/
static inline HRESULT ITaskbarList2_HrInit(ITaskbarList2* This) {
    return This->lpVtbl->HrInit(This);
}
static inline HRESULT ITaskbarList2_AddTab(ITaskbarList2* This,HWND hwnd) {
    return This->lpVtbl->AddTab(This,hwnd);
}
static inline HRESULT ITaskbarList2_DeleteTab(ITaskbarList2* This,HWND hwnd) {
    return This->lpVtbl->DeleteTab(This,hwnd);
}
static inline HRESULT ITaskbarList2_ActivateTab(ITaskbarList2* This,HWND hwnd) {
    return This->lpVtbl->ActivateTab(This,hwnd);
}
static inline HRESULT ITaskbarList2_SetActiveAlt(ITaskbarList2* This,HWND hwnd) {
    return This->lpVtbl->SetActiveAlt(This,hwnd);
}
/*** ITaskbarList2 methods ***/
static inline HRESULT ITaskbarList2_MarkFullscreenWindow(ITaskbarList2* This,HWND hwnd,WINBOOL fFullscreen) {
    return This->lpVtbl->MarkFullscreenWindow(This,hwnd,fFullscreen);
}
#endif
#endif

#endif


#endif  /* __ITaskbarList2_INTERFACE_DEFINED__ */


#if 0
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>

#define THBN_CLICKED 0x1800

/*****************************************************************************
 * 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,
        WINBOOL fFullscreen);

    /*** 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,fFullscreen) (This)->lpVtbl->MarkFullscreenWindow(This,hwnd,fFullscreen)
/*** 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 inline HRESULT ITaskbarList3_QueryInterface(ITaskbarList3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITaskbarList3_AddRef(ITaskbarList3* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITaskbarList3_Release(ITaskbarList3* This) {
    return This->lpVtbl->Release(This);
}
/*** ITaskbarList methods ***/
static inline HRESULT ITaskbarList3_HrInit(ITaskbarList3* This) {
    return This->lpVtbl->HrInit(This);
}
static inline HRESULT ITaskbarList3_AddTab(ITaskbarList3* This,HWND hwnd) {
    return This->lpVtbl->AddTab(This,hwnd);
}
static inline HRESULT ITaskbarList3_DeleteTab(ITaskbarList3* This,HWND hwnd) {
    return This->lpVtbl->DeleteTab(This,hwnd);
}
static inline HRESULT ITaskbarList3_ActivateTab(ITaskbarList3* This,HWND hwnd) {
    return This->lpVtbl->ActivateTab(This,hwnd);
}
static inline HRESULT ITaskbarList3_SetActiveAlt(ITaskbarList3* This,HWND hwnd) {
    return This->lpVtbl->SetActiveAlt(This,hwnd);
}
/*** ITaskbarList2 methods ***/
static inline HRESULT ITaskbarList3_MarkFullscreenWindow(ITaskbarList3* This,HWND hwnd,WINBOOL fFullscreen) {
    return This->lpVtbl->MarkFullscreenWindow(This,hwnd,fFullscreen);
}
/*** ITaskbarList3 methods ***/
static inline HRESULT ITaskbarList3_SetProgressValue(ITaskbarList3* This,HWND hwnd,ULONGLONG ullCompleted,ULONGLONG ullTotal) {
    return This->lpVtbl->SetProgressValue(This,hwnd,ullCompleted,ullTotal);
}
static inline HRESULT ITaskbarList3_SetProgressState(ITaskbarList3* This,HWND hwnd,TBPFLAG tbpFlags) {
    return This->lpVtbl->SetProgressState(This,hwnd,tbpFlags);
}
static inline HRESULT ITaskbarList3_RegisterTab(ITaskbarList3* This,HWND hwndTab,HWND hwndMDI) {
    return This->lpVtbl->RegisterTab(This,hwndTab,hwndMDI);
}
static inline HRESULT ITaskbarList3_UnregisterTab(ITaskbarList3* This,HWND hwndTab) {
    return This->lpVtbl->UnregisterTab(This,hwndTab);
}
static inline HRESULT ITaskbarList3_SetTabOrder(ITaskbarList3* This,HWND hwndTab,HWND hwndInsertBefore) {
    return This->lpVtbl->SetTabOrder(This,hwndTab,hwndInsertBefore);
}
static inline HRESULT ITaskbarList3_SetTabActive(ITaskbarList3* This,HWND hwndTab,HWND hwndMDI,DWORD dwReserved) {
    return This->lpVtbl->SetTabActive(This,hwndTab,hwndMDI,dwReserved);
}
static inline HRESULT ITaskbarList3_ThumbBarAddButtons(ITaskbarList3* This,HWND hwnd,UINT cButtons,LPTHUMBBUTTON pButton) {
    return This->lpVtbl->ThumbBarAddButtons(This,hwnd,cButtons,pButton);
}
static inline HRESULT ITaskbarList3_ThumbBarUpdateButtons(ITaskbarList3* This,HWND hwnd,UINT cButtons,LPTHUMBBUTTON pButton) {
    return This->lpVtbl->ThumbBarUpdateButtons(This,hwnd,cButtons,pButton);
}
static inline HRESULT ITaskbarList3_ThumbBarSetImageList(ITaskbarList3* This,HWND hwnd,HIMAGELIST himl) {
    return This->lpVtbl->ThumbBarSetImageList(This,hwnd,himl);
}
static inline HRESULT ITaskbarList3_SetOverlayIcon(ITaskbarList3* This,HWND hwnd,HICON hIcon,LPCWSTR pszDescription) {
    return This->lpVtbl->SetOverlayIcon(This,hwnd,hIcon,pszDescription);
}
static inline HRESULT ITaskbarList3_SetThumbnailTooltip(ITaskbarList3* This,HWND hwnd,LPCWSTR pszTip) {
    return This->lpVtbl->SetThumbnailTooltip(This,hwnd,pszTip);
}
static inline 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,
        WINBOOL fFullscreen);

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

#endif


#endif  /* __ITaskbarList4_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IStartMenuPinnedList interface
 */
#ifndef __IStartMenuPinnedList_INTERFACE_DEFINED__
#define __IStartMenuPinnedList_INTERFACE_DEFINED__

DEFINE_GUID(IID_IStartMenuPinnedList, 0x4cd19ada, 0x25a5, 0x4a32, 0xb3,0xb7, 0x34,0x7b,0xee,0x5b,0xe3,0x6b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4cd19ada-25a5-4a32-b3b7-347bee5be36b")
IStartMenuPinnedList : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE RemoveFromList(
        IShellItem *pitem) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IStartMenuPinnedList, 0x4cd19ada, 0x25a5, 0x4a32, 0xb3,0xb7, 0x34,0x7b,0xee,0x5b,0xe3,0x6b)
#endif
#else
typedef struct IStartMenuPinnedListVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IStartMenuPinnedList methods ***/
    HRESULT (STDMETHODCALLTYPE *RemoveFromList)(
        IStartMenuPinnedList *This,
        IShellItem *pitem);

    END_INTERFACE
} IStartMenuPinnedListVtbl;

interface IStartMenuPinnedList {
    CONST_VTBL IStartMenuPinnedListVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IStartMenuPinnedList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IStartMenuPinnedList_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IStartMenuPinnedList_Release(This) (This)->lpVtbl->Release(This)
/*** IStartMenuPinnedList methods ***/
#define IStartMenuPinnedList_RemoveFromList(This,pitem) (This)->lpVtbl->RemoveFromList(This,pitem)
#else
/*** IUnknown methods ***/
static inline HRESULT IStartMenuPinnedList_QueryInterface(IStartMenuPinnedList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IStartMenuPinnedList_AddRef(IStartMenuPinnedList* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IStartMenuPinnedList_Release(IStartMenuPinnedList* This) {
    return This->lpVtbl->Release(This);
}
/*** IStartMenuPinnedList methods ***/
static inline HRESULT IStartMenuPinnedList_RemoveFromList(IStartMenuPinnedList* This,IShellItem *pitem) {
    return This->lpVtbl->RemoveFromList(This,pitem);
}
#endif
#endif

#endif


#endif  /* __IStartMenuPinnedList_INTERFACE_DEFINED__ */


/*****************************************************************************
 * ICDBurn interface
 */
#ifndef __ICDBurn_INTERFACE_DEFINED__
#define __ICDBurn_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICDBurn, 0x3d73a659, 0xe5d0, 0x4d42, 0xaf,0xc0, 0x51,0x21,0xba,0x42,0x5c,0x8d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3d73a659-e5d0-4d42-afc0-5121ba425c8d")
ICDBurn : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetRecorderDriveLetter(
        LPWSTR pszDrive,
        UINT cch) = 0;

    virtual HRESULT STDMETHODCALLTYPE Burn(
        HWND hwnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE HasRecordableDrive(
        WINBOOL *pfHasRecorder) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICDBurn, 0x3d73a659, 0xe5d0, 0x4d42, 0xaf,0xc0, 0x51,0x21,0xba,0x42,0x5c,0x8d)
#endif
#else
typedef struct ICDBurnVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ICDBurn methods ***/
    HRESULT (STDMETHODCALLTYPE *GetRecorderDriveLetter)(
        ICDBurn *This,
        LPWSTR pszDrive,
        UINT cch);

    HRESULT (STDMETHODCALLTYPE *Burn)(
        ICDBurn *This,
        HWND hwnd);

    HRESULT (STDMETHODCALLTYPE *HasRecordableDrive)(
        ICDBurn *This,
        WINBOOL *pfHasRecorder);

    END_INTERFACE
} ICDBurnVtbl;

interface ICDBurn {
    CONST_VTBL ICDBurnVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICDBurn_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICDBurn_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICDBurn_Release(This) (This)->lpVtbl->Release(This)
/*** ICDBurn methods ***/
#define ICDBurn_GetRecorderDriveLetter(This,pszDrive,cch) (This)->lpVtbl->GetRecorderDriveLetter(This,pszDrive,cch)
#define ICDBurn_Burn(This,hwnd) (This)->lpVtbl->Burn(This,hwnd)
#define ICDBurn_HasRecordableDrive(This,pfHasRecorder) (This)->lpVtbl->HasRecordableDrive(This,pfHasRecorder)
#else
/*** IUnknown methods ***/
static inline HRESULT ICDBurn_QueryInterface(ICDBurn* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ICDBurn_AddRef(ICDBurn* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ICDBurn_Release(ICDBurn* This) {
    return This->lpVtbl->Release(This);
}
/*** ICDBurn methods ***/
static inline HRESULT ICDBurn_GetRecorderDriveLetter(ICDBurn* This,LPWSTR pszDrive,UINT cch) {
    return This->lpVtbl->GetRecorderDriveLetter(This,pszDrive,cch);
}
static inline HRESULT ICDBurn_Burn(ICDBurn* This,HWND hwnd) {
    return This->lpVtbl->Burn(This,hwnd);
}
static inline HRESULT ICDBurn_HasRecordableDrive(ICDBurn* This,WINBOOL *pfHasRecorder) {
    return This->lpVtbl->HasRecordableDrive(This,pfHasRecorder);
}
#endif
#endif

#endif


#endif  /* __ICDBurn_INTERFACE_DEFINED__ */


#define IDD_WIZEXTN_FIRST 0x5000
#define IDD_WIZEXTN_LAST 0x5100

/*****************************************************************************
 * IWizardSite interface
 */
#ifndef __IWizardSite_INTERFACE_DEFINED__
#define __IWizardSite_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWizardSite, 0x88960f5b, 0x422f, 0x4e7b, 0x80,0x13, 0x73,0x41,0x53,0x81,0xc3,0xc3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("88960f5b-422f-4e7b-8013-73415381c3c3")
IWizardSite : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPreviousPage(
        HPROPSHEETPAGE *phpage) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNextPage(
        HPROPSHEETPAGE *phpage) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCancelledPage(
        HPROPSHEETPAGE *phpage) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWizardSite, 0x88960f5b, 0x422f, 0x4e7b, 0x80,0x13, 0x73,0x41,0x53,0x81,0xc3,0xc3)
#endif
#else
typedef struct IWizardSiteVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IWizardSite methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPreviousPage)(
        IWizardSite *This,
        HPROPSHEETPAGE *phpage);

    HRESULT (STDMETHODCALLTYPE *GetNextPage)(
        IWizardSite *This,
        HPROPSHEETPAGE *phpage);

    HRESULT (STDMETHODCALLTYPE *GetCancelledPage)(
        IWizardSite *This,
        HPROPSHEETPAGE *phpage);

    END_INTERFACE
} IWizardSiteVtbl;

interface IWizardSite {
    CONST_VTBL IWizardSiteVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IWizardSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWizardSite_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWizardSite_Release(This) (This)->lpVtbl->Release(This)
/*** IWizardSite methods ***/
#define IWizardSite_GetPreviousPage(This,phpage) (This)->lpVtbl->GetPreviousPage(This,phpage)
#define IWizardSite_GetNextPage(This,phpage) (This)->lpVtbl->GetNextPage(This,phpage)
#define IWizardSite_GetCancelledPage(This,phpage) (This)->lpVtbl->GetCancelledPage(This,phpage)
#else
/*** IUnknown methods ***/
static inline HRESULT IWizardSite_QueryInterface(IWizardSite* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IWizardSite_AddRef(IWizardSite* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IWizardSite_Release(IWizardSite* This) {
    return This->lpVtbl->Release(This);
}
/*** IWizardSite methods ***/
static inline HRESULT IWizardSite_GetPreviousPage(IWizardSite* This,HPROPSHEETPAGE *phpage) {
    return This->lpVtbl->GetPreviousPage(This,phpage);
}
static inline HRESULT IWizardSite_GetNextPage(IWizardSite* This,HPROPSHEETPAGE *phpage) {
    return This->lpVtbl->GetNextPage(This,phpage);
}
static inline HRESULT IWizardSite_GetCancelledPage(IWizardSite* This,HPROPSHEETPAGE *phpage) {
    return This->lpVtbl->GetCancelledPage(This,phpage);
}
#endif
#endif

#endif


#endif  /* __IWizardSite_INTERFACE_DEFINED__ */


#define SID_WizardSite IID_IWizardSite

/*****************************************************************************
 * IWizardExtension interface
 */
#ifndef __IWizardExtension_INTERFACE_DEFINED__
#define __IWizardExtension_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWizardExtension, 0xc02ea696, 0x86cc, 0x491e, 0x9b,0x23, 0x74,0x39,0x4a,0x04,0x44,0xa8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c02ea696-86cc-491e-9b23-74394a0444a8")
IWizardExtension : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddPages(
        HPROPSHEETPAGE *aPages,
        UINT cPages,
        UINT *pnPagesAdded) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFirstPage(
        HPROPSHEETPAGE *phpage) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetLastPage(
        HPROPSHEETPAGE *phpage) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWizardExtension, 0xc02ea696, 0x86cc, 0x491e, 0x9b,0x23, 0x74,0x39,0x4a,0x04,0x44,0xa8)
#endif
#else
typedef struct IWizardExtensionVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IWizardExtension methods ***/
    HRESULT (STDMETHODCALLTYPE *AddPages)(
        IWizardExtension *This,
        HPROPSHEETPAGE *aPages,
        UINT cPages,
        UINT *pnPagesAdded);

    HRESULT (STDMETHODCALLTYPE *GetFirstPage)(
        IWizardExtension *This,
        HPROPSHEETPAGE *phpage);

    HRESULT (STDMETHODCALLTYPE *GetLastPage)(
        IWizardExtension *This,
        HPROPSHEETPAGE *phpage);

    END_INTERFACE
} IWizardExtensionVtbl;

interface IWizardExtension {
    CONST_VTBL IWizardExtensionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IWizardExtension_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWizardExtension_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWizardExtension_Release(This) (This)->lpVtbl->Release(This)
/*** IWizardExtension methods ***/
#define IWizardExtension_AddPages(This,aPages,cPages,pnPagesAdded) (This)->lpVtbl->AddPages(This,aPages,cPages,pnPagesAdded)
#define IWizardExtension_GetFirstPage(This,phpage) (This)->lpVtbl->GetFirstPage(This,phpage)
#define IWizardExtension_GetLastPage(This,phpage) (This)->lpVtbl->GetLastPage(This,phpage)
#else
/*** IUnknown methods ***/
static inline HRESULT IWizardExtension_QueryInterface(IWizardExtension* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IWizardExtension_AddRef(IWizardExtension* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IWizardExtension_Release(IWizardExtension* This) {
    return This->lpVtbl->Release(This);
}
/*** IWizardExtension methods ***/
static inline HRESULT IWizardExtension_AddPages(IWizardExtension* This,HPROPSHEETPAGE *aPages,UINT cPages,UINT *pnPagesAdded) {
    return This->lpVtbl->AddPages(This,aPages,cPages,pnPagesAdded);
}
static inline HRESULT IWizardExtension_GetFirstPage(IWizardExtension* This,HPROPSHEETPAGE *phpage) {
    return This->lpVtbl->GetFirstPage(This,phpage);
}
static inline HRESULT IWizardExtension_GetLastPage(IWizardExtension* This,HPROPSHEETPAGE *phpage) {
    return This->lpVtbl->GetLastPage(This,phpage);
}
#endif
#endif

#endif


#endif  /* __IWizardExtension_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IWebWizardExtension interface
 */
#ifndef __IWebWizardExtension_INTERFACE_DEFINED__
#define __IWebWizardExtension_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWebWizardExtension, 0x0e6b3f66, 0x98d1, 0x48c0, 0xa2,0x22, 0xfb,0xde,0x74,0xe2,0xfb,0xc5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0e6b3f66-98d1-48c0-a222-fbde74e2fbc5")
IWebWizardExtension : public IWizardExtension
{
    virtual HRESULT STDMETHODCALLTYPE SetInitialURL(
        LPCWSTR pszURL) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetErrorURL(
        LPCWSTR pszErrorURL) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWebWizardExtension, 0x0e6b3f66, 0x98d1, 0x48c0, 0xa2,0x22, 0xfb,0xde,0x74,0xe2,0xfb,0xc5)
#endif
#else
typedef struct IWebWizardExtensionVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IWizardExtension methods ***/
    HRESULT (STDMETHODCALLTYPE *AddPages)(
        IWebWizardExtension *This,
        HPROPSHEETPAGE *aPages,
        UINT cPages,
        UINT *pnPagesAdded);

    HRESULT (STDMETHODCALLTYPE *GetFirstPage)(
        IWebWizardExtension *This,
        HPROPSHEETPAGE *phpage);

    HRESULT (STDMETHODCALLTYPE *GetLastPage)(
        IWebWizardExtension *This,
        HPROPSHEETPAGE *phpage);

    /*** IWebWizardExtension methods ***/
    HRESULT (STDMETHODCALLTYPE *SetInitialURL)(
        IWebWizardExtension *This,
        LPCWSTR pszURL);

    HRESULT (STDMETHODCALLTYPE *SetErrorURL)(
        IWebWizardExtension *This,
        LPCWSTR pszErrorURL);

    END_INTERFACE
} IWebWizardExtensionVtbl;

interface IWebWizardExtension {
    CONST_VTBL IWebWizardExtensionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IWebWizardExtension_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWebWizardExtension_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWebWizardExtension_Release(This) (This)->lpVtbl->Release(This)
/*** IWizardExtension methods ***/
#define IWebWizardExtension_AddPages(This,aPages,cPages,pnPagesAdded) (This)->lpVtbl->AddPages(This,aPages,cPages,pnPagesAdded)
#define IWebWizardExtension_GetFirstPage(This,phpage) (This)->lpVtbl->GetFirstPage(This,phpage)
#define IWebWizardExtension_GetLastPage(This,phpage) (This)->lpVtbl->GetLastPage(This,phpage)
/*** IWebWizardExtension methods ***/
#define IWebWizardExtension_SetInitialURL(This,pszURL) (This)->lpVtbl->SetInitialURL(This,pszURL)
#define IWebWizardExtension_SetErrorURL(This,pszErrorURL) (This)->lpVtbl->SetErrorURL(This,pszErrorURL)
#else
/*** IUnknown methods ***/
static inline HRESULT IWebWizardExtension_QueryInterface(IWebWizardExtension* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IWebWizardExtension_AddRef(IWebWizardExtension* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IWebWizardExtension_Release(IWebWizardExtension* This) {
    return This->lpVtbl->Release(This);
}
/*** IWizardExtension methods ***/
static inline HRESULT IWebWizardExtension_AddPages(IWebWizardExtension* This,HPROPSHEETPAGE *aPages,UINT cPages,UINT *pnPagesAdded) {
    return This->lpVtbl->AddPages(This,aPages,cPages,pnPagesAdded);
}
static inline HRESULT IWebWizardExtension_GetFirstPage(IWebWizardExtension* This,HPROPSHEETPAGE *phpage) {
    return This->lpVtbl->GetFirstPage(This,phpage);
}
static inline HRESULT IWebWizardExtension_GetLastPage(IWebWizardExtension* This,HPROPSHEETPAGE *phpage) {
    return This->lpVtbl->GetLastPage(This,phpage);
}
/*** IWebWizardExtension methods ***/
static inline HRESULT IWebWizardExtension_SetInitialURL(IWebWizardExtension* This,LPCWSTR pszURL) {
    return This->lpVtbl->SetInitialURL(This,pszURL);
}
static inline HRESULT IWebWizardExtension_SetErrorURL(IWebWizardExtension* This,LPCWSTR pszErrorURL) {
    return This->lpVtbl->SetErrorURL(This,pszErrorURL);
}
#endif
#endif

#endif


#endif  /* __IWebWizardExtension_INTERFACE_DEFINED__ */


#define SID_WebWizardHost IID_IWebWizardExtension

#define SHPWHF_NORECOMPRESS 0x00000001
#define SHPWHF_NONETPLACECREATE 0x00000002
#define SHPWHF_NOFILESELECTOR 0x00000004
#define SHPWHF_USEMRU 0x00000008
#if NTDDI_VERSION >= NTDDI_VISTA
#define SHPWHF_ANYLOCATION 0x00000100
#endif
#define SHPWHF_VALIDATEVIAWEBFOLDERS 0x00010000

#ifndef __IXMLDOMDocument_FWD_DEFINED__
#define __IXMLDOMDocument_FWD_DEFINED__
typedef interface IXMLDOMDocument IXMLDOMDocument;
#ifdef __cplusplus
interface IXMLDOMDocument;
#endif /* __cplusplus */
#endif


/*****************************************************************************
 * IPublishingWizard interface
 */
#ifndef __IPublishingWizard_INTERFACE_DEFINED__
#define __IPublishingWizard_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPublishingWizard, 0xaa9198bb, 0xccec, 0x472d, 0xbe,0xed, 0x19,0xa4,0xf6,0x73,0x3f,0x7a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("aa9198bb-ccec-472d-beed-19a4f6733f7a")
IPublishingWizard : public IWizardExtension
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IDataObject *pdo,
        DWORD dwOptions,
        LPCWSTR pszServiceScope) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTransferManifest(
        HRESULT *phrFromTransfer,
        IXMLDOMDocument **pdocManifest) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPublishingWizard, 0xaa9198bb, 0xccec, 0x472d, 0xbe,0xed, 0x19,0xa4,0xf6,0x73,0x3f,0x7a)
#endif
#else
typedef struct IPublishingWizardVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IWizardExtension methods ***/
    HRESULT (STDMETHODCALLTYPE *AddPages)(
        IPublishingWizard *This,
        HPROPSHEETPAGE *aPages,
        UINT cPages,
        UINT *pnPagesAdded);

    HRESULT (STDMETHODCALLTYPE *GetFirstPage)(
        IPublishingWizard *This,
        HPROPSHEETPAGE *phpage);

    HRESULT (STDMETHODCALLTYPE *GetLastPage)(
        IPublishingWizard *This,
        HPROPSHEETPAGE *phpage);

    /*** IPublishingWizard methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IPublishingWizard *This,
        IDataObject *pdo,
        DWORD dwOptions,
        LPCWSTR pszServiceScope);

    HRESULT (STDMETHODCALLTYPE *GetTransferManifest)(
        IPublishingWizard *This,
        HRESULT *phrFromTransfer,
        IXMLDOMDocument **pdocManifest);

    END_INTERFACE
} IPublishingWizardVtbl;

interface IPublishingWizard {
    CONST_VTBL IPublishingWizardVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPublishingWizard_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPublishingWizard_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPublishingWizard_Release(This) (This)->lpVtbl->Release(This)
/*** IWizardExtension methods ***/
#define IPublishingWizard_AddPages(This,aPages,cPages,pnPagesAdded) (This)->lpVtbl->AddPages(This,aPages,cPages,pnPagesAdded)
#define IPublishingWizard_GetFirstPage(This,phpage) (This)->lpVtbl->GetFirstPage(This,phpage)
#define IPublishingWizard_GetLastPage(This,phpage) (This)->lpVtbl->GetLastPage(This,phpage)
/*** IPublishingWizard methods ***/
#define IPublishingWizard_Initialize(This,pdo,dwOptions,pszServiceScope) (This)->lpVtbl->Initialize(This,pdo,dwOptions,pszServiceScope)
#define IPublishingWizard_GetTransferManifest(This,phrFromTransfer,pdocManifest) (This)->lpVtbl->GetTransferManifest(This,phrFromTransfer,pdocManifest)
#else
/*** IUnknown methods ***/
static inline HRESULT IPublishingWizard_QueryInterface(IPublishingWizard* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPublishingWizard_AddRef(IPublishingWizard* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPublishingWizard_Release(IPublishingWizard* This) {
    return This->lpVtbl->Release(This);
}
/*** IWizardExtension methods ***/
static inline HRESULT IPublishingWizard_AddPages(IPublishingWizard* This,HPROPSHEETPAGE *aPages,UINT cPages,UINT *pnPagesAdded) {
    return This->lpVtbl->AddPages(This,aPages,cPages,pnPagesAdded);
}
static inline HRESULT IPublishingWizard_GetFirstPage(IPublishingWizard* This,HPROPSHEETPAGE *phpage) {
    return This->lpVtbl->GetFirstPage(This,phpage);
}
static inline HRESULT IPublishingWizard_GetLastPage(IPublishingWizard* This,HPROPSHEETPAGE *phpage) {
    return This->lpVtbl->GetLastPage(This,phpage);
}
/*** IPublishingWizard methods ***/
static inline HRESULT IPublishingWizard_Initialize(IPublishingWizard* This,IDataObject *pdo,DWORD dwOptions,LPCWSTR pszServiceScope) {
    return This->lpVtbl->Initialize(This,pdo,dwOptions,pszServiceScope);
}
static inline HRESULT IPublishingWizard_GetTransferManifest(IPublishingWizard* This,HRESULT *phrFromTransfer,IXMLDOMDocument **pdocManifest) {
    return This->lpVtbl->GetTransferManifest(This,phrFromTransfer,pdocManifest);
}
#endif
#endif

#endif


#endif  /* __IPublishingWizard_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IFolderViewHost interface
 */
#ifndef __IFolderViewHost_INTERFACE_DEFINED__
#define __IFolderViewHost_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFolderViewHost, 0x1ea58f02, 0xd55a, 0x411d, 0xb0,0x9e, 0x9e,0x65,0xac,0x21,0x60,0x5b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1ea58f02-d55a-411d-b09e-9e65ac21605b")
IFolderViewHost : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        HWND hwndParent,
        IDataObject *pdo,
        RECT *prc) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFolderViewHost, 0x1ea58f02, 0xd55a, 0x411d, 0xb0,0x9e, 0x9e,0x65,0xac,0x21,0x60,0x5b)
#endif
#else
typedef struct IFolderViewHostVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFolderViewHost methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IFolderViewHost *This,
        HWND hwndParent,
        IDataObject *pdo,
        RECT *prc);

    END_INTERFACE
} IFolderViewHostVtbl;

interface IFolderViewHost {
    CONST_VTBL IFolderViewHostVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFolderViewHost_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFolderViewHost_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFolderViewHost_Release(This) (This)->lpVtbl->Release(This)
/*** IFolderViewHost methods ***/
#define IFolderViewHost_Initialize(This,hwndParent,pdo,prc) (This)->lpVtbl->Initialize(This,hwndParent,pdo,prc)
#else
/*** IUnknown methods ***/
static inline HRESULT IFolderViewHost_QueryInterface(IFolderViewHost* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFolderViewHost_AddRef(IFolderViewHost* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFolderViewHost_Release(IFolderViewHost* This) {
    return This->lpVtbl->Release(This);
}
/*** IFolderViewHost methods ***/
static inline HRESULT IFolderViewHost_Initialize(IFolderViewHost* This,HWND hwndParent,IDataObject *pdo,RECT *prc) {
    return This->lpVtbl->Initialize(This,hwndParent,pdo,prc);
}
#endif
#endif

#endif


#endif  /* __IFolderViewHost_INTERFACE_DEFINED__ */


#if _WIN32_IE >= _WIN32_IE_IE70
/*****************************************************************************
 * 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 inline HRESULT IExplorerBrowserEvents_QueryInterface(IExplorerBrowserEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IExplorerBrowserEvents_AddRef(IExplorerBrowserEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IExplorerBrowserEvents_Release(IExplorerBrowserEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** IExplorerBrowserEvents methods ***/
static inline HRESULT IExplorerBrowserEvents_OnNavigationPending(IExplorerBrowserEvents* This,PCIDLIST_ABSOLUTE pidlFolder) {
    return This->lpVtbl->OnNavigationPending(This,pidlFolder);
}
static inline HRESULT IExplorerBrowserEvents_OnViewCreated(IExplorerBrowserEvents* This,IShellView *psv) {
    return This->lpVtbl->OnViewCreated(This,psv);
}
static inline HRESULT IExplorerBrowserEvents_OnNavigationComplete(IExplorerBrowserEvents* This,PCIDLIST_ABSOLUTE pidlFolder) {
    return This->lpVtbl->OnNavigationComplete(This,pidlFolder);
}
static inline HRESULT IExplorerBrowserEvents_OnNavigationFailed(IExplorerBrowserEvents* This,PCIDLIST_ABSOLUTE pidlFolder) {
    return This->lpVtbl->OnNavigationFailed(This,pidlFolder);
}
#endif
#endif

#endif


#endif  /* __IExplorerBrowserEvents_INTERFACE_DEFINED__ */


typedef enum EXPLORER_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_ENUM_FLAG_OPERATORS(EXPLORER_BROWSER_OPTIONS)

typedef enum EXPLORER_BROWSER_FILL_FLAGS {
    EBF_NONE = 0x0,
    EBF_SELECTFROMDATAOBJECT = 0x100,
    EBF_NODROPTARGET = 0x200
} EXPLORER_BROWSER_FILL_FLAGS;

DEFINE_ENUM_FLAG_OPERATORS(EXPLORER_BROWSER_FILL_FLAGS)

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

#endif


#endif  /* __IExplorerBrowser_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IAccessibleObject interface
 */
#ifndef __IAccessibleObject_INTERFACE_DEFINED__
#define __IAccessibleObject_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibleObject, 0x95a391c5, 0x9ed4, 0x4c28, 0x84,0x01, 0xab,0x9e,0x06,0x71,0x9e,0x11);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("95a391c5-9ed4-4c28-8401-ab9e06719e11")
IAccessibleObject : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetAccessibleName(
        LPCWSTR pszName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibleObject, 0x95a391c5, 0x9ed4, 0x4c28, 0x84,0x01, 0xab,0x9e,0x06,0x71,0x9e,0x11)
#endif
#else
typedef struct IAccessibleObjectVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibleObject methods ***/
    HRESULT (STDMETHODCALLTYPE *SetAccessibleName)(
        IAccessibleObject *This,
        LPCWSTR pszName);

    END_INTERFACE
} IAccessibleObjectVtbl;

interface IAccessibleObject {
    CONST_VTBL IAccessibleObjectVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibleObject_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibleObject_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibleObject_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibleObject methods ***/
#define IAccessibleObject_SetAccessibleName(This,pszName) (This)->lpVtbl->SetAccessibleName(This,pszName)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibleObject_QueryInterface(IAccessibleObject* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibleObject_AddRef(IAccessibleObject* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibleObject_Release(IAccessibleObject* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibleObject methods ***/
static inline HRESULT IAccessibleObject_SetAccessibleName(IAccessibleObject* This,LPCWSTR pszName) {
    return This->lpVtbl->SetAccessibleName(This,pszName);
}
#endif
#endif

#endif


#endif  /* __IAccessibleObject_INTERFACE_DEFINED__ */

#endif

/*****************************************************************************
 * IResultsFolder interface
 */
#ifndef __IResultsFolder_INTERFACE_DEFINED__
#define __IResultsFolder_INTERFACE_DEFINED__

DEFINE_GUID(IID_IResultsFolder, 0x96e5ae6d, 0x6ae1, 0x4b1c, 0x90,0x0c, 0xc6,0x48,0x0e,0xaa,0x88,0x28);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("96e5ae6d-6ae1-4b1c-900c-c6480eaa8828")
IResultsFolder : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddItem(
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddIDList(
        PCIDLIST_ABSOLUTE pidl,
        PITEMID_CHILD *ppidlAdded) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE RemoveIDList(
        PCIDLIST_ABSOLUTE pidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveAll(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IResultsFolder, 0x96e5ae6d, 0x6ae1, 0x4b1c, 0x90,0x0c, 0xc6,0x48,0x0e,0xaa,0x88,0x28)
#endif
#else
typedef struct IResultsFolderVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IResultsFolder methods ***/
    HRESULT (STDMETHODCALLTYPE *AddItem)(
        IResultsFolder *This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *AddIDList)(
        IResultsFolder *This,
        PCIDLIST_ABSOLUTE pidl,
        PITEMID_CHILD *ppidlAdded);

    HRESULT (STDMETHODCALLTYPE *RemoveItem)(
        IResultsFolder *This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *RemoveIDList)(
        IResultsFolder *This,
        PCIDLIST_ABSOLUTE pidl);

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

    END_INTERFACE
} IResultsFolderVtbl;

interface IResultsFolder {
    CONST_VTBL IResultsFolderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IResultsFolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IResultsFolder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IResultsFolder_Release(This) (This)->lpVtbl->Release(This)
/*** IResultsFolder methods ***/
#define IResultsFolder_AddItem(This,psi) (This)->lpVtbl->AddItem(This,psi)
#define IResultsFolder_AddIDList(This,pidl,ppidlAdded) (This)->lpVtbl->AddIDList(This,pidl,ppidlAdded)
#define IResultsFolder_RemoveItem(This,psi) (This)->lpVtbl->RemoveItem(This,psi)
#define IResultsFolder_RemoveIDList(This,pidl) (This)->lpVtbl->RemoveIDList(This,pidl)
#define IResultsFolder_RemoveAll(This) (This)->lpVtbl->RemoveAll(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IResultsFolder_QueryInterface(IResultsFolder* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IResultsFolder_AddRef(IResultsFolder* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IResultsFolder_Release(IResultsFolder* This) {
    return This->lpVtbl->Release(This);
}
/*** IResultsFolder methods ***/
static inline HRESULT IResultsFolder_AddItem(IResultsFolder* This,IShellItem *psi) {
    return This->lpVtbl->AddItem(This,psi);
}
static inline HRESULT IResultsFolder_AddIDList(IResultsFolder* This,PCIDLIST_ABSOLUTE pidl,PITEMID_CHILD *ppidlAdded) {
    return This->lpVtbl->AddIDList(This,pidl,ppidlAdded);
}
static inline HRESULT IResultsFolder_RemoveItem(IResultsFolder* This,IShellItem *psi) {
    return This->lpVtbl->RemoveItem(This,psi);
}
static inline HRESULT IResultsFolder_RemoveIDList(IResultsFolder* This,PCIDLIST_ABSOLUTE pidl) {
    return This->lpVtbl->RemoveIDList(This,pidl);
}
static inline HRESULT IResultsFolder_RemoveAll(IResultsFolder* This) {
    return This->lpVtbl->RemoveAll(This);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IResultsFolder_RemoteAddIDList_Proxy(
    IResultsFolder* This,
    PCIDLIST_ABSOLUTE pidl,
    PITEMID_CHILD *ppidlAdded);
void __RPC_STUB IResultsFolder_RemoteAddIDList_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IResultsFolder_AddIDList_Proxy(
    IResultsFolder* This,
    PCIDLIST_ABSOLUTE pidl,
    PITEMID_CHILD *ppidlAdded);
HRESULT __RPC_STUB IResultsFolder_AddIDList_Stub(
    IResultsFolder* This,
    PCIDLIST_ABSOLUTE pidl,
    PITEMID_CHILD *ppidlAdded);

#endif  /* __IResultsFolder_INTERFACE_DEFINED__ */

#if _WIN32_IE >= _WIN32_IE_IE70
/*****************************************************************************
 * IEnumObjects interface
 */
#ifndef __IEnumObjects_INTERFACE_DEFINED__
#define __IEnumObjects_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumObjects, 0x2c1c7e2e, 0x2d0e, 0x4059, 0x83,0x1e, 0x1e,0x6f,0x82,0x33,0x5c,0x2e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2c1c7e2e-2d0e-4059-831e-1e6f82335c2e")
IEnumObjects : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        REFIID riid,
        void **rgelt,
        ULONG *pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumObjects, 0x2c1c7e2e, 0x2d0e, 0x4059, 0x83,0x1e, 0x1e,0x6f,0x82,0x33,0x5c,0x2e)
#endif
#else
typedef struct IEnumObjectsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumObjects methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumObjects *This,
        ULONG celt,
        REFIID riid,
        void **rgelt,
        ULONG *pceltFetched);

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

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

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

    END_INTERFACE
} IEnumObjectsVtbl;

interface IEnumObjects {
    CONST_VTBL IEnumObjectsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumObjects_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumObjects_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumObjects_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumObjects methods ***/
#define IEnumObjects_Next(This,celt,riid,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,riid,rgelt,pceltFetched)
#define IEnumObjects_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumObjects_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumObjects_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#else
/*** IUnknown methods ***/
static inline HRESULT IEnumObjects_QueryInterface(IEnumObjects* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IEnumObjects_AddRef(IEnumObjects* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IEnumObjects_Release(IEnumObjects* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumObjects methods ***/
static inline HRESULT IEnumObjects_Next(IEnumObjects* This,ULONG celt,REFIID riid,void **rgelt,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,riid,rgelt,pceltFetched);
}
static inline HRESULT IEnumObjects_Skip(IEnumObjects* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static inline HRESULT IEnumObjects_Reset(IEnumObjects* This) {
    return This->lpVtbl->Reset(This);
}
static inline HRESULT IEnumObjects_Clone(IEnumObjects* This,IEnumObjects **ppenum) {
    return This->lpVtbl->Clone(This,ppenum);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumObjects_RemoteNext_Proxy(
    IEnumObjects* This,
    ULONG celt,
    REFIID riid,
    void **rgelt,
    ULONG *pceltFetched);
void __RPC_STUB IEnumObjects_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumObjects_Next_Proxy(
    IEnumObjects* This,
    ULONG celt,
    REFIID riid,
    void **rgelt,
    ULONG *pceltFetched);
HRESULT __RPC_STUB IEnumObjects_Next_Stub(
    IEnumObjects* This,
    ULONG celt,
    REFIID riid,
    void **rgelt,
    ULONG *pceltFetched);

#endif  /* __IEnumObjects_INTERFACE_DEFINED__ */


enum _OPPROGDLGF {
    OPPROGDLG_DEFAULT = 0x0,
    OPPROGDLG_ENABLEPAUSE = 0x80,
    OPPROGDLG_ALLOWUNDO = 0x100,
    OPPROGDLG_DONTDISPLAYSOURCEPATH = 0x200,
    OPPROGDLG_DONTDISPLAYDESTPATH = 0x400,
    OPPROGDLG_NOMULTIDAYESTIMATES = 0x800,
    OPPROGDLG_DONTDISPLAYLOCATIONS = 0x1000
};

typedef DWORD OPPROGDLGF;

/*****************************************************************************
 * IOperationsProgressDialog interface
 */
#ifndef __IOperationsProgressDialog_INTERFACE_DEFINED__
#define __IOperationsProgressDialog_INTERFACE_DEFINED__

enum _PDMODE {
    PDM_DEFAULT = 0x0,
    PDM_RUN = 0x1,
    PDM_PREFLIGHT = 0x2,
    PDM_UNDOING = 0x4,
    PDM_ERRORSBLOCKING = 0x8,
    PDM_INDETERMINATE = 0x10
};

typedef DWORD PDMODE;

typedef enum PDOPSTATUS {
    PDOPS_RUNNING = 1,
    PDOPS_PAUSED = 2,
    PDOPS_CANCELLED = 3,
    PDOPS_STOPPED = 4,
    PDOPS_ERRORS = 5
} PDOPSTATUS;

DEFINE_GUID(IID_IOperationsProgressDialog, 0x0c9fb851, 0xe5c9, 0x43eb, 0xa3,0x70, 0xf0,0x67,0x7b,0x13,0x87,0x4c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0c9fb851-e5c9-43eb-a370-f0677b13874c")
IOperationsProgressDialog : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE StartProgressDialog(
        HWND hwndOwner,
        OPPROGDLGF flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopProgressDialog(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOperation(
        SPACTION action) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMode(
        PDMODE mode) = 0;

    virtual HRESULT STDMETHODCALLTYPE UpdateProgress(
        ULONGLONG ullPointsCurrent,
        ULONGLONG ullPointsTotal,
        ULONGLONG ullSizeCurrent,
        ULONGLONG ullSizeTotal,
        ULONGLONG ullItemsCurrent,
        ULONGLONG ullItemsTotal) = 0;

    virtual HRESULT STDMETHODCALLTYPE UpdateLocations(
        IShellItem *psiSource,
        IShellItem *psiTarget,
        IShellItem *psiItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResetTimer(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PauseTimer(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResumeTimer(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMilliseconds(
        ULONGLONG *pullElapsed,
        ULONGLONG *pullRemaining) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOperationStatus(
        PDOPSTATUS *popstatus) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IOperationsProgressDialog, 0x0c9fb851, 0xe5c9, 0x43eb, 0xa3,0x70, 0xf0,0x67,0x7b,0x13,0x87,0x4c)
#endif
#else
typedef struct IOperationsProgressDialogVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IOperationsProgressDialog methods ***/
    HRESULT (STDMETHODCALLTYPE *StartProgressDialog)(
        IOperationsProgressDialog *This,
        HWND hwndOwner,
        OPPROGDLGF flags);

    HRESULT (STDMETHODCALLTYPE *StopProgressDialog)(
        IOperationsProgressDialog *This);

    HRESULT (STDMETHODCALLTYPE *SetOperation)(
        IOperationsProgressDialog *This,
        SPACTION action);

    HRESULT (STDMETHODCALLTYPE *SetMode)(
        IOperationsProgressDialog *This,
        PDMODE mode);

    HRESULT (STDMETHODCALLTYPE *UpdateProgress)(
        IOperationsProgressDialog *This,
        ULONGLONG ullPointsCurrent,
        ULONGLONG ullPointsTotal,
        ULONGLONG ullSizeCurrent,
        ULONGLONG ullSizeTotal,
        ULONGLONG ullItemsCurrent,
        ULONGLONG ullItemsTotal);

    HRESULT (STDMETHODCALLTYPE *UpdateLocations)(
        IOperationsProgressDialog *This,
        IShellItem *psiSource,
        IShellItem *psiTarget,
        IShellItem *psiItem);

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

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

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

    HRESULT (STDMETHODCALLTYPE *GetMilliseconds)(
        IOperationsProgressDialog *This,
        ULONGLONG *pullElapsed,
        ULONGLONG *pullRemaining);

    HRESULT (STDMETHODCALLTYPE *GetOperationStatus)(
        IOperationsProgressDialog *This,
        PDOPSTATUS *popstatus);

    END_INTERFACE
} IOperationsProgressDialogVtbl;

interface IOperationsProgressDialog {
    CONST_VTBL IOperationsProgressDialogVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IOperationsProgressDialog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IOperationsProgressDialog_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IOperationsProgressDialog_Release(This) (This)->lpVtbl->Release(This)
/*** IOperationsProgressDialog methods ***/
#define IOperationsProgressDialog_StartProgressDialog(This,hwndOwner,flags) (This)->lpVtbl->StartProgressDialog(This,hwndOwner,flags)
#define IOperationsProgressDialog_StopProgressDialog(This) (This)->lpVtbl->StopProgressDialog(This)
#define IOperationsProgressDialog_SetOperation(This,action) (This)->lpVtbl->SetOperation(This,action)
#define IOperationsProgressDialog_SetMode(This,mode) (This)->lpVtbl->SetMode(This,mode)
#define IOperationsProgressDialog_UpdateProgress(This,ullPointsCurrent,ullPointsTotal,ullSizeCurrent,ullSizeTotal,ullItemsCurrent,ullItemsTotal) (This)->lpVtbl->UpdateProgress(This,ullPointsCurrent,ullPointsTotal,ullSizeCurrent,ullSizeTotal,ullItemsCurrent,ullItemsTotal)
#define IOperationsProgressDialog_UpdateLocations(This,psiSource,psiTarget,psiItem) (This)->lpVtbl->UpdateLocations(This,psiSource,psiTarget,psiItem)
#define IOperationsProgressDialog_ResetTimer(This) (This)->lpVtbl->ResetTimer(This)
#define IOperationsProgressDialog_PauseTimer(This) (This)->lpVtbl->PauseTimer(This)
#define IOperationsProgressDialog_ResumeTimer(This) (This)->lpVtbl->ResumeTimer(This)
#define IOperationsProgressDialog_GetMilliseconds(This,pullElapsed,pullRemaining) (This)->lpVtbl->GetMilliseconds(This,pullElapsed,pullRemaining)
#define IOperationsProgressDialog_GetOperationStatus(This,popstatus) (This)->lpVtbl->GetOperationStatus(This,popstatus)
#else
/*** IUnknown methods ***/
static inline HRESULT IOperationsProgressDialog_QueryInterface(IOperationsProgressDialog* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IOperationsProgressDialog_AddRef(IOperationsProgressDialog* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IOperationsProgressDialog_Release(IOperationsProgressDialog* This) {
    return This->lpVtbl->Release(This);
}
/*** IOperationsProgressDialog methods ***/
static inline HRESULT IOperationsProgressDialog_StartProgressDialog(IOperationsProgressDialog* This,HWND hwndOwner,OPPROGDLGF flags) {
    return This->lpVtbl->StartProgressDialog(This,hwndOwner,flags);
}
static inline HRESULT IOperationsProgressDialog_StopProgressDialog(IOperationsProgressDialog* This) {
    return This->lpVtbl->StopProgressDialog(This);
}
static inline HRESULT IOperationsProgressDialog_SetOperation(IOperationsProgressDialog* This,SPACTION action) {
    return This->lpVtbl->SetOperation(This,action);
}
static inline HRESULT IOperationsProgressDialog_SetMode(IOperationsProgressDialog* This,PDMODE mode) {
    return This->lpVtbl->SetMode(This,mode);
}
static inline HRESULT IOperationsProgressDialog_UpdateProgress(IOperationsProgressDialog* This,ULONGLONG ullPointsCurrent,ULONGLONG ullPointsTotal,ULONGLONG ullSizeCurrent,ULONGLONG ullSizeTotal,ULONGLONG ullItemsCurrent,ULONGLONG ullItemsTotal) {
    return This->lpVtbl->UpdateProgress(This,ullPointsCurrent,ullPointsTotal,ullSizeCurrent,ullSizeTotal,ullItemsCurrent,ullItemsTotal);
}
static inline HRESULT IOperationsProgressDialog_UpdateLocations(IOperationsProgressDialog* This,IShellItem *psiSource,IShellItem *psiTarget,IShellItem *psiItem) {
    return This->lpVtbl->UpdateLocations(This,psiSource,psiTarget,psiItem);
}
static inline HRESULT IOperationsProgressDialog_ResetTimer(IOperationsProgressDialog* This) {
    return This->lpVtbl->ResetTimer(This);
}
static inline HRESULT IOperationsProgressDialog_PauseTimer(IOperationsProgressDialog* This) {
    return This->lpVtbl->PauseTimer(This);
}
static inline HRESULT IOperationsProgressDialog_ResumeTimer(IOperationsProgressDialog* This) {
    return This->lpVtbl->ResumeTimer(This);
}
static inline HRESULT IOperationsProgressDialog_GetMilliseconds(IOperationsProgressDialog* This,ULONGLONG *pullElapsed,ULONGLONG *pullRemaining) {
    return This->lpVtbl->GetMilliseconds(This,pullElapsed,pullRemaining);
}
static inline HRESULT IOperationsProgressDialog_GetOperationStatus(IOperationsProgressDialog* This,PDOPSTATUS *popstatus) {
    return This->lpVtbl->GetOperationStatus(This,popstatus);
}
#endif
#endif

#endif


#endif  /* __IOperationsProgressDialog_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IIOCancelInformation interface
 */
#ifndef __IIOCancelInformation_INTERFACE_DEFINED__
#define __IIOCancelInformation_INTERFACE_DEFINED__

DEFINE_GUID(IID_IIOCancelInformation, 0xf5b0bf81, 0x8cb5, 0x4b1b, 0x94,0x49, 0x1a,0x15,0x9e,0x0c,0x73,0x3c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f5b0bf81-8cb5-4b1b-9449-1a159e0c733c")
IIOCancelInformation : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetCancelInformation(
        DWORD dwThreadID,
        UINT uMsgCancel) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCancelInformation(
        DWORD *pdwThreadID,
        UINT *puMsgCancel) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IIOCancelInformation, 0xf5b0bf81, 0x8cb5, 0x4b1b, 0x94,0x49, 0x1a,0x15,0x9e,0x0c,0x73,0x3c)
#endif
#else
typedef struct IIOCancelInformationVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IIOCancelInformation methods ***/
    HRESULT (STDMETHODCALLTYPE *SetCancelInformation)(
        IIOCancelInformation *This,
        DWORD dwThreadID,
        UINT uMsgCancel);

    HRESULT (STDMETHODCALLTYPE *GetCancelInformation)(
        IIOCancelInformation *This,
        DWORD *pdwThreadID,
        UINT *puMsgCancel);

    END_INTERFACE
} IIOCancelInformationVtbl;

interface IIOCancelInformation {
    CONST_VTBL IIOCancelInformationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IIOCancelInformation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IIOCancelInformation_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IIOCancelInformation_Release(This) (This)->lpVtbl->Release(This)
/*** IIOCancelInformation methods ***/
#define IIOCancelInformation_SetCancelInformation(This,dwThreadID,uMsgCancel) (This)->lpVtbl->SetCancelInformation(This,dwThreadID,uMsgCancel)
#define IIOCancelInformation_GetCancelInformation(This,pdwThreadID,puMsgCancel) (This)->lpVtbl->GetCancelInformation(This,pdwThreadID,puMsgCancel)
#else
/*** IUnknown methods ***/
static inline HRESULT IIOCancelInformation_QueryInterface(IIOCancelInformation* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IIOCancelInformation_AddRef(IIOCancelInformation* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IIOCancelInformation_Release(IIOCancelInformation* This) {
    return This->lpVtbl->Release(This);
}
/*** IIOCancelInformation methods ***/
static inline HRESULT IIOCancelInformation_SetCancelInformation(IIOCancelInformation* This,DWORD dwThreadID,UINT uMsgCancel) {
    return This->lpVtbl->SetCancelInformation(This,dwThreadID,uMsgCancel);
}
static inline HRESULT IIOCancelInformation_GetCancelInformation(IIOCancelInformation* This,DWORD *pdwThreadID,UINT *puMsgCancel) {
    return This->lpVtbl->GetCancelInformation(This,pdwThreadID,puMsgCancel);
}
#endif
#endif

#endif


#endif  /* __IIOCancelInformation_INTERFACE_DEFINED__ */


#define FOFX_NOSKIPJUNCTIONS 0x00010000
#define FOFX_PREFERHARDLINK 0x00020000
#define FOFX_SHOWELEVATIONPROMPT 0x00040000
#define FOFX_RECYCLEONDELETE 0x00080000
#define FOFX_EARLYFAILURE 0x00100000
#define FOFX_PRESERVEFILEEXTENSIONS 0x00200000
#define FOFX_KEEPNEWERFILE 0x00400000
#define FOFX_NOCOPYHOOKS 0x00800000
#define FOFX_NOMINIMIZEBOX 0x01000000
#define FOFX_MOVEACLSACROSSVOLUMES 0x02000000
#define FOFX_DONTDISPLAYSOURCEPATH 0x04000000
#define FOFX_DONTDISPLAYDESTPATH 0x08000000
#define FOFX_REQUIREELEVATION 0x10000000
#define FOFX_ADDUNDORECORD 0x20000000
#define FOFX_COPYASDOWNLOAD 0x40000000
#define FOFX_DONTDISPLAYLOCATIONS 0x80000000

/*****************************************************************************
 * IFileOperation interface
 */
#ifndef __IFileOperation_INTERFACE_DEFINED__
#define __IFileOperation_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFileOperation, 0x947aab5f, 0x0a5c, 0x4c13, 0xb4,0xd6, 0x4b,0xf7,0x83,0x6f,0xc9,0xf8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("947aab5f-0a5c-4c13-b4d6-4bf7836fc9f8")
IFileOperation : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Advise(
        IFileOperationProgressSink *pfops,
        DWORD *pdwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unadvise(
        DWORD dwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOperationFlags(
        DWORD dwOperationFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetProgressMessage(
        LPCWSTR pszMessage) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetProgressDialog(
        IOperationsProgressDialog *popd) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE SetOwnerWindow(
        HWND hwndOwner) = 0;

    virtual HRESULT STDMETHODCALLTYPE ApplyPropertiesToItem(
        IShellItem *psiItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE ApplyPropertiesToItems(
        IUnknown *punkItems) = 0;

    virtual HRESULT STDMETHODCALLTYPE RenameItem(
        IShellItem *psiItem,
        LPCWSTR pszNewName,
        IFileOperationProgressSink *pfopsItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE RenameItems(
        IUnknown *pUnkItems,
        LPCWSTR pszNewName) = 0;

    virtual HRESULT STDMETHODCALLTYPE MoveItem(
        IShellItem *psiItem,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName,
        IFileOperationProgressSink *pfopsItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE MoveItems(
        IUnknown *punkItems,
        IShellItem *psiDestinationFolder) = 0;

    virtual HRESULT STDMETHODCALLTYPE CopyItem(
        IShellItem *psiItem,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszCopyName,
        IFileOperationProgressSink *pfopsItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE CopyItems(
        IUnknown *punkItems,
        IShellItem *psiDestinationFolder) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteItem(
        IShellItem *psiItem,
        IFileOperationProgressSink *pfopsItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteItems(
        IUnknown *punkItems) = 0;

    virtual HRESULT STDMETHODCALLTYPE NewItem(
        IShellItem *psiDestinationFolder,
        DWORD dwFileAttributes,
        LPCWSTR pszName,
        LPCWSTR pszTemplateName,
        IFileOperationProgressSink *pfopsItem) = 0;

    virtual HRESULT STDMETHODCALLTYPE PerformOperations(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAnyOperationsAborted(
        WINBOOL *pfAnyOperationsAborted) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFileOperation, 0x947aab5f, 0x0a5c, 0x4c13, 0xb4,0xd6, 0x4b,0xf7,0x83,0x6f,0xc9,0xf8)
#endif
#else
typedef struct IFileOperationVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFileOperation methods ***/
    HRESULT (STDMETHODCALLTYPE *Advise)(
        IFileOperation *This,
        IFileOperationProgressSink *pfops,
        DWORD *pdwCookie);

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

    HRESULT (STDMETHODCALLTYPE *SetOperationFlags)(
        IFileOperation *This,
        DWORD dwOperationFlags);

    HRESULT (STDMETHODCALLTYPE *SetProgressMessage)(
        IFileOperation *This,
        LPCWSTR pszMessage);

    HRESULT (STDMETHODCALLTYPE *SetProgressDialog)(
        IFileOperation *This,
        IOperationsProgressDialog *popd);

    HRESULT (STDMETHODCALLTYPE *SetProperties)(
        IFileOperation *This,
        IPropertyChangeArray *pproparray);

    HRESULT (STDMETHODCALLTYPE *SetOwnerWindow)(
        IFileOperation *This,
        HWND hwndOwner);

    HRESULT (STDMETHODCALLTYPE *ApplyPropertiesToItem)(
        IFileOperation *This,
        IShellItem *psiItem);

    HRESULT (STDMETHODCALLTYPE *ApplyPropertiesToItems)(
        IFileOperation *This,
        IUnknown *punkItems);

    HRESULT (STDMETHODCALLTYPE *RenameItem)(
        IFileOperation *This,
        IShellItem *psiItem,
        LPCWSTR pszNewName,
        IFileOperationProgressSink *pfopsItem);

    HRESULT (STDMETHODCALLTYPE *RenameItems)(
        IFileOperation *This,
        IUnknown *pUnkItems,
        LPCWSTR pszNewName);

    HRESULT (STDMETHODCALLTYPE *MoveItem)(
        IFileOperation *This,
        IShellItem *psiItem,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszNewName,
        IFileOperationProgressSink *pfopsItem);

    HRESULT (STDMETHODCALLTYPE *MoveItems)(
        IFileOperation *This,
        IUnknown *punkItems,
        IShellItem *psiDestinationFolder);

    HRESULT (STDMETHODCALLTYPE *CopyItem)(
        IFileOperation *This,
        IShellItem *psiItem,
        IShellItem *psiDestinationFolder,
        LPCWSTR pszCopyName,
        IFileOperationProgressSink *pfopsItem);

    HRESULT (STDMETHODCALLTYPE *CopyItems)(
        IFileOperation *This,
        IUnknown *punkItems,
        IShellItem *psiDestinationFolder);

    HRESULT (STDMETHODCALLTYPE *DeleteItem)(
        IFileOperation *This,
        IShellItem *psiItem,
        IFileOperationProgressSink *pfopsItem);

    HRESULT (STDMETHODCALLTYPE *DeleteItems)(
        IFileOperation *This,
        IUnknown *punkItems);

    HRESULT (STDMETHODCALLTYPE *NewItem)(
        IFileOperation *This,
        IShellItem *psiDestinationFolder,
        DWORD dwFileAttributes,
        LPCWSTR pszName,
        LPCWSTR pszTemplateName,
        IFileOperationProgressSink *pfopsItem);

    HRESULT (STDMETHODCALLTYPE *PerformOperations)(
        IFileOperation *This);

    HRESULT (STDMETHODCALLTYPE *GetAnyOperationsAborted)(
        IFileOperation *This,
        WINBOOL *pfAnyOperationsAborted);

    END_INTERFACE
} IFileOperationVtbl;

interface IFileOperation {
    CONST_VTBL IFileOperationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFileOperation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileOperation_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileOperation_Release(This) (This)->lpVtbl->Release(This)
/*** IFileOperation methods ***/
#define IFileOperation_Advise(This,pfops,pdwCookie) (This)->lpVtbl->Advise(This,pfops,pdwCookie)
#define IFileOperation_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
#define IFileOperation_SetOperationFlags(This,dwOperationFlags) (This)->lpVtbl->SetOperationFlags(This,dwOperationFlags)
#define IFileOperation_SetProgressMessage(This,pszMessage) (This)->lpVtbl->SetProgressMessage(This,pszMessage)
#define IFileOperation_SetProgressDialog(This,popd) (This)->lpVtbl->SetProgressDialog(This,popd)
#define IFileOperation_SetProperties(This,pproparray) (This)->lpVtbl->SetProperties(This,pproparray)
#define IFileOperation_SetOwnerWindow(This,hwndOwner) (This)->lpVtbl->SetOwnerWindow(This,hwndOwner)
#define IFileOperation_ApplyPropertiesToItem(This,psiItem) (This)->lpVtbl->ApplyPropertiesToItem(This,psiItem)
#define IFileOperation_ApplyPropertiesToItems(This,punkItems) (This)->lpVtbl->ApplyPropertiesToItems(This,punkItems)
#define IFileOperation_RenameItem(This,psiItem,pszNewName,pfopsItem) (This)->lpVtbl->RenameItem(This,psiItem,pszNewName,pfopsItem)
#define IFileOperation_RenameItems(This,pUnkItems,pszNewName) (This)->lpVtbl->RenameItems(This,pUnkItems,pszNewName)
#define IFileOperation_MoveItem(This,psiItem,psiDestinationFolder,pszNewName,pfopsItem) (This)->lpVtbl->MoveItem(This,psiItem,psiDestinationFolder,pszNewName,pfopsItem)
#define IFileOperation_MoveItems(This,punkItems,psiDestinationFolder) (This)->lpVtbl->MoveItems(This,punkItems,psiDestinationFolder)
#define IFileOperation_CopyItem(This,psiItem,psiDestinationFolder,pszCopyName,pfopsItem) (This)->lpVtbl->CopyItem(This,psiItem,psiDestinationFolder,pszCopyName,pfopsItem)
#define IFileOperation_CopyItems(This,punkItems,psiDestinationFolder) (This)->lpVtbl->CopyItems(This,punkItems,psiDestinationFolder)
#define IFileOperation_DeleteItem(This,psiItem,pfopsItem) (This)->lpVtbl->DeleteItem(This,psiItem,pfopsItem)
#define IFileOperation_DeleteItems(This,punkItems) (This)->lpVtbl->DeleteItems(This,punkItems)
#define IFileOperation_NewItem(This,psiDestinationFolder,dwFileAttributes,pszName,pszTemplateName,pfopsItem) (This)->lpVtbl->NewItem(This,psiDestinationFolder,dwFileAttributes,pszName,pszTemplateName,pfopsItem)
#define IFileOperation_PerformOperations(This) (This)->lpVtbl->PerformOperations(This)
#define IFileOperation_GetAnyOperationsAborted(This,pfAnyOperationsAborted) (This)->lpVtbl->GetAnyOperationsAborted(This,pfAnyOperationsAborted)
#else
/*** IUnknown methods ***/
static inline HRESULT IFileOperation_QueryInterface(IFileOperation* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFileOperation_AddRef(IFileOperation* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFileOperation_Release(IFileOperation* This) {
    return This->lpVtbl->Release(This);
}
/*** IFileOperation methods ***/
static inline HRESULT IFileOperation_Advise(IFileOperation* This,IFileOperationProgressSink *pfops,DWORD *pdwCookie) {
    return This->lpVtbl->Advise(This,pfops,pdwCookie);
}
static inline HRESULT IFileOperation_Unadvise(IFileOperation* This,DWORD dwCookie) {
    return This->lpVtbl->Unadvise(This,dwCookie);
}
static inline HRESULT IFileOperation_SetOperationFlags(IFileOperation* This,DWORD dwOperationFlags) {
    return This->lpVtbl->SetOperationFlags(This,dwOperationFlags);
}
static inline HRESULT IFileOperation_SetProgressMessage(IFileOperation* This,LPCWSTR pszMessage) {
    return This->lpVtbl->SetProgressMessage(This,pszMessage);
}
static inline HRESULT IFileOperation_SetProgressDialog(IFileOperation* This,IOperationsProgressDialog *popd) {
    return This->lpVtbl->SetProgressDialog(This,popd);
}
static inline HRESULT IFileOperation_SetProperties(IFileOperation* This,IPropertyChangeArray *pproparray) {
    return This->lpVtbl->SetProperties(This,pproparray);
}
static inline HRESULT IFileOperation_SetOwnerWindow(IFileOperation* This,HWND hwndOwner) {
    return This->lpVtbl->SetOwnerWindow(This,hwndOwner);
}
static inline HRESULT IFileOperation_ApplyPropertiesToItem(IFileOperation* This,IShellItem *psiItem) {
    return This->lpVtbl->ApplyPropertiesToItem(This,psiItem);
}
static inline HRESULT IFileOperation_ApplyPropertiesToItems(IFileOperation* This,IUnknown *punkItems) {
    return This->lpVtbl->ApplyPropertiesToItems(This,punkItems);
}
static inline HRESULT IFileOperation_RenameItem(IFileOperation* This,IShellItem *psiItem,LPCWSTR pszNewName,IFileOperationProgressSink *pfopsItem) {
    return This->lpVtbl->RenameItem(This,psiItem,pszNewName,pfopsItem);
}
static inline HRESULT IFileOperation_RenameItems(IFileOperation* This,IUnknown *pUnkItems,LPCWSTR pszNewName) {
    return This->lpVtbl->RenameItems(This,pUnkItems,pszNewName);
}
static inline HRESULT IFileOperation_MoveItem(IFileOperation* This,IShellItem *psiItem,IShellItem *psiDestinationFolder,LPCWSTR pszNewName,IFileOperationProgressSink *pfopsItem) {
    return This->lpVtbl->MoveItem(This,psiItem,psiDestinationFolder,pszNewName,pfopsItem);
}
static inline HRESULT IFileOperation_MoveItems(IFileOperation* This,IUnknown *punkItems,IShellItem *psiDestinationFolder) {
    return This->lpVtbl->MoveItems(This,punkItems,psiDestinationFolder);
}
static inline HRESULT IFileOperation_CopyItem(IFileOperation* This,IShellItem *psiItem,IShellItem *psiDestinationFolder,LPCWSTR pszCopyName,IFileOperationProgressSink *pfopsItem) {
    return This->lpVtbl->CopyItem(This,psiItem,psiDestinationFolder,pszCopyName,pfopsItem);
}
static inline HRESULT IFileOperation_CopyItems(IFileOperation* This,IUnknown *punkItems,IShellItem *psiDestinationFolder) {
    return This->lpVtbl->CopyItems(This,punkItems,psiDestinationFolder);
}
static inline HRESULT IFileOperation_DeleteItem(IFileOperation* This,IShellItem *psiItem,IFileOperationProgressSink *pfopsItem) {
    return This->lpVtbl->DeleteItem(This,psiItem,pfopsItem);
}
static inline HRESULT IFileOperation_DeleteItems(IFileOperation* This,IUnknown *punkItems) {
    return This->lpVtbl->DeleteItems(This,punkItems);
}
static inline HRESULT IFileOperation_NewItem(IFileOperation* This,IShellItem *psiDestinationFolder,DWORD dwFileAttributes,LPCWSTR pszName,LPCWSTR pszTemplateName,IFileOperationProgressSink *pfopsItem) {
    return This->lpVtbl->NewItem(This,psiDestinationFolder,dwFileAttributes,pszName,pszTemplateName,pfopsItem);
}
static inline HRESULT IFileOperation_PerformOperations(IFileOperation* This) {
    return This->lpVtbl->PerformOperations(This);
}
static inline HRESULT IFileOperation_GetAnyOperationsAborted(IFileOperation* This,WINBOOL *pfAnyOperationsAborted) {
    return This->lpVtbl->GetAnyOperationsAborted(This,pfAnyOperationsAborted);
}
#endif
#endif

#endif


#endif  /* __IFileOperation_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IObjectProvider interface
 */
#ifndef __IObjectProvider_INTERFACE_DEFINED__
#define __IObjectProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IObjectProvider, 0xa6087428, 0x3be3, 0x4d73, 0xb3,0x08, 0x7c,0x04,0xa5,0x40,0xbf,0x1a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a6087428-3be3-4d73-b308-7c04a540bf1a")
IObjectProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE QueryObject(
        REFGUID guidObject,
        REFIID riid,
        void **ppvOut) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IObjectProvider, 0xa6087428, 0x3be3, 0x4d73, 0xb3,0x08, 0x7c,0x04,0xa5,0x40,0xbf,0x1a)
#endif
#else
typedef struct IObjectProviderVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IObjectProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryObject)(
        IObjectProvider *This,
        REFGUID guidObject,
        REFIID riid,
        void **ppvOut);

    END_INTERFACE
} IObjectProviderVtbl;

interface IObjectProvider {
    CONST_VTBL IObjectProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IObjectProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IObjectProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IObjectProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IObjectProvider methods ***/
#define IObjectProvider_QueryObject(This,guidObject,riid,ppvOut) (This)->lpVtbl->QueryObject(This,guidObject,riid,ppvOut)
#else
/*** IUnknown methods ***/
static inline HRESULT IObjectProvider_QueryInterface(IObjectProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IObjectProvider_AddRef(IObjectProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IObjectProvider_Release(IObjectProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IObjectProvider methods ***/
static inline HRESULT IObjectProvider_QueryObject(IObjectProvider* This,REFGUID guidObject,REFIID riid,void **ppvOut) {
    return This->lpVtbl->QueryObject(This,guidObject,riid,ppvOut);
}
#endif
#endif

#endif


#endif  /* __IObjectProvider_INTERFACE_DEFINED__ */

#endif

/*****************************************************************************
 * INamespaceWalkCB interface
 */
#ifndef __INamespaceWalkCB_INTERFACE_DEFINED__
#define __INamespaceWalkCB_INTERFACE_DEFINED__

DEFINE_GUID(IID_INamespaceWalkCB, 0xd92995f8, 0xcf5e, 0x4a76, 0xbf,0x59, 0xea,0xd3,0x9e,0xa2,0xb9,0x7e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d92995f8-cf5e-4a76-bf59-ead39ea2b97e")
INamespaceWalkCB : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE FoundItem(
        IShellFolder *psf,
        PCUITEMID_CHILD pidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnterFolder(
        IShellFolder *psf,
        PCUITEMID_CHILD pidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE LeaveFolder(
        IShellFolder *psf,
        PCUITEMID_CHILD pidl) = 0;

    virtual HRESULT STDMETHODCALLTYPE InitializeProgressDialog(
        LPWSTR *ppszTitle,
        LPWSTR *ppszCancel) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INamespaceWalkCB, 0xd92995f8, 0xcf5e, 0x4a76, 0xbf,0x59, 0xea,0xd3,0x9e,0xa2,0xb9,0x7e)
#endif
#else
typedef struct INamespaceWalkCBVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INamespaceWalkCB methods ***/
    HRESULT (STDMETHODCALLTYPE *FoundItem)(
        INamespaceWalkCB *This,
        IShellFolder *psf,
        PCUITEMID_CHILD pidl);

    HRESULT (STDMETHODCALLTYPE *EnterFolder)(
        INamespaceWalkCB *This,
        IShellFolder *psf,
        PCUITEMID_CHILD pidl);

    HRESULT (STDMETHODCALLTYPE *LeaveFolder)(
        INamespaceWalkCB *This,
        IShellFolder *psf,
        PCUITEMID_CHILD pidl);

    HRESULT (STDMETHODCALLTYPE *InitializeProgressDialog)(
        INamespaceWalkCB *This,
        LPWSTR *ppszTitle,
        LPWSTR *ppszCancel);

    END_INTERFACE
} INamespaceWalkCBVtbl;

interface INamespaceWalkCB {
    CONST_VTBL INamespaceWalkCBVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define INamespaceWalkCB_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INamespaceWalkCB_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INamespaceWalkCB_Release(This) (This)->lpVtbl->Release(This)
/*** INamespaceWalkCB methods ***/
#define INamespaceWalkCB_FoundItem(This,psf,pidl) (This)->lpVtbl->FoundItem(This,psf,pidl)
#define INamespaceWalkCB_EnterFolder(This,psf,pidl) (This)->lpVtbl->EnterFolder(This,psf,pidl)
#define INamespaceWalkCB_LeaveFolder(This,psf,pidl) (This)->lpVtbl->LeaveFolder(This,psf,pidl)
#define INamespaceWalkCB_InitializeProgressDialog(This,ppszTitle,ppszCancel) (This)->lpVtbl->InitializeProgressDialog(This,ppszTitle,ppszCancel)
#else
/*** IUnknown methods ***/
static inline HRESULT INamespaceWalkCB_QueryInterface(INamespaceWalkCB* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG INamespaceWalkCB_AddRef(INamespaceWalkCB* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG INamespaceWalkCB_Release(INamespaceWalkCB* This) {
    return This->lpVtbl->Release(This);
}
/*** INamespaceWalkCB methods ***/
static inline HRESULT INamespaceWalkCB_FoundItem(INamespaceWalkCB* This,IShellFolder *psf,PCUITEMID_CHILD pidl) {
    return This->lpVtbl->FoundItem(This,psf,pidl);
}
static inline HRESULT INamespaceWalkCB_EnterFolder(INamespaceWalkCB* This,IShellFolder *psf,PCUITEMID_CHILD pidl) {
    return This->lpVtbl->EnterFolder(This,psf,pidl);
}
static inline HRESULT INamespaceWalkCB_LeaveFolder(INamespaceWalkCB* This,IShellFolder *psf,PCUITEMID_CHILD pidl) {
    return This->lpVtbl->LeaveFolder(This,psf,pidl);
}
static inline HRESULT INamespaceWalkCB_InitializeProgressDialog(INamespaceWalkCB* This,LPWSTR *ppszTitle,LPWSTR *ppszCancel) {
    return This->lpVtbl->InitializeProgressDialog(This,ppszTitle,ppszCancel);
}
#endif
#endif

#endif


#endif  /* __INamespaceWalkCB_INTERFACE_DEFINED__ */


#if _WIN32_IE >= _WIN32_IE_IE70
/*****************************************************************************
 * INamespaceWalkCB2 interface
 */
#ifndef __INamespaceWalkCB2_INTERFACE_DEFINED__
#define __INamespaceWalkCB2_INTERFACE_DEFINED__

DEFINE_GUID(IID_INamespaceWalkCB2, 0x7ac7492b, 0xc38e, 0x438a, 0x87,0xdb, 0x68,0x73,0x78,0x44,0xff,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7ac7492b-c38e-438a-87db-68737844ff70")
INamespaceWalkCB2 : public INamespaceWalkCB
{
    virtual HRESULT STDMETHODCALLTYPE WalkComplete(
        HRESULT hr) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INamespaceWalkCB2, 0x7ac7492b, 0xc38e, 0x438a, 0x87,0xdb, 0x68,0x73,0x78,0x44,0xff,0x70)
#endif
#else
typedef struct INamespaceWalkCB2Vtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INamespaceWalkCB methods ***/
    HRESULT (STDMETHODCALLTYPE *FoundItem)(
        INamespaceWalkCB2 *This,
        IShellFolder *psf,
        PCUITEMID_CHILD pidl);

    HRESULT (STDMETHODCALLTYPE *EnterFolder)(
        INamespaceWalkCB2 *This,
        IShellFolder *psf,
        PCUITEMID_CHILD pidl);

    HRESULT (STDMETHODCALLTYPE *LeaveFolder)(
        INamespaceWalkCB2 *This,
        IShellFolder *psf,
        PCUITEMID_CHILD pidl);

    HRESULT (STDMETHODCALLTYPE *InitializeProgressDialog)(
        INamespaceWalkCB2 *This,
        LPWSTR *ppszTitle,
        LPWSTR *ppszCancel);

    /*** INamespaceWalkCB2 methods ***/
    HRESULT (STDMETHODCALLTYPE *WalkComplete)(
        INamespaceWalkCB2 *This,
        HRESULT hr);

    END_INTERFACE
} INamespaceWalkCB2Vtbl;

interface INamespaceWalkCB2 {
    CONST_VTBL INamespaceWalkCB2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define INamespaceWalkCB2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INamespaceWalkCB2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INamespaceWalkCB2_Release(This) (This)->lpVtbl->Release(This)
/*** INamespaceWalkCB methods ***/
#define INamespaceWalkCB2_FoundItem(This,psf,pidl) (This)->lpVtbl->FoundItem(This,psf,pidl)
#define INamespaceWalkCB2_EnterFolder(This,psf,pidl) (This)->lpVtbl->EnterFolder(This,psf,pidl)
#define INamespaceWalkCB2_LeaveFolder(This,psf,pidl) (This)->lpVtbl->LeaveFolder(This,psf,pidl)
#define INamespaceWalkCB2_InitializeProgressDialog(This,ppszTitle,ppszCancel) (This)->lpVtbl->InitializeProgressDialog(This,ppszTitle,ppszCancel)
/*** INamespaceWalkCB2 methods ***/
#define INamespaceWalkCB2_WalkComplete(This,hr) (This)->lpVtbl->WalkComplete(This,hr)
#else
/*** IUnknown methods ***/
static inline HRESULT INamespaceWalkCB2_QueryInterface(INamespaceWalkCB2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG INamespaceWalkCB2_AddRef(INamespaceWalkCB2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG INamespaceWalkCB2_Release(INamespaceWalkCB2* This) {
    return This->lpVtbl->Release(This);
}
/*** INamespaceWalkCB methods ***/
static inline HRESULT INamespaceWalkCB2_FoundItem(INamespaceWalkCB2* This,IShellFolder *psf,PCUITEMID_CHILD pidl) {
    return This->lpVtbl->FoundItem(This,psf,pidl);
}
static inline HRESULT INamespaceWalkCB2_EnterFolder(INamespaceWalkCB2* This,IShellFolder *psf,PCUITEMID_CHILD pidl) {
    return This->lpVtbl->EnterFolder(This,psf,pidl);
}
static inline HRESULT INamespaceWalkCB2_LeaveFolder(INamespaceWalkCB2* This,IShellFolder *psf,PCUITEMID_CHILD pidl) {
    return This->lpVtbl->LeaveFolder(This,psf,pidl);
}
static inline HRESULT INamespaceWalkCB2_InitializeProgressDialog(INamespaceWalkCB2* This,LPWSTR *ppszTitle,LPWSTR *ppszCancel) {
    return This->lpVtbl->InitializeProgressDialog(This,ppszTitle,ppszCancel);
}
/*** INamespaceWalkCB2 methods ***/
static inline HRESULT INamespaceWalkCB2_WalkComplete(INamespaceWalkCB2* This,HRESULT hr) {
    return This->lpVtbl->WalkComplete(This,hr);
}
#endif
#endif

#endif


#endif  /* __INamespaceWalkCB2_INTERFACE_DEFINED__ */

#endif

/*****************************************************************************
 * INamespaceWalk interface
 */
#ifndef __INamespaceWalk_INTERFACE_DEFINED__
#define __INamespaceWalk_INTERFACE_DEFINED__

typedef enum NAMESPACEWALKFLAG {
    NSWF_DEFAULT = 0x0,
    NSWF_NONE_IMPLIES_ALL = 0x1,
    NSWF_ONE_IMPLIES_ALL = 0x2,
    NSWF_DONT_TRAVERSE_LINKS = 0x4,
    NSWF_DONT_ACCUMULATE_RESULT = 0x8,
    NSWF_TRAVERSE_STREAM_JUNCTIONS = 0x10,
    NSWF_FILESYSTEM_ONLY = 0x20,
    NSWF_SHOW_PROGRESS = 0x40,
    NSWF_FLAG_VIEWORDER = 0x80,
    NSWF_IGNORE_AUTOPLAY_HIDA = 0x100,
    NSWF_ASYNC = 0x200,
    NSWF_DONT_RESOLVE_LINKS = 0x400,
    NSWF_ACCUMULATE_FOLDERS = 0x800,
    NSWF_DONT_SORT = 0x1000,
    NSWF_USE_TRANSFER_MEDIUM = 0x2000,
    NSWF_DONT_TRAVERSE_STREAM_JUNCTIONS = 0x4000,
    NSWF_ANY_IMPLIES_ALL = 0x8000
} NAMESPACEWALKFLAG;

#define NSWF_ENUMERATE_BEST_EFFORT 0x00010000
#define NSWF_TRAVERSE_ONLY_STORAGE 0x00020000

DEFINE_ENUM_FLAG_OPERATORS(NAMESPACEWALKFLAG)

DEFINE_GUID(IID_INamespaceWalk, 0x57ced8a7, 0x3f4a, 0x432c, 0x93,0x50, 0x30,0xf2,0x44,0x83,0xf7,0x4f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("57ced8a7-3f4a-432c-9350-30f24483f74f")
INamespaceWalk : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Walk(
        IUnknown *punkToWalk,
        DWORD dwFlags,
        int cDepth,
        INamespaceWalkCB *pnswcb) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIDArrayResult(
        UINT *pcItems,
        PIDLIST_ABSOLUTE **prgpidl) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INamespaceWalk, 0x57ced8a7, 0x3f4a, 0x432c, 0x93,0x50, 0x30,0xf2,0x44,0x83,0xf7,0x4f)
#endif
#else
typedef struct INamespaceWalkVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INamespaceWalk methods ***/
    HRESULT (STDMETHODCALLTYPE *Walk)(
        INamespaceWalk *This,
        IUnknown *punkToWalk,
        DWORD dwFlags,
        int cDepth,
        INamespaceWalkCB *pnswcb);

    HRESULT (STDMETHODCALLTYPE *GetIDArrayResult)(
        INamespaceWalk *This,
        UINT *pcItems,
        PIDLIST_ABSOLUTE **prgpidl);

    END_INTERFACE
} INamespaceWalkVtbl;

interface INamespaceWalk {
    CONST_VTBL INamespaceWalkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define INamespaceWalk_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INamespaceWalk_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INamespaceWalk_Release(This) (This)->lpVtbl->Release(This)
/*** INamespaceWalk methods ***/
#define INamespaceWalk_Walk(This,punkToWalk,dwFlags,cDepth,pnswcb) (This)->lpVtbl->Walk(This,punkToWalk,dwFlags,cDepth,pnswcb)
#define INamespaceWalk_GetIDArrayResult(This,pcItems,prgpidl) (This)->lpVtbl->GetIDArrayResult(This,pcItems,prgpidl)
#else
/*** IUnknown methods ***/
static inline HRESULT INamespaceWalk_QueryInterface(INamespaceWalk* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG INamespaceWalk_AddRef(INamespaceWalk* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG INamespaceWalk_Release(INamespaceWalk* This) {
    return This->lpVtbl->Release(This);
}
/*** INamespaceWalk methods ***/
static inline HRESULT INamespaceWalk_Walk(INamespaceWalk* This,IUnknown *punkToWalk,DWORD dwFlags,int cDepth,INamespaceWalkCB *pnswcb) {
    return This->lpVtbl->Walk(This,punkToWalk,dwFlags,cDepth,pnswcb);
}
static inline HRESULT INamespaceWalk_GetIDArrayResult(INamespaceWalk* This,UINT *pcItems,PIDLIST_ABSOLUTE **prgpidl) {
    return This->lpVtbl->GetIDArrayResult(This,pcItems,prgpidl);
}
#endif
#endif

#endif


#endif  /* __INamespaceWalk_INTERFACE_DEFINED__ */


  __forceinline void FreeIDListArray(PIDLIST_RELATIVE *ppidls, UINT cItems) {
    UINT i;
    for (i = 0; i < cItems; i++) {
      CoTaskMemFree(ppidls[i]);
    }
    CoTaskMemFree(ppidls);
  }
#if defined(STRICT_TYPED_ITEMIDS) && defined(__cplusplus)
  __forceinline void FreeIDListArrayFull(PIDLIST_ABSOLUTE *ppidls, UINT cItems) {
    UINT i;
    for (i = 0; i < cItems; i++)
      CoTaskMemFree(ppidls[i]);
    CoTaskMemFree(ppidls);
  }
  __forceinline void FreeIDListArrayChild(PITEMID_CHILD *ppidls, UINT cItems) {
    UINT i;
    for (i = 0; i < cItems; i++)
      CoTaskMemFree(ppidls[i]);
    CoTaskMemFree(ppidls);
  }
#else
#define FreeIDListArrayFull FreeIDListArray
#define FreeIDListArrayChild FreeIDListArray
#endif

#define ACDD_VISIBLE 0x1

/*****************************************************************************
 * IAutoCompleteDropDown interface
 */
#ifndef __IAutoCompleteDropDown_INTERFACE_DEFINED__
#define __IAutoCompleteDropDown_INTERFACE_DEFINED__

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 inline HRESULT IAutoCompleteDropDown_QueryInterface(IAutoCompleteDropDown* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAutoCompleteDropDown_AddRef(IAutoCompleteDropDown* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAutoCompleteDropDown_Release(IAutoCompleteDropDown* This) {
    return This->lpVtbl->Release(This);
}
/*** IAutoCompleteDropDown methods ***/
static inline HRESULT IAutoCompleteDropDown_GetDropDownStatus(IAutoCompleteDropDown* This,DWORD *pdwFlags,LPWSTR *ppwszString) {
    return This->lpVtbl->GetDropDownStatus(This,pdwFlags,ppwszString);
}
static inline HRESULT IAutoCompleteDropDown_ResetEnumerator(IAutoCompleteDropDown* This) {
    return This->lpVtbl->ResetEnumerator(This);
}
#endif
#endif

#endif


#endif  /* __IAutoCompleteDropDown_INTERFACE_DEFINED__ */


#include <pshpack8.h>
typedef struct tagBANDSITEINFO {
    DWORD dwMask;
    DWORD dwState;
    DWORD dwStyle;
} BANDSITEINFO;
#include <poppack.h>
enum tagBANDSITECID {
    BSID_BANDADDED = 0,
    BSID_BANDREMOVED = 1
};

#define BSIM_STATE 0x00000001
#define BSIM_STYLE 0x00000002

#define BSSF_VISIBLE 0x00000001
#define BSSF_NOTITLE 0x00000002
#define BSSF_UNDELETEABLE 0x00001000

#define BSIS_AUTOGRIPPER 0x00000000
#define BSIS_NOGRIPPER 0x00000001
#define BSIS_ALWAYSGRIPPER 0x00000002
#define BSIS_LEFTALIGN 0x00000004
#define BSIS_SINGLECLICK 0x00000008
#define BSIS_NOCONTEXTMENU 0x00000010
#define BSIS_NODROPTARGET 0x00000020
#define BSIS_NOCAPTION 0x00000040
#define BSIS_PREFERNOLINEBREAK 0x00000080
#define BSIS_LOCKED 0x00000100
#if _WIN32_IE >= _WIN32_IE_IE70
#define BSIS_PRESERVEORDERDURINGLAYOUT 0x00000200
#define BSIS_FIXEDORDER 0x00000400
#endif

#define SID_SBandSite IID_IBandSite
#define CGID_BandSite IID_IBandSite

/*****************************************************************************
 * IBandSite interface
 */
#ifndef __IBandSite_INTERFACE_DEFINED__
#define __IBandSite_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBandSite, 0x4cf504b0, 0xde96, 0x11d0, 0x8b,0x3f, 0x00,0xa0,0xc9,0x11,0xe8,0xe5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4cf504b0-de96-11d0-8b3f-00a0c911e8e5")
IBandSite : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AddBand(
        IUnknown *punk) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumBands(
        UINT uBand,
        DWORD *pdwBandID) = 0;

    virtual HRESULT STDMETHODCALLTYPE QueryBand(
        DWORD dwBandID,
        IDeskBand **ppstb,
        DWORD *pdwState,
        LPWSTR pszName,
        int cchName) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBandState(
        DWORD dwBandID,
        DWORD dwMask,
        DWORD dwState) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveBand(
        DWORD dwBandID) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBandObject(
        DWORD dwBandID,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBandSiteInfo(
        const BANDSITEINFO *pbsinfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBandSiteInfo(
        BANDSITEINFO *pbsinfo) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBandSite, 0x4cf504b0, 0xde96, 0x11d0, 0x8b,0x3f, 0x00,0xa0,0xc9,0x11,0xe8,0xe5)
#endif
#else
typedef struct IBandSiteVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IBandSite methods ***/
    HRESULT (STDMETHODCALLTYPE *AddBand)(
        IBandSite *This,
        IUnknown *punk);

    HRESULT (STDMETHODCALLTYPE *EnumBands)(
        IBandSite *This,
        UINT uBand,
        DWORD *pdwBandID);

    HRESULT (STDMETHODCALLTYPE *QueryBand)(
        IBandSite *This,
        DWORD dwBandID,
        IDeskBand **ppstb,
        DWORD *pdwState,
        LPWSTR pszName,
        int cchName);

    HRESULT (STDMETHODCALLTYPE *SetBandState)(
        IBandSite *This,
        DWORD dwBandID,
        DWORD dwMask,
        DWORD dwState);

    HRESULT (STDMETHODCALLTYPE *RemoveBand)(
        IBandSite *This,
        DWORD dwBandID);

    HRESULT (STDMETHODCALLTYPE *GetBandObject)(
        IBandSite *This,
        DWORD dwBandID,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *SetBandSiteInfo)(
        IBandSite *This,
        const BANDSITEINFO *pbsinfo);

    HRESULT (STDMETHODCALLTYPE *GetBandSiteInfo)(
        IBandSite *This,
        BANDSITEINFO *pbsinfo);

    END_INTERFACE
} IBandSiteVtbl;

interface IBandSite {
    CONST_VTBL IBandSiteVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBandSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBandSite_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBandSite_Release(This) (This)->lpVtbl->Release(This)
/*** IBandSite methods ***/
#define IBandSite_AddBand(This,punk) (This)->lpVtbl->AddBand(This,punk)
#define IBandSite_EnumBands(This,uBand,pdwBandID) (This)->lpVtbl->EnumBands(This,uBand,pdwBandID)
#define IBandSite_QueryBand(This,dwBandID,ppstb,pdwState,pszName,cchName) (This)->lpVtbl->QueryBand(This,dwBandID,ppstb,pdwState,pszName,cchName)
#define IBandSite_SetBandState(This,dwBandID,dwMask,dwState) (This)->lpVtbl->SetBandState(This,dwBandID,dwMask,dwState)
#define IBandSite_RemoveBand(This,dwBandID) (This)->lpVtbl->RemoveBand(This,dwBandID)
#define IBandSite_GetBandObject(This,dwBandID,riid,ppv) (This)->lpVtbl->GetBandObject(This,dwBandID,riid,ppv)
#define IBandSite_SetBandSiteInfo(This,pbsinfo) (This)->lpVtbl->SetBandSiteInfo(This,pbsinfo)
#define IBandSite_GetBandSiteInfo(This,pbsinfo) (This)->lpVtbl->GetBandSiteInfo(This,pbsinfo)
#else
/*** IUnknown methods ***/
static inline HRESULT IBandSite_QueryInterface(IBandSite* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IBandSite_AddRef(IBandSite* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IBandSite_Release(IBandSite* This) {
    return This->lpVtbl->Release(This);
}
/*** IBandSite methods ***/
static inline HRESULT IBandSite_AddBand(IBandSite* This,IUnknown *punk) {
    return This->lpVtbl->AddBand(This,punk);
}
static inline HRESULT IBandSite_EnumBands(IBandSite* This,UINT uBand,DWORD *pdwBandID) {
    return This->lpVtbl->EnumBands(This,uBand,pdwBandID);
}
static inline HRESULT IBandSite_QueryBand(IBandSite* This,DWORD dwBandID,IDeskBand **ppstb,DWORD *pdwState,LPWSTR pszName,int cchName) {
    return This->lpVtbl->QueryBand(This,dwBandID,ppstb,pdwState,pszName,cchName);
}
static inline HRESULT IBandSite_SetBandState(IBandSite* This,DWORD dwBandID,DWORD dwMask,DWORD dwState) {
    return This->lpVtbl->SetBandState(This,dwBandID,dwMask,dwState);
}
static inline HRESULT IBandSite_RemoveBand(IBandSite* This,DWORD dwBandID) {
    return This->lpVtbl->RemoveBand(This,dwBandID);
}
static inline HRESULT IBandSite_GetBandObject(IBandSite* This,DWORD dwBandID,REFIID riid,void **ppv) {
    return This->lpVtbl->GetBandObject(This,dwBandID,riid,ppv);
}
static inline HRESULT IBandSite_SetBandSiteInfo(IBandSite* This,const BANDSITEINFO *pbsinfo) {
    return This->lpVtbl->SetBandSiteInfo(This,pbsinfo);
}
static inline HRESULT IBandSite_GetBandSiteInfo(IBandSite* This,BANDSITEINFO *pbsinfo) {
    return This->lpVtbl->GetBandSiteInfo(This,pbsinfo);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IBandSite_RemoteQueryBand_Proxy(
    IBandSite* This,
    DWORD dwBandID,
    IDeskBand **ppstb,
    DWORD *pdwState,
    LPWSTR pszName,
    int cchName);
void __RPC_STUB IBandSite_RemoteQueryBand_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IBandSite_QueryBand_Proxy(
    IBandSite* This,
    DWORD dwBandID,
    IDeskBand **ppstb,
    DWORD *pdwState,
    LPWSTR pszName,
    int cchName);
HRESULT __RPC_STUB IBandSite_QueryBand_Stub(
    IBandSite* This,
    DWORD dwBandID,
    IDeskBand **ppstb,
    DWORD *pdwState,
    LPWSTR pszName,
    int cchName);

#endif  /* __IBandSite_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 inline HRESULT IModalWindow_QueryInterface(IModalWindow* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IModalWindow_AddRef(IModalWindow* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IModalWindow_Release(IModalWindow* This) {
    return This->lpVtbl->Release(This);
}
/*** IModalWindow methods ***/
static inline 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__ */


#define PROPSTR_EXTENSIONCOMPLETIONSTATE L"ExtensionCompletionState"

enum tagCDBURNINGEXTENSIONRET {
    CDBE_RET_DEFAULT = 0x0,
    CDBE_RET_DONTRUNOTHEREXTS = 0x1,
    CDBE_RET_STOPWIZARD = 0x2
};

#define SID_CDWizardHost IID_ICDBurnExt

enum _CDBE_ACTIONS {
    CDBE_TYPE_MUSIC = 0x1,
    CDBE_TYPE_DATA = 0x2,
    CDBE_TYPE_ALL = (int)0xffffffff
};

typedef DWORD CDBE_ACTIONS;

/*****************************************************************************
 * ICDBurnExt interface
 */
#ifndef __ICDBurnExt_INTERFACE_DEFINED__
#define __ICDBurnExt_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICDBurnExt, 0x2271dcca, 0x74fc, 0x4414, 0x8f,0xb7, 0xc5,0x6b,0x05,0xac,0xe2,0xd7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2271dcca-74fc-4414-8fb7-c56b05ace2d7")
ICDBurnExt : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetSupportedActionTypes(
        CDBE_ACTIONS *pdwActions) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICDBurnExt, 0x2271dcca, 0x74fc, 0x4414, 0x8f,0xb7, 0xc5,0x6b,0x05,0xac,0xe2,0xd7)
#endif
#else
typedef struct ICDBurnExtVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ICDBurnExt methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSupportedActionTypes)(
        ICDBurnExt *This,
        CDBE_ACTIONS *pdwActions);

    END_INTERFACE
} ICDBurnExtVtbl;

interface ICDBurnExt {
    CONST_VTBL ICDBurnExtVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICDBurnExt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICDBurnExt_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICDBurnExt_Release(This) (This)->lpVtbl->Release(This)
/*** ICDBurnExt methods ***/
#define ICDBurnExt_GetSupportedActionTypes(This,pdwActions) (This)->lpVtbl->GetSupportedActionTypes(This,pdwActions)
#else
/*** IUnknown methods ***/
static inline HRESULT ICDBurnExt_QueryInterface(ICDBurnExt* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ICDBurnExt_AddRef(ICDBurnExt* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ICDBurnExt_Release(ICDBurnExt* This) {
    return This->lpVtbl->Release(This);
}
/*** ICDBurnExt methods ***/
static inline HRESULT ICDBurnExt_GetSupportedActionTypes(ICDBurnExt* This,CDBE_ACTIONS *pdwActions) {
    return This->lpVtbl->GetSupportedActionTypes(This,pdwActions);
}
#endif
#endif

#endif


#endif  /* __ICDBurnExt_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IContextMenuSite interface
 */
#ifndef __IContextMenuSite_INTERFACE_DEFINED__
#define __IContextMenuSite_INTERFACE_DEFINED__

DEFINE_GUID(IID_IContextMenuSite, 0x0811aebe, 0x0b87, 0x4c54, 0x9e,0x72, 0x54,0x8c,0xf6,0x49,0x01,0x6b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0811aebe-0b87-4c54-9e72-548cf649016b")
IContextMenuSite : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoContextMenuPopup(
        IUnknown *punkContextMenu,
        UINT fFlags,
        POINT pt) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IContextMenuSite, 0x0811aebe, 0x0b87, 0x4c54, 0x9e,0x72, 0x54,0x8c,0xf6,0x49,0x01,0x6b)
#endif
#else
typedef struct IContextMenuSiteVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IContextMenuSite methods ***/
    HRESULT (STDMETHODCALLTYPE *DoContextMenuPopup)(
        IContextMenuSite *This,
        IUnknown *punkContextMenu,
        UINT fFlags,
        POINT pt);

    END_INTERFACE
} IContextMenuSiteVtbl;

interface IContextMenuSite {
    CONST_VTBL IContextMenuSiteVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IContextMenuSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IContextMenuSite_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IContextMenuSite_Release(This) (This)->lpVtbl->Release(This)
/*** IContextMenuSite methods ***/
#define IContextMenuSite_DoContextMenuPopup(This,punkContextMenu,fFlags,pt) (This)->lpVtbl->DoContextMenuPopup(This,punkContextMenu,fFlags,pt)
#else
/*** IUnknown methods ***/
static inline HRESULT IContextMenuSite_QueryInterface(IContextMenuSite* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IContextMenuSite_AddRef(IContextMenuSite* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IContextMenuSite_Release(IContextMenuSite* This) {
    return This->lpVtbl->Release(This);
}
/*** IContextMenuSite methods ***/
static inline HRESULT IContextMenuSite_DoContextMenuPopup(IContextMenuSite* This,IUnknown *punkContextMenu,UINT fFlags,POINT pt) {
    return This->lpVtbl->DoContextMenuPopup(This,punkContextMenu,fFlags,pt);
}
#endif
#endif

#endif


#endif  /* __IContextMenuSite_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IEnumReadyCallback interface
 */
#ifndef __IEnumReadyCallback_INTERFACE_DEFINED__
#define __IEnumReadyCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumReadyCallback, 0x61e00d45, 0x8fff, 0x4e60, 0x92,0x4e, 0x65,0x37,0xb6,0x16,0x12,0xdd);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("61e00d45-8fff-4e60-924e-6537b61612dd")
IEnumReadyCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE EnumReady(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumReadyCallback, 0x61e00d45, 0x8fff, 0x4e60, 0x92,0x4e, 0x65,0x37,0xb6,0x16,0x12,0xdd)
#endif
#else
typedef struct IEnumReadyCallbackVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumReadyCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *EnumReady)(
        IEnumReadyCallback *This);

    END_INTERFACE
} IEnumReadyCallbackVtbl;

interface IEnumReadyCallback {
    CONST_VTBL IEnumReadyCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumReadyCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumReadyCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumReadyCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumReadyCallback methods ***/
#define IEnumReadyCallback_EnumReady(This) (This)->lpVtbl->EnumReady(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IEnumReadyCallback_QueryInterface(IEnumReadyCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IEnumReadyCallback_AddRef(IEnumReadyCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IEnumReadyCallback_Release(IEnumReadyCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumReadyCallback methods ***/
static inline HRESULT IEnumReadyCallback_EnumReady(IEnumReadyCallback* This) {
    return This->lpVtbl->EnumReady(This);
}
#endif
#endif

#endif


#endif  /* __IEnumReadyCallback_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IEnumerableView interface
 */
#ifndef __IEnumerableView_INTERFACE_DEFINED__
#define __IEnumerableView_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumerableView, 0x8c8bf236, 0x1aec, 0x495f, 0x98,0x94, 0x91,0xd5,0x7c,0x3c,0x68,0x6f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8c8bf236-1aec-495f-9894-91d57c3c686f")
IEnumerableView : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetEnumReadyCallback(
        IEnumReadyCallback *percb) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateEnumIDListFromContents(
        PCIDLIST_ABSOLUTE pidlFolder,
        DWORD dwEnumFlags,
        IEnumIDList **ppEnumIDList) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumerableView, 0x8c8bf236, 0x1aec, 0x495f, 0x98,0x94, 0x91,0xd5,0x7c,0x3c,0x68,0x6f)
#endif
#else
typedef struct IEnumerableViewVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumerableView methods ***/
    HRESULT (STDMETHODCALLTYPE *SetEnumReadyCallback)(
        IEnumerableView *This,
        IEnumReadyCallback *percb);

    HRESULT (STDMETHODCALLTYPE *CreateEnumIDListFromContents)(
        IEnumerableView *This,
        PCIDLIST_ABSOLUTE pidlFolder,
        DWORD dwEnumFlags,
        IEnumIDList **ppEnumIDList);

    END_INTERFACE
} IEnumerableViewVtbl;

interface IEnumerableView {
    CONST_VTBL IEnumerableViewVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumerableView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumerableView_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumerableView_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumerableView methods ***/
#define IEnumerableView_SetEnumReadyCallback(This,percb) (This)->lpVtbl->SetEnumReadyCallback(This,percb)
#define IEnumerableView_CreateEnumIDListFromContents(This,pidlFolder,dwEnumFlags,ppEnumIDList) (This)->lpVtbl->CreateEnumIDListFromContents(This,pidlFolder,dwEnumFlags,ppEnumIDList)
#else
/*** IUnknown methods ***/
static inline HRESULT IEnumerableView_QueryInterface(IEnumerableView* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IEnumerableView_AddRef(IEnumerableView* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IEnumerableView_Release(IEnumerableView* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumerableView methods ***/
static inline HRESULT IEnumerableView_SetEnumReadyCallback(IEnumerableView* This,IEnumReadyCallback *percb) {
    return This->lpVtbl->SetEnumReadyCallback(This,percb);
}
static inline HRESULT IEnumerableView_CreateEnumIDListFromContents(IEnumerableView* This,PCIDLIST_ABSOLUTE pidlFolder,DWORD dwEnumFlags,IEnumIDList **ppEnumIDList) {
    return This->lpVtbl->CreateEnumIDListFromContents(This,pidlFolder,dwEnumFlags,ppEnumIDList);
}
#endif
#endif

#endif


#endif  /* __IEnumerableView_INTERFACE_DEFINED__ */


#define SID_EnumerableView IID_IEnumerableView

/*****************************************************************************
 * IInsertItem interface
 */
#ifndef __IInsertItem_INTERFACE_DEFINED__
#define __IInsertItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInsertItem, 0xd2b57227, 0x3d23, 0x4b95, 0x93,0xc0, 0x49,0x2b,0xd4,0x54,0xc3,0x56);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d2b57227-3d23-4b95-93c0-492bd454c356")
IInsertItem : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE InsertItem(
        PCUIDLIST_RELATIVE pidl) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInsertItem, 0xd2b57227, 0x3d23, 0x4b95, 0x93,0xc0, 0x49,0x2b,0xd4,0x54,0xc3,0x56)
#endif
#else
typedef struct IInsertItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IInsertItem methods ***/
    HRESULT (STDMETHODCALLTYPE *InsertItem)(
        IInsertItem *This,
        PCUIDLIST_RELATIVE pidl);

    END_INTERFACE
} IInsertItemVtbl;

interface IInsertItem {
    CONST_VTBL IInsertItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInsertItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInsertItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInsertItem_Release(This) (This)->lpVtbl->Release(This)
/*** IInsertItem methods ***/
#define IInsertItem_InsertItem(This,pidl) (This)->lpVtbl->InsertItem(This,pidl)
#else
/*** IUnknown methods ***/
static inline HRESULT IInsertItem_QueryInterface(IInsertItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IInsertItem_AddRef(IInsertItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IInsertItem_Release(IInsertItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IInsertItem methods ***/
static inline HRESULT IInsertItem_InsertItem(IInsertItem* This,PCUIDLIST_RELATIVE pidl) {
    return This->lpVtbl->InsertItem(This,pidl);
}
#endif
#endif

#endif


#endif  /* __IInsertItem_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IMenuBand interface
 */
#ifndef __IMenuBand_INTERFACE_DEFINED__
#define __IMenuBand_INTERFACE_DEFINED__

enum tagMENUBANDHANDLERCID {
    MBHANDCID_PIDLSELECT = 0
};

DEFINE_GUID(IID_IMenuBand, 0x568804cd, 0xcbd7, 0x11d0, 0x98,0x16, 0x00,0xc0,0x4f,0xd9,0x19,0x72);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("568804cd-cbd7-11d0-9816-00c04fd91972")
IMenuBand : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE IsMenuMessage(
        MSG *pmsg) = 0;

    virtual HRESULT STDMETHODCALLTYPE TranslateMenuMessage(
        MSG *pmsg,
        LRESULT *plRet) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMenuBand, 0x568804cd, 0xcbd7, 0x11d0, 0x98,0x16, 0x00,0xc0,0x4f,0xd9,0x19,0x72)
#endif
#else
typedef struct IMenuBandVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IMenuBand methods ***/
    HRESULT (STDMETHODCALLTYPE *IsMenuMessage)(
        IMenuBand *This,
        MSG *pmsg);

    HRESULT (STDMETHODCALLTYPE *TranslateMenuMessage)(
        IMenuBand *This,
        MSG *pmsg,
        LRESULT *plRet);

    END_INTERFACE
} IMenuBandVtbl;

interface IMenuBand {
    CONST_VTBL IMenuBandVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IMenuBand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMenuBand_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMenuBand_Release(This) (This)->lpVtbl->Release(This)
/*** IMenuBand methods ***/
#define IMenuBand_IsMenuMessage(This,pmsg) (This)->lpVtbl->IsMenuMessage(This,pmsg)
#define IMenuBand_TranslateMenuMessage(This,pmsg,plRet) (This)->lpVtbl->TranslateMenuMessage(This,pmsg,plRet)
#else
/*** IUnknown methods ***/
static inline HRESULT IMenuBand_QueryInterface(IMenuBand* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IMenuBand_AddRef(IMenuBand* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IMenuBand_Release(IMenuBand* This) {
    return This->lpVtbl->Release(This);
}
/*** IMenuBand methods ***/
static inline HRESULT IMenuBand_IsMenuMessage(IMenuBand* This,MSG *pmsg) {
    return This->lpVtbl->IsMenuMessage(This,pmsg);
}
static inline HRESULT IMenuBand_TranslateMenuMessage(IMenuBand* This,MSG *pmsg,LRESULT *plRet) {
    return This->lpVtbl->TranslateMenuMessage(This,pmsg,plRet);
}
#endif
#endif

#endif


#endif  /* __IMenuBand_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IFolderBandPriv interface
 */
#ifndef __IFolderBandPriv_INTERFACE_DEFINED__
#define __IFolderBandPriv_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFolderBandPriv, 0x47c01f95, 0xe185, 0x412c, 0xb5,0xc5, 0x4f,0x27,0xdf,0x96,0x5a,0xea);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("47c01f95-e185-412c-b5c5-4f27df965aea")
IFolderBandPriv : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetCascade(
        WINBOOL fCascade) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAccelerators(
        WINBOOL fAccelerators) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNoIcons(
        WINBOOL fNoIcons) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNoText(
        WINBOOL fNoText) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFolderBandPriv, 0x47c01f95, 0xe185, 0x412c, 0xb5,0xc5, 0x4f,0x27,0xdf,0x96,0x5a,0xea)
#endif
#else
typedef struct IFolderBandPrivVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFolderBandPriv methods ***/
    HRESULT (STDMETHODCALLTYPE *SetCascade)(
        IFolderBandPriv *This,
        WINBOOL fCascade);

    HRESULT (STDMETHODCALLTYPE *SetAccelerators)(
        IFolderBandPriv *This,
        WINBOOL fAccelerators);

    HRESULT (STDMETHODCALLTYPE *SetNoIcons)(
        IFolderBandPriv *This,
        WINBOOL fNoIcons);

    HRESULT (STDMETHODCALLTYPE *SetNoText)(
        IFolderBandPriv *This,
        WINBOOL fNoText);

    END_INTERFACE
} IFolderBandPrivVtbl;

interface IFolderBandPriv {
    CONST_VTBL IFolderBandPrivVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFolderBandPriv_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFolderBandPriv_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFolderBandPriv_Release(This) (This)->lpVtbl->Release(This)
/*** IFolderBandPriv methods ***/
#define IFolderBandPriv_SetCascade(This,fCascade) (This)->lpVtbl->SetCascade(This,fCascade)
#define IFolderBandPriv_SetAccelerators(This,fAccelerators) (This)->lpVtbl->SetAccelerators(This,fAccelerators)
#define IFolderBandPriv_SetNoIcons(This,fNoIcons) (This)->lpVtbl->SetNoIcons(This,fNoIcons)
#define IFolderBandPriv_SetNoText(This,fNoText) (This)->lpVtbl->SetNoText(This,fNoText)
#else
/*** IUnknown methods ***/
static inline HRESULT IFolderBandPriv_QueryInterface(IFolderBandPriv* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFolderBandPriv_AddRef(IFolderBandPriv* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFolderBandPriv_Release(IFolderBandPriv* This) {
    return This->lpVtbl->Release(This);
}
/*** IFolderBandPriv methods ***/
static inline HRESULT IFolderBandPriv_SetCascade(IFolderBandPriv* This,WINBOOL fCascade) {
    return This->lpVtbl->SetCascade(This,fCascade);
}
static inline HRESULT IFolderBandPriv_SetAccelerators(IFolderBandPriv* This,WINBOOL fAccelerators) {
    return This->lpVtbl->SetAccelerators(This,fAccelerators);
}
static inline HRESULT IFolderBandPriv_SetNoIcons(IFolderBandPriv* This,WINBOOL fNoIcons) {
    return This->lpVtbl->SetNoIcons(This,fNoIcons);
}
static inline HRESULT IFolderBandPriv_SetNoText(IFolderBandPriv* This,WINBOOL fNoText) {
    return This->lpVtbl->SetNoText(This,fNoText);
}
#endif
#endif

#endif


#endif  /* __IFolderBandPriv_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IRegTreeItem interface
 */
#ifndef __IRegTreeItem_INTERFACE_DEFINED__
#define __IRegTreeItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRegTreeItem, 0xa9521922, 0x0812, 0x4d44, 0x9e,0xc3, 0x7f,0xd3,0x8c,0x72,0x6f,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a9521922-0812-4d44-9ec3-7fd38c726f3d")
IRegTreeItem : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCheckState(
        WINBOOL *pbCheck) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCheckState(
        WINBOOL bCheck) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRegTreeItem, 0xa9521922, 0x0812, 0x4d44, 0x9e,0xc3, 0x7f,0xd3,0x8c,0x72,0x6f,0x3d)
#endif
#else
typedef struct IRegTreeItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRegTreeItem methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCheckState)(
        IRegTreeItem *This,
        WINBOOL *pbCheck);

    HRESULT (STDMETHODCALLTYPE *SetCheckState)(
        IRegTreeItem *This,
        WINBOOL bCheck);

    END_INTERFACE
} IRegTreeItemVtbl;

interface IRegTreeItem {
    CONST_VTBL IRegTreeItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRegTreeItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRegTreeItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRegTreeItem_Release(This) (This)->lpVtbl->Release(This)
/*** IRegTreeItem methods ***/
#define IRegTreeItem_GetCheckState(This,pbCheck) (This)->lpVtbl->GetCheckState(This,pbCheck)
#define IRegTreeItem_SetCheckState(This,bCheck) (This)->lpVtbl->SetCheckState(This,bCheck)
#else
/*** IUnknown methods ***/
static inline HRESULT IRegTreeItem_QueryInterface(IRegTreeItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRegTreeItem_AddRef(IRegTreeItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRegTreeItem_Release(IRegTreeItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IRegTreeItem methods ***/
static inline HRESULT IRegTreeItem_GetCheckState(IRegTreeItem* This,WINBOOL *pbCheck) {
    return This->lpVtbl->GetCheckState(This,pbCheck);
}
static inline HRESULT IRegTreeItem_SetCheckState(IRegTreeItem* This,WINBOOL bCheck) {
    return This->lpVtbl->SetCheckState(This,bCheck);
}
#endif
#endif

#endif


#endif  /* __IRegTreeItem_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IImageRecompress interface
 */
#ifndef __IImageRecompress_INTERFACE_DEFINED__
#define __IImageRecompress_INTERFACE_DEFINED__

DEFINE_GUID(IID_IImageRecompress, 0x505f1513, 0x6b3e, 0x4892, 0xa2,0x72, 0x59,0xf8,0x88,0x9a,0x4d,0x3e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("505f1513-6b3e-4892-a272-59f8889a4d3e")
IImageRecompress : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE RecompressImage(
        IShellItem *psi,
        int cx,
        int cy,
        int iQuality,
        IStorage *pstg,
        IStream **ppstrmOut) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IImageRecompress, 0x505f1513, 0x6b3e, 0x4892, 0xa2,0x72, 0x59,0xf8,0x88,0x9a,0x4d,0x3e)
#endif
#else
typedef struct IImageRecompressVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IImageRecompress methods ***/
    HRESULT (STDMETHODCALLTYPE *RecompressImage)(
        IImageRecompress *This,
        IShellItem *psi,
        int cx,
        int cy,
        int iQuality,
        IStorage *pstg,
        IStream **ppstrmOut);

    END_INTERFACE
} IImageRecompressVtbl;

interface IImageRecompress {
    CONST_VTBL IImageRecompressVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IImageRecompress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IImageRecompress_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IImageRecompress_Release(This) (This)->lpVtbl->Release(This)
/*** IImageRecompress methods ***/
#define IImageRecompress_RecompressImage(This,psi,cx,cy,iQuality,pstg,ppstrmOut) (This)->lpVtbl->RecompressImage(This,psi,cx,cy,iQuality,pstg,ppstrmOut)
#else
/*** IUnknown methods ***/
static inline HRESULT IImageRecompress_QueryInterface(IImageRecompress* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IImageRecompress_AddRef(IImageRecompress* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IImageRecompress_Release(IImageRecompress* This) {
    return This->lpVtbl->Release(This);
}
/*** IImageRecompress methods ***/
static inline HRESULT IImageRecompress_RecompressImage(IImageRecompress* This,IShellItem *psi,int cx,int cy,int iQuality,IStorage *pstg,IStream **ppstrmOut) {
    return This->lpVtbl->RecompressImage(This,psi,cx,cy,iQuality,pstg,ppstrmOut);
}
#endif
#endif

#endif


#endif  /* __IImageRecompress_INTERFACE_DEFINED__ */


#if _WIN32_IE >= _WIN32_IE_IE60
/*****************************************************************************
 * IDeskBar interface
 */
#ifndef __IDeskBar_INTERFACE_DEFINED__
#define __IDeskBar_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeskBar, 0xeb0fe173, 0x1a3a, 0x11d0, 0x89,0xb3, 0x00,0xa0,0xc9,0x0a,0x90,0xac);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("eb0fe173-1a3a-11d0-89b3-00a0c90a90ac")
IDeskBar : public IOleWindow
{
    virtual HRESULT STDMETHODCALLTYPE SetClient(
        IUnknown *punkClient) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetClient(
        IUnknown **ppunkClient) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnPosRectChangeDB(
        RECT *prc) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeskBar, 0xeb0fe173, 0x1a3a, 0x11d0, 0x89,0xb3, 0x00,0xa0,0xc9,0x0a,0x90,0xac)
#endif
#else
typedef struct IDeskBarVtbl {
    BEGIN_INTERFACE

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
        IDeskBar *This,
        WINBOOL fEnterMode);

    /*** IDeskBar methods ***/
    HRESULT (STDMETHODCALLTYPE *SetClient)(
        IDeskBar *This,
        IUnknown *punkClient);

    HRESULT (STDMETHODCALLTYPE *GetClient)(
        IDeskBar *This,
        IUnknown **ppunkClient);

    HRESULT (STDMETHODCALLTYPE *OnPosRectChangeDB)(
        IDeskBar *This,
        RECT *prc);

    END_INTERFACE
} IDeskBarVtbl;

interface IDeskBar {
    CONST_VTBL IDeskBarVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeskBar_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeskBar_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeskBar_Release(This) (This)->lpVtbl->Release(This)
/*** IOleWindow methods ***/
#define IDeskBar_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
#define IDeskBar_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
/*** IDeskBar methods ***/
#define IDeskBar_SetClient(This,punkClient) (This)->lpVtbl->SetClient(This,punkClient)
#define IDeskBar_GetClient(This,ppunkClient) (This)->lpVtbl->GetClient(This,ppunkClient)
#define IDeskBar_OnPosRectChangeDB(This,prc) (This)->lpVtbl->OnPosRectChangeDB(This,prc)
#else
/*** IUnknown methods ***/
static inline HRESULT IDeskBar_QueryInterface(IDeskBar* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDeskBar_AddRef(IDeskBar* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDeskBar_Release(IDeskBar* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static inline HRESULT IDeskBar_GetWindow(IDeskBar* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static inline HRESULT IDeskBar_ContextSensitiveHelp(IDeskBar* This,WINBOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IDeskBar methods ***/
static inline HRESULT IDeskBar_SetClient(IDeskBar* This,IUnknown *punkClient) {
    return This->lpVtbl->SetClient(This,punkClient);
}
static inline HRESULT IDeskBar_GetClient(IDeskBar* This,IUnknown **ppunkClient) {
    return This->lpVtbl->GetClient(This,ppunkClient);
}
static inline HRESULT IDeskBar_OnPosRectChangeDB(IDeskBar* This,RECT *prc) {
    return This->lpVtbl->OnPosRectChangeDB(This,prc);
}
#endif
#endif

#endif


#endif  /* __IDeskBar_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IMenuPopup interface
 */
#ifndef __IMenuPopup_INTERFACE_DEFINED__
#define __IMenuPopup_INTERFACE_DEFINED__

enum tagMENUPOPUPSELECT {
    MPOS_EXECUTE = 0,
    MPOS_FULLCANCEL = 1,
    MPOS_CANCELLEVEL = 2,
    MPOS_SELECTLEFT = 3,
    MPOS_SELECTRIGHT = 4,
    MPOS_CHILDTRACKING = 5
};

enum tagMENUPOPUPPOPUPFLAGS {
    MPPF_SETFOCUS = 0x1,
    MPPF_INITIALSELECT = 0x2,
    MPPF_NOANIMATE = 0x4,
    MPPF_KEYBOARD = 0x10,
    MPPF_REPOSITION = 0x20,
    MPPF_FORCEZORDER = 0x40,
    MPPF_FINALSELECT = 0x80,
    MPPF_TOP = 0x20000000,
    MPPF_LEFT = 0x40000000,
    MPPF_RIGHT = 0x60000000,
    MPPF_BOTTOM = (int)0x80000000,
    MPPF_POS_MASK = (int)0xe0000000,
    MPPF_ALIGN_LEFT = 0x2000000,
    MPPF_ALIGN_RIGHT = 0x4000000
};

typedef int MP_POPUPFLAGS;

DEFINE_GUID(IID_IMenuPopup, 0xd1e7afeb, 0x6a2e, 0x11d0, 0x8c,0x78, 0x00,0xc0,0x4f,0xd9,0x18,0xb4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d1e7afeb-6a2e-11d0-8c78-00c04fd918b4")
IMenuPopup : public IDeskBar
{
    virtual HRESULT STDMETHODCALLTYPE Popup(
        POINTL *ppt,
        RECTL *prcExclude,
        MP_POPUPFLAGS dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnSelect(
        DWORD dwSelectType) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSubMenu(
        IMenuPopup *pmp,
        WINBOOL fSet) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IMenuPopup, 0xd1e7afeb, 0x6a2e, 0x11d0, 0x8c,0x78, 0x00,0xc0,0x4f,0xd9,0x18,0xb4)
#endif
#else
typedef struct IMenuPopupVtbl {
    BEGIN_INTERFACE

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *ContextSensitiveHelp)(
        IMenuPopup *This,
        WINBOOL fEnterMode);

    /*** IDeskBar methods ***/
    HRESULT (STDMETHODCALLTYPE *SetClient)(
        IMenuPopup *This,
        IUnknown *punkClient);

    HRESULT (STDMETHODCALLTYPE *GetClient)(
        IMenuPopup *This,
        IUnknown **ppunkClient);

    HRESULT (STDMETHODCALLTYPE *OnPosRectChangeDB)(
        IMenuPopup *This,
        RECT *prc);

    /*** IMenuPopup methods ***/
    HRESULT (STDMETHODCALLTYPE *Popup)(
        IMenuPopup *This,
        POINTL *ppt,
        RECTL *prcExclude,
        MP_POPUPFLAGS dwFlags);

    HRESULT (STDMETHODCALLTYPE *OnSelect)(
        IMenuPopup *This,
        DWORD dwSelectType);

    HRESULT (STDMETHODCALLTYPE *SetSubMenu)(
        IMenuPopup *This,
        IMenuPopup *pmp,
        WINBOOL fSet);

    END_INTERFACE
} IMenuPopupVtbl;

interface IMenuPopup {
    CONST_VTBL IMenuPopupVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IMenuPopup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IMenuPopup_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IMenuPopup_Release(This) (This)->lpVtbl->Release(This)
/*** IOleWindow methods ***/
#define IMenuPopup_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
#define IMenuPopup_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
/*** IDeskBar methods ***/
#define IMenuPopup_SetClient(This,punkClient) (This)->lpVtbl->SetClient(This,punkClient)
#define IMenuPopup_GetClient(This,ppunkClient) (This)->lpVtbl->GetClient(This,ppunkClient)
#define IMenuPopup_OnPosRectChangeDB(This,prc) (This)->lpVtbl->OnPosRectChangeDB(This,prc)
/*** IMenuPopup methods ***/
#define IMenuPopup_Popup(This,ppt,prcExclude,dwFlags) (This)->lpVtbl->Popup(This,ppt,prcExclude,dwFlags)
#define IMenuPopup_OnSelect(This,dwSelectType) (This)->lpVtbl->OnSelect(This,dwSelectType)
#define IMenuPopup_SetSubMenu(This,pmp,fSet) (This)->lpVtbl->SetSubMenu(This,pmp,fSet)
#else
/*** IUnknown methods ***/
static inline HRESULT IMenuPopup_QueryInterface(IMenuPopup* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IMenuPopup_AddRef(IMenuPopup* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IMenuPopup_Release(IMenuPopup* This) {
    return This->lpVtbl->Release(This);
}
/*** IOleWindow methods ***/
static inline HRESULT IMenuPopup_GetWindow(IMenuPopup* This,HWND *phwnd) {
    return This->lpVtbl->GetWindow(This,phwnd);
}
static inline HRESULT IMenuPopup_ContextSensitiveHelp(IMenuPopup* This,WINBOOL fEnterMode) {
    return This->lpVtbl->ContextSensitiveHelp(This,fEnterMode);
}
/*** IDeskBar methods ***/
static inline HRESULT IMenuPopup_SetClient(IMenuPopup* This,IUnknown *punkClient) {
    return This->lpVtbl->SetClient(This,punkClient);
}
static inline HRESULT IMenuPopup_GetClient(IMenuPopup* This,IUnknown **ppunkClient) {
    return This->lpVtbl->GetClient(This,ppunkClient);
}
static inline HRESULT IMenuPopup_OnPosRectChangeDB(IMenuPopup* This,RECT *prc) {
    return This->lpVtbl->OnPosRectChangeDB(This,prc);
}
/*** IMenuPopup methods ***/
static inline HRESULT IMenuPopup_Popup(IMenuPopup* This,POINTL *ppt,RECTL *prcExclude,MP_POPUPFLAGS dwFlags) {
    return This->lpVtbl->Popup(This,ppt,prcExclude,dwFlags);
}
static inline HRESULT IMenuPopup_OnSelect(IMenuPopup* This,DWORD dwSelectType) {
    return This->lpVtbl->OnSelect(This,dwSelectType);
}
static inline HRESULT IMenuPopup_SetSubMenu(IMenuPopup* This,IMenuPopup *pmp,WINBOOL fSet) {
    return This->lpVtbl->SetSubMenu(This,pmp,fSet);
}
#endif
#endif

#endif


#endif  /* __IMenuPopup_INTERFACE_DEFINED__ */

#endif

#if NTDDI_VERSION >= NTDDI_VISTA
typedef enum FILE_USAGE_TYPE {
    FUT_PLAYING = 0,
    FUT_EDITING = 1,
    FUT_GENERIC = 2
} FILE_USAGE_TYPE;

#define OF_CAP_CANSWITCHTO 0x0001
#define OF_CAP_CANCLOSE 0x0002

/*****************************************************************************
 * IFileIsInUse interface
 */
#ifndef __IFileIsInUse_INTERFACE_DEFINED__
#define __IFileIsInUse_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFileIsInUse, 0x64a1cbf0, 0x3a1a, 0x4461, 0x91,0x58, 0x37,0x69,0x69,0x69,0x39,0x50);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("64a1cbf0-3a1a-4461-9158-376969693950")
IFileIsInUse : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetAppName(
        LPWSTR *ppszName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetUsage(
        FILE_USAGE_TYPE *pfut) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCapabilities(
        DWORD *pdwCapFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSwitchToHWND(
        HWND *phwnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE CloseFile(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFileIsInUse, 0x64a1cbf0, 0x3a1a, 0x4461, 0x91,0x58, 0x37,0x69,0x69,0x69,0x39,0x50)
#endif
#else
typedef struct IFileIsInUseVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFileIsInUse methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAppName)(
        IFileIsInUse *This,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetUsage)(
        IFileIsInUse *This,
        FILE_USAGE_TYPE *pfut);

    HRESULT (STDMETHODCALLTYPE *GetCapabilities)(
        IFileIsInUse *This,
        DWORD *pdwCapFlags);

    HRESULT (STDMETHODCALLTYPE *GetSwitchToHWND)(
        IFileIsInUse *This,
        HWND *phwnd);

    HRESULT (STDMETHODCALLTYPE *CloseFile)(
        IFileIsInUse *This);

    END_INTERFACE
} IFileIsInUseVtbl;

interface IFileIsInUse {
    CONST_VTBL IFileIsInUseVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFileIsInUse_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileIsInUse_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileIsInUse_Release(This) (This)->lpVtbl->Release(This)
/*** IFileIsInUse methods ***/
#define IFileIsInUse_GetAppName(This,ppszName) (This)->lpVtbl->GetAppName(This,ppszName)
#define IFileIsInUse_GetUsage(This,pfut) (This)->lpVtbl->GetUsage(This,pfut)
#define IFileIsInUse_GetCapabilities(This,pdwCapFlags) (This)->lpVtbl->GetCapabilities(This,pdwCapFlags)
#define IFileIsInUse_GetSwitchToHWND(This,phwnd) (This)->lpVtbl->GetSwitchToHWND(This,phwnd)
#define IFileIsInUse_CloseFile(This) (This)->lpVtbl->CloseFile(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IFileIsInUse_QueryInterface(IFileIsInUse* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFileIsInUse_AddRef(IFileIsInUse* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFileIsInUse_Release(IFileIsInUse* This) {
    return This->lpVtbl->Release(This);
}
/*** IFileIsInUse methods ***/
static inline HRESULT IFileIsInUse_GetAppName(IFileIsInUse* This,LPWSTR *ppszName) {
    return This->lpVtbl->GetAppName(This,ppszName);
}
static inline HRESULT IFileIsInUse_GetUsage(IFileIsInUse* This,FILE_USAGE_TYPE *pfut) {
    return This->lpVtbl->GetUsage(This,pfut);
}
static inline HRESULT IFileIsInUse_GetCapabilities(IFileIsInUse* This,DWORD *pdwCapFlags) {
    return This->lpVtbl->GetCapabilities(This,pdwCapFlags);
}
static inline HRESULT IFileIsInUse_GetSwitchToHWND(IFileIsInUse* This,HWND *phwnd) {
    return This->lpVtbl->GetSwitchToHWND(This,phwnd);
}
static inline HRESULT IFileIsInUse_CloseFile(IFileIsInUse* This) {
    return This->lpVtbl->CloseFile(This);
}
#endif
#endif

#endif


#endif  /* __IFileIsInUse_INTERFACE_DEFINED__ */


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

typedef enum FDAP {
    FDAP_BOTTOM = 0,
    FDAP_TOP = 1
} FDAP;

/*****************************************************************************
 * 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 inline HRESULT IFileDialogEvents_QueryInterface(IFileDialogEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFileDialogEvents_AddRef(IFileDialogEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFileDialogEvents_Release(IFileDialogEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** IFileDialogEvents methods ***/
static inline HRESULT IFileDialogEvents_OnFileOk(IFileDialogEvents* This,IFileDialog *pfd) {
    return This->lpVtbl->OnFileOk(This,pfd);
}
static inline HRESULT IFileDialogEvents_OnFolderChanging(IFileDialogEvents* This,IFileDialog *pfd,IShellItem *psiFolder) {
    return This->lpVtbl->OnFolderChanging(This,pfd,psiFolder);
}
static inline HRESULT IFileDialogEvents_OnFolderChange(IFileDialogEvents* This,IFileDialog *pfd) {
    return This->lpVtbl->OnFolderChange(This,pfd);
}
static inline HRESULT IFileDialogEvents_OnSelectionChange(IFileDialogEvents* This,IFileDialog *pfd) {
    return This->lpVtbl->OnSelectionChange(This,pfd);
}
static inline HRESULT IFileDialogEvents_OnShareViolation(IFileDialogEvents* This,IFileDialog *pfd,IShellItem *psi,FDE_SHAREVIOLATION_RESPONSE *pResponse) {
    return This->lpVtbl->OnShareViolation(This,pfd,psi,pResponse);
}
static inline HRESULT IFileDialogEvents_OnTypeChange(IFileDialogEvents* This,IFileDialog *pfd) {
    return This->lpVtbl->OnTypeChange(This,pfd);
}
static inline 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__ */


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


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

#endif


#endif  /* __IFileDialog_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,
        WINBOOL 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,
        WINBOOL 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 inline HRESULT IFileSaveDialog_QueryInterface(IFileSaveDialog* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFileSaveDialog_AddRef(IFileSaveDialog* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFileSaveDialog_Release(IFileSaveDialog* This) {
    return This->lpVtbl->Release(This);
}
/*** IModalWindow methods ***/
static inline HRESULT IFileSaveDialog_Show(IFileSaveDialog* This,HWND hwndOwner) {
    return This->lpVtbl->Show(This,hwndOwner);
}
/*** IFileDialog methods ***/
static inline HRESULT IFileSaveDialog_SetFileTypes(IFileSaveDialog* This,UINT cFileTypes,const COMDLG_FILTERSPEC *rgFilterSpec) {
    return This->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec);
}
static inline HRESULT IFileSaveDialog_SetFileTypeIndex(IFileSaveDialog* This,UINT iFileType) {
    return This->lpVtbl->SetFileTypeIndex(This,iFileType);
}
static inline HRESULT IFileSaveDialog_GetFileTypeIndex(IFileSaveDialog* This,UINT *piFileType) {
    return This->lpVtbl->GetFileTypeIndex(This,piFileType);
}
static inline HRESULT IFileSaveDialog_Advise(IFileSaveDialog* This,IFileDialogEvents *pfde,DWORD *pdwCookie) {
    return This->lpVtbl->Advise(This,pfde,pdwCookie);
}
static inline HRESULT IFileSaveDialog_Unadvise(IFileSaveDialog* This,DWORD dwCookie) {
    return This->lpVtbl->Unadvise(This,dwCookie);
}
static inline HRESULT IFileSaveDialog_SetOptions(IFileSaveDialog* This,FILEOPENDIALOGOPTIONS fos) {
    return This->lpVtbl->SetOptions(This,fos);
}
static inline HRESULT IFileSaveDialog_GetOptions(IFileSaveDialog* This,FILEOPENDIALOGOPTIONS *pfos) {
    return This->lpVtbl->GetOptions(This,pfos);
}
static inline HRESULT IFileSaveDialog_SetDefaultFolder(IFileSaveDialog* This,IShellItem *psi) {
    return This->lpVtbl->SetDefaultFolder(This,psi);
}
static inline HRESULT IFileSaveDialog_SetFolder(IFileSaveDialog* This,IShellItem *psi) {
    return This->lpVtbl->SetFolder(This,psi);
}
static inline HRESULT IFileSaveDialog_GetFolder(IFileSaveDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetFolder(This,ppsi);
}
static inline HRESULT IFileSaveDialog_GetCurrentSelection(IFileSaveDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetCurrentSelection(This,ppsi);
}
static inline HRESULT IFileSaveDialog_SetFileName(IFileSaveDialog* This,LPCWSTR pszName) {
    return This->lpVtbl->SetFileName(This,pszName);
}
static inline HRESULT IFileSaveDialog_GetFileName(IFileSaveDialog* This,LPWSTR *pszName) {
    return This->lpVtbl->GetFileName(This,pszName);
}
static inline HRESULT IFileSaveDialog_SetTitle(IFileSaveDialog* This,LPCWSTR pszTitle) {
    return This->lpVtbl->SetTitle(This,pszTitle);
}
static inline HRESULT IFileSaveDialog_SetOkButtonLabel(IFileSaveDialog* This,LPCWSTR pszText) {
    return This->lpVtbl->SetOkButtonLabel(This,pszText);
}
static inline HRESULT IFileSaveDialog_SetFileNameLabel(IFileSaveDialog* This,LPCWSTR pszLabel) {
    return This->lpVtbl->SetFileNameLabel(This,pszLabel);
}
static inline HRESULT IFileSaveDialog_GetResult(IFileSaveDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetResult(This,ppsi);
}
static inline HRESULT IFileSaveDialog_AddPlace(IFileSaveDialog* This,IShellItem *psi,FDAP fdap) {
    return This->lpVtbl->AddPlace(This,psi,fdap);
}
static inline HRESULT IFileSaveDialog_SetDefaultExtension(IFileSaveDialog* This,LPCWSTR pszDefaultExtension) {
    return This->lpVtbl->SetDefaultExtension(This,pszDefaultExtension);
}
static inline HRESULT IFileSaveDialog_Close(IFileSaveDialog* This,HRESULT hr) {
    return This->lpVtbl->Close(This,hr);
}
static inline HRESULT IFileSaveDialog_SetClientGuid(IFileSaveDialog* This,REFGUID guid) {
    return This->lpVtbl->SetClientGuid(This,guid);
}
static inline HRESULT IFileSaveDialog_ClearClientData(IFileSaveDialog* This) {
    return This->lpVtbl->ClearClientData(This);
}
static inline HRESULT IFileSaveDialog_SetFilter(IFileSaveDialog* This,IShellItemFilter *pFilter) {
    return This->lpVtbl->SetFilter(This,pFilter);
}
/*** IFileSaveDialog methods ***/
static inline HRESULT IFileSaveDialog_SetSaveAsItem(IFileSaveDialog* This,IShellItem *psi) {
    return This->lpVtbl->SetSaveAsItem(This,psi);
}
static inline HRESULT IFileSaveDialog_SetProperties(IFileSaveDialog* This,IPropertyStore *pStore) {
    return This->lpVtbl->SetProperties(This,pStore);
}
static inline HRESULT IFileSaveDialog_SetCollectedProperties(IFileSaveDialog* This,IPropertyDescriptionList *pList,WINBOOL fAppendDefault) {
    return This->lpVtbl->SetCollectedProperties(This,pList,fAppendDefault);
}
static inline HRESULT IFileSaveDialog_GetProperties(IFileSaveDialog* This,IPropertyStore **ppStore) {
    return This->lpVtbl->GetProperties(This,ppStore);
}
static inline 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 inline HRESULT IFileOpenDialog_QueryInterface(IFileOpenDialog* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFileOpenDialog_AddRef(IFileOpenDialog* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFileOpenDialog_Release(IFileOpenDialog* This) {
    return This->lpVtbl->Release(This);
}
/*** IModalWindow methods ***/
static inline HRESULT IFileOpenDialog_Show(IFileOpenDialog* This,HWND hwndOwner) {
    return This->lpVtbl->Show(This,hwndOwner);
}
/*** IFileDialog methods ***/
static inline HRESULT IFileOpenDialog_SetFileTypes(IFileOpenDialog* This,UINT cFileTypes,const COMDLG_FILTERSPEC *rgFilterSpec) {
    return This->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec);
}
static inline HRESULT IFileOpenDialog_SetFileTypeIndex(IFileOpenDialog* This,UINT iFileType) {
    return This->lpVtbl->SetFileTypeIndex(This,iFileType);
}
static inline HRESULT IFileOpenDialog_GetFileTypeIndex(IFileOpenDialog* This,UINT *piFileType) {
    return This->lpVtbl->GetFileTypeIndex(This,piFileType);
}
static inline HRESULT IFileOpenDialog_Advise(IFileOpenDialog* This,IFileDialogEvents *pfde,DWORD *pdwCookie) {
    return This->lpVtbl->Advise(This,pfde,pdwCookie);
}
static inline HRESULT IFileOpenDialog_Unadvise(IFileOpenDialog* This,DWORD dwCookie) {
    return This->lpVtbl->Unadvise(This,dwCookie);
}
static inline HRESULT IFileOpenDialog_SetOptions(IFileOpenDialog* This,FILEOPENDIALOGOPTIONS fos) {
    return This->lpVtbl->SetOptions(This,fos);
}
static inline HRESULT IFileOpenDialog_GetOptions(IFileOpenDialog* This,FILEOPENDIALOGOPTIONS *pfos) {
    return This->lpVtbl->GetOptions(This,pfos);
}
static inline HRESULT IFileOpenDialog_SetDefaultFolder(IFileOpenDialog* This,IShellItem *psi) {
    return This->lpVtbl->SetDefaultFolder(This,psi);
}
static inline HRESULT IFileOpenDialog_SetFolder(IFileOpenDialog* This,IShellItem *psi) {
    return This->lpVtbl->SetFolder(This,psi);
}
static inline HRESULT IFileOpenDialog_GetFolder(IFileOpenDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetFolder(This,ppsi);
}
static inline HRESULT IFileOpenDialog_GetCurrentSelection(IFileOpenDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetCurrentSelection(This,ppsi);
}
static inline HRESULT IFileOpenDialog_SetFileName(IFileOpenDialog* This,LPCWSTR pszName) {
    return This->lpVtbl->SetFileName(This,pszName);
}
static inline HRESULT IFileOpenDialog_GetFileName(IFileOpenDialog* This,LPWSTR *pszName) {
    return This->lpVtbl->GetFileName(This,pszName);
}
static inline HRESULT IFileOpenDialog_SetTitle(IFileOpenDialog* This,LPCWSTR pszTitle) {
    return This->lpVtbl->SetTitle(This,pszTitle);
}
static inline HRESULT IFileOpenDialog_SetOkButtonLabel(IFileOpenDialog* This,LPCWSTR pszText) {
    return This->lpVtbl->SetOkButtonLabel(This,pszText);
}
static inline HRESULT IFileOpenDialog_SetFileNameLabel(IFileOpenDialog* This,LPCWSTR pszLabel) {
    return This->lpVtbl->SetFileNameLabel(This,pszLabel);
}
static inline HRESULT IFileOpenDialog_GetResult(IFileOpenDialog* This,IShellItem **ppsi) {
    return This->lpVtbl->GetResult(This,ppsi);
}
static inline HRESULT IFileOpenDialog_AddPlace(IFileOpenDialog* This,IShellItem *psi,FDAP fdap) {
    return This->lpVtbl->AddPlace(This,psi,fdap);
}
static inline HRESULT IFileOpenDialog_SetDefaultExtension(IFileOpenDialog* This,LPCWSTR pszDefaultExtension) {
    return This->lpVtbl->SetDefaultExtension(This,pszDefaultExtension);
}
static inline HRESULT IFileOpenDialog_Close(IFileOpenDialog* This,HRESULT hr) {
    return This->lpVtbl->Close(This,hr);
}
static inline HRESULT IFileOpenDialog_SetClientGuid(IFileOpenDialog* This,REFGUID guid) {
    return This->lpVtbl->SetClientGuid(This,guid);
}
static inline HRESULT IFileOpenDialog_ClearClientData(IFileOpenDialog* This) {
    return This->lpVtbl->ClearClientData(This);
}
static inline HRESULT IFileOpenDialog_SetFilter(IFileOpenDialog* This,IShellItemFilter *pFilter) {
    return This->lpVtbl->SetFilter(This,pFilter);
}
/*** IFileOpenDialog methods ***/
static inline HRESULT IFileOpenDialog_GetResults(IFileOpenDialog* This,IShellItemArray **ppenum) {
    return This->lpVtbl->GetResults(This,ppenum);
}
static inline 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,
        WINBOOL 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,
        WINBOOL *pbChecked) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCheckButtonState(
        DWORD dwIDCtl,
        WINBOOL 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,
        WINBOOL 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,
        WINBOOL *pbChecked);

    HRESULT (STDMETHODCALLTYPE *SetCheckButtonState)(
        IFileDialogCustomize *This,
        DWORD dwIDCtl,
        WINBOOL 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 inline HRESULT IFileDialogCustomize_QueryInterface(IFileDialogCustomize* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFileDialogCustomize_AddRef(IFileDialogCustomize* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFileDialogCustomize_Release(IFileDialogCustomize* This) {
    return This->lpVtbl->Release(This);
}
/*** IFileDialogCustomize methods ***/
static inline HRESULT IFileDialogCustomize_EnableOpenDropDown(IFileDialogCustomize* This,DWORD dwIDCtl) {
    return This->lpVtbl->EnableOpenDropDown(This,dwIDCtl);
}
static inline HRESULT IFileDialogCustomize_AddMenu(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszLabel) {
    return This->lpVtbl->AddMenu(This,dwIDCtl,pszLabel);
}
static inline HRESULT IFileDialogCustomize_AddPushButton(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszLabel) {
    return This->lpVtbl->AddPushButton(This,dwIDCtl,pszLabel);
}
static inline HRESULT IFileDialogCustomize_AddComboBox(IFileDialogCustomize* This,DWORD dwIDCtl) {
    return This->lpVtbl->AddComboBox(This,dwIDCtl);
}
static inline HRESULT IFileDialogCustomize_AddRadioButtonList(IFileDialogCustomize* This,DWORD dwIDCtl) {
    return This->lpVtbl->AddRadioButtonList(This,dwIDCtl);
}
static inline HRESULT IFileDialogCustomize_AddCheckButton(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszLabel,WINBOOL bChecked) {
    return This->lpVtbl->AddCheckButton(This,dwIDCtl,pszLabel,bChecked);
}
static inline HRESULT IFileDialogCustomize_AddEditBox(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszText) {
    return This->lpVtbl->AddEditBox(This,dwIDCtl,pszText);
}
static inline HRESULT IFileDialogCustomize_AddSeparator(IFileDialogCustomize* This,DWORD dwIDCtl) {
    return This->lpVtbl->AddSeparator(This,dwIDCtl);
}
static inline HRESULT IFileDialogCustomize_AddText(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszText) {
    return This->lpVtbl->AddText(This,dwIDCtl,pszText);
}
static inline HRESULT IFileDialogCustomize_SetControlLabel(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszLabel) {
    return This->lpVtbl->SetControlLabel(This,dwIDCtl,pszLabel);
}
static inline HRESULT IFileDialogCustomize_GetControlState(IFileDialogCustomize* This,DWORD dwIDCtl,CDCONTROLSTATEF *pdwState) {
    return This->lpVtbl->GetControlState(This,dwIDCtl,pdwState);
}
static inline HRESULT IFileDialogCustomize_SetControlState(IFileDialogCustomize* This,DWORD dwIDCtl,CDCONTROLSTATEF dwState) {
    return This->lpVtbl->SetControlState(This,dwIDCtl,dwState);
}
static inline HRESULT IFileDialogCustomize_GetEditBoxText(IFileDialogCustomize* This,DWORD dwIDCtl,WCHAR **ppszText) {
    return This->lpVtbl->GetEditBoxText(This,dwIDCtl,ppszText);
}
static inline HRESULT IFileDialogCustomize_SetEditBoxText(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszText) {
    return This->lpVtbl->SetEditBoxText(This,dwIDCtl,pszText);
}
static inline HRESULT IFileDialogCustomize_GetCheckButtonState(IFileDialogCustomize* This,DWORD dwIDCtl,WINBOOL *pbChecked) {
    return This->lpVtbl->GetCheckButtonState(This,dwIDCtl,pbChecked);
}
static inline HRESULT IFileDialogCustomize_SetCheckButtonState(IFileDialogCustomize* This,DWORD dwIDCtl,WINBOOL bChecked) {
    return This->lpVtbl->SetCheckButtonState(This,dwIDCtl,bChecked);
}
static inline HRESULT IFileDialogCustomize_AddControlItem(IFileDialogCustomize* This,DWORD dwIDCtl,DWORD dwIDItem,LPCWSTR pszLabel) {
    return This->lpVtbl->AddControlItem(This,dwIDCtl,dwIDItem,pszLabel);
}
static inline HRESULT IFileDialogCustomize_RemoveControlItem(IFileDialogCustomize* This,DWORD dwIDCtl,DWORD dwIDItem) {
    return This->lpVtbl->RemoveControlItem(This,dwIDCtl,dwIDItem);
}
static inline HRESULT IFileDialogCustomize_RemoveAllControlItems(IFileDialogCustomize* This,DWORD dwIDCtl) {
    return This->lpVtbl->RemoveAllControlItems(This,dwIDCtl);
}
static inline HRESULT IFileDialogCustomize_GetControlItemState(IFileDialogCustomize* This,DWORD dwIDCtl,DWORD dwIDItem,CDCONTROLSTATEF *pdwState) {
    return This->lpVtbl->GetControlItemState(This,dwIDCtl,dwIDItem,pdwState);
}
static inline HRESULT IFileDialogCustomize_SetControlItemState(IFileDialogCustomize* This,DWORD dwIDCtl,DWORD dwIDItem,CDCONTROLSTATEF dwState) {
    return This->lpVtbl->SetControlItemState(This,dwIDCtl,dwIDItem,dwState);
}
static inline HRESULT IFileDialogCustomize_GetSelectedControlItem(IFileDialogCustomize* This,DWORD dwIDCtl,DWORD *pdwIDItem) {
    return This->lpVtbl->GetSelectedControlItem(This,dwIDCtl,pdwIDItem);
}
static inline HRESULT IFileDialogCustomize_SetSelectedControlItem(IFileDialogCustomize* This,DWORD dwIDCtl,DWORD dwIDItem) {
    return This->lpVtbl->SetSelectedControlItem(This,dwIDCtl,dwIDItem);
}
static inline HRESULT IFileDialogCustomize_StartVisualGroup(IFileDialogCustomize* This,DWORD dwIDCtl,LPCWSTR pszLabel) {
    return This->lpVtbl->StartVisualGroup(This,dwIDCtl,pszLabel);
}
static inline HRESULT IFileDialogCustomize_EndVisualGroup(IFileDialogCustomize* This) {
    return This->lpVtbl->EndVisualGroup(This);
}
static inline HRESULT IFileDialogCustomize_MakeProminent(IFileDialogCustomize* This,DWORD dwIDCtl) {
    return This->lpVtbl->MakeProminent(This,dwIDCtl);
}
static inline 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,
        WINBOOL 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,
        WINBOOL 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 inline HRESULT IFileDialogControlEvents_QueryInterface(IFileDialogControlEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFileDialogControlEvents_AddRef(IFileDialogControlEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFileDialogControlEvents_Release(IFileDialogControlEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** IFileDialogControlEvents methods ***/
static inline HRESULT IFileDialogControlEvents_OnItemSelected(IFileDialogControlEvents* This,IFileDialogCustomize *pfdc,DWORD dwIDCtl,DWORD dwIDItem) {
    return This->lpVtbl->OnItemSelected(This,pfdc,dwIDCtl,dwIDItem);
}
static inline HRESULT IFileDialogControlEvents_OnButtonClicked(IFileDialogControlEvents* This,IFileDialogCustomize *pfdc,DWORD dwIDCtl) {
    return This->lpVtbl->OnButtonClicked(This,pfdc,dwIDCtl);
}
static inline HRESULT IFileDialogControlEvents_OnCheckButtonToggled(IFileDialogControlEvents* This,IFileDialogCustomize *pfdc,DWORD dwIDCtl,WINBOOL bChecked) {
    return This->lpVtbl->OnCheckButtonToggled(This,pfdc,dwIDCtl,bChecked);
}
static inline HRESULT IFileDialogControlEvents_OnControlActivating(IFileDialogControlEvents* This,IFileDialogCustomize *pfdc,DWORD dwIDCtl) {
    return This->lpVtbl->OnControlActivating(This,pfdc,dwIDCtl);
}
#endif
#endif

#endif


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

#endif


#endif  /* __IFileDialog2_INTERFACE_DEFINED__ */


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,
        WINBOOL *pfDefault) = 0;

    virtual HRESULT STDMETHODCALLTYPE QueryAppIsDefaultAll(
        ASSOCIATIONLEVEL alQueryLevel,
        LPCWSTR pszAppRegistryName,
        WINBOOL *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,
        WINBOOL *pfDefault);

    HRESULT (STDMETHODCALLTYPE *QueryAppIsDefaultAll)(
        IApplicationAssociationRegistration *This,
        ASSOCIATIONLEVEL alQueryLevel,
        LPCWSTR pszAppRegistryName,
        WINBOOL *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 inline HRESULT IApplicationAssociationRegistration_QueryInterface(IApplicationAssociationRegistration* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IApplicationAssociationRegistration_AddRef(IApplicationAssociationRegistration* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IApplicationAssociationRegistration_Release(IApplicationAssociationRegistration* This) {
    return This->lpVtbl->Release(This);
}
/*** IApplicationAssociationRegistration methods ***/
static inline HRESULT IApplicationAssociationRegistration_QueryCurrentDefault(IApplicationAssociationRegistration* This,LPCWSTR pszQuery,ASSOCIATIONTYPE atQueryType,ASSOCIATIONLEVEL alQueryLevel,LPWSTR *ppszAssociation) {
    return This->lpVtbl->QueryCurrentDefault(This,pszQuery,atQueryType,alQueryLevel,ppszAssociation);
}
static inline HRESULT IApplicationAssociationRegistration_QueryAppIsDefault(IApplicationAssociationRegistration* This,LPCWSTR pszQuery,ASSOCIATIONTYPE atQueryType,ASSOCIATIONLEVEL alQueryLevel,LPCWSTR pszAppRegistryName,WINBOOL *pfDefault) {
    return This->lpVtbl->QueryAppIsDefault(This,pszQuery,atQueryType,alQueryLevel,pszAppRegistryName,pfDefault);
}
static inline HRESULT IApplicationAssociationRegistration_QueryAppIsDefaultAll(IApplicationAssociationRegistration* This,ASSOCIATIONLEVEL alQueryLevel,LPCWSTR pszAppRegistryName,WINBOOL *pfDefault) {
    return This->lpVtbl->QueryAppIsDefaultAll(This,alQueryLevel,pszAppRegistryName,pfDefault);
}
static inline HRESULT IApplicationAssociationRegistration_SetAppAsDefault(IApplicationAssociationRegistration* This,LPCWSTR pszAppRegistryName,LPCWSTR pszSet,ASSOCIATIONTYPE atSetType) {
    return This->lpVtbl->SetAppAsDefault(This,pszAppRegistryName,pszSet,atSetType);
}
static inline HRESULT IApplicationAssociationRegistration_SetAppAsDefaultAll(IApplicationAssociationRegistration* This,LPCWSTR pszAppRegistryName) {
    return This->lpVtbl->SetAppAsDefaultAll(This,pszAppRegistryName);
}
static inline HRESULT IApplicationAssociationRegistration_ClearUserAssociations(IApplicationAssociationRegistration* This) {
    return This->lpVtbl->ClearUserAssociations(This);
}
#endif
#endif

#endif


#endif  /* __IApplicationAssociationRegistration_INTERFACE_DEFINED__ */


SHSTDAPI SHCreateAssociationRegistration(REFIID riid, void **ppv);

/*****************************************************************************
 * IApplicationAssociationRegistrationUI interface
 */
#ifndef __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__
#define __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__

DEFINE_GUID(IID_IApplicationAssociationRegistrationUI, 0x1f76a169, 0xf994, 0x40ac, 0x8f,0xc8, 0x09,0x59,0xe8,0x87,0x47,0x10);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1f76a169-f994-40ac-8fc8-0959e8874710")
IApplicationAssociationRegistrationUI : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE LaunchAdvancedAssociationUI(
        LPCWSTR pszAppRegistryName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IApplicationAssociationRegistrationUI, 0x1f76a169, 0xf994, 0x40ac, 0x8f,0xc8, 0x09,0x59,0xe8,0x87,0x47,0x10)
#endif
#else
typedef struct IApplicationAssociationRegistrationUIVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IApplicationAssociationRegistrationUI methods ***/
    HRESULT (STDMETHODCALLTYPE *LaunchAdvancedAssociationUI)(
        IApplicationAssociationRegistrationUI *This,
        LPCWSTR pszAppRegistryName);

    END_INTERFACE
} IApplicationAssociationRegistrationUIVtbl;

interface IApplicationAssociationRegistrationUI {
    CONST_VTBL IApplicationAssociationRegistrationUIVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IApplicationAssociationRegistrationUI_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IApplicationAssociationRegistrationUI_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IApplicationAssociationRegistrationUI_Release(This) (This)->lpVtbl->Release(This)
/*** IApplicationAssociationRegistrationUI methods ***/
#define IApplicationAssociationRegistrationUI_LaunchAdvancedAssociationUI(This,pszAppRegistryName) (This)->lpVtbl->LaunchAdvancedAssociationUI(This,pszAppRegistryName)
#else
/*** IUnknown methods ***/
static inline HRESULT IApplicationAssociationRegistrationUI_QueryInterface(IApplicationAssociationRegistrationUI* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IApplicationAssociationRegistrationUI_AddRef(IApplicationAssociationRegistrationUI* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IApplicationAssociationRegistrationUI_Release(IApplicationAssociationRegistrationUI* This) {
    return This->lpVtbl->Release(This);
}
/*** IApplicationAssociationRegistrationUI methods ***/
static inline HRESULT IApplicationAssociationRegistrationUI_LaunchAdvancedAssociationUI(IApplicationAssociationRegistrationUI* This,LPCWSTR pszAppRegistryName) {
    return This->lpVtbl->LaunchAdvancedAssociationUI(This,pszAppRegistryName);
}
#endif
#endif

#endif


#endif  /* __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__ */

#endif

#include <pshpack1.h>
typedef struct DELEGATEITEMID {
    WORD cbSize;
    WORD wOuter;
    WORD cbInner;
    BYTE rgb[1];
} DELEGATEITEMID;
#include <poppack.h>

typedef const UNALIGNED DELEGATEITEMID *PCDELEGATEITEMID;
typedef UNALIGNED DELEGATEITEMID *PDELEGATEITEMID;

/*****************************************************************************
 * IDelegateFolder interface
 */
#ifndef __IDelegateFolder_INTERFACE_DEFINED__
#define __IDelegateFolder_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDelegateFolder, 0xadd8ba80, 0x002b, 0x11d0, 0x8f,0x0f, 0x00,0xc0,0x4f,0xd7,0xd0,0x62);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("add8ba80-002b-11d0-8f0f-00c04fd7d062")
IDelegateFolder : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetItemAlloc(
        IMalloc *pmalloc) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDelegateFolder, 0xadd8ba80, 0x002b, 0x11d0, 0x8f,0x0f, 0x00,0xc0,0x4f,0xd7,0xd0,0x62)
#endif
#else
typedef struct IDelegateFolderVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDelegateFolder methods ***/
    HRESULT (STDMETHODCALLTYPE *SetItemAlloc)(
        IDelegateFolder *This,
        IMalloc *pmalloc);

    END_INTERFACE
} IDelegateFolderVtbl;

interface IDelegateFolder {
    CONST_VTBL IDelegateFolderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDelegateFolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDelegateFolder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDelegateFolder_Release(This) (This)->lpVtbl->Release(This)
/*** IDelegateFolder methods ***/
#define IDelegateFolder_SetItemAlloc(This,pmalloc) (This)->lpVtbl->SetItemAlloc(This,pmalloc)
#else
/*** IUnknown methods ***/
static inline HRESULT IDelegateFolder_QueryInterface(IDelegateFolder* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDelegateFolder_AddRef(IDelegateFolder* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDelegateFolder_Release(IDelegateFolder* This) {
    return This->lpVtbl->Release(This);
}
/*** IDelegateFolder methods ***/
static inline HRESULT IDelegateFolder_SetItemAlloc(IDelegateFolder* This,IMalloc *pmalloc) {
    return This->lpVtbl->SetItemAlloc(This,pmalloc);
}
#endif
#endif

#endif


#endif  /* __IDelegateFolder_INTERFACE_DEFINED__ */


#if _WIN32_IE >= _WIN32_IE_IE60
/*****************************************************************************
 * IBrowserFrameOptions interface
 */
#ifndef __IBrowserFrameOptions_INTERFACE_DEFINED__
#define __IBrowserFrameOptions_INTERFACE_DEFINED__

typedef IBrowserFrameOptions *LPBROWSERFRAMEOPTIONS;

enum _BROWSERFRAMEOPTIONS {
    BFO_NONE = 0x0,
    BFO_BROWSER_PERSIST_SETTINGS = 0x1,
    BFO_RENAME_FOLDER_OPTIONS_TOINTERNET = 0x2,
    BFO_BOTH_OPTIONS = 0x4,
    BIF_PREFER_INTERNET_SHORTCUT = 0x8,
    BFO_BROWSE_NO_IN_NEW_PROCESS = 0x10,
    BFO_ENABLE_HYPERLINK_TRACKING = 0x20,
    BFO_USE_IE_OFFLINE_SUPPORT = 0x40,
    BFO_SUBSTITUE_INTERNET_START_PAGE = 0x80,
    BFO_USE_IE_LOGOBANDING = 0x100,
    BFO_ADD_IE_TOCAPTIONBAR = 0x200,
    BFO_USE_DIALUP_REF = 0x400,
    BFO_USE_IE_TOOLBAR = 0x800,
    BFO_NO_PARENT_FOLDER_SUPPORT = 0x1000,
    BFO_NO_REOPEN_NEXT_RESTART = 0x2000,
    BFO_GO_HOME_PAGE = 0x4000,
    BFO_PREFER_IEPROCESS = 0x8000,
    BFO_SHOW_NAVIGATION_CANCELLED = 0x10000,
    BFO_USE_IE_STATUSBAR = 0x20000,
    BFO_QUERY_ALL = (int)0xffffffff
};

typedef DWORD BROWSERFRAMEOPTIONS;

DEFINE_GUID(IID_IBrowserFrameOptions, 0x10df43c8, 0x1dbe, 0x11d3, 0x8b,0x34, 0x00,0x60,0x97,0xdf,0x5b,0xd4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("10df43c8-1dbe-11d3-8b34-006097df5bd4")
IBrowserFrameOptions : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetFrameOptions(
        BROWSERFRAMEOPTIONS dwMask,
        BROWSERFRAMEOPTIONS *pdwOptions) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBrowserFrameOptions, 0x10df43c8, 0x1dbe, 0x11d3, 0x8b,0x34, 0x00,0x60,0x97,0xdf,0x5b,0xd4)
#endif
#else
typedef struct IBrowserFrameOptionsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IBrowserFrameOptions methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFrameOptions)(
        IBrowserFrameOptions *This,
        BROWSERFRAMEOPTIONS dwMask,
        BROWSERFRAMEOPTIONS *pdwOptions);

    END_INTERFACE
} IBrowserFrameOptionsVtbl;

interface IBrowserFrameOptions {
    CONST_VTBL IBrowserFrameOptionsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBrowserFrameOptions_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBrowserFrameOptions_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBrowserFrameOptions_Release(This) (This)->lpVtbl->Release(This)
/*** IBrowserFrameOptions methods ***/
#define IBrowserFrameOptions_GetFrameOptions(This,dwMask,pdwOptions) (This)->lpVtbl->GetFrameOptions(This,dwMask,pdwOptions)
#else
/*** IUnknown methods ***/
static inline HRESULT IBrowserFrameOptions_QueryInterface(IBrowserFrameOptions* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IBrowserFrameOptions_AddRef(IBrowserFrameOptions* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IBrowserFrameOptions_Release(IBrowserFrameOptions* This) {
    return This->lpVtbl->Release(This);
}
/*** IBrowserFrameOptions methods ***/
static inline HRESULT IBrowserFrameOptions_GetFrameOptions(IBrowserFrameOptions* This,BROWSERFRAMEOPTIONS dwMask,BROWSERFRAMEOPTIONS *pdwOptions) {
    return This->lpVtbl->GetFrameOptions(This,dwMask,pdwOptions);
}
#endif
#endif

#endif


#endif  /* __IBrowserFrameOptions_INTERFACE_DEFINED__ */

#endif

#if _WIN32_IE >= _WIN32_IE_IE60SP2
typedef enum NWMF {
    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;

DEFINE_ENUM_FLAG_OPERATORS(NWMF)

#define SID_SNewWindowManager IID_INewWindowManager

/*****************************************************************************
 * 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,
        WINBOOL 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,
        WINBOOL 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 inline HRESULT INewWindowManager_QueryInterface(INewWindowManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG INewWindowManager_AddRef(INewWindowManager* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG INewWindowManager_Release(INewWindowManager* This) {
    return This->lpVtbl->Release(This);
}
/*** INewWindowManager methods ***/
static inline HRESULT INewWindowManager_EvaluateNewWindow(INewWindowManager* This,LPCWSTR pszUrl,LPCWSTR pszName,LPCWSTR pszUrlContext,LPCWSTR pszFeatures,WINBOOL fReplace,DWORD dwFlags,DWORD dwUserActionTime) {
    return This->lpVtbl->EvaluateNewWindow(This,pszUrl,pszName,pszUrlContext,pszFeatures,fReplace,dwFlags,dwUserActionTime);
}
#endif
#endif

#endif


#endif  /* __INewWindowManager_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IAttachmentExecute interface
 */
#ifndef __IAttachmentExecute_INTERFACE_DEFINED__
#define __IAttachmentExecute_INTERFACE_DEFINED__

typedef enum ATTACHMENT_PROMPT {
    ATTACHMENT_PROMPT_NONE = 0x0,
    ATTACHMENT_PROMPT_SAVE = 0x1,
    ATTACHMENT_PROMPT_EXEC = 0x2,
    ATTACHMENT_PROMPT_EXEC_OR_SAVE = 0x3
} ATTACHMENT_PROMPT;

typedef enum ATTACHMENT_ACTION {
    ATTACHMENT_ACTION_CANCEL = 0x0,
    ATTACHMENT_ACTION_SAVE = 0x1,
    ATTACHMENT_ACTION_EXEC = 0x2
} ATTACHMENT_ACTION;

DEFINE_GUID(IID_IAttachmentExecute, 0x73db1241, 0x1e85, 0x4581, 0x8e,0x4f, 0xa8,0x1e,0x1d,0x0f,0x8c,0x57);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("73db1241-1e85-4581-8e4f-a81e1d0f8c57")
IAttachmentExecute : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetClientTitle(
        LPCWSTR pszTitle) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetClientGuid(
        REFGUID guid) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetLocalPath(
        LPCWSTR pszLocalPath) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFileName(
        LPCWSTR pszFileName) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSource(
        LPCWSTR pszSource) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetReferrer(
        LPCWSTR pszReferrer) = 0;

    virtual HRESULT STDMETHODCALLTYPE CheckPolicy(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Prompt(
        HWND hwnd,
        ATTACHMENT_PROMPT prompt,
        ATTACHMENT_ACTION *paction) = 0;

    virtual HRESULT STDMETHODCALLTYPE Save(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Execute(
        HWND hwnd,
        LPCWSTR pszVerb,
        HANDLE *phProcess) = 0;

    virtual HRESULT STDMETHODCALLTYPE SaveWithUI(
        HWND hwnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE ClearClientState(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAttachmentExecute, 0x73db1241, 0x1e85, 0x4581, 0x8e,0x4f, 0xa8,0x1e,0x1d,0x0f,0x8c,0x57)
#endif
#else
typedef struct IAttachmentExecuteVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAttachmentExecute methods ***/
    HRESULT (STDMETHODCALLTYPE *SetClientTitle)(
        IAttachmentExecute *This,
        LPCWSTR pszTitle);

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

    HRESULT (STDMETHODCALLTYPE *SetLocalPath)(
        IAttachmentExecute *This,
        LPCWSTR pszLocalPath);

    HRESULT (STDMETHODCALLTYPE *SetFileName)(
        IAttachmentExecute *This,
        LPCWSTR pszFileName);

    HRESULT (STDMETHODCALLTYPE *SetSource)(
        IAttachmentExecute *This,
        LPCWSTR pszSource);

    HRESULT (STDMETHODCALLTYPE *SetReferrer)(
        IAttachmentExecute *This,
        LPCWSTR pszReferrer);

    HRESULT (STDMETHODCALLTYPE *CheckPolicy)(
        IAttachmentExecute *This);

    HRESULT (STDMETHODCALLTYPE *Prompt)(
        IAttachmentExecute *This,
        HWND hwnd,
        ATTACHMENT_PROMPT prompt,
        ATTACHMENT_ACTION *paction);

    HRESULT (STDMETHODCALLTYPE *Save)(
        IAttachmentExecute *This);

    HRESULT (STDMETHODCALLTYPE *Execute)(
        IAttachmentExecute *This,
        HWND hwnd,
        LPCWSTR pszVerb,
        HANDLE *phProcess);

    HRESULT (STDMETHODCALLTYPE *SaveWithUI)(
        IAttachmentExecute *This,
        HWND hwnd);

    HRESULT (STDMETHODCALLTYPE *ClearClientState)(
        IAttachmentExecute *This);

    END_INTERFACE
} IAttachmentExecuteVtbl;

interface IAttachmentExecute {
    CONST_VTBL IAttachmentExecuteVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAttachmentExecute_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAttachmentExecute_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAttachmentExecute_Release(This) (This)->lpVtbl->Release(This)
/*** IAttachmentExecute methods ***/
#define IAttachmentExecute_SetClientTitle(This,pszTitle) (This)->lpVtbl->SetClientTitle(This,pszTitle)
#define IAttachmentExecute_SetClientGuid(This,guid) (This)->lpVtbl->SetClientGuid(This,guid)
#define IAttachmentExecute_SetLocalPath(This,pszLocalPath) (This)->lpVtbl->SetLocalPath(This,pszLocalPath)
#define IAttachmentExecute_SetFileName(This,pszFileName) (This)->lpVtbl->SetFileName(This,pszFileName)
#define IAttachmentExecute_SetSource(This,pszSource) (This)->lpVtbl->SetSource(This,pszSource)
#define IAttachmentExecute_SetReferrer(This,pszReferrer) (This)->lpVtbl->SetReferrer(This,pszReferrer)
#define IAttachmentExecute_CheckPolicy(This) (This)->lpVtbl->CheckPolicy(This)
#define IAttachmentExecute_Prompt(This,hwnd,prompt,paction) (This)->lpVtbl->Prompt(This,hwnd,prompt,paction)
#define IAttachmentExecute_Save(This) (This)->lpVtbl->Save(This)
#define IAttachmentExecute_Execute(This,hwnd,pszVerb,phProcess) (This)->lpVtbl->Execute(This,hwnd,pszVerb,phProcess)
#define IAttachmentExecute_SaveWithUI(This,hwnd) (This)->lpVtbl->SaveWithUI(This,hwnd)
#define IAttachmentExecute_ClearClientState(This) (This)->lpVtbl->ClearClientState(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IAttachmentExecute_QueryInterface(IAttachmentExecute* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAttachmentExecute_AddRef(IAttachmentExecute* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAttachmentExecute_Release(IAttachmentExecute* This) {
    return This->lpVtbl->Release(This);
}
/*** IAttachmentExecute methods ***/
static inline HRESULT IAttachmentExecute_SetClientTitle(IAttachmentExecute* This,LPCWSTR pszTitle) {
    return This->lpVtbl->SetClientTitle(This,pszTitle);
}
static inline HRESULT IAttachmentExecute_SetClientGuid(IAttachmentExecute* This,REFGUID guid) {
    return This->lpVtbl->SetClientGuid(This,guid);
}
static inline HRESULT IAttachmentExecute_SetLocalPath(IAttachmentExecute* This,LPCWSTR pszLocalPath) {
    return This->lpVtbl->SetLocalPath(This,pszLocalPath);
}
static inline HRESULT IAttachmentExecute_SetFileName(IAttachmentExecute* This,LPCWSTR pszFileName) {
    return This->lpVtbl->SetFileName(This,pszFileName);
}
static inline HRESULT IAttachmentExecute_SetSource(IAttachmentExecute* This,LPCWSTR pszSource) {
    return This->lpVtbl->SetSource(This,pszSource);
}
static inline HRESULT IAttachmentExecute_SetReferrer(IAttachmentExecute* This,LPCWSTR pszReferrer) {
    return This->lpVtbl->SetReferrer(This,pszReferrer);
}
static inline HRESULT IAttachmentExecute_CheckPolicy(IAttachmentExecute* This) {
    return This->lpVtbl->CheckPolicy(This);
}
static inline HRESULT IAttachmentExecute_Prompt(IAttachmentExecute* This,HWND hwnd,ATTACHMENT_PROMPT prompt,ATTACHMENT_ACTION *paction) {
    return This->lpVtbl->Prompt(This,hwnd,prompt,paction);
}
static inline HRESULT IAttachmentExecute_Save(IAttachmentExecute* This) {
    return This->lpVtbl->Save(This);
}
static inline HRESULT IAttachmentExecute_Execute(IAttachmentExecute* This,HWND hwnd,LPCWSTR pszVerb,HANDLE *phProcess) {
    return This->lpVtbl->Execute(This,hwnd,pszVerb,phProcess);
}
static inline HRESULT IAttachmentExecute_SaveWithUI(IAttachmentExecute* This,HWND hwnd) {
    return This->lpVtbl->SaveWithUI(This,hwnd);
}
static inline HRESULT IAttachmentExecute_ClearClientState(IAttachmentExecute* This) {
    return This->lpVtbl->ClearClientState(This);
}
#endif
#endif

#endif


#endif  /* __IAttachmentExecute_INTERFACE_DEFINED__ */

#endif

#if _WIN32_IE >= _WIN32_IE_IE60

#include <pshpack8.h>
typedef struct tagSMDATA {
    DWORD dwMask;
    DWORD dwFlags;
    HMENU hmenu;
    HWND hwnd;
    UINT uId;
    UINT uIdParent;
    UINT uIdAncestor;
    IUnknown *punk;
    PIDLIST_ABSOLUTE pidlFolder;
    PUITEMID_CHILD pidlItem;
    IShellFolder *psf;
    void *pvUserData;
} SMDATA;
typedef struct tagSMDATA *LPSMDATA;

#define SMDM_SHELLFOLDER 0x00000001
#define SMDM_HMENU 0x00000002
#define SMDM_TOOLBAR 0x00000004

typedef struct tagSMINFO {
    DWORD dwMask;
    DWORD dwType;
    DWORD dwFlags;
    int iIcon;
} SMINFO;
typedef struct tagSMINFO *PSMINFO;

typedef struct SHCSCHANGENOTIFYSTRUCT {
    LONG lEvent;
    PCIDLIST_ABSOLUTE pidl1;
    PCIDLIST_ABSOLUTE pidl2;
} SMCSHCHANGENOTIFYSTRUCT;
typedef struct SHCSCHANGENOTIFYSTRUCT *PSMCSHCHANGENOTIFYSTRUCT;
#include <poppack.h>

enum tagSMINFOMASK {
    SMIM_TYPE = 0x1,
    SMIM_FLAGS = 0x2,
    SMIM_ICON = 0x4
};

enum tagSMINFOTYPE {
    SMIT_SEPARATOR = 0x1,
    SMIT_STRING = 0x2
};

enum tagSMINFOFLAGS {
    SMIF_ICON = 0x1,
    SMIF_ACCELERATOR = 0x2,
    SMIF_DROPTARGET = 0x4,
    SMIF_SUBMENU = 0x8,
    SMIF_CHECKED = 0x20,
    SMIF_DROPCASCADE = 0x40,
    SMIF_HIDDEN = 0x80,
    SMIF_DISABLED = 0x100,
    SMIF_TRACKPOPUP = 0x200,
    SMIF_DEMOTED = 0x400,
    SMIF_ALTSTATE = 0x800,
    SMIF_DRAGNDROP = 0x1000,
    SMIF_NEW = 0x2000
};

#define SMC_INITMENU 0x00000001
#define SMC_CREATE 0x00000002
#define SMC_EXITMENU 0x00000003
#define SMC_GETINFO 0x00000005
#define SMC_GETSFINFO 0x00000006
#define SMC_GETOBJECT 0x00000007
#define SMC_GETSFOBJECT 0x00000008
#define SMC_SFEXEC 0x00000009
#define SMC_SFSELECTITEM 0x0000000A
#define SMC_REFRESH 0x00000010
#define SMC_DEMOTE 0x00000011
#define SMC_PROMOTE 0x00000012
#define SMC_DEFAULTICON 0x00000016
#define SMC_NEWITEM 0x00000017
#define SMC_CHEVRONEXPAND 0x00000019
#define SMC_DISPLAYCHEVRONTIP 0x0000002A
#define SMC_SETSFOBJECT 0x0000002D
#define SMC_SHCHANGENOTIFY 0x0000002E
#define SMC_CHEVRONGETTIP 0x0000002F
#define SMC_SFDDRESTRICTED 0x00000030
#if _WIN32_IE >= _WIN32_IE_IE70
#define SMC_SFEXEC_MIDDLE 0x00000031
#define SMC_GETAUTOEXPANDSTATE 0x00000041
#define SMC_AUTOEXPANDCHANGE 0x00000042
#define SMC_GETCONTEXTMENUMODIFIER 0x00000043
#define SMC_GETBKCONTEXTMENU 0x00000044
#define SMC_OPEN 0x00000045

#define SMAE_EXPANDED 0x00000001
#define SMAE_CONTRACTED 0x00000002

#define SMAE_USER 0x00000004

#define SMAE_VALID 0x00000007
#endif

/*****************************************************************************
 * IShellMenuCallback interface
 */
#ifndef __IShellMenuCallback_INTERFACE_DEFINED__
#define __IShellMenuCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellMenuCallback, 0x4ca300a1, 0x9b8d, 0x11d1, 0x8b,0x22, 0x00,0xc0,0x4f,0xd9,0x18,0xd0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4ca300a1-9b8d-11d1-8b22-00c04fd918d0")
IShellMenuCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CallbackSM(
        LPSMDATA psmd,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellMenuCallback, 0x4ca300a1, 0x9b8d, 0x11d1, 0x8b,0x22, 0x00,0xc0,0x4f,0xd9,0x18,0xd0)
#endif
#else
typedef struct IShellMenuCallbackVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IShellMenuCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *CallbackSM)(
        IShellMenuCallback *This,
        LPSMDATA psmd,
        UINT uMsg,
        WPARAM wParam,
        LPARAM lParam);

    END_INTERFACE
} IShellMenuCallbackVtbl;

interface IShellMenuCallback {
    CONST_VTBL IShellMenuCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellMenuCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellMenuCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellMenuCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IShellMenuCallback methods ***/
#define IShellMenuCallback_CallbackSM(This,psmd,uMsg,wParam,lParam) (This)->lpVtbl->CallbackSM(This,psmd,uMsg,wParam,lParam)
#else
/*** IUnknown methods ***/
static inline HRESULT IShellMenuCallback_QueryInterface(IShellMenuCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellMenuCallback_AddRef(IShellMenuCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellMenuCallback_Release(IShellMenuCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellMenuCallback methods ***/
static inline HRESULT IShellMenuCallback_CallbackSM(IShellMenuCallback* This,LPSMDATA psmd,UINT uMsg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->CallbackSM(This,psmd,uMsg,wParam,lParam);
}
#endif
#endif

#endif


#endif  /* __IShellMenuCallback_INTERFACE_DEFINED__ */


#define SMINIT_DEFAULT 0x00000000
#define SMINIT_RESTRICT_DRAGDROP 0x00000002
#define SMINIT_TOPLEVEL 0x00000004
#define SMINIT_CACHED 0x00000010
#if _WIN32_IE >= _WIN32_IE_IE70
#define SMINIT_AUTOEXPAND 0x00000100
#define SMINIT_AUTOTOOLTIP 0x00000200
#define SMINIT_DROPONCONTAINER 0x00000400
#endif

#define SMINIT_VERTICAL 0x10000000
#define SMINIT_HORIZONTAL 0x20000000

#define ANCESTORDEFAULT (UINT)-1

#define SMSET_TOP 0x10000000
#define SMSET_BOTTOM 0x20000000
#define SMSET_DONTOWN 0x00000001

#define SMINV_REFRESH 0x00000001
#define SMINV_ID 0x00000008

/*****************************************************************************
 * IShellMenu interface
 */
#ifndef __IShellMenu_INTERFACE_DEFINED__
#define __IShellMenu_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellMenu, 0xee1f7637, 0xe138, 0x11d1, 0x83,0x79, 0x00,0xc0,0x4f,0xd9,0x18,0xd0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ee1f7637-e138-11d1-8379-00c04fd918d0")
IShellMenu : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IShellMenuCallback *psmc,
        UINT uId,
        UINT uIdAncestor,
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMenuInfo(
        IShellMenuCallback **ppsmc,
        UINT *puId,
        UINT *puIdAncestor,
        DWORD *pdwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetShellFolder(
        IShellFolder *psf,
        PCIDLIST_ABSOLUTE pidlFolder,
        HKEY hKey,
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetShellFolder(
        DWORD *pdwFlags,
        PIDLIST_ABSOLUTE *ppidl,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMenu(
        HMENU hmenu,
        HWND hwnd,
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMenu(
        HMENU *phmenu,
        HWND *phwnd,
        DWORD *pdwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE InvalidateItem(
        LPSMDATA psmd,
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetState(
        LPSMDATA psmd) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMenuToolbar(
        IUnknown *punk,
        DWORD dwFlags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellMenu, 0xee1f7637, 0xe138, 0x11d1, 0x83,0x79, 0x00,0xc0,0x4f,0xd9,0x18,0xd0)
#endif
#else
typedef struct IShellMenuVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IShellMenu methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IShellMenu *This,
        IShellMenuCallback *psmc,
        UINT uId,
        UINT uIdAncestor,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *GetMenuInfo)(
        IShellMenu *This,
        IShellMenuCallback **ppsmc,
        UINT *puId,
        UINT *puIdAncestor,
        DWORD *pdwFlags);

    HRESULT (STDMETHODCALLTYPE *SetShellFolder)(
        IShellMenu *This,
        IShellFolder *psf,
        PCIDLIST_ABSOLUTE pidlFolder,
        HKEY hKey,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *GetShellFolder)(
        IShellMenu *This,
        DWORD *pdwFlags,
        PIDLIST_ABSOLUTE *ppidl,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *SetMenu)(
        IShellMenu *This,
        HMENU hmenu,
        HWND hwnd,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *GetMenu)(
        IShellMenu *This,
        HMENU *phmenu,
        HWND *phwnd,
        DWORD *pdwFlags);

    HRESULT (STDMETHODCALLTYPE *InvalidateItem)(
        IShellMenu *This,
        LPSMDATA psmd,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *GetState)(
        IShellMenu *This,
        LPSMDATA psmd);

    HRESULT (STDMETHODCALLTYPE *SetMenuToolbar)(
        IShellMenu *This,
        IUnknown *punk,
        DWORD dwFlags);

    END_INTERFACE
} IShellMenuVtbl;

interface IShellMenu {
    CONST_VTBL IShellMenuVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellMenu_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellMenu_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellMenu_Release(This) (This)->lpVtbl->Release(This)
/*** IShellMenu methods ***/
#define IShellMenu_Initialize(This,psmc,uId,uIdAncestor,dwFlags) (This)->lpVtbl->Initialize(This,psmc,uId,uIdAncestor,dwFlags)
#define IShellMenu_GetMenuInfo(This,ppsmc,puId,puIdAncestor,pdwFlags) (This)->lpVtbl->GetMenuInfo(This,ppsmc,puId,puIdAncestor,pdwFlags)
#define IShellMenu_SetShellFolder(This,psf,pidlFolder,hKey,dwFlags) (This)->lpVtbl->SetShellFolder(This,psf,pidlFolder,hKey,dwFlags)
#define IShellMenu_GetShellFolder(This,pdwFlags,ppidl,riid,ppv) (This)->lpVtbl->GetShellFolder(This,pdwFlags,ppidl,riid,ppv)
#define IShellMenu_SetMenu(This,hmenu,hwnd,dwFlags) (This)->lpVtbl->SetMenu(This,hmenu,hwnd,dwFlags)
#define IShellMenu_GetMenu(This,phmenu,phwnd,pdwFlags) (This)->lpVtbl->GetMenu(This,phmenu,phwnd,pdwFlags)
#define IShellMenu_InvalidateItem(This,psmd,dwFlags) (This)->lpVtbl->InvalidateItem(This,psmd,dwFlags)
#define IShellMenu_GetState(This,psmd) (This)->lpVtbl->GetState(This,psmd)
#define IShellMenu_SetMenuToolbar(This,punk,dwFlags) (This)->lpVtbl->SetMenuToolbar(This,punk,dwFlags)
#else
/*** IUnknown methods ***/
static inline HRESULT IShellMenu_QueryInterface(IShellMenu* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellMenu_AddRef(IShellMenu* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellMenu_Release(IShellMenu* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellMenu methods ***/
static inline HRESULT IShellMenu_Initialize(IShellMenu* This,IShellMenuCallback *psmc,UINT uId,UINT uIdAncestor,DWORD dwFlags) {
    return This->lpVtbl->Initialize(This,psmc,uId,uIdAncestor,dwFlags);
}
static inline HRESULT IShellMenu_GetMenuInfo(IShellMenu* This,IShellMenuCallback **ppsmc,UINT *puId,UINT *puIdAncestor,DWORD *pdwFlags) {
    return This->lpVtbl->GetMenuInfo(This,ppsmc,puId,puIdAncestor,pdwFlags);
}
static inline HRESULT IShellMenu_SetShellFolder(IShellMenu* This,IShellFolder *psf,PCIDLIST_ABSOLUTE pidlFolder,HKEY hKey,DWORD dwFlags) {
    return This->lpVtbl->SetShellFolder(This,psf,pidlFolder,hKey,dwFlags);
}
static inline HRESULT IShellMenu_GetShellFolder(IShellMenu* This,DWORD *pdwFlags,PIDLIST_ABSOLUTE *ppidl,REFIID riid,void **ppv) {
    return This->lpVtbl->GetShellFolder(This,pdwFlags,ppidl,riid,ppv);
}
static inline HRESULT IShellMenu_SetMenu(IShellMenu* This,HMENU hmenu,HWND hwnd,DWORD dwFlags) {
    return This->lpVtbl->SetMenu(This,hmenu,hwnd,dwFlags);
}
static inline HRESULT IShellMenu_GetMenu(IShellMenu* This,HMENU *phmenu,HWND *phwnd,DWORD *pdwFlags) {
    return This->lpVtbl->GetMenu(This,phmenu,phwnd,pdwFlags);
}
static inline HRESULT IShellMenu_InvalidateItem(IShellMenu* This,LPSMDATA psmd,DWORD dwFlags) {
    return This->lpVtbl->InvalidateItem(This,psmd,dwFlags);
}
static inline HRESULT IShellMenu_GetState(IShellMenu* This,LPSMDATA psmd) {
    return This->lpVtbl->GetState(This,psmd);
}
static inline HRESULT IShellMenu_SetMenuToolbar(IShellMenu* This,IUnknown *punk,DWORD dwFlags) {
    return This->lpVtbl->SetMenuToolbar(This,punk,dwFlags);
}
#endif
#endif

#endif


#endif  /* __IShellMenu_INTERFACE_DEFINED__ */

#endif

/*****************************************************************************
 * IShellRunDll interface
 */
#ifndef __IShellRunDll_INTERFACE_DEFINED__
#define __IShellRunDll_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellRunDll, 0xfce4bde0, 0x4b68, 0x4b80, 0x8e,0x9c, 0x74,0x26,0x31,0x5a,0x73,0x88);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fce4bde0-4b68-4b80-8e9c-7426315a7388")
IShellRunDll : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Run(
        LPCWSTR pszArgs) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellRunDll, 0xfce4bde0, 0x4b68, 0x4b80, 0x8e,0x9c, 0x74,0x26,0x31,0x5a,0x73,0x88)
#endif
#else
typedef struct IShellRunDllVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IShellRunDll methods ***/
    HRESULT (STDMETHODCALLTYPE *Run)(
        IShellRunDll *This,
        LPCWSTR pszArgs);

    END_INTERFACE
} IShellRunDllVtbl;

interface IShellRunDll {
    CONST_VTBL IShellRunDllVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellRunDll_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellRunDll_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellRunDll_Release(This) (This)->lpVtbl->Release(This)
/*** IShellRunDll methods ***/
#define IShellRunDll_Run(This,pszArgs) (This)->lpVtbl->Run(This,pszArgs)
#else
/*** IUnknown methods ***/
static inline HRESULT IShellRunDll_QueryInterface(IShellRunDll* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellRunDll_AddRef(IShellRunDll* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellRunDll_Release(IShellRunDll* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellRunDll methods ***/
static inline HRESULT IShellRunDll_Run(IShellRunDll* This,LPCWSTR pszArgs) {
    return This->lpVtbl->Run(This,pszArgs);
}
#endif
#endif

#endif


#endif  /* __IShellRunDll_INTERFACE_DEFINED__ */


#if NTDDI_VERSION >= NTDDI_VISTA
typedef enum KF_CATEGORY {
    KF_CATEGORY_VIRTUAL = 1,
    KF_CATEGORY_FIXED = 2,
    KF_CATEGORY_COMMON = 3,
    KF_CATEGORY_PERUSER = 4
} KF_CATEGORY;

enum _KF_DEFINITION_FLAGS {
    KFDF_LOCAL_REDIRECT_ONLY = 0x2,
    KFDF_ROAMABLE = 0x4,
    KFDF_PRECREATE = 0x8,
    KFDF_STREAM = 0x10,
    KFDF_PUBLISHEXPANDEDPATH = 0x20
};

typedef DWORD KF_DEFINITION_FLAGS;

enum _KF_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
};

typedef DWORD KF_REDIRECT_FLAGS;

enum _KF_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
};

typedef DWORD KF_REDIRECTION_CAPABILITIES;

typedef struct KNOWNFOLDER_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 inline HRESULT IKnownFolder_QueryInterface(IKnownFolder* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IKnownFolder_AddRef(IKnownFolder* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IKnownFolder_Release(IKnownFolder* This) {
    return This->lpVtbl->Release(This);
}
/*** IKnownFolder methods ***/
static inline HRESULT IKnownFolder_GetId(IKnownFolder* This,KNOWNFOLDERID *pkfid) {
    return This->lpVtbl->GetId(This,pkfid);
}
static inline HRESULT IKnownFolder_GetCategory(IKnownFolder* This,KF_CATEGORY *pCategory) {
    return This->lpVtbl->GetCategory(This,pCategory);
}
static inline HRESULT IKnownFolder_GetShellItem(IKnownFolder* This,DWORD dwFlags,REFIID riid,void **ppv) {
    return This->lpVtbl->GetShellItem(This,dwFlags,riid,ppv);
}
static inline HRESULT IKnownFolder_GetPath(IKnownFolder* This,DWORD dwFlags,LPWSTR *ppszPath) {
    return This->lpVtbl->GetPath(This,dwFlags,ppszPath);
}
static inline HRESULT IKnownFolder_SetPath(IKnownFolder* This,DWORD dwFlags,LPCWSTR pszPath) {
    return This->lpVtbl->SetPath(This,dwFlags,pszPath);
}
static inline HRESULT IKnownFolder_GetIDList(IKnownFolder* This,DWORD dwFlags,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetIDList(This,dwFlags,ppidl);
}
static inline HRESULT IKnownFolder_GetFolderType(IKnownFolder* This,FOLDERTYPEID *pftid) {
    return This->lpVtbl->GetFolderType(This,pftid);
}
static inline HRESULT IKnownFolder_GetRedirectionCapabilities(IKnownFolder* This,KF_REDIRECTION_CAPABILITIES *pCapabilities) {
    return This->lpVtbl->GetRedirectionCapabilities(This,pCapabilities);
}
static inline HRESULT IKnownFolder_GetFolderDefinition(IKnownFolder* This,KNOWNFOLDER_DEFINITION *pKFD) {
    return This->lpVtbl->GetFolderDefinition(This,pKFD);
}
#endif
#endif

#endif


#endif  /* __IKnownFolder_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IKnownFolderManager interface
 */
#ifndef __IKnownFolderManager_INTERFACE_DEFINED__
#define __IKnownFolderManager_INTERFACE_DEFINED__

typedef enum FFFP_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 inline HRESULT IKnownFolderManager_QueryInterface(IKnownFolderManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IKnownFolderManager_AddRef(IKnownFolderManager* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IKnownFolderManager_Release(IKnownFolderManager* This) {
    return This->lpVtbl->Release(This);
}
/*** IKnownFolderManager methods ***/
static inline HRESULT IKnownFolderManager_FolderIdFromCsidl(IKnownFolderManager* This,int nCsidl,KNOWNFOLDERID *pfid) {
    return This->lpVtbl->FolderIdFromCsidl(This,nCsidl,pfid);
}
static inline HRESULT IKnownFolderManager_FolderIdToCsidl(IKnownFolderManager* This,REFKNOWNFOLDERID rfid,int *pnCsidl) {
    return This->lpVtbl->FolderIdToCsidl(This,rfid,pnCsidl);
}
static inline HRESULT IKnownFolderManager_GetFolderIds(IKnownFolderManager* This,KNOWNFOLDERID **ppKFId,UINT *pCount) {
    return This->lpVtbl->GetFolderIds(This,ppKFId,pCount);
}
static inline HRESULT IKnownFolderManager_GetFolder(IKnownFolderManager* This,REFKNOWNFOLDERID rfid,IKnownFolder **ppkf) {
    return This->lpVtbl->GetFolder(This,rfid,ppkf);
}
static inline HRESULT IKnownFolderManager_GetFolderByName(IKnownFolderManager* This,LPCWSTR pszCanonicalName,IKnownFolder **ppkf) {
    return This->lpVtbl->GetFolderByName(This,pszCanonicalName,ppkf);
}
static inline HRESULT IKnownFolderManager_RegisterFolder(IKnownFolderManager* This,REFKNOWNFOLDERID rfid,const KNOWNFOLDER_DEFINITION *pKFD) {
    return This->lpVtbl->RegisterFolder(This,rfid,pKFD);
}
static inline HRESULT IKnownFolderManager_UnregisterFolder(IKnownFolderManager* This,REFKNOWNFOLDERID rfid) {
    return This->lpVtbl->UnregisterFolder(This,rfid);
}
static inline HRESULT IKnownFolderManager_FindFolderFromPath(IKnownFolderManager* This,LPCWSTR pszPath,FFFP_MODE mode,IKnownFolder **ppkf) {
    return This->lpVtbl->FindFolderFromPath(This,pszPath,mode,ppkf);
}
static inline HRESULT IKnownFolderManager_FindFolderFromIDList(IKnownFolderManager* This,PCIDLIST_ABSOLUTE pidl,IKnownFolder **ppkf) {
    return This->lpVtbl->FindFolderFromIDList(This,pidl,ppkf);
}
static inline 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

HRESULT STDMETHODCALLTYPE IKnownFolderManager_RemoteRedirect_Proxy(
    IKnownFolderManager* This,
    REFKNOWNFOLDERID rfid,
    HWND hwnd,
    KF_REDIRECT_FLAGS flags,
    LPCWSTR pszTargetPath,
    UINT cFolders,
    const GUID *pExclusion,
    LPWSTR *ppszError);
void __RPC_STUB IKnownFolderManager_RemoteRedirect_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IKnownFolderManager_Redirect_Proxy(
    IKnownFolderManager* This,
    REFKNOWNFOLDERID rfid,
    HWND hwnd,
    KF_REDIRECT_FLAGS flags,
    LPCWSTR pszTargetPath,
    UINT cFolders,
    const KNOWNFOLDERID *pExclusion,
    LPWSTR *ppszError);
HRESULT __RPC_STUB IKnownFolderManager_Redirect_Stub(
    IKnownFolderManager* This,
    REFKNOWNFOLDERID rfid,
    HWND hwnd,
    KF_REDIRECT_FLAGS flags,
    LPCWSTR pszTargetPath,
    UINT cFolders,
    const GUID *pExclusion,
    LPWSTR *ppszError);

#endif  /* __IKnownFolderManager_INTERFACE_DEFINED__ */


  __forceinline 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 SHARE_ROLE {
    SHARE_ROLE_INVALID = -1,
    SHARE_ROLE_READER = 0,
    SHARE_ROLE_CONTRIBUTOR = 1,
    SHARE_ROLE_CO_OWNER = 2,
    SHARE_ROLE_OWNER = 3,
    SHARE_ROLE_CUSTOM = 4,
    SHARE_ROLE_MIXED = 5
} SHARE_ROLE;

typedef enum DEF_SHARE_ID {
    DEFSHAREID_USERS = 1,
    DEFSHAREID_PUBLIC = 2
} DEF_SHARE_ID;

/*****************************************************************************
 * ISharingConfigurationManager interface
 */
#ifndef __ISharingConfigurationManager_INTERFACE_DEFINED__
#define __ISharingConfigurationManager_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISharingConfigurationManager, 0xb4cd448a, 0x9c86, 0x4466, 0x92,0x01, 0x2e,0x62,0x10,0x5b,0x87,0xae);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b4cd448a-9c86-4466-9201-2e62105b87ae")
ISharingConfigurationManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateShare(
        DEF_SHARE_ID dsid,
        SHARE_ROLE role) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeleteShare(
        DEF_SHARE_ID dsid) = 0;

    virtual HRESULT STDMETHODCALLTYPE ShareExists(
        DEF_SHARE_ID dsid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSharePermissions(
        DEF_SHARE_ID dsid,
        SHARE_ROLE *pRole) = 0;

    virtual HRESULT STDMETHODCALLTYPE SharePrinters(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopSharingPrinters(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ArePrintersShared(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISharingConfigurationManager, 0xb4cd448a, 0x9c86, 0x4466, 0x92,0x01, 0x2e,0x62,0x10,0x5b,0x87,0xae)
#endif
#else
typedef struct ISharingConfigurationManagerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ISharingConfigurationManager methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateShare)(
        ISharingConfigurationManager *This,
        DEF_SHARE_ID dsid,
        SHARE_ROLE role);

    HRESULT (STDMETHODCALLTYPE *DeleteShare)(
        ISharingConfigurationManager *This,
        DEF_SHARE_ID dsid);

    HRESULT (STDMETHODCALLTYPE *ShareExists)(
        ISharingConfigurationManager *This,
        DEF_SHARE_ID dsid);

    HRESULT (STDMETHODCALLTYPE *GetSharePermissions)(
        ISharingConfigurationManager *This,
        DEF_SHARE_ID dsid,
        SHARE_ROLE *pRole);

    HRESULT (STDMETHODCALLTYPE *SharePrinters)(
        ISharingConfigurationManager *This);

    HRESULT (STDMETHODCALLTYPE *StopSharingPrinters)(
        ISharingConfigurationManager *This);

    HRESULT (STDMETHODCALLTYPE *ArePrintersShared)(
        ISharingConfigurationManager *This);

    END_INTERFACE
} ISharingConfigurationManagerVtbl;

interface ISharingConfigurationManager {
    CONST_VTBL ISharingConfigurationManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISharingConfigurationManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISharingConfigurationManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISharingConfigurationManager_Release(This) (This)->lpVtbl->Release(This)
/*** ISharingConfigurationManager methods ***/
#define ISharingConfigurationManager_CreateShare(This,dsid,role) (This)->lpVtbl->CreateShare(This,dsid,role)
#define ISharingConfigurationManager_DeleteShare(This,dsid) (This)->lpVtbl->DeleteShare(This,dsid)
#define ISharingConfigurationManager_ShareExists(This,dsid) (This)->lpVtbl->ShareExists(This,dsid)
#define ISharingConfigurationManager_GetSharePermissions(This,dsid,pRole) (This)->lpVtbl->GetSharePermissions(This,dsid,pRole)
#define ISharingConfigurationManager_SharePrinters(This) (This)->lpVtbl->SharePrinters(This)
#define ISharingConfigurationManager_StopSharingPrinters(This) (This)->lpVtbl->StopSharingPrinters(This)
#define ISharingConfigurationManager_ArePrintersShared(This) (This)->lpVtbl->ArePrintersShared(This)
#else
/*** IUnknown methods ***/
static inline HRESULT ISharingConfigurationManager_QueryInterface(ISharingConfigurationManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISharingConfigurationManager_AddRef(ISharingConfigurationManager* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISharingConfigurationManager_Release(ISharingConfigurationManager* This) {
    return This->lpVtbl->Release(This);
}
/*** ISharingConfigurationManager methods ***/
static inline HRESULT ISharingConfigurationManager_CreateShare(ISharingConfigurationManager* This,DEF_SHARE_ID dsid,SHARE_ROLE role) {
    return This->lpVtbl->CreateShare(This,dsid,role);
}
static inline HRESULT ISharingConfigurationManager_DeleteShare(ISharingConfigurationManager* This,DEF_SHARE_ID dsid) {
    return This->lpVtbl->DeleteShare(This,dsid);
}
static inline HRESULT ISharingConfigurationManager_ShareExists(ISharingConfigurationManager* This,DEF_SHARE_ID dsid) {
    return This->lpVtbl->ShareExists(This,dsid);
}
static inline HRESULT ISharingConfigurationManager_GetSharePermissions(ISharingConfigurationManager* This,DEF_SHARE_ID dsid,SHARE_ROLE *pRole) {
    return This->lpVtbl->GetSharePermissions(This,dsid,pRole);
}
static inline HRESULT ISharingConfigurationManager_SharePrinters(ISharingConfigurationManager* This) {
    return This->lpVtbl->SharePrinters(This);
}
static inline HRESULT ISharingConfigurationManager_StopSharingPrinters(ISharingConfigurationManager* This) {
    return This->lpVtbl->StopSharingPrinters(This);
}
static inline HRESULT ISharingConfigurationManager_ArePrintersShared(ISharingConfigurationManager* This) {
    return This->lpVtbl->ArePrintersShared(This);
}
#endif
#endif

#endif


#endif  /* __ISharingConfigurationManager_INTERFACE_DEFINED__ */

#endif

/*****************************************************************************
 * IPreviousVersionsInfo interface
 */
#ifndef __IPreviousVersionsInfo_INTERFACE_DEFINED__
#define __IPreviousVersionsInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPreviousVersionsInfo, 0x76e54780, 0xad74, 0x48e3, 0xa6,0x95, 0x3b,0xa9,0xa0,0xaf,0xf1,0x0d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("76e54780-ad74-48e3-a695-3ba9a0aff10d")
IPreviousVersionsInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AreSnapshotsAvailable(
        LPCWSTR pszPath,
        WINBOOL fOkToBeSlow,
        WINBOOL *pfAvailable) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPreviousVersionsInfo, 0x76e54780, 0xad74, 0x48e3, 0xa6,0x95, 0x3b,0xa9,0xa0,0xaf,0xf1,0x0d)
#endif
#else
typedef struct IPreviousVersionsInfoVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IPreviousVersionsInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *AreSnapshotsAvailable)(
        IPreviousVersionsInfo *This,
        LPCWSTR pszPath,
        WINBOOL fOkToBeSlow,
        WINBOOL *pfAvailable);

    END_INTERFACE
} IPreviousVersionsInfoVtbl;

interface IPreviousVersionsInfo {
    CONST_VTBL IPreviousVersionsInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPreviousVersionsInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPreviousVersionsInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPreviousVersionsInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IPreviousVersionsInfo methods ***/
#define IPreviousVersionsInfo_AreSnapshotsAvailable(This,pszPath,fOkToBeSlow,pfAvailable) (This)->lpVtbl->AreSnapshotsAvailable(This,pszPath,fOkToBeSlow,pfAvailable)
#else
/*** IUnknown methods ***/
static inline HRESULT IPreviousVersionsInfo_QueryInterface(IPreviousVersionsInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPreviousVersionsInfo_AddRef(IPreviousVersionsInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPreviousVersionsInfo_Release(IPreviousVersionsInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IPreviousVersionsInfo methods ***/
static inline HRESULT IPreviousVersionsInfo_AreSnapshotsAvailable(IPreviousVersionsInfo* This,LPCWSTR pszPath,WINBOOL fOkToBeSlow,WINBOOL *pfAvailable) {
    return This->lpVtbl->AreSnapshotsAvailable(This,pszPath,fOkToBeSlow,pfAvailable);
}
#endif
#endif

#endif


#endif  /* __IPreviousVersionsInfo_INTERFACE_DEFINED__ */


#if NTDDI_VERSION >= NTDDI_VISTA
/*****************************************************************************
 * IRelatedItem interface
 */
#ifndef __IRelatedItem_INTERFACE_DEFINED__
#define __IRelatedItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_IRelatedItem, 0xa73ce67a, 0x8ab1, 0x44f1, 0x8d,0x43, 0xd2,0xfc,0xbf,0x6b,0x1c,0xd0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a73ce67a-8ab1-44f1-8d43-d2fcbf6b1cd0")
IRelatedItem : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetItemIDList(
        PIDLIST_ABSOLUTE *ppidl) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IRelatedItem, 0xa73ce67a, 0x8ab1, 0x44f1, 0x8d,0x43, 0xd2,0xfc,0xbf,0x6b,0x1c,0xd0)
#endif
#else
typedef struct IRelatedItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRelatedItem methods ***/
    HRESULT (STDMETHODCALLTYPE *GetItemIDList)(
        IRelatedItem *This,
        PIDLIST_ABSOLUTE *ppidl);

    HRESULT (STDMETHODCALLTYPE *GetItem)(
        IRelatedItem *This,
        IShellItem **ppsi);

    END_INTERFACE
} IRelatedItemVtbl;

interface IRelatedItem {
    CONST_VTBL IRelatedItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IRelatedItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IRelatedItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IRelatedItem_Release(This) (This)->lpVtbl->Release(This)
/*** IRelatedItem methods ***/
#define IRelatedItem_GetItemIDList(This,ppidl) (This)->lpVtbl->GetItemIDList(This,ppidl)
#define IRelatedItem_GetItem(This,ppsi) (This)->lpVtbl->GetItem(This,ppsi)
#else
/*** IUnknown methods ***/
static inline HRESULT IRelatedItem_QueryInterface(IRelatedItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IRelatedItem_AddRef(IRelatedItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IRelatedItem_Release(IRelatedItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IRelatedItem methods ***/
static inline HRESULT IRelatedItem_GetItemIDList(IRelatedItem* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetItemIDList(This,ppidl);
}
static inline HRESULT IRelatedItem_GetItem(IRelatedItem* This,IShellItem **ppsi) {
    return This->lpVtbl->GetItem(This,ppsi);
}
#endif
#endif

#endif


#endif  /* __IRelatedItem_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IIdentityName interface
 */
#ifndef __IIdentityName_INTERFACE_DEFINED__
#define __IIdentityName_INTERFACE_DEFINED__

DEFINE_GUID(IID_IIdentityName, 0x7d903fca, 0xd6f9, 0x4810, 0x83,0x32, 0x94,0x6c,0x01,0x77,0xe2,0x47);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7d903fca-d6f9-4810-8332-946c0177e247")
IIdentityName : public IRelatedItem
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IIdentityName, 0x7d903fca, 0xd6f9, 0x4810, 0x83,0x32, 0x94,0x6c,0x01,0x77,0xe2,0x47)
#endif
#else
typedef struct IIdentityNameVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRelatedItem methods ***/
    HRESULT (STDMETHODCALLTYPE *GetItemIDList)(
        IIdentityName *This,
        PIDLIST_ABSOLUTE *ppidl);

    HRESULT (STDMETHODCALLTYPE *GetItem)(
        IIdentityName *This,
        IShellItem **ppsi);

    END_INTERFACE
} IIdentityNameVtbl;

interface IIdentityName {
    CONST_VTBL IIdentityNameVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IIdentityName_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IIdentityName_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IIdentityName_Release(This) (This)->lpVtbl->Release(This)
/*** IRelatedItem methods ***/
#define IIdentityName_GetItemIDList(This,ppidl) (This)->lpVtbl->GetItemIDList(This,ppidl)
#define IIdentityName_GetItem(This,ppsi) (This)->lpVtbl->GetItem(This,ppsi)
#else
/*** IUnknown methods ***/
static inline HRESULT IIdentityName_QueryInterface(IIdentityName* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IIdentityName_AddRef(IIdentityName* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IIdentityName_Release(IIdentityName* This) {
    return This->lpVtbl->Release(This);
}
/*** IRelatedItem methods ***/
static inline HRESULT IIdentityName_GetItemIDList(IIdentityName* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetItemIDList(This,ppidl);
}
static inline HRESULT IIdentityName_GetItem(IIdentityName* This,IShellItem **ppsi) {
    return This->lpVtbl->GetItem(This,ppsi);
}
#endif
#endif

#endif


#endif  /* __IIdentityName_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IDelegateItem interface
 */
#ifndef __IDelegateItem_INTERFACE_DEFINED__
#define __IDelegateItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDelegateItem, 0x3c5a1c94, 0xc951, 0x4cb7, 0xbb,0x6d, 0x3b,0x93,0xf3,0x0c,0xce,0x93);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3c5a1c94-c951-4cb7-bb6d-3b93f30cce93")
IDelegateItem : public IRelatedItem
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDelegateItem, 0x3c5a1c94, 0xc951, 0x4cb7, 0xbb,0x6d, 0x3b,0x93,0xf3,0x0c,0xce,0x93)
#endif
#else
typedef struct IDelegateItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRelatedItem methods ***/
    HRESULT (STDMETHODCALLTYPE *GetItemIDList)(
        IDelegateItem *This,
        PIDLIST_ABSOLUTE *ppidl);

    HRESULT (STDMETHODCALLTYPE *GetItem)(
        IDelegateItem *This,
        IShellItem **ppsi);

    END_INTERFACE
} IDelegateItemVtbl;

interface IDelegateItem {
    CONST_VTBL IDelegateItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDelegateItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDelegateItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDelegateItem_Release(This) (This)->lpVtbl->Release(This)
/*** IRelatedItem methods ***/
#define IDelegateItem_GetItemIDList(This,ppidl) (This)->lpVtbl->GetItemIDList(This,ppidl)
#define IDelegateItem_GetItem(This,ppsi) (This)->lpVtbl->GetItem(This,ppsi)
#else
/*** IUnknown methods ***/
static inline HRESULT IDelegateItem_QueryInterface(IDelegateItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDelegateItem_AddRef(IDelegateItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDelegateItem_Release(IDelegateItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IRelatedItem methods ***/
static inline HRESULT IDelegateItem_GetItemIDList(IDelegateItem* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetItemIDList(This,ppidl);
}
static inline HRESULT IDelegateItem_GetItem(IDelegateItem* This,IShellItem **ppsi) {
    return This->lpVtbl->GetItem(This,ppsi);
}
#endif
#endif

#endif


#endif  /* __IDelegateItem_INTERFACE_DEFINED__ */


/*****************************************************************************
 * ICurrentItem interface
 */
#ifndef __ICurrentItem_INTERFACE_DEFINED__
#define __ICurrentItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICurrentItem, 0x240a7174, 0xd653, 0x4a1d, 0xa6,0xd3, 0xd4,0x94,0x3c,0xfb,0xfe,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("240a7174-d653-4a1d-a6d3-d4943cfbfe3d")
ICurrentItem : public IRelatedItem
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICurrentItem, 0x240a7174, 0xd653, 0x4a1d, 0xa6,0xd3, 0xd4,0x94,0x3c,0xfb,0xfe,0x3d)
#endif
#else
typedef struct ICurrentItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRelatedItem methods ***/
    HRESULT (STDMETHODCALLTYPE *GetItemIDList)(
        ICurrentItem *This,
        PIDLIST_ABSOLUTE *ppidl);

    HRESULT (STDMETHODCALLTYPE *GetItem)(
        ICurrentItem *This,
        IShellItem **ppsi);

    END_INTERFACE
} ICurrentItemVtbl;

interface ICurrentItem {
    CONST_VTBL ICurrentItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICurrentItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICurrentItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICurrentItem_Release(This) (This)->lpVtbl->Release(This)
/*** IRelatedItem methods ***/
#define ICurrentItem_GetItemIDList(This,ppidl) (This)->lpVtbl->GetItemIDList(This,ppidl)
#define ICurrentItem_GetItem(This,ppsi) (This)->lpVtbl->GetItem(This,ppsi)
#else
/*** IUnknown methods ***/
static inline HRESULT ICurrentItem_QueryInterface(ICurrentItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ICurrentItem_AddRef(ICurrentItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ICurrentItem_Release(ICurrentItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IRelatedItem methods ***/
static inline HRESULT ICurrentItem_GetItemIDList(ICurrentItem* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetItemIDList(This,ppidl);
}
static inline HRESULT ICurrentItem_GetItem(ICurrentItem* This,IShellItem **ppsi) {
    return This->lpVtbl->GetItem(This,ppsi);
}
#endif
#endif

#endif


#endif  /* __ICurrentItem_INTERFACE_DEFINED__ */


/*****************************************************************************
 * ITransferMediumItem interface
 */
#ifndef __ITransferMediumItem_INTERFACE_DEFINED__
#define __ITransferMediumItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITransferMediumItem, 0x77f295d5, 0x2d6f, 0x4e19, 0xb8,0xae, 0x32,0x2f,0x3e,0x72,0x1a,0xb5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("77f295d5-2d6f-4e19-b8ae-322f3e721ab5")
ITransferMediumItem : public IRelatedItem
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITransferMediumItem, 0x77f295d5, 0x2d6f, 0x4e19, 0xb8,0xae, 0x32,0x2f,0x3e,0x72,0x1a,0xb5)
#endif
#else
typedef struct ITransferMediumItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRelatedItem methods ***/
    HRESULT (STDMETHODCALLTYPE *GetItemIDList)(
        ITransferMediumItem *This,
        PIDLIST_ABSOLUTE *ppidl);

    HRESULT (STDMETHODCALLTYPE *GetItem)(
        ITransferMediumItem *This,
        IShellItem **ppsi);

    END_INTERFACE
} ITransferMediumItemVtbl;

interface ITransferMediumItem {
    CONST_VTBL ITransferMediumItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITransferMediumItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITransferMediumItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITransferMediumItem_Release(This) (This)->lpVtbl->Release(This)
/*** IRelatedItem methods ***/
#define ITransferMediumItem_GetItemIDList(This,ppidl) (This)->lpVtbl->GetItemIDList(This,ppidl)
#define ITransferMediumItem_GetItem(This,ppsi) (This)->lpVtbl->GetItem(This,ppsi)
#else
/*** IUnknown methods ***/
static inline HRESULT ITransferMediumItem_QueryInterface(ITransferMediumItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITransferMediumItem_AddRef(ITransferMediumItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITransferMediumItem_Release(ITransferMediumItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IRelatedItem methods ***/
static inline HRESULT ITransferMediumItem_GetItemIDList(ITransferMediumItem* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetItemIDList(This,ppidl);
}
static inline HRESULT ITransferMediumItem_GetItem(ITransferMediumItem* This,IShellItem **ppsi) {
    return This->lpVtbl->GetItem(This,ppsi);
}
#endif
#endif

#endif


#endif  /* __ITransferMediumItem_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IUseToBrowseItem interface
 */
#ifndef __IUseToBrowseItem_INTERFACE_DEFINED__
#define __IUseToBrowseItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUseToBrowseItem, 0x05edda5c, 0x98a3, 0x4717, 0x8a,0xdb, 0xc5,0xe7,0xda,0x99,0x1e,0xb1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("05edda5c-98a3-4717-8adb-c5e7da991eb1")
IUseToBrowseItem : public IRelatedItem
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUseToBrowseItem, 0x05edda5c, 0x98a3, 0x4717, 0x8a,0xdb, 0xc5,0xe7,0xda,0x99,0x1e,0xb1)
#endif
#else
typedef struct IUseToBrowseItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRelatedItem methods ***/
    HRESULT (STDMETHODCALLTYPE *GetItemIDList)(
        IUseToBrowseItem *This,
        PIDLIST_ABSOLUTE *ppidl);

    HRESULT (STDMETHODCALLTYPE *GetItem)(
        IUseToBrowseItem *This,
        IShellItem **ppsi);

    END_INTERFACE
} IUseToBrowseItemVtbl;

interface IUseToBrowseItem {
    CONST_VTBL IUseToBrowseItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUseToBrowseItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUseToBrowseItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUseToBrowseItem_Release(This) (This)->lpVtbl->Release(This)
/*** IRelatedItem methods ***/
#define IUseToBrowseItem_GetItemIDList(This,ppidl) (This)->lpVtbl->GetItemIDList(This,ppidl)
#define IUseToBrowseItem_GetItem(This,ppsi) (This)->lpVtbl->GetItem(This,ppsi)
#else
/*** IUnknown methods ***/
static inline HRESULT IUseToBrowseItem_QueryInterface(IUseToBrowseItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUseToBrowseItem_AddRef(IUseToBrowseItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUseToBrowseItem_Release(IUseToBrowseItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IRelatedItem methods ***/
static inline HRESULT IUseToBrowseItem_GetItemIDList(IUseToBrowseItem* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetItemIDList(This,ppidl);
}
static inline HRESULT IUseToBrowseItem_GetItem(IUseToBrowseItem* This,IShellItem **ppsi) {
    return This->lpVtbl->GetItem(This,ppsi);
}
#endif
#endif

#endif


#endif  /* __IUseToBrowseItem_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IDisplayItem interface
 */
#ifndef __IDisplayItem_INTERFACE_DEFINED__
#define __IDisplayItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDisplayItem, 0xc6fd5997, 0x9f6b, 0x4888, 0x87,0x03, 0x94,0xe8,0x0e,0x8c,0xde,0x3f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c6fd5997-9f6b-4888-8703-94e80e8cde3f")
IDisplayItem : public IRelatedItem
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDisplayItem, 0xc6fd5997, 0x9f6b, 0x4888, 0x87,0x03, 0x94,0xe8,0x0e,0x8c,0xde,0x3f)
#endif
#else
typedef struct IDisplayItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRelatedItem methods ***/
    HRESULT (STDMETHODCALLTYPE *GetItemIDList)(
        IDisplayItem *This,
        PIDLIST_ABSOLUTE *ppidl);

    HRESULT (STDMETHODCALLTYPE *GetItem)(
        IDisplayItem *This,
        IShellItem **ppsi);

    END_INTERFACE
} IDisplayItemVtbl;

interface IDisplayItem {
    CONST_VTBL IDisplayItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDisplayItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDisplayItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDisplayItem_Release(This) (This)->lpVtbl->Release(This)
/*** IRelatedItem methods ***/
#define IDisplayItem_GetItemIDList(This,ppidl) (This)->lpVtbl->GetItemIDList(This,ppidl)
#define IDisplayItem_GetItem(This,ppsi) (This)->lpVtbl->GetItem(This,ppsi)
#else
/*** IUnknown methods ***/
static inline HRESULT IDisplayItem_QueryInterface(IDisplayItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDisplayItem_AddRef(IDisplayItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDisplayItem_Release(IDisplayItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IRelatedItem methods ***/
static inline HRESULT IDisplayItem_GetItemIDList(IDisplayItem* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetItemIDList(This,ppidl);
}
static inline HRESULT IDisplayItem_GetItem(IDisplayItem* This,IShellItem **ppsi) {
    return This->lpVtbl->GetItem(This,ppsi);
}
#endif
#endif

#endif


#endif  /* __IDisplayItem_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IViewStateIdentityItem interface
 */
#ifndef __IViewStateIdentityItem_INTERFACE_DEFINED__
#define __IViewStateIdentityItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_IViewStateIdentityItem, 0x9d264146, 0xa94f, 0x4195, 0x9f,0x9f, 0x3b,0xb1,0x2c,0xe0,0xc9,0x55);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9d264146-a94f-4195-9f9f-3bb12ce0c955")
IViewStateIdentityItem : public IRelatedItem
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IViewStateIdentityItem, 0x9d264146, 0xa94f, 0x4195, 0x9f,0x9f, 0x3b,0xb1,0x2c,0xe0,0xc9,0x55)
#endif
#else
typedef struct IViewStateIdentityItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRelatedItem methods ***/
    HRESULT (STDMETHODCALLTYPE *GetItemIDList)(
        IViewStateIdentityItem *This,
        PIDLIST_ABSOLUTE *ppidl);

    HRESULT (STDMETHODCALLTYPE *GetItem)(
        IViewStateIdentityItem *This,
        IShellItem **ppsi);

    END_INTERFACE
} IViewStateIdentityItemVtbl;

interface IViewStateIdentityItem {
    CONST_VTBL IViewStateIdentityItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IViewStateIdentityItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IViewStateIdentityItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IViewStateIdentityItem_Release(This) (This)->lpVtbl->Release(This)
/*** IRelatedItem methods ***/
#define IViewStateIdentityItem_GetItemIDList(This,ppidl) (This)->lpVtbl->GetItemIDList(This,ppidl)
#define IViewStateIdentityItem_GetItem(This,ppsi) (This)->lpVtbl->GetItem(This,ppsi)
#else
/*** IUnknown methods ***/
static inline HRESULT IViewStateIdentityItem_QueryInterface(IViewStateIdentityItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IViewStateIdentityItem_AddRef(IViewStateIdentityItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IViewStateIdentityItem_Release(IViewStateIdentityItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IRelatedItem methods ***/
static inline HRESULT IViewStateIdentityItem_GetItemIDList(IViewStateIdentityItem* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetItemIDList(This,ppidl);
}
static inline HRESULT IViewStateIdentityItem_GetItem(IViewStateIdentityItem* This,IShellItem **ppsi) {
    return This->lpVtbl->GetItem(This,ppsi);
}
#endif
#endif

#endif


#endif  /* __IViewStateIdentityItem_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPreviewItem interface
 */
#ifndef __IPreviewItem_INTERFACE_DEFINED__
#define __IPreviewItem_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPreviewItem, 0x36149969, 0x0a8f, 0x49c8, 0x8b,0x00, 0x4a,0xec,0xb2,0x02,0x22,0xfb);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("36149969-0a8f-49c8-8b00-4aecb20222fb")
IPreviewItem : public IRelatedItem
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPreviewItem, 0x36149969, 0x0a8f, 0x49c8, 0x8b,0x00, 0x4a,0xec,0xb2,0x02,0x22,0xfb)
#endif
#else
typedef struct IPreviewItemVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IRelatedItem methods ***/
    HRESULT (STDMETHODCALLTYPE *GetItemIDList)(
        IPreviewItem *This,
        PIDLIST_ABSOLUTE *ppidl);

    HRESULT (STDMETHODCALLTYPE *GetItem)(
        IPreviewItem *This,
        IShellItem **ppsi);

    END_INTERFACE
} IPreviewItemVtbl;

interface IPreviewItem {
    CONST_VTBL IPreviewItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPreviewItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPreviewItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPreviewItem_Release(This) (This)->lpVtbl->Release(This)
/*** IRelatedItem methods ***/
#define IPreviewItem_GetItemIDList(This,ppidl) (This)->lpVtbl->GetItemIDList(This,ppidl)
#define IPreviewItem_GetItem(This,ppsi) (This)->lpVtbl->GetItem(This,ppsi)
#else
/*** IUnknown methods ***/
static inline HRESULT IPreviewItem_QueryInterface(IPreviewItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPreviewItem_AddRef(IPreviewItem* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPreviewItem_Release(IPreviewItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IRelatedItem methods ***/
static inline HRESULT IPreviewItem_GetItemIDList(IPreviewItem* This,PIDLIST_ABSOLUTE *ppidl) {
    return This->lpVtbl->GetItemIDList(This,ppidl);
}
static inline HRESULT IPreviewItem_GetItem(IPreviewItem* This,IShellItem **ppsi) {
    return This->lpVtbl->GetItem(This,ppsi);
}
#endif
#endif

#endif


#endif  /* __IPreviewItem_INTERFACE_DEFINED__ */

#endif

/*****************************************************************************
 * IDestinationStreamFactory interface
 */
#ifndef __IDestinationStreamFactory_INTERFACE_DEFINED__
#define __IDestinationStreamFactory_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDestinationStreamFactory, 0x8a87781b, 0x39a7, 0x4a1f, 0xaa,0xb3, 0xa3,0x9b,0x9c,0x34,0xa7,0xd9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8a87781b-39a7-4a1f-aab3-a39b9c34a7d9")
IDestinationStreamFactory : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDestinationStream(
        IStream **ppstm) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDestinationStreamFactory, 0x8a87781b, 0x39a7, 0x4a1f, 0xaa,0xb3, 0xa3,0x9b,0x9c,0x34,0xa7,0xd9)
#endif
#else
typedef struct IDestinationStreamFactoryVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDestinationStreamFactory methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDestinationStream)(
        IDestinationStreamFactory *This,
        IStream **ppstm);

    END_INTERFACE
} IDestinationStreamFactoryVtbl;

interface IDestinationStreamFactory {
    CONST_VTBL IDestinationStreamFactoryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDestinationStreamFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDestinationStreamFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDestinationStreamFactory_Release(This) (This)->lpVtbl->Release(This)
/*** IDestinationStreamFactory methods ***/
#define IDestinationStreamFactory_GetDestinationStream(This,ppstm) (This)->lpVtbl->GetDestinationStream(This,ppstm)
#else
/*** IUnknown methods ***/
static inline HRESULT IDestinationStreamFactory_QueryInterface(IDestinationStreamFactory* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDestinationStreamFactory_AddRef(IDestinationStreamFactory* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDestinationStreamFactory_Release(IDestinationStreamFactory* This) {
    return This->lpVtbl->Release(This);
}
/*** IDestinationStreamFactory methods ***/
static inline HRESULT IDestinationStreamFactory_GetDestinationStream(IDestinationStreamFactory* This,IStream **ppstm) {
    return This->lpVtbl->GetDestinationStream(This,ppstm);
}
#endif
#endif

#endif


#endif  /* __IDestinationStreamFactory_INTERFACE_DEFINED__ */


enum _NMCII_FLAGS {
    NMCII_NONE = 0x0,
    NMCII_ITEMS = 0x1,
    NMCII_FOLDERS = 0x2
};

typedef int NMCII_FLAGS;

enum _NMCSAEI_FLAGS {
    NMCSAEI_SELECT = 0x0,
    NMCSAEI_EDIT = 0x1
};

typedef int NMCSAEI_FLAGS;

/*****************************************************************************
 * INewMenuClient interface
 */
#ifndef __INewMenuClient_INTERFACE_DEFINED__
#define __INewMenuClient_INTERFACE_DEFINED__

DEFINE_GUID(IID_INewMenuClient, 0xdcb07fdc, 0x3bb5, 0x451c, 0x90,0xbe, 0x96,0x66,0x44,0xfe,0xd7,0xb0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("dcb07fdc-3bb5-451c-90be-966644fed7b0")
INewMenuClient : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE IncludeItems(
        NMCII_FLAGS *pflags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SelectAndEditItem(
        PCIDLIST_ABSOLUTE pidlItem,
        NMCSAEI_FLAGS flags) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INewMenuClient, 0xdcb07fdc, 0x3bb5, 0x451c, 0x90,0xbe, 0x96,0x66,0x44,0xfe,0xd7,0xb0)
#endif
#else
typedef struct INewMenuClientVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INewMenuClient methods ***/
    HRESULT (STDMETHODCALLTYPE *IncludeItems)(
        INewMenuClient *This,
        NMCII_FLAGS *pflags);

    HRESULT (STDMETHODCALLTYPE *SelectAndEditItem)(
        INewMenuClient *This,
        PCIDLIST_ABSOLUTE pidlItem,
        NMCSAEI_FLAGS flags);

    END_INTERFACE
} INewMenuClientVtbl;

interface INewMenuClient {
    CONST_VTBL INewMenuClientVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define INewMenuClient_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INewMenuClient_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INewMenuClient_Release(This) (This)->lpVtbl->Release(This)
/*** INewMenuClient methods ***/
#define INewMenuClient_IncludeItems(This,pflags) (This)->lpVtbl->IncludeItems(This,pflags)
#define INewMenuClient_SelectAndEditItem(This,pidlItem,flags) (This)->lpVtbl->SelectAndEditItem(This,pidlItem,flags)
#else
/*** IUnknown methods ***/
static inline HRESULT INewMenuClient_QueryInterface(INewMenuClient* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG INewMenuClient_AddRef(INewMenuClient* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG INewMenuClient_Release(INewMenuClient* This) {
    return This->lpVtbl->Release(This);
}
/*** INewMenuClient methods ***/
static inline HRESULT INewMenuClient_IncludeItems(INewMenuClient* This,NMCII_FLAGS *pflags) {
    return This->lpVtbl->IncludeItems(This,pflags);
}
static inline HRESULT INewMenuClient_SelectAndEditItem(INewMenuClient* This,PCIDLIST_ABSOLUTE pidlItem,NMCSAEI_FLAGS flags) {
    return This->lpVtbl->SelectAndEditItem(This,pidlItem,flags);
}
#endif
#endif

#endif


#endif  /* __INewMenuClient_INTERFACE_DEFINED__ */


#define SID_SNewMenuClient   IID_INewMenuClient

DEFINE_GUID(SID_SCommandBarState, 0xB99EAA5C, 0x3850, 0x4400, 0xBC, 0x33, 0x2C, 0xE5, 0x34, 0x04, 0x8B, 0xF8);

#if _WIN32_IE >= _WIN32_IE_IE70
/*****************************************************************************
 * IInitializeWithBindCtx interface
 */
#ifndef __IInitializeWithBindCtx_INTERFACE_DEFINED__
#define __IInitializeWithBindCtx_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInitializeWithBindCtx, 0x71c0d2bc, 0x726d, 0x45cc, 0xa6,0xc0, 0x2e,0x31,0xc1,0xdb,0x21,0x59);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("71c0d2bc-726d-45cc-a6c0-2e31c1db2159")
IInitializeWithBindCtx : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IBindCtx *pbc) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInitializeWithBindCtx, 0x71c0d2bc, 0x726d, 0x45cc, 0xa6,0xc0, 0x2e,0x31,0xc1,0xdb,0x21,0x59)
#endif
#else
typedef struct IInitializeWithBindCtxVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IInitializeWithBindCtx methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IInitializeWithBindCtx *This,
        IBindCtx *pbc);

    END_INTERFACE
} IInitializeWithBindCtxVtbl;

interface IInitializeWithBindCtx {
    CONST_VTBL IInitializeWithBindCtxVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInitializeWithBindCtx_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInitializeWithBindCtx_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInitializeWithBindCtx_Release(This) (This)->lpVtbl->Release(This)
/*** IInitializeWithBindCtx methods ***/
#define IInitializeWithBindCtx_Initialize(This,pbc) (This)->lpVtbl->Initialize(This,pbc)
#else
/*** IUnknown methods ***/
static inline HRESULT IInitializeWithBindCtx_QueryInterface(IInitializeWithBindCtx* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IInitializeWithBindCtx_AddRef(IInitializeWithBindCtx* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IInitializeWithBindCtx_Release(IInitializeWithBindCtx* This) {
    return This->lpVtbl->Release(This);
}
/*** IInitializeWithBindCtx methods ***/
static inline HRESULT IInitializeWithBindCtx_Initialize(IInitializeWithBindCtx* This,IBindCtx *pbc) {
    return This->lpVtbl->Initialize(This,pbc);
}
#endif
#endif

#endif


#endif  /* __IInitializeWithBindCtx_INTERFACE_DEFINED__ */


/*****************************************************************************
 * 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 inline HRESULT IShellItemFilter_QueryInterface(IShellItemFilter* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellItemFilter_AddRef(IShellItemFilter* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellItemFilter_Release(IShellItemFilter* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellItemFilter methods ***/
static inline HRESULT IShellItemFilter_IncludeItem(IShellItemFilter* This,IShellItem *psi) {
    return This->lpVtbl->IncludeItem(This,psi);
}
static inline HRESULT IShellItemFilter_GetEnumFlagsForItem(IShellItemFilter* This,IShellItem *psi,SHCONTF *pgrfFlags) {
    return This->lpVtbl->GetEnumFlagsForItem(This,psi,pgrfFlags);
}
#endif
#endif

#endif


#endif  /* __IShellItemFilter_INTERFACE_DEFINED__ */

#endif

/*****************************************************************************
 * 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 nsctsFlags) = 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 nsctsFlags);

    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,nsctsFlags) (This)->lpVtbl->Initialize(This,hwndParent,prc,nsctsFlags)
#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 inline HRESULT INameSpaceTreeControl_QueryInterface(INameSpaceTreeControl* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG INameSpaceTreeControl_AddRef(INameSpaceTreeControl* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG INameSpaceTreeControl_Release(INameSpaceTreeControl* This) {
    return This->lpVtbl->Release(This);
}
/*** INameSpaceTreeControl methods ***/
static inline HRESULT INameSpaceTreeControl_Initialize(INameSpaceTreeControl* This,HWND hwndParent,RECT *prc,NSTCSTYLE nsctsFlags) {
    return This->lpVtbl->Initialize(This,hwndParent,prc,nsctsFlags);
}
static inline HRESULT INameSpaceTreeControl_TreeAdvise(INameSpaceTreeControl* This,IUnknown *punk,DWORD *pdwCookie) {
    return This->lpVtbl->TreeAdvise(This,punk,pdwCookie);
}
static inline HRESULT INameSpaceTreeControl_TreeUnadvise(INameSpaceTreeControl* This,DWORD dwCookie) {
    return This->lpVtbl->TreeUnadvise(This,dwCookie);
}
static inline HRESULT INameSpaceTreeControl_AppendRoot(INameSpaceTreeControl* This,IShellItem *psiRoot,SHCONTF grfEnumFlags,NSTCROOTSTYLE grfRootStyle,IShellItemFilter *pif) {
    return This->lpVtbl->AppendRoot(This,psiRoot,grfEnumFlags,grfRootStyle,pif);
}
static inline 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 inline HRESULT INameSpaceTreeControl_RemoveRoot(INameSpaceTreeControl* This,IShellItem *psiRoot) {
    return This->lpVtbl->RemoveRoot(This,psiRoot);
}
static inline HRESULT INameSpaceTreeControl_RemoveAllRoots(INameSpaceTreeControl* This) {
    return This->lpVtbl->RemoveAllRoots(This);
}
static inline HRESULT INameSpaceTreeControl_GetRootItems(INameSpaceTreeControl* This,IShellItemArray **ppsiaRootItems) {
    return This->lpVtbl->GetRootItems(This,ppsiaRootItems);
}
static inline HRESULT INameSpaceTreeControl_SetItemState(INameSpaceTreeControl* This,IShellItem *psi,NSTCITEMSTATE nstcisMask,NSTCITEMSTATE nstcisFlags) {
    return This->lpVtbl->SetItemState(This,psi,nstcisMask,nstcisFlags);
}
static inline HRESULT INameSpaceTreeControl_GetItemState(INameSpaceTreeControl* This,IShellItem *psi,NSTCITEMSTATE nstcisMask,NSTCITEMSTATE *pnstcisFlags) {
    return This->lpVtbl->GetItemState(This,psi,nstcisMask,pnstcisFlags);
}
static inline HRESULT INameSpaceTreeControl_GetSelectedItems(INameSpaceTreeControl* This,IShellItemArray **psiaItems) {
    return This->lpVtbl->GetSelectedItems(This,psiaItems);
}
static inline HRESULT INameSpaceTreeControl_GetItemCustomState(INameSpaceTreeControl* This,IShellItem *psi,int *piStateNumber) {
    return This->lpVtbl->GetItemCustomState(This,psi,piStateNumber);
}
static inline HRESULT INameSpaceTreeControl_SetItemCustomState(INameSpaceTreeControl* This,IShellItem *psi,int iStateNumber) {
    return This->lpVtbl->SetItemCustomState(This,psi,iStateNumber);
}
static inline HRESULT INameSpaceTreeControl_EnsureItemVisible(INameSpaceTreeControl* This,IShellItem *psi) {
    return This->lpVtbl->EnsureItemVisible(This,psi);
}
static inline HRESULT INameSpaceTreeControl_SetTheme(INameSpaceTreeControl* This,LPCWSTR pszTheme) {
    return This->lpVtbl->SetTheme(This,pszTheme);
}
static inline HRESULT INameSpaceTreeControl_GetNextItem(INameSpaceTreeControl* This,IShellItem *psi,NSTCGNI nstcgi,IShellItem **ppsiNext) {
    return This->lpVtbl->GetNextItem(This,psi,nstcgi,ppsiNext);
}
static inline HRESULT INameSpaceTreeControl_HitTest(INameSpaceTreeControl* This,POINT *ppt,IShellItem **ppsiOut) {
    return This->lpVtbl->HitTest(This,ppt,ppsiOut);
}
static inline HRESULT INameSpaceTreeControl_GetItemRect(INameSpaceTreeControl* This,IShellItem *psi,RECT *prect) {
    return This->lpVtbl->GetItemRect(This,psi,prect);
}
static inline 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 nsctsFlags);

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

#endif


#endif  /* __INameSpaceTreeControl2_INTERFACE_DEFINED__ */


#define NSTCS2_ALLMASK (NSTCS2_INTERRUPTNOTIFICATIONS | NSTCS2_SHOWNULLSPACEMENU | NSTCS2_DISPLAYPADDING)
#define SID_SNavigationPane IID_INameSpaceTreeControl

#define ISLBUTTON(x) (NSTCECT_LBUTTON == ((x) & NSTCECT_BUTTON))
#define ISMBUTTON(x) (NSTCECT_MBUTTON == ((x) & NSTCECT_BUTTON))
#define ISRBUTTON(x) (NSTCECT_RBUTTON == ((x) & NSTCECT_BUTTON))
#define ISDBLCLICK(x) (NSTCECT_DBLCLICK == ((x) & NSTCECT_DBLCLICK))

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

enum _NSTCEHITTEST {
    NSTCEHT_NOWHERE = 0x1,
    NSTCEHT_ONITEMICON = 0x2,
    NSTCEHT_ONITEMLABEL = 0x4,
    NSTCEHT_ONITEMINDENT = 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,
        WINBOOL fIsRoot) = 0;

    virtual HRESULT STDMETHODCALLTYPE OnItemDeleted(
        IShellItem *psi,
        WINBOOL 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,
        WINBOOL fIsRoot);

    HRESULT (STDMETHODCALLTYPE *OnItemDeleted)(
        INameSpaceTreeControlEvents *This,
        IShellItem *psi,
        WINBOOL 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 inline HRESULT INameSpaceTreeControlEvents_QueryInterface(INameSpaceTreeControlEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG INameSpaceTreeControlEvents_AddRef(INameSpaceTreeControlEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG INameSpaceTreeControlEvents_Release(INameSpaceTreeControlEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** INameSpaceTreeControlEvents methods ***/
static inline HRESULT INameSpaceTreeControlEvents_OnItemClick(INameSpaceTreeControlEvents* This,IShellItem *psi,NSTCEHITTEST nstceHitTest,NSTCECLICKTYPE nstceClickType) {
    return This->lpVtbl->OnItemClick(This,psi,nstceHitTest,nstceClickType);
}
static inline HRESULT INameSpaceTreeControlEvents_OnPropertyItemCommit(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnPropertyItemCommit(This,psi);
}
static inline HRESULT INameSpaceTreeControlEvents_OnItemStateChanging(INameSpaceTreeControlEvents* This,IShellItem *psi,NSTCITEMSTATE nstcisMask,NSTCITEMSTATE nstcisState) {
    return This->lpVtbl->OnItemStateChanging(This,psi,nstcisMask,nstcisState);
}
static inline HRESULT INameSpaceTreeControlEvents_OnItemStateChanged(INameSpaceTreeControlEvents* This,IShellItem *psi,NSTCITEMSTATE nstcisMask,NSTCITEMSTATE nstcisState) {
    return This->lpVtbl->OnItemStateChanged(This,psi,nstcisMask,nstcisState);
}
static inline HRESULT INameSpaceTreeControlEvents_OnSelectionChanged(INameSpaceTreeControlEvents* This,IShellItemArray *psiaSelection) {
    return This->lpVtbl->OnSelectionChanged(This,psiaSelection);
}
static inline HRESULT INameSpaceTreeControlEvents_OnKeyboardInput(INameSpaceTreeControlEvents* This,UINT uMsg,WPARAM wParam,LPARAM lParam) {
    return This->lpVtbl->OnKeyboardInput(This,uMsg,wParam,lParam);
}
static inline HRESULT INameSpaceTreeControlEvents_OnBeforeExpand(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnBeforeExpand(This,psi);
}
static inline HRESULT INameSpaceTreeControlEvents_OnAfterExpand(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnAfterExpand(This,psi);
}
static inline HRESULT INameSpaceTreeControlEvents_OnBeginLabelEdit(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnBeginLabelEdit(This,psi);
}
static inline HRESULT INameSpaceTreeControlEvents_OnEndLabelEdit(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnEndLabelEdit(This,psi);
}
static inline HRESULT INameSpaceTreeControlEvents_OnGetToolTip(INameSpaceTreeControlEvents* This,IShellItem *psi,LPWSTR pszTip,int cchTip) {
    return This->lpVtbl->OnGetToolTip(This,psi,pszTip,cchTip);
}
static inline HRESULT INameSpaceTreeControlEvents_OnBeforeItemDelete(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnBeforeItemDelete(This,psi);
}
static inline HRESULT INameSpaceTreeControlEvents_OnItemAdded(INameSpaceTreeControlEvents* This,IShellItem *psi,WINBOOL fIsRoot) {
    return This->lpVtbl->OnItemAdded(This,psi,fIsRoot);
}
static inline HRESULT INameSpaceTreeControlEvents_OnItemDeleted(INameSpaceTreeControlEvents* This,IShellItem *psi,WINBOOL fIsRoot) {
    return This->lpVtbl->OnItemDeleted(This,psi,fIsRoot);
}
static inline HRESULT INameSpaceTreeControlEvents_OnBeforeContextMenu(INameSpaceTreeControlEvents* This,IShellItem *psi,REFIID riid,void **ppv) {
    return This->lpVtbl->OnBeforeContextMenu(This,psi,riid,ppv);
}
static inline HRESULT INameSpaceTreeControlEvents_OnAfterContextMenu(INameSpaceTreeControlEvents* This,IShellItem *psi,IContextMenu *pcmIn,REFIID riid,void **ppv) {
    return This->lpVtbl->OnAfterContextMenu(This,psi,pcmIn,riid,ppv);
}
static inline HRESULT INameSpaceTreeControlEvents_OnBeforeStateImageChange(INameSpaceTreeControlEvents* This,IShellItem *psi) {
    return This->lpVtbl->OnBeforeStateImageChange(This,psi);
}
static inline 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__ */


#define NSTCDHPOS_ONTOP  -1

/*****************************************************************************
 * 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,
        WINBOOL 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,
        WINBOOL 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 inline HRESULT INameSpaceTreeControlDropHandler_QueryInterface(INameSpaceTreeControlDropHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG INameSpaceTreeControlDropHandler_AddRef(INameSpaceTreeControlDropHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG INameSpaceTreeControlDropHandler_Release(INameSpaceTreeControlDropHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** INameSpaceTreeControlDropHandler methods ***/
static inline HRESULT INameSpaceTreeControlDropHandler_OnDragEnter(INameSpaceTreeControlDropHandler* This,IShellItem *psiOver,IShellItemArray *psiaData,WINBOOL fOutsideSource,DWORD grfKeyState,DWORD *pdwEffect) {
    return This->lpVtbl->OnDragEnter(This,psiOver,psiaData,fOutsideSource,grfKeyState,pdwEffect);
}
static inline HRESULT INameSpaceTreeControlDropHandler_OnDragOver(INameSpaceTreeControlDropHandler* This,IShellItem *psiOver,IShellItemArray *psiaData,DWORD grfKeyState,DWORD *pdwEffect) {
    return This->lpVtbl->OnDragOver(This,psiOver,psiaData,grfKeyState,pdwEffect);
}
static inline HRESULT INameSpaceTreeControlDropHandler_OnDragPosition(INameSpaceTreeControlDropHandler* This,IShellItem *psiOver,IShellItemArray *psiaData,int iNewPosition,int iOldPosition) {
    return This->lpVtbl->OnDragPosition(This,psiOver,psiaData,iNewPosition,iOldPosition);
}
static inline 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 inline HRESULT INameSpaceTreeControlDropHandler_OnDropPosition(INameSpaceTreeControlDropHandler* This,IShellItem *psiOver,IShellItemArray *psiaData,int iNewPosition,int iOldPosition) {
    return This->lpVtbl->OnDropPosition(This,psiOver,psiaData,iNewPosition,iOldPosition);
}
static inline HRESULT INameSpaceTreeControlDropHandler_OnDragLeave(INameSpaceTreeControlDropHandler* This,IShellItem *psiOver) {
    return This->lpVtbl->OnDragLeave(This,psiOver);
}
#endif
#endif

#endif


#endif  /* __INameSpaceTreeControlDropHandler_INTERFACE_DEFINED__ */


/*****************************************************************************
 * INameSpaceTreeAccessible interface
 */
#ifndef __INameSpaceTreeAccessible_INTERFACE_DEFINED__
#define __INameSpaceTreeAccessible_INTERFACE_DEFINED__

DEFINE_GUID(IID_INameSpaceTreeAccessible, 0x71f312de, 0x43ed, 0x4190, 0x84,0x77, 0xe9,0x53,0x6b,0x82,0x35,0x0b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("71f312de-43ed-4190-8477-e9536b82350b")
INameSpaceTreeAccessible : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnGetDefaultAccessibilityAction(
        IShellItem *psi,
        BSTR *pbstrDefaultAction) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE OnGetAccessibilityRole(
        IShellItem *psi,
        VARIANT *pvarRole) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INameSpaceTreeAccessible, 0x71f312de, 0x43ed, 0x4190, 0x84,0x77, 0xe9,0x53,0x6b,0x82,0x35,0x0b)
#endif
#else
typedef struct INameSpaceTreeAccessibleVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INameSpaceTreeAccessible methods ***/
    HRESULT (STDMETHODCALLTYPE *OnGetDefaultAccessibilityAction)(
        INameSpaceTreeAccessible *This,
        IShellItem *psi,
        BSTR *pbstrDefaultAction);

    HRESULT (STDMETHODCALLTYPE *OnDoDefaultAccessibilityAction)(
        INameSpaceTreeAccessible *This,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *OnGetAccessibilityRole)(
        INameSpaceTreeAccessible *This,
        IShellItem *psi,
        VARIANT *pvarRole);

    END_INTERFACE
} INameSpaceTreeAccessibleVtbl;

interface INameSpaceTreeAccessible {
    CONST_VTBL INameSpaceTreeAccessibleVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define INameSpaceTreeAccessible_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INameSpaceTreeAccessible_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INameSpaceTreeAccessible_Release(This) (This)->lpVtbl->Release(This)
/*** INameSpaceTreeAccessible methods ***/
#define INameSpaceTreeAccessible_OnGetDefaultAccessibilityAction(This,psi,pbstrDefaultAction) (This)->lpVtbl->OnGetDefaultAccessibilityAction(This,psi,pbstrDefaultAction)
#define INameSpaceTreeAccessible_OnDoDefaultAccessibilityAction(This,psi) (This)->lpVtbl->OnDoDefaultAccessibilityAction(This,psi)
#define INameSpaceTreeAccessible_OnGetAccessibilityRole(This,psi,pvarRole) (This)->lpVtbl->OnGetAccessibilityRole(This,psi,pvarRole)
#else
/*** IUnknown methods ***/
static inline HRESULT INameSpaceTreeAccessible_QueryInterface(INameSpaceTreeAccessible* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG INameSpaceTreeAccessible_AddRef(INameSpaceTreeAccessible* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG INameSpaceTreeAccessible_Release(INameSpaceTreeAccessible* This) {
    return This->lpVtbl->Release(This);
}
/*** INameSpaceTreeAccessible methods ***/
static inline HRESULT INameSpaceTreeAccessible_OnGetDefaultAccessibilityAction(INameSpaceTreeAccessible* This,IShellItem *psi,BSTR *pbstrDefaultAction) {
    return This->lpVtbl->OnGetDefaultAccessibilityAction(This,psi,pbstrDefaultAction);
}
static inline HRESULT INameSpaceTreeAccessible_OnDoDefaultAccessibilityAction(INameSpaceTreeAccessible* This,IShellItem *psi) {
    return This->lpVtbl->OnDoDefaultAccessibilityAction(This,psi);
}
static inline HRESULT INameSpaceTreeAccessible_OnGetAccessibilityRole(INameSpaceTreeAccessible* This,IShellItem *psi,VARIANT *pvarRole) {
    return This->lpVtbl->OnGetAccessibilityRole(This,psi,pvarRole);
}
#endif
#endif

#endif


#endif  /* __INameSpaceTreeAccessible_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 inline HRESULT INameSpaceTreeControlCustomDraw_QueryInterface(INameSpaceTreeControlCustomDraw* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG INameSpaceTreeControlCustomDraw_AddRef(INameSpaceTreeControlCustomDraw* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG INameSpaceTreeControlCustomDraw_Release(INameSpaceTreeControlCustomDraw* This) {
    return This->lpVtbl->Release(This);
}
/*** INameSpaceTreeControlCustomDraw methods ***/
static inline HRESULT INameSpaceTreeControlCustomDraw_PrePaint(INameSpaceTreeControlCustomDraw* This,HDC hdc,RECT *prc,LRESULT *plres) {
    return This->lpVtbl->PrePaint(This,hdc,prc,plres);
}
static inline HRESULT INameSpaceTreeControlCustomDraw_PostPaint(INameSpaceTreeControlCustomDraw* This,HDC hdc,RECT *prc) {
    return This->lpVtbl->PostPaint(This,hdc,prc);
}
static inline 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 inline 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__ */


#if NTDDI_VERSION >= NTDDI_VISTA
/*****************************************************************************
 * INameSpaceTreeControlFolderCapabilities interface
 */
#ifndef __INameSpaceTreeControlFolderCapabilities_INTERFACE_DEFINED__
#define __INameSpaceTreeControlFolderCapabilities_INTERFACE_DEFINED__

typedef enum NSTCFOLDERCAPABILITIES {
    NSTCFC_NONE = 0x0,
    NSTCFC_PINNEDITEMFILTERING = 0x1,
    NSTCFC_DELAY_REGISTER_NOTIFY = 0x2
} NSTCFOLDERCAPABILITIES;

DEFINE_ENUM_FLAG_OPERATORS(NSTCFOLDERCAPABILITIES)

DEFINE_GUID(IID_INameSpaceTreeControlFolderCapabilities, 0xe9701183, 0xe6b3, 0x4ff2, 0x85,0x68, 0x81,0x36,0x15,0xfe,0xc7,0xbe);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e9701183-e6b3-4ff2-8568-813615fec7be")
INameSpaceTreeControlFolderCapabilities : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetFolderCapabilities(
        NSTCFOLDERCAPABILITIES nfcMask,
        NSTCFOLDERCAPABILITIES *pnfcValue) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INameSpaceTreeControlFolderCapabilities, 0xe9701183, 0xe6b3, 0x4ff2, 0x85,0x68, 0x81,0x36,0x15,0xfe,0xc7,0xbe)
#endif
#else
typedef struct INameSpaceTreeControlFolderCapabilitiesVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** INameSpaceTreeControlFolderCapabilities methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFolderCapabilities)(
        INameSpaceTreeControlFolderCapabilities *This,
        NSTCFOLDERCAPABILITIES nfcMask,
        NSTCFOLDERCAPABILITIES *pnfcValue);

    END_INTERFACE
} INameSpaceTreeControlFolderCapabilitiesVtbl;

interface INameSpaceTreeControlFolderCapabilities {
    CONST_VTBL INameSpaceTreeControlFolderCapabilitiesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define INameSpaceTreeControlFolderCapabilities_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INameSpaceTreeControlFolderCapabilities_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INameSpaceTreeControlFolderCapabilities_Release(This) (This)->lpVtbl->Release(This)
/*** INameSpaceTreeControlFolderCapabilities methods ***/
#define INameSpaceTreeControlFolderCapabilities_GetFolderCapabilities(This,nfcMask,pnfcValue) (This)->lpVtbl->GetFolderCapabilities(This,nfcMask,pnfcValue)
#else
/*** IUnknown methods ***/
static inline HRESULT INameSpaceTreeControlFolderCapabilities_QueryInterface(INameSpaceTreeControlFolderCapabilities* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG INameSpaceTreeControlFolderCapabilities_AddRef(INameSpaceTreeControlFolderCapabilities* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG INameSpaceTreeControlFolderCapabilities_Release(INameSpaceTreeControlFolderCapabilities* This) {
    return This->lpVtbl->Release(This);
}
/*** INameSpaceTreeControlFolderCapabilities methods ***/
static inline HRESULT INameSpaceTreeControlFolderCapabilities_GetFolderCapabilities(INameSpaceTreeControlFolderCapabilities* This,NSTCFOLDERCAPABILITIES nfcMask,NSTCFOLDERCAPABILITIES *pnfcValue) {
    return This->lpVtbl->GetFolderCapabilities(This,nfcMask,pnfcValue);
}
#endif
#endif

#endif


#endif  /* __INameSpaceTreeControlFolderCapabilities_INTERFACE_DEFINED__ */

#endif

#define E_PREVIEWHANDLER_DRM_FAIL _HRESULT_TYPEDEF_(0x86420001L)
#define E_PREVIEWHANDLER_NOAUTH   _HRESULT_TYPEDEF_(0x86420002L)
#define E_PREVIEWHANDLER_NOTFOUND _HRESULT_TYPEDEF_(0x86420003L)
#define E_PREVIEWHANDLER_CORRUPT  _HRESULT_TYPEDEF_(0x86420004L)

/*****************************************************************************
 * IPreviewHandler interface
 */
#ifndef __IPreviewHandler_INTERFACE_DEFINED__
#define __IPreviewHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPreviewHandler, 0x8895b1c6, 0xb41f, 0x4c1c, 0xa5,0x62, 0x0d,0x56,0x42,0x50,0x83,0x6f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8895b1c6-b41f-4c1c-a562-0d564250836f")
IPreviewHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetWindow(
        HWND hwnd,
        const RECT *prc) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRect(
        const RECT *prc) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoPreview(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unload(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFocus(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE QueryFocus(
        HWND *phwnd) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPreviewHandler, 0x8895b1c6, 0xb41f, 0x4c1c, 0xa5,0x62, 0x0d,0x56,0x42,0x50,0x83,0x6f)
#endif
#else
typedef struct IPreviewHandlerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IPreviewHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *SetWindow)(
        IPreviewHandler *This,
        HWND hwnd,
        const RECT *prc);

    HRESULT (STDMETHODCALLTYPE *SetRect)(
        IPreviewHandler *This,
        const RECT *prc);

    HRESULT (STDMETHODCALLTYPE *DoPreview)(
        IPreviewHandler *This);

    HRESULT (STDMETHODCALLTYPE *Unload)(
        IPreviewHandler *This);

    HRESULT (STDMETHODCALLTYPE *SetFocus)(
        IPreviewHandler *This);

    HRESULT (STDMETHODCALLTYPE *QueryFocus)(
        IPreviewHandler *This,
        HWND *phwnd);

    HRESULT (STDMETHODCALLTYPE *TranslateAccelerator)(
        IPreviewHandler *This,
        MSG *pmsg);

    END_INTERFACE
} IPreviewHandlerVtbl;

interface IPreviewHandler {
    CONST_VTBL IPreviewHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPreviewHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPreviewHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPreviewHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IPreviewHandler methods ***/
#define IPreviewHandler_SetWindow(This,hwnd,prc) (This)->lpVtbl->SetWindow(This,hwnd,prc)
#define IPreviewHandler_SetRect(This,prc) (This)->lpVtbl->SetRect(This,prc)
#define IPreviewHandler_DoPreview(This) (This)->lpVtbl->DoPreview(This)
#define IPreviewHandler_Unload(This) (This)->lpVtbl->Unload(This)
#define IPreviewHandler_SetFocus(This) (This)->lpVtbl->SetFocus(This)
#define IPreviewHandler_QueryFocus(This,phwnd) (This)->lpVtbl->QueryFocus(This,phwnd)
#define IPreviewHandler_TranslateAccelerator(This,pmsg) (This)->lpVtbl->TranslateAccelerator(This,pmsg)
#else
/*** IUnknown methods ***/
static inline HRESULT IPreviewHandler_QueryInterface(IPreviewHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPreviewHandler_AddRef(IPreviewHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPreviewHandler_Release(IPreviewHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IPreviewHandler methods ***/
static inline HRESULT IPreviewHandler_SetWindow(IPreviewHandler* This,HWND hwnd,const RECT *prc) {
    return This->lpVtbl->SetWindow(This,hwnd,prc);
}
static inline HRESULT IPreviewHandler_SetRect(IPreviewHandler* This,const RECT *prc) {
    return This->lpVtbl->SetRect(This,prc);
}
static inline HRESULT IPreviewHandler_DoPreview(IPreviewHandler* This) {
    return This->lpVtbl->DoPreview(This);
}
static inline HRESULT IPreviewHandler_Unload(IPreviewHandler* This) {
    return This->lpVtbl->Unload(This);
}
static inline HRESULT IPreviewHandler_SetFocus(IPreviewHandler* This) {
    return This->lpVtbl->SetFocus(This);
}
static inline HRESULT IPreviewHandler_QueryFocus(IPreviewHandler* This,HWND *phwnd) {
    return This->lpVtbl->QueryFocus(This,phwnd);
}
static inline HRESULT IPreviewHandler_TranslateAccelerator(IPreviewHandler* This,MSG *pmsg) {
    return This->lpVtbl->TranslateAccelerator(This,pmsg);
}
#endif
#endif

#endif


#endif  /* __IPreviewHandler_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 *pinfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE TranslateAccelerator(
        MSG *pmsg) = 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 *pinfo);

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

    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,pinfo) (This)->lpVtbl->GetWindowContext(This,pinfo)
#define IPreviewHandlerFrame_TranslateAccelerator(This,pmsg) (This)->lpVtbl->TranslateAccelerator(This,pmsg)
#else
/*** IUnknown methods ***/
static inline HRESULT IPreviewHandlerFrame_QueryInterface(IPreviewHandlerFrame* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPreviewHandlerFrame_AddRef(IPreviewHandlerFrame* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPreviewHandlerFrame_Release(IPreviewHandlerFrame* This) {
    return This->lpVtbl->Release(This);
}
/*** IPreviewHandlerFrame methods ***/
static inline HRESULT IPreviewHandlerFrame_GetWindowContext(IPreviewHandlerFrame* This,PREVIEWHANDLERFRAMEINFO *pinfo) {
    return This->lpVtbl->GetWindowContext(This,pinfo);
}
static inline HRESULT IPreviewHandlerFrame_TranslateAccelerator(IPreviewHandlerFrame* This,MSG *pmsg) {
    return This->lpVtbl->TranslateAccelerator(This,pmsg);
}
#endif
#endif

#endif


#endif  /* __IPreviewHandlerFrame_INTERFACE_DEFINED__ */


#if NTDDI_VERSION >= NTDDI_VISTA
/*****************************************************************************
 * ITrayDeskBand interface
 */
#ifndef __ITrayDeskBand_INTERFACE_DEFINED__
#define __ITrayDeskBand_INTERFACE_DEFINED__

DEFINE_GUID(IID_ITrayDeskBand, 0x6d67e846, 0x5b9c, 0x4db8, 0x9c,0xbc, 0xdd,0xe1,0x2f,0x42,0x54,0xf1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6d67e846-5b9c-4db8-9cbc-dde12f4254f1")
ITrayDeskBand : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ShowDeskBand(
        REFCLSID clsid) = 0;

    virtual HRESULT STDMETHODCALLTYPE HideDeskBand(
        REFCLSID clsid) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsDeskBandShown(
        REFCLSID clsid) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeskBandRegistrationChanged(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ITrayDeskBand, 0x6d67e846, 0x5b9c, 0x4db8, 0x9c,0xbc, 0xdd,0xe1,0x2f,0x42,0x54,0xf1)
#endif
#else
typedef struct ITrayDeskBandVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ITrayDeskBand methods ***/
    HRESULT (STDMETHODCALLTYPE *ShowDeskBand)(
        ITrayDeskBand *This,
        REFCLSID clsid);

    HRESULT (STDMETHODCALLTYPE *HideDeskBand)(
        ITrayDeskBand *This,
        REFCLSID clsid);

    HRESULT (STDMETHODCALLTYPE *IsDeskBandShown)(
        ITrayDeskBand *This,
        REFCLSID clsid);

    HRESULT (STDMETHODCALLTYPE *DeskBandRegistrationChanged)(
        ITrayDeskBand *This);

    END_INTERFACE
} ITrayDeskBandVtbl;

interface ITrayDeskBand {
    CONST_VTBL ITrayDeskBandVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ITrayDeskBand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ITrayDeskBand_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ITrayDeskBand_Release(This) (This)->lpVtbl->Release(This)
/*** ITrayDeskBand methods ***/
#define ITrayDeskBand_ShowDeskBand(This,clsid) (This)->lpVtbl->ShowDeskBand(This,clsid)
#define ITrayDeskBand_HideDeskBand(This,clsid) (This)->lpVtbl->HideDeskBand(This,clsid)
#define ITrayDeskBand_IsDeskBandShown(This,clsid) (This)->lpVtbl->IsDeskBandShown(This,clsid)
#define ITrayDeskBand_DeskBandRegistrationChanged(This) (This)->lpVtbl->DeskBandRegistrationChanged(This)
#else
/*** IUnknown methods ***/
static inline HRESULT ITrayDeskBand_QueryInterface(ITrayDeskBand* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ITrayDeskBand_AddRef(ITrayDeskBand* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ITrayDeskBand_Release(ITrayDeskBand* This) {
    return This->lpVtbl->Release(This);
}
/*** ITrayDeskBand methods ***/
static inline HRESULT ITrayDeskBand_ShowDeskBand(ITrayDeskBand* This,REFCLSID clsid) {
    return This->lpVtbl->ShowDeskBand(This,clsid);
}
static inline HRESULT ITrayDeskBand_HideDeskBand(ITrayDeskBand* This,REFCLSID clsid) {
    return This->lpVtbl->HideDeskBand(This,clsid);
}
static inline HRESULT ITrayDeskBand_IsDeskBandShown(ITrayDeskBand* This,REFCLSID clsid) {
    return This->lpVtbl->IsDeskBandShown(This,clsid);
}
static inline HRESULT ITrayDeskBand_DeskBandRegistrationChanged(ITrayDeskBand* This) {
    return This->lpVtbl->DeskBandRegistrationChanged(This);
}
#endif
#endif

#endif


#endif  /* __ITrayDeskBand_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IBandHost interface
 */
#ifndef __IBandHost_INTERFACE_DEFINED__
#define __IBandHost_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBandHost, 0xb9075c7c, 0xd48e, 0x403f, 0xab,0x99, 0xd6,0xc7,0x7a,0x10,0x84,0xac);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b9075c7c-d48e-403f-ab99-d6c77a1084ac")
IBandHost : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CreateBand(
        REFCLSID rclsidBand,
        WINBOOL fAvailable,
        WINBOOL fVisible,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBandAvailability(
        REFCLSID rclsidBand,
        WINBOOL fAvailable) = 0;

    virtual HRESULT STDMETHODCALLTYPE DestroyBand(
        REFCLSID rclsidBand) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBandHost, 0xb9075c7c, 0xd48e, 0x403f, 0xab,0x99, 0xd6,0xc7,0x7a,0x10,0x84,0xac)
#endif
#else
typedef struct IBandHostVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IBandHost methods ***/
    HRESULT (STDMETHODCALLTYPE *CreateBand)(
        IBandHost *This,
        REFCLSID rclsidBand,
        WINBOOL fAvailable,
        WINBOOL fVisible,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *SetBandAvailability)(
        IBandHost *This,
        REFCLSID rclsidBand,
        WINBOOL fAvailable);

    HRESULT (STDMETHODCALLTYPE *DestroyBand)(
        IBandHost *This,
        REFCLSID rclsidBand);

    END_INTERFACE
} IBandHostVtbl;

interface IBandHost {
    CONST_VTBL IBandHostVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBandHost_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBandHost_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBandHost_Release(This) (This)->lpVtbl->Release(This)
/*** IBandHost methods ***/
#define IBandHost_CreateBand(This,rclsidBand,fAvailable,fVisible,riid,ppv) (This)->lpVtbl->CreateBand(This,rclsidBand,fAvailable,fVisible,riid,ppv)
#define IBandHost_SetBandAvailability(This,rclsidBand,fAvailable) (This)->lpVtbl->SetBandAvailability(This,rclsidBand,fAvailable)
#define IBandHost_DestroyBand(This,rclsidBand) (This)->lpVtbl->DestroyBand(This,rclsidBand)
#else
/*** IUnknown methods ***/
static inline HRESULT IBandHost_QueryInterface(IBandHost* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IBandHost_AddRef(IBandHost* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IBandHost_Release(IBandHost* This) {
    return This->lpVtbl->Release(This);
}
/*** IBandHost methods ***/
static inline HRESULT IBandHost_CreateBand(IBandHost* This,REFCLSID rclsidBand,WINBOOL fAvailable,WINBOOL fVisible,REFIID riid,void **ppv) {
    return This->lpVtbl->CreateBand(This,rclsidBand,fAvailable,fVisible,riid,ppv);
}
static inline HRESULT IBandHost_SetBandAvailability(IBandHost* This,REFCLSID rclsidBand,WINBOOL fAvailable) {
    return This->lpVtbl->SetBandAvailability(This,rclsidBand,fAvailable);
}
static inline HRESULT IBandHost_DestroyBand(IBandHost* This,REFCLSID rclsidBand) {
    return This->lpVtbl->DestroyBand(This,rclsidBand);
}
#endif
#endif

#endif


#endif  /* __IBandHost_INTERFACE_DEFINED__ */


#define SID_SBandHost IID_IBandHost

typedef GUID EXPLORERPANE;

#if 0
typedef EXPLORERPANE *REFEXPLORERPANE;
#endif

#ifdef __cplusplus
#define REFEXPLORERPANE const EXPLORERPANE &
#else
#define REFEXPLORERPANE const EXPLORERPANE * __MIDL_CONST
#endif

/*****************************************************************************
 * IExplorerPaneVisibility interface
 */
#ifndef __IExplorerPaneVisibility_INTERFACE_DEFINED__
#define __IExplorerPaneVisibility_INTERFACE_DEFINED__

enum _EXPLORERPANESTATE {
    EPS_DONTCARE = 0x0,
    EPS_DEFAULT_ON = 0x1,
    EPS_DEFAULT_OFF = 0x2,
    EPS_STATEMASK = 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 inline HRESULT IExplorerPaneVisibility_QueryInterface(IExplorerPaneVisibility* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IExplorerPaneVisibility_AddRef(IExplorerPaneVisibility* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IExplorerPaneVisibility_Release(IExplorerPaneVisibility* This) {
    return This->lpVtbl->Release(This);
}
/*** IExplorerPaneVisibility methods ***/
static inline HRESULT IExplorerPaneVisibility_GetPaneState(IExplorerPaneVisibility* This,REFEXPLORERPANE ep,EXPLORERPANESTATE *peps) {
    return This->lpVtbl->GetPaneState(This,ep,peps);
}
#endif
#endif

#endif


#endif  /* __IExplorerPaneVisibility_INTERFACE_DEFINED__ */


#define SID_ExplorerPaneVisibility IID_IExplorerPaneVisibility

/*****************************************************************************
 * 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 inline HRESULT IContextMenuCB_QueryInterface(IContextMenuCB* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IContextMenuCB_AddRef(IContextMenuCB* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IContextMenuCB_Release(IContextMenuCB* This) {
    return This->lpVtbl->Release(This);
}
/*** IContextMenuCB methods ***/
static inline 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__ */

#endif

/*****************************************************************************
 * IDefaultExtractIconInit interface
 */
#ifndef __IDefaultExtractIconInit_INTERFACE_DEFINED__
#define __IDefaultExtractIconInit_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDefaultExtractIconInit, 0x41ded17d, 0xd6b3, 0x4261, 0x99,0x7d, 0x88,0xc6,0x0e,0x4b,0x1d,0x58);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("41ded17d-d6b3-4261-997d-88c60e4b1d58")
IDefaultExtractIconInit : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFlags(
        UINT uFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetKey(
        HKEY hkey) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetNormalIcon(
        LPCWSTR pszFile,
        int iIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOpenIcon(
        LPCWSTR pszFile,
        int iIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetShortcutIcon(
        LPCWSTR pszFile,
        int iIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDefaultIcon(
        LPCWSTR pszFile,
        int iIcon) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDefaultExtractIconInit, 0x41ded17d, 0xd6b3, 0x4261, 0x99,0x7d, 0x88,0xc6,0x0e,0x4b,0x1d,0x58)
#endif
#else
typedef struct IDefaultExtractIconInitVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDefaultExtractIconInit methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFlags)(
        IDefaultExtractIconInit *This,
        UINT uFlags);

    HRESULT (STDMETHODCALLTYPE *SetKey)(
        IDefaultExtractIconInit *This,
        HKEY hkey);

    HRESULT (STDMETHODCALLTYPE *SetNormalIcon)(
        IDefaultExtractIconInit *This,
        LPCWSTR pszFile,
        int iIcon);

    HRESULT (STDMETHODCALLTYPE *SetOpenIcon)(
        IDefaultExtractIconInit *This,
        LPCWSTR pszFile,
        int iIcon);

    HRESULT (STDMETHODCALLTYPE *SetShortcutIcon)(
        IDefaultExtractIconInit *This,
        LPCWSTR pszFile,
        int iIcon);

    HRESULT (STDMETHODCALLTYPE *SetDefaultIcon)(
        IDefaultExtractIconInit *This,
        LPCWSTR pszFile,
        int iIcon);

    END_INTERFACE
} IDefaultExtractIconInitVtbl;

interface IDefaultExtractIconInit {
    CONST_VTBL IDefaultExtractIconInitVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDefaultExtractIconInit_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDefaultExtractIconInit_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDefaultExtractIconInit_Release(This) (This)->lpVtbl->Release(This)
/*** IDefaultExtractIconInit methods ***/
#define IDefaultExtractIconInit_SetFlags(This,uFlags) (This)->lpVtbl->SetFlags(This,uFlags)
#define IDefaultExtractIconInit_SetKey(This,hkey) (This)->lpVtbl->SetKey(This,hkey)
#define IDefaultExtractIconInit_SetNormalIcon(This,pszFile,iIcon) (This)->lpVtbl->SetNormalIcon(This,pszFile,iIcon)
#define IDefaultExtractIconInit_SetOpenIcon(This,pszFile,iIcon) (This)->lpVtbl->SetOpenIcon(This,pszFile,iIcon)
#define IDefaultExtractIconInit_SetShortcutIcon(This,pszFile,iIcon) (This)->lpVtbl->SetShortcutIcon(This,pszFile,iIcon)
#define IDefaultExtractIconInit_SetDefaultIcon(This,pszFile,iIcon) (This)->lpVtbl->SetDefaultIcon(This,pszFile,iIcon)
#else
/*** IUnknown methods ***/
static inline HRESULT IDefaultExtractIconInit_QueryInterface(IDefaultExtractIconInit* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDefaultExtractIconInit_AddRef(IDefaultExtractIconInit* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDefaultExtractIconInit_Release(IDefaultExtractIconInit* This) {
    return This->lpVtbl->Release(This);
}
/*** IDefaultExtractIconInit methods ***/
static inline HRESULT IDefaultExtractIconInit_SetFlags(IDefaultExtractIconInit* This,UINT uFlags) {
    return This->lpVtbl->SetFlags(This,uFlags);
}
static inline HRESULT IDefaultExtractIconInit_SetKey(IDefaultExtractIconInit* This,HKEY hkey) {
    return This->lpVtbl->SetKey(This,hkey);
}
static inline HRESULT IDefaultExtractIconInit_SetNormalIcon(IDefaultExtractIconInit* This,LPCWSTR pszFile,int iIcon) {
    return This->lpVtbl->SetNormalIcon(This,pszFile,iIcon);
}
static inline HRESULT IDefaultExtractIconInit_SetOpenIcon(IDefaultExtractIconInit* This,LPCWSTR pszFile,int iIcon) {
    return This->lpVtbl->SetOpenIcon(This,pszFile,iIcon);
}
static inline HRESULT IDefaultExtractIconInit_SetShortcutIcon(IDefaultExtractIconInit* This,LPCWSTR pszFile,int iIcon) {
    return This->lpVtbl->SetShortcutIcon(This,pszFile,iIcon);
}
static inline HRESULT IDefaultExtractIconInit_SetDefaultIcon(IDefaultExtractIconInit* This,LPCWSTR pszFile,int iIcon) {
    return This->lpVtbl->SetDefaultIcon(This,pszFile,iIcon);
}
#endif
#endif

#endif


#endif  /* __IDefaultExtractIconInit_INTERFACE_DEFINED__ */


STDAPI SHCreateDefaultExtractIcon(REFIID riid, void **ppv);

#ifndef __IEnumExplorerCommand_FWD_DEFINED__
#define __IEnumExplorerCommand_FWD_DEFINED__
typedef interface IEnumExplorerCommand IEnumExplorerCommand;
#ifdef __cplusplus
interface IEnumExplorerCommand;
#endif /* __cplusplus */
#endif


/*****************************************************************************
 * IExplorerCommand interface
 */
#ifndef __IExplorerCommand_INTERFACE_DEFINED__
#define __IExplorerCommand_INTERFACE_DEFINED__

enum _EXPCMDSTATE {
    ECS_ENABLED = 0x0,
    ECS_DISABLED = 0x1,
    ECS_HIDDEN = 0x2,
    ECS_CHECKBOX = 0x4,
    ECS_CHECKED = 0x8,
    ECS_RADIOCHECK = 0x10
};

typedef DWORD EXPCMDSTATE;

enum _EXPCMDFLAGS {
    ECF_DEFAULT = 0x0,
    ECF_HASSUBCOMMANDS = 0x1,
    ECF_HASSPLITBUTTON = 0x2,
    ECF_HIDELABEL = 0x4,
    ECF_ISSEPARATOR = 0x8,
    ECF_HASLUASHIELD = 0x10,
    ECF_SEPARATORBEFORE = 0x20,
    ECF_SEPARATORAFTER = 0x40,
    ECF_ISDROPDOWN = 0x80,
    ECF_TOGGLEABLE = 0x100,
    ECF_AUTOMENUICONS = 0x200
};

typedef DWORD EXPCMDFLAGS;

DEFINE_GUID(IID_IExplorerCommand, 0xa08ce4d0, 0xfa25, 0x44ab, 0xb5,0x7c, 0xc7,0xb1,0xc3,0x23,0xe0,0xb9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a08ce4d0-fa25-44ab-b57c-c7b1c323e0b9")
IExplorerCommand : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetTitle(
        IShellItemArray *psiItemArray,
        LPWSTR *ppszName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIcon(
        IShellItemArray *psiItemArray,
        LPWSTR *ppszIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetToolTip(
        IShellItemArray *psiItemArray,
        LPWSTR *ppszInfotip) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCanonicalName(
        GUID *pguidCommandName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetState(
        IShellItemArray *psiItemArray,
        WINBOOL fOkToBeSlow,
        EXPCMDSTATE *pCmdState) = 0;

    virtual HRESULT STDMETHODCALLTYPE Invoke(
        IShellItemArray *psiItemArray,
        IBindCtx *pbc) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlags(
        EXPCMDFLAGS *pFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumSubCommands(
        IEnumExplorerCommand **ppEnum) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExplorerCommand, 0xa08ce4d0, 0xfa25, 0x44ab, 0xb5,0x7c, 0xc7,0xb1,0xc3,0x23,0xe0,0xb9)
#endif
#else
typedef struct IExplorerCommandVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IExplorerCommand methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTitle)(
        IExplorerCommand *This,
        IShellItemArray *psiItemArray,
        LPWSTR *ppszName);

    HRESULT (STDMETHODCALLTYPE *GetIcon)(
        IExplorerCommand *This,
        IShellItemArray *psiItemArray,
        LPWSTR *ppszIcon);

    HRESULT (STDMETHODCALLTYPE *GetToolTip)(
        IExplorerCommand *This,
        IShellItemArray *psiItemArray,
        LPWSTR *ppszInfotip);

    HRESULT (STDMETHODCALLTYPE *GetCanonicalName)(
        IExplorerCommand *This,
        GUID *pguidCommandName);

    HRESULT (STDMETHODCALLTYPE *GetState)(
        IExplorerCommand *This,
        IShellItemArray *psiItemArray,
        WINBOOL fOkToBeSlow,
        EXPCMDSTATE *pCmdState);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IExplorerCommand *This,
        IShellItemArray *psiItemArray,
        IBindCtx *pbc);

    HRESULT (STDMETHODCALLTYPE *GetFlags)(
        IExplorerCommand *This,
        EXPCMDFLAGS *pFlags);

    HRESULT (STDMETHODCALLTYPE *EnumSubCommands)(
        IExplorerCommand *This,
        IEnumExplorerCommand **ppEnum);

    END_INTERFACE
} IExplorerCommandVtbl;

interface IExplorerCommand {
    CONST_VTBL IExplorerCommandVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IExplorerCommand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExplorerCommand_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExplorerCommand_Release(This) (This)->lpVtbl->Release(This)
/*** IExplorerCommand methods ***/
#define IExplorerCommand_GetTitle(This,psiItemArray,ppszName) (This)->lpVtbl->GetTitle(This,psiItemArray,ppszName)
#define IExplorerCommand_GetIcon(This,psiItemArray,ppszIcon) (This)->lpVtbl->GetIcon(This,psiItemArray,ppszIcon)
#define IExplorerCommand_GetToolTip(This,psiItemArray,ppszInfotip) (This)->lpVtbl->GetToolTip(This,psiItemArray,ppszInfotip)
#define IExplorerCommand_GetCanonicalName(This,pguidCommandName) (This)->lpVtbl->GetCanonicalName(This,pguidCommandName)
#define IExplorerCommand_GetState(This,psiItemArray,fOkToBeSlow,pCmdState) (This)->lpVtbl->GetState(This,psiItemArray,fOkToBeSlow,pCmdState)
#define IExplorerCommand_Invoke(This,psiItemArray,pbc) (This)->lpVtbl->Invoke(This,psiItemArray,pbc)
#define IExplorerCommand_GetFlags(This,pFlags) (This)->lpVtbl->GetFlags(This,pFlags)
#define IExplorerCommand_EnumSubCommands(This,ppEnum) (This)->lpVtbl->EnumSubCommands(This,ppEnum)
#else
/*** IUnknown methods ***/
static inline HRESULT IExplorerCommand_QueryInterface(IExplorerCommand* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IExplorerCommand_AddRef(IExplorerCommand* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IExplorerCommand_Release(IExplorerCommand* This) {
    return This->lpVtbl->Release(This);
}
/*** IExplorerCommand methods ***/
static inline HRESULT IExplorerCommand_GetTitle(IExplorerCommand* This,IShellItemArray *psiItemArray,LPWSTR *ppszName) {
    return This->lpVtbl->GetTitle(This,psiItemArray,ppszName);
}
static inline HRESULT IExplorerCommand_GetIcon(IExplorerCommand* This,IShellItemArray *psiItemArray,LPWSTR *ppszIcon) {
    return This->lpVtbl->GetIcon(This,psiItemArray,ppszIcon);
}
static inline HRESULT IExplorerCommand_GetToolTip(IExplorerCommand* This,IShellItemArray *psiItemArray,LPWSTR *ppszInfotip) {
    return This->lpVtbl->GetToolTip(This,psiItemArray,ppszInfotip);
}
static inline HRESULT IExplorerCommand_GetCanonicalName(IExplorerCommand* This,GUID *pguidCommandName) {
    return This->lpVtbl->GetCanonicalName(This,pguidCommandName);
}
static inline HRESULT IExplorerCommand_GetState(IExplorerCommand* This,IShellItemArray *psiItemArray,WINBOOL fOkToBeSlow,EXPCMDSTATE *pCmdState) {
    return This->lpVtbl->GetState(This,psiItemArray,fOkToBeSlow,pCmdState);
}
static inline HRESULT IExplorerCommand_Invoke(IExplorerCommand* This,IShellItemArray *psiItemArray,IBindCtx *pbc) {
    return This->lpVtbl->Invoke(This,psiItemArray,pbc);
}
static inline HRESULT IExplorerCommand_GetFlags(IExplorerCommand* This,EXPCMDFLAGS *pFlags) {
    return This->lpVtbl->GetFlags(This,pFlags);
}
static inline HRESULT IExplorerCommand_EnumSubCommands(IExplorerCommand* This,IEnumExplorerCommand **ppEnum) {
    return This->lpVtbl->EnumSubCommands(This,ppEnum);
}
#endif
#endif

#endif


#endif  /* __IExplorerCommand_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IExplorerCommandState interface
 */
#ifndef __IExplorerCommandState_INTERFACE_DEFINED__
#define __IExplorerCommandState_INTERFACE_DEFINED__

DEFINE_GUID(IID_IExplorerCommandState, 0xbddacb60, 0x7657, 0x47ae, 0x84,0x45, 0xd2,0x3e,0x1a,0xcf,0x82,0xae);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bddacb60-7657-47ae-8445-d23e1acf82ae")
IExplorerCommandState : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetState(
        IShellItemArray *psiItemArray,
        WINBOOL fOkToBeSlow,
        EXPCMDSTATE *pCmdState) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExplorerCommandState, 0xbddacb60, 0x7657, 0x47ae, 0x84,0x45, 0xd2,0x3e,0x1a,0xcf,0x82,0xae)
#endif
#else
typedef struct IExplorerCommandStateVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IExplorerCommandState methods ***/
    HRESULT (STDMETHODCALLTYPE *GetState)(
        IExplorerCommandState *This,
        IShellItemArray *psiItemArray,
        WINBOOL fOkToBeSlow,
        EXPCMDSTATE *pCmdState);

    END_INTERFACE
} IExplorerCommandStateVtbl;

interface IExplorerCommandState {
    CONST_VTBL IExplorerCommandStateVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IExplorerCommandState_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExplorerCommandState_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExplorerCommandState_Release(This) (This)->lpVtbl->Release(This)
/*** IExplorerCommandState methods ***/
#define IExplorerCommandState_GetState(This,psiItemArray,fOkToBeSlow,pCmdState) (This)->lpVtbl->GetState(This,psiItemArray,fOkToBeSlow,pCmdState)
#else
/*** IUnknown methods ***/
static inline HRESULT IExplorerCommandState_QueryInterface(IExplorerCommandState* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IExplorerCommandState_AddRef(IExplorerCommandState* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IExplorerCommandState_Release(IExplorerCommandState* This) {
    return This->lpVtbl->Release(This);
}
/*** IExplorerCommandState methods ***/
static inline HRESULT IExplorerCommandState_GetState(IExplorerCommandState* This,IShellItemArray *psiItemArray,WINBOOL fOkToBeSlow,EXPCMDSTATE *pCmdState) {
    return This->lpVtbl->GetState(This,psiItemArray,fOkToBeSlow,pCmdState);
}
#endif
#endif

#endif


#endif  /* __IExplorerCommandState_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IInitializeCommand interface
 */
#ifndef __IInitializeCommand_INTERFACE_DEFINED__
#define __IInitializeCommand_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInitializeCommand, 0x85075acf, 0x231f, 0x40ea, 0x96,0x10, 0xd2,0x6b,0x7b,0x58,0xf6,0x38);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("85075acf-231f-40ea-9610-d26b7b58f638")
IInitializeCommand : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        LPCWSTR pszCommandName,
        IPropertyBag *ppb) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInitializeCommand, 0x85075acf, 0x231f, 0x40ea, 0x96,0x10, 0xd2,0x6b,0x7b,0x58,0xf6,0x38)
#endif
#else
typedef struct IInitializeCommandVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IInitializeCommand methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IInitializeCommand *This,
        LPCWSTR pszCommandName,
        IPropertyBag *ppb);

    END_INTERFACE
} IInitializeCommandVtbl;

interface IInitializeCommand {
    CONST_VTBL IInitializeCommandVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInitializeCommand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInitializeCommand_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInitializeCommand_Release(This) (This)->lpVtbl->Release(This)
/*** IInitializeCommand methods ***/
#define IInitializeCommand_Initialize(This,pszCommandName,ppb) (This)->lpVtbl->Initialize(This,pszCommandName,ppb)
#else
/*** IUnknown methods ***/
static inline HRESULT IInitializeCommand_QueryInterface(IInitializeCommand* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IInitializeCommand_AddRef(IInitializeCommand* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IInitializeCommand_Release(IInitializeCommand* This) {
    return This->lpVtbl->Release(This);
}
/*** IInitializeCommand methods ***/
static inline HRESULT IInitializeCommand_Initialize(IInitializeCommand* This,LPCWSTR pszCommandName,IPropertyBag *ppb) {
    return This->lpVtbl->Initialize(This,pszCommandName,ppb);
}
#endif
#endif

#endif


#endif  /* __IInitializeCommand_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IEnumExplorerCommand interface
 */
#ifndef __IEnumExplorerCommand_INTERFACE_DEFINED__
#define __IEnumExplorerCommand_INTERFACE_DEFINED__

DEFINE_GUID(IID_IEnumExplorerCommand, 0xa88826f8, 0x186f, 0x4987, 0xaa,0xde, 0xea,0x0c,0xef,0x8f,0xbf,0xe8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a88826f8-186f-4987-aade-ea0cef8fbfe8")
IEnumExplorerCommand : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        IExplorerCommand **pUICommand,
        ULONG *pceltFetched) = 0;

    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

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

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumExplorerCommand, 0xa88826f8, 0x186f, 0x4987, 0xaa,0xde, 0xea,0x0c,0xef,0x8f,0xbf,0xe8)
#endif
#else
typedef struct IEnumExplorerCommandVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IEnumExplorerCommand methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumExplorerCommand *This,
        ULONG celt,
        IExplorerCommand **pUICommand,
        ULONG *pceltFetched);

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

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

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

    END_INTERFACE
} IEnumExplorerCommandVtbl;

interface IEnumExplorerCommand {
    CONST_VTBL IEnumExplorerCommandVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumExplorerCommand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumExplorerCommand_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumExplorerCommand_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumExplorerCommand methods ***/
#define IEnumExplorerCommand_Next(This,celt,pUICommand,pceltFetched) (This)->lpVtbl->Next(This,celt,pUICommand,pceltFetched)
#define IEnumExplorerCommand_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumExplorerCommand_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumExplorerCommand_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
#else
/*** IUnknown methods ***/
static inline HRESULT IEnumExplorerCommand_QueryInterface(IEnumExplorerCommand* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IEnumExplorerCommand_AddRef(IEnumExplorerCommand* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IEnumExplorerCommand_Release(IEnumExplorerCommand* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumExplorerCommand methods ***/
static inline HRESULT IEnumExplorerCommand_Next(IEnumExplorerCommand* This,ULONG celt,IExplorerCommand **pUICommand,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,pUICommand,pceltFetched);
}
static inline HRESULT IEnumExplorerCommand_Skip(IEnumExplorerCommand* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static inline HRESULT IEnumExplorerCommand_Reset(IEnumExplorerCommand* This) {
    return This->lpVtbl->Reset(This);
}
static inline HRESULT IEnumExplorerCommand_Clone(IEnumExplorerCommand* This,IEnumExplorerCommand **ppenum) {
    return This->lpVtbl->Clone(This,ppenum);
}
#endif
#endif

#endif

HRESULT STDMETHODCALLTYPE IEnumExplorerCommand_RemoteNext_Proxy(
    IEnumExplorerCommand* This,
    ULONG celt,
    IExplorerCommand **pUICommand,
    ULONG *pceltFetched);
void __RPC_STUB IEnumExplorerCommand_RemoteNext_Stub(
    IRpcStubBuffer* This,
    IRpcChannelBuffer* pRpcChannelBuffer,
    PRPC_MESSAGE pRpcMessage,
    DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumExplorerCommand_Next_Proxy(
    IEnumExplorerCommand* This,
    ULONG celt,
    IExplorerCommand **pUICommand,
    ULONG *pceltFetched);
HRESULT __RPC_STUB IEnumExplorerCommand_Next_Stub(
    IEnumExplorerCommand* This,
    ULONG celt,
    IExplorerCommand **pUICommand,
    ULONG *pceltFetched);

#endif  /* __IEnumExplorerCommand_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IExplorerCommandProvider interface
 */
#ifndef __IExplorerCommandProvider_INTERFACE_DEFINED__
#define __IExplorerCommandProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IExplorerCommandProvider, 0x64961751, 0x0835, 0x43c0, 0x8f,0xfe, 0xd5,0x76,0x86,0x53,0x0e,0x64);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("64961751-0835-43c0-8ffe-d57686530e64")
IExplorerCommandProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetCommands(
        IUnknown *punkSite,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCommand(
        REFGUID rguidCommandId,
        REFIID riid,
        void **ppv) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExplorerCommandProvider, 0x64961751, 0x0835, 0x43c0, 0x8f,0xfe, 0xd5,0x76,0x86,0x53,0x0e,0x64)
#endif
#else
typedef struct IExplorerCommandProviderVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IExplorerCommandProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetCommands)(
        IExplorerCommandProvider *This,
        IUnknown *punkSite,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetCommand)(
        IExplorerCommandProvider *This,
        REFGUID rguidCommandId,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} IExplorerCommandProviderVtbl;

interface IExplorerCommandProvider {
    CONST_VTBL IExplorerCommandProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IExplorerCommandProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExplorerCommandProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExplorerCommandProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IExplorerCommandProvider methods ***/
#define IExplorerCommandProvider_GetCommands(This,punkSite,riid,ppv) (This)->lpVtbl->GetCommands(This,punkSite,riid,ppv)
#define IExplorerCommandProvider_GetCommand(This,rguidCommandId,riid,ppv) (This)->lpVtbl->GetCommand(This,rguidCommandId,riid,ppv)
#else
/*** IUnknown methods ***/
static inline HRESULT IExplorerCommandProvider_QueryInterface(IExplorerCommandProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IExplorerCommandProvider_AddRef(IExplorerCommandProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IExplorerCommandProvider_Release(IExplorerCommandProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IExplorerCommandProvider methods ***/
static inline HRESULT IExplorerCommandProvider_GetCommands(IExplorerCommandProvider* This,IUnknown *punkSite,REFIID riid,void **ppv) {
    return This->lpVtbl->GetCommands(This,punkSite,riid,ppv);
}
static inline HRESULT IExplorerCommandProvider_GetCommand(IExplorerCommandProvider* This,REFGUID rguidCommandId,REFIID riid,void **ppv) {
    return This->lpVtbl->GetCommand(This,rguidCommandId,riid,ppv);
}
#endif
#endif

#endif


#endif  /* __IExplorerCommandProvider_INTERFACE_DEFINED__ */


typedef HANDLE HTHEME;

/*****************************************************************************
 * IInitializeNetworkFolder interface
 */
#ifndef __IInitializeNetworkFolder_INTERFACE_DEFINED__
#define __IInitializeNetworkFolder_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInitializeNetworkFolder, 0x6e0f9881, 0x42a8, 0x4f2a, 0x97,0xf8, 0x8a,0xf4,0xe0,0x26,0xd9,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6e0f9881-42a8-4f2a-97f8-8af4e026d92d")
IInitializeNetworkFolder : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        PCIDLIST_ABSOLUTE pidl,
        PCIDLIST_ABSOLUTE pidlTarget,
        UINT uDisplayType,
        LPCWSTR pszResName,
        LPCWSTR pszProvider) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInitializeNetworkFolder, 0x6e0f9881, 0x42a8, 0x4f2a, 0x97,0xf8, 0x8a,0xf4,0xe0,0x26,0xd9,0x2d)
#endif
#else
typedef struct IInitializeNetworkFolderVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IInitializeNetworkFolder methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IInitializeNetworkFolder *This,
        PCIDLIST_ABSOLUTE pidl,
        PCIDLIST_ABSOLUTE pidlTarget,
        UINT uDisplayType,
        LPCWSTR pszResName,
        LPCWSTR pszProvider);

    END_INTERFACE
} IInitializeNetworkFolderVtbl;

interface IInitializeNetworkFolder {
    CONST_VTBL IInitializeNetworkFolderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInitializeNetworkFolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInitializeNetworkFolder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInitializeNetworkFolder_Release(This) (This)->lpVtbl->Release(This)
/*** IInitializeNetworkFolder methods ***/
#define IInitializeNetworkFolder_Initialize(This,pidl,pidlTarget,uDisplayType,pszResName,pszProvider) (This)->lpVtbl->Initialize(This,pidl,pidlTarget,uDisplayType,pszResName,pszProvider)
#else
/*** IUnknown methods ***/
static inline HRESULT IInitializeNetworkFolder_QueryInterface(IInitializeNetworkFolder* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IInitializeNetworkFolder_AddRef(IInitializeNetworkFolder* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IInitializeNetworkFolder_Release(IInitializeNetworkFolder* This) {
    return This->lpVtbl->Release(This);
}
/*** IInitializeNetworkFolder methods ***/
static inline HRESULT IInitializeNetworkFolder_Initialize(IInitializeNetworkFolder* This,PCIDLIST_ABSOLUTE pidl,PCIDLIST_ABSOLUTE pidlTarget,UINT uDisplayType,LPCWSTR pszResName,LPCWSTR pszProvider) {
    return This->lpVtbl->Initialize(This,pidl,pidlTarget,uDisplayType,pszResName,pszProvider);
}
#endif
#endif

#endif


#endif  /* __IInitializeNetworkFolder_INTERFACE_DEFINED__ */


typedef enum CPVIEW {
    CPVIEW_CLASSIC = 0,
    CPVIEW_ALLITEMS = CPVIEW_CLASSIC,
    CPVIEW_CATEGORY = 1,
    CPVIEW_HOME = CPVIEW_CATEGORY
} CPVIEW;

/*****************************************************************************
 * IOpenControlPanel interface
 */
#ifndef __IOpenControlPanel_INTERFACE_DEFINED__
#define __IOpenControlPanel_INTERFACE_DEFINED__

DEFINE_GUID(IID_IOpenControlPanel, 0xd11ad862, 0x66de, 0x4df4, 0xbf,0x6c, 0x1f,0x56,0x21,0x99,0x6a,0xf1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d11ad862-66de-4df4-bf6c-1f5621996af1")
IOpenControlPanel : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Open(
        LPCWSTR pszName,
        LPCWSTR pszPage,
        IUnknown *punkSite) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPath(
        LPCWSTR pszName,
        LPWSTR pszPath,
        UINT cchPath) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentView(
        CPVIEW *pView) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IOpenControlPanel, 0xd11ad862, 0x66de, 0x4df4, 0xbf,0x6c, 0x1f,0x56,0x21,0x99,0x6a,0xf1)
#endif
#else
typedef struct IOpenControlPanelVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IOpenControlPanel methods ***/
    HRESULT (STDMETHODCALLTYPE *Open)(
        IOpenControlPanel *This,
        LPCWSTR pszName,
        LPCWSTR pszPage,
        IUnknown *punkSite);

    HRESULT (STDMETHODCALLTYPE *GetPath)(
        IOpenControlPanel *This,
        LPCWSTR pszName,
        LPWSTR pszPath,
        UINT cchPath);

    HRESULT (STDMETHODCALLTYPE *GetCurrentView)(
        IOpenControlPanel *This,
        CPVIEW *pView);

    END_INTERFACE
} IOpenControlPanelVtbl;

interface IOpenControlPanel {
    CONST_VTBL IOpenControlPanelVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IOpenControlPanel_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IOpenControlPanel_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IOpenControlPanel_Release(This) (This)->lpVtbl->Release(This)
/*** IOpenControlPanel methods ***/
#define IOpenControlPanel_Open(This,pszName,pszPage,punkSite) (This)->lpVtbl->Open(This,pszName,pszPage,punkSite)
#define IOpenControlPanel_GetPath(This,pszName,pszPath,cchPath) (This)->lpVtbl->GetPath(This,pszName,pszPath,cchPath)
#define IOpenControlPanel_GetCurrentView(This,pView) (This)->lpVtbl->GetCurrentView(This,pView)
#else
/*** IUnknown methods ***/
static inline HRESULT IOpenControlPanel_QueryInterface(IOpenControlPanel* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IOpenControlPanel_AddRef(IOpenControlPanel* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IOpenControlPanel_Release(IOpenControlPanel* This) {
    return This->lpVtbl->Release(This);
}
/*** IOpenControlPanel methods ***/
static inline HRESULT IOpenControlPanel_Open(IOpenControlPanel* This,LPCWSTR pszName,LPCWSTR pszPage,IUnknown *punkSite) {
    return This->lpVtbl->Open(This,pszName,pszPage,punkSite);
}
static inline HRESULT IOpenControlPanel_GetPath(IOpenControlPanel* This,LPCWSTR pszName,LPWSTR pszPath,UINT cchPath) {
    return This->lpVtbl->GetPath(This,pszName,pszPath,cchPath);
}
static inline HRESULT IOpenControlPanel_GetCurrentView(IOpenControlPanel* This,CPVIEW *pView) {
    return This->lpVtbl->GetCurrentView(This,pView);
}
#endif
#endif

#endif


#endif  /* __IOpenControlPanel_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IComputerInfoChangeNotify interface
 */
#ifndef __IComputerInfoChangeNotify_INTERFACE_DEFINED__
#define __IComputerInfoChangeNotify_INTERFACE_DEFINED__

DEFINE_GUID(IID_IComputerInfoChangeNotify, 0x0df60d92, 0x6818, 0x46d6, 0xb3,0x58, 0xd6,0x61,0x70,0xdd,0xe4,0x66);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0df60d92-6818-46d6-b358-d66170dde466")
IComputerInfoChangeNotify : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ComputerInfoChanged(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IComputerInfoChangeNotify, 0x0df60d92, 0x6818, 0x46d6, 0xb3,0x58, 0xd6,0x61,0x70,0xdd,0xe4,0x66)
#endif
#else
typedef struct IComputerInfoChangeNotifyVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IComputerInfoChangeNotify methods ***/
    HRESULT (STDMETHODCALLTYPE *ComputerInfoChanged)(
        IComputerInfoChangeNotify *This);

    END_INTERFACE
} IComputerInfoChangeNotifyVtbl;

interface IComputerInfoChangeNotify {
    CONST_VTBL IComputerInfoChangeNotifyVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IComputerInfoChangeNotify_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IComputerInfoChangeNotify_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IComputerInfoChangeNotify_Release(This) (This)->lpVtbl->Release(This)
/*** IComputerInfoChangeNotify methods ***/
#define IComputerInfoChangeNotify_ComputerInfoChanged(This) (This)->lpVtbl->ComputerInfoChanged(This)
#else
/*** IUnknown methods ***/
static inline HRESULT IComputerInfoChangeNotify_QueryInterface(IComputerInfoChangeNotify* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IComputerInfoChangeNotify_AddRef(IComputerInfoChangeNotify* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IComputerInfoChangeNotify_Release(IComputerInfoChangeNotify* This) {
    return This->lpVtbl->Release(This);
}
/*** IComputerInfoChangeNotify methods ***/
static inline HRESULT IComputerInfoChangeNotify_ComputerInfoChanged(IComputerInfoChangeNotify* This) {
    return This->lpVtbl->ComputerInfoChanged(This);
}
#endif
#endif

#endif


#endif  /* __IComputerInfoChangeNotify_INTERFACE_DEFINED__ */


#define STR_FILE_SYS_BIND_DATA L"File System Bind Data"

/*****************************************************************************
 * 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 inline HRESULT IFileSystemBindData_QueryInterface(IFileSystemBindData* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFileSystemBindData_AddRef(IFileSystemBindData* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFileSystemBindData_Release(IFileSystemBindData* This) {
    return This->lpVtbl->Release(This);
}
/*** IFileSystemBindData methods ***/
static inline HRESULT IFileSystemBindData_SetFindData(IFileSystemBindData* This,const WIN32_FIND_DATAW *pfd) {
    return This->lpVtbl->SetFindData(This,pfd);
}
static inline HRESULT IFileSystemBindData_GetFindData(IFileSystemBindData* This,WIN32_FIND_DATAW *pfd) {
    return This->lpVtbl->GetFindData(This,pfd);
}
#endif
#endif

#endif


#endif  /* __IFileSystemBindData_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IFileSystemBindData2 interface
 */
#ifndef __IFileSystemBindData2_INTERFACE_DEFINED__
#define __IFileSystemBindData2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFileSystemBindData2, 0x3acf075f, 0x71db, 0x4afa, 0x81,0xf0, 0x3f,0xc4,0xfd,0xf2,0xa5,0xb8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3acf075f-71db-4afa-81f0-3fc4fdf2a5b8")
IFileSystemBindData2 : public IFileSystemBindData
{
    virtual HRESULT STDMETHODCALLTYPE SetFileID(
        LARGE_INTEGER liFileID) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFileID(
        LARGE_INTEGER *pliFileID) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetJunctionCLSID(
        REFCLSID clsid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetJunctionCLSID(
        CLSID *pclsid) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFileSystemBindData2, 0x3acf075f, 0x71db, 0x4afa, 0x81,0xf0, 0x3f,0xc4,0xfd,0xf2,0xa5,0xb8)
#endif
#else
typedef struct IFileSystemBindData2Vtbl {
    BEGIN_INTERFACE

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

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

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

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

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

    /*** IFileSystemBindData2 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFileID)(
        IFileSystemBindData2 *This,
        LARGE_INTEGER liFileID);

    HRESULT (STDMETHODCALLTYPE *GetFileID)(
        IFileSystemBindData2 *This,
        LARGE_INTEGER *pliFileID);

    HRESULT (STDMETHODCALLTYPE *SetJunctionCLSID)(
        IFileSystemBindData2 *This,
        REFCLSID clsid);

    HRESULT (STDMETHODCALLTYPE *GetJunctionCLSID)(
        IFileSystemBindData2 *This,
        CLSID *pclsid);

    END_INTERFACE
} IFileSystemBindData2Vtbl;

interface IFileSystemBindData2 {
    CONST_VTBL IFileSystemBindData2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFileSystemBindData2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileSystemBindData2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileSystemBindData2_Release(This) (This)->lpVtbl->Release(This)
/*** IFileSystemBindData methods ***/
#define IFileSystemBindData2_SetFindData(This,pfd) (This)->lpVtbl->SetFindData(This,pfd)
#define IFileSystemBindData2_GetFindData(This,pfd) (This)->lpVtbl->GetFindData(This,pfd)
/*** IFileSystemBindData2 methods ***/
#define IFileSystemBindData2_SetFileID(This,liFileID) (This)->lpVtbl->SetFileID(This,liFileID)
#define IFileSystemBindData2_GetFileID(This,pliFileID) (This)->lpVtbl->GetFileID(This,pliFileID)
#define IFileSystemBindData2_SetJunctionCLSID(This,clsid) (This)->lpVtbl->SetJunctionCLSID(This,clsid)
#define IFileSystemBindData2_GetJunctionCLSID(This,pclsid) (This)->lpVtbl->GetJunctionCLSID(This,pclsid)
#else
/*** IUnknown methods ***/
static inline HRESULT IFileSystemBindData2_QueryInterface(IFileSystemBindData2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFileSystemBindData2_AddRef(IFileSystemBindData2* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFileSystemBindData2_Release(IFileSystemBindData2* This) {
    return This->lpVtbl->Release(This);
}
/*** IFileSystemBindData methods ***/
static inline HRESULT IFileSystemBindData2_SetFindData(IFileSystemBindData2* This,const WIN32_FIND_DATAW *pfd) {
    return This->lpVtbl->SetFindData(This,pfd);
}
static inline HRESULT IFileSystemBindData2_GetFindData(IFileSystemBindData2* This,WIN32_FIND_DATAW *pfd) {
    return This->lpVtbl->GetFindData(This,pfd);
}
/*** IFileSystemBindData2 methods ***/
static inline HRESULT IFileSystemBindData2_SetFileID(IFileSystemBindData2* This,LARGE_INTEGER liFileID) {
    return This->lpVtbl->SetFileID(This,liFileID);
}
static inline HRESULT IFileSystemBindData2_GetFileID(IFileSystemBindData2* This,LARGE_INTEGER *pliFileID) {
    return This->lpVtbl->GetFileID(This,pliFileID);
}
static inline HRESULT IFileSystemBindData2_SetJunctionCLSID(IFileSystemBindData2* This,REFCLSID clsid) {
    return This->lpVtbl->SetJunctionCLSID(This,clsid);
}
static inline HRESULT IFileSystemBindData2_GetJunctionCLSID(IFileSystemBindData2* This,CLSID *pclsid) {
    return This->lpVtbl->GetJunctionCLSID(This,pclsid);
}
#endif
#endif

#endif


#endif  /* __IFileSystemBindData2_INTERFACE_DEFINED__ */


#if NTDDI_VERSION >= NTDDI_WIN7
/*****************************************************************************
 * 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 inline HRESULT ICustomDestinationList_QueryInterface(ICustomDestinationList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ICustomDestinationList_AddRef(ICustomDestinationList* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ICustomDestinationList_Release(ICustomDestinationList* This) {
    return This->lpVtbl->Release(This);
}
/*** ICustomDestinationList methods ***/
static inline HRESULT ICustomDestinationList_SetAppID(ICustomDestinationList* This,LPCWSTR pszAppID) {
    return This->lpVtbl->SetAppID(This,pszAppID);
}
static inline HRESULT ICustomDestinationList_BeginList(ICustomDestinationList* This,UINT *pcMinSlots,REFIID riid,void **ppv) {
    return This->lpVtbl->BeginList(This,pcMinSlots,riid,ppv);
}
static inline HRESULT ICustomDestinationList_AppendCategory(ICustomDestinationList* This,LPCWSTR pszCategory,IObjectArray *poa) {
    return This->lpVtbl->AppendCategory(This,pszCategory,poa);
}
static inline HRESULT ICustomDestinationList_AppendKnownCategory(ICustomDestinationList* This,KNOWNDESTCATEGORY category) {
    return This->lpVtbl->AppendKnownCategory(This,category);
}
static inline HRESULT ICustomDestinationList_AddUserTasks(ICustomDestinationList* This,IObjectArray *poa) {
    return This->lpVtbl->AddUserTasks(This,poa);
}
static inline HRESULT ICustomDestinationList_CommitList(ICustomDestinationList* This) {
    return This->lpVtbl->CommitList(This);
}
static inline HRESULT ICustomDestinationList_GetRemovedDestinations(ICustomDestinationList* This,REFIID riid,void **ppv) {
    return This->lpVtbl->GetRemovedDestinations(This,riid,ppv);
}
static inline HRESULT ICustomDestinationList_DeleteList(ICustomDestinationList* This,LPCWSTR pszAppID) {
    return This->lpVtbl->DeleteList(This,pszAppID);
}
static inline HRESULT ICustomDestinationList_AbortList(ICustomDestinationList* This) {
    return This->lpVtbl->AbortList(This);
}
#endif
#endif

#endif


#endif  /* __ICustomDestinationList_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 inline HRESULT IApplicationDestinations_QueryInterface(IApplicationDestinations* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IApplicationDestinations_AddRef(IApplicationDestinations* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IApplicationDestinations_Release(IApplicationDestinations* This) {
    return This->lpVtbl->Release(This);
}
/*** IApplicationDestinations methods ***/
static inline HRESULT IApplicationDestinations_SetAppID(IApplicationDestinations* This,LPCWSTR pszAppID) {
    return This->lpVtbl->SetAppID(This,pszAppID);
}
static inline HRESULT IApplicationDestinations_RemoveDestination(IApplicationDestinations* This,IUnknown *punk) {
    return This->lpVtbl->RemoveDestination(This,punk);
}
static inline HRESULT IApplicationDestinations_RemoveAllDestinations(IApplicationDestinations* This) {
    return This->lpVtbl->RemoveAllDestinations(This);
}
#endif
#endif

#endif


#endif  /* __IApplicationDestinations_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IApplicationDocumentLists interface
 */
#ifndef __IApplicationDocumentLists_INTERFACE_DEFINED__
#define __IApplicationDocumentLists_INTERFACE_DEFINED__

typedef enum APPDOCLISTTYPE {
    ADLT_RECENT = 0,
    ADLT_FREQUENT = 1
} APPDOCLISTTYPE;

DEFINE_GUID(IID_IApplicationDocumentLists, 0x3c594f9f, 0x9f30, 0x47a1, 0x97,0x9a, 0xc9,0xe8,0x3d,0x3d,0x0a,0x06);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3c594f9f-9f30-47a1-979a-c9e83d3d0a06")
IApplicationDocumentLists : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetAppID(
        LPCWSTR pszAppID) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetList(
        APPDOCLISTTYPE listtype,
        UINT cItemsDesired,
        REFIID riid,
        void **ppv) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IApplicationDocumentLists, 0x3c594f9f, 0x9f30, 0x47a1, 0x97,0x9a, 0xc9,0xe8,0x3d,0x3d,0x0a,0x06)
#endif
#else
typedef struct IApplicationDocumentListsVtbl {
    BEGIN_INTERFACE

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *GetList)(
        IApplicationDocumentLists *This,
        APPDOCLISTTYPE listtype,
        UINT cItemsDesired,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} IApplicationDocumentListsVtbl;

interface IApplicationDocumentLists {
    CONST_VTBL IApplicationDocumentListsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IApplicationDocumentLists_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IApplicationDocumentLists_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IApplicationDocumentLists_Release(This) (This)->lpVtbl->Release(This)
/*** IApplicationDocumentLists methods ***/
#define IApplicationDocumentLists_SetAppID(This,pszAppID) (This)->lpVtbl->SetAppID(This,pszAppID)
#define IApplicationDocumentLists_GetList(This,listtype,cItemsDesired,riid,ppv) (This)->lpVtbl->GetList(This,listtype,cItemsDesired,riid,ppv)
#else
/*** IUnknown methods ***/
static inline HRESULT IApplicationDocumentLists_QueryInterface(IApplicationDocumentLists* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IApplicationDocumentLists_AddRef(IApplicationDocumentLists* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IApplicationDocumentLists_Release(IApplicationDocumentLists* This) {
    return This->lpVtbl->Release(This);
}
/*** IApplicationDocumentLists methods ***/
static inline HRESULT IApplicationDocumentLists_SetAppID(IApplicationDocumentLists* This,LPCWSTR pszAppID) {
    return This->lpVtbl->SetAppID(This,pszAppID);
}
static inline HRESULT IApplicationDocumentLists_GetList(IApplicationDocumentLists* This,APPDOCLISTTYPE listtype,UINT cItemsDesired,REFIID riid,void **ppv) {
    return This->lpVtbl->GetList(This,listtype,cItemsDesired,riid,ppv);
}
#endif
#endif

#endif


#endif  /* __IApplicationDocumentLists_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IObjectWithAppUserModelID interface
 */
#ifndef __IObjectWithAppUserModelID_INTERFACE_DEFINED__
#define __IObjectWithAppUserModelID_INTERFACE_DEFINED__

DEFINE_GUID(IID_IObjectWithAppUserModelID, 0x36db0196, 0x9665, 0x46d1, 0x9b,0xa7, 0xd3,0x70,0x9e,0xec,0xf9,0xed);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("36db0196-9665-46d1-9ba7-d3709eecf9ed")
IObjectWithAppUserModelID : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetAppID(
        LPCWSTR pszAppID) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAppID(
        LPWSTR *ppszAppID) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IObjectWithAppUserModelID, 0x36db0196, 0x9665, 0x46d1, 0x9b,0xa7, 0xd3,0x70,0x9e,0xec,0xf9,0xed)
#endif
#else
typedef struct IObjectWithAppUserModelIDVtbl {
    BEGIN_INTERFACE

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

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

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

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

    HRESULT (STDMETHODCALLTYPE *GetAppID)(
        IObjectWithAppUserModelID *This,
        LPWSTR *ppszAppID);

    END_INTERFACE
} IObjectWithAppUserModelIDVtbl;

interface IObjectWithAppUserModelID {
    CONST_VTBL IObjectWithAppUserModelIDVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IObjectWithAppUserModelID_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IObjectWithAppUserModelID_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IObjectWithAppUserModelID_Release(This) (This)->lpVtbl->Release(This)
/*** IObjectWithAppUserModelID methods ***/
#define IObjectWithAppUserModelID_SetAppID(This,pszAppID) (This)->lpVtbl->SetAppID(This,pszAppID)
#define IObjectWithAppUserModelID_GetAppID(This,ppszAppID) (This)->lpVtbl->GetAppID(This,ppszAppID)
#else
/*** IUnknown methods ***/
static inline HRESULT IObjectWithAppUserModelID_QueryInterface(IObjectWithAppUserModelID* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IObjectWithAppUserModelID_AddRef(IObjectWithAppUserModelID* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IObjectWithAppUserModelID_Release(IObjectWithAppUserModelID* This) {
    return This->lpVtbl->Release(This);
}
/*** IObjectWithAppUserModelID methods ***/
static inline HRESULT IObjectWithAppUserModelID_SetAppID(IObjectWithAppUserModelID* This,LPCWSTR pszAppID) {
    return This->lpVtbl->SetAppID(This,pszAppID);
}
static inline HRESULT IObjectWithAppUserModelID_GetAppID(IObjectWithAppUserModelID* This,LPWSTR *ppszAppID) {
    return This->lpVtbl->GetAppID(This,ppszAppID);
}
#endif
#endif

#endif


#endif  /* __IObjectWithAppUserModelID_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IObjectWithProgID interface
 */
#ifndef __IObjectWithProgID_INTERFACE_DEFINED__
#define __IObjectWithProgID_INTERFACE_DEFINED__

DEFINE_GUID(IID_IObjectWithProgID, 0x71e806fb, 0x8dee, 0x46fc, 0xbf,0x8c, 0x77,0x48,0xa8,0xa1,0xae,0x13);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("71e806fb-8dee-46fc-bf8c-7748a8a1ae13")
IObjectWithProgID : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetProgID(
        LPCWSTR pszProgID) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProgID(
        LPWSTR *ppszProgID) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IObjectWithProgID, 0x71e806fb, 0x8dee, 0x46fc, 0xbf,0x8c, 0x77,0x48,0xa8,0xa1,0xae,0x13)
#endif
#else
typedef struct IObjectWithProgIDVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IObjectWithProgID methods ***/
    HRESULT (STDMETHODCALLTYPE *SetProgID)(
        IObjectWithProgID *This,
        LPCWSTR pszProgID);

    HRESULT (STDMETHODCALLTYPE *GetProgID)(
        IObjectWithProgID *This,
        LPWSTR *ppszProgID);

    END_INTERFACE
} IObjectWithProgIDVtbl;

interface IObjectWithProgID {
    CONST_VTBL IObjectWithProgIDVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IObjectWithProgID_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IObjectWithProgID_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IObjectWithProgID_Release(This) (This)->lpVtbl->Release(This)
/*** IObjectWithProgID methods ***/
#define IObjectWithProgID_SetProgID(This,pszProgID) (This)->lpVtbl->SetProgID(This,pszProgID)
#define IObjectWithProgID_GetProgID(This,ppszProgID) (This)->lpVtbl->GetProgID(This,ppszProgID)
#else
/*** IUnknown methods ***/
static inline HRESULT IObjectWithProgID_QueryInterface(IObjectWithProgID* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IObjectWithProgID_AddRef(IObjectWithProgID* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IObjectWithProgID_Release(IObjectWithProgID* This) {
    return This->lpVtbl->Release(This);
}
/*** IObjectWithProgID methods ***/
static inline HRESULT IObjectWithProgID_SetProgID(IObjectWithProgID* This,LPCWSTR pszProgID) {
    return This->lpVtbl->SetProgID(This,pszProgID);
}
static inline HRESULT IObjectWithProgID_GetProgID(IObjectWithProgID* This,LPWSTR *ppszProgID) {
    return This->lpVtbl->GetProgID(This,ppszProgID);
}
#endif
#endif

#endif


#endif  /* __IObjectWithProgID_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IUpdateIDList interface
 */
#ifndef __IUpdateIDList_INTERFACE_DEFINED__
#define __IUpdateIDList_INTERFACE_DEFINED__

DEFINE_GUID(IID_IUpdateIDList, 0x6589b6d2, 0x5f8d, 0x4b9e, 0xb7,0xe0, 0x23,0xcd,0xd9,0x71,0x7d,0x8c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6589b6d2-5f8d-4b9e-b7e0-23cdd9717d8c")
IUpdateIDList : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Update(
        IBindCtx *pbc,
        PCUITEMID_CHILD pidlIn,
        PITEMID_CHILD *ppidlOut) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IUpdateIDList, 0x6589b6d2, 0x5f8d, 0x4b9e, 0xb7,0xe0, 0x23,0xcd,0xd9,0x71,0x7d,0x8c)
#endif
#else
typedef struct IUpdateIDListVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IUpdateIDList methods ***/
    HRESULT (STDMETHODCALLTYPE *Update)(
        IUpdateIDList *This,
        IBindCtx *pbc,
        PCUITEMID_CHILD pidlIn,
        PITEMID_CHILD *ppidlOut);

    END_INTERFACE
} IUpdateIDListVtbl;

interface IUpdateIDList {
    CONST_VTBL IUpdateIDListVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IUpdateIDList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IUpdateIDList_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IUpdateIDList_Release(This) (This)->lpVtbl->Release(This)
/*** IUpdateIDList methods ***/
#define IUpdateIDList_Update(This,pbc,pidlIn,ppidlOut) (This)->lpVtbl->Update(This,pbc,pidlIn,ppidlOut)
#else
/*** IUnknown methods ***/
static inline HRESULT IUpdateIDList_QueryInterface(IUpdateIDList* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IUpdateIDList_AddRef(IUpdateIDList* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IUpdateIDList_Release(IUpdateIDList* This) {
    return This->lpVtbl->Release(This);
}
/*** IUpdateIDList methods ***/
static inline HRESULT IUpdateIDList_Update(IUpdateIDList* This,IBindCtx *pbc,PCUITEMID_CHILD pidlIn,PITEMID_CHILD *ppidlOut) {
    return This->lpVtbl->Update(This,pbc,pidlIn,ppidlOut);
}
#endif
#endif

#endif


#endif  /* __IUpdateIDList_INTERFACE_DEFINED__ */


SHSTDAPI SetCurrentProcessExplicitAppUserModelID(PCWSTR AppID);
SHSTDAPI GetCurrentProcessExplicitAppUserModelID(PWSTR *AppID);
#endif

/*****************************************************************************
 * IDesktopGadget interface
 */
#ifndef __IDesktopGadget_INTERFACE_DEFINED__
#define __IDesktopGadget_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDesktopGadget, 0xc1646bc4, 0xf298, 0x4f91, 0xa2,0x04, 0xeb,0x2d,0xd1,0x70,0x9d,0x1a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c1646bc4-f298-4f91-a204-eb2dd1709d1a")
IDesktopGadget : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE RunGadget(
        LPCWSTR gadgetPath) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDesktopGadget, 0xc1646bc4, 0xf298, 0x4f91, 0xa2,0x04, 0xeb,0x2d,0xd1,0x70,0x9d,0x1a)
#endif
#else
typedef struct IDesktopGadgetVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDesktopGadget methods ***/
    HRESULT (STDMETHODCALLTYPE *RunGadget)(
        IDesktopGadget *This,
        LPCWSTR gadgetPath);

    END_INTERFACE
} IDesktopGadgetVtbl;

interface IDesktopGadget {
    CONST_VTBL IDesktopGadgetVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDesktopGadget_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDesktopGadget_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDesktopGadget_Release(This) (This)->lpVtbl->Release(This)
/*** IDesktopGadget methods ***/
#define IDesktopGadget_RunGadget(This,gadgetPath) (This)->lpVtbl->RunGadget(This,gadgetPath)
#else
/*** IUnknown methods ***/
static inline HRESULT IDesktopGadget_QueryInterface(IDesktopGadget* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDesktopGadget_AddRef(IDesktopGadget* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDesktopGadget_Release(IDesktopGadget* This) {
    return This->lpVtbl->Release(This);
}
/*** IDesktopGadget methods ***/
static inline HRESULT IDesktopGadget_RunGadget(IDesktopGadget* This,LPCWSTR gadgetPath) {
    return This->lpVtbl->RunGadget(This,gadgetPath);
}
#endif
#endif

#endif


#endif  /* __IDesktopGadget_INTERFACE_DEFINED__ */


#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
/*****************************************************************************
 * IVirtualDesktopManager interface
 */
#ifndef __IVirtualDesktopManager_INTERFACE_DEFINED__
#define __IVirtualDesktopManager_INTERFACE_DEFINED__

DEFINE_GUID(IID_IVirtualDesktopManager, 0xa5cd92ff, 0x29be, 0x454c, 0x8d,0x04, 0xd8,0x28,0x79,0xfb,0x3f,0x1b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a5cd92ff-29be-454c-8d04-d82879fb3f1b")
IVirtualDesktopManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE IsWindowOnCurrentVirtualDesktop(
        HWND topLevelWindow,
        WINBOOL *onCurrentDesktop) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetWindowDesktopId(
        HWND topLevelWindow,
        GUID *desktopId) = 0;

    virtual HRESULT STDMETHODCALLTYPE MoveWindowToDesktop(
        HWND topLevelWindow,
        REFGUID desktopId) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IVirtualDesktopManager, 0xa5cd92ff, 0x29be, 0x454c, 0x8d,0x04, 0xd8,0x28,0x79,0xfb,0x3f,0x1b)
#endif
#else
typedef struct IVirtualDesktopManagerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IVirtualDesktopManager methods ***/
    HRESULT (STDMETHODCALLTYPE *IsWindowOnCurrentVirtualDesktop)(
        IVirtualDesktopManager *This,
        HWND topLevelWindow,
        WINBOOL *onCurrentDesktop);

    HRESULT (STDMETHODCALLTYPE *GetWindowDesktopId)(
        IVirtualDesktopManager *This,
        HWND topLevelWindow,
        GUID *desktopId);

    HRESULT (STDMETHODCALLTYPE *MoveWindowToDesktop)(
        IVirtualDesktopManager *This,
        HWND topLevelWindow,
        REFGUID desktopId);

    END_INTERFACE
} IVirtualDesktopManagerVtbl;

interface IVirtualDesktopManager {
    CONST_VTBL IVirtualDesktopManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IVirtualDesktopManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IVirtualDesktopManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IVirtualDesktopManager_Release(This) (This)->lpVtbl->Release(This)
/*** IVirtualDesktopManager methods ***/
#define IVirtualDesktopManager_IsWindowOnCurrentVirtualDesktop(This,topLevelWindow,onCurrentDesktop) (This)->lpVtbl->IsWindowOnCurrentVirtualDesktop(This,topLevelWindow,onCurrentDesktop)
#define IVirtualDesktopManager_GetWindowDesktopId(This,topLevelWindow,desktopId) (This)->lpVtbl->GetWindowDesktopId(This,topLevelWindow,desktopId)
#define IVirtualDesktopManager_MoveWindowToDesktop(This,topLevelWindow,desktopId) (This)->lpVtbl->MoveWindowToDesktop(This,topLevelWindow,desktopId)
#else
/*** IUnknown methods ***/
static inline HRESULT IVirtualDesktopManager_QueryInterface(IVirtualDesktopManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IVirtualDesktopManager_AddRef(IVirtualDesktopManager* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IVirtualDesktopManager_Release(IVirtualDesktopManager* This) {
    return This->lpVtbl->Release(This);
}
/*** IVirtualDesktopManager methods ***/
static inline HRESULT IVirtualDesktopManager_IsWindowOnCurrentVirtualDesktop(IVirtualDesktopManager* This,HWND topLevelWindow,WINBOOL *onCurrentDesktop) {
    return This->lpVtbl->IsWindowOnCurrentVirtualDesktop(This,topLevelWindow,onCurrentDesktop);
}
static inline HRESULT IVirtualDesktopManager_GetWindowDesktopId(IVirtualDesktopManager* This,HWND topLevelWindow,GUID *desktopId) {
    return This->lpVtbl->GetWindowDesktopId(This,topLevelWindow,desktopId);
}
static inline HRESULT IVirtualDesktopManager_MoveWindowToDesktop(IVirtualDesktopManager* This,HWND topLevelWindow,REFGUID desktopId) {
    return This->lpVtbl->MoveWindowToDesktop(This,topLevelWindow,desktopId);
}
#endif
#endif

#endif


#endif  /* __IVirtualDesktopManager_INTERFACE_DEFINED__ */

#endif

#if NTDDI_VERSION >= NTDDI_WIN8
/*****************************************************************************
 * IDesktopWallpaper interface
 */
#ifndef __IDesktopWallpaper_INTERFACE_DEFINED__
#define __IDesktopWallpaper_INTERFACE_DEFINED__

typedef enum DESKTOP_SLIDESHOW_OPTIONS {
    DSO_SHUFFLEIMAGES = 0x1
} DESKTOP_SLIDESHOW_OPTIONS;

DEFINE_ENUM_FLAG_OPERATORS(DESKTOP_SLIDESHOW_OPTIONS);

typedef enum DESKTOP_SLIDESHOW_STATE {
    DSS_ENABLED = 0x1,
    DSS_SLIDESHOW = 0x2,
    DSS_DISABLED_BY_REMOTE_SESSION = 0x4
} DESKTOP_SLIDESHOW_STATE;

DEFINE_ENUM_FLAG_OPERATORS(DESKTOP_SLIDESHOW_STATE);

typedef enum DESKTOP_SLIDESHOW_DIRECTION {
    DSD_FORWARD = 0,
    DSD_BACKWARD = 1
} DESKTOP_SLIDESHOW_DIRECTION;

typedef enum DESKTOP_WALLPAPER_POSITION {
    DWPOS_CENTER = 0,
    DWPOS_TILE = 1,
    DWPOS_STRETCH = 2,
    DWPOS_FIT = 3,
    DWPOS_FILL = 4,
    DWPOS_SPAN = 5
} DESKTOP_WALLPAPER_POSITION;

DEFINE_GUID(IID_IDesktopWallpaper, 0xb92b56a9, 0x8b55, 0x4e14, 0x9a,0x89, 0x01,0x99,0xbb,0xb6,0xf9,0x3b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b92b56a9-8b55-4e14-9a89-0199bbb6f93b")
IDesktopWallpaper : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetWallpaper(
        LPCWSTR monitorID,
        LPCWSTR wallpaper) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetWallpaper(
        LPCWSTR monitorID,
        LPWSTR *wallpaper) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMonitorDevicePathAt(
        UINT monitorIndex,
        LPWSTR *monitorID) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMonitorDevicePathCount(
        UINT *count) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMonitorRECT(
        LPCWSTR monitorID,
        RECT *displayRect) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBackgroundColor(
        COLORREF color) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBackgroundColor(
        COLORREF *color) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPosition(
        DESKTOP_WALLPAPER_POSITION position) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPosition(
        DESKTOP_WALLPAPER_POSITION *position) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSlideshow(
        IShellItemArray *items) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSlideshow(
        IShellItemArray **items) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSlideshowOptions(
        DESKTOP_SLIDESHOW_OPTIONS options,
        UINT slideshowTick) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSlideshowOptions(
        DESKTOP_SLIDESHOW_OPTIONS *options,
        UINT *slideshowTick) = 0;

    virtual HRESULT STDMETHODCALLTYPE AdvanceSlideshow(
        LPCWSTR monitorID,
        DESKTOP_SLIDESHOW_DIRECTION direction) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStatus(
        DESKTOP_SLIDESHOW_STATE *state) = 0;

    virtual HRESULT STDMETHODCALLTYPE Enable(
        WINBOOL enable) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDesktopWallpaper, 0xb92b56a9, 0x8b55, 0x4e14, 0x9a,0x89, 0x01,0x99,0xbb,0xb6,0xf9,0x3b)
#endif
#else
typedef struct IDesktopWallpaperVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDesktopWallpaper methods ***/
    HRESULT (STDMETHODCALLTYPE *SetWallpaper)(
        IDesktopWallpaper *This,
        LPCWSTR monitorID,
        LPCWSTR wallpaper);

    HRESULT (STDMETHODCALLTYPE *GetWallpaper)(
        IDesktopWallpaper *This,
        LPCWSTR monitorID,
        LPWSTR *wallpaper);

    HRESULT (STDMETHODCALLTYPE *GetMonitorDevicePathAt)(
        IDesktopWallpaper *This,
        UINT monitorIndex,
        LPWSTR *monitorID);

    HRESULT (STDMETHODCALLTYPE *GetMonitorDevicePathCount)(
        IDesktopWallpaper *This,
        UINT *count);

    HRESULT (STDMETHODCALLTYPE *GetMonitorRECT)(
        IDesktopWallpaper *This,
        LPCWSTR monitorID,
        RECT *displayRect);

    HRESULT (STDMETHODCALLTYPE *SetBackgroundColor)(
        IDesktopWallpaper *This,
        COLORREF color);

    HRESULT (STDMETHODCALLTYPE *GetBackgroundColor)(
        IDesktopWallpaper *This,
        COLORREF *color);

    HRESULT (STDMETHODCALLTYPE *SetPosition)(
        IDesktopWallpaper *This,
        DESKTOP_WALLPAPER_POSITION position);

    HRESULT (STDMETHODCALLTYPE *GetPosition)(
        IDesktopWallpaper *This,
        DESKTOP_WALLPAPER_POSITION *position);

    HRESULT (STDMETHODCALLTYPE *SetSlideshow)(
        IDesktopWallpaper *This,
        IShellItemArray *items);

    HRESULT (STDMETHODCALLTYPE *GetSlideshow)(
        IDesktopWallpaper *This,
        IShellItemArray **items);

    HRESULT (STDMETHODCALLTYPE *SetSlideshowOptions)(
        IDesktopWallpaper *This,
        DESKTOP_SLIDESHOW_OPTIONS options,
        UINT slideshowTick);

    HRESULT (STDMETHODCALLTYPE *GetSlideshowOptions)(
        IDesktopWallpaper *This,
        DESKTOP_SLIDESHOW_OPTIONS *options,
        UINT *slideshowTick);

    HRESULT (STDMETHODCALLTYPE *AdvanceSlideshow)(
        IDesktopWallpaper *This,
        LPCWSTR monitorID,
        DESKTOP_SLIDESHOW_DIRECTION direction);

    HRESULT (STDMETHODCALLTYPE *GetStatus)(
        IDesktopWallpaper *This,
        DESKTOP_SLIDESHOW_STATE *state);

    HRESULT (STDMETHODCALLTYPE *Enable)(
        IDesktopWallpaper *This,
        WINBOOL enable);

    END_INTERFACE
} IDesktopWallpaperVtbl;

interface IDesktopWallpaper {
    CONST_VTBL IDesktopWallpaperVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDesktopWallpaper_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDesktopWallpaper_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDesktopWallpaper_Release(This) (This)->lpVtbl->Release(This)
/*** IDesktopWallpaper methods ***/
#define IDesktopWallpaper_SetWallpaper(This,monitorID,wallpaper) (This)->lpVtbl->SetWallpaper(This,monitorID,wallpaper)
#define IDesktopWallpaper_GetWallpaper(This,monitorID,wallpaper) (This)->lpVtbl->GetWallpaper(This,monitorID,wallpaper)
#define IDesktopWallpaper_GetMonitorDevicePathAt(This,monitorIndex,monitorID) (This)->lpVtbl->GetMonitorDevicePathAt(This,monitorIndex,monitorID)
#define IDesktopWallpaper_GetMonitorDevicePathCount(This,count) (This)->lpVtbl->GetMonitorDevicePathCount(This,count)
#define IDesktopWallpaper_GetMonitorRECT(This,monitorID,displayRect) (This)->lpVtbl->GetMonitorRECT(This,monitorID,displayRect)
#define IDesktopWallpaper_SetBackgroundColor(This,color) (This)->lpVtbl->SetBackgroundColor(This,color)
#define IDesktopWallpaper_GetBackgroundColor(This,color) (This)->lpVtbl->GetBackgroundColor(This,color)
#define IDesktopWallpaper_SetPosition(This,position) (This)->lpVtbl->SetPosition(This,position)
#define IDesktopWallpaper_GetPosition(This,position) (This)->lpVtbl->GetPosition(This,position)
#define IDesktopWallpaper_SetSlideshow(This,items) (This)->lpVtbl->SetSlideshow(This,items)
#define IDesktopWallpaper_GetSlideshow(This,items) (This)->lpVtbl->GetSlideshow(This,items)
#define IDesktopWallpaper_SetSlideshowOptions(This,options,slideshowTick) (This)->lpVtbl->SetSlideshowOptions(This,options,slideshowTick)
#define IDesktopWallpaper_GetSlideshowOptions(This,options,slideshowTick) (This)->lpVtbl->GetSlideshowOptions(This,options,slideshowTick)
#define IDesktopWallpaper_AdvanceSlideshow(This,monitorID,direction) (This)->lpVtbl->AdvanceSlideshow(This,monitorID,direction)
#define IDesktopWallpaper_GetStatus(This,state) (This)->lpVtbl->GetStatus(This,state)
#define IDesktopWallpaper_Enable(This,enable) (This)->lpVtbl->Enable(This,enable)
#else
/*** IUnknown methods ***/
static inline HRESULT IDesktopWallpaper_QueryInterface(IDesktopWallpaper* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDesktopWallpaper_AddRef(IDesktopWallpaper* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDesktopWallpaper_Release(IDesktopWallpaper* This) {
    return This->lpVtbl->Release(This);
}
/*** IDesktopWallpaper methods ***/
static inline HRESULT IDesktopWallpaper_SetWallpaper(IDesktopWallpaper* This,LPCWSTR monitorID,LPCWSTR wallpaper) {
    return This->lpVtbl->SetWallpaper(This,monitorID,wallpaper);
}
static inline HRESULT IDesktopWallpaper_GetWallpaper(IDesktopWallpaper* This,LPCWSTR monitorID,LPWSTR *wallpaper) {
    return This->lpVtbl->GetWallpaper(This,monitorID,wallpaper);
}
static inline HRESULT IDesktopWallpaper_GetMonitorDevicePathAt(IDesktopWallpaper* This,UINT monitorIndex,LPWSTR *monitorID) {
    return This->lpVtbl->GetMonitorDevicePathAt(This,monitorIndex,monitorID);
}
static inline HRESULT IDesktopWallpaper_GetMonitorDevicePathCount(IDesktopWallpaper* This,UINT *count) {
    return This->lpVtbl->GetMonitorDevicePathCount(This,count);
}
static inline HRESULT IDesktopWallpaper_GetMonitorRECT(IDesktopWallpaper* This,LPCWSTR monitorID,RECT *displayRect) {
    return This->lpVtbl->GetMonitorRECT(This,monitorID,displayRect);
}
static inline HRESULT IDesktopWallpaper_SetBackgroundColor(IDesktopWallpaper* This,COLORREF color) {
    return This->lpVtbl->SetBackgroundColor(This,color);
}
static inline HRESULT IDesktopWallpaper_GetBackgroundColor(IDesktopWallpaper* This,COLORREF *color) {
    return This->lpVtbl->GetBackgroundColor(This,color);
}
static inline HRESULT IDesktopWallpaper_SetPosition(IDesktopWallpaper* This,DESKTOP_WALLPAPER_POSITION position) {
    return This->lpVtbl->SetPosition(This,position);
}
static inline HRESULT IDesktopWallpaper_GetPosition(IDesktopWallpaper* This,DESKTOP_WALLPAPER_POSITION *position) {
    return This->lpVtbl->GetPosition(This,position);
}
static inline HRESULT IDesktopWallpaper_SetSlideshow(IDesktopWallpaper* This,IShellItemArray *items) {
    return This->lpVtbl->SetSlideshow(This,items);
}
static inline HRESULT IDesktopWallpaper_GetSlideshow(IDesktopWallpaper* This,IShellItemArray **items) {
    return This->lpVtbl->GetSlideshow(This,items);
}
static inline HRESULT IDesktopWallpaper_SetSlideshowOptions(IDesktopWallpaper* This,DESKTOP_SLIDESHOW_OPTIONS options,UINT slideshowTick) {
    return This->lpVtbl->SetSlideshowOptions(This,options,slideshowTick);
}
static inline HRESULT IDesktopWallpaper_GetSlideshowOptions(IDesktopWallpaper* This,DESKTOP_SLIDESHOW_OPTIONS *options,UINT *slideshowTick) {
    return This->lpVtbl->GetSlideshowOptions(This,options,slideshowTick);
}
static inline HRESULT IDesktopWallpaper_AdvanceSlideshow(IDesktopWallpaper* This,LPCWSTR monitorID,DESKTOP_SLIDESHOW_DIRECTION direction) {
    return This->lpVtbl->AdvanceSlideshow(This,monitorID,direction);
}
static inline HRESULT IDesktopWallpaper_GetStatus(IDesktopWallpaper* This,DESKTOP_SLIDESHOW_STATE *state) {
    return This->lpVtbl->GetStatus(This,state);
}
static inline HRESULT IDesktopWallpaper_Enable(IDesktopWallpaper* This,WINBOOL enable) {
    return This->lpVtbl->Enable(This,enable);
}
#endif
#endif

#endif


#endif  /* __IDesktopWallpaper_INTERFACE_DEFINED__ */

#endif

#define HOMEGROUP_SECURITY_GROUP_MULTI L"HUG"
#define HOMEGROUP_SECURITY_GROUP L"HomeUsers"

/*****************************************************************************
 * IHomeGroup interface
 */
#ifndef __IHomeGroup_INTERFACE_DEFINED__
#define __IHomeGroup_INTERFACE_DEFINED__

typedef enum HOMEGROUPSHARINGCHOICES {
    HGSC_NONE = 0x0,
    HGSC_MUSICLIBRARY = 0x1,
    HGSC_PICTURESLIBRARY = 0x2,
    HGSC_VIDEOSLIBRARY = 0x4,
    HGSC_DOCUMENTSLIBRARY = 0x8,
    HGSC_PRINTERS = 0x10
} HOMEGROUPSHARINGCHOICES;

DEFINE_ENUM_FLAG_OPERATORS(HOMEGROUPSHARINGCHOICES)

DEFINE_GUID(IID_IHomeGroup, 0x7a3bd1d9, 0x35a9, 0x4fb3, 0xa4,0x67, 0xf4,0x8c,0xac,0x35,0xe2,0xd0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7a3bd1d9-35a9-4fb3-a467-f48cac35e2d0")
IHomeGroup : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE IsMember(
        WINBOOL *member) = 0;

    virtual HRESULT STDMETHODCALLTYPE ShowSharingWizard(
        HWND owner,
        HOMEGROUPSHARINGCHOICES *sharingchoices) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IHomeGroup, 0x7a3bd1d9, 0x35a9, 0x4fb3, 0xa4,0x67, 0xf4,0x8c,0xac,0x35,0xe2,0xd0)
#endif
#else
typedef struct IHomeGroupVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IHomeGroup methods ***/
    HRESULT (STDMETHODCALLTYPE *IsMember)(
        IHomeGroup *This,
        WINBOOL *member);

    HRESULT (STDMETHODCALLTYPE *ShowSharingWizard)(
        IHomeGroup *This,
        HWND owner,
        HOMEGROUPSHARINGCHOICES *sharingchoices);

    END_INTERFACE
} IHomeGroupVtbl;

interface IHomeGroup {
    CONST_VTBL IHomeGroupVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IHomeGroup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IHomeGroup_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IHomeGroup_Release(This) (This)->lpVtbl->Release(This)
/*** IHomeGroup methods ***/
#define IHomeGroup_IsMember(This,member) (This)->lpVtbl->IsMember(This,member)
#define IHomeGroup_ShowSharingWizard(This,owner,sharingchoices) (This)->lpVtbl->ShowSharingWizard(This,owner,sharingchoices)
#else
/*** IUnknown methods ***/
static inline HRESULT IHomeGroup_QueryInterface(IHomeGroup* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IHomeGroup_AddRef(IHomeGroup* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IHomeGroup_Release(IHomeGroup* This) {
    return This->lpVtbl->Release(This);
}
/*** IHomeGroup methods ***/
static inline HRESULT IHomeGroup_IsMember(IHomeGroup* This,WINBOOL *member) {
    return This->lpVtbl->IsMember(This,member);
}
static inline HRESULT IHomeGroup_ShowSharingWizard(IHomeGroup* This,HWND owner,HOMEGROUPSHARINGCHOICES *sharingchoices) {
    return This->lpVtbl->ShowSharingWizard(This,owner,sharingchoices);
}
#endif
#endif

#endif


#endif  /* __IHomeGroup_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IInitializeWithPropertyStore interface
 */
#ifndef __IInitializeWithPropertyStore_INTERFACE_DEFINED__
#define __IInitializeWithPropertyStore_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInitializeWithPropertyStore, 0xc3e12eb5, 0x7d8d, 0x44f8, 0xb6,0xdd, 0x0e,0x77,0xb3,0x4d,0x6d,0xe4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c3e12eb5-7d8d-44f8-b6dd-0e77b34d6de4")
IInitializeWithPropertyStore : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        IPropertyStore *pps) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInitializeWithPropertyStore, 0xc3e12eb5, 0x7d8d, 0x44f8, 0xb6,0xdd, 0x0e,0x77,0xb3,0x4d,0x6d,0xe4)
#endif
#else
typedef struct IInitializeWithPropertyStoreVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IInitializeWithPropertyStore methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IInitializeWithPropertyStore *This,
        IPropertyStore *pps);

    END_INTERFACE
} IInitializeWithPropertyStoreVtbl;

interface IInitializeWithPropertyStore {
    CONST_VTBL IInitializeWithPropertyStoreVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInitializeWithPropertyStore_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInitializeWithPropertyStore_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInitializeWithPropertyStore_Release(This) (This)->lpVtbl->Release(This)
/*** IInitializeWithPropertyStore methods ***/
#define IInitializeWithPropertyStore_Initialize(This,pps) (This)->lpVtbl->Initialize(This,pps)
#else
/*** IUnknown methods ***/
static inline HRESULT IInitializeWithPropertyStore_QueryInterface(IInitializeWithPropertyStore* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IInitializeWithPropertyStore_AddRef(IInitializeWithPropertyStore* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IInitializeWithPropertyStore_Release(IInitializeWithPropertyStore* This) {
    return This->lpVtbl->Release(This);
}
/*** IInitializeWithPropertyStore methods ***/
static inline HRESULT IInitializeWithPropertyStore_Initialize(IInitializeWithPropertyStore* This,IPropertyStore *pps) {
    return This->lpVtbl->Initialize(This,pps);
}
#endif
#endif

#endif


#endif  /* __IInitializeWithPropertyStore_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IOpenSearchSource interface
 */
#ifndef __IOpenSearchSource_INTERFACE_DEFINED__
#define __IOpenSearchSource_INTERFACE_DEFINED__

DEFINE_GUID(IID_IOpenSearchSource, 0xf0ee7333, 0xe6fc, 0x479b, 0x9f,0x25, 0xa8,0x60,0xc2,0x34,0xa3,0x8e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f0ee7333-e6fc-479b-9f25-a860c234a38e")
IOpenSearchSource : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetResults(
        HWND hwnd,
        LPCWSTR pszQuery,
        DWORD dwStartIndex,
        DWORD dwCount,
        REFIID riid,
        void **ppv) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IOpenSearchSource, 0xf0ee7333, 0xe6fc, 0x479b, 0x9f,0x25, 0xa8,0x60,0xc2,0x34,0xa3,0x8e)
#endif
#else
typedef struct IOpenSearchSourceVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IOpenSearchSource methods ***/
    HRESULT (STDMETHODCALLTYPE *GetResults)(
        IOpenSearchSource *This,
        HWND hwnd,
        LPCWSTR pszQuery,
        DWORD dwStartIndex,
        DWORD dwCount,
        REFIID riid,
        void **ppv);

    END_INTERFACE
} IOpenSearchSourceVtbl;

interface IOpenSearchSource {
    CONST_VTBL IOpenSearchSourceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IOpenSearchSource_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IOpenSearchSource_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IOpenSearchSource_Release(This) (This)->lpVtbl->Release(This)
/*** IOpenSearchSource methods ***/
#define IOpenSearchSource_GetResults(This,hwnd,pszQuery,dwStartIndex,dwCount,riid,ppv) (This)->lpVtbl->GetResults(This,hwnd,pszQuery,dwStartIndex,dwCount,riid,ppv)
#else
/*** IUnknown methods ***/
static inline HRESULT IOpenSearchSource_QueryInterface(IOpenSearchSource* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IOpenSearchSource_AddRef(IOpenSearchSource* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IOpenSearchSource_Release(IOpenSearchSource* This) {
    return This->lpVtbl->Release(This);
}
/*** IOpenSearchSource methods ***/
static inline HRESULT IOpenSearchSource_GetResults(IOpenSearchSource* This,HWND hwnd,LPCWSTR pszQuery,DWORD dwStartIndex,DWORD dwCount,REFIID riid,void **ppv) {
    return This->lpVtbl->GetResults(This,hwnd,pszQuery,dwStartIndex,dwCount,riid,ppv);
}
#endif
#endif

#endif


#endif  /* __IOpenSearchSource_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IShellLibrary interface
 */
#ifndef __IShellLibrary_INTERFACE_DEFINED__
#define __IShellLibrary_INTERFACE_DEFINED__

typedef enum LIBRARYFOLDERFILTER {
    LFF_FORCEFILESYSTEM = 1,
    LFF_STORAGEITEMS = 2,
    LFF_ALLITEMS = 3
} LIBRARYFOLDERFILTER;

typedef enum LIBRARYOPTIONFLAGS {
    LOF_DEFAULT = 0x0,
    LOF_PINNEDTONAVPANE = 0x1,
    LOF_MASK_ALL = 0x1
} LIBRARYOPTIONFLAGS;

DEFINE_ENUM_FLAG_OPERATORS(LIBRARYOPTIONFLAGS)

typedef enum DEFAULTSAVEFOLDERTYPE {
    DSFT_DETECT = 1,
    DSFT_PRIVATE = 2,
    DSFT_PUBLIC = 3
} DEFAULTSAVEFOLDERTYPE;

typedef enum LIBRARYSAVEFLAGS {
    LSF_FAILIFTHERE = 0x0,
    LSF_OVERRIDEEXISTING = 0x1,
    LSF_MAKEUNIQUENAME = 0x2
} LIBRARYSAVEFLAGS;

DEFINE_ENUM_FLAG_OPERATORS(LIBRARYSAVEFLAGS)

DEFINE_GUID(IID_IShellLibrary, 0x11a66efa, 0x382e, 0x451a, 0x92,0x34, 0x1e,0x0e,0x12,0xef,0x30,0x85);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("11a66efa-382e-451a-9234-1e0e12ef3085")
IShellLibrary : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE LoadLibraryFromItem(
        IShellItem *psiLibrary,
        DWORD grfMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE LoadLibraryFromKnownFolder(
        REFKNOWNFOLDERID kfidLibrary,
        DWORD grfMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE AddFolder(
        IShellItem *psiLocation) = 0;

    virtual HRESULT STDMETHODCALLTYPE RemoveFolder(
        IShellItem *psiLocation) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolders(
        LIBRARYFOLDERFILTER lff,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE ResolveFolder(
        IShellItem *psiFolderToResolve,
        DWORD dwTimeout,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDefaultSaveFolder(
        DEFAULTSAVEFOLDERTYPE dsft,
        REFIID riid,
        void **ppv) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDefaultSaveFolder(
        DEFAULTSAVEFOLDERTYPE dsft,
        IShellItem *psi) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOptions(
        LIBRARYOPTIONFLAGS *plofOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetOptions(
        LIBRARYOPTIONFLAGS lofMask,
        LIBRARYOPTIONFLAGS lofOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFolderType(
        FOLDERTYPEID *pftid) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFolderType(
        REFFOLDERTYPEID ftid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIcon(
        LPWSTR *ppszIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIcon(
        LPCWSTR pszIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE Commit(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Save(
        IShellItem *psiFolderToSaveIn,
        LPCWSTR pszLibraryName,
        LIBRARYSAVEFLAGS lsf,
        IShellItem **ppsiSavedTo) = 0;

    virtual HRESULT STDMETHODCALLTYPE SaveInKnownFolder(
        REFKNOWNFOLDERID kfidToSaveIn,
        LPCWSTR pszLibraryName,
        LIBRARYSAVEFLAGS lsf,
        IShellItem **ppsiSavedTo) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellLibrary, 0x11a66efa, 0x382e, 0x451a, 0x92,0x34, 0x1e,0x0e,0x12,0xef,0x30,0x85)
#endif
#else
typedef struct IShellLibraryVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IShellLibrary methods ***/
    HRESULT (STDMETHODCALLTYPE *LoadLibraryFromItem)(
        IShellLibrary *This,
        IShellItem *psiLibrary,
        DWORD grfMode);

    HRESULT (STDMETHODCALLTYPE *LoadLibraryFromKnownFolder)(
        IShellLibrary *This,
        REFKNOWNFOLDERID kfidLibrary,
        DWORD grfMode);

    HRESULT (STDMETHODCALLTYPE *AddFolder)(
        IShellLibrary *This,
        IShellItem *psiLocation);

    HRESULT (STDMETHODCALLTYPE *RemoveFolder)(
        IShellLibrary *This,
        IShellItem *psiLocation);

    HRESULT (STDMETHODCALLTYPE *GetFolders)(
        IShellLibrary *This,
        LIBRARYFOLDERFILTER lff,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *ResolveFolder)(
        IShellLibrary *This,
        IShellItem *psiFolderToResolve,
        DWORD dwTimeout,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *GetDefaultSaveFolder)(
        IShellLibrary *This,
        DEFAULTSAVEFOLDERTYPE dsft,
        REFIID riid,
        void **ppv);

    HRESULT (STDMETHODCALLTYPE *SetDefaultSaveFolder)(
        IShellLibrary *This,
        DEFAULTSAVEFOLDERTYPE dsft,
        IShellItem *psi);

    HRESULT (STDMETHODCALLTYPE *GetOptions)(
        IShellLibrary *This,
        LIBRARYOPTIONFLAGS *plofOptions);

    HRESULT (STDMETHODCALLTYPE *SetOptions)(
        IShellLibrary *This,
        LIBRARYOPTIONFLAGS lofMask,
        LIBRARYOPTIONFLAGS lofOptions);

    HRESULT (STDMETHODCALLTYPE *GetFolderType)(
        IShellLibrary *This,
        FOLDERTYPEID *pftid);

    HRESULT (STDMETHODCALLTYPE *SetFolderType)(
        IShellLibrary *This,
        REFFOLDERTYPEID ftid);

    HRESULT (STDMETHODCALLTYPE *GetIcon)(
        IShellLibrary *This,
        LPWSTR *ppszIcon);

    HRESULT (STDMETHODCALLTYPE *SetIcon)(
        IShellLibrary *This,
        LPCWSTR pszIcon);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        IShellLibrary *This);

    HRESULT (STDMETHODCALLTYPE *Save)(
        IShellLibrary *This,
        IShellItem *psiFolderToSaveIn,
        LPCWSTR pszLibraryName,
        LIBRARYSAVEFLAGS lsf,
        IShellItem **ppsiSavedTo);

    HRESULT (STDMETHODCALLTYPE *SaveInKnownFolder)(
        IShellLibrary *This,
        REFKNOWNFOLDERID kfidToSaveIn,
        LPCWSTR pszLibraryName,
        LIBRARYSAVEFLAGS lsf,
        IShellItem **ppsiSavedTo);

    END_INTERFACE
} IShellLibraryVtbl;

interface IShellLibrary {
    CONST_VTBL IShellLibraryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellLibrary_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellLibrary_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellLibrary_Release(This) (This)->lpVtbl->Release(This)
/*** IShellLibrary methods ***/
#define IShellLibrary_LoadLibraryFromItem(This,psiLibrary,grfMode) (This)->lpVtbl->LoadLibraryFromItem(This,psiLibrary,grfMode)
#define IShellLibrary_LoadLibraryFromKnownFolder(This,kfidLibrary,grfMode) (This)->lpVtbl->LoadLibraryFromKnownFolder(This,kfidLibrary,grfMode)
#define IShellLibrary_AddFolder(This,psiLocation) (This)->lpVtbl->AddFolder(This,psiLocation)
#define IShellLibrary_RemoveFolder(This,psiLocation) (This)->lpVtbl->RemoveFolder(This,psiLocation)
#define IShellLibrary_GetFolders(This,lff,riid,ppv) (This)->lpVtbl->GetFolders(This,lff,riid,ppv)
#define IShellLibrary_ResolveFolder(This,psiFolderToResolve,dwTimeout,riid,ppv) (This)->lpVtbl->ResolveFolder(This,psiFolderToResolve,dwTimeout,riid,ppv)
#define IShellLibrary_GetDefaultSaveFolder(This,dsft,riid,ppv) (This)->lpVtbl->GetDefaultSaveFolder(This,dsft,riid,ppv)
#define IShellLibrary_SetDefaultSaveFolder(This,dsft,psi) (This)->lpVtbl->SetDefaultSaveFolder(This,dsft,psi)
#define IShellLibrary_GetOptions(This,plofOptions) (This)->lpVtbl->GetOptions(This,plofOptions)
#define IShellLibrary_SetOptions(This,lofMask,lofOptions) (This)->lpVtbl->SetOptions(This,lofMask,lofOptions)
#define IShellLibrary_GetFolderType(This,pftid) (This)->lpVtbl->GetFolderType(This,pftid)
#define IShellLibrary_SetFolderType(This,ftid) (This)->lpVtbl->SetFolderType(This,ftid)
#define IShellLibrary_GetIcon(This,ppszIcon) (This)->lpVtbl->GetIcon(This,ppszIcon)
#define IShellLibrary_SetIcon(This,pszIcon) (This)->lpVtbl->SetIcon(This,pszIcon)
#define IShellLibrary_Commit(This) (This)->lpVtbl->Commit(This)
#define IShellLibrary_Save(This,psiFolderToSaveIn,pszLibraryName,lsf,ppsiSavedTo) (This)->lpVtbl->Save(This,psiFolderToSaveIn,pszLibraryName,lsf,ppsiSavedTo)
#define IShellLibrary_SaveInKnownFolder(This,kfidToSaveIn,pszLibraryName,lsf,ppsiSavedTo) (This)->lpVtbl->SaveInKnownFolder(This,kfidToSaveIn,pszLibraryName,lsf,ppsiSavedTo)
#else
/*** IUnknown methods ***/
static inline HRESULT IShellLibrary_QueryInterface(IShellLibrary* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IShellLibrary_AddRef(IShellLibrary* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IShellLibrary_Release(IShellLibrary* This) {
    return This->lpVtbl->Release(This);
}
/*** IShellLibrary methods ***/
static inline HRESULT IShellLibrary_LoadLibraryFromItem(IShellLibrary* This,IShellItem *psiLibrary,DWORD grfMode) {
    return This->lpVtbl->LoadLibraryFromItem(This,psiLibrary,grfMode);
}
static inline HRESULT IShellLibrary_LoadLibraryFromKnownFolder(IShellLibrary* This,REFKNOWNFOLDERID kfidLibrary,DWORD grfMode) {
    return This->lpVtbl->LoadLibraryFromKnownFolder(This,kfidLibrary,grfMode);
}
static inline HRESULT IShellLibrary_AddFolder(IShellLibrary* This,IShellItem *psiLocation) {
    return This->lpVtbl->AddFolder(This,psiLocation);
}
static inline HRESULT IShellLibrary_RemoveFolder(IShellLibrary* This,IShellItem *psiLocation) {
    return This->lpVtbl->RemoveFolder(This,psiLocation);
}
static inline HRESULT IShellLibrary_GetFolders(IShellLibrary* This,LIBRARYFOLDERFILTER lff,REFIID riid,void **ppv) {
    return This->lpVtbl->GetFolders(This,lff,riid,ppv);
}
static inline HRESULT IShellLibrary_ResolveFolder(IShellLibrary* This,IShellItem *psiFolderToResolve,DWORD dwTimeout,REFIID riid,void **ppv) {
    return This->lpVtbl->ResolveFolder(This,psiFolderToResolve,dwTimeout,riid,ppv);
}
static inline HRESULT IShellLibrary_GetDefaultSaveFolder(IShellLibrary* This,DEFAULTSAVEFOLDERTYPE dsft,REFIID riid,void **ppv) {
    return This->lpVtbl->GetDefaultSaveFolder(This,dsft,riid,ppv);
}
static inline HRESULT IShellLibrary_SetDefaultSaveFolder(IShellLibrary* This,DEFAULTSAVEFOLDERTYPE dsft,IShellItem *psi) {
    return This->lpVtbl->SetDefaultSaveFolder(This,dsft,psi);
}
static inline HRESULT IShellLibrary_GetOptions(IShellLibrary* This,LIBRARYOPTIONFLAGS *plofOptions) {
    return This->lpVtbl->GetOptions(This,plofOptions);
}
static inline HRESULT IShellLibrary_SetOptions(IShellLibrary* This,LIBRARYOPTIONFLAGS lofMask,LIBRARYOPTIONFLAGS lofOptions) {
    return This->lpVtbl->SetOptions(This,lofMask,lofOptions);
}
static inline HRESULT IShellLibrary_GetFolderType(IShellLibrary* This,FOLDERTYPEID *pftid) {
    return This->lpVtbl->GetFolderType(This,pftid);
}
static inline HRESULT IShellLibrary_SetFolderType(IShellLibrary* This,REFFOLDERTYPEID ftid) {
    return This->lpVtbl->SetFolderType(This,ftid);
}
static inline HRESULT IShellLibrary_GetIcon(IShellLibrary* This,LPWSTR *ppszIcon) {
    return This->lpVtbl->GetIcon(This,ppszIcon);
}
static inline HRESULT IShellLibrary_SetIcon(IShellLibrary* This,LPCWSTR pszIcon) {
    return This->lpVtbl->SetIcon(This,pszIcon);
}
static inline HRESULT IShellLibrary_Commit(IShellLibrary* This) {
    return This->lpVtbl->Commit(This);
}
static inline HRESULT IShellLibrary_Save(IShellLibrary* This,IShellItem *psiFolderToSaveIn,LPCWSTR pszLibraryName,LIBRARYSAVEFLAGS lsf,IShellItem **ppsiSavedTo) {
    return This->lpVtbl->Save(This,psiFolderToSaveIn,pszLibraryName,lsf,ppsiSavedTo);
}
static inline HRESULT IShellLibrary_SaveInKnownFolder(IShellLibrary* This,REFKNOWNFOLDERID kfidToSaveIn,LPCWSTR pszLibraryName,LIBRARYSAVEFLAGS lsf,IShellItem **ppsiSavedTo) {
    return This->lpVtbl->SaveInKnownFolder(This,kfidToSaveIn,pszLibraryName,lsf,ppsiSavedTo);
}
#endif
#endif

#endif


#endif  /* __IShellLibrary_INTERFACE_DEFINED__ */


typedef enum PBM_EVENT {
    PE_DUCKSESSION = 1,
    PE_UNDUCKSESSION = 2
} PBM_EVENT;

/*****************************************************************************
 * IPlaybackManagerEvents interface
 */
#ifndef __IPlaybackManagerEvents_INTERFACE_DEFINED__
#define __IPlaybackManagerEvents_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPlaybackManagerEvents, 0x385cfb7d, 0x4e0c, 0x4106, 0x91,0x2e, 0x8c,0xfb,0x4c,0x19,0x1f,0x45);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("385cfb7d-4e0c-4106-912e-8cfb4c191f45")
IPlaybackManagerEvents : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnPlaybackManagerEvent(
        DWORD dwSessionId,
        PBM_EVENT mediaEvent) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPlaybackManagerEvents, 0x385cfb7d, 0x4e0c, 0x4106, 0x91,0x2e, 0x8c,0xfb,0x4c,0x19,0x1f,0x45)
#endif
#else
typedef struct IPlaybackManagerEventsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IPlaybackManagerEvents methods ***/
    HRESULT (STDMETHODCALLTYPE *OnPlaybackManagerEvent)(
        IPlaybackManagerEvents *This,
        DWORD dwSessionId,
        PBM_EVENT mediaEvent);

    END_INTERFACE
} IPlaybackManagerEventsVtbl;

interface IPlaybackManagerEvents {
    CONST_VTBL IPlaybackManagerEventsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPlaybackManagerEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPlaybackManagerEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPlaybackManagerEvents_Release(This) (This)->lpVtbl->Release(This)
/*** IPlaybackManagerEvents methods ***/
#define IPlaybackManagerEvents_OnPlaybackManagerEvent(This,dwSessionId,mediaEvent) (This)->lpVtbl->OnPlaybackManagerEvent(This,dwSessionId,mediaEvent)
#else
/*** IUnknown methods ***/
static inline HRESULT IPlaybackManagerEvents_QueryInterface(IPlaybackManagerEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPlaybackManagerEvents_AddRef(IPlaybackManagerEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPlaybackManagerEvents_Release(IPlaybackManagerEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** IPlaybackManagerEvents methods ***/
static inline HRESULT IPlaybackManagerEvents_OnPlaybackManagerEvent(IPlaybackManagerEvents* This,DWORD dwSessionId,PBM_EVENT mediaEvent) {
    return This->lpVtbl->OnPlaybackManagerEvent(This,dwSessionId,mediaEvent);
}
#endif
#endif

#endif


#endif  /* __IPlaybackManagerEvents_INTERFACE_DEFINED__ */


typedef enum PBM_SESSION_TYPE {
    ST_COMMUNICATION = 1,
    ST_MEDIA = 2
} PBM_SESSION_TYPE;

typedef enum PBM_PLAY_STATE {
    PS_PLAYING = 1,
    PS_PAUSED = 2,
    PS_STOPPED = 3
} PBM_PLAY_STATE;

typedef enum PBM_MUTE_STATE {
    MS_MUTED = 1,
    MS_UNMUTED = 2
} PBM_MUTE_STATE;

/*****************************************************************************
 * IPlaybackManager interface
 */
#ifndef __IPlaybackManager_INTERFACE_DEFINED__
#define __IPlaybackManager_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPlaybackManager, 0x0f3c1b01, 0x8199, 0x4173, 0xba,0x78, 0x98,0x58,0x82,0x26,0x6f,0x7a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0f3c1b01-8199-4173-ba78-985882266f7a")
IPlaybackManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Advise(
        PBM_SESSION_TYPE type,
        IPlaybackManagerEvents *pEvents,
        DWORD *pdwSessionId) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unadvise(
        DWORD dwSessionId) = 0;

    virtual HRESULT STDMETHODCALLTYPE ChangeSessionState(
        DWORD dwSessionId,
        PBM_PLAY_STATE state,
        PBM_MUTE_STATE mute) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPlaybackManager, 0x0f3c1b01, 0x8199, 0x4173, 0xba,0x78, 0x98,0x58,0x82,0x26,0x6f,0x7a)
#endif
#else
typedef struct IPlaybackManagerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IPlaybackManager methods ***/
    HRESULT (STDMETHODCALLTYPE *Advise)(
        IPlaybackManager *This,
        PBM_SESSION_TYPE type,
        IPlaybackManagerEvents *pEvents,
        DWORD *pdwSessionId);

    HRESULT (STDMETHODCALLTYPE *Unadvise)(
        IPlaybackManager *This,
        DWORD dwSessionId);

    HRESULT (STDMETHODCALLTYPE *ChangeSessionState)(
        IPlaybackManager *This,
        DWORD dwSessionId,
        PBM_PLAY_STATE state,
        PBM_MUTE_STATE mute);

    END_INTERFACE
} IPlaybackManagerVtbl;

interface IPlaybackManager {
    CONST_VTBL IPlaybackManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPlaybackManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPlaybackManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPlaybackManager_Release(This) (This)->lpVtbl->Release(This)
/*** IPlaybackManager methods ***/
#define IPlaybackManager_Advise(This,type,pEvents,pdwSessionId) (This)->lpVtbl->Advise(This,type,pEvents,pdwSessionId)
#define IPlaybackManager_Unadvise(This,dwSessionId) (This)->lpVtbl->Unadvise(This,dwSessionId)
#define IPlaybackManager_ChangeSessionState(This,dwSessionId,state,mute) (This)->lpVtbl->ChangeSessionState(This,dwSessionId,state,mute)
#else
/*** IUnknown methods ***/
static inline HRESULT IPlaybackManager_QueryInterface(IPlaybackManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPlaybackManager_AddRef(IPlaybackManager* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPlaybackManager_Release(IPlaybackManager* This) {
    return This->lpVtbl->Release(This);
}
/*** IPlaybackManager methods ***/
static inline HRESULT IPlaybackManager_Advise(IPlaybackManager* This,PBM_SESSION_TYPE type,IPlaybackManagerEvents *pEvents,DWORD *pdwSessionId) {
    return This->lpVtbl->Advise(This,type,pEvents,pdwSessionId);
}
static inline HRESULT IPlaybackManager_Unadvise(IPlaybackManager* This,DWORD dwSessionId) {
    return This->lpVtbl->Unadvise(This,dwSessionId);
}
static inline HRESULT IPlaybackManager_ChangeSessionState(IPlaybackManager* This,DWORD dwSessionId,PBM_PLAY_STATE state,PBM_MUTE_STATE mute) {
    return This->lpVtbl->ChangeSessionState(This,dwSessionId,state,mute);
}
#endif
#endif

#endif


#endif  /* __IPlaybackManager_INTERFACE_DEFINED__ */


typedef enum DEFAULT_FOLDER_MENU_RESTRICTIONS {
    DFMR_DEFAULT = 0x0,
    DFMR_NO_STATIC_VERBS = 0x8,
    DFMR_STATIC_VERBS_ONLY = 0x10,
    DFMR_NO_RESOURCE_VERBS = 0x20,
    DFMR_OPTIN_HANDLERS_ONLY = 0x40,
    DFMR_RESOURCE_AND_FOLDER_VERBS_ONLY = 0x80,
    DFMR_USE_SPECIFIED_HANDLERS = 0x100,
    DFMR_USE_SPECIFIED_VERBS = 0x200,
    DFMR_NO_ASYNC_VERBS = 0x400
} DEFAULT_FOLDER_MENU_RESTRICTIONS;

DEFINE_ENUM_FLAG_OPERATORS(DEFAULT_FOLDER_MENU_RESTRICTIONS)

/*****************************************************************************
 * IDefaultFolderMenuInitialize interface
 */
#ifndef __IDefaultFolderMenuInitialize_INTERFACE_DEFINED__
#define __IDefaultFolderMenuInitialize_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDefaultFolderMenuInitialize, 0x7690aa79, 0xf8fc, 0x4615, 0xa3,0x27, 0x36,0xf7,0xd1,0x8f,0x5d,0x91);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7690aa79-f8fc-4615-a327-36f7d18f5d91")
IDefaultFolderMenuInitialize : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        HWND hwnd,
        IContextMenuCB *pcmcb,
        PCIDLIST_ABSOLUTE pidlFolder,
        IShellFolder *psf,
        UINT cidl,
        PCUITEMID_CHILD_ARRAY apidl,
        IUnknown *punkAssociation,
        UINT cKeys,
        const HKEY *aKeys) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMenuRestrictions(
        DEFAULT_FOLDER_MENU_RESTRICTIONS dfmrValues) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMenuRestrictions(
        DEFAULT_FOLDER_MENU_RESTRICTIONS dfmrMask,
        DEFAULT_FOLDER_MENU_RESTRICTIONS *pdfmrValues) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetHandlerClsid(
        REFCLSID rclsid) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDefaultFolderMenuInitialize, 0x7690aa79, 0xf8fc, 0x4615, 0xa3,0x27, 0x36,0xf7,0xd1,0x8f,0x5d,0x91)
#endif
#else
typedef struct IDefaultFolderMenuInitializeVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDefaultFolderMenuInitialize methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IDefaultFolderMenuInitialize *This,
        HWND hwnd,
        IContextMenuCB *pcmcb,
        PCIDLIST_ABSOLUTE pidlFolder,
        IShellFolder *psf,
        UINT cidl,
        PCUITEMID_CHILD_ARRAY apidl,
        IUnknown *punkAssociation,
        UINT cKeys,
        const HKEY *aKeys);

    HRESULT (STDMETHODCALLTYPE *SetMenuRestrictions)(
        IDefaultFolderMenuInitialize *This,
        DEFAULT_FOLDER_MENU_RESTRICTIONS dfmrValues);

    HRESULT (STDMETHODCALLTYPE *GetMenuRestrictions)(
        IDefaultFolderMenuInitialize *This,
        DEFAULT_FOLDER_MENU_RESTRICTIONS dfmrMask,
        DEFAULT_FOLDER_MENU_RESTRICTIONS *pdfmrValues);

    HRESULT (STDMETHODCALLTYPE *SetHandlerClsid)(
        IDefaultFolderMenuInitialize *This,
        REFCLSID rclsid);

    END_INTERFACE
} IDefaultFolderMenuInitializeVtbl;

interface IDefaultFolderMenuInitialize {
    CONST_VTBL IDefaultFolderMenuInitializeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDefaultFolderMenuInitialize_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDefaultFolderMenuInitialize_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDefaultFolderMenuInitialize_Release(This) (This)->lpVtbl->Release(This)
/*** IDefaultFolderMenuInitialize methods ***/
#define IDefaultFolderMenuInitialize_Initialize(This,hwnd,pcmcb,pidlFolder,psf,cidl,apidl,punkAssociation,cKeys,aKeys) (This)->lpVtbl->Initialize(This,hwnd,pcmcb,pidlFolder,psf,cidl,apidl,punkAssociation,cKeys,aKeys)
#define IDefaultFolderMenuInitialize_SetMenuRestrictions(This,dfmrValues) (This)->lpVtbl->SetMenuRestrictions(This,dfmrValues)
#define IDefaultFolderMenuInitialize_GetMenuRestrictions(This,dfmrMask,pdfmrValues) (This)->lpVtbl->GetMenuRestrictions(This,dfmrMask,pdfmrValues)
#define IDefaultFolderMenuInitialize_SetHandlerClsid(This,rclsid) (This)->lpVtbl->SetHandlerClsid(This,rclsid)
#else
/*** IUnknown methods ***/
static inline HRESULT IDefaultFolderMenuInitialize_QueryInterface(IDefaultFolderMenuInitialize* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDefaultFolderMenuInitialize_AddRef(IDefaultFolderMenuInitialize* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDefaultFolderMenuInitialize_Release(IDefaultFolderMenuInitialize* This) {
    return This->lpVtbl->Release(This);
}
/*** IDefaultFolderMenuInitialize methods ***/
static inline HRESULT IDefaultFolderMenuInitialize_Initialize(IDefaultFolderMenuInitialize* This,HWND hwnd,IContextMenuCB *pcmcb,PCIDLIST_ABSOLUTE pidlFolder,IShellFolder *psf,UINT cidl,PCUITEMID_CHILD_ARRAY apidl,IUnknown *punkAssociation,UINT cKeys,const HKEY *aKeys) {
    return This->lpVtbl->Initialize(This,hwnd,pcmcb,pidlFolder,psf,cidl,apidl,punkAssociation,cKeys,aKeys);
}
static inline HRESULT IDefaultFolderMenuInitialize_SetMenuRestrictions(IDefaultFolderMenuInitialize* This,DEFAULT_FOLDER_MENU_RESTRICTIONS dfmrValues) {
    return This->lpVtbl->SetMenuRestrictions(This,dfmrValues);
}
static inline HRESULT IDefaultFolderMenuInitialize_GetMenuRestrictions(IDefaultFolderMenuInitialize* This,DEFAULT_FOLDER_MENU_RESTRICTIONS dfmrMask,DEFAULT_FOLDER_MENU_RESTRICTIONS *pdfmrValues) {
    return This->lpVtbl->GetMenuRestrictions(This,dfmrMask,pdfmrValues);
}
static inline HRESULT IDefaultFolderMenuInitialize_SetHandlerClsid(IDefaultFolderMenuInitialize* This,REFCLSID rclsid) {
    return This->lpVtbl->SetHandlerClsid(This,rclsid);
}
#endif
#endif

#endif


#endif  /* __IDefaultFolderMenuInitialize_INTERFACE_DEFINED__ */


#if NTDDI_VERSION >= NTDDI_WIN8
typedef enum ACTIVATEOPTIONS {
    AO_NONE = 0x0,
    AO_DESIGNMODE = 0x1,
    AO_NOERRORUI = 0x2,
    AO_NOSPLASHSCREEN = 0x4
} ACTIVATEOPTIONS;

DEFINE_ENUM_FLAG_OPERATORS(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 inline HRESULT IApplicationActivationManager_QueryInterface(IApplicationActivationManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IApplicationActivationManager_AddRef(IApplicationActivationManager* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IApplicationActivationManager_Release(IApplicationActivationManager* This) {
    return This->lpVtbl->Release(This);
}
/*** IApplicationActivationManager methods ***/
static inline HRESULT IApplicationActivationManager_ActivateApplication(IApplicationActivationManager* This,LPCWSTR appUserModelId,LPCWSTR arguments,ACTIVATEOPTIONS options,DWORD *processId) {
    return This->lpVtbl->ActivateApplication(This,appUserModelId,arguments,options,processId);
}
static inline HRESULT IApplicationActivationManager_ActivateForFile(IApplicationActivationManager* This,LPCWSTR appUserModelId,IShellItemArray *itemArray,LPCWSTR verb,DWORD *processId) {
    return This->lpVtbl->ActivateForFile(This,appUserModelId,itemArray,verb,processId);
}
static inline 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__ */

#endif

#ifndef __ShellObjects_LIBRARY_DEFINED__
#define __ShellObjects_LIBRARY_DEFINED__

DEFINE_GUID(LIBID_ShellObjects, 0x50a7e9b1, 0x70ef, 0x11d1, 0xb7,0x5a, 0x00,0xa0,0xc9,0x05,0x64,0xfe);

/*****************************************************************************
 * DesktopWallpaper coclass
 */

DEFINE_GUID(CLSID_DesktopWallpaper, 0xc2cf3110, 0x460e, 0x4fc1, 0xb9,0xd0, 0x8a,0x1c,0x0c,0x9c,0xc4,0xbd);

#ifdef __cplusplus
class DECLSPEC_UUID("c2cf3110-460e-4fc1-b9d0-8a1c0c9cc4bd") DesktopWallpaper;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(DesktopWallpaper, 0xc2cf3110, 0x460e, 0x4fc1, 0xb9,0xd0, 0x8a,0x1c,0x0c,0x9c,0xc4,0xbd)
#endif
#endif

/*****************************************************************************
 * ShellDesktop coclass
 */

DEFINE_GUID(CLSID_ShellDesktop, 0x00021400, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);

#ifdef __cplusplus
class DECLSPEC_UUID("00021400-0000-0000-c000-000000000046") ShellDesktop;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ShellDesktop, 0x00021400, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46)
#endif
#endif

/*****************************************************************************
 * ShellFSFolder coclass
 */

DEFINE_GUID(CLSID_ShellFSFolder, 0xf3364ba0, 0x65b9, 0x11ce, 0xa9,0xba, 0x00,0xaa,0x00,0x4a,0xe8,0x37);

#ifdef __cplusplus
class DECLSPEC_UUID("f3364ba0-65b9-11ce-a9ba-00aa004ae837") ShellFSFolder;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ShellFSFolder, 0xf3364ba0, 0x65b9, 0x11ce, 0xa9,0xba, 0x00,0xaa,0x00,0x4a,0xe8,0x37)
#endif
#endif

/*****************************************************************************
 * NetworkPlaces coclass
 */

DEFINE_GUID(CLSID_NetworkPlaces, 0x208d2c60, 0x3aea, 0x1069, 0xa2,0xd7, 0x08,0x00,0x2b,0x30,0x30,0x9d);

#ifdef __cplusplus
class DECLSPEC_UUID("208d2c60-3aea-1069-a2d7-08002b30309d") NetworkPlaces;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(NetworkPlaces, 0x208d2c60, 0x3aea, 0x1069, 0xa2,0xd7, 0x08,0x00,0x2b,0x30,0x30,0x9d)
#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

/*****************************************************************************
 * 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

/*****************************************************************************
 * DriveSizeCategorizer coclass
 */

DEFINE_GUID(CLSID_DriveSizeCategorizer, 0x94357b53, 0xca29, 0x4b78, 0x83,0xae, 0xe8,0xfe,0x74,0x09,0x13,0x4f);

#ifdef __cplusplus
class DECLSPEC_UUID("94357b53-ca29-4b78-83ae-e8fe7409134f") DriveSizeCategorizer;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(DriveSizeCategorizer, 0x94357b53, 0xca29, 0x4b78, 0x83,0xae, 0xe8,0xfe,0x74,0x09,0x13,0x4f)
#endif
#endif

/*****************************************************************************
 * DriveTypeCategorizer coclass
 */

DEFINE_GUID(CLSID_DriveTypeCategorizer, 0xb0a8f3cf, 0x4333, 0x4bab, 0x88,0x73, 0x1c,0xcb,0x1c,0xad,0xa4,0x8b);

#ifdef __cplusplus
class DECLSPEC_UUID("b0a8f3cf-4333-4bab-8873-1ccb1cada48b") DriveTypeCategorizer;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(DriveTypeCategorizer, 0xb0a8f3cf, 0x4333, 0x4bab, 0x88,0x73, 0x1c,0xcb,0x1c,0xad,0xa4,0x8b)
#endif
#endif

/*****************************************************************************
 * FreeSpaceCategorizer coclass
 */

DEFINE_GUID(CLSID_FreeSpaceCategorizer, 0xb5607793, 0x24ac, 0x44c7, 0x82,0xe2, 0x83,0x17,0x26,0xaa,0x6c,0xb7);

#ifdef __cplusplus
class DECLSPEC_UUID("b5607793-24ac-44c7-82e2-831726aa6cb7") FreeSpaceCategorizer;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FreeSpaceCategorizer, 0xb5607793, 0x24ac, 0x44c7, 0x82,0xe2, 0x83,0x17,0x26,0xaa,0x6c,0xb7)
#endif
#endif

/*****************************************************************************
 * TimeCategorizer coclass
 */

DEFINE_GUID(CLSID_TimeCategorizer, 0x3bb4118f, 0xddfd, 0x4d30, 0xa3,0x48, 0x9f,0xb5,0xd6,0xbf,0x1a,0xfe);

#ifdef __cplusplus
class DECLSPEC_UUID("3bb4118f-ddfd-4d30-a348-9fb5d6bf1afe") TimeCategorizer;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(TimeCategorizer, 0x3bb4118f, 0xddfd, 0x4d30, 0xa3,0x48, 0x9f,0xb5,0xd6,0xbf,0x1a,0xfe)
#endif
#endif

/*****************************************************************************
 * SizeCategorizer coclass
 */

DEFINE_GUID(CLSID_SizeCategorizer, 0x55d7b852, 0xf6d1, 0x42f2, 0xaa,0x75, 0x87,0x28,0xa1,0xb2,0xd2,0x64);

#ifdef __cplusplus
class DECLSPEC_UUID("55d7b852-f6d1-42f2-aa75-8728a1b2d264") SizeCategorizer;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SizeCategorizer, 0x55d7b852, 0xf6d1, 0x42f2, 0xaa,0x75, 0x87,0x28,0xa1,0xb2,0xd2,0x64)
#endif
#endif

/*****************************************************************************
 * AlphabeticalCategorizer coclass
 */

DEFINE_GUID(CLSID_AlphabeticalCategorizer, 0x3c2654c6, 0x7372, 0x4f6b, 0xb3,0x10, 0x55,0xd6,0x12,0x8f,0x49,0xd2);

#ifdef __cplusplus
class DECLSPEC_UUID("3c2654c6-7372-4f6b-b310-55d6128f49d2") AlphabeticalCategorizer;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(AlphabeticalCategorizer, 0x3c2654c6, 0x7372, 0x4f6b, 0xb3,0x10, 0x55,0xd6,0x12,0x8f,0x49,0xd2)
#endif
#endif

/*****************************************************************************
 * MergedCategorizer coclass
 */

DEFINE_GUID(CLSID_MergedCategorizer, 0x8e827c11, 0x33e7, 0x4bc1, 0xb2,0x42, 0x8c,0xd9,0xa1,0xc2,0xb3,0x04);

#ifdef __cplusplus
class DECLSPEC_UUID("8e827c11-33e7-4bc1-b242-8cd9a1c2b304") MergedCategorizer;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(MergedCategorizer, 0x8e827c11, 0x33e7, 0x4bc1, 0xb2,0x42, 0x8c,0xd9,0xa1,0xc2,0xb3,0x04)
#endif
#endif

/*****************************************************************************
 * ImageProperties coclass
 */

DEFINE_GUID(CLSID_ImageProperties, 0x7ab770c7, 0x0e23, 0x4d7a, 0x8a,0xa2, 0x19,0xbf,0xad,0x47,0x98,0x29);

#ifdef __cplusplus
class DECLSPEC_UUID("7ab770c7-0e23-4d7a-8aa2-19bfad479829") ImageProperties;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ImageProperties, 0x7ab770c7, 0x0e23, 0x4d7a, 0x8a,0xa2, 0x19,0xbf,0xad,0x47,0x98,0x29)
#endif
#endif

/*****************************************************************************
 * PropertiesUI coclass
 */

DEFINE_GUID(CLSID_PropertiesUI, 0xd912f8cf, 0x0396, 0x4915, 0x88,0x4e, 0xfb,0x42,0x5d,0x32,0x94,0x3b);

#ifdef __cplusplus
class DECLSPEC_UUID("d912f8cf-0396-4915-884e-fb425d32943b") PropertiesUI;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(PropertiesUI, 0xd912f8cf, 0x0396, 0x4915, 0x88,0x4e, 0xfb,0x42,0x5d,0x32,0x94,0x3b)
#endif
#endif

/*****************************************************************************
 * UserNotification coclass
 */

DEFINE_GUID(CLSID_UserNotification, 0x0010890e, 0x8789, 0x413c, 0xad,0xbc, 0x48,0xf5,0xb5,0x11,0xb3,0xaf);

#ifdef __cplusplus
class DECLSPEC_UUID("0010890e-8789-413c-adbc-48f5b511b3af") UserNotification;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(UserNotification, 0x0010890e, 0x8789, 0x413c, 0xad,0xbc, 0x48,0xf5,0xb5,0x11,0xb3,0xaf)
#endif
#endif

/*****************************************************************************
 * CDBurn coclass
 */

DEFINE_GUID(CLSID_CDBurn, 0xfbeb8a05, 0xbeee, 0x4442, 0x80,0x4e, 0x40,0x9d,0x6c,0x45,0x15,0xe9);

#ifdef __cplusplus
class DECLSPEC_UUID("fbeb8a05-beee-4442-804e-409d6c4515e9") CDBurn;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDBurn, 0xfbeb8a05, 0xbeee, 0x4442, 0x80,0x4e, 0x40,0x9d,0x6c,0x45,0x15,0xe9)
#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

/*****************************************************************************
 * StartMenuPin coclass
 */

DEFINE_GUID(CLSID_StartMenuPin, 0xa2a9545d, 0xa0c2, 0x42b4, 0x97,0x08, 0xa0,0xb2,0xba,0xdd,0x77,0xc8);

#ifdef __cplusplus
class DECLSPEC_UUID("a2a9545d-a0c2-42b4-9708-a0b2badd77c8") StartMenuPin;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(StartMenuPin, 0xa2a9545d, 0xa0c2, 0x42b4, 0x97,0x08, 0xa0,0xb2,0xba,0xdd,0x77,0xc8)
#endif
#endif

/*****************************************************************************
 * WebWizardHost coclass
 */

DEFINE_GUID(CLSID_WebWizardHost, 0xc827f149, 0x55c1, 0x4d28, 0x93,0x5e, 0x57,0xe4,0x7c,0xae,0xd9,0x73);

#ifdef __cplusplus
class DECLSPEC_UUID("c827f149-55c1-4d28-935e-57e47caed973") WebWizardHost;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(WebWizardHost, 0xc827f149, 0x55c1, 0x4d28, 0x93,0x5e, 0x57,0xe4,0x7c,0xae,0xd9,0x73)
#endif
#endif

/*****************************************************************************
 * PublishDropTarget coclass
 */

DEFINE_GUID(CLSID_PublishDropTarget, 0xcc6eeffb, 0x43f6, 0x46c5, 0x96,0x19, 0x51,0xd5,0x71,0x96,0x7f,0x7d);

#ifdef __cplusplus
class DECLSPEC_UUID("cc6eeffb-43f6-46c5-9619-51d571967f7d") PublishDropTarget;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(PublishDropTarget, 0xcc6eeffb, 0x43f6, 0x46c5, 0x96,0x19, 0x51,0xd5,0x71,0x96,0x7f,0x7d)
#endif
#endif

/*****************************************************************************
 * PublishingWizard coclass
 */

DEFINE_GUID(CLSID_PublishingWizard, 0x6b33163c, 0x76a5, 0x4b6c, 0xbf,0x21, 0x45,0xde,0x9c,0xd5,0x03,0xa1);

#ifdef __cplusplus
class DECLSPEC_UUID("6b33163c-76a5-4b6c-bf21-45de9cd503a1") PublishingWizard;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(PublishingWizard, 0x6b33163c, 0x76a5, 0x4b6c, 0xbf,0x21, 0x45,0xde,0x9c,0xd5,0x03,0xa1)
#endif
#endif

#define SID_PublishingWizard CLSID_PublishingWizard
/*****************************************************************************
 * InternetPrintOrdering coclass
 */

DEFINE_GUID(CLSID_InternetPrintOrdering, 0xadd36aa8, 0x751a, 0x4579, 0xa2,0x66, 0xd6,0x6f,0x52,0x02,0xcc,0xbb);

#ifdef __cplusplus
class DECLSPEC_UUID("add36aa8-751a-4579-a266-d66f5202ccbb") InternetPrintOrdering;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(InternetPrintOrdering, 0xadd36aa8, 0x751a, 0x4579, 0xa2,0x66, 0xd6,0x6f,0x52,0x02,0xcc,0xbb)
#endif
#endif

/*****************************************************************************
 * FolderViewHost coclass
 */

DEFINE_GUID(CLSID_FolderViewHost, 0x20b1cb23, 0x6968, 0x4eb9, 0xb7,0xd4, 0xa6,0x6d,0x00,0xd0,0x7c,0xee);

#ifdef __cplusplus
class DECLSPEC_UUID("20b1cb23-6968-4eb9-b7d4-a66d00d07cee") FolderViewHost;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FolderViewHost, 0x20b1cb23, 0x6968, 0x4eb9, 0xb7,0xd4, 0xa6,0x6d,0x00,0xd0,0x7c,0xee)
#endif
#endif

/*****************************************************************************
 * 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

/*****************************************************************************
 * ImageRecompress coclass
 */

DEFINE_GUID(CLSID_ImageRecompress, 0x6e33091c, 0xd2f8, 0x4740, 0xb5,0x5e, 0x2e,0x11,0xd1,0x47,0x7a,0x2c);

#ifdef __cplusplus
class DECLSPEC_UUID("6e33091c-d2f8-4740-b55e-2e11d1477a2c") ImageRecompress;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ImageRecompress, 0x6e33091c, 0xd2f8, 0x4740, 0xb5,0x5e, 0x2e,0x11,0xd1,0x47,0x7a,0x2c)
#endif
#endif

/*****************************************************************************
 * TrayBandSiteService coclass
 */

DEFINE_GUID(CLSID_TrayBandSiteService, 0xf60ad0a0, 0xe5e1, 0x45cb, 0xb5,0x1a, 0xe1,0x5b,0x9f,0x8b,0x29,0x34);

#ifdef __cplusplus
class DECLSPEC_UUID("f60ad0a0-e5e1-45cb-b51a-e15b9f8b2934") TrayBandSiteService;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(TrayBandSiteService, 0xf60ad0a0, 0xe5e1, 0x45cb, 0xb5,0x1a, 0xe1,0x5b,0x9f,0x8b,0x29,0x34)
#endif
#endif

/*****************************************************************************
 * TrayDeskBand coclass
 */

DEFINE_GUID(CLSID_TrayDeskBand, 0xe6442437, 0x6c68, 0x4f52, 0x94,0xdd, 0x2c,0xfe,0xd2,0x67,0xef,0xb9);

#ifdef __cplusplus
class DECLSPEC_UUID("e6442437-6c68-4f52-94dd-2cfed267efb9") TrayDeskBand;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(TrayDeskBand, 0xe6442437, 0x6c68, 0x4f52, 0x94,0xdd, 0x2c,0xfe,0xd2,0x67,0xef,0xb9)
#endif
#endif

/*****************************************************************************
 * AttachmentServices coclass
 */

DEFINE_GUID(CLSID_AttachmentServices, 0x4125dd96, 0xe03a, 0x4103, 0x8f,0x70, 0xe0,0x59,0x7d,0x80,0x3b,0x9c);

#ifdef __cplusplus
class DECLSPEC_UUID("4125dd96-e03a-4103-8f70-e0597d803b9c") AttachmentServices;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(AttachmentServices, 0x4125dd96, 0xe03a, 0x4103, 0x8f,0x70, 0xe0,0x59,0x7d,0x80,0x3b,0x9c)
#endif
#endif

/*****************************************************************************
 * DocPropShellExtension coclass
 */

DEFINE_GUID(CLSID_DocPropShellExtension, 0x883373c3, 0xbf89, 0x11d1, 0xbe,0x35, 0x08,0x00,0x36,0xb1,0x1a,0x03);

#ifdef __cplusplus
class DECLSPEC_UUID("883373c3-bf89-11d1-be35-080036b11a03") DocPropShellExtension;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(DocPropShellExtension, 0x883373c3, 0xbf89, 0x11d1, 0xbe,0x35, 0x08,0x00,0x36,0xb1,0x1a,0x03)
#endif
#endif

/*****************************************************************************
 * ShellItem coclass
 */

DEFINE_GUID(CLSID_ShellItem, 0x9ac9fbe1, 0xe0a2, 0x4ad6, 0xb4,0xee, 0xe2,0x12,0x01,0x3e,0xa9,0x17);

#ifdef __cplusplus
class DECLSPEC_UUID("9ac9fbe1-e0a2-4ad6-b4ee-e212013ea917") ShellItem;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ShellItem, 0x9ac9fbe1, 0xe0a2, 0x4ad6, 0xb4,0xee, 0xe2,0x12,0x01,0x3e,0xa9,0x17)
#endif
#endif

/*****************************************************************************
 * NamespaceWalker coclass
 */

DEFINE_GUID(CLSID_NamespaceWalker, 0x72eb61e0, 0x8672, 0x4303, 0x91,0x75, 0xf2,0xe4,0xc6,0x8b,0x2e,0x7c);

#ifdef __cplusplus
class DECLSPEC_UUID("72eb61e0-8672-4303-9175-f2e4c68b2e7c") NamespaceWalker;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(NamespaceWalker, 0x72eb61e0, 0x8672, 0x4303, 0x91,0x75, 0xf2,0xe4,0xc6,0x8b,0x2e,0x7c)
#endif
#endif

/*****************************************************************************
 * FileOperation coclass
 */

DEFINE_GUID(CLSID_FileOperation, 0x3ad05575, 0x8857, 0x4850, 0x92,0x77, 0x11,0xb8,0x5b,0xdb,0x8e,0x09);

#ifdef __cplusplus
class DECLSPEC_UUID("3ad05575-8857-4850-9277-11b85bdb8e09") FileOperation;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FileOperation, 0x3ad05575, 0x8857, 0x4850, 0x92,0x77, 0x11,0xb8,0x5b,0xdb,0x8e,0x09)
#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

/*****************************************************************************
 * 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

/*****************************************************************************
 * FSCopyHandler coclass
 */

DEFINE_GUID(CLSID_FSCopyHandler, 0xd197380a, 0x0a79, 0x4dc8, 0xa0,0x33, 0xed,0x88,0x2c,0x2f,0xa1,0x4b);

#ifdef __cplusplus
class DECLSPEC_UUID("d197380a-0a79-4dc8-a033-ed882c2fa14b") FSCopyHandler;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FSCopyHandler, 0xd197380a, 0x0a79, 0x4dc8, 0xa0,0x33, 0xed,0x88,0x2c,0x2f,0xa1,0x4b)
#endif
#endif

/*****************************************************************************
 * SharingConfigurationManager coclass
 */

DEFINE_GUID(CLSID_SharingConfigurationManager, 0x49f371e1, 0x8c5c, 0x4d9c, 0x9a,0x3b, 0x54,0xa6,0x82,0x7f,0x51,0x3c);

#ifdef __cplusplus
class DECLSPEC_UUID("49f371e1-8c5c-4d9c-9a3b-54a6827f513c") SharingConfigurationManager;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SharingConfigurationManager, 0x49f371e1, 0x8c5c, 0x4d9c, 0x9a,0x3b, 0x54,0xa6,0x82,0x7f,0x51,0x3c)
#endif
#endif

/*****************************************************************************
 * PreviousVersions coclass
 */

DEFINE_GUID(CLSID_PreviousVersions, 0x596ab062, 0xb4d2, 0x4215, 0x9f,0x74, 0xe9,0x10,0x9b,0x0a,0x81,0x53);

#ifdef __cplusplus
class DECLSPEC_UUID("596ab062-b4d2-4215-9f74-e9109b0a8153") PreviousVersions;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(PreviousVersions, 0x596ab062, 0xb4d2, 0x4215, 0x9f,0x74, 0xe9,0x10,0x9b,0x0a,0x81,0x53)
#endif
#endif

/*****************************************************************************
 * NetworkConnections coclass
 */

DEFINE_GUID(CLSID_NetworkConnections, 0x7007acc7, 0x3202, 0x11d1, 0xaa,0xd2, 0x00,0x80,0x5f,0xc1,0x27,0x0e);

#ifdef __cplusplus
class DECLSPEC_UUID("7007acc7-3202-11d1-aad2-00805fc1270e") NetworkConnections;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(NetworkConnections, 0x7007acc7, 0x3202, 0x11d1, 0xaa,0xd2, 0x00,0x80,0x5f,0xc1,0x27,0x0e)
#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

/*****************************************************************************
 * IENamespaceTreeControl coclass
 */

DEFINE_GUID(CLSID_IENamespaceTreeControl, 0xace52d03, 0xe5cd, 0x4b20, 0x82,0xff, 0xe7,0x1b,0x11,0xbe,0xae,0x1d);

#ifdef __cplusplus
class DECLSPEC_UUID("ace52d03-e5cd-4b20-82ff-e71b11beae1d") IENamespaceTreeControl;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IENamespaceTreeControl, 0xace52d03, 0xe5cd, 0x4b20, 0x82,0xff, 0xe7,0x1b,0x11,0xbe,0xae,0x1d)
#endif
#endif

/*****************************************************************************
 * ScheduledTasks coclass
 */

DEFINE_GUID(CLSID_ScheduledTasks, 0xd6277990, 0x4c6a, 0x11cf, 0x8d,0x87, 0x00,0xaa,0x00,0x60,0xf5,0xbf);

#ifdef __cplusplus
class DECLSPEC_UUID("d6277990-4c6a-11cf-8d87-00aa0060f5bf") ScheduledTasks;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ScheduledTasks, 0xd6277990, 0x4c6a, 0x11cf, 0x8d,0x87, 0x00,0xaa,0x00,0x60,0xf5,0xbf)
#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

/*****************************************************************************
 * ApplicationAssociationRegistrationUI coclass
 */

DEFINE_GUID(CLSID_ApplicationAssociationRegistrationUI, 0x1968106d, 0xf3b5, 0x44cf, 0x89,0x0e, 0x11,0x6f,0xcb,0x9e,0xce,0xf1);

#ifdef __cplusplus
class DECLSPEC_UUID("1968106d-f3b5-44cf-890e-116fcb9ecef1") ApplicationAssociationRegistrationUI;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ApplicationAssociationRegistrationUI, 0x1968106d, 0xf3b5, 0x44cf, 0x89,0x0e, 0x11,0x6f,0xcb,0x9e,0xce,0xf1)
#endif
#endif

/*****************************************************************************
 * SearchFolderItemFactory coclass
 */

DEFINE_GUID(CLSID_SearchFolderItemFactory, 0x14010e02, 0xbbbd, 0x41f0, 0x88,0xe3, 0xed,0xa3,0x71,0x21,0x65,0x84);

#ifdef __cplusplus
class DECLSPEC_UUID("14010e02-bbbd-41f0-88e3-eda371216584") SearchFolderItemFactory;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(SearchFolderItemFactory, 0x14010e02, 0xbbbd, 0x41f0, 0x88,0xe3, 0xed,0xa3,0x71,0x21,0x65,0x84)
#endif
#endif

/*****************************************************************************
 * OpenControlPanel coclass
 */

DEFINE_GUID(CLSID_OpenControlPanel, 0x06622d85, 0x6856, 0x4460, 0x8d,0xe1, 0xa8,0x19,0x21,0xb4,0x1c,0x4b);

#ifdef __cplusplus
class DECLSPEC_UUID("06622d85-6856-4460-8de1-a81921b41c4b") OpenControlPanel;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(OpenControlPanel, 0x06622d85, 0x6856, 0x4460, 0x8d,0xe1, 0xa8,0x19,0x21,0xb4,0x1c,0x4b)
#endif
#endif

/*****************************************************************************
 * MailRecipient coclass
 */

DEFINE_GUID(CLSID_MailRecipient, 0x9e56be60, 0xc50f, 0x11cf, 0x9a,0x2c, 0x00,0xa0,0xc9,0x0a,0x90,0xce);

#ifdef __cplusplus
class DECLSPEC_UUID("9e56be60-c50f-11cf-9a2c-00a0c90a90ce") MailRecipient;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(MailRecipient, 0x9e56be60, 0xc50f, 0x11cf, 0x9a,0x2c, 0x00,0xa0,0xc9,0x0a,0x90,0xce)
#endif
#endif

/*****************************************************************************
 * NetworkExplorerFolder coclass
 */

DEFINE_GUID(CLSID_NetworkExplorerFolder, 0xf02c1a0d, 0xbe21, 0x4350, 0x88,0xb0, 0x73,0x67,0xfc,0x96,0xef,0x3c);

#ifdef __cplusplus
class DECLSPEC_UUID("f02c1a0d-be21-4350-88b0-7367fc96ef3c") NetworkExplorerFolder;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(NetworkExplorerFolder, 0xf02c1a0d, 0xbe21, 0x4350, 0x88,0xb0, 0x73,0x67,0xfc,0x96,0xef,0x3c)
#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

/*****************************************************************************
 * 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

/*****************************************************************************
 * ApplicationDocumentLists coclass
 */

DEFINE_GUID(CLSID_ApplicationDocumentLists, 0x86bec222, 0x30f2, 0x47e0, 0x9f,0x25, 0x60,0xd1,0x1c,0xd7,0x5c,0x28);

#ifdef __cplusplus
class DECLSPEC_UUID("86bec222-30f2-47e0-9f25-60d11cd75c28") ApplicationDocumentLists;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ApplicationDocumentLists, 0x86bec222, 0x30f2, 0x47e0, 0x9f,0x25, 0x60,0xd1,0x1c,0xd7,0x5c,0x28)
#endif
#endif

/*****************************************************************************
 * HomeGroup coclass
 */

DEFINE_GUID(CLSID_HomeGroup, 0xde77ba04, 0x3c92, 0x4d11, 0xa1,0xa5, 0x42,0x35,0x2a,0x53,0xe0,0xe3);

#ifdef __cplusplus
class DECLSPEC_UUID("de77ba04-3c92-4d11-a1a5-42352a53e0e3") HomeGroup;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(HomeGroup, 0xde77ba04, 0x3c92, 0x4d11, 0xa1,0xa5, 0x42,0x35,0x2a,0x53,0xe0,0xe3)
#endif
#endif

/*****************************************************************************
 * ShellLibrary coclass
 */

DEFINE_GUID(CLSID_ShellLibrary, 0xd9b3211d, 0xe57f, 0x4426, 0xaa,0xef, 0x30,0xa8,0x06,0xad,0xd3,0x97);

#ifdef __cplusplus
class DECLSPEC_UUID("d9b3211d-e57f-4426-aaef-30a806add397") ShellLibrary;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ShellLibrary, 0xd9b3211d, 0xe57f, 0x4426, 0xaa,0xef, 0x30,0xa8,0x06,0xad,0xd3,0x97)
#endif
#endif

/*****************************************************************************
 * AppStartupLink coclass
 */

DEFINE_GUID(CLSID_AppStartupLink, 0x273eb5e7, 0x88b0, 0x4843, 0xbf,0xef, 0xe2,0xc8,0x1d,0x43,0xaa,0xe5);

#ifdef __cplusplus
class DECLSPEC_UUID("273eb5e7-88b0-4843-bfef-e2c81d43aae5") AppStartupLink;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(AppStartupLink, 0x273eb5e7, 0x88b0, 0x4843, 0xbf,0xef, 0xe2,0xc8,0x1d,0x43,0xaa,0xe5)
#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

/*****************************************************************************
 * DesktopGadget coclass
 */

DEFINE_GUID(CLSID_DesktopGadget, 0x924ccc1b, 0x6562, 0x4c85, 0x86,0x57, 0xd1,0x77,0x92,0x52,0x22,0xb6);

#ifdef __cplusplus
class DECLSPEC_UUID("924ccc1b-6562-4c85-8657-d177925222b6") DesktopGadget;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(DesktopGadget, 0x924ccc1b, 0x6562, 0x4c85, 0x86,0x57, 0xd1,0x77,0x92,0x52,0x22,0xb6)
#endif
#endif

/*****************************************************************************
 * PlaybackManager coclass
 */

DEFINE_GUID(CLSID_PlaybackManager, 0x29dfa654, 0xa97f, 0x47f0, 0xbf,0x26, 0x9e,0x41,0xfb,0x94,0x88,0xd9);

#ifdef __cplusplus
class DECLSPEC_UUID("29dfa654-a97f-47f0-bf26-9e41fb9488d9") PlaybackManager;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(PlaybackManager, 0x29dfa654, 0xa97f, 0x47f0, 0xbf,0x26, 0x9e,0x41,0xfb,0x94,0x88,0xd9)
#endif
#endif

/*****************************************************************************
 * AccessibilityDockingService coclass
 */

DEFINE_GUID(CLSID_AccessibilityDockingService, 0x29ce1d46, 0xb481, 0x4aa0, 0xa0,0x8a, 0xd3,0xeb,0xc8,0xac,0xa4,0x02);

#ifdef __cplusplus
class DECLSPEC_UUID("29ce1d46-b481-4aa0-a08a-d3ebc8aca402") AccessibilityDockingService;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(AccessibilityDockingService, 0x29ce1d46, 0xb481, 0x4aa0, 0xa0,0x8a, 0xd3,0xeb,0xc8,0xac,0xa4,0x02)
#endif
#endif

/*****************************************************************************
 * FrameworkInputPane coclass
 */

DEFINE_GUID(CLSID_FrameworkInputPane, 0xd5120aa3, 0x46ba, 0x44c5, 0x82,0x2d, 0xca,0x80,0x92,0xc1,0xfc,0x72);

#ifdef __cplusplus
class DECLSPEC_UUID("d5120aa3-46ba-44c5-822d-ca8092c1fc72") FrameworkInputPane;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FrameworkInputPane, 0xd5120aa3, 0x46ba, 0x44c5, 0x82,0x2d, 0xca,0x80,0x92,0xc1,0xfc,0x72)
#endif
#endif

/*****************************************************************************
 * DefFolderMenu coclass
 */

DEFINE_GUID(CLSID_DefFolderMenu, 0xc63382be, 0x7933, 0x48d0, 0x9a,0xc8, 0x85,0xfb,0x46,0xbe,0x2f,0xdd);

#ifdef __cplusplus
class DECLSPEC_UUID("c63382be-7933-48d0-9ac8-85fb46be2fdd") DefFolderMenu;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(DefFolderMenu, 0xc63382be, 0x7933, 0x48d0, 0x9a,0xc8, 0x85,0xfb,0x46,0xbe,0x2f,0xdd)
#endif
#endif

/*****************************************************************************
 * AppVisibility coclass
 */

DEFINE_GUID(CLSID_AppVisibility, 0x7e5fe3d9, 0x985f, 0x4908, 0x91,0xf9, 0xee,0x19,0xf9,0xfd,0x15,0x14);

#ifdef __cplusplus
class DECLSPEC_UUID("7e5fe3d9-985f-4908-91f9-ee19f9fd1514") AppVisibility;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(AppVisibility, 0x7e5fe3d9, 0x985f, 0x4908, 0x91,0xf9, 0xee,0x19,0xf9,0xfd,0x15,0x14)
#endif
#endif

/*****************************************************************************
 * AppShellVerbHandler coclass
 */

DEFINE_GUID(CLSID_AppShellVerbHandler, 0x4ed3a719, 0xcea8, 0x4bd9, 0x91,0x0d, 0xe2,0x52,0xf9,0x97,0xaf,0xc2);

#ifdef __cplusplus
class DECLSPEC_UUID("4ed3a719-cea8-4bd9-910d-e252f997afc2") AppShellVerbHandler;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(AppShellVerbHandler, 0x4ed3a719, 0xcea8, 0x4bd9, 0x91,0x0d, 0xe2,0x52,0xf9,0x97,0xaf,0xc2)
#endif
#endif

/*****************************************************************************
 * ExecuteUnknown coclass
 */

DEFINE_GUID(CLSID_ExecuteUnknown, 0xe44e9428, 0xbdbc, 0x4987, 0xa0,0x99, 0x40,0xdc,0x8f,0xd2,0x55,0xe7);

#ifdef __cplusplus
class DECLSPEC_UUID("e44e9428-bdbc-4987-a099-40dc8fd255e7") ExecuteUnknown;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ExecuteUnknown, 0xe44e9428, 0xbdbc, 0x4987, 0xa0,0x99, 0x40,0xdc,0x8f,0xd2,0x55,0xe7)
#endif
#endif

/*****************************************************************************
 * PackageDebugSettings coclass
 */

DEFINE_GUID(CLSID_PackageDebugSettings, 0xb1aec16f, 0x2383, 0x4852, 0xb0,0xe9, 0x8f,0x0b,0x1d,0xc6,0x6b,0x4d);

#ifdef __cplusplus
class DECLSPEC_UUID("b1aec16f-2383-4852-b0e9-8f0b1dc66b4d") PackageDebugSettings;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(PackageDebugSettings, 0xb1aec16f, 0x2383, 0x4852, 0xb0,0xe9, 0x8f,0x0b,0x1d,0xc6,0x6b,0x4d)
#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

/*****************************************************************************
 * ApplicationDesignModeSettings coclass
 */

DEFINE_GUID(CLSID_ApplicationDesignModeSettings, 0x958a6fb5, 0xdcb2, 0x4faf, 0xaa,0xfd, 0x7f,0xb0,0x54,0xad,0x1a,0x3b);

#ifdef __cplusplus
class DECLSPEC_UUID("958a6fb5-dcb2-4faf-aafd-7fb054ad1a3b") ApplicationDesignModeSettings;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ApplicationDesignModeSettings, 0x958a6fb5, 0xdcb2, 0x4faf, 0xaa,0xfd, 0x7f,0xb0,0x54,0xad,0x1a,0x3b)
#endif
#endif

/*****************************************************************************
 * ExecuteFolder coclass
 */

DEFINE_GUID(CLSID_ExecuteFolder, 0x11dbb47c, 0xa525, 0x400b, 0x9e,0x80, 0xa5,0x46,0x15,0xa0,0x90,0xc0);

#ifdef __cplusplus
class DECLSPEC_UUID("11dbb47c-a525-400b-9e80-a54615a090c0") ExecuteFolder;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ExecuteFolder, 0x11dbb47c, 0xa525, 0x400b, 0x9e,0x80, 0xa5,0x46,0x15,0xa0,0x90,0xc0)
#endif
#endif

/*****************************************************************************
 * VirtualDesktopManager coclass
 */

DEFINE_GUID(CLSID_VirtualDesktopManager, 0xaa509086, 0x5ca9, 0x4c25, 0x8f,0x95, 0x58,0x9d,0x3c,0x07,0xb4,0x8a);

#ifdef __cplusplus
class DECLSPEC_UUID("aa509086-5ca9-4c25-8f95-589d3c07b48a") VirtualDesktopManager;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(VirtualDesktopManager, 0xaa509086, 0x5ca9, 0x4c25, 0x8f,0x95, 0x58,0x9d,0x3c,0x07,0xb4,0x8a)
#endif
#endif

#endif /* __ShellObjects_LIBRARY_DEFINED__ */

#if NTDDI_VERSION >= NTDDI_VISTA
  SHSTDAPI SHGetTemporaryPropertyForItem(IShellItem *psi, REFPROPERTYKEY propkey, PROPVARIANT *ppropvar);
  SHSTDAPI SHSetTemporaryPropertyForItem(IShellItem *psi, REFPROPERTYKEY propkey, REFPROPVARIANT propvar);
#endif

#if NTDDI_VERSION >= NTDDI_WIN7
#if _WIN32_IE >= _WIN32_IE_IE70
typedef enum LIBRARYMANAGEDIALOGOPTIONS {
    LMD_DEFAULT = 0x0,
    LMD_ALLOWUNINDEXABLENETWORKLOCATIONS = 0x1
} LIBRARYMANAGEDIALOGOPTIONS;

DEFINE_ENUM_FLAG_OPERATORS(LIBRARYMANAGEDIALOGOPTIONS)

  SHSTDAPI SHShowManageLibraryUI(IShellItem *psiLibrary, HWND hwndOwner, LPCWSTR pszTitle, LPCWSTR pszInstruction, LIBRARYMANAGEDIALOGOPTIONS lmdOptions);
  SHSTDAPI SHResolveLibrary(IShellItem *psiLibrary);
#if defined(__cplusplus) && !defined(CINTERFACE)
  __forceinline HRESULT SHCreateLibrary(REFIID riid, void **ppv) {
    return CoCreateInstance(CLSID_ShellLibrary, NULL, CLSCTX_INPROC_SERVER, riid, ppv);
  }

  __forceinline HRESULT SHLoadLibraryFromItem(IShellItem *psiLibrary, DWORD grfMode, REFIID riid, void **ppv) {
    IShellLibrary *plib;
    HRESULT hr;

    *ppv = NULL;
    hr = CoCreateInstance(CLSID_ShellLibrary, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&plib));
    if (SUCCEEDED(hr)) {
      hr = plib->LoadLibraryFromItem(psiLibrary, grfMode);
      if (SUCCEEDED(hr))
        hr = plib->QueryInterface(riid, ppv);
      plib->Release();
    }
    return hr;
  }

  __forceinline HRESULT SHLoadLibraryFromKnownFolder(REFKNOWNFOLDERID kfidLibrary, DWORD grfMode, REFIID riid, void **ppv) {
    IShellLibrary *plib;
    HRESULT hr;

    *ppv = NULL;
    hr = CoCreateInstance(CLSID_ShellLibrary, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&plib));
    if (SUCCEEDED(hr)) {
      hr = plib->LoadLibraryFromKnownFolder(kfidLibrary, grfMode);
      if (SUCCEEDED(hr))
        hr = plib->QueryInterface(riid, ppv);
      plib->Release();
    }
    return hr;
  }

  __forceinline HRESULT SHLoadLibraryFromParsingName(PCWSTR pszParsingName, DWORD grfMode, REFIID riid, void **ppv) {
    IShellItem *psiLibrary;
    HRESULT hr;

    *ppv = NULL;
    hr = SHCreateItemFromParsingName(pszParsingName, NULL, IID_PPV_ARGS(&psiLibrary));
    if (SUCCEEDED(hr)) {
      hr = SHLoadLibraryFromItem(psiLibrary, grfMode, riid, ppv);
      psiLibrary->Release();
    }
    return hr;
  }

   __forceinline HRESULT SHAddFolderPathToLibrary(IShellLibrary *plib, PCWSTR pszFolderPath) {
    IShellItem *psiFolder;
    HRESULT hr = SHCreateItemFromParsingName(pszFolderPath, NULL, IID_PPV_ARGS(&psiFolder));

    if (SUCCEEDED(hr)) {
      hr = plib->AddFolder(psiFolder);
      psiFolder->Release();
    }
    return hr;
  }

  __forceinline HRESULT SHRemoveFolderPathFromLibrary(IShellLibrary *plib, PCWSTR pszFolderPath) {
    PIDLIST_ABSOLUTE pidlFolder = SHSimpleIDListFromPath(pszFolderPath);
    HRESULT hr = pidlFolder ? S_OK : E_INVALIDARG;

    if (SUCCEEDED(hr)) {
      IShellItem *psiFolder;

      hr = SHCreateItemFromIDList(pidlFolder, IID_PPV_ARGS(&psiFolder));
      if (SUCCEEDED(hr)) {
        hr = plib->RemoveFolder(psiFolder);
        psiFolder->Release();
      }
      CoTaskMemFree(pidlFolder);
    }
    return hr;
  }

  __forceinline HRESULT SHResolveFolderPathInLibrary(IShellLibrary *plib, PCWSTR pszFolderPath, DWORD dwTimeout, PWSTR *ppszResolvedPath) {
    *ppszResolvedPath = NULL;
    PIDLIST_ABSOLUTE pidlFolder = SHSimpleIDListFromPath(pszFolderPath);
    HRESULT hr = pidlFolder ? S_OK : E_INVALIDARG;
    if (SUCCEEDED(hr)) {
      IShellItem *psiFolder;

      hr = SHCreateItemFromIDList(pidlFolder, IID_PPV_ARGS(&psiFolder));
      if (SUCCEEDED(hr)) {
        IShellItem *psiResolved;

        hr = plib->ResolveFolder(psiFolder, dwTimeout, IID_PPV_ARGS(&psiResolved));
        if (SUCCEEDED(hr)) {
          hr = psiResolved->GetDisplayName(SIGDN_DESKTOPABSOLUTEPARSING, ppszResolvedPath);
          psiResolved->Release();
        }
        psiFolder->Release();
      }
      CoTaskMemFree(pidlFolder);
    }
    return hr;
  }

  __forceinline HRESULT SHSaveLibraryInFolderPath(IShellLibrary *plib, PCWSTR pszFolderPath, PCWSTR pszLibraryName, LIBRARYSAVEFLAGS lsf, PWSTR *ppszSavedToPath) {
    IShellItem *psiFolder;
    HRESULT hr;

    if (ppszSavedToPath)
      *ppszSavedToPath = NULL;
    hr = SHCreateItemFromParsingName(pszFolderPath, NULL, IID_PPV_ARGS(&psiFolder));
    if (SUCCEEDED(hr)) {
      IShellItem *psiSavedTo;

      hr = plib->Save(psiFolder, pszLibraryName, lsf, &psiSavedTo);
      if (SUCCEEDED(hr)) {
        if (ppszSavedToPath)
          hr = psiSavedTo->GetDisplayName(SIGDN_DESKTOPABSOLUTEPARSING, ppszSavedToPath);
        psiSavedTo->Release();
      }
      psiFolder->Release();
    }
    return hr;
  }
#endif
#endif
#endif

#if NTDDI_VERSION >= NTDDI_VISTA
/*****************************************************************************
 * 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 inline HRESULT IAssocHandlerInvoker_QueryInterface(IAssocHandlerInvoker* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAssocHandlerInvoker_AddRef(IAssocHandlerInvoker* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAssocHandlerInvoker_Release(IAssocHandlerInvoker* This) {
    return This->lpVtbl->Release(This);
}
/*** IAssocHandlerInvoker methods ***/
static inline HRESULT IAssocHandlerInvoker_SupportsSelection(IAssocHandlerInvoker* This) {
    return This->lpVtbl->SupportsSelection(This);
}
static inline 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 *ppsz) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE GetIconLocation(
        LPWSTR *ppszPath,
        int *pIndex) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsRecommended(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE MakeDefault(
        LPCWSTR pszDescription) = 0;

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

    virtual HRESULT STDMETHODCALLTYPE CreateInvoker(
        IDataObject *pdo,
        IAssocHandlerInvoker **ppInvoker) = 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 *ppsz);

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

    HRESULT (STDMETHODCALLTYPE *GetIconLocation)(
        IAssocHandler *This,
        LPWSTR *ppszPath,
        int *pIndex);

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

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

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

    HRESULT (STDMETHODCALLTYPE *CreateInvoker)(
        IAssocHandler *This,
        IDataObject *pdo,
        IAssocHandlerInvoker **ppInvoker);

    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,ppsz) (This)->lpVtbl->GetName(This,ppsz)
#define IAssocHandler_GetUIName(This,ppsz) (This)->lpVtbl->GetUIName(This,ppsz)
#define IAssocHandler_GetIconLocation(This,ppszPath,pIndex) (This)->lpVtbl->GetIconLocation(This,ppszPath,pIndex)
#define IAssocHandler_IsRecommended(This) (This)->lpVtbl->IsRecommended(This)
#define IAssocHandler_MakeDefault(This,pszDescription) (This)->lpVtbl->MakeDefault(This,pszDescription)
#define IAssocHandler_Invoke(This,pdo) (This)->lpVtbl->Invoke(This,pdo)
#define IAssocHandler_CreateInvoker(This,pdo,ppInvoker) (This)->lpVtbl->CreateInvoker(This,pdo,ppInvoker)
#else
/*** IUnknown methods ***/
static inline HRESULT IAssocHandler_QueryInterface(IAssocHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAssocHandler_AddRef(IAssocHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAssocHandler_Release(IAssocHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IAssocHandler methods ***/
static inline HRESULT IAssocHandler_GetName(IAssocHandler* This,LPWSTR *ppsz) {
    return This->lpVtbl->GetName(This,ppsz);
}
static inline HRESULT IAssocHandler_GetUIName(IAssocHandler* This,LPWSTR *ppsz) {
    return This->lpVtbl->GetUIName(This,ppsz);
}
static inline HRESULT IAssocHandler_GetIconLocation(IAssocHandler* This,LPWSTR *ppszPath,int *pIndex) {
    return This->lpVtbl->GetIconLocation(This,ppszPath,pIndex);
}
static inline HRESULT IAssocHandler_IsRecommended(IAssocHandler* This) {
    return This->lpVtbl->IsRecommended(This);
}
static inline HRESULT IAssocHandler_MakeDefault(IAssocHandler* This,LPCWSTR pszDescription) {
    return This->lpVtbl->MakeDefault(This,pszDescription);
}
static inline HRESULT IAssocHandler_Invoke(IAssocHandler* This,IDataObject *pdo) {
    return This->lpVtbl->Invoke(This,pdo);
}
static inline HRESULT IAssocHandler_CreateInvoker(IAssocHandler* This,IDataObject *pdo,IAssocHandlerInvoker **ppInvoker) {
    return This->lpVtbl->CreateInvoker(This,pdo,ppInvoker);
}
#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 celt,
        IAssocHandler **rgelt,
        ULONG *pceltFetched) = 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 celt,
        IAssocHandler **rgelt,
        ULONG *pceltFetched);

    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,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#else
/*** IUnknown methods ***/
static inline HRESULT IEnumAssocHandlers_QueryInterface(IEnumAssocHandlers* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IEnumAssocHandlers_AddRef(IEnumAssocHandlers* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IEnumAssocHandlers_Release(IEnumAssocHandlers* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumAssocHandlers methods ***/
static inline HRESULT IEnumAssocHandlers_Next(IEnumAssocHandlers* This,ULONG celt,IAssocHandler **rgelt,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
}
#endif
#endif

#endif


#endif  /* __IEnumAssocHandlers_INTERFACE_DEFINED__ */


typedef enum ASSOC_FILTER {
    ASSOC_FILTER_NONE = 0x0,
    ASSOC_FILTER_RECOMMENDED = 0x1
} ASSOC_FILTER;

DEFINE_ENUM_FLAG_OPERATORS(ASSOC_FILTER)

  SHSTDAPI SHAssocEnumHandlers(PCWSTR pszExtra, ASSOC_FILTER afFilter, IEnumAssocHandlers **ppEnumHandler);
#endif

#if NTDDI_VERSION >= NTDDI_WIN7
SHSTDAPI SHAssocEnumHandlersForProtocolByApplication(PCWSTR protocol, REFIID riid, void **enumHandlers);
#endif

#if NTDDI_VERSION >= NTDDI_WIN8
/*****************************************************************************
 * IDataObjectProvider interface
 */
#ifndef __IDataObjectProvider_INTERFACE_DEFINED__
#define __IDataObjectProvider_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDataObjectProvider, 0x3d25f6d6, 0x4b2a, 0x433c, 0x91,0x84, 0x7c,0x33,0xad,0x35,0xd0,0x01);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3d25f6d6-4b2a-433c-9184-7c33ad35d001")
IDataObjectProvider : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDataObject(
        IDataObject **dataObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDataObject(
        IDataObject *dataObject) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDataObjectProvider, 0x3d25f6d6, 0x4b2a, 0x433c, 0x91,0x84, 0x7c,0x33,0xad,0x35,0xd0,0x01)
#endif
#else
typedef struct IDataObjectProviderVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDataObjectProvider methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDataObject)(
        IDataObjectProvider *This,
        IDataObject **dataObject);

    HRESULT (STDMETHODCALLTYPE *SetDataObject)(
        IDataObjectProvider *This,
        IDataObject *dataObject);

    END_INTERFACE
} IDataObjectProviderVtbl;

interface IDataObjectProvider {
    CONST_VTBL IDataObjectProviderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDataObjectProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDataObjectProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDataObjectProvider_Release(This) (This)->lpVtbl->Release(This)
/*** IDataObjectProvider methods ***/
#define IDataObjectProvider_GetDataObject(This,dataObject) (This)->lpVtbl->GetDataObject(This,dataObject)
#define IDataObjectProvider_SetDataObject(This,dataObject) (This)->lpVtbl->SetDataObject(This,dataObject)
#else
/*** IUnknown methods ***/
static inline HRESULT IDataObjectProvider_QueryInterface(IDataObjectProvider* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDataObjectProvider_AddRef(IDataObjectProvider* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDataObjectProvider_Release(IDataObjectProvider* This) {
    return This->lpVtbl->Release(This);
}
/*** IDataObjectProvider methods ***/
static inline HRESULT IDataObjectProvider_GetDataObject(IDataObjectProvider* This,IDataObject **dataObject) {
    return This->lpVtbl->GetDataObject(This,dataObject);
}
static inline HRESULT IDataObjectProvider_SetDataObject(IDataObjectProvider* This,IDataObject *dataObject) {
    return This->lpVtbl->SetDataObject(This,dataObject);
}
#endif
#endif

#endif


#endif  /* __IDataObjectProvider_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IDataTransferManagerInterop interface
 */
#ifndef __IDataTransferManagerInterop_INTERFACE_DEFINED__
#define __IDataTransferManagerInterop_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDataTransferManagerInterop, 0x3a3dcd6c, 0x3eab, 0x43dc, 0xbc,0xde, 0x45,0x67,0x1c,0xe8,0x00,0xc8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3a3dcd6c-3eab-43dc-bcde-45671ce800c8")
IDataTransferManagerInterop : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetForWindow(
        HWND appWindow,
        REFIID riid,
        void **dataTransferManager) = 0;

    virtual HRESULT STDMETHODCALLTYPE ShowShareUIForWindow(
        HWND appWindow) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDataTransferManagerInterop, 0x3a3dcd6c, 0x3eab, 0x43dc, 0xbc,0xde, 0x45,0x67,0x1c,0xe8,0x00,0xc8)
#endif
#else
typedef struct IDataTransferManagerInteropVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IDataTransferManagerInterop methods ***/
    HRESULT (STDMETHODCALLTYPE *GetForWindow)(
        IDataTransferManagerInterop *This,
        HWND appWindow,
        REFIID riid,
        void **dataTransferManager);

    HRESULT (STDMETHODCALLTYPE *ShowShareUIForWindow)(
        IDataTransferManagerInterop *This,
        HWND appWindow);

    END_INTERFACE
} IDataTransferManagerInteropVtbl;

interface IDataTransferManagerInterop {
    CONST_VTBL IDataTransferManagerInteropVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDataTransferManagerInterop_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDataTransferManagerInterop_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDataTransferManagerInterop_Release(This) (This)->lpVtbl->Release(This)
/*** IDataTransferManagerInterop methods ***/
#define IDataTransferManagerInterop_GetForWindow(This,appWindow,riid,dataTransferManager) (This)->lpVtbl->GetForWindow(This,appWindow,riid,dataTransferManager)
#define IDataTransferManagerInterop_ShowShareUIForWindow(This,appWindow) (This)->lpVtbl->ShowShareUIForWindow(This,appWindow)
#else
/*** IUnknown methods ***/
static inline HRESULT IDataTransferManagerInterop_QueryInterface(IDataTransferManagerInterop* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IDataTransferManagerInterop_AddRef(IDataTransferManagerInterop* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IDataTransferManagerInterop_Release(IDataTransferManagerInterop* This) {
    return This->lpVtbl->Release(This);
}
/*** IDataTransferManagerInterop methods ***/
static inline HRESULT IDataTransferManagerInterop_GetForWindow(IDataTransferManagerInterop* This,HWND appWindow,REFIID riid,void **dataTransferManager) {
    return This->lpVtbl->GetForWindow(This,appWindow,riid,dataTransferManager);
}
static inline HRESULT IDataTransferManagerInterop_ShowShareUIForWindow(IDataTransferManagerInterop* This,HWND appWindow) {
    return This->lpVtbl->ShowShareUIForWindow(This,appWindow);
}
#endif
#endif

#endif


#endif  /* __IDataTransferManagerInterop_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IFrameworkInputPaneHandler interface
 */
#ifndef __IFrameworkInputPaneHandler_INTERFACE_DEFINED__
#define __IFrameworkInputPaneHandler_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFrameworkInputPaneHandler, 0x226c537b, 0x1e76, 0x4d9e, 0xa7,0x60, 0x33,0xdb,0x29,0x92,0x2f,0x18);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("226c537b-1e76-4d9e-a760-33db29922f18")
IFrameworkInputPaneHandler : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Showing(
        RECT *prcInputPaneScreenLocation,
        WINBOOL fEnsureFocusedElementInView) = 0;

    virtual HRESULT STDMETHODCALLTYPE Hiding(
        WINBOOL fEnsureFocusedElementInView) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFrameworkInputPaneHandler, 0x226c537b, 0x1e76, 0x4d9e, 0xa7,0x60, 0x33,0xdb,0x29,0x92,0x2f,0x18)
#endif
#else
typedef struct IFrameworkInputPaneHandlerVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFrameworkInputPaneHandler methods ***/
    HRESULT (STDMETHODCALLTYPE *Showing)(
        IFrameworkInputPaneHandler *This,
        RECT *prcInputPaneScreenLocation,
        WINBOOL fEnsureFocusedElementInView);

    HRESULT (STDMETHODCALLTYPE *Hiding)(
        IFrameworkInputPaneHandler *This,
        WINBOOL fEnsureFocusedElementInView);

    END_INTERFACE
} IFrameworkInputPaneHandlerVtbl;

interface IFrameworkInputPaneHandler {
    CONST_VTBL IFrameworkInputPaneHandlerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFrameworkInputPaneHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFrameworkInputPaneHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFrameworkInputPaneHandler_Release(This) (This)->lpVtbl->Release(This)
/*** IFrameworkInputPaneHandler methods ***/
#define IFrameworkInputPaneHandler_Showing(This,prcInputPaneScreenLocation,fEnsureFocusedElementInView) (This)->lpVtbl->Showing(This,prcInputPaneScreenLocation,fEnsureFocusedElementInView)
#define IFrameworkInputPaneHandler_Hiding(This,fEnsureFocusedElementInView) (This)->lpVtbl->Hiding(This,fEnsureFocusedElementInView)
#else
/*** IUnknown methods ***/
static inline HRESULT IFrameworkInputPaneHandler_QueryInterface(IFrameworkInputPaneHandler* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFrameworkInputPaneHandler_AddRef(IFrameworkInputPaneHandler* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFrameworkInputPaneHandler_Release(IFrameworkInputPaneHandler* This) {
    return This->lpVtbl->Release(This);
}
/*** IFrameworkInputPaneHandler methods ***/
static inline HRESULT IFrameworkInputPaneHandler_Showing(IFrameworkInputPaneHandler* This,RECT *prcInputPaneScreenLocation,WINBOOL fEnsureFocusedElementInView) {
    return This->lpVtbl->Showing(This,prcInputPaneScreenLocation,fEnsureFocusedElementInView);
}
static inline HRESULT IFrameworkInputPaneHandler_Hiding(IFrameworkInputPaneHandler* This,WINBOOL fEnsureFocusedElementInView) {
    return This->lpVtbl->Hiding(This,fEnsureFocusedElementInView);
}
#endif
#endif

#endif


#endif  /* __IFrameworkInputPaneHandler_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IFrameworkInputPane interface
 */
#ifndef __IFrameworkInputPane_INTERFACE_DEFINED__
#define __IFrameworkInputPane_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFrameworkInputPane, 0x5752238b, 0x24f0, 0x495a, 0x82,0xf1, 0x2f,0xd5,0x93,0x05,0x67,0x96);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5752238b-24f0-495a-82f1-2fd593056796")
IFrameworkInputPane : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Advise(
        IUnknown *pWindow,
        IFrameworkInputPaneHandler *pHandler,
        DWORD *pdwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE AdviseWithHWND(
        HWND hwnd,
        IFrameworkInputPaneHandler *pHandler,
        DWORD *pdwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unadvise(
        DWORD dwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE Location(
        RECT *prcInputPaneScreenLocation) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFrameworkInputPane, 0x5752238b, 0x24f0, 0x495a, 0x82,0xf1, 0x2f,0xd5,0x93,0x05,0x67,0x96)
#endif
#else
typedef struct IFrameworkInputPaneVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IFrameworkInputPane methods ***/
    HRESULT (STDMETHODCALLTYPE *Advise)(
        IFrameworkInputPane *This,
        IUnknown *pWindow,
        IFrameworkInputPaneHandler *pHandler,
        DWORD *pdwCookie);

    HRESULT (STDMETHODCALLTYPE *AdviseWithHWND)(
        IFrameworkInputPane *This,
        HWND hwnd,
        IFrameworkInputPaneHandler *pHandler,
        DWORD *pdwCookie);

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

    HRESULT (STDMETHODCALLTYPE *Location)(
        IFrameworkInputPane *This,
        RECT *prcInputPaneScreenLocation);

    END_INTERFACE
} IFrameworkInputPaneVtbl;

interface IFrameworkInputPane {
    CONST_VTBL IFrameworkInputPaneVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFrameworkInputPane_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFrameworkInputPane_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFrameworkInputPane_Release(This) (This)->lpVtbl->Release(This)
/*** IFrameworkInputPane methods ***/
#define IFrameworkInputPane_Advise(This,pWindow,pHandler,pdwCookie) (This)->lpVtbl->Advise(This,pWindow,pHandler,pdwCookie)
#define IFrameworkInputPane_AdviseWithHWND(This,hwnd,pHandler,pdwCookie) (This)->lpVtbl->AdviseWithHWND(This,hwnd,pHandler,pdwCookie)
#define IFrameworkInputPane_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
#define IFrameworkInputPane_Location(This,prcInputPaneScreenLocation) (This)->lpVtbl->Location(This,prcInputPaneScreenLocation)
#else
/*** IUnknown methods ***/
static inline HRESULT IFrameworkInputPane_QueryInterface(IFrameworkInputPane* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IFrameworkInputPane_AddRef(IFrameworkInputPane* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IFrameworkInputPane_Release(IFrameworkInputPane* This) {
    return This->lpVtbl->Release(This);
}
/*** IFrameworkInputPane methods ***/
static inline HRESULT IFrameworkInputPane_Advise(IFrameworkInputPane* This,IUnknown *pWindow,IFrameworkInputPaneHandler *pHandler,DWORD *pdwCookie) {
    return This->lpVtbl->Advise(This,pWindow,pHandler,pdwCookie);
}
static inline HRESULT IFrameworkInputPane_AdviseWithHWND(IFrameworkInputPane* This,HWND hwnd,IFrameworkInputPaneHandler *pHandler,DWORD *pdwCookie) {
    return This->lpVtbl->AdviseWithHWND(This,hwnd,pHandler,pdwCookie);
}
static inline HRESULT IFrameworkInputPane_Unadvise(IFrameworkInputPane* This,DWORD dwCookie) {
    return This->lpVtbl->Unadvise(This,dwCookie);
}
static inline HRESULT IFrameworkInputPane_Location(IFrameworkInputPane* This,RECT *prcInputPaneScreenLocation) {
    return This->lpVtbl->Location(This,prcInputPaneScreenLocation);
}
#endif
#endif

#endif


#endif  /* __IFrameworkInputPane_INTERFACE_DEFINED__ */

#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

#ifndef PROP_CONTRACT_DELEGATE
#define PROP_CONTRACT_DELEGATE L"ContractDelegate"
#endif

  __forceinline void SetContractDelegateWindow(HWND hwndSource, HWND hwndDelegate) {
    if (hwndDelegate != NULL)
      SetPropW (hwndSource, PROP_CONTRACT_DELEGATE, (HANDLE)hwndDelegate);
    else
      RemovePropW(hwndSource, PROP_CONTRACT_DELEGATE);
  }

#ifndef PROP_CONTRACT_DELEGATE
#define PROP_CONTRACT_DELEGATE L"ContractDelegate"
#endif

  __forceinline HWND GetContractDelegateWindow(HWND hwndSource) { return (HWND)GetPropW(hwndSource, PROP_CONTRACT_DELEGATE); }
#endif
#endif

#if NTDDI_VERSION >= NTDDI_WIN8
/*****************************************************************************
 * ISearchableApplication interface
 */
#ifndef __ISearchableApplication_INTERFACE_DEFINED__
#define __ISearchableApplication_INTERFACE_DEFINED__

DEFINE_GUID(IID_ISearchableApplication, 0x08922f8d, 0x243a, 0x49e3, 0xa4,0x95, 0xbd,0x4f,0x9c,0xf8,0xab,0x9e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("08922f8d-243a-49e3-a495-bd4f9cf8ab9e")
ISearchableApplication : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetSearchWindow(
        HWND *hwnd) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ISearchableApplication, 0x08922f8d, 0x243a, 0x49e3, 0xa4,0x95, 0xbd,0x4f,0x9c,0xf8,0xab,0x9e)
#endif
#else
typedef struct ISearchableApplicationVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** ISearchableApplication methods ***/
    HRESULT (STDMETHODCALLTYPE *GetSearchWindow)(
        ISearchableApplication *This,
        HWND *hwnd);

    END_INTERFACE
} ISearchableApplicationVtbl;

interface ISearchableApplication {
    CONST_VTBL ISearchableApplicationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ISearchableApplication_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ISearchableApplication_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ISearchableApplication_Release(This) (This)->lpVtbl->Release(This)
/*** ISearchableApplication methods ***/
#define ISearchableApplication_GetSearchWindow(This,hwnd) (This)->lpVtbl->GetSearchWindow(This,hwnd)
#else
/*** IUnknown methods ***/
static inline HRESULT ISearchableApplication_QueryInterface(ISearchableApplication* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG ISearchableApplication_AddRef(ISearchableApplication* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG ISearchableApplication_Release(ISearchableApplication* This) {
    return This->lpVtbl->Release(This);
}
/*** ISearchableApplication methods ***/
static inline HRESULT ISearchableApplication_GetSearchWindow(ISearchableApplication* This,HWND *hwnd) {
    return This->lpVtbl->GetSearchWindow(This,hwnd);
}
#endif
#endif

#endif


#endif  /* __ISearchableApplication_INTERFACE_DEFINED__ */


typedef enum UNDOCK_REASON {
    UR_RESOLUTION_CHANGE = 0,
    UR_MONITOR_DISCONNECT = 1
} UNDOCK_REASON;

/*****************************************************************************
 * IAccessibilityDockingServiceCallback interface
 */
#ifndef __IAccessibilityDockingServiceCallback_INTERFACE_DEFINED__
#define __IAccessibilityDockingServiceCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibilityDockingServiceCallback, 0x157733fd, 0xa592, 0x42e5, 0xb5,0x94, 0x24,0x84,0x68,0xc5,0xa8,0x1b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("157733fd-a592-42e5-b594-248468c5a81b")
IAccessibilityDockingServiceCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Undocked(
        UNDOCK_REASON undockReason) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibilityDockingServiceCallback, 0x157733fd, 0xa592, 0x42e5, 0xb5,0x94, 0x24,0x84,0x68,0xc5,0xa8,0x1b)
#endif
#else
typedef struct IAccessibilityDockingServiceCallbackVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibilityDockingServiceCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *Undocked)(
        IAccessibilityDockingServiceCallback *This,
        UNDOCK_REASON undockReason);

    END_INTERFACE
} IAccessibilityDockingServiceCallbackVtbl;

interface IAccessibilityDockingServiceCallback {
    CONST_VTBL IAccessibilityDockingServiceCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibilityDockingServiceCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibilityDockingServiceCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibilityDockingServiceCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibilityDockingServiceCallback methods ***/
#define IAccessibilityDockingServiceCallback_Undocked(This,undockReason) (This)->lpVtbl->Undocked(This,undockReason)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibilityDockingServiceCallback_QueryInterface(IAccessibilityDockingServiceCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibilityDockingServiceCallback_AddRef(IAccessibilityDockingServiceCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibilityDockingServiceCallback_Release(IAccessibilityDockingServiceCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibilityDockingServiceCallback methods ***/
static inline HRESULT IAccessibilityDockingServiceCallback_Undocked(IAccessibilityDockingServiceCallback* This,UNDOCK_REASON undockReason) {
    return This->lpVtbl->Undocked(This,undockReason);
}
#endif
#endif

#endif


#endif  /* __IAccessibilityDockingServiceCallback_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IAccessibilityDockingService interface
 */
#ifndef __IAccessibilityDockingService_INTERFACE_DEFINED__
#define __IAccessibilityDockingService_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAccessibilityDockingService, 0x8849dc22, 0xcedf, 0x4c95, 0x99,0x8d, 0x05,0x14,0x19,0xdd,0x3f,0x76);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8849dc22-cedf-4c95-998d-051419dd3f76")
IAccessibilityDockingService : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetAvailableSize(
        HMONITOR hMonitor,
        UINT *pcxFixed,
        UINT *pcyMax) = 0;

    virtual HRESULT STDMETHODCALLTYPE DockWindow(
        HWND hwnd,
        HMONITOR hMonitor,
        UINT cyRequested,
        IAccessibilityDockingServiceCallback *pCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE UndockWindow(
        HWND hwnd) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAccessibilityDockingService, 0x8849dc22, 0xcedf, 0x4c95, 0x99,0x8d, 0x05,0x14,0x19,0xdd,0x3f,0x76)
#endif
#else
typedef struct IAccessibilityDockingServiceVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAccessibilityDockingService methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAvailableSize)(
        IAccessibilityDockingService *This,
        HMONITOR hMonitor,
        UINT *pcxFixed,
        UINT *pcyMax);

    HRESULT (STDMETHODCALLTYPE *DockWindow)(
        IAccessibilityDockingService *This,
        HWND hwnd,
        HMONITOR hMonitor,
        UINT cyRequested,
        IAccessibilityDockingServiceCallback *pCallback);

    HRESULT (STDMETHODCALLTYPE *UndockWindow)(
        IAccessibilityDockingService *This,
        HWND hwnd);

    END_INTERFACE
} IAccessibilityDockingServiceVtbl;

interface IAccessibilityDockingService {
    CONST_VTBL IAccessibilityDockingServiceVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAccessibilityDockingService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAccessibilityDockingService_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAccessibilityDockingService_Release(This) (This)->lpVtbl->Release(This)
/*** IAccessibilityDockingService methods ***/
#define IAccessibilityDockingService_GetAvailableSize(This,hMonitor,pcxFixed,pcyMax) (This)->lpVtbl->GetAvailableSize(This,hMonitor,pcxFixed,pcyMax)
#define IAccessibilityDockingService_DockWindow(This,hwnd,hMonitor,cyRequested,pCallback) (This)->lpVtbl->DockWindow(This,hwnd,hMonitor,cyRequested,pCallback)
#define IAccessibilityDockingService_UndockWindow(This,hwnd) (This)->lpVtbl->UndockWindow(This,hwnd)
#else
/*** IUnknown methods ***/
static inline HRESULT IAccessibilityDockingService_QueryInterface(IAccessibilityDockingService* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAccessibilityDockingService_AddRef(IAccessibilityDockingService* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAccessibilityDockingService_Release(IAccessibilityDockingService* This) {
    return This->lpVtbl->Release(This);
}
/*** IAccessibilityDockingService methods ***/
static inline HRESULT IAccessibilityDockingService_GetAvailableSize(IAccessibilityDockingService* This,HMONITOR hMonitor,UINT *pcxFixed,UINT *pcyMax) {
    return This->lpVtbl->GetAvailableSize(This,hMonitor,pcxFixed,pcyMax);
}
static inline HRESULT IAccessibilityDockingService_DockWindow(IAccessibilityDockingService* This,HWND hwnd,HMONITOR hMonitor,UINT cyRequested,IAccessibilityDockingServiceCallback *pCallback) {
    return This->lpVtbl->DockWindow(This,hwnd,hMonitor,cyRequested,pCallback);
}
static inline HRESULT IAccessibilityDockingService_UndockWindow(IAccessibilityDockingService* This,HWND hwnd) {
    return This->lpVtbl->UndockWindow(This,hwnd);
}
#endif
#endif

#endif


#endif  /* __IAccessibilityDockingService_INTERFACE_DEFINED__ */


typedef enum MONITOR_APP_VISIBILITY {
    MAV_UNKNOWN = 0,
    MAV_NO_APP_VISIBLE = 1,
    MAV_APP_VISIBLE = 2
} MONITOR_APP_VISIBILITY;

/*****************************************************************************
 * IAppVisibilityEvents interface
 */
#ifndef __IAppVisibilityEvents_INTERFACE_DEFINED__
#define __IAppVisibilityEvents_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAppVisibilityEvents, 0x6584ce6b, 0x7d82, 0x49c2, 0x89,0xc9, 0xc6,0xbc,0x02,0xba,0x8c,0x38);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6584ce6b-7d82-49c2-89c9-c6bc02ba8c38")
IAppVisibilityEvents : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AppVisibilityOnMonitorChanged(
        HMONITOR hMonitor,
        MONITOR_APP_VISIBILITY previousMode,
        MONITOR_APP_VISIBILITY currentMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE LauncherVisibilityChange(
        WINBOOL currentVisibleState) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAppVisibilityEvents, 0x6584ce6b, 0x7d82, 0x49c2, 0x89,0xc9, 0xc6,0xbc,0x02,0xba,0x8c,0x38)
#endif
#else
typedef struct IAppVisibilityEventsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAppVisibilityEvents methods ***/
    HRESULT (STDMETHODCALLTYPE *AppVisibilityOnMonitorChanged)(
        IAppVisibilityEvents *This,
        HMONITOR hMonitor,
        MONITOR_APP_VISIBILITY previousMode,
        MONITOR_APP_VISIBILITY currentMode);

    HRESULT (STDMETHODCALLTYPE *LauncherVisibilityChange)(
        IAppVisibilityEvents *This,
        WINBOOL currentVisibleState);

    END_INTERFACE
} IAppVisibilityEventsVtbl;

interface IAppVisibilityEvents {
    CONST_VTBL IAppVisibilityEventsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAppVisibilityEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAppVisibilityEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAppVisibilityEvents_Release(This) (This)->lpVtbl->Release(This)
/*** IAppVisibilityEvents methods ***/
#define IAppVisibilityEvents_AppVisibilityOnMonitorChanged(This,hMonitor,previousMode,currentMode) (This)->lpVtbl->AppVisibilityOnMonitorChanged(This,hMonitor,previousMode,currentMode)
#define IAppVisibilityEvents_LauncherVisibilityChange(This,currentVisibleState) (This)->lpVtbl->LauncherVisibilityChange(This,currentVisibleState)
#else
/*** IUnknown methods ***/
static inline HRESULT IAppVisibilityEvents_QueryInterface(IAppVisibilityEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAppVisibilityEvents_AddRef(IAppVisibilityEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAppVisibilityEvents_Release(IAppVisibilityEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** IAppVisibilityEvents methods ***/
static inline HRESULT IAppVisibilityEvents_AppVisibilityOnMonitorChanged(IAppVisibilityEvents* This,HMONITOR hMonitor,MONITOR_APP_VISIBILITY previousMode,MONITOR_APP_VISIBILITY currentMode) {
    return This->lpVtbl->AppVisibilityOnMonitorChanged(This,hMonitor,previousMode,currentMode);
}
static inline HRESULT IAppVisibilityEvents_LauncherVisibilityChange(IAppVisibilityEvents* This,WINBOOL currentVisibleState) {
    return This->lpVtbl->LauncherVisibilityChange(This,currentVisibleState);
}
#endif
#endif

#endif


#endif  /* __IAppVisibilityEvents_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IAppVisibility interface
 */
#ifndef __IAppVisibility_INTERFACE_DEFINED__
#define __IAppVisibility_INTERFACE_DEFINED__

DEFINE_GUID(IID_IAppVisibility, 0x2246ea2d, 0xcaea, 0x4444, 0xa3,0xc4, 0x6d,0xe8,0x27,0xe4,0x43,0x13);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2246ea2d-caea-4444-a3c4-6de827e44313")
IAppVisibility : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetAppVisibilityOnMonitor(
        HMONITOR hMonitor,
        MONITOR_APP_VISIBILITY *pMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsLauncherVisible(
        WINBOOL *pfVisible) = 0;

    virtual HRESULT STDMETHODCALLTYPE Advise(
        IAppVisibilityEvents *pCallback,
        DWORD *pdwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unadvise(
        DWORD dwCookie) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAppVisibility, 0x2246ea2d, 0xcaea, 0x4444, 0xa3,0xc4, 0x6d,0xe8,0x27,0xe4,0x43,0x13)
#endif
#else
typedef struct IAppVisibilityVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IAppVisibility methods ***/
    HRESULT (STDMETHODCALLTYPE *GetAppVisibilityOnMonitor)(
        IAppVisibility *This,
        HMONITOR hMonitor,
        MONITOR_APP_VISIBILITY *pMode);

    HRESULT (STDMETHODCALLTYPE *IsLauncherVisible)(
        IAppVisibility *This,
        WINBOOL *pfVisible);

    HRESULT (STDMETHODCALLTYPE *Advise)(
        IAppVisibility *This,
        IAppVisibilityEvents *pCallback,
        DWORD *pdwCookie);

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

    END_INTERFACE
} IAppVisibilityVtbl;

interface IAppVisibility {
    CONST_VTBL IAppVisibilityVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAppVisibility_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAppVisibility_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAppVisibility_Release(This) (This)->lpVtbl->Release(This)
/*** IAppVisibility methods ***/
#define IAppVisibility_GetAppVisibilityOnMonitor(This,hMonitor,pMode) (This)->lpVtbl->GetAppVisibilityOnMonitor(This,hMonitor,pMode)
#define IAppVisibility_IsLauncherVisible(This,pfVisible) (This)->lpVtbl->IsLauncherVisible(This,pfVisible)
#define IAppVisibility_Advise(This,pCallback,pdwCookie) (This)->lpVtbl->Advise(This,pCallback,pdwCookie)
#define IAppVisibility_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
#else
/*** IUnknown methods ***/
static inline HRESULT IAppVisibility_QueryInterface(IAppVisibility* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IAppVisibility_AddRef(IAppVisibility* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IAppVisibility_Release(IAppVisibility* This) {
    return This->lpVtbl->Release(This);
}
/*** IAppVisibility methods ***/
static inline HRESULT IAppVisibility_GetAppVisibilityOnMonitor(IAppVisibility* This,HMONITOR hMonitor,MONITOR_APP_VISIBILITY *pMode) {
    return This->lpVtbl->GetAppVisibilityOnMonitor(This,hMonitor,pMode);
}
static inline HRESULT IAppVisibility_IsLauncherVisible(IAppVisibility* This,WINBOOL *pfVisible) {
    return This->lpVtbl->IsLauncherVisible(This,pfVisible);
}
static inline HRESULT IAppVisibility_Advise(IAppVisibility* This,IAppVisibilityEvents *pCallback,DWORD *pdwCookie) {
    return This->lpVtbl->Advise(This,pCallback,pdwCookie);
}
static inline HRESULT IAppVisibility_Unadvise(IAppVisibility* This,DWORD dwCookie) {
    return This->lpVtbl->Unadvise(This,dwCookie);
}
#endif
#endif

#endif


#endif  /* __IAppVisibility_INTERFACE_DEFINED__ */


#if 0
typedef WCHAR *PZZWSTR;
#endif

typedef enum PACKAGE_EXECUTION_STATE {
    PES_UNKNOWN = 0,
    PES_RUNNING = 1,
    PES_SUSPENDING = 2,
    PES_SUSPENDED = 3,
    PES_TERMINATED = 4
} PACKAGE_EXECUTION_STATE;

/*****************************************************************************
 * IPackageExecutionStateChangeNotification interface
 */
#ifndef __IPackageExecutionStateChangeNotification_INTERFACE_DEFINED__
#define __IPackageExecutionStateChangeNotification_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPackageExecutionStateChangeNotification, 0x1bb12a62, 0x2ad8, 0x432b, 0x8c,0xcf, 0x0c,0x2c,0x52,0xaf,0xcd,0x5b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1bb12a62-2ad8-432b-8ccf-0c2c52afcd5b")
IPackageExecutionStateChangeNotification : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE OnStateChanged(
        LPCWSTR pszPackageFullName,
        PACKAGE_EXECUTION_STATE pesNewState) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPackageExecutionStateChangeNotification, 0x1bb12a62, 0x2ad8, 0x432b, 0x8c,0xcf, 0x0c,0x2c,0x52,0xaf,0xcd,0x5b)
#endif
#else
typedef struct IPackageExecutionStateChangeNotificationVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IPackageExecutionStateChangeNotification methods ***/
    HRESULT (STDMETHODCALLTYPE *OnStateChanged)(
        IPackageExecutionStateChangeNotification *This,
        LPCWSTR pszPackageFullName,
        PACKAGE_EXECUTION_STATE pesNewState);

    END_INTERFACE
} IPackageExecutionStateChangeNotificationVtbl;

interface IPackageExecutionStateChangeNotification {
    CONST_VTBL IPackageExecutionStateChangeNotificationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPackageExecutionStateChangeNotification_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPackageExecutionStateChangeNotification_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPackageExecutionStateChangeNotification_Release(This) (This)->lpVtbl->Release(This)
/*** IPackageExecutionStateChangeNotification methods ***/
#define IPackageExecutionStateChangeNotification_OnStateChanged(This,pszPackageFullName,pesNewState) (This)->lpVtbl->OnStateChanged(This,pszPackageFullName,pesNewState)
#else
/*** IUnknown methods ***/
static inline HRESULT IPackageExecutionStateChangeNotification_QueryInterface(IPackageExecutionStateChangeNotification* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPackageExecutionStateChangeNotification_AddRef(IPackageExecutionStateChangeNotification* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPackageExecutionStateChangeNotification_Release(IPackageExecutionStateChangeNotification* This) {
    return This->lpVtbl->Release(This);
}
/*** IPackageExecutionStateChangeNotification methods ***/
static inline HRESULT IPackageExecutionStateChangeNotification_OnStateChanged(IPackageExecutionStateChangeNotification* This,LPCWSTR pszPackageFullName,PACKAGE_EXECUTION_STATE pesNewState) {
    return This->lpVtbl->OnStateChanged(This,pszPackageFullName,pesNewState);
}
#endif
#endif

#endif


#endif  /* __IPackageExecutionStateChangeNotification_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IPackageDebugSettings interface
 */
#ifndef __IPackageDebugSettings_INTERFACE_DEFINED__
#define __IPackageDebugSettings_INTERFACE_DEFINED__

DEFINE_GUID(IID_IPackageDebugSettings, 0xf27c3930, 0x8029, 0x4ad1, 0x94,0xe3, 0x3d,0xba,0x41,0x78,0x10,0xc1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f27c3930-8029-4ad1-94e3-3dba417810c1")
IPackageDebugSettings : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE EnableDebugging(
        LPCWSTR packageFullName,
        LPCWSTR debuggerCommandLine,
        PZZWSTR environment) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableDebugging(
        LPCWSTR packageFullName) = 0;

    virtual HRESULT STDMETHODCALLTYPE Suspend(
        LPCWSTR packageFullName) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resume(
        LPCWSTR packageFullName) = 0;

    virtual HRESULT STDMETHODCALLTYPE TerminateAllProcesses(
        LPCWSTR packageFullName) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTargetSessionId(
        ULONG sessionId) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumerateBackgroundTasks(
        LPCWSTR packageFullName,
        ULONG *taskCount,
        LPCGUID *taskIds,
        LPCWSTR **taskNames) = 0;

    virtual HRESULT STDMETHODCALLTYPE ActivateBackgroundTask(
        LPCGUID taskId) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartServicing(
        LPCWSTR packageFullName) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopServicing(
        LPCWSTR packageFullName) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartSessionRedirection(
        LPCWSTR packageFullName,
        ULONG sessionId) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopSessionRedirection(
        LPCWSTR packageFullName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPackageExecutionState(
        LPCWSTR packageFullName,
        PACKAGE_EXECUTION_STATE *packageExecutionState) = 0;

    virtual HRESULT STDMETHODCALLTYPE RegisterForPackageStateChanges(
        LPCWSTR packageFullName,
        IPackageExecutionStateChangeNotification *pPackageExecutionStateChangeNotification,
        DWORD *pdwCookie) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnregisterForPackageStateChanges(
        DWORD dwCookie) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IPackageDebugSettings, 0xf27c3930, 0x8029, 0x4ad1, 0x94,0xe3, 0x3d,0xba,0x41,0x78,0x10,0xc1)
#endif
#else
typedef struct IPackageDebugSettingsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IPackageDebugSettings methods ***/
    HRESULT (STDMETHODCALLTYPE *EnableDebugging)(
        IPackageDebugSettings *This,
        LPCWSTR packageFullName,
        LPCWSTR debuggerCommandLine,
        PZZWSTR environment);

    HRESULT (STDMETHODCALLTYPE *DisableDebugging)(
        IPackageDebugSettings *This,
        LPCWSTR packageFullName);

    HRESULT (STDMETHODCALLTYPE *Suspend)(
        IPackageDebugSettings *This,
        LPCWSTR packageFullName);

    HRESULT (STDMETHODCALLTYPE *Resume)(
        IPackageDebugSettings *This,
        LPCWSTR packageFullName);

    HRESULT (STDMETHODCALLTYPE *TerminateAllProcesses)(
        IPackageDebugSettings *This,
        LPCWSTR packageFullName);

    HRESULT (STDMETHODCALLTYPE *SetTargetSessionId)(
        IPackageDebugSettings *This,
        ULONG sessionId);

    HRESULT (STDMETHODCALLTYPE *EnumerateBackgroundTasks)(
        IPackageDebugSettings *This,
        LPCWSTR packageFullName,
        ULONG *taskCount,
        LPCGUID *taskIds,
        LPCWSTR **taskNames);

    HRESULT (STDMETHODCALLTYPE *ActivateBackgroundTask)(
        IPackageDebugSettings *This,
        LPCGUID taskId);

    HRESULT (STDMETHODCALLTYPE *StartServicing)(
        IPackageDebugSettings *This,
        LPCWSTR packageFullName);

    HRESULT (STDMETHODCALLTYPE *StopServicing)(
        IPackageDebugSettings *This,
        LPCWSTR packageFullName);

    HRESULT (STDMETHODCALLTYPE *StartSessionRedirection)(
        IPackageDebugSettings *This,
        LPCWSTR packageFullName,
        ULONG sessionId);

    HRESULT (STDMETHODCALLTYPE *StopSessionRedirection)(
        IPackageDebugSettings *This,
        LPCWSTR packageFullName);

    HRESULT (STDMETHODCALLTYPE *GetPackageExecutionState)(
        IPackageDebugSettings *This,
        LPCWSTR packageFullName,
        PACKAGE_EXECUTION_STATE *packageExecutionState);

    HRESULT (STDMETHODCALLTYPE *RegisterForPackageStateChanges)(
        IPackageDebugSettings *This,
        LPCWSTR packageFullName,
        IPackageExecutionStateChangeNotification *pPackageExecutionStateChangeNotification,
        DWORD *pdwCookie);

    HRESULT (STDMETHODCALLTYPE *UnregisterForPackageStateChanges)(
        IPackageDebugSettings *This,
        DWORD dwCookie);

    END_INTERFACE
} IPackageDebugSettingsVtbl;

interface IPackageDebugSettings {
    CONST_VTBL IPackageDebugSettingsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IPackageDebugSettings_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IPackageDebugSettings_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IPackageDebugSettings_Release(This) (This)->lpVtbl->Release(This)
/*** IPackageDebugSettings methods ***/
#define IPackageDebugSettings_EnableDebugging(This,packageFullName,debuggerCommandLine,environment) (This)->lpVtbl->EnableDebugging(This,packageFullName,debuggerCommandLine,environment)
#define IPackageDebugSettings_DisableDebugging(This,packageFullName) (This)->lpVtbl->DisableDebugging(This,packageFullName)
#define IPackageDebugSettings_Suspend(This,packageFullName) (This)->lpVtbl->Suspend(This,packageFullName)
#define IPackageDebugSettings_Resume(This,packageFullName) (This)->lpVtbl->Resume(This,packageFullName)
#define IPackageDebugSettings_TerminateAllProcesses(This,packageFullName) (This)->lpVtbl->TerminateAllProcesses(This,packageFullName)
#define IPackageDebugSettings_SetTargetSessionId(This,sessionId) (This)->lpVtbl->SetTargetSessionId(This,sessionId)
#define IPackageDebugSettings_EnumerateBackgroundTasks(This,packageFullName,taskCount,taskIds,taskNames) (This)->lpVtbl->EnumerateBackgroundTasks(This,packageFullName,taskCount,taskIds,taskNames)
#define IPackageDebugSettings_ActivateBackgroundTask(This,taskId) (This)->lpVtbl->ActivateBackgroundTask(This,taskId)
#define IPackageDebugSettings_StartServicing(This,packageFullName) (This)->lpVtbl->StartServicing(This,packageFullName)
#define IPackageDebugSettings_StopServicing(This,packageFullName) (This)->lpVtbl->StopServicing(This,packageFullName)
#define IPackageDebugSettings_StartSessionRedirection(This,packageFullName,sessionId) (This)->lpVtbl->StartSessionRedirection(This,packageFullName,sessionId)
#define IPackageDebugSettings_StopSessionRedirection(This,packageFullName) (This)->lpVtbl->StopSessionRedirection(This,packageFullName)
#define IPackageDebugSettings_GetPackageExecutionState(This,packageFullName,packageExecutionState) (This)->lpVtbl->GetPackageExecutionState(This,packageFullName,packageExecutionState)
#define IPackageDebugSettings_RegisterForPackageStateChanges(This,packageFullName,pPackageExecutionStateChangeNotification,pdwCookie) (This)->lpVtbl->RegisterForPackageStateChanges(This,packageFullName,pPackageExecutionStateChangeNotification,pdwCookie)
#define IPackageDebugSettings_UnregisterForPackageStateChanges(This,dwCookie) (This)->lpVtbl->UnregisterForPackageStateChanges(This,dwCookie)
#else
/*** IUnknown methods ***/
static inline HRESULT IPackageDebugSettings_QueryInterface(IPackageDebugSettings* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IPackageDebugSettings_AddRef(IPackageDebugSettings* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IPackageDebugSettings_Release(IPackageDebugSettings* This) {
    return This->lpVtbl->Release(This);
}
/*** IPackageDebugSettings methods ***/
static inline HRESULT IPackageDebugSettings_EnableDebugging(IPackageDebugSettings* This,LPCWSTR packageFullName,LPCWSTR debuggerCommandLine,PZZWSTR environment) {
    return This->lpVtbl->EnableDebugging(This,packageFullName,debuggerCommandLine,environment);
}
static inline HRESULT IPackageDebugSettings_DisableDebugging(IPackageDebugSettings* This,LPCWSTR packageFullName) {
    return This->lpVtbl->DisableDebugging(This,packageFullName);
}
static inline HRESULT IPackageDebugSettings_Suspend(IPackageDebugSettings* This,LPCWSTR packageFullName) {
    return This->lpVtbl->Suspend(This,packageFullName);
}
static inline HRESULT IPackageDebugSettings_Resume(IPackageDebugSettings* This,LPCWSTR packageFullName) {
    return This->lpVtbl->Resume(This,packageFullName);
}
static inline HRESULT IPackageDebugSettings_TerminateAllProcesses(IPackageDebugSettings* This,LPCWSTR packageFullName) {
    return This->lpVtbl->TerminateAllProcesses(This,packageFullName);
}
static inline HRESULT IPackageDebugSettings_SetTargetSessionId(IPackageDebugSettings* This,ULONG sessionId) {
    return This->lpVtbl->SetTargetSessionId(This,sessionId);
}
static inline HRESULT IPackageDebugSettings_EnumerateBackgroundTasks(IPackageDebugSettings* This,LPCWSTR packageFullName,ULONG *taskCount,LPCGUID *taskIds,LPCWSTR **taskNames) {
    return This->lpVtbl->EnumerateBackgroundTasks(This,packageFullName,taskCount,taskIds,taskNames);
}
static inline HRESULT IPackageDebugSettings_ActivateBackgroundTask(IPackageDebugSettings* This,LPCGUID taskId) {
    return This->lpVtbl->ActivateBackgroundTask(This,taskId);
}
static inline HRESULT IPackageDebugSettings_StartServicing(IPackageDebugSettings* This,LPCWSTR packageFullName) {
    return This->lpVtbl->StartServicing(This,packageFullName);
}
static inline HRESULT IPackageDebugSettings_StopServicing(IPackageDebugSettings* This,LPCWSTR packageFullName) {
    return This->lpVtbl->StopServicing(This,packageFullName);
}
static inline HRESULT IPackageDebugSettings_StartSessionRedirection(IPackageDebugSettings* This,LPCWSTR packageFullName,ULONG sessionId) {
    return This->lpVtbl->StartSessionRedirection(This,packageFullName,sessionId);
}
static inline HRESULT IPackageDebugSettings_StopSessionRedirection(IPackageDebugSettings* This,LPCWSTR packageFullName) {
    return This->lpVtbl->StopSessionRedirection(This,packageFullName);
}
static inline HRESULT IPackageDebugSettings_GetPackageExecutionState(IPackageDebugSettings* This,LPCWSTR packageFullName,PACKAGE_EXECUTION_STATE *packageExecutionState) {
    return This->lpVtbl->GetPackageExecutionState(This,packageFullName,packageExecutionState);
}
static inline HRESULT IPackageDebugSettings_RegisterForPackageStateChanges(IPackageDebugSettings* This,LPCWSTR packageFullName,IPackageExecutionStateChangeNotification *pPackageExecutionStateChangeNotification,DWORD *pdwCookie) {
    return This->lpVtbl->RegisterForPackageStateChanges(This,packageFullName,pPackageExecutionStateChangeNotification,pdwCookie);
}
static inline HRESULT IPackageDebugSettings_UnregisterForPackageStateChanges(IPackageDebugSettings* This,DWORD dwCookie) {
    return This->lpVtbl->UnregisterForPackageStateChanges(This,dwCookie);
}
#endif
#endif

#endif


#endif  /* __IPackageDebugSettings_INTERFACE_DEFINED__ */


typedef enum AHE_TYPE {
    AHE_DESKTOP = 0,
    AHE_IMMERSIVE = 1
} AHE_TYPE;

/*****************************************************************************
 * IExecuteCommandApplicationHostEnvironment interface
 */
#ifndef __IExecuteCommandApplicationHostEnvironment_INTERFACE_DEFINED__
#define __IExecuteCommandApplicationHostEnvironment_INTERFACE_DEFINED__

DEFINE_GUID(IID_IExecuteCommandApplicationHostEnvironment, 0x18b21aa9, 0xe184, 0x4ff0, 0x9f,0x5e, 0xf8,0x82,0xd0,0x37,0x71,0xb3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("18b21aa9-e184-4ff0-9f5e-f882d03771b3")
IExecuteCommandApplicationHostEnvironment : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetValue(
        AHE_TYPE *pahe) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExecuteCommandApplicationHostEnvironment, 0x18b21aa9, 0xe184, 0x4ff0, 0x9f,0x5e, 0xf8,0x82,0xd0,0x37,0x71,0xb3)
#endif
#else
typedef struct IExecuteCommandApplicationHostEnvironmentVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IExecuteCommandApplicationHostEnvironment methods ***/
    HRESULT (STDMETHODCALLTYPE *GetValue)(
        IExecuteCommandApplicationHostEnvironment *This,
        AHE_TYPE *pahe);

    END_INTERFACE
} IExecuteCommandApplicationHostEnvironmentVtbl;

interface IExecuteCommandApplicationHostEnvironment {
    CONST_VTBL IExecuteCommandApplicationHostEnvironmentVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IExecuteCommandApplicationHostEnvironment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExecuteCommandApplicationHostEnvironment_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExecuteCommandApplicationHostEnvironment_Release(This) (This)->lpVtbl->Release(This)
/*** IExecuteCommandApplicationHostEnvironment methods ***/
#define IExecuteCommandApplicationHostEnvironment_GetValue(This,pahe) (This)->lpVtbl->GetValue(This,pahe)
#else
/*** IUnknown methods ***/
static inline HRESULT IExecuteCommandApplicationHostEnvironment_QueryInterface(IExecuteCommandApplicationHostEnvironment* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IExecuteCommandApplicationHostEnvironment_AddRef(IExecuteCommandApplicationHostEnvironment* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IExecuteCommandApplicationHostEnvironment_Release(IExecuteCommandApplicationHostEnvironment* This) {
    return This->lpVtbl->Release(This);
}
/*** IExecuteCommandApplicationHostEnvironment methods ***/
static inline HRESULT IExecuteCommandApplicationHostEnvironment_GetValue(IExecuteCommandApplicationHostEnvironment* This,AHE_TYPE *pahe) {
    return This->lpVtbl->GetValue(This,pahe);
}
#endif
#endif

#endif


#endif  /* __IExecuteCommandApplicationHostEnvironment_INTERFACE_DEFINED__ */


typedef enum EC_HOST_UI_MODE {
    ECHUIM_DESKTOP = 0,
    ECHUIM_IMMERSIVE = 1,
    ECHUIM_SYSTEM_LAUNCHER = 2
} EC_HOST_UI_MODE;

/*****************************************************************************
 * IExecuteCommandHost interface
 */
#ifndef __IExecuteCommandHost_INTERFACE_DEFINED__
#define __IExecuteCommandHost_INTERFACE_DEFINED__

DEFINE_GUID(IID_IExecuteCommandHost, 0x4b6832a2, 0x5f04, 0x4c9d, 0xb8,0x9d, 0x72,0x7a,0x15,0xd1,0x03,0xe7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4b6832a2-5f04-4c9d-b89d-727a15d103e7")
IExecuteCommandHost : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetUIMode(
        EC_HOST_UI_MODE *pUIMode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IExecuteCommandHost, 0x4b6832a2, 0x5f04, 0x4c9d, 0xb8,0x9d, 0x72,0x7a,0x15,0xd1,0x03,0xe7)
#endif
#else
typedef struct IExecuteCommandHostVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IExecuteCommandHost methods ***/
    HRESULT (STDMETHODCALLTYPE *GetUIMode)(
        IExecuteCommandHost *This,
        EC_HOST_UI_MODE *pUIMode);

    END_INTERFACE
} IExecuteCommandHostVtbl;

interface IExecuteCommandHost {
    CONST_VTBL IExecuteCommandHostVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IExecuteCommandHost_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IExecuteCommandHost_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IExecuteCommandHost_Release(This) (This)->lpVtbl->Release(This)
/*** IExecuteCommandHost methods ***/
#define IExecuteCommandHost_GetUIMode(This,pUIMode) (This)->lpVtbl->GetUIMode(This,pUIMode)
#else
/*** IUnknown methods ***/
static inline HRESULT IExecuteCommandHost_QueryInterface(IExecuteCommandHost* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IExecuteCommandHost_AddRef(IExecuteCommandHost* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IExecuteCommandHost_Release(IExecuteCommandHost* This) {
    return This->lpVtbl->Release(This);
}
/*** IExecuteCommandHost methods ***/
static inline HRESULT IExecuteCommandHost_GetUIMode(IExecuteCommandHost* This,EC_HOST_UI_MODE *pUIMode) {
    return This->lpVtbl->GetUIMode(This,pUIMode);
}
#endif
#endif

#endif


#endif  /* __IExecuteCommandHost_INTERFACE_DEFINED__ */


#define SID_ExecuteCommandHost IID_IExecuteCommandHost

typedef enum APPLICATION_VIEW_STATE {
    AVS_FULLSCREEN_LANDSCAPE = 0,
    AVS_FILLED = 1,
    AVS_SNAPPED = 2,
    AVS_FULLSCREEN_PORTRAIT = 3
} APPLICATION_VIEW_STATE;

typedef enum EDGE_GESTURE_KIND {
    EGK_TOUCH = 0,
    EGK_KEYBOARD = 1,
    EGK_MOUSE = 2
} EDGE_GESTURE_KIND;

/*****************************************************************************
 * IApplicationDesignModeSettings interface
 */
#ifndef __IApplicationDesignModeSettings_INTERFACE_DEFINED__
#define __IApplicationDesignModeSettings_INTERFACE_DEFINED__

DEFINE_GUID(IID_IApplicationDesignModeSettings, 0x2a3dee9a, 0xe31d, 0x46d6, 0x85,0x08, 0xbc,0xc5,0x97,0xdb,0x35,0x57);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2a3dee9a-e31d-46d6-8508-bcc597db3557")
IApplicationDesignModeSettings : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetNativeDisplaySize(
        SIZE sizeNativeDisplay) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScaleFactor(
        DEVICE_SCALE_FACTOR scaleFactor) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetApplicationViewState(
        APPLICATION_VIEW_STATE viewState) = 0;

    virtual HRESULT STDMETHODCALLTYPE ComputeApplicationSize(
        SIZE *psizeApplication) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsApplicationViewStateSupported(
        APPLICATION_VIEW_STATE viewState,
        SIZE sizeNativeDisplay,
        DEVICE_SCALE_FACTOR scaleFactor,
        WINBOOL *pfSupported) = 0;

    virtual HRESULT STDMETHODCALLTYPE TriggerEdgeGesture(
        EDGE_GESTURE_KIND edgeGestureKind) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IApplicationDesignModeSettings, 0x2a3dee9a, 0xe31d, 0x46d6, 0x85,0x08, 0xbc,0xc5,0x97,0xdb,0x35,0x57)
#endif
#else
typedef struct IApplicationDesignModeSettingsVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IApplicationDesignModeSettings methods ***/
    HRESULT (STDMETHODCALLTYPE *SetNativeDisplaySize)(
        IApplicationDesignModeSettings *This,
        SIZE sizeNativeDisplay);

    HRESULT (STDMETHODCALLTYPE *SetScaleFactor)(
        IApplicationDesignModeSettings *This,
        DEVICE_SCALE_FACTOR scaleFactor);

    HRESULT (STDMETHODCALLTYPE *SetApplicationViewState)(
        IApplicationDesignModeSettings *This,
        APPLICATION_VIEW_STATE viewState);

    HRESULT (STDMETHODCALLTYPE *ComputeApplicationSize)(
        IApplicationDesignModeSettings *This,
        SIZE *psizeApplication);

    HRESULT (STDMETHODCALLTYPE *IsApplicationViewStateSupported)(
        IApplicationDesignModeSettings *This,
        APPLICATION_VIEW_STATE viewState,
        SIZE sizeNativeDisplay,
        DEVICE_SCALE_FACTOR scaleFactor,
        WINBOOL *pfSupported);

    HRESULT (STDMETHODCALLTYPE *TriggerEdgeGesture)(
        IApplicationDesignModeSettings *This,
        EDGE_GESTURE_KIND edgeGestureKind);

    END_INTERFACE
} IApplicationDesignModeSettingsVtbl;

interface IApplicationDesignModeSettings {
    CONST_VTBL IApplicationDesignModeSettingsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IApplicationDesignModeSettings_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IApplicationDesignModeSettings_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IApplicationDesignModeSettings_Release(This) (This)->lpVtbl->Release(This)
/*** IApplicationDesignModeSettings methods ***/
#define IApplicationDesignModeSettings_SetNativeDisplaySize(This,sizeNativeDisplay) (This)->lpVtbl->SetNativeDisplaySize(This,sizeNativeDisplay)
#define IApplicationDesignModeSettings_SetScaleFactor(This,scaleFactor) (This)->lpVtbl->SetScaleFactor(This,scaleFactor)
#define IApplicationDesignModeSettings_SetApplicationViewState(This,viewState) (This)->lpVtbl->SetApplicationViewState(This,viewState)
#define IApplicationDesignModeSettings_ComputeApplicationSize(This,psizeApplication) (This)->lpVtbl->ComputeApplicationSize(This,psizeApplication)
#define IApplicationDesignModeSettings_IsApplicationViewStateSupported(This,viewState,sizeNativeDisplay,scaleFactor,pfSupported) (This)->lpVtbl->IsApplicationViewStateSupported(This,viewState,sizeNativeDisplay,scaleFactor,pfSupported)
#define IApplicationDesignModeSettings_TriggerEdgeGesture(This,edgeGestureKind) (This)->lpVtbl->TriggerEdgeGesture(This,edgeGestureKind)
#else
/*** IUnknown methods ***/
static inline HRESULT IApplicationDesignModeSettings_QueryInterface(IApplicationDesignModeSettings* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IApplicationDesignModeSettings_AddRef(IApplicationDesignModeSettings* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IApplicationDesignModeSettings_Release(IApplicationDesignModeSettings* This) {
    return This->lpVtbl->Release(This);
}
/*** IApplicationDesignModeSettings methods ***/
static inline HRESULT IApplicationDesignModeSettings_SetNativeDisplaySize(IApplicationDesignModeSettings* This,SIZE sizeNativeDisplay) {
    return This->lpVtbl->SetNativeDisplaySize(This,sizeNativeDisplay);
}
static inline HRESULT IApplicationDesignModeSettings_SetScaleFactor(IApplicationDesignModeSettings* This,DEVICE_SCALE_FACTOR scaleFactor) {
    return This->lpVtbl->SetScaleFactor(This,scaleFactor);
}
static inline HRESULT IApplicationDesignModeSettings_SetApplicationViewState(IApplicationDesignModeSettings* This,APPLICATION_VIEW_STATE viewState) {
    return This->lpVtbl->SetApplicationViewState(This,viewState);
}
static inline HRESULT IApplicationDesignModeSettings_ComputeApplicationSize(IApplicationDesignModeSettings* This,SIZE *psizeApplication) {
    return This->lpVtbl->ComputeApplicationSize(This,psizeApplication);
}
static inline HRESULT IApplicationDesignModeSettings_IsApplicationViewStateSupported(IApplicationDesignModeSettings* This,APPLICATION_VIEW_STATE viewState,SIZE sizeNativeDisplay,DEVICE_SCALE_FACTOR scaleFactor,WINBOOL *pfSupported) {
    return This->lpVtbl->IsApplicationViewStateSupported(This,viewState,sizeNativeDisplay,scaleFactor,pfSupported);
}
static inline HRESULT IApplicationDesignModeSettings_TriggerEdgeGesture(IApplicationDesignModeSettings* This,EDGE_GESTURE_KIND edgeGestureKind) {
    return This->lpVtbl->TriggerEdgeGesture(This,edgeGestureKind);
}
#endif
#endif

#endif


#endif  /* __IApplicationDesignModeSettings_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IInitializeWithWindow interface
 */
#ifndef __IInitializeWithWindow_INTERFACE_DEFINED__
#define __IInitializeWithWindow_INTERFACE_DEFINED__

DEFINE_GUID(IID_IInitializeWithWindow, 0x3e68d4bd, 0x7135, 0x4d10, 0x80,0x18, 0x9f,0xb6,0xd9,0xf3,0x3f,0xa1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3e68d4bd-7135-4d10-8018-9fb6d9f33fa1")
IInitializeWithWindow : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        HWND hwnd) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IInitializeWithWindow, 0x3e68d4bd, 0x7135, 0x4d10, 0x80,0x18, 0x9f,0xb6,0xd9,0xf3,0x3f,0xa1)
#endif
#else
typedef struct IInitializeWithWindowVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IInitializeWithWindow methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IInitializeWithWindow *This,
        HWND hwnd);

    END_INTERFACE
} IInitializeWithWindowVtbl;

interface IInitializeWithWindow {
    CONST_VTBL IInitializeWithWindowVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IInitializeWithWindow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IInitializeWithWindow_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IInitializeWithWindow_Release(This) (This)->lpVtbl->Release(This)
/*** IInitializeWithWindow methods ***/
#define IInitializeWithWindow_Initialize(This,hwnd) (This)->lpVtbl->Initialize(This,hwnd)
#else
/*** IUnknown methods ***/
static inline HRESULT IInitializeWithWindow_QueryInterface(IInitializeWithWindow* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IInitializeWithWindow_AddRef(IInitializeWithWindow* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IInitializeWithWindow_Release(IInitializeWithWindow* This) {
    return This->lpVtbl->Release(This);
}
/*** IInitializeWithWindow methods ***/
static inline HRESULT IInitializeWithWindow_Initialize(IInitializeWithWindow* This,HWND hwnd) {
    return This->lpVtbl->Initialize(This,hwnd);
}
#endif
#endif

#endif


#endif  /* __IInitializeWithWindow_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IHandlerInfo interface
 */
#ifndef __IHandlerInfo_INTERFACE_DEFINED__
#define __IHandlerInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_IHandlerInfo, 0x997706ef, 0xf880, 0x453b, 0x81,0x18, 0x39,0xe1,0xa2,0xd2,0x65,0x5a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("997706ef-f880-453b-8118-39e1a2d2655a")
IHandlerInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetApplicationDisplayName(
        LPWSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetApplicationPublisher(
        LPWSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetApplicationIconReference(
        LPWSTR *value) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IHandlerInfo, 0x997706ef, 0xf880, 0x453b, 0x81,0x18, 0x39,0xe1,0xa2,0xd2,0x65,0x5a)
#endif
#else
typedef struct IHandlerInfoVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IHandlerInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetApplicationDisplayName)(
        IHandlerInfo *This,
        LPWSTR *value);

    HRESULT (STDMETHODCALLTYPE *GetApplicationPublisher)(
        IHandlerInfo *This,
        LPWSTR *value);

    HRESULT (STDMETHODCALLTYPE *GetApplicationIconReference)(
        IHandlerInfo *This,
        LPWSTR *value);

    END_INTERFACE
} IHandlerInfoVtbl;

interface IHandlerInfo {
    CONST_VTBL IHandlerInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IHandlerInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IHandlerInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IHandlerInfo_Release(This) (This)->lpVtbl->Release(This)
/*** IHandlerInfo methods ***/
#define IHandlerInfo_GetApplicationDisplayName(This,value) (This)->lpVtbl->GetApplicationDisplayName(This,value)
#define IHandlerInfo_GetApplicationPublisher(This,value) (This)->lpVtbl->GetApplicationPublisher(This,value)
#define IHandlerInfo_GetApplicationIconReference(This,value) (This)->lpVtbl->GetApplicationIconReference(This,value)
#else
/*** IUnknown methods ***/
static inline HRESULT IHandlerInfo_QueryInterface(IHandlerInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IHandlerInfo_AddRef(IHandlerInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IHandlerInfo_Release(IHandlerInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** IHandlerInfo methods ***/
static inline HRESULT IHandlerInfo_GetApplicationDisplayName(IHandlerInfo* This,LPWSTR *value) {
    return This->lpVtbl->GetApplicationDisplayName(This,value);
}
static inline HRESULT IHandlerInfo_GetApplicationPublisher(IHandlerInfo* This,LPWSTR *value) {
    return This->lpVtbl->GetApplicationPublisher(This,value);
}
static inline HRESULT IHandlerInfo_GetApplicationIconReference(IHandlerInfo* This,LPWSTR *value) {
    return This->lpVtbl->GetApplicationIconReference(This,value);
}
#endif
#endif

#endif


#endif  /* __IHandlerInfo_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IHandlerActivationHost interface
 */
#ifndef __IHandlerActivationHost_INTERFACE_DEFINED__
#define __IHandlerActivationHost_INTERFACE_DEFINED__

DEFINE_GUID(IID_IHandlerActivationHost, 0x35094a87, 0x8bb1, 0x4237, 0x96,0xc6, 0xc4,0x17,0xee,0xbd,0xb0,0x78);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("35094a87-8bb1-4237-96c6-c417eebdb078")
IHandlerActivationHost : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE BeforeCoCreateInstance(
        REFCLSID clsidHandler,
        IShellItemArray *itemsBeingActivated,
        IHandlerInfo *handlerInfo) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeforeCreateProcess(
        LPCWSTR applicationPath,
        LPCWSTR commandLine,
        IHandlerInfo *handlerInfo) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IHandlerActivationHost, 0x35094a87, 0x8bb1, 0x4237, 0x96,0xc6, 0xc4,0x17,0xee,0xbd,0xb0,0x78)
#endif
#else
typedef struct IHandlerActivationHostVtbl {
    BEGIN_INTERFACE

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

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

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

    /*** IHandlerActivationHost methods ***/
    HRESULT (STDMETHODCALLTYPE *BeforeCoCreateInstance)(
        IHandlerActivationHost *This,
        REFCLSID clsidHandler,
        IShellItemArray *itemsBeingActivated,
        IHandlerInfo *handlerInfo);

    HRESULT (STDMETHODCALLTYPE *BeforeCreateProcess)(
        IHandlerActivationHost *This,
        LPCWSTR applicationPath,
        LPCWSTR commandLine,
        IHandlerInfo *handlerInfo);

    END_INTERFACE
} IHandlerActivationHostVtbl;

interface IHandlerActivationHost {
    CONST_VTBL IHandlerActivationHostVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IHandlerActivationHost_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IHandlerActivationHost_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IHandlerActivationHost_Release(This) (This)->lpVtbl->Release(This)
/*** IHandlerActivationHost methods ***/
#define IHandlerActivationHost_BeforeCoCreateInstance(This,clsidHandler,itemsBeingActivated,handlerInfo) (This)->lpVtbl->BeforeCoCreateInstance(This,clsidHandler,itemsBeingActivated,handlerInfo)
#define IHandlerActivationHost_BeforeCreateProcess(This,applicationPath,commandLine,handlerInfo) (This)->lpVtbl->BeforeCreateProcess(This,applicationPath,commandLine,handlerInfo)
#else
/*** IUnknown methods ***/
static inline HRESULT IHandlerActivationHost_QueryInterface(IHandlerActivationHost* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static inline ULONG IHandlerActivationHost_AddRef(IHandlerActivationHost* This) {
    return This->lpVtbl->AddRef(This);
}
static inline ULONG IHandlerActivationHost_Release(IHandlerActivationHost* This) {
    return This->lpVtbl->Release(This);
}
/*** IHandlerActivationHost methods ***/
static inline HRESULT IHandlerActivationHost_BeforeCoCreateInstance(IHandlerActivationHost* This,REFCLSID clsidHandler,IShellItemArray *itemsBeingActivated,IHandlerInfo *handlerInfo) {
    return This->lpVtbl->BeforeCoCreateInstance(This,clsidHandler,itemsBeingActivated,handlerInfo);
}
static inline HRESULT IHandlerActivationHost_BeforeCreateProcess(IHandlerActivationHost* This,LPCWSTR applicationPath,LPCWSTR commandLine,IHandlerInfo *handlerInfo) {
    return This->lpVtbl->BeforeCreateProcess(This,applicationPath,commandLine,handlerInfo);
}
#endif
#endif

#endif


#endif  /* __IHandlerActivationHost_INTERFACE_DEFINED__ */


#define SID_SHandlerActivationHost IID_IHandlerActivationHost

DEFINE_GUID(SID_ShellExecuteNamedPropertyStore, 0xeb84ada2, 0x00ff, 0x4992, 0x83, 0x24, 0xed, 0x5c, 0xe0, 0x61, 0xcb, 0x29);
#endif

#endif
/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER PCIDLIST_ABSOLUTE_UserSize     (ULONG *, ULONG, PCIDLIST_ABSOLUTE *);
unsigned char * __RPC_USER PCIDLIST_ABSOLUTE_UserMarshal  (ULONG *, unsigned char *, PCIDLIST_ABSOLUTE *);
unsigned char * __RPC_USER PCIDLIST_ABSOLUTE_UserUnmarshal(ULONG *, unsigned char *, PCIDLIST_ABSOLUTE *);
void            __RPC_USER PCIDLIST_ABSOLUTE_UserFree     (ULONG *, PCIDLIST_ABSOLUTE *);
ULONG           __RPC_USER PIDLIST_ABSOLUTE_UserSize     (ULONG *, ULONG, PIDLIST_ABSOLUTE *);
unsigned char * __RPC_USER PIDLIST_ABSOLUTE_UserMarshal  (ULONG *, unsigned char *, PIDLIST_ABSOLUTE *);
unsigned char * __RPC_USER PIDLIST_ABSOLUTE_UserUnmarshal(ULONG *, unsigned char *, PIDLIST_ABSOLUTE *);
void            __RPC_USER PIDLIST_ABSOLUTE_UserFree     (ULONG *, PIDLIST_ABSOLUTE *);
ULONG           __RPC_USER PITEMID_CHILD_UserSize     (ULONG *, ULONG, PITEMID_CHILD *);
unsigned char * __RPC_USER PITEMID_CHILD_UserMarshal  (ULONG *, unsigned char *, PITEMID_CHILD *);
unsigned char * __RPC_USER PITEMID_CHILD_UserUnmarshal(ULONG *, unsigned char *, PITEMID_CHILD *);
void            __RPC_USER PITEMID_CHILD_UserFree     (ULONG *, PITEMID_CHILD *);
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 PIDLIST_RELATIVE_UserSize     (ULONG *, ULONG, PIDLIST_RELATIVE *);
unsigned char * __RPC_USER PIDLIST_RELATIVE_UserMarshal  (ULONG *, unsigned char *, PIDLIST_RELATIVE *);
unsigned char * __RPC_USER PIDLIST_RELATIVE_UserUnmarshal(ULONG *, unsigned char *, PIDLIST_RELATIVE *);
void            __RPC_USER PIDLIST_RELATIVE_UserFree     (ULONG *, PIDLIST_RELATIVE *);
ULONG           __RPC_USER PCUIDLIST_RELATIVE_UserSize     (ULONG *, ULONG, PCUIDLIST_RELATIVE *);
unsigned char * __RPC_USER PCUIDLIST_RELATIVE_UserMarshal  (ULONG *, unsigned char *, PCUIDLIST_RELATIVE *);
unsigned char * __RPC_USER PCUIDLIST_RELATIVE_UserUnmarshal(ULONG *, unsigned char *, PCUIDLIST_RELATIVE *);
void            __RPC_USER PCUIDLIST_RELATIVE_UserFree     (ULONG *, PCUIDLIST_RELATIVE *);
ULONG           __RPC_USER PCUITEMID_CHILD_UserSize     (ULONG *, ULONG, PCUITEMID_CHILD *);
unsigned char * __RPC_USER PCUITEMID_CHILD_UserMarshal  (ULONG *, unsigned char *, PCUITEMID_CHILD *);
unsigned char * __RPC_USER PCUITEMID_CHILD_UserUnmarshal(ULONG *, unsigned char *, PCUITEMID_CHILD *);
void            __RPC_USER PCUITEMID_CHILD_UserFree     (ULONG *, PCUITEMID_CHILD *);
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 HBITMAP_UserSize     (ULONG *, ULONG, HBITMAP *);
unsigned char * __RPC_USER HBITMAP_UserMarshal  (ULONG *, unsigned char *, HBITMAP *);
unsigned char * __RPC_USER HBITMAP_UserUnmarshal(ULONG *, unsigned char *, HBITMAP *);
void            __RPC_USER HBITMAP_UserFree     (ULONG *, HBITMAP *);
ULONG           __RPC_USER 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 *);
ULONG           __RPC_USER HMONITOR_UserSize     (ULONG *, ULONG, HMONITOR *);
unsigned char * __RPC_USER HMONITOR_UserMarshal  (ULONG *, unsigned char *, HMONITOR *);
unsigned char * __RPC_USER HMONITOR_UserUnmarshal(ULONG *, unsigned char *, HMONITOR *);
void            __RPC_USER HMONITOR_UserFree     (ULONG *, HMONITOR *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __shobjidl_h__ */
