/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */

import "objidl.idl";
import "oaidl.idl";
import "shtypes.idl";
import "oleidl.idl";

cpp_quote("#include <_mingw_unicode.h>")

cpp_quote("#ifndef __IPersistFolder_FWD_DEFINED__")
cpp_quote("#define __IPersistFolder_FWD_DEFINED__")
cpp_quote("typedef struct IPersistFolder IPersistFolder;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IPersistFolder2_FWD_DEFINED__")
cpp_quote("#define __IPersistFolder2_FWD_DEFINED__")
cpp_quote("typedef struct IPersistFolder2 IPersistFolder2;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IPersistIDList_FWD_DEFINED__")
cpp_quote("#define __IPersistIDList_FWD_DEFINED__")
cpp_quote("typedef struct IPersistIDList IPersistIDList;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IEnumIDList_FWD_DEFINED__")
cpp_quote("#define __IEnumIDList_FWD_DEFINED__")
cpp_quote("typedef struct IEnumIDList IEnumIDList;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellFolder_FWD_DEFINED__")
cpp_quote("#define __IShellFolder_FWD_DEFINED__")
cpp_quote("typedef struct IShellFolder IShellFolder;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IEnumExtraSearch_FWD_DEFINED__")
cpp_quote("#define __IEnumExtraSearch_FWD_DEFINED__")
cpp_quote("typedef struct IEnumExtraSearch IEnumExtraSearch;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellFolder2_FWD_DEFINED__")
cpp_quote("#define __IShellFolder2_FWD_DEFINED__")
cpp_quote("typedef struct IShellFolder2 IShellFolder2;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellView_FWD_DEFINED__")
cpp_quote("#define __IShellView_FWD_DEFINED__")
cpp_quote("typedef struct IShellView IShellView;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellView2_FWD_DEFINED__")
cpp_quote("#define __IShellView2_FWD_DEFINED__")
cpp_quote("typedef struct IShellView2 IShellView2;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFolderView_FWD_DEFINED__")
cpp_quote("#define __IFolderView_FWD_DEFINED__")
cpp_quote("typedef struct IFolderView IFolderView;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFolderFilterSite_FWD_DEFINED__")
cpp_quote("#define __IFolderFilterSite_FWD_DEFINED__")
cpp_quote("typedef struct IFolderFilterSite IFolderFilterSite;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFolderFilter_FWD_DEFINED__")
cpp_quote("#define __IFolderFilter_FWD_DEFINED__")
cpp_quote("typedef struct IFolderFilter IFolderFilter;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellBrowser_FWD_DEFINED__")
cpp_quote("#define __IShellBrowser_FWD_DEFINED__")
cpp_quote("typedef struct IShellBrowser IShellBrowser;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IProfferService_FWD_DEFINED__")
cpp_quote("#define __IProfferService_FWD_DEFINED__")
cpp_quote("typedef struct IProfferService IProfferService;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IPropertyUI_FWD_DEFINED__")
cpp_quote("#define __IPropertyUI_FWD_DEFINED__")
cpp_quote("typedef struct IPropertyUI IPropertyUI;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __ICategoryProvider_FWD_DEFINED__")
cpp_quote("#define __ICategoryProvider_FWD_DEFINED__")
cpp_quote("typedef struct ICategoryProvider ICategoryProvider;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __ICategorizer_FWD_DEFINED__")
cpp_quote("#define __ICategorizer_FWD_DEFINED__")
cpp_quote("typedef struct ICategorizer ICategorizer;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellLinkA_FWD_DEFINED__")
cpp_quote("#define __IShellLinkA_FWD_DEFINED__")
cpp_quote("typedef struct IShellLinkA IShellLinkA;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellLinkW_FWD_DEFINED__")
cpp_quote("#define __IShellLinkW_FWD_DEFINED__")
cpp_quote("typedef struct IShellLinkW IShellLinkW;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IActionProgressDialog_FWD_DEFINED__")
cpp_quote("#define __IActionProgressDialog_FWD_DEFINED__")
cpp_quote("typedef struct IActionProgressDialog IActionProgressDialog;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IHWEventHandler_FWD_DEFINED__")
cpp_quote("#define __IHWEventHandler_FWD_DEFINED__")
cpp_quote("typedef struct IHWEventHandler IHWEventHandler;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IQueryCancelAutoPlay_FWD_DEFINED__")
cpp_quote("#define __IQueryCancelAutoPlay_FWD_DEFINED__")
cpp_quote("typedef struct IQueryCancelAutoPlay IQueryCancelAutoPlay;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IActionProgress_FWD_DEFINED__")
cpp_quote("#define __IActionProgress_FWD_DEFINED__")
cpp_quote("typedef struct IActionProgress IActionProgress;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellExtInit_FWD_DEFINED__")
cpp_quote("#define __IShellExtInit_FWD_DEFINED__")
cpp_quote("typedef struct IShellExtInit IShellExtInit;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellPropSheetExt_FWD_DEFINED__")
cpp_quote("#define __IShellPropSheetExt_FWD_DEFINED__")
cpp_quote("typedef struct IShellPropSheetExt IShellPropSheetExt;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IRemoteComputer_FWD_DEFINED__")
cpp_quote("#define __IRemoteComputer_FWD_DEFINED__")
cpp_quote("typedef struct IRemoteComputer IRemoteComputer;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IQueryContinue_FWD_DEFINED__")
cpp_quote("#define __IQueryContinue_FWD_DEFINED__")
cpp_quote("typedef struct IQueryContinue IQueryContinue;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IUserNotification_FWD_DEFINED__")
cpp_quote("#define __IUserNotification_FWD_DEFINED__")
cpp_quote("typedef struct IUserNotification IUserNotification;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IItemNameLimits_FWD_DEFINED__")
cpp_quote("#define __IItemNameLimits_FWD_DEFINED__")
cpp_quote("typedef struct IItemNameLimits IItemNameLimits;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __INetCrawler_FWD_DEFINED__")
cpp_quote("#define __INetCrawler_FWD_DEFINED__")
cpp_quote("typedef struct INetCrawler INetCrawler;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IExtractImage_FWD_DEFINED__")
cpp_quote("#define __IExtractImage_FWD_DEFINED__")
cpp_quote("typedef struct IExtractImage IExtractImage;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IExtractImage2_FWD_DEFINED__")
cpp_quote("#define __IExtractImage2_FWD_DEFINED__")
cpp_quote("typedef struct IExtractImage2 IExtractImage2;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IUserEventTimerCallback_FWD_DEFINED__")
cpp_quote("#define __IUserEventTimerCallback_FWD_DEFINED__")
cpp_quote("typedef struct IUserEventTimerCallback IUserEventTimerCallback;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IUserEventTimer_FWD_DEFINED__")
cpp_quote("#define __IUserEventTimer_FWD_DEFINED__")
cpp_quote("typedef struct IUserEventTimer IUserEventTimer;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IDockingWindow_FWD_DEFINED__")
cpp_quote("#define __IDockingWindow_FWD_DEFINED__")
cpp_quote("typedef struct IDockingWindow IDockingWindow;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IDeskBand_FWD_DEFINED__")
cpp_quote("#define __IDeskBand_FWD_DEFINED__")
cpp_quote("typedef struct IDeskBand IDeskBand;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __ITaskbarList_FWD_DEFINED__")
cpp_quote("#define __ITaskbarList_FWD_DEFINED__")
cpp_quote("typedef struct ITaskbarList ITaskbarList;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __ITaskbarList2_FWD_DEFINED__")
cpp_quote("#define __ITaskbarList2_FWD_DEFINED__")
cpp_quote("typedef struct ITaskbarList2 ITaskbarList2;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __ITaskbarList3_FWD_DEFINED__")
cpp_quote("#define __ITaskbarList3_FWD_DEFINED__")
cpp_quote("typedef interface ITaskbarList3 ITaskbarList3;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __ITaskbarList4_FWD_DEFINED__")
cpp_quote("#define __ITaskbarList4_FWD_DEFINED__")
cpp_quote("typedef interface ITaskbarList4 ITaskbarList4;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IApplicationAssociationRegistrationUI_FWD_DEFINED__")
cpp_quote("#define __IApplicationAssociationRegistrationUI_FWD_DEFINED__")
cpp_quote("typedef interface IApplicationAssociationRegistrationUI IApplicationAssociationRegistrationUI;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __ICDBurn_FWD_DEFINED__")
cpp_quote("#define __ICDBurn_FWD_DEFINED__")
cpp_quote("typedef struct ICDBurn ICDBurn;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IWizardSite_FWD_DEFINED__")
cpp_quote("#define __IWizardSite_FWD_DEFINED__")
cpp_quote("typedef struct IWizardSite IWizardSite;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IWizardExtension_FWD_DEFINED__")
cpp_quote("#define __IWizardExtension_FWD_DEFINED__")
cpp_quote("typedef struct IWizardExtension IWizardExtension;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IWebWizardExtension_FWD_DEFINED__")
cpp_quote("#define __IWebWizardExtension_FWD_DEFINED__")
cpp_quote("typedef struct IWebWizardExtension IWebWizardExtension;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IPublishingWizard_FWD_DEFINED__")
cpp_quote("#define __IPublishingWizard_FWD_DEFINED__")
cpp_quote("typedef struct IPublishingWizard IPublishingWizard;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFolderViewHost_FWD_DEFINED__")
cpp_quote("#define __IFolderViewHost_FWD_DEFINED__")
cpp_quote("typedef struct IFolderViewHost IFolderViewHost;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IAutoCompleteDropDown_FWD_DEFINED__")
cpp_quote("#define __IAutoCompleteDropDown_FWD_DEFINED__")
cpp_quote("typedef struct IAutoCompleteDropDown IAutoCompleteDropDown;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IModalWindow_FWD_DEFINED__")
cpp_quote("#define __IModalWindow_FWD_DEFINED__")
cpp_quote("typedef struct IModalWindow IModalWindow;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IPassportWizard_FWD_DEFINED__")
cpp_quote("#define __IPassportWizard_FWD_DEFINED__")
cpp_quote("typedef struct IPassportWizard IPassportWizard;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __ICDBurnExt_FWD_DEFINED__")
cpp_quote("#define __ICDBurnExt_FWD_DEFINED__")
cpp_quote("typedef struct ICDBurnExt ICDBurnExt;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IDVGetEnum_FWD_DEFINED__")
cpp_quote("#define __IDVGetEnum_FWD_DEFINED__")
cpp_quote("typedef struct IDVGetEnum IDVGetEnum;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IInsertItem_FWD_DEFINED__")
cpp_quote("#define __IInsertItem_FWD_DEFINED__")
cpp_quote("typedef struct IInsertItem IInsertItem;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IDeskBar_FWD_DEFINED__")
cpp_quote("#define __IDeskBar_FWD_DEFINED__")
cpp_quote("typedef struct IDeskBar IDeskBar;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IMenuBand_FWD_DEFINED__")
cpp_quote("#define __IMenuBand_FWD_DEFINED__")
cpp_quote("typedef struct IMenuBand IMenuBand;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFolderBandPriv_FWD_DEFINED__")
cpp_quote("#define __IFolderBandPriv_FWD_DEFINED__")
cpp_quote("typedef struct IFolderBandPriv IFolderBandPriv;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IBandSite_FWD_DEFINED__")
cpp_quote("#define __IBandSite_FWD_DEFINED__")
cpp_quote("typedef struct IBandSite IBandSite;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __INamespaceWalkCB_FWD_DEFINED__")
cpp_quote("#define __INamespaceWalkCB_FWD_DEFINED__")
cpp_quote("typedef struct INamespaceWalkCB INamespaceWalkCB;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __INamespaceWalk_FWD_DEFINED__")
cpp_quote("#define __INamespaceWalk_FWD_DEFINED__")
cpp_quote("typedef struct INamespaceWalk INamespaceWalk;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IRegTreeItem_FWD_DEFINED__")
cpp_quote("#define __IRegTreeItem_FWD_DEFINED__")
cpp_quote("typedef struct IRegTreeItem IRegTreeItem;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IMenuPopup_FWD_DEFINED__")
cpp_quote("#define __IMenuPopup_FWD_DEFINED__")
cpp_quote("typedef struct IMenuPopup IMenuPopup;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellItem2_FWD_DEFINED__")
cpp_quote("#define __IShellItem2_FWD_DEFINED__")
cpp_quote("typedef interface IShellItem2 IShellItem2;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IImageRecompress_FWD_DEFINED__")
cpp_quote("#define __IImageRecompress_FWD_DEFINED__")
cpp_quote("typedef struct IImageRecompress IImageRecompress;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IDefViewSafety_FWD_DEFINED__")
cpp_quote("#define __IDefViewSafety_FWD_DEFINED__")
cpp_quote("typedef struct IDefViewSafety IDefViewSafety;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IContextMenuSite_FWD_DEFINED__")
cpp_quote("#define __IContextMenuSite_FWD_DEFINED__")
cpp_quote("typedef struct IContextMenuSite IContextMenuSite;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IDelegateFolder_FWD_DEFINED__")
cpp_quote("#define __IDelegateFolder_FWD_DEFINED__")
cpp_quote("typedef struct IDelegateFolder IDelegateFolder;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IBrowserFrameOptions_FWD_DEFINED__")
cpp_quote("#define __IBrowserFrameOptions_FWD_DEFINED__")
cpp_quote("typedef struct IBrowserFrameOptions IBrowserFrameOptions;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __INewWindowManager_FWD_DEFINED__")
cpp_quote("#define __INewWindowManager_FWD_DEFINED__")
cpp_quote("typedef struct INewWindowManager INewWindowManager;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellMenuCallback_FWD_DEFINED__")
cpp_quote("#define __IShellMenuCallback_FWD_DEFINED__")
cpp_quote("typedef struct IShellMenuCallback IShellMenuCallback;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IAttachmentExecute_FWD_DEFINED__")
cpp_quote("#define __IAttachmentExecute_FWD_DEFINED__")
cpp_quote("typedef struct IAttachmentExecute IAttachmentExecute;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellMenu_FWD_DEFINED__")
cpp_quote("#define __IShellMenu_FWD_DEFINED__")
cpp_quote("typedef struct IShellMenu IShellMenu;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IApplicationAssociationRegistration_FWD_DEFINED__")
cpp_quote("#define __IApplicationAssociationRegistration_FWD_DEFINED__")
cpp_quote("typedef interface IApplicationAssociationRegistration IApplicationAssociationRegistration;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __ICustomDestinationList_FWD_DEFINED__")
cpp_quote("#define __ICustomDestinationList_FWD_DEFINED__")
cpp_quote("typedef interface ICustomDestinationList ICustomDestinationList;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __QueryCancelAutoPlay_FWD_DEFINED__")
cpp_quote("#define __QueryCancelAutoPlay_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class QueryCancelAutoPlay QueryCancelAutoPlay;")
cpp_quote("#else")
cpp_quote("typedef struct QueryCancelAutoPlay QueryCancelAutoPlay;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __DriveSizeCategorizer_FWD_DEFINED__")
cpp_quote("#define __DriveSizeCategorizer_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class DriveSizeCategorizer DriveSizeCategorizer;")
cpp_quote("#else")
cpp_quote("typedef struct DriveSizeCategorizer DriveSizeCategorizer;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __DriveTypeCategorizer_FWD_DEFINED__")
cpp_quote("#define __DriveTypeCategorizer_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class DriveTypeCategorizer DriveTypeCategorizer;")
cpp_quote("#else")
cpp_quote("typedef struct DriveTypeCategorizer DriveTypeCategorizer;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __FreeSpaceCategorizer_FWD_DEFINED__")
cpp_quote("#define __FreeSpaceCategorizer_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class FreeSpaceCategorizer FreeSpaceCategorizer;")
cpp_quote("#else")
cpp_quote("typedef struct FreeSpaceCategorizer FreeSpaceCategorizer;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __TimeCategorizer_FWD_DEFINED__")
cpp_quote("#define __TimeCategorizer_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class TimeCategorizer TimeCategorizer;")
cpp_quote("#else")
cpp_quote("typedef struct TimeCategorizer TimeCategorizer;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __SizeCategorizer_FWD_DEFINED__")
cpp_quote("#define __SizeCategorizer_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class SizeCategorizer SizeCategorizer;")
cpp_quote("#else")
cpp_quote("typedef struct SizeCategorizer SizeCategorizer;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __AlphabeticalCategorizer_FWD_DEFINED__")
cpp_quote("#define __AlphabeticalCategorizer_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class AlphabeticalCategorizer AlphabeticalCategorizer;")
cpp_quote("#else")
cpp_quote("typedef struct AlphabeticalCategorizer AlphabeticalCategorizer;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __MergedCategorizer_FWD_DEFINED__")
cpp_quote("#define __MergedCategorizer_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class MergedCategorizer MergedCategorizer;")
cpp_quote("#else")
cpp_quote("typedef struct MergedCategorizer MergedCategorizer;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __ImageProperties_FWD_DEFINED__")
cpp_quote("#define __ImageProperties_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class ImageProperties ImageProperties;")
cpp_quote("#else")
cpp_quote("typedef struct ImageProperties ImageProperties;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __PropertiesUI_FWD_DEFINED__")
cpp_quote("#define __PropertiesUI_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class PropertiesUI PropertiesUI;")
cpp_quote("#else")
cpp_quote("typedef struct PropertiesUI PropertiesUI;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __UserNotification_FWD_DEFINED__")
cpp_quote("#define __UserNotification_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class UserNotification UserNotification;")
cpp_quote("#else")
cpp_quote("typedef struct UserNotification UserNotification;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __UserEventTimerCallback_FWD_DEFINED__")
cpp_quote("#define __UserEventTimerCallback_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class UserEventTimerCallback UserEventTimerCallback;")
cpp_quote("#else")
cpp_quote("typedef struct UserEventTimerCallback UserEventTimerCallback;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __UserEventTimer_FWD_DEFINED__")
cpp_quote("#define __UserEventTimer_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class UserEventTimer UserEventTimer;")
cpp_quote("#else")
cpp_quote("typedef struct UserEventTimer UserEventTimer;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __NetCrawler_FWD_DEFINED__")
cpp_quote("#define __NetCrawler_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class NetCrawler NetCrawler;")
cpp_quote("#else")
cpp_quote("typedef struct NetCrawler NetCrawler;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __CDBurn_FWD_DEFINED__")
cpp_quote("#define __CDBurn_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class CDBurn CDBurn;")
cpp_quote("#else")
cpp_quote("typedef struct CDBurn CDBurn;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __TaskbarList_FWD_DEFINED__")
cpp_quote("#define __TaskbarList_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class TaskbarList TaskbarList;")
cpp_quote("#else")
cpp_quote("typedef struct TaskbarList TaskbarList;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __WebWizardHost_FWD_DEFINED__")
cpp_quote("#define __WebWizardHost_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class WebWizardHost WebWizardHost;")
cpp_quote("#else")
cpp_quote("typedef struct WebWizardHost WebWizardHost;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __PublishDropTarget_FWD_DEFINED__")
cpp_quote("#define __PublishDropTarget_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class PublishDropTarget PublishDropTarget;")
cpp_quote("#else")
cpp_quote("typedef struct PublishDropTarget PublishDropTarget;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __PublishingWizard_FWD_DEFINED__")
cpp_quote("#define __PublishingWizard_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class PublishingWizard PublishingWizard;")
cpp_quote("#else")
cpp_quote("typedef struct PublishingWizard PublishingWizard;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __InternetPrintOrdering_FWD_DEFINED__")
cpp_quote("#define __InternetPrintOrdering_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class InternetPrintOrdering InternetPrintOrdering;")
cpp_quote("#else")
cpp_quote("typedef struct InternetPrintOrdering InternetPrintOrdering;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __FolderViewHost_FWD_DEFINED__")
cpp_quote("#define __FolderViewHost_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class FolderViewHost FolderViewHost;")
cpp_quote("#else")
cpp_quote("typedef struct FolderViewHost FolderViewHost;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __NamespaceWalker_FWD_DEFINED__")
cpp_quote("#define __NamespaceWalker_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class NamespaceWalker NamespaceWalker;")
cpp_quote("#else")
cpp_quote("typedef struct NamespaceWalker NamespaceWalker;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __ImageRecompress_FWD_DEFINED__")
cpp_quote("#define __ImageRecompress_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class ImageRecompress ImageRecompress;")
cpp_quote("#else")
cpp_quote("typedef struct ImageRecompress ImageRecompress;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __TrayBandSiteService_FWD_DEFINED__")
cpp_quote("#define __TrayBandSiteService_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class TrayBandSiteService TrayBandSiteService;")
cpp_quote("#else")
cpp_quote("typedef struct TrayBandSiteService TrayBandSiteService;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __PassportWizard_FWD_DEFINED__")
cpp_quote("#define __PassportWizard_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class PassportWizard PassportWizard;")
cpp_quote("#else")
cpp_quote("typedef struct PassportWizard PassportWizard;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __AttachmentServices_FWD_DEFINED__")
cpp_quote("#define __AttachmentServices_FWD_DEFINED__")
cpp_quote("#ifdef __cplusplus")
cpp_quote("typedef class AttachmentServices AttachmentServices;")
cpp_quote("#else")
cpp_quote("typedef struct AttachmentServices AttachmentServices;")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFileDialogEvents_FWD_DEFINED__")
cpp_quote("#define __IFileDialogEvents_FWD_DEFINED__")
cpp_quote("typedef interface IFileDialogEvents IFileDialogEvents;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IEnumShellItems_FWD_DEFINED__")
cpp_quote("#define __IEnumShellItems_FWD_DEFINED__")
cpp_quote("typedef interface IEnumShellItems IEnumShellItems;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellItemArray_FWD_DEFINED__")
cpp_quote("#define __IShellItemArray_FWD_DEFINED__")
cpp_quote("typedef interface IShellItemArray IShellItemArray;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellItemFilter_FWD_DEFINED__")
cpp_quote("#define __IShellItemFilter_FWD_DEFINED__")
cpp_quote("typedef interface IShellItemFilter IShellItemFilter;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFileOperationProgressSink_FWD_DEFINED__")
cpp_quote("#define __IFileOperationProgressSink_FWD_DEFINED__")
cpp_quote("typedef interface IFileOperationProgressSink IFileOperationProgressSink;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFileDialog_FWD_DEFINED__")
cpp_quote("#define __IFileDialog_FWD_DEFINED__")
cpp_quote("typedef interface IFileDialog IFileDialog;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFileSaveDialog_FWD_DEFINED__")
cpp_quote("#define __IFileSaveDialog_FWD_DEFINED__")
cpp_quote("typedef interface IFileSaveDialog IFileSaveDialog;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFileOpenDialog_FWD_DEFINED__")
cpp_quote("#define __IFileOpenDialog_FWD_DEFINED__")
cpp_quote("typedef interface IFileOpenDialog IFileOpenDialog;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#include \"servprov.h\"")
cpp_quote("#include \"comcat.h\"")
cpp_quote("#include \"propidl.h\"")
cpp_quote("#include \"prsht.h\"")
cpp_quote("#include \"msxml.h\"")
cpp_quote("#include \"propsys.h\"")
cpp_quote("#include \"objectarray.h\"")
cpp_quote("")
cpp_quote("#ifndef _WINRESRC_")
cpp_quote("#ifndef _WIN32_IE")
cpp_quote("#define _WIN32_IE 0x0501")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0000_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0000_v0_0_s_ifspec;")
cpp_quote("")
cpp_quote("#ifndef __IPersistFolder_INTERFACE_DEFINED__")
cpp_quote("#define __IPersistFolder_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IPersistFolder;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IPersistFolder : public IPersist {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Initialize(LPCITEMIDLIST pidl) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IPersistFolderVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IPersistFolder *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IPersistFolder *This);")
cpp_quote("      ULONG (WINAPI *Release)(IPersistFolder *This);")
cpp_quote("      HRESULT (WINAPI *GetClassID)(IPersistFolder *This,CLSID *pClassID);")
cpp_quote("      HRESULT (WINAPI *Initialize)(IPersistFolder *This,LPCITEMIDLIST pidl);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IPersistFolderVtbl;")
cpp_quote("  struct IPersistFolder {")
cpp_quote("    CONST_VTBL struct IPersistFolderVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IPersistFolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IPersistFolder_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IPersistFolder_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IPersistFolder_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)")
cpp_quote("#define IPersistFolder_Initialize(This,pidl) (This)->lpVtbl->Initialize(This,pidl)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IPersistFolder_Initialize_Proxy(IPersistFolder *This,LPCITEMIDLIST pidl);")
cpp_quote("  void __RPC_STUB IPersistFolder_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("  typedef IPersistFolder *LPPERSISTFOLDER;")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0196_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0196_v0_0_s_ifspec;")
cpp_quote("#ifndef __IPersistFolder2_INTERFACE_DEFINED__")
cpp_quote("#define __IPersistFolder2_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IPersistFolder2;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IPersistFolder2 : public IPersistFolder {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetCurFolder(LPITEMIDLIST *ppidl) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IPersistFolder2Vtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IPersistFolder2 *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IPersistFolder2 *This);")
cpp_quote("      ULONG (WINAPI *Release)(IPersistFolder2 *This);")
cpp_quote("      HRESULT (WINAPI *GetClassID)(IPersistFolder2 *This,CLSID *pClassID);")
cpp_quote("      HRESULT (WINAPI *Initialize)(IPersistFolder2 *This,LPCITEMIDLIST pidl);")
cpp_quote("      HRESULT (WINAPI *GetCurFolder)(IPersistFolder2 *This,LPITEMIDLIST *ppidl);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IPersistFolder2Vtbl;")
cpp_quote("  struct IPersistFolder2 {")
cpp_quote("    CONST_VTBL struct IPersistFolder2Vtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IPersistFolder2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IPersistFolder2_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IPersistFolder2_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IPersistFolder2_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)")
cpp_quote("#define IPersistFolder2_Initialize(This,pidl) (This)->lpVtbl->Initialize(This,pidl)")
cpp_quote("#define IPersistFolder2_GetCurFolder(This,ppidl) (This)->lpVtbl->GetCurFolder(This,ppidl)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IPersistFolder2_GetCurFolder_Proxy(IPersistFolder2 *This,LPITEMIDLIST *ppidl);")
cpp_quote("  void __RPC_STUB IPersistFolder2_GetCurFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("  typedef IPersistFolder2 *LPPERSISTFOLDER2;")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0197_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0197_v0_0_s_ifspec;")
cpp_quote("")
cpp_quote("#ifndef __IPersistIDList_INTERFACE_DEFINED__")
cpp_quote("#define __IPersistIDList_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IPersistIDList;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IPersistIDList : public IPersist {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI SetIDList(LPCITEMIDLIST pidl) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetIDList(LPITEMIDLIST *ppidl) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IPersistIDListVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IPersistIDList *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IPersistIDList *This);")
cpp_quote("      ULONG (WINAPI *Release)(IPersistIDList *This);")
cpp_quote("      HRESULT (WINAPI *GetClassID)(IPersistIDList *This,CLSID *pClassID);")
cpp_quote("      HRESULT (WINAPI *SetIDList)(IPersistIDList *This,LPCITEMIDLIST pidl);")
cpp_quote("      HRESULT (WINAPI *GetIDList)(IPersistIDList *This,LPITEMIDLIST *ppidl);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IPersistIDListVtbl;")
cpp_quote("  struct IPersistIDList {")
cpp_quote("    CONST_VTBL struct IPersistIDListVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IPersistIDList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IPersistIDList_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IPersistIDList_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IPersistIDList_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)")
cpp_quote("#define IPersistIDList_SetIDList(This,pidl) (This)->lpVtbl->SetIDList(This,pidl)")
cpp_quote("#define IPersistIDList_GetIDList(This,ppidl) (This)->lpVtbl->GetIDList(This,ppidl)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IPersistIDList_SetIDList_Proxy(IPersistIDList *This,LPCITEMIDLIST pidl);")
cpp_quote("  void __RPC_STUB IPersistIDList_SetIDList_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IPersistIDList_GetIDList_Proxy(IPersistIDList *This,LPITEMIDLIST *ppidl);")
cpp_quote("  void __RPC_STUB IPersistIDList_GetIDList_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IEnumIDList_INTERFACE_DEFINED__")
cpp_quote("#define __IEnumIDList_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IEnumIDList;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IEnumIDList : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Next(ULONG celt,LPITEMIDLIST *rgelt,ULONG *pceltFetched) = 0;")
cpp_quote("    virtual HRESULT WINAPI Skip(ULONG celt) = 0;")
cpp_quote("    virtual HRESULT WINAPI Reset(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI Clone(IEnumIDList **ppenum) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IEnumIDListVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IEnumIDList *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IEnumIDList *This);")
cpp_quote("      ULONG (WINAPI *Release)(IEnumIDList *This);")
cpp_quote("      HRESULT (WINAPI *Next)(IEnumIDList *This,ULONG celt,LPITEMIDLIST *rgelt,ULONG *pceltFetched);")
cpp_quote("      HRESULT (WINAPI *Skip)(IEnumIDList *This,ULONG celt);")
cpp_quote("      HRESULT (WINAPI *Reset)(IEnumIDList *This);")
cpp_quote("      HRESULT (WINAPI *Clone)(IEnumIDList *This,IEnumIDList **ppenum);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IEnumIDListVtbl;")
cpp_quote("  struct IEnumIDList {")
cpp_quote("    CONST_VTBL struct IEnumIDListVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IEnumIDList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IEnumIDList_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IEnumIDList_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IEnumIDList_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)")
cpp_quote("#define IEnumIDList_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)")
cpp_quote("#define IEnumIDList_Reset(This) (This)->lpVtbl->Reset(This)")
cpp_quote("#define IEnumIDList_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IEnumIDList_Next_Proxy(IEnumIDList *This,ULONG celt,LPITEMIDLIST *rgelt,ULONG *pceltFetched);")
cpp_quote("  void __RPC_STUB IEnumIDList_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IEnumIDList_Skip_Proxy(IEnumIDList *This,ULONG celt);")
cpp_quote("  void __RPC_STUB IEnumIDList_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IEnumIDList_Reset_Proxy(IEnumIDList *This);")
cpp_quote("  void __RPC_STUB IEnumIDList_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IEnumIDList_Clone_Proxy(IEnumIDList *This,IEnumIDList **ppenum);")
cpp_quote("  void __RPC_STUB IEnumIDList_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  typedef IEnumIDList *LPENUMIDLIST;")
cpp_quote("")
cpp_quote("  enum _SHGDNF {")
cpp_quote("    SHGDN_NORMAL = 0x0000,SHGDN_INFOLDER = 0x0001,SHGDN_FOREDITING = 0x1000,SHGDN_FORADDRESSBAR = 0x4000,SHGDN_FORPARSING = 0x8000")
cpp_quote("  };")
cpp_quote("  typedef DWORD SHGDNF;")
cpp_quote("")
cpp_quote("  enum _SHCONTF {")
cpp_quote("    SHCONTF_FOLDERS = 0x0020,SHCONTF_NONFOLDERS = 0x0040,SHCONTF_INCLUDEHIDDEN = 0x0080,SHCONTF_INIT_ON_FIRST_NEXT = 0x0100,")
cpp_quote("    SHCONTF_NETPRINTERSRCH = 0x0200,SHCONTF_SHAREABLE = 0x0400,SHCONTF_STORAGE = 0x0800")
cpp_quote("  };")
cpp_quote("  typedef DWORD SHCONTF;")
cpp_quote("")
cpp_quote("#define SHCIDS_ALLFIELDS 0x80000000L")
cpp_quote("#define SHCIDS_CANONICALONLY 0x10000000L")
cpp_quote("#define SHCIDS_BITMASK 0xFFFF0000L")
cpp_quote("#define SHCIDS_COLUMNMASK 0x0000FFFFL")
cpp_quote("#define SFGAO_CANCOPY DROPEFFECT_COPY")
cpp_quote("#define SFGAO_CANMOVE DROPEFFECT_MOVE")
cpp_quote("#define SFGAO_CANLINK DROPEFFECT_LINK")
cpp_quote("#define SFGAO_STORAGE 0x00000008L")
cpp_quote("#define SFGAO_CANRENAME 0x00000010L")
cpp_quote("#define SFGAO_CANDELETE 0x00000020L")
cpp_quote("#define SFGAO_HASPROPSHEET 0x00000040L")
cpp_quote("#define SFGAO_DROPTARGET 0x00000100L")
cpp_quote("#define SFGAO_CAPABILITYMASK 0x00000177L")
cpp_quote("#define SFGAO_ENCRYPTED 0x00002000L")
cpp_quote("#define SFGAO_ISSLOW 0x00004000L")
cpp_quote("#define SFGAO_GHOSTED 0x00008000L")
cpp_quote("#define SFGAO_LINK 0x00010000L")
cpp_quote("#define SFGAO_SHARE 0x00020000L")
cpp_quote("#define SFGAO_READONLY 0x00040000L")
cpp_quote("#define SFGAO_HIDDEN 0x00080000L")
cpp_quote("#define SFGAO_DISPLAYATTRMASK 0x000FC000L")
cpp_quote("#define SFGAO_FILESYSANCESTOR 0x10000000L")
cpp_quote("#define SFGAO_FOLDER 0x20000000L")
cpp_quote("#define SFGAO_FILESYSTEM 0x40000000L")
cpp_quote("#define SFGAO_HASSUBFOLDER 0x80000000L")
cpp_quote("#define SFGAO_CONTENTSMASK 0x80000000L")
cpp_quote("#define SFGAO_VALIDATE 0x01000000L")
cpp_quote("#define SFGAO_REMOVABLE 0x02000000L")
cpp_quote("#define SFGAO_COMPRESSED 0x04000000L")
cpp_quote("#define SFGAO_BROWSABLE 0x08000000L")
cpp_quote("#define SFGAO_NONENUMERATED 0x00100000L")
cpp_quote("#define SFGAO_NEWCONTENT 0x00200000L")
cpp_quote("#define SFGAO_CANMONIKER 0x00400000L")
cpp_quote("#define SFGAO_HASSTORAGE 0x00400000L")
cpp_quote("#define SFGAO_STREAM 0x00400000L")
cpp_quote("#define SFGAO_STORAGEANCESTOR 0x00800000L")
cpp_quote("#define SFGAO_STORAGECAPMASK 0x70C50008L")

typedef ULONG SFGAOF;

cpp_quote("#define STR_SKIP_BINDING_CLSID L\"Skip Binding CLSID\"")
cpp_quote("#define STR_PARSE_PREFER_FOLDER_BROWSING L\"Parse Prefer Folder Browsing\"")
cpp_quote("#define STR_DONT_PARSE_RELATIVE L\"Don't Parse Relative\"")
cpp_quote("#define STR_PARSE_TRANSLATE_ALIASES L\"Parse Translate Aliases\"")
cpp_quote("#define STR_PARSE_SHELL_PROTOCOL_TO_FILE_OBJECTS L\"Parse Shell Protocol To File Objects\"")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0199_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0199_v0_0_s_ifspec;")
cpp_quote("#ifndef __IShellFolder_INTERFACE_DEFINED__")
cpp_quote("#define __IShellFolder_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IShellFolder;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IShellFolder : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI ParseDisplayName(HWND hwnd,LPBC pbc,LPOLESTR pszDisplayName,ULONG *pchEaten,LPITEMIDLIST *ppidl,ULONG *pdwAttributes) = 0;")
cpp_quote("    virtual HRESULT WINAPI EnumObjects(HWND hwnd,SHCONTF grfFlags,IEnumIDList **ppenumIDList) = 0;")
cpp_quote("    virtual HRESULT WINAPI BindToObject(LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv) = 0;")
cpp_quote("    virtual HRESULT WINAPI BindToStorage(LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv) = 0;")
cpp_quote("    virtual HRESULT WINAPI CompareIDs(LPARAM lParam,LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2) = 0;")
cpp_quote("    virtual HRESULT WINAPI CreateViewObject(HWND hwndOwner,REFIID riid,void **ppv) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetAttributesOf(UINT cidl,LPCITEMIDLIST *apidl,SFGAOF *rgfInOut) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetUIObjectOf(HWND hwndOwner,UINT cidl,LPCITEMIDLIST *apidl,REFIID riid,UINT *rgfReserved,void **ppv) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetDisplayNameOf(LPCITEMIDLIST pidl,SHGDNF uFlags,STRRET *pName) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetNameOf(HWND hwnd,LPCITEMIDLIST pidl,LPCOLESTR pszName,SHGDNF uFlags,LPITEMIDLIST *ppidlOut) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IShellFolderVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IShellFolder *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IShellFolder *This);")
cpp_quote("      ULONG (WINAPI *Release)(IShellFolder *This);")
cpp_quote("      HRESULT (WINAPI *ParseDisplayName)(IShellFolder *This,HWND hwnd,LPBC pbc,LPOLESTR pszDisplayName,ULONG *pchEaten,LPITEMIDLIST *ppidl,ULONG *pdwAttributes);")
cpp_quote("      HRESULT (WINAPI *EnumObjects)(IShellFolder *This,HWND hwnd,SHCONTF grfFlags,IEnumIDList **ppenumIDList);")
cpp_quote("      HRESULT (WINAPI *BindToObject)(IShellFolder *This,LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv);")
cpp_quote("      HRESULT (WINAPI *BindToStorage)(IShellFolder *This,LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv);")
cpp_quote("      HRESULT (WINAPI *CompareIDs)(IShellFolder *This,LPARAM lParam,LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2);")
cpp_quote("      HRESULT (WINAPI *CreateViewObject)(IShellFolder *This,HWND hwndOwner,REFIID riid,void **ppv);")
cpp_quote("      HRESULT (WINAPI *GetAttributesOf)(IShellFolder *This,UINT cidl,LPCITEMIDLIST *apidl,SFGAOF *rgfInOut);")
cpp_quote("      HRESULT (WINAPI *GetUIObjectOf)(IShellFolder *This,HWND hwndOwner,UINT cidl,LPCITEMIDLIST *apidl,REFIID riid,UINT *rgfReserved,void **ppv);")
cpp_quote("      HRESULT (WINAPI *GetDisplayNameOf)(IShellFolder *This,LPCITEMIDLIST pidl,SHGDNF uFlags,STRRET *pName);")
cpp_quote("      HRESULT (WINAPI *SetNameOf)(IShellFolder *This,HWND hwnd,LPCITEMIDLIST pidl,LPCOLESTR pszName,SHGDNF uFlags,LPITEMIDLIST *ppidlOut);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IShellFolderVtbl;")
cpp_quote("  struct IShellFolder {")
cpp_quote("    CONST_VTBL struct IShellFolderVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IShellFolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IShellFolder_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IShellFolder_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IShellFolder_ParseDisplayName(This,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes) (This)->lpVtbl->ParseDisplayName(This,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes)")
cpp_quote("#define IShellFolder_EnumObjects(This,hwnd,grfFlags,ppenumIDList) (This)->lpVtbl->EnumObjects(This,hwnd,grfFlags,ppenumIDList)")
cpp_quote("#define IShellFolder_BindToObject(This,pidl,pbc,riid,ppv) (This)->lpVtbl->BindToObject(This,pidl,pbc,riid,ppv)")
cpp_quote("#define IShellFolder_BindToStorage(This,pidl,pbc,riid,ppv) (This)->lpVtbl->BindToStorage(This,pidl,pbc,riid,ppv)")
cpp_quote("#define IShellFolder_CompareIDs(This,lParam,pidl1,pidl2) (This)->lpVtbl->CompareIDs(This,lParam,pidl1,pidl2)")
cpp_quote("#define IShellFolder_CreateViewObject(This,hwndOwner,riid,ppv) (This)->lpVtbl->CreateViewObject(This,hwndOwner,riid,ppv)")
cpp_quote("#define IShellFolder_GetAttributesOf(This,cidl,apidl,rgfInOut) (This)->lpVtbl->GetAttributesOf(This,cidl,apidl,rgfInOut)")
cpp_quote("#define IShellFolder_GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv) (This)->lpVtbl->GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv)")
cpp_quote("#define IShellFolder_GetDisplayNameOf(This,pidl,uFlags,pName) (This)->lpVtbl->GetDisplayNameOf(This,pidl,uFlags,pName)")
cpp_quote("#define IShellFolder_SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut) (This)->lpVtbl->SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IShellFolder_ParseDisplayName_Proxy(IShellFolder *This,HWND hwnd,LPBC pbc,LPOLESTR pszDisplayName,ULONG *pchEaten,LPITEMIDLIST *ppidl,ULONG *pdwAttributes);")
cpp_quote("  void __RPC_STUB IShellFolder_ParseDisplayName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder_EnumObjects_Proxy(IShellFolder *This,HWND hwnd,SHCONTF grfFlags,IEnumIDList **ppenumIDList);")
cpp_quote("  void __RPC_STUB IShellFolder_EnumObjects_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder_BindToObject_Proxy(IShellFolder *This,LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv);")
cpp_quote("  void __RPC_STUB IShellFolder_BindToObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder_BindToStorage_Proxy(IShellFolder *This,LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv);")
cpp_quote("  void __RPC_STUB IShellFolder_BindToStorage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder_CompareIDs_Proxy(IShellFolder *This,LPARAM lParam,LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2);")
cpp_quote("  void __RPC_STUB IShellFolder_CompareIDs_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder_CreateViewObject_Proxy(IShellFolder *This,HWND hwndOwner,REFIID riid,void **ppv);")
cpp_quote("  void __RPC_STUB IShellFolder_CreateViewObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder_GetAttributesOf_Proxy(IShellFolder *This,UINT cidl,LPCITEMIDLIST *apidl,SFGAOF *rgfInOut);")
cpp_quote("  void __RPC_STUB IShellFolder_GetAttributesOf_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder_GetUIObjectOf_Proxy(IShellFolder *This,HWND hwndOwner,UINT cidl,LPCITEMIDLIST *apidl,REFIID riid,UINT *rgfReserved,void **ppv);")
cpp_quote("  void __RPC_STUB IShellFolder_GetUIObjectOf_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder_GetDisplayNameOf_Proxy(IShellFolder *This,LPCITEMIDLIST pidl,SHGDNF uFlags,STRRET *pName);")
cpp_quote("  void __RPC_STUB IShellFolder_GetDisplayNameOf_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder_SetNameOf_Proxy(IShellFolder *This,HWND hwnd,LPCITEMIDLIST pidl,LPCOLESTR pszName,SHGDNF uFlags,LPITEMIDLIST *ppidlOut);")
cpp_quote("  void __RPC_STUB IShellFolder_SetNameOf_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  typedef IShellFolder *LPSHELLFOLDER;")
cpp_quote("")
cpp_quote("#if (_WIN32_IE >= 0x0500)")
cpp_quote("  typedef struct tagEXTRASEARCH {")
cpp_quote("    GUID guidSearch;")
cpp_quote("    WCHAR wszFriendlyName[80];")
cpp_quote("    WCHAR wszUrl[2084];")
cpp_quote("  } EXTRASEARCH;")
cpp_quote("  typedef struct tagEXTRASEARCH *LPEXTRASEARCH;")
cpp_quote("  typedef struct IEnumExtraSearch *LPENUMEXTRASEARCH;")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0200_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0200_v0_0_s_ifspec;")
cpp_quote("")
cpp_quote("#ifndef __IEnumExtraSearch_INTERFACE_DEFINED__")
cpp_quote("#define __IEnumExtraSearch_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IEnumExtraSearch;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IEnumExtraSearch : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Next(ULONG celt,EXTRASEARCH *rgelt,ULONG *pceltFetched) = 0;")
cpp_quote("    virtual HRESULT WINAPI Skip(ULONG celt) = 0;")
cpp_quote("    virtual HRESULT WINAPI Reset(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI Clone(IEnumExtraSearch **ppenum) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IEnumExtraSearchVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IEnumExtraSearch *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IEnumExtraSearch *This);")
cpp_quote("      ULONG (WINAPI *Release)(IEnumExtraSearch *This);")
cpp_quote("      HRESULT (WINAPI *Next)(IEnumExtraSearch *This,ULONG celt,EXTRASEARCH *rgelt,ULONG *pceltFetched);")
cpp_quote("      HRESULT (WINAPI *Skip)(IEnumExtraSearch *This,ULONG celt);")
cpp_quote("      HRESULT (WINAPI *Reset)(IEnumExtraSearch *This);")
cpp_quote("      HRESULT (WINAPI *Clone)(IEnumExtraSearch *This,IEnumExtraSearch **ppenum);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IEnumExtraSearchVtbl;")
cpp_quote("  struct IEnumExtraSearch {")
cpp_quote("    CONST_VTBL struct IEnumExtraSearchVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IEnumExtraSearch_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IEnumExtraSearch_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IEnumExtraSearch_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IEnumExtraSearch_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)")
cpp_quote("#define IEnumExtraSearch_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)")
cpp_quote("#define IEnumExtraSearch_Reset(This) (This)->lpVtbl->Reset(This)")
cpp_quote("#define IEnumExtraSearch_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IEnumExtraSearch_Next_Proxy(IEnumExtraSearch *This,ULONG celt,EXTRASEARCH *rgelt,ULONG *pceltFetched);")
cpp_quote("  void __RPC_STUB IEnumExtraSearch_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IEnumExtraSearch_Skip_Proxy(IEnumExtraSearch *This,ULONG celt);")
cpp_quote("  void __RPC_STUB IEnumExtraSearch_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IEnumExtraSearch_Reset_Proxy(IEnumExtraSearch *This);")
cpp_quote("  void __RPC_STUB IEnumExtraSearch_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IEnumExtraSearch_Clone_Proxy(IEnumExtraSearch *This,IEnumExtraSearch **ppenum);")
cpp_quote("  void __RPC_STUB IEnumExtraSearch_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0201_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0201_v0_0_s_ifspec;")
cpp_quote("#ifndef __IShellFolder2_INTERFACE_DEFINED__")
cpp_quote("#define __IShellFolder2_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IShellFolder2;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IShellFolder2 : public IShellFolder {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetDefaultSearchGUID(GUID *pguid) = 0;")
cpp_quote("    virtual HRESULT WINAPI EnumSearches(IEnumExtraSearch **ppenum) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetDefaultColumn(DWORD dwRes,ULONG *pSort,ULONG *pDisplay) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetDefaultColumnState(UINT iColumn,SHCOLSTATEF *pcsFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetDetailsEx(LPCITEMIDLIST pidl,const SHCOLUMNID *pscid,VARIANT *pv) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetDetailsOf(LPCITEMIDLIST pidl,UINT iColumn,SHELLDETAILS *psd) = 0;")
cpp_quote("    virtual HRESULT WINAPI MapColumnToSCID(UINT iColumn,SHCOLUMNID *pscid) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IShellFolder2Vtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IShellFolder2 *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IShellFolder2 *This);")
cpp_quote("      ULONG (WINAPI *Release)(IShellFolder2 *This);")
cpp_quote("      HRESULT (WINAPI *ParseDisplayName)(IShellFolder2 *This,HWND hwnd,LPBC pbc,LPOLESTR pszDisplayName,ULONG *pchEaten,LPITEMIDLIST *ppidl,ULONG *pdwAttributes);")
cpp_quote("      HRESULT (WINAPI *EnumObjects)(IShellFolder2 *This,HWND hwnd,SHCONTF grfFlags,IEnumIDList **ppenumIDList);")
cpp_quote("      HRESULT (WINAPI *BindToObject)(IShellFolder2 *This,LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv);")
cpp_quote("      HRESULT (WINAPI *BindToStorage)(IShellFolder2 *This,LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv);")
cpp_quote("      HRESULT (WINAPI *CompareIDs)(IShellFolder2 *This,LPARAM lParam,LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2);")
cpp_quote("      HRESULT (WINAPI *CreateViewObject)(IShellFolder2 *This,HWND hwndOwner,REFIID riid,void **ppv);")
cpp_quote("      HRESULT (WINAPI *GetAttributesOf)(IShellFolder2 *This,UINT cidl,LPCITEMIDLIST *apidl,SFGAOF *rgfInOut);")
cpp_quote("      HRESULT (WINAPI *GetUIObjectOf)(IShellFolder2 *This,HWND hwndOwner,UINT cidl,LPCITEMIDLIST *apidl,REFIID riid,UINT *rgfReserved,void **ppv);")
cpp_quote("      HRESULT (WINAPI *GetDisplayNameOf)(IShellFolder2 *This,LPCITEMIDLIST pidl,SHGDNF uFlags,STRRET *pName);")
cpp_quote("      HRESULT (WINAPI *SetNameOf)(IShellFolder2 *This,HWND hwnd,LPCITEMIDLIST pidl,LPCOLESTR pszName,SHGDNF uFlags,LPITEMIDLIST *ppidlOut);")
cpp_quote("      HRESULT (WINAPI *GetDefaultSearchGUID)(IShellFolder2 *This,GUID *pguid);")
cpp_quote("      HRESULT (WINAPI *EnumSearches)(IShellFolder2 *This,IEnumExtraSearch **ppenum);")
cpp_quote("      HRESULT (WINAPI *GetDefaultColumn)(IShellFolder2 *This,DWORD dwRes,ULONG *pSort,ULONG *pDisplay);")
cpp_quote("      HRESULT (WINAPI *GetDefaultColumnState)(IShellFolder2 *This,UINT iColumn,SHCOLSTATEF *pcsFlags);")
cpp_quote("      HRESULT (WINAPI *GetDetailsEx)(IShellFolder2 *This,LPCITEMIDLIST pidl,const SHCOLUMNID *pscid,VARIANT *pv);")
cpp_quote("      HRESULT (WINAPI *GetDetailsOf)(IShellFolder2 *This,LPCITEMIDLIST pidl,UINT iColumn,SHELLDETAILS *psd);")
cpp_quote("      HRESULT (WINAPI *MapColumnToSCID)(IShellFolder2 *This,UINT iColumn,SHCOLUMNID *pscid);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IShellFolder2Vtbl;")
cpp_quote("  struct IShellFolder2 {")
cpp_quote("    CONST_VTBL struct IShellFolder2Vtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IShellFolder2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IShellFolder2_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IShellFolder2_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IShellFolder2_ParseDisplayName(This,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes) (This)->lpVtbl->ParseDisplayName(This,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes)")
cpp_quote("#define IShellFolder2_EnumObjects(This,hwnd,grfFlags,ppenumIDList) (This)->lpVtbl->EnumObjects(This,hwnd,grfFlags,ppenumIDList)")
cpp_quote("#define IShellFolder2_BindToObject(This,pidl,pbc,riid,ppv) (This)->lpVtbl->BindToObject(This,pidl,pbc,riid,ppv)")
cpp_quote("#define IShellFolder2_BindToStorage(This,pidl,pbc,riid,ppv) (This)->lpVtbl->BindToStorage(This,pidl,pbc,riid,ppv)")
cpp_quote("#define IShellFolder2_CompareIDs(This,lParam,pidl1,pidl2) (This)->lpVtbl->CompareIDs(This,lParam,pidl1,pidl2)")
cpp_quote("#define IShellFolder2_CreateViewObject(This,hwndOwner,riid,ppv) (This)->lpVtbl->CreateViewObject(This,hwndOwner,riid,ppv)")
cpp_quote("#define IShellFolder2_GetAttributesOf(This,cidl,apidl,rgfInOut) (This)->lpVtbl->GetAttributesOf(This,cidl,apidl,rgfInOut)")
cpp_quote("#define IShellFolder2_GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv) (This)->lpVtbl->GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv)")
cpp_quote("#define IShellFolder2_GetDisplayNameOf(This,pidl,uFlags,pName) (This)->lpVtbl->GetDisplayNameOf(This,pidl,uFlags,pName)")
cpp_quote("#define IShellFolder2_SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut) (This)->lpVtbl->SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut)")
cpp_quote("#define IShellFolder2_GetDefaultSearchGUID(This,pguid) (This)->lpVtbl->GetDefaultSearchGUID(This,pguid)")
cpp_quote("#define IShellFolder2_EnumSearches(This,ppenum) (This)->lpVtbl->EnumSearches(This,ppenum)")
cpp_quote("#define IShellFolder2_GetDefaultColumn(This,dwRes,pSort,pDisplay) (This)->lpVtbl->GetDefaultColumn(This,dwRes,pSort,pDisplay)")
cpp_quote("#define IShellFolder2_GetDefaultColumnState(This,iColumn,pcsFlags) (This)->lpVtbl->GetDefaultColumnState(This,iColumn,pcsFlags)")
cpp_quote("#define IShellFolder2_GetDetailsEx(This,pidl,pscid,pv) (This)->lpVtbl->GetDetailsEx(This,pidl,pscid,pv)")
cpp_quote("#define IShellFolder2_GetDetailsOf(This,pidl,iColumn,psd) (This)->lpVtbl->GetDetailsOf(This,pidl,iColumn,psd)")
cpp_quote("#define IShellFolder2_MapColumnToSCID(This,iColumn,pscid) (This)->lpVtbl->MapColumnToSCID(This,iColumn,pscid)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IShellFolder2_GetDefaultSearchGUID_Proxy(IShellFolder2 *This,GUID *pguid);")
cpp_quote("  void __RPC_STUB IShellFolder2_GetDefaultSearchGUID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder2_EnumSearches_Proxy(IShellFolder2 *This,IEnumExtraSearch **ppenum);")
cpp_quote("  void __RPC_STUB IShellFolder2_EnumSearches_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder2_GetDefaultColumn_Proxy(IShellFolder2 *This,DWORD dwRes,ULONG *pSort,ULONG *pDisplay);")
cpp_quote("  void __RPC_STUB IShellFolder2_GetDefaultColumn_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder2_GetDefaultColumnState_Proxy(IShellFolder2 *This,UINT iColumn,SHCOLSTATEF *pcsFlags);")
cpp_quote("  void __RPC_STUB IShellFolder2_GetDefaultColumnState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder2_GetDetailsEx_Proxy(IShellFolder2 *This,LPCITEMIDLIST pidl,const SHCOLUMNID *pscid,VARIANT *pv);")
cpp_quote("  void __RPC_STUB IShellFolder2_GetDetailsEx_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder2_GetDetailsOf_Proxy(IShellFolder2 *This,LPCITEMIDLIST pidl,UINT iColumn,SHELLDETAILS *psd);")
cpp_quote("  void __RPC_STUB IShellFolder2_GetDetailsOf_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellFolder2_MapColumnToSCID_Proxy(IShellFolder2 *This,UINT iColumn,SHCOLUMNID *pscid);")
cpp_quote("  void __RPC_STUB IShellFolder2_MapColumnToSCID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  typedef char *LPVIEWSETTINGS;")
cpp_quote("")
cpp_quote("  typedef enum __MIDL___MIDL_itf_shobjidl_0202_0001 {")
cpp_quote("    FWF_AUTOARRANGE = 0x1,FWF_ABBREVIATEDNAMES = 0x2,FWF_SNAPTOGRID = 0x4,FWF_OWNERDATA = 0x8,FWF_BESTFITWINDOW = 0x10,FWF_DESKTOP = 0x20,")
cpp_quote("    FWF_SINGLESEL = 0x40,FWF_NOSUBFOLDERS = 0x80,FWF_TRANSPARENT = 0x100,FWF_NOCLIENTEDGE = 0x200,FWF_NOSCROLL = 0x400,FWF_ALIGNLEFT = 0x800,")
cpp_quote("    FWF_NOICONS = 0x1000,FWF_SHOWSELALWAYS = 0x2000,FWF_NOVISIBLE = 0x4000,FWF_SINGLECLICKACTIVATE = 0x8000,FWF_NOWEBVIEW = 0x10000,")
cpp_quote("    FWF_HIDEFILENAMES = 0x20000,FWF_CHECKSELECT = 0x40000")
cpp_quote("  } FOLDERFLAGS;")
cpp_quote("")
cpp_quote("  typedef enum __MIDL___MIDL_itf_shobjidl_0202_0002 {")
cpp_quote("    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_LAST = 7")
cpp_quote("  } FOLDERVIEWMODE;")
cpp_quote("")
cpp_quote("  typedef struct __MIDL___MIDL_itf_shobjidl_0202_0003 {")
cpp_quote("    UINT ViewMode;")
cpp_quote("    UINT fFlags;")
cpp_quote("  } FOLDERSETTINGS;")
cpp_quote("")
cpp_quote("  typedef FOLDERSETTINGS *LPFOLDERSETTINGS;")
cpp_quote("  typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;")
cpp_quote("  typedef FOLDERSETTINGS *PFOLDERSETTINGS;")
cpp_quote("")
cpp_quote("#define SVSI_DESELECT 0x00000000")
cpp_quote("#define SVSI_SELECT 0x00000001")
cpp_quote("#define SVSI_EDIT 0x00000003")
cpp_quote("#define SVSI_DESELECTOTHERS 0x00000004")
cpp_quote("#define SVSI_ENSUREVISIBLE 0x00000008")
cpp_quote("#define SVSI_FOCUSED 0x00000010")
cpp_quote("#define SVSI_TRANSLATEPT 0x00000020")
cpp_quote("#define SVSI_SELECTIONMARK 0x00000040")
cpp_quote("#define SVSI_POSITIONITEM 0x00000080")
cpp_quote("#define SVSI_CHECK 0x00000100")
cpp_quote("#define SVSI_NOSTATECHANGE 0x80000000")
cpp_quote("  typedef UINT SVSIF;")
cpp_quote("")
cpp_quote("  typedef enum __MIDL___MIDL_itf_shobjidl_0202_0004 {")
cpp_quote("    SVGIO_BACKGROUND = 0,SVGIO_SELECTION = 0x1,SVGIO_ALLVIEW = 0x2,SVGIO_CHECKED = 0x3,SVGIO_TYPE_MASK = 0xf,SVGIO_FLAG_VIEWORDER = 0x80000000")
cpp_quote("  } SVGIO;")
cpp_quote("")
cpp_quote("  typedef enum __MIDL___MIDL_itf_shobjidl_0202_0005 {")
cpp_quote("    SVUIA_DEACTIVATE = 0,SVUIA_ACTIVATE_NOFOCUS = 1,SVUIA_ACTIVATE_FOCUS = 2,SVUIA_INPLACEACTIVATE = 3")
cpp_quote("  } SVUIA_STATUS;")
cpp_quote("")
cpp_quote("#ifdef _FIX_ENABLEMODELESS_CONFLICT")
cpp_quote("#define EnableModeless EnableModelessSV")
cpp_quote("#endif")
cpp_quote("#ifdef _NEVER_")
cpp_quote("  typedef LPARAM LPFNSVADDPROPSHEETPAGE;")
cpp_quote("#else")
cpp_quote("#include <prsht.h>")
cpp_quote("  typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0202_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0202_v0_0_s_ifspec;")
cpp_quote("#ifndef __IShellView_INTERFACE_DEFINED__")
cpp_quote("#define __IShellView_INTERFACE_DEFINED__")
cpp_quote("  typedef IShellView *LPSHELLVIEW;")
cpp_quote("")
cpp_quote("  EXTERN_C const IID IID_IShellView;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IShellView : public IOleWindow {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI TranslateAccelerator(MSG *pmsg) = 0;")
cpp_quote("    virtual HRESULT WINAPI EnableModeless(WINBOOL fEnable) = 0;")
cpp_quote("    virtual HRESULT WINAPI UIActivate(UINT uState) = 0;")
cpp_quote("    virtual HRESULT WINAPI Refresh(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI CreateViewWindow(IShellView *psvPrevious,LPCFOLDERSETTINGS pfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd) = 0;")
cpp_quote("    virtual HRESULT WINAPI DestroyViewWindow(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetCurrentInfo(LPFOLDERSETTINGS pfs) = 0;")
cpp_quote("    virtual HRESULT WINAPI AddPropertySheetPages(DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam) = 0;")
cpp_quote("    virtual HRESULT WINAPI SaveViewState(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI SelectItem(LPCITEMIDLIST pidlItem,SVSIF uFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetItemObject(UINT uItem,REFIID riid,void **ppv) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IShellViewVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IShellView *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IShellView *This);")
cpp_quote("      ULONG (WINAPI *Release)(IShellView *This);")
cpp_quote("      HRESULT (WINAPI *GetWindow)(IShellView *This,HWND *phwnd);")
cpp_quote("      HRESULT (WINAPI *ContextSensitiveHelp)(IShellView *This,WINBOOL fEnterMode);")
cpp_quote("      HRESULT (WINAPI *TranslateAccelerator)(IShellView *This,MSG *pmsg);")
cpp_quote("      HRESULT (WINAPI *EnableModeless)(IShellView *This,WINBOOL fEnable);")
cpp_quote("      HRESULT (WINAPI *UIActivate)(IShellView *This,UINT uState);")
cpp_quote("      HRESULT (WINAPI *Refresh)(IShellView *This);")
cpp_quote("      HRESULT (WINAPI *CreateViewWindow)(IShellView *This,IShellView *psvPrevious,LPCFOLDERSETTINGS pfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd);")
cpp_quote("      HRESULT (WINAPI *DestroyViewWindow)(IShellView *This);")
cpp_quote("      HRESULT (WINAPI *GetCurrentInfo)(IShellView *This,LPFOLDERSETTINGS pfs);")
cpp_quote("      HRESULT (WINAPI *AddPropertySheetPages)(IShellView *This,DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam);")
cpp_quote("      HRESULT (WINAPI *SaveViewState)(IShellView *This);")
cpp_quote("      HRESULT (WINAPI *SelectItem)(IShellView *This,LPCITEMIDLIST pidlItem,SVSIF uFlags);")
cpp_quote("      HRESULT (WINAPI *GetItemObject)(IShellView *This,UINT uItem,REFIID riid,void **ppv);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IShellViewVtbl;")
cpp_quote("  struct IShellView {")
cpp_quote("    CONST_VTBL struct IShellViewVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IShellView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IShellView_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IShellView_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IShellView_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)")
cpp_quote("#define IShellView_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)")
cpp_quote("#define IShellView_TranslateAccelerator(This,pmsg) (This)->lpVtbl->TranslateAccelerator(This,pmsg)")
cpp_quote("#define IShellView_EnableModeless(This,fEnable) (This)->lpVtbl->EnableModeless(This,fEnable)")
cpp_quote("#define IShellView_UIActivate(This,uState) (This)->lpVtbl->UIActivate(This,uState)")
cpp_quote("#define IShellView_Refresh(This) (This)->lpVtbl->Refresh(This)")
cpp_quote("#define IShellView_CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd) (This)->lpVtbl->CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd)")
cpp_quote("#define IShellView_DestroyViewWindow(This) (This)->lpVtbl->DestroyViewWindow(This)")
cpp_quote("#define IShellView_GetCurrentInfo(This,pfs) (This)->lpVtbl->GetCurrentInfo(This,pfs)")
cpp_quote("#define IShellView_AddPropertySheetPages(This,dwReserved,pfn,lparam) (This)->lpVtbl->AddPropertySheetPages(This,dwReserved,pfn,lparam)")
cpp_quote("#define IShellView_SaveViewState(This) (This)->lpVtbl->SaveViewState(This)")
cpp_quote("#define IShellView_SelectItem(This,pidlItem,uFlags) (This)->lpVtbl->SelectItem(This,pidlItem,uFlags)")
cpp_quote("#define IShellView_GetItemObject(This,uItem,riid,ppv) (This)->lpVtbl->GetItemObject(This,uItem,riid,ppv)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IShellView_TranslateAccelerator_Proxy(IShellView *This,MSG *pmsg);")
cpp_quote("  void __RPC_STUB IShellView_TranslateAccelerator_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellView_EnableModeless_Proxy(IShellView *This,WINBOOL fEnable);")
cpp_quote("  void __RPC_STUB IShellView_EnableModeless_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellView_UIActivate_Proxy(IShellView *This,UINT uState);")
cpp_quote("  void __RPC_STUB IShellView_UIActivate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellView_Refresh_Proxy(IShellView *This);")
cpp_quote("  void __RPC_STUB IShellView_Refresh_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellView_CreateViewWindow_Proxy(IShellView *This,IShellView *psvPrevious,LPCFOLDERSETTINGS pfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd);")
cpp_quote("  void __RPC_STUB IShellView_CreateViewWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellView_DestroyViewWindow_Proxy(IShellView *This);")
cpp_quote("  void __RPC_STUB IShellView_DestroyViewWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellView_GetCurrentInfo_Proxy(IShellView *This,LPFOLDERSETTINGS pfs);")
cpp_quote("  void __RPC_STUB IShellView_GetCurrentInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellView_AddPropertySheetPages_Proxy(IShellView *This,DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam);")
cpp_quote("  void __RPC_STUB IShellView_AddPropertySheetPages_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellView_SaveViewState_Proxy(IShellView *This);")
cpp_quote("  void __RPC_STUB IShellView_SaveViewState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellView_SelectItem_Proxy(IShellView *This,LPCITEMIDLIST pidlItem,SVSIF uFlags);")
cpp_quote("  void __RPC_STUB IShellView_SelectItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellView_GetItemObject_Proxy(IShellView *This,UINT uItem,REFIID riid,void **ppv);")
cpp_quote("  void __RPC_STUB IShellView_GetItemObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellView2_INTERFACE_DEFINED__")
cpp_quote("#define __IShellView2_INTERFACE_DEFINED__")
cpp_quote("  typedef GUID SHELLVIEWID;")
cpp_quote("")
cpp_quote("#define SV2GV_CURRENTVIEW ((UINT)-1)")
cpp_quote("#define SV2GV_DEFAULTVIEW ((UINT)-2)")
cpp_quote("#include <pshpack8.h>")
cpp_quote("  typedef struct _SV2CVW2_PARAMS {")
cpp_quote("    DWORD cbSize;")
cpp_quote("    IShellView *psvPrev;")
cpp_quote("    LPCFOLDERSETTINGS pfs;")
cpp_quote("    IShellBrowser *psbOwner;")
cpp_quote("    RECT *prcView;")
cpp_quote("    const SHELLVIEWID *pvid;")
cpp_quote("    HWND hwndView;")
cpp_quote("  } SV2CVW2_PARAMS;")
cpp_quote("")
cpp_quote("  typedef struct _SV2CVW2_PARAMS *LPSV2CVW2_PARAMS;")
cpp_quote("")
cpp_quote("#include <poppack.h>")
cpp_quote("")
cpp_quote("  EXTERN_C const IID IID_IShellView2;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IShellView2 : public IShellView {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetView(SHELLVIEWID *pvid,ULONG uView) = 0;")
cpp_quote("    virtual HRESULT WINAPI CreateViewWindow2(LPSV2CVW2_PARAMS lpParams) = 0;")
cpp_quote("    virtual HRESULT WINAPI HandleRename(LPCITEMIDLIST pidlNew) = 0;")
cpp_quote("    virtual HRESULT WINAPI SelectAndPositionItem(LPCITEMIDLIST pidlItem,UINT uFlags,POINT *ppt) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IShellView2Vtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IShellView2 *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IShellView2 *This);")
cpp_quote("      ULONG (WINAPI *Release)(IShellView2 *This);")
cpp_quote("      HRESULT (WINAPI *GetWindow)(IShellView2 *This,HWND *phwnd);")
cpp_quote("      HRESULT (WINAPI *ContextSensitiveHelp)(IShellView2 *This,WINBOOL fEnterMode);")
cpp_quote("      HRESULT (WINAPI *TranslateAccelerator)(IShellView2 *This,MSG *pmsg);")
cpp_quote("      HRESULT (WINAPI *EnableModeless)(IShellView2 *This,WINBOOL fEnable);")
cpp_quote("      HRESULT (WINAPI *UIActivate)(IShellView2 *This,UINT uState);")
cpp_quote("      HRESULT (WINAPI *Refresh)(IShellView2 *This);")
cpp_quote("      HRESULT (WINAPI *CreateViewWindow)(IShellView2 *This,IShellView *psvPrevious,LPCFOLDERSETTINGS pfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd);")
cpp_quote("      HRESULT (WINAPI *DestroyViewWindow)(IShellView2 *This);")
cpp_quote("      HRESULT (WINAPI *GetCurrentInfo)(IShellView2 *This,LPFOLDERSETTINGS pfs);")
cpp_quote("      HRESULT (WINAPI *AddPropertySheetPages)(IShellView2 *This,DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam);")
cpp_quote("      HRESULT (WINAPI *SaveViewState)(IShellView2 *This);")
cpp_quote("      HRESULT (WINAPI *SelectItem)(IShellView2 *This,LPCITEMIDLIST pidlItem,SVSIF uFlags);")
cpp_quote("      HRESULT (WINAPI *GetItemObject)(IShellView2 *This,UINT uItem,REFIID riid,void **ppv);")
cpp_quote("      HRESULT (WINAPI *GetView)(IShellView2 *This,SHELLVIEWID *pvid,ULONG uView);")
cpp_quote("      HRESULT (WINAPI *CreateViewWindow2)(IShellView2 *This,LPSV2CVW2_PARAMS lpParams);")
cpp_quote("      HRESULT (WINAPI *HandleRename)(IShellView2 *This,LPCITEMIDLIST pidlNew);")
cpp_quote("      HRESULT (WINAPI *SelectAndPositionItem)(IShellView2 *This,LPCITEMIDLIST pidlItem,UINT uFlags,POINT *ppt);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IShellView2Vtbl;")
cpp_quote("  struct IShellView2 {")
cpp_quote("    CONST_VTBL struct IShellView2Vtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IShellView2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IShellView2_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IShellView2_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IShellView2_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)")
cpp_quote("#define IShellView2_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)")
cpp_quote("#define IShellView2_TranslateAccelerator(This,pmsg) (This)->lpVtbl->TranslateAccelerator(This,pmsg)")
cpp_quote("#define IShellView2_EnableModeless(This,fEnable) (This)->lpVtbl->EnableModeless(This,fEnable)")
cpp_quote("#define IShellView2_UIActivate(This,uState) (This)->lpVtbl->UIActivate(This,uState)")
cpp_quote("#define IShellView2_Refresh(This) (This)->lpVtbl->Refresh(This)")
cpp_quote("#define IShellView2_CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd) (This)->lpVtbl->CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd)")
cpp_quote("#define IShellView2_DestroyViewWindow(This) (This)->lpVtbl->DestroyViewWindow(This)")
cpp_quote("#define IShellView2_GetCurrentInfo(This,pfs) (This)->lpVtbl->GetCurrentInfo(This,pfs)")
cpp_quote("#define IShellView2_AddPropertySheetPages(This,dwReserved,pfn,lparam) (This)->lpVtbl->AddPropertySheetPages(This,dwReserved,pfn,lparam)")
cpp_quote("#define IShellView2_SaveViewState(This) (This)->lpVtbl->SaveViewState(This)")
cpp_quote("#define IShellView2_SelectItem(This,pidlItem,uFlags) (This)->lpVtbl->SelectItem(This,pidlItem,uFlags)")
cpp_quote("#define IShellView2_GetItemObject(This,uItem,riid,ppv) (This)->lpVtbl->GetItemObject(This,uItem,riid,ppv)")
cpp_quote("#define IShellView2_GetView(This,pvid,uView) (This)->lpVtbl->GetView(This,pvid,uView)")
cpp_quote("#define IShellView2_CreateViewWindow2(This,lpParams) (This)->lpVtbl->CreateViewWindow2(This,lpParams)")
cpp_quote("#define IShellView2_HandleRename(This,pidlNew) (This)->lpVtbl->HandleRename(This,pidlNew)")
cpp_quote("#define IShellView2_SelectAndPositionItem(This,pidlItem,uFlags,ppt) (This)->lpVtbl->SelectAndPositionItem(This,pidlItem,uFlags,ppt)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IShellView2_GetView_Proxy(IShellView2 *This,SHELLVIEWID *pvid,ULONG uView);")
cpp_quote("  void __RPC_STUB IShellView2_GetView_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellView2_CreateViewWindow2_Proxy(IShellView2 *This,LPSV2CVW2_PARAMS lpParams);")
cpp_quote("  void __RPC_STUB IShellView2_CreateViewWindow2_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellView2_HandleRename_Proxy(IShellView2 *This,LPCITEMIDLIST pidlNew);")
cpp_quote("  void __RPC_STUB IShellView2_HandleRename_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellView2_SelectAndPositionItem_Proxy(IShellView2 *This,LPCITEMIDLIST pidlItem,UINT uFlags,POINT *ppt);")
cpp_quote("  void __RPC_STUB IShellView2_SelectAndPositionItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFolderView_INTERFACE_DEFINED__")
cpp_quote("#define __IFolderView_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IFolderView;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IFolderView : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetCurrentViewMode(UINT *pViewMode) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetCurrentViewMode(UINT ViewMode) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetFolder(REFIID riid,void **ppv) = 0;")
cpp_quote("    virtual HRESULT WINAPI Item(int iItemIndex,LPITEMIDLIST *ppidl) = 0;")
cpp_quote("    virtual HRESULT WINAPI ItemCount(UINT uFlags,int *pcItems) = 0;")
cpp_quote("    virtual HRESULT WINAPI Items(UINT uFlags,REFIID riid,void **ppv) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetSelectionMarkedItem(int *piItem) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetFocusedItem(int *piItem) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetItemPosition(LPCITEMIDLIST pidl,POINT *ppt) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetSpacing(POINT *ppt) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetDefaultSpacing(POINT *ppt) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetAutoArrange(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI SelectItem(int iItem,DWORD dwFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI SelectAndPositionItems(UINT cidl,LPCITEMIDLIST *apidl,POINT *apt,DWORD dwFlags) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IFolderViewVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IFolderView *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IFolderView *This);")
cpp_quote("      ULONG (WINAPI *Release)(IFolderView *This);")
cpp_quote("      HRESULT (WINAPI *GetCurrentViewMode)(IFolderView *This,UINT *pViewMode);")
cpp_quote("      HRESULT (WINAPI *SetCurrentViewMode)(IFolderView *This,UINT ViewMode);")
cpp_quote("      HRESULT (WINAPI *GetFolder)(IFolderView *This,REFIID riid,void **ppv);")
cpp_quote("      HRESULT (WINAPI *Item)(IFolderView *This,int iItemIndex,LPITEMIDLIST *ppidl);")
cpp_quote("      HRESULT (WINAPI *ItemCount)(IFolderView *This,UINT uFlags,int *pcItems);")
cpp_quote("      HRESULT (WINAPI *Items)(IFolderView *This,UINT uFlags,REFIID riid,void **ppv);")
cpp_quote("      HRESULT (WINAPI *GetSelectionMarkedItem)(IFolderView *This,int *piItem);")
cpp_quote("      HRESULT (WINAPI *GetFocusedItem)(IFolderView *This,int *piItem);")
cpp_quote("      HRESULT (WINAPI *GetItemPosition)(IFolderView *This,LPCITEMIDLIST pidl,POINT *ppt);")
cpp_quote("      HRESULT (WINAPI *GetSpacing)(IFolderView *This,POINT *ppt);")
cpp_quote("      HRESULT (WINAPI *GetDefaultSpacing)(IFolderView *This,POINT *ppt);")
cpp_quote("      HRESULT (WINAPI *GetAutoArrange)(IFolderView *This);")
cpp_quote("      HRESULT (WINAPI *SelectItem)(IFolderView *This,int iItem,DWORD dwFlags);")
cpp_quote("      HRESULT (WINAPI *SelectAndPositionItems)(IFolderView *This,UINT cidl,LPCITEMIDLIST *apidl,POINT *apt,DWORD dwFlags);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IFolderViewVtbl;")
cpp_quote("  struct IFolderView {")
cpp_quote("    CONST_VTBL struct IFolderViewVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IFolderView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IFolderView_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IFolderView_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IFolderView_GetCurrentViewMode(This,pViewMode) (This)->lpVtbl->GetCurrentViewMode(This,pViewMode)")
cpp_quote("#define IFolderView_SetCurrentViewMode(This,ViewMode) (This)->lpVtbl->SetCurrentViewMode(This,ViewMode)")
cpp_quote("#define IFolderView_GetFolder(This,riid,ppv) (This)->lpVtbl->GetFolder(This,riid,ppv)")
cpp_quote("#define IFolderView_Item(This,iItemIndex,ppidl) (This)->lpVtbl->Item(This,iItemIndex,ppidl)")
cpp_quote("#define IFolderView_ItemCount(This,uFlags,pcItems) (This)->lpVtbl->ItemCount(This,uFlags,pcItems)")
cpp_quote("#define IFolderView_Items(This,uFlags,riid,ppv) (This)->lpVtbl->Items(This,uFlags,riid,ppv)")
cpp_quote("#define IFolderView_GetSelectionMarkedItem(This,piItem) (This)->lpVtbl->GetSelectionMarkedItem(This,piItem)")
cpp_quote("#define IFolderView_GetFocusedItem(This,piItem) (This)->lpVtbl->GetFocusedItem(This,piItem)")
cpp_quote("#define IFolderView_GetItemPosition(This,pidl,ppt) (This)->lpVtbl->GetItemPosition(This,pidl,ppt)")
cpp_quote("#define IFolderView_GetSpacing(This,ppt) (This)->lpVtbl->GetSpacing(This,ppt)")
cpp_quote("#define IFolderView_GetDefaultSpacing(This,ppt) (This)->lpVtbl->GetDefaultSpacing(This,ppt)")
cpp_quote("#define IFolderView_GetAutoArrange(This) (This)->lpVtbl->GetAutoArrange(This)")
cpp_quote("#define IFolderView_SelectItem(This,iItem,dwFlags) (This)->lpVtbl->SelectItem(This,iItem,dwFlags)")
cpp_quote("#define IFolderView_SelectAndPositionItems(This,cidl,apidl,apt,dwFlags) (This)->lpVtbl->SelectAndPositionItems(This,cidl,apidl,apt,dwFlags)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IFolderView_GetCurrentViewMode_Proxy(IFolderView *This,UINT *pViewMode);")
cpp_quote("  void __RPC_STUB IFolderView_GetCurrentViewMode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderView_SetCurrentViewMode_Proxy(IFolderView *This,UINT ViewMode);")
cpp_quote("  void __RPC_STUB IFolderView_SetCurrentViewMode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderView_GetFolder_Proxy(IFolderView *This,REFIID riid,void **ppv);")
cpp_quote("  void __RPC_STUB IFolderView_GetFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderView_Item_Proxy(IFolderView *This,int iItemIndex,LPITEMIDLIST *ppidl);")
cpp_quote("  void __RPC_STUB IFolderView_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderView_ItemCount_Proxy(IFolderView *This,UINT uFlags,int *pcItems);")
cpp_quote("  void __RPC_STUB IFolderView_ItemCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderView_Items_Proxy(IFolderView *This,UINT uFlags,REFIID riid,void **ppv);")
cpp_quote("  void __RPC_STUB IFolderView_Items_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderView_GetSelectionMarkedItem_Proxy(IFolderView *This,int *piItem);")
cpp_quote("  void __RPC_STUB IFolderView_GetSelectionMarkedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderView_GetFocusedItem_Proxy(IFolderView *This,int *piItem);")
cpp_quote("  void __RPC_STUB IFolderView_GetFocusedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderView_GetItemPosition_Proxy(IFolderView *This,LPCITEMIDLIST pidl,POINT *ppt);")
cpp_quote("  void __RPC_STUB IFolderView_GetItemPosition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderView_GetSpacing_Proxy(IFolderView *This,POINT *ppt);")
cpp_quote("  void __RPC_STUB IFolderView_GetSpacing_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderView_GetDefaultSpacing_Proxy(IFolderView *This,POINT *ppt);")
cpp_quote("  void __RPC_STUB IFolderView_GetDefaultSpacing_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderView_GetAutoArrange_Proxy(IFolderView *This);")
cpp_quote("  void __RPC_STUB IFolderView_GetAutoArrange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderView_SelectItem_Proxy(IFolderView *This,int iItem,DWORD dwFlags);")
cpp_quote("  void __RPC_STUB IFolderView_SelectItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderView_SelectAndPositionItems_Proxy(IFolderView *This,UINT cidl,LPCITEMIDLIST *apidl,POINT *apt,DWORD dwFlags);")
cpp_quote("  void __RPC_STUB IFolderView_SelectAndPositionItems_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define SID_SFolderView IID_IFolderView")
cpp_quote("#ifdef _FIX_ENABLEMODELESS_CONFLICT")
cpp_quote("#undef EnableModeless")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0205_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0205_v0_0_s_ifspec;")
cpp_quote("#ifndef __IFolderFilterSite_INTERFACE_DEFINED__")
cpp_quote("#define __IFolderFilterSite_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IFolderFilterSite;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IFolderFilterSite : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI SetFilter(IUnknown *punk) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IFolderFilterSiteVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IFolderFilterSite *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IFolderFilterSite *This);")
cpp_quote("      ULONG (WINAPI *Release)(IFolderFilterSite *This);")
cpp_quote("      HRESULT (WINAPI *SetFilter)(IFolderFilterSite *This,IUnknown *punk);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IFolderFilterSiteVtbl;")
cpp_quote("  struct IFolderFilterSite {")
cpp_quote("    CONST_VTBL struct IFolderFilterSiteVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IFolderFilterSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IFolderFilterSite_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IFolderFilterSite_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IFolderFilterSite_SetFilter(This,punk) (This)->lpVtbl->SetFilter(This,punk)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IFolderFilterSite_SetFilter_Proxy(IFolderFilterSite *This,IUnknown *punk);")
cpp_quote("  void __RPC_STUB IFolderFilterSite_SetFilter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFolderFilter_INTERFACE_DEFINED__")
cpp_quote("#define __IFolderFilter_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IFolderFilter;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IFolderFilter : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI ShouldShow(IShellFolder *psf,LPCITEMIDLIST pidlFolder,LPCITEMIDLIST pidlItem) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetEnumFlags(IShellFolder *psf,LPCITEMIDLIST pidlFolder,HWND *phwnd,DWORD *pgrfFlags) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IFolderFilterVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IFolderFilter *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IFolderFilter *This);")
cpp_quote("      ULONG (WINAPI *Release)(IFolderFilter *This);")
cpp_quote("      HRESULT (WINAPI *ShouldShow)(IFolderFilter *This,IShellFolder *psf,LPCITEMIDLIST pidlFolder,LPCITEMIDLIST pidlItem);")
cpp_quote("      HRESULT (WINAPI *GetEnumFlags)(IFolderFilter *This,IShellFolder *psf,LPCITEMIDLIST pidlFolder,HWND *phwnd,DWORD *pgrfFlags);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IFolderFilterVtbl;")
cpp_quote("  struct IFolderFilter {")
cpp_quote("    CONST_VTBL struct IFolderFilterVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IFolderFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IFolderFilter_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IFolderFilter_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IFolderFilter_ShouldShow(This,psf,pidlFolder,pidlItem) (This)->lpVtbl->ShouldShow(This,psf,pidlFolder,pidlItem)")
cpp_quote("#define IFolderFilter_GetEnumFlags(This,psf,pidlFolder,phwnd,pgrfFlags) (This)->lpVtbl->GetEnumFlags(This,psf,pidlFolder,phwnd,pgrfFlags)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IFolderFilter_ShouldShow_Proxy(IFolderFilter *This,IShellFolder *psf,LPCITEMIDLIST pidlFolder,LPCITEMIDLIST pidlItem);")
cpp_quote("  void __RPC_STUB IFolderFilter_ShouldShow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderFilter_GetEnumFlags_Proxy(IFolderFilter *This,IShellFolder *psf,LPCITEMIDLIST pidlFolder,HWND *phwnd,DWORD *pgrfFlags);")
cpp_quote("  void __RPC_STUB IFolderFilter_GetEnumFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define SBSP_DEFBROWSER 0x0000")
cpp_quote("#define SBSP_SAMEBROWSER 0x0001")
cpp_quote("#define SBSP_NEWBROWSER 0x0002")
cpp_quote("#define SBSP_DEFMODE 0x0000")
cpp_quote("#define SBSP_OPENMODE 0x0010")
cpp_quote("#define SBSP_EXPLOREMODE 0x0020")
cpp_quote("#define SBSP_HELPMODE 0x0040")
cpp_quote("#define SBSP_NOTRANSFERHIST 0x0080")
cpp_quote("#define SBSP_ABSOLUTE 0x0000")
cpp_quote("#define SBSP_RELATIVE 0x1000")
cpp_quote("#define SBSP_PARENT 0x2000")
cpp_quote("#define SBSP_NAVIGATEBACK 0x4000")
cpp_quote("#define SBSP_NAVIGATEFORWARD 0x8000")
cpp_quote("#define SBSP_ALLOW_AUTONAVIGATE 0x10000")
cpp_quote("#define SBSP_CALLERUNTRUSTED 0x00800000")
cpp_quote("#define SBSP_TRUSTFIRSTDOWNLOAD 0x01000000")
cpp_quote("#define SBSP_UNTRUSTEDFORDOWNLOAD 0x02000000")
cpp_quote("#define SBSP_NOAUTOSELECT 0x04000000")
cpp_quote("#define SBSP_WRITENOHISTORY 0x08000000")
cpp_quote("#define SBSP_TRUSTEDFORACTIVEX 0x10000000")
cpp_quote("#define SBSP_REDIRECT 0x40000000")
cpp_quote("#define SBSP_INITIATEDBYHLINKFRAME 0x80000000")
cpp_quote("#define FCW_STATUS 0x0001")
cpp_quote("#define FCW_TOOLBAR 0x0002")
cpp_quote("#define FCW_TREE 0x0003")
cpp_quote("#define FCW_INTERNETBAR 0x0006")
cpp_quote("#define FCW_PROGRESS 0x0008")
cpp_quote("#define FCT_MERGE 0x0001")
cpp_quote("#define FCT_CONFIGABLE 0x0002")
cpp_quote("#define FCT_ADDTOEND 0x0004")
cpp_quote("#ifdef _NEVER_")
cpp_quote("  typedef LPARAM LPTBBUTTONSB;")
cpp_quote("#else")
cpp_quote("#include <commctrl.h>")
cpp_quote("  typedef LPTBBUTTON LPTBBUTTONSB;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0207_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0207_v0_0_s_ifspec;")
cpp_quote("#ifndef __IShellBrowser_INTERFACE_DEFINED__")
cpp_quote("#define __IShellBrowser_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IShellBrowser;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IShellBrowser : public IOleWindow {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI InsertMenusSB(HMENU hmenuShared,LPOLEMENUGROUPWIDTHS lpMenuWidths) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetMenuSB(HMENU hmenuShared,HOLEMENU holemenuRes,HWND hwndActiveObject) = 0;")
cpp_quote("    virtual HRESULT WINAPI RemoveMenusSB(HMENU hmenuShared) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetStatusTextSB(LPCOLESTR pszStatusText) = 0;")
cpp_quote("    virtual HRESULT WINAPI EnableModelessSB(WINBOOL fEnable) = 0;")
cpp_quote("    virtual HRESULT WINAPI TranslateAcceleratorSB(MSG *pmsg,WORD wID) = 0;")
cpp_quote("    virtual HRESULT WINAPI BrowseObject(LPCITEMIDLIST pidl,UINT wFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetViewStateStream(DWORD grfMode,IStream **ppStrm) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetControlWindow(UINT id,HWND *phwnd) = 0;")
cpp_quote("    virtual HRESULT WINAPI SendControlMsg(UINT id,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *pret) = 0;")
cpp_quote("    virtual HRESULT WINAPI QueryActiveShellView(IShellView **ppshv) = 0;")
cpp_quote("    virtual HRESULT WINAPI OnViewWindowActive(IShellView *pshv) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetToolbarItems(LPTBBUTTONSB lpButtons,UINT nButtons,UINT uFlags) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IShellBrowserVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IShellBrowser *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IShellBrowser *This);")
cpp_quote("      ULONG (WINAPI *Release)(IShellBrowser *This);")
cpp_quote("      HRESULT (WINAPI *GetWindow)(IShellBrowser *This,HWND *phwnd);")
cpp_quote("      HRESULT (WINAPI *ContextSensitiveHelp)(IShellBrowser *This,WINBOOL fEnterMode);")
cpp_quote("      HRESULT (WINAPI *InsertMenusSB)(IShellBrowser *This,HMENU hmenuShared,LPOLEMENUGROUPWIDTHS lpMenuWidths);")
cpp_quote("      HRESULT (WINAPI *SetMenuSB)(IShellBrowser *This,HMENU hmenuShared,HOLEMENU holemenuRes,HWND hwndActiveObject);")
cpp_quote("      HRESULT (WINAPI *RemoveMenusSB)(IShellBrowser *This,HMENU hmenuShared);")
cpp_quote("      HRESULT (WINAPI *SetStatusTextSB)(IShellBrowser *This,LPCOLESTR pszStatusText);")
cpp_quote("      HRESULT (WINAPI *EnableModelessSB)(IShellBrowser *This,WINBOOL fEnable);")
cpp_quote("      HRESULT (WINAPI *TranslateAcceleratorSB)(IShellBrowser *This,MSG *pmsg,WORD wID);")
cpp_quote("      HRESULT (WINAPI *BrowseObject)(IShellBrowser *This,LPCITEMIDLIST pidl,UINT wFlags);")
cpp_quote("      HRESULT (WINAPI *GetViewStateStream)(IShellBrowser *This,DWORD grfMode,IStream **ppStrm);")
cpp_quote("      HRESULT (WINAPI *GetControlWindow)(IShellBrowser *This,UINT id,HWND *phwnd);")
cpp_quote("      HRESULT (WINAPI *SendControlMsg)(IShellBrowser *This,UINT id,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *pret);")
cpp_quote("      HRESULT (WINAPI *QueryActiveShellView)(IShellBrowser *This,IShellView **ppshv);")
cpp_quote("      HRESULT (WINAPI *OnViewWindowActive)(IShellBrowser *This,IShellView *pshv);")
cpp_quote("      HRESULT (WINAPI *SetToolbarItems)(IShellBrowser *This,LPTBBUTTONSB lpButtons,UINT nButtons,UINT uFlags);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IShellBrowserVtbl;")
cpp_quote("  struct IShellBrowser {")
cpp_quote("    CONST_VTBL struct IShellBrowserVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IShellBrowser_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IShellBrowser_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IShellBrowser_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IShellBrowser_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)")
cpp_quote("#define IShellBrowser_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)")
cpp_quote("#define IShellBrowser_InsertMenusSB(This,hmenuShared,lpMenuWidths) (This)->lpVtbl->InsertMenusSB(This,hmenuShared,lpMenuWidths)")
cpp_quote("#define IShellBrowser_SetMenuSB(This,hmenuShared,holemenuRes,hwndActiveObject) (This)->lpVtbl->SetMenuSB(This,hmenuShared,holemenuRes,hwndActiveObject)")
cpp_quote("#define IShellBrowser_RemoveMenusSB(This,hmenuShared) (This)->lpVtbl->RemoveMenusSB(This,hmenuShared)")
cpp_quote("#define IShellBrowser_SetStatusTextSB(This,pszStatusText) (This)->lpVtbl->SetStatusTextSB(This,pszStatusText)")
cpp_quote("#define IShellBrowser_EnableModelessSB(This,fEnable) (This)->lpVtbl->EnableModelessSB(This,fEnable)")
cpp_quote("#define IShellBrowser_TranslateAcceleratorSB(This,pmsg,wID) (This)->lpVtbl->TranslateAcceleratorSB(This,pmsg,wID)")
cpp_quote("#define IShellBrowser_BrowseObject(This,pidl,wFlags) (This)->lpVtbl->BrowseObject(This,pidl,wFlags)")
cpp_quote("#define IShellBrowser_GetViewStateStream(This,grfMode,ppStrm) (This)->lpVtbl->GetViewStateStream(This,grfMode,ppStrm)")
cpp_quote("#define IShellBrowser_GetControlWindow(This,id,phwnd) (This)->lpVtbl->GetControlWindow(This,id,phwnd)")
cpp_quote("#define IShellBrowser_SendControlMsg(This,id,uMsg,wParam,lParam,pret) (This)->lpVtbl->SendControlMsg(This,id,uMsg,wParam,lParam,pret)")
cpp_quote("#define IShellBrowser_QueryActiveShellView(This,ppshv) (This)->lpVtbl->QueryActiveShellView(This,ppshv)")
cpp_quote("#define IShellBrowser_OnViewWindowActive(This,pshv) (This)->lpVtbl->OnViewWindowActive(This,pshv)")
cpp_quote("#define IShellBrowser_SetToolbarItems(This,lpButtons,nButtons,uFlags) (This)->lpVtbl->SetToolbarItems(This,lpButtons,nButtons,uFlags)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IShellBrowser_InsertMenusSB_Proxy(IShellBrowser *This,HMENU hmenuShared,LPOLEMENUGROUPWIDTHS lpMenuWidths);")
cpp_quote("  void __RPC_STUB IShellBrowser_InsertMenusSB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellBrowser_SetMenuSB_Proxy(IShellBrowser *This,HMENU hmenuShared,HOLEMENU holemenuRes,HWND hwndActiveObject);")
cpp_quote("  void __RPC_STUB IShellBrowser_SetMenuSB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellBrowser_RemoveMenusSB_Proxy(IShellBrowser *This,HMENU hmenuShared);")
cpp_quote("  void __RPC_STUB IShellBrowser_RemoveMenusSB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellBrowser_SetStatusTextSB_Proxy(IShellBrowser *This,LPCOLESTR pszStatusText);")
cpp_quote("  void __RPC_STUB IShellBrowser_SetStatusTextSB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellBrowser_EnableModelessSB_Proxy(IShellBrowser *This,WINBOOL fEnable);")
cpp_quote("  void __RPC_STUB IShellBrowser_EnableModelessSB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellBrowser_TranslateAcceleratorSB_Proxy(IShellBrowser *This,MSG *pmsg,WORD wID);")
cpp_quote("  void __RPC_STUB IShellBrowser_TranslateAcceleratorSB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellBrowser_BrowseObject_Proxy(IShellBrowser *This,LPCITEMIDLIST pidl,UINT wFlags);")
cpp_quote("  void __RPC_STUB IShellBrowser_BrowseObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellBrowser_GetViewStateStream_Proxy(IShellBrowser *This,DWORD grfMode,IStream **ppStrm);")
cpp_quote("  void __RPC_STUB IShellBrowser_GetViewStateStream_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellBrowser_GetControlWindow_Proxy(IShellBrowser *This,UINT id,HWND *phwnd);")
cpp_quote("  void __RPC_STUB IShellBrowser_GetControlWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellBrowser_SendControlMsg_Proxy(IShellBrowser *This,UINT id,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *pret);")
cpp_quote("  void __RPC_STUB IShellBrowser_SendControlMsg_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellBrowser_QueryActiveShellView_Proxy(IShellBrowser *This,IShellView **ppshv);")
cpp_quote("  void __RPC_STUB IShellBrowser_QueryActiveShellView_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellBrowser_OnViewWindowActive_Proxy(IShellBrowser *This,IShellView *pshv);")
cpp_quote("  void __RPC_STUB IShellBrowser_OnViewWindowActive_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellBrowser_SetToolbarItems_Proxy(IShellBrowser *This,LPTBBUTTONSB lpButtons,UINT nButtons,UINT uFlags);")
cpp_quote("  void __RPC_STUB IShellBrowser_SetToolbarItems_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  typedef IShellBrowser *LPSHELLBROWSER;")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0208_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0208_v0_0_s_ifspec;")
cpp_quote("#ifndef __IProfferService_INTERFACE_DEFINED__")
cpp_quote("#define __IProfferService_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IProfferService;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IProfferService : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI ProfferService(REFGUID rguidService,IServiceProvider *psp,DWORD *pdwCookie) = 0;")
cpp_quote("    virtual HRESULT WINAPI RevokeService(DWORD dwCookie) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IProfferServiceVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IProfferService *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IProfferService *This);")
cpp_quote("      ULONG (WINAPI *Release)(IProfferService *This);")
cpp_quote("      HRESULT (WINAPI *ProfferService)(IProfferService *This,REFGUID rguidService,IServiceProvider *psp,DWORD *pdwCookie);")
cpp_quote("      HRESULT (WINAPI *RevokeService)(IProfferService *This,DWORD dwCookie);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IProfferServiceVtbl;")
cpp_quote("  struct IProfferService {")
cpp_quote("    CONST_VTBL struct IProfferServiceVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IProfferService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IProfferService_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IProfferService_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IProfferService_ProfferService(This,rguidService,psp,pdwCookie) (This)->lpVtbl->ProfferService(This,rguidService,psp,pdwCookie)")
cpp_quote("#define IProfferService_RevokeService(This,dwCookie) (This)->lpVtbl->RevokeService(This,dwCookie)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IProfferService_ProfferService_Proxy(IProfferService *This,REFGUID rguidService,IServiceProvider *psp,DWORD *pdwCookie);")
cpp_quote("  void __RPC_STUB IProfferService_ProfferService_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IProfferService_RevokeService_Proxy(IProfferService *This,DWORD dwCookie);")
cpp_quote("  void __RPC_STUB IProfferService_RevokeService_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define SID_SProfferService IID_IProfferService")
cpp_quote("  typedef enum __MIDL___MIDL_itf_shobjidl_0209_0001 {")
cpp_quote("    PUIFNF_DEFAULT = 0,PUIFNF_MNEMONIC = 0x1")
cpp_quote("  } PROPERTYUI_NAME_FLAGS;")
cpp_quote("")
cpp_quote("  typedef enum __MIDL___MIDL_itf_shobjidl_0209_0002 {")
cpp_quote("    PUIF_DEFAULT = 0,PUIF_RIGHTALIGN = 0x1,PUIF_NOLABELININFOTIP = 0x2")
cpp_quote("  } PROPERTYUI_FLAGS;")
cpp_quote("")
cpp_quote("  typedef enum __MIDL___MIDL_itf_shobjidl_0209_0003 {")
cpp_quote("    PUIFFDF_DEFAULT = 0,PUIFFDF_RIGHTTOLEFT = 0x1,PUIFFDF_SHORTFORMAT = 0x2,PUIFFDF_NOTIME = 0x4,PUIFFDF_FRIENDLYDATE = 0x8,PUIFFDF_NOUNITS = 0x10")
cpp_quote("  } PROPERTYUI_FORMAT_FLAGS;")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0209_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0209_v0_0_s_ifspec;")
cpp_quote("#ifndef __IPropertyUI_INTERFACE_DEFINED__")
cpp_quote("#define __IPropertyUI_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IPropertyUI;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IPropertyUI : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI ParsePropertyName(LPCWSTR pszName,FMTID *pfmtid,PROPID *ppid,ULONG *pchEaten) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetCannonicalName(REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetDisplayName(REFFMTID fmtid,PROPID pid,PROPERTYUI_NAME_FLAGS flags,LPWSTR pwszText,DWORD cchText) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetPropertyDescription(REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetDefaultWidth(REFFMTID fmtid,PROPID pid,ULONG *pcxChars) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetFlags(REFFMTID fmtid,PROPID pid,PROPERTYUI_FLAGS *pFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI FormatForDisplay(REFFMTID fmtid,PROPID pid,const PROPVARIANT *pvar,PROPERTYUI_FORMAT_FLAGS flags,LPWSTR pwszText,DWORD cchText) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetHelpInfo(REFFMTID fmtid,PROPID pid,LPWSTR pwszHelpFile,DWORD cch,UINT *puHelpID) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IPropertyUIVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IPropertyUI *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IPropertyUI *This);")
cpp_quote("      ULONG (WINAPI *Release)(IPropertyUI *This);")
cpp_quote("      HRESULT (WINAPI *ParsePropertyName)(IPropertyUI *This,LPCWSTR pszName,FMTID *pfmtid,PROPID *ppid,ULONG *pchEaten);")
cpp_quote("      HRESULT (WINAPI *GetCannonicalName)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText);")
cpp_quote("      HRESULT (WINAPI *GetDisplayName)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,PROPERTYUI_NAME_FLAGS flags,LPWSTR pwszText,DWORD cchText);")
cpp_quote("      HRESULT (WINAPI *GetPropertyDescription)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText);")
cpp_quote("      HRESULT (WINAPI *GetDefaultWidth)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,ULONG *pcxChars);")
cpp_quote("      HRESULT (WINAPI *GetFlags)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,PROPERTYUI_FLAGS *pFlags);")
cpp_quote("      HRESULT (WINAPI *FormatForDisplay)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,const PROPVARIANT *pvar,PROPERTYUI_FORMAT_FLAGS flags,LPWSTR pwszText,DWORD cchText);")
cpp_quote("      HRESULT (WINAPI *GetHelpInfo)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,LPWSTR pwszHelpFile,DWORD cch,UINT *puHelpID);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IPropertyUIVtbl;")
cpp_quote("  struct IPropertyUI {")
cpp_quote("    CONST_VTBL struct IPropertyUIVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IPropertyUI_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IPropertyUI_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IPropertyUI_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IPropertyUI_ParsePropertyName(This,pszName,pfmtid,ppid,pchEaten) (This)->lpVtbl->ParsePropertyName(This,pszName,pfmtid,ppid,pchEaten)")
cpp_quote("#define IPropertyUI_GetCannonicalName(This,fmtid,pid,pwszText,cchText) (This)->lpVtbl->GetCannonicalName(This,fmtid,pid,pwszText,cchText)")
cpp_quote("#define IPropertyUI_GetDisplayName(This,fmtid,pid,flags,pwszText,cchText) (This)->lpVtbl->GetDisplayName(This,fmtid,pid,flags,pwszText,cchText)")
cpp_quote("#define IPropertyUI_GetPropertyDescription(This,fmtid,pid,pwszText,cchText) (This)->lpVtbl->GetPropertyDescription(This,fmtid,pid,pwszText,cchText)")
cpp_quote("#define IPropertyUI_GetDefaultWidth(This,fmtid,pid,pcxChars) (This)->lpVtbl->GetDefaultWidth(This,fmtid,pid,pcxChars)")
cpp_quote("#define IPropertyUI_GetFlags(This,fmtid,pid,pFlags) (This)->lpVtbl->GetFlags(This,fmtid,pid,pFlags)")
cpp_quote("#define IPropertyUI_FormatForDisplay(This,fmtid,pid,pvar,flags,pwszText,cchText) (This)->lpVtbl->FormatForDisplay(This,fmtid,pid,pvar,flags,pwszText,cchText)")
cpp_quote("#define IPropertyUI_GetHelpInfo(This,fmtid,pid,pwszHelpFile,cch,puHelpID) (This)->lpVtbl->GetHelpInfo(This,fmtid,pid,pwszHelpFile,cch,puHelpID)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IPropertyUI_ParsePropertyName_Proxy(IPropertyUI *This,LPCWSTR pszName,FMTID *pfmtid,PROPID *ppid,ULONG *pchEaten);")
cpp_quote("  void __RPC_STUB IPropertyUI_ParsePropertyName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IPropertyUI_GetCannonicalName_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText);")
cpp_quote("  void __RPC_STUB IPropertyUI_GetCannonicalName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IPropertyUI_GetDisplayName_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,PROPERTYUI_NAME_FLAGS flags,LPWSTR pwszText,DWORD cchText);")
cpp_quote("  void __RPC_STUB IPropertyUI_GetDisplayName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IPropertyUI_GetPropertyDescription_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText);")
cpp_quote("  void __RPC_STUB IPropertyUI_GetPropertyDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IPropertyUI_GetDefaultWidth_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,ULONG *pcxChars);")
cpp_quote("  void __RPC_STUB IPropertyUI_GetDefaultWidth_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IPropertyUI_GetFlags_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,PROPERTYUI_FLAGS *pFlags);")
cpp_quote("  void __RPC_STUB IPropertyUI_GetFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IPropertyUI_FormatForDisplay_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,const PROPVARIANT *pvar,PROPERTYUI_FORMAT_FLAGS flags,LPWSTR pwszText,DWORD cchText);")
cpp_quote("  void __RPC_STUB IPropertyUI_FormatForDisplay_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IPropertyUI_GetHelpInfo_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,LPWSTR pwszHelpFile,DWORD cch,UINT *puHelpID);")
cpp_quote("  void __RPC_STUB IPropertyUI_GetHelpInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#if (0x501 >= 0x0500)")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0210_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0210_v0_0_s_ifspec;")
cpp_quote("#ifndef __ICategoryProvider_INTERFACE_DEFINED__")
cpp_quote("#define __ICategoryProvider_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_ICategoryProvider;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct ICategoryProvider : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI CanCategorizeOnSCID(SHCOLUMNID *pscid) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetDefaultCategory(GUID *pguid,SHCOLUMNID *pscid) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetCategoryForSCID(SHCOLUMNID *pscid,GUID *pguid) = 0;")
cpp_quote("    virtual HRESULT WINAPI EnumCategories(IEnumGUID **penum) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetCategoryName(GUID *pguid,LPWSTR pszName,UINT cch) = 0;")
cpp_quote("    virtual HRESULT WINAPI CreateCategory(GUID *pguid,REFIID riid,void **ppv) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct ICategoryProviderVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(ICategoryProvider *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(ICategoryProvider *This);")
cpp_quote("      ULONG (WINAPI *Release)(ICategoryProvider *This);")
cpp_quote("      HRESULT (WINAPI *CanCategorizeOnSCID)(ICategoryProvider *This,SHCOLUMNID *pscid);")
cpp_quote("      HRESULT (WINAPI *GetDefaultCategory)(ICategoryProvider *This,GUID *pguid,SHCOLUMNID *pscid);")
cpp_quote("      HRESULT (WINAPI *GetCategoryForSCID)(ICategoryProvider *This,SHCOLUMNID *pscid,GUID *pguid);")
cpp_quote("      HRESULT (WINAPI *EnumCategories)(ICategoryProvider *This,IEnumGUID **penum);")
cpp_quote("      HRESULT (WINAPI *GetCategoryName)(ICategoryProvider *This,GUID *pguid,LPWSTR pszName,UINT cch);")
cpp_quote("      HRESULT (WINAPI *CreateCategory)(ICategoryProvider *This,GUID *pguid,REFIID riid,void **ppv);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } ICategoryProviderVtbl;")
cpp_quote("  struct ICategoryProvider {")
cpp_quote("    CONST_VTBL struct ICategoryProviderVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define ICategoryProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define ICategoryProvider_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define ICategoryProvider_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define ICategoryProvider_CanCategorizeOnSCID(This,pscid) (This)->lpVtbl->CanCategorizeOnSCID(This,pscid)")
cpp_quote("#define ICategoryProvider_GetDefaultCategory(This,pguid,pscid) (This)->lpVtbl->GetDefaultCategory(This,pguid,pscid)")
cpp_quote("#define ICategoryProvider_GetCategoryForSCID(This,pscid,pguid) (This)->lpVtbl->GetCategoryForSCID(This,pscid,pguid)")
cpp_quote("#define ICategoryProvider_EnumCategories(This,penum) (This)->lpVtbl->EnumCategories(This,penum)")
cpp_quote("#define ICategoryProvider_GetCategoryName(This,pguid,pszName,cch) (This)->lpVtbl->GetCategoryName(This,pguid,pszName,cch)")
cpp_quote("#define ICategoryProvider_CreateCategory(This,pguid,riid,ppv) (This)->lpVtbl->CreateCategory(This,pguid,riid,ppv)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI ICategoryProvider_CanCategorizeOnSCID_Proxy(ICategoryProvider *This,SHCOLUMNID *pscid);")
cpp_quote("  void __RPC_STUB ICategoryProvider_CanCategorizeOnSCID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ICategoryProvider_GetDefaultCategory_Proxy(ICategoryProvider *This,GUID *pguid,SHCOLUMNID *pscid);")
cpp_quote("  void __RPC_STUB ICategoryProvider_GetDefaultCategory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ICategoryProvider_GetCategoryForSCID_Proxy(ICategoryProvider *This,SHCOLUMNID *pscid,GUID *pguid);")
cpp_quote("  void __RPC_STUB ICategoryProvider_GetCategoryForSCID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ICategoryProvider_EnumCategories_Proxy(ICategoryProvider *This,IEnumGUID **penum);")
cpp_quote("  void __RPC_STUB ICategoryProvider_EnumCategories_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ICategoryProvider_GetCategoryName_Proxy(ICategoryProvider *This,GUID *pguid,LPWSTR pszName,UINT cch);")
cpp_quote("  void __RPC_STUB ICategoryProvider_GetCategoryName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ICategoryProvider_CreateCategory_Proxy(ICategoryProvider *This,GUID *pguid,REFIID riid,void **ppv);")
cpp_quote("  void __RPC_STUB ICategoryProvider_CreateCategory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  typedef enum __MIDL___MIDL_itf_shobjidl_0211_0001 {")
cpp_quote("    CATINFO_NORMAL = 0,CATINFO_COLLAPSED = 0x1,CATINFO_HIDDEN = 0x2")
cpp_quote("  } CATEGORYINFO_FLAGS;")
cpp_quote("")
cpp_quote("  typedef enum __MIDL___MIDL_itf_shobjidl_0211_0002 {")
cpp_quote("    CATSORT_DEFAULT = 0,CATSORT_NAME = 0x1")
cpp_quote("  } CATSORT_FLAGS;")
cpp_quote("")
cpp_quote("  typedef struct __MIDL___MIDL_itf_shobjidl_0211_0003 {")
cpp_quote("    CATEGORYINFO_FLAGS cif;")
cpp_quote("    WCHAR wszName[260];")
cpp_quote("  } CATEGORY_INFO;")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0211_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0211_v0_0_s_ifspec;")
cpp_quote("#ifndef __ICategorizer_INTERFACE_DEFINED__")
cpp_quote("#define __ICategorizer_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_ICategorizer;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct ICategorizer : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetDescription(LPWSTR pszDesc,UINT cch) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetCategory(UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgCategoryIds) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetCategoryInfo(DWORD dwCategoryId,CATEGORY_INFO *pci) = 0;")
cpp_quote("    virtual HRESULT WINAPI CompareCategory(CATSORT_FLAGS csfFlags,DWORD dwCategoryId1,DWORD dwCategoryId2) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct ICategorizerVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(ICategorizer *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(ICategorizer *This);")
cpp_quote("      ULONG (WINAPI *Release)(ICategorizer *This);")
cpp_quote("      HRESULT (WINAPI *GetDescription)(ICategorizer *This,LPWSTR pszDesc,UINT cch);")
cpp_quote("      HRESULT (WINAPI *GetCategory)(ICategorizer *This,UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgCategoryIds);")
cpp_quote("      HRESULT (WINAPI *GetCategoryInfo)(ICategorizer *This,DWORD dwCategoryId,CATEGORY_INFO *pci);")
cpp_quote("      HRESULT (WINAPI *CompareCategory)(ICategorizer *This,CATSORT_FLAGS csfFlags,DWORD dwCategoryId1,DWORD dwCategoryId2);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } ICategorizerVtbl;")
cpp_quote("  struct ICategorizer {")
cpp_quote("    CONST_VTBL struct ICategorizerVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define ICategorizer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define ICategorizer_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define ICategorizer_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define ICategorizer_GetDescription(This,pszDesc,cch) (This)->lpVtbl->GetDescription(This,pszDesc,cch)")
cpp_quote("#define ICategorizer_GetCategory(This,cidl,apidl,rgCategoryIds) (This)->lpVtbl->GetCategory(This,cidl,apidl,rgCategoryIds)")
cpp_quote("#define ICategorizer_GetCategoryInfo(This,dwCategoryId,pci) (This)->lpVtbl->GetCategoryInfo(This,dwCategoryId,pci)")
cpp_quote("#define ICategorizer_CompareCategory(This,csfFlags,dwCategoryId1,dwCategoryId2) (This)->lpVtbl->CompareCategory(This,csfFlags,dwCategoryId1,dwCategoryId2)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI ICategorizer_GetDescription_Proxy(ICategorizer *This,LPWSTR pszDesc,UINT cch);")
cpp_quote("  void __RPC_STUB ICategorizer_GetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ICategorizer_GetCategory_Proxy(ICategorizer *This,UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgCategoryIds);")
cpp_quote("  void __RPC_STUB ICategorizer_GetCategory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ICategorizer_GetCategoryInfo_Proxy(ICategorizer *This,DWORD dwCategoryId,CATEGORY_INFO *pci);")
cpp_quote("  void __RPC_STUB ICategorizer_GetCategoryInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ICategorizer_CompareCategory_Proxy(ICategorizer *This,CATSORT_FLAGS csfFlags,DWORD dwCategoryId1,DWORD dwCategoryId2);")
cpp_quote("  void __RPC_STUB ICategorizer_CompareCategory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define IShellLink __MINGW_NAME_AW(IShellLink)")
cpp_quote("")
cpp_quote("  typedef enum __MIDL___MIDL_itf_shobjidl_0212_0001 {")
cpp_quote("    SLR_NO_UI = 0x1,SLR_ANY_MATCH = 0x2,SLR_UPDATE = 0x4,SLR_NOUPDATE = 0x8,SLR_NOSEARCH = 0x10,SLR_NOTRACK = 0x20,SLR_NOLINKINFO = 0x40,")
cpp_quote("    SLR_INVOKE_MSI = 0x80,SLR_NO_UI_WITH_MSG_PUMP = 0x101")
cpp_quote("  } SLR_FLAGS;")
cpp_quote("")
cpp_quote("  typedef enum __MIDL___MIDL_itf_shobjidl_0212_0002 {")
cpp_quote("    SLGP_SHORTPATH = 0x1,SLGP_UNCPRIORITY = 0x2,SLGP_RAWPATH = 0x4")
cpp_quote("  } SLGP_FLAGS;")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0212_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0212_v0_0_s_ifspec;")
cpp_quote("#ifndef __IShellLinkA_INTERFACE_DEFINED__")
cpp_quote("#define __IShellLinkA_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IShellLinkA;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IShellLinkA : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetPath(LPSTR pszFile,int cch,WIN32_FIND_DATAA *pfd,DWORD fFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetIDList(LPITEMIDLIST *ppidl) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetIDList(LPCITEMIDLIST pidl) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetDescription(LPSTR pszName,int cch) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetDescription(LPCSTR pszName) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetWorkingDirectory(LPSTR pszDir,int cch) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetWorkingDirectory(LPCSTR pszDir) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetArguments(LPSTR pszArgs,int cch) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetArguments(LPCSTR pszArgs) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetHotkey(WORD *pwHotkey) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetHotkey(WORD wHotkey) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetShowCmd(int *piShowCmd) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetShowCmd(int iShowCmd) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetIconLocation(LPSTR pszIconPath,int cch,int *piIcon) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetIconLocation(LPCSTR pszIconPath,int iIcon) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetRelativePath(LPCSTR pszPathRel,DWORD dwReserved) = 0;")
cpp_quote("    virtual HRESULT WINAPI Resolve(HWND hwnd,DWORD fFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetPath(LPCSTR pszFile) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IShellLinkAVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IShellLinkA *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IShellLinkA *This);")
cpp_quote("      ULONG (WINAPI *Release)(IShellLinkA *This);")
cpp_quote("      HRESULT (WINAPI *GetPath)(IShellLinkA *This,LPSTR pszFile,int cch,WIN32_FIND_DATAA *pfd,DWORD fFlags);")
cpp_quote("      HRESULT (WINAPI *GetIDList)(IShellLinkA *This,LPITEMIDLIST *ppidl);")
cpp_quote("      HRESULT (WINAPI *SetIDList)(IShellLinkA *This,LPCITEMIDLIST pidl);")
cpp_quote("      HRESULT (WINAPI *GetDescription)(IShellLinkA *This,LPSTR pszName,int cch);")
cpp_quote("      HRESULT (WINAPI *SetDescription)(IShellLinkA *This,LPCSTR pszName);")
cpp_quote("      HRESULT (WINAPI *GetWorkingDirectory)(IShellLinkA *This,LPSTR pszDir,int cch);")
cpp_quote("      HRESULT (WINAPI *SetWorkingDirectory)(IShellLinkA *This,LPCSTR pszDir);")
cpp_quote("      HRESULT (WINAPI *GetArguments)(IShellLinkA *This,LPSTR pszArgs,int cch);")
cpp_quote("      HRESULT (WINAPI *SetArguments)(IShellLinkA *This,LPCSTR pszArgs);")
cpp_quote("      HRESULT (WINAPI *GetHotkey)(IShellLinkA *This,WORD *pwHotkey);")
cpp_quote("      HRESULT (WINAPI *SetHotkey)(IShellLinkA *This,WORD wHotkey);")
cpp_quote("      HRESULT (WINAPI *GetShowCmd)(IShellLinkA *This,int *piShowCmd);")
cpp_quote("      HRESULT (WINAPI *SetShowCmd)(IShellLinkA *This,int iShowCmd);")
cpp_quote("      HRESULT (WINAPI *GetIconLocation)(IShellLinkA *This,LPSTR pszIconPath,int cch,int *piIcon);")
cpp_quote("      HRESULT (WINAPI *SetIconLocation)(IShellLinkA *This,LPCSTR pszIconPath,int iIcon);")
cpp_quote("      HRESULT (WINAPI *SetRelativePath)(IShellLinkA *This,LPCSTR pszPathRel,DWORD dwReserved);")
cpp_quote("      HRESULT (WINAPI *Resolve)(IShellLinkA *This,HWND hwnd,DWORD fFlags);")
cpp_quote("      HRESULT (WINAPI *SetPath)(IShellLinkA *This,LPCSTR pszFile);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IShellLinkAVtbl;")
cpp_quote("  struct IShellLinkA {")
cpp_quote("    CONST_VTBL struct IShellLinkAVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IShellLinkA_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IShellLinkA_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IShellLinkA_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IShellLinkA_GetPath(This,pszFile,cch,pfd,fFlags) (This)->lpVtbl->GetPath(This,pszFile,cch,pfd,fFlags)")
cpp_quote("#define IShellLinkA_GetIDList(This,ppidl) (This)->lpVtbl->GetIDList(This,ppidl)")
cpp_quote("#define IShellLinkA_SetIDList(This,pidl) (This)->lpVtbl->SetIDList(This,pidl)")
cpp_quote("#define IShellLinkA_GetDescription(This,pszName,cch) (This)->lpVtbl->GetDescription(This,pszName,cch)")
cpp_quote("#define IShellLinkA_SetDescription(This,pszName) (This)->lpVtbl->SetDescription(This,pszName)")
cpp_quote("#define IShellLinkA_GetWorkingDirectory(This,pszDir,cch) (This)->lpVtbl->GetWorkingDirectory(This,pszDir,cch)")
cpp_quote("#define IShellLinkA_SetWorkingDirectory(This,pszDir) (This)->lpVtbl->SetWorkingDirectory(This,pszDir)")
cpp_quote("#define IShellLinkA_GetArguments(This,pszArgs,cch) (This)->lpVtbl->GetArguments(This,pszArgs,cch)")
cpp_quote("#define IShellLinkA_SetArguments(This,pszArgs) (This)->lpVtbl->SetArguments(This,pszArgs)")
cpp_quote("#define IShellLinkA_GetHotkey(This,pwHotkey) (This)->lpVtbl->GetHotkey(This,pwHotkey)")
cpp_quote("#define IShellLinkA_SetHotkey(This,wHotkey) (This)->lpVtbl->SetHotkey(This,wHotkey)")
cpp_quote("#define IShellLinkA_GetShowCmd(This,piShowCmd) (This)->lpVtbl->GetShowCmd(This,piShowCmd)")
cpp_quote("#define IShellLinkA_SetShowCmd(This,iShowCmd) (This)->lpVtbl->SetShowCmd(This,iShowCmd)")
cpp_quote("#define IShellLinkA_GetIconLocation(This,pszIconPath,cch,piIcon) (This)->lpVtbl->GetIconLocation(This,pszIconPath,cch,piIcon)")
cpp_quote("#define IShellLinkA_SetIconLocation(This,pszIconPath,iIcon) (This)->lpVtbl->SetIconLocation(This,pszIconPath,iIcon)")
cpp_quote("#define IShellLinkA_SetRelativePath(This,pszPathRel,dwReserved) (This)->lpVtbl->SetRelativePath(This,pszPathRel,dwReserved)")
cpp_quote("#define IShellLinkA_Resolve(This,hwnd,fFlags) (This)->lpVtbl->Resolve(This,hwnd,fFlags)")
cpp_quote("#define IShellLinkA_SetPath(This,pszFile) (This)->lpVtbl->SetPath(This,pszFile)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IShellLinkA_GetPath_Proxy(IShellLinkA *This,LPSTR pszFile,int cch,WIN32_FIND_DATAA *pfd,DWORD fFlags);")
cpp_quote("  void __RPC_STUB IShellLinkA_GetPath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_GetIDList_Proxy(IShellLinkA *This,LPITEMIDLIST *ppidl);")
cpp_quote("  void __RPC_STUB IShellLinkA_GetIDList_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_SetIDList_Proxy(IShellLinkA *This,LPCITEMIDLIST pidl);")
cpp_quote("  void __RPC_STUB IShellLinkA_SetIDList_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_GetDescription_Proxy(IShellLinkA *This,LPSTR pszName,int cch);")
cpp_quote("  void __RPC_STUB IShellLinkA_GetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_SetDescription_Proxy(IShellLinkA *This,LPCSTR pszName);")
cpp_quote("  void __RPC_STUB IShellLinkA_SetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_GetWorkingDirectory_Proxy(IShellLinkA *This,LPSTR pszDir,int cch);")
cpp_quote("  void __RPC_STUB IShellLinkA_GetWorkingDirectory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_SetWorkingDirectory_Proxy(IShellLinkA *This,LPCSTR pszDir);")
cpp_quote("  void __RPC_STUB IShellLinkA_SetWorkingDirectory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_GetArguments_Proxy(IShellLinkA *This,LPSTR pszArgs,int cch);")
cpp_quote("  void __RPC_STUB IShellLinkA_GetArguments_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_SetArguments_Proxy(IShellLinkA *This,LPCSTR pszArgs);")
cpp_quote("  void __RPC_STUB IShellLinkA_SetArguments_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_GetHotkey_Proxy(IShellLinkA *This,WORD *pwHotkey);")
cpp_quote("  void __RPC_STUB IShellLinkA_GetHotkey_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_SetHotkey_Proxy(IShellLinkA *This,WORD wHotkey);")
cpp_quote("  void __RPC_STUB IShellLinkA_SetHotkey_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_GetShowCmd_Proxy(IShellLinkA *This,int *piShowCmd);")
cpp_quote("  void __RPC_STUB IShellLinkA_GetShowCmd_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_SetShowCmd_Proxy(IShellLinkA *This,int iShowCmd);")
cpp_quote("  void __RPC_STUB IShellLinkA_SetShowCmd_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_GetIconLocation_Proxy(IShellLinkA *This,LPSTR pszIconPath,int cch,int *piIcon);")
cpp_quote("  void __RPC_STUB IShellLinkA_GetIconLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_SetIconLocation_Proxy(IShellLinkA *This,LPCSTR pszIconPath,int iIcon);")
cpp_quote("  void __RPC_STUB IShellLinkA_SetIconLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_SetRelativePath_Proxy(IShellLinkA *This,LPCSTR pszPathRel,DWORD dwReserved);")
cpp_quote("  void __RPC_STUB IShellLinkA_SetRelativePath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_Resolve_Proxy(IShellLinkA *This,HWND hwnd,DWORD fFlags);")
cpp_quote("  void __RPC_STUB IShellLinkA_Resolve_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkA_SetPath_Proxy(IShellLinkA *This,LPCSTR pszFile);")
cpp_quote("  void __RPC_STUB IShellLinkA_SetPath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellLinkW_INTERFACE_DEFINED__")
cpp_quote("#define __IShellLinkW_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IShellLinkW;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IShellLinkW : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetPath(LPWSTR pszFile,int cch,WIN32_FIND_DATAW *pfd,DWORD fFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetIDList(LPITEMIDLIST *ppidl) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetIDList(LPCITEMIDLIST pidl) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetDescription(LPWSTR pszName,int cch) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetDescription(LPCWSTR pszName) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetWorkingDirectory(LPWSTR pszDir,int cch) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetWorkingDirectory(LPCWSTR pszDir) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetArguments(LPWSTR pszArgs,int cch) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetArguments(LPCWSTR pszArgs) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetHotkey(WORD *pwHotkey) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetHotkey(WORD wHotkey) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetShowCmd(int *piShowCmd) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetShowCmd(int iShowCmd) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetIconLocation(LPWSTR pszIconPath,int cch,int *piIcon) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetIconLocation(LPCWSTR pszIconPath,int iIcon) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetRelativePath(LPCWSTR pszPathRel,DWORD dwReserved) = 0;")
cpp_quote("    virtual HRESULT WINAPI Resolve(HWND hwnd,DWORD fFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetPath(LPCWSTR pszFile) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IShellLinkWVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IShellLinkW *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IShellLinkW *This);")
cpp_quote("      ULONG (WINAPI *Release)(IShellLinkW *This);")
cpp_quote("      HRESULT (WINAPI *GetPath)(IShellLinkW *This,LPWSTR pszFile,int cch,WIN32_FIND_DATAW *pfd,DWORD fFlags);")
cpp_quote("      HRESULT (WINAPI *GetIDList)(IShellLinkW *This,LPITEMIDLIST *ppidl);")
cpp_quote("      HRESULT (WINAPI *SetIDList)(IShellLinkW *This,LPCITEMIDLIST pidl);")
cpp_quote("      HRESULT (WINAPI *GetDescription)(IShellLinkW *This,LPWSTR pszName,int cch);")
cpp_quote("      HRESULT (WINAPI *SetDescription)(IShellLinkW *This,LPCWSTR pszName);")
cpp_quote("      HRESULT (WINAPI *GetWorkingDirectory)(IShellLinkW *This,LPWSTR pszDir,int cch);")
cpp_quote("      HRESULT (WINAPI *SetWorkingDirectory)(IShellLinkW *This,LPCWSTR pszDir);")
cpp_quote("      HRESULT (WINAPI *GetArguments)(IShellLinkW *This,LPWSTR pszArgs,int cch);")
cpp_quote("      HRESULT (WINAPI *SetArguments)(IShellLinkW *This,LPCWSTR pszArgs);")
cpp_quote("      HRESULT (WINAPI *GetHotkey)(IShellLinkW *This,WORD *pwHotkey);")
cpp_quote("      HRESULT (WINAPI *SetHotkey)(IShellLinkW *This,WORD wHotkey);")
cpp_quote("      HRESULT (WINAPI *GetShowCmd)(IShellLinkW *This,int *piShowCmd);")
cpp_quote("      HRESULT (WINAPI *SetShowCmd)(IShellLinkW *This,int iShowCmd);")
cpp_quote("      HRESULT (WINAPI *GetIconLocation)(IShellLinkW *This,LPWSTR pszIconPath,int cch,int *piIcon);")
cpp_quote("      HRESULT (WINAPI *SetIconLocation)(IShellLinkW *This,LPCWSTR pszIconPath,int iIcon);")
cpp_quote("      HRESULT (WINAPI *SetRelativePath)(IShellLinkW *This,LPCWSTR pszPathRel,DWORD dwReserved);")
cpp_quote("      HRESULT (WINAPI *Resolve)(IShellLinkW *This,HWND hwnd,DWORD fFlags);")
cpp_quote("      HRESULT (WINAPI *SetPath)(IShellLinkW *This,LPCWSTR pszFile);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IShellLinkWVtbl;")
cpp_quote("  struct IShellLinkW {")
cpp_quote("    CONST_VTBL struct IShellLinkWVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IShellLinkW_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IShellLinkW_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IShellLinkW_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IShellLinkW_GetPath(This,pszFile,cch,pfd,fFlags) (This)->lpVtbl->GetPath(This,pszFile,cch,pfd,fFlags)")
cpp_quote("#define IShellLinkW_GetIDList(This,ppidl) (This)->lpVtbl->GetIDList(This,ppidl)")
cpp_quote("#define IShellLinkW_SetIDList(This,pidl) (This)->lpVtbl->SetIDList(This,pidl)")
cpp_quote("#define IShellLinkW_GetDescription(This,pszName,cch) (This)->lpVtbl->GetDescription(This,pszName,cch)")
cpp_quote("#define IShellLinkW_SetDescription(This,pszName) (This)->lpVtbl->SetDescription(This,pszName)")
cpp_quote("#define IShellLinkW_GetWorkingDirectory(This,pszDir,cch) (This)->lpVtbl->GetWorkingDirectory(This,pszDir,cch)")
cpp_quote("#define IShellLinkW_SetWorkingDirectory(This,pszDir) (This)->lpVtbl->SetWorkingDirectory(This,pszDir)")
cpp_quote("#define IShellLinkW_GetArguments(This,pszArgs,cch) (This)->lpVtbl->GetArguments(This,pszArgs,cch)")
cpp_quote("#define IShellLinkW_SetArguments(This,pszArgs) (This)->lpVtbl->SetArguments(This,pszArgs)")
cpp_quote("#define IShellLinkW_GetHotkey(This,pwHotkey) (This)->lpVtbl->GetHotkey(This,pwHotkey)")
cpp_quote("#define IShellLinkW_SetHotkey(This,wHotkey) (This)->lpVtbl->SetHotkey(This,wHotkey)")
cpp_quote("#define IShellLinkW_GetShowCmd(This,piShowCmd) (This)->lpVtbl->GetShowCmd(This,piShowCmd)")
cpp_quote("#define IShellLinkW_SetShowCmd(This,iShowCmd) (This)->lpVtbl->SetShowCmd(This,iShowCmd)")
cpp_quote("#define IShellLinkW_GetIconLocation(This,pszIconPath,cch,piIcon) (This)->lpVtbl->GetIconLocation(This,pszIconPath,cch,piIcon)")
cpp_quote("#define IShellLinkW_SetIconLocation(This,pszIconPath,iIcon) (This)->lpVtbl->SetIconLocation(This,pszIconPath,iIcon)")
cpp_quote("#define IShellLinkW_SetRelativePath(This,pszPathRel,dwReserved) (This)->lpVtbl->SetRelativePath(This,pszPathRel,dwReserved)")
cpp_quote("#define IShellLinkW_Resolve(This,hwnd,fFlags) (This)->lpVtbl->Resolve(This,hwnd,fFlags)")
cpp_quote("#define IShellLinkW_SetPath(This,pszFile) (This)->lpVtbl->SetPath(This,pszFile)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IShellLinkW_GetPath_Proxy(IShellLinkW *This,LPWSTR pszFile,int cch,WIN32_FIND_DATAW *pfd,DWORD fFlags);")
cpp_quote("  void __RPC_STUB IShellLinkW_GetPath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_GetIDList_Proxy(IShellLinkW *This,LPITEMIDLIST *ppidl);")
cpp_quote("  void __RPC_STUB IShellLinkW_GetIDList_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_SetIDList_Proxy(IShellLinkW *This,LPCITEMIDLIST pidl);")
cpp_quote("  void __RPC_STUB IShellLinkW_SetIDList_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_GetDescription_Proxy(IShellLinkW *This,LPWSTR pszName,int cch);")
cpp_quote("  void __RPC_STUB IShellLinkW_GetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_SetDescription_Proxy(IShellLinkW *This,LPCWSTR pszName);")
cpp_quote("  void __RPC_STUB IShellLinkW_SetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_GetWorkingDirectory_Proxy(IShellLinkW *This,LPWSTR pszDir,int cch);")
cpp_quote("  void __RPC_STUB IShellLinkW_GetWorkingDirectory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_SetWorkingDirectory_Proxy(IShellLinkW *This,LPCWSTR pszDir);")
cpp_quote("  void __RPC_STUB IShellLinkW_SetWorkingDirectory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_GetArguments_Proxy(IShellLinkW *This,LPWSTR pszArgs,int cch);")
cpp_quote("  void __RPC_STUB IShellLinkW_GetArguments_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_SetArguments_Proxy(IShellLinkW *This,LPCWSTR pszArgs);")
cpp_quote("  void __RPC_STUB IShellLinkW_SetArguments_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_GetHotkey_Proxy(IShellLinkW *This,WORD *pwHotkey);")
cpp_quote("  void __RPC_STUB IShellLinkW_GetHotkey_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_SetHotkey_Proxy(IShellLinkW *This,WORD wHotkey);")
cpp_quote("  void __RPC_STUB IShellLinkW_SetHotkey_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_GetShowCmd_Proxy(IShellLinkW *This,int *piShowCmd);")
cpp_quote("  void __RPC_STUB IShellLinkW_GetShowCmd_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_SetShowCmd_Proxy(IShellLinkW *This,int iShowCmd);")
cpp_quote("  void __RPC_STUB IShellLinkW_SetShowCmd_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_GetIconLocation_Proxy(IShellLinkW *This,LPWSTR pszIconPath,int cch,int *piIcon);")
cpp_quote("  void __RPC_STUB IShellLinkW_GetIconLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_SetIconLocation_Proxy(IShellLinkW *This,LPCWSTR pszIconPath,int iIcon);")
cpp_quote("  void __RPC_STUB IShellLinkW_SetIconLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_SetRelativePath_Proxy(IShellLinkW *This,LPCWSTR pszPathRel,DWORD dwReserved);")
cpp_quote("  void __RPC_STUB IShellLinkW_SetRelativePath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_Resolve_Proxy(IShellLinkW *This,HWND hwnd,DWORD fFlags);")
cpp_quote("  void __RPC_STUB IShellLinkW_Resolve_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellLinkW_SetPath_Proxy(IShellLinkW *This,LPCWSTR pszFile);")
cpp_quote("  void __RPC_STUB IShellLinkW_SetPath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IActionProgressDialog_INTERFACE_DEFINED__")
cpp_quote("#define __IActionProgressDialog_INTERFACE_DEFINED__")
cpp_quote("  enum __MIDL_IActionProgressDialog_0001 {")
cpp_quote("    SPINITF_NORMAL = 0,SPINITF_MODAL = 0x1,SPINITF_NOMINIMIZE = 0x8")
cpp_quote("  };")
cpp_quote("  typedef DWORD SPINITF;")
cpp_quote("")
cpp_quote("  EXTERN_C const IID IID_IActionProgressDialog;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IActionProgressDialog : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Initialize(SPINITF flags,LPCWSTR pszTitle,LPCWSTR pszCancel) = 0;")
cpp_quote("    virtual HRESULT WINAPI Stop(void) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IActionProgressDialogVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IActionProgressDialog *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IActionProgressDialog *This);")
cpp_quote("      ULONG (WINAPI *Release)(IActionProgressDialog *This);")
cpp_quote("      HRESULT (WINAPI *Initialize)(IActionProgressDialog *This,SPINITF flags,LPCWSTR pszTitle,LPCWSTR pszCancel);")
cpp_quote("      HRESULT (WINAPI *Stop)(IActionProgressDialog *This);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IActionProgressDialogVtbl;")
cpp_quote("  struct IActionProgressDialog {")
cpp_quote("    CONST_VTBL struct IActionProgressDialogVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IActionProgressDialog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IActionProgressDialog_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IActionProgressDialog_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IActionProgressDialog_Initialize(This,flags,pszTitle,pszCancel) (This)->lpVtbl->Initialize(This,flags,pszTitle,pszCancel)")
cpp_quote("#define IActionProgressDialog_Stop(This) (This)->lpVtbl->Stop(This)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IActionProgressDialog_Initialize_Proxy(IActionProgressDialog *This,SPINITF flags,LPCWSTR pszTitle,LPCWSTR pszCancel);")
cpp_quote("  void __RPC_STUB IActionProgressDialog_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IActionProgressDialog_Stop_Proxy(IActionProgressDialog *This);")
cpp_quote("  void __RPC_STUB IActionProgressDialog_Stop_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IHWEventHandler_INTERFACE_DEFINED__")
cpp_quote("#define __IHWEventHandler_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IHWEventHandler;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IHWEventHandler : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Initialize(LPCWSTR pszParams) = 0;")
cpp_quote("    virtual HRESULT WINAPI HandleEvent(LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType) = 0;")
cpp_quote("    virtual HRESULT WINAPI HandleEventWithContent(LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType,LPCWSTR pszContentTypeHandler,IDataObject *pdataobject) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IHWEventHandlerVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IHWEventHandler *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IHWEventHandler *This);")
cpp_quote("      ULONG (WINAPI *Release)(IHWEventHandler *This);")
cpp_quote("      HRESULT (WINAPI *Initialize)(IHWEventHandler *This,LPCWSTR pszParams);")
cpp_quote("      HRESULT (WINAPI *HandleEvent)(IHWEventHandler *This,LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType);")
cpp_quote("      HRESULT (WINAPI *HandleEventWithContent)(IHWEventHandler *This,LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType,LPCWSTR pszContentTypeHandler,IDataObject *pdataobject);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IHWEventHandlerVtbl;")
cpp_quote("  struct IHWEventHandler {")
cpp_quote("    CONST_VTBL struct IHWEventHandlerVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IHWEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IHWEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IHWEventHandler_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IHWEventHandler_Initialize(This,pszParams) (This)->lpVtbl->Initialize(This,pszParams)")
cpp_quote("#define IHWEventHandler_HandleEvent(This,pszDeviceID,pszAltDeviceID,pszEventType) (This)->lpVtbl->HandleEvent(This,pszDeviceID,pszAltDeviceID,pszEventType)")
cpp_quote("#define IHWEventHandler_HandleEventWithContent(This,pszDeviceID,pszAltDeviceID,pszEventType,pszContentTypeHandler,pdataobject) (This)->lpVtbl->HandleEventWithContent(This,pszDeviceID,pszAltDeviceID,pszEventType,pszContentTypeHandler,pdataobject)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IHWEventHandler_Initialize_Proxy(IHWEventHandler *This,LPCWSTR pszParams);")
cpp_quote("  void __RPC_STUB IHWEventHandler_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IHWEventHandler_HandleEvent_Proxy(IHWEventHandler *This,LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType);")
cpp_quote("  void __RPC_STUB IHWEventHandler_HandleEvent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IHWEventHandler_HandleEventWithContent_Proxy(IHWEventHandler *This,LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType,LPCWSTR pszContentTypeHandler,IDataObject *pdataobject);")
cpp_quote("  void __RPC_STUB IHWEventHandler_HandleEventWithContent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define ARCONTENT_AUTORUNINF 0x00000002")
cpp_quote("#define ARCONTENT_AUDIOCD 0x00000004")
cpp_quote("#define ARCONTENT_DVDMOVIE 0x00000008")
cpp_quote("#define ARCONTENT_BLANKCD 0x00000010")
cpp_quote("#define ARCONTENT_BLANKDVD 0x00000020")
cpp_quote("#define ARCONTENT_UNKNOWNCONTENT 0x00000040")
cpp_quote("#define ARCONTENT_AUTOPLAYPIX 0x00000080")
cpp_quote("#define ARCONTENT_AUTOPLAYMUSIC 0x00000100")
cpp_quote("#define ARCONTENT_AUTOPLAYVIDEO 0x00000200")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0216_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0216_v0_0_s_ifspec;")
cpp_quote("#ifndef __IQueryCancelAutoPlay_INTERFACE_DEFINED__")
cpp_quote("#define __IQueryCancelAutoPlay_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IQueryCancelAutoPlay;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IQueryCancelAutoPlay : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI AllowAutoPlay(LPCWSTR pszPath,DWORD dwContentType,LPCWSTR pszLabel,DWORD dwSerialNumber) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IQueryCancelAutoPlayVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IQueryCancelAutoPlay *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IQueryCancelAutoPlay *This);")
cpp_quote("      ULONG (WINAPI *Release)(IQueryCancelAutoPlay *This);")
cpp_quote("      HRESULT (WINAPI *AllowAutoPlay)(IQueryCancelAutoPlay *This,LPCWSTR pszPath,DWORD dwContentType,LPCWSTR pszLabel,DWORD dwSerialNumber);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IQueryCancelAutoPlayVtbl;")
cpp_quote("  struct IQueryCancelAutoPlay {")
cpp_quote("    CONST_VTBL struct IQueryCancelAutoPlayVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IQueryCancelAutoPlay_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IQueryCancelAutoPlay_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IQueryCancelAutoPlay_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IQueryCancelAutoPlay_AllowAutoPlay(This,pszPath,dwContentType,pszLabel,dwSerialNumber) (This)->lpVtbl->AllowAutoPlay(This,pszPath,dwContentType,pszLabel,dwSerialNumber)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IQueryCancelAutoPlay_AllowAutoPlay_Proxy(IQueryCancelAutoPlay *This,LPCWSTR pszPath,DWORD dwContentType,LPCWSTR pszLabel,DWORD dwSerialNumber);")
cpp_quote("  void __RPC_STUB IQueryCancelAutoPlay_AllowAutoPlay_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IActionProgress_INTERFACE_DEFINED__")
cpp_quote("#define __IActionProgress_INTERFACE_DEFINED__")
cpp_quote("  enum __MIDL_IActionProgress_0001 {")
cpp_quote("    SPBEGINF_NORMAL = 0,SPBEGINF_AUTOTIME = 0x2,SPBEGINF_NOPROGRESSBAR = 0x10,SPBEGINF_MARQUEEPROGRESS = 0x20")
cpp_quote("  };")
cpp_quote("  typedef DWORD SPBEGINF;")
cpp_quote("")
cpp_quote("  typedef enum _SPACTION {")
cpp_quote("    SPACTION_NONE = 0,")
cpp_quote("    SPACTION_MOVING,SPACTION_COPYING,SPACTION_RECYCLING,SPACTION_APPLYINGATTRIBS,")
cpp_quote("    SPACTION_DOWNLOADING,SPACTION_SEARCHING_INTERNET,SPACTION_CALCULATING,")
cpp_quote("    SPACTION_UPLOADING,SPACTION_SEARCHING_FILES")
cpp_quote("  } SPACTION;")
cpp_quote("  typedef enum _SPTEXT {")
cpp_quote("    SPTEXT_ACTIONDESCRIPTION = 1,SPTEXT_ACTIONDETAIL = SPTEXT_ACTIONDESCRIPTION + 1")
cpp_quote("  } SPTEXT;")
cpp_quote("")
cpp_quote("  EXTERN_C const IID IID_IActionProgress;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IActionProgress : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Begin(SPACTION action,SPBEGINF flags) = 0;")
cpp_quote("    virtual HRESULT WINAPI UpdateProgress(ULONGLONG ulCompleted,ULONGLONG ulTotal) = 0;")
cpp_quote("    virtual HRESULT WINAPI UpdateText(SPTEXT sptext,LPCWSTR pszText,WINBOOL fMayCompact) = 0;")
cpp_quote("    virtual HRESULT WINAPI QueryCancel(WINBOOL *pfCancelled) = 0;")
cpp_quote("    virtual HRESULT WINAPI ResetCancel(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI End(void) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IActionProgressVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IActionProgress *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IActionProgress *This);")
cpp_quote("      ULONG (WINAPI *Release)(IActionProgress *This);")
cpp_quote("      HRESULT (WINAPI *Begin)(IActionProgress *This,SPACTION action,SPBEGINF flags);")
cpp_quote("      HRESULT (WINAPI *UpdateProgress)(IActionProgress *This,ULONGLONG ulCompleted,ULONGLONG ulTotal);")
cpp_quote("      HRESULT (WINAPI *UpdateText)(IActionProgress *This,SPTEXT sptext,LPCWSTR pszText,WINBOOL fMayCompact);")
cpp_quote("      HRESULT (WINAPI *QueryCancel)(IActionProgress *This,WINBOOL *pfCancelled);")
cpp_quote("      HRESULT (WINAPI *ResetCancel)(IActionProgress *This);")
cpp_quote("      HRESULT (WINAPI *End)(IActionProgress *This);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IActionProgressVtbl;")
cpp_quote("  struct IActionProgress {")
cpp_quote("    CONST_VTBL struct IActionProgressVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IActionProgress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IActionProgress_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IActionProgress_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IActionProgress_Begin(This,action,flags) (This)->lpVtbl->Begin(This,action,flags)")
cpp_quote("#define IActionProgress_UpdateProgress(This,ulCompleted,ulTotal) (This)->lpVtbl->UpdateProgress(This,ulCompleted,ulTotal)")
cpp_quote("#define IActionProgress_UpdateText(This,sptext,pszText,fMayCompact) (This)->lpVtbl->UpdateText(This,sptext,pszText,fMayCompact)")
cpp_quote("#define IActionProgress_QueryCancel(This,pfCancelled) (This)->lpVtbl->QueryCancel(This,pfCancelled)")
cpp_quote("#define IActionProgress_ResetCancel(This) (This)->lpVtbl->ResetCancel(This)")
cpp_quote("#define IActionProgress_End(This) (This)->lpVtbl->End(This)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IActionProgress_Begin_Proxy(IActionProgress *This,SPACTION action,SPBEGINF flags);")
cpp_quote("  void __RPC_STUB IActionProgress_Begin_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IActionProgress_UpdateProgress_Proxy(IActionProgress *This,ULONGLONG ulCompleted,ULONGLONG ulTotal);")
cpp_quote("  void __RPC_STUB IActionProgress_UpdateProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IActionProgress_UpdateText_Proxy(IActionProgress *This,SPTEXT sptext,LPCWSTR pszText,WINBOOL fMayCompact);")
cpp_quote("  void __RPC_STUB IActionProgress_UpdateText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IActionProgress_QueryCancel_Proxy(IActionProgress *This,WINBOOL *pfCancelled);")
cpp_quote("  void __RPC_STUB IActionProgress_QueryCancel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IActionProgress_ResetCancel_Proxy(IActionProgress *This);")
cpp_quote("  void __RPC_STUB IActionProgress_ResetCancel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IActionProgress_End_Proxy(IActionProgress *This);")
cpp_quote("  void __RPC_STUB IActionProgress_End_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IShellExtInit_INTERFACE_DEFINED__")
cpp_quote("#define __IShellExtInit_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IShellExtInit;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IShellExtInit : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Initialize(LPCITEMIDLIST pidlFolder,IDataObject *pdtobj,HKEY hkeyProgID) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IShellExtInitVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IShellExtInit *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IShellExtInit *This);")
cpp_quote("      ULONG (WINAPI *Release)(IShellExtInit *This);")
cpp_quote("      HRESULT (WINAPI *Initialize)(IShellExtInit *This,LPCITEMIDLIST pidlFolder,IDataObject *pdtobj,HKEY hkeyProgID);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IShellExtInitVtbl;")
cpp_quote("  struct IShellExtInit {")
cpp_quote("    CONST_VTBL struct IShellExtInitVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IShellExtInit_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IShellExtInit_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IShellExtInit_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IShellExtInit_Initialize(This,pidlFolder,pdtobj,hkeyProgID) (This)->lpVtbl->Initialize(This,pidlFolder,pdtobj,hkeyProgID)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IShellExtInit_Initialize_Proxy(IShellExtInit *This,LPCITEMIDLIST pidlFolder,IDataObject *pdtobj,HKEY hkeyProgID);")
cpp_quote("  void __RPC_STUB IShellExtInit_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  typedef IShellExtInit *LPSHELLEXTINIT;")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0219_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0219_v0_0_s_ifspec;")
cpp_quote("#ifndef __IShellPropSheetExt_INTERFACE_DEFINED__")
cpp_quote("#define __IShellPropSheetExt_INTERFACE_DEFINED__")
cpp_quote("  enum __MIDL_IShellPropSheetExt_0001 {")
cpp_quote("    EXPPS_FILETYPES = 0x1")
cpp_quote("  };")
cpp_quote("  typedef UINT EXPPS;")
cpp_quote("")
cpp_quote("  EXTERN_C const IID IID_IShellPropSheetExt;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IShellPropSheetExt : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI AddPages(LPFNSVADDPROPSHEETPAGE pfnAddPage,LPARAM lParam) = 0;")
cpp_quote("    virtual HRESULT WINAPI ReplacePage(EXPPS uPageID,LPFNSVADDPROPSHEETPAGE pfnReplaceWith,LPARAM lParam) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IShellPropSheetExtVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IShellPropSheetExt *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IShellPropSheetExt *This);")
cpp_quote("      ULONG (WINAPI *Release)(IShellPropSheetExt *This);")
cpp_quote("      HRESULT (WINAPI *AddPages)(IShellPropSheetExt *This,LPFNSVADDPROPSHEETPAGE pfnAddPage,LPARAM lParam);")
cpp_quote("      HRESULT (WINAPI *ReplacePage)(IShellPropSheetExt *This,EXPPS uPageID,LPFNSVADDPROPSHEETPAGE pfnReplaceWith,LPARAM lParam);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IShellPropSheetExtVtbl;")
cpp_quote("  struct IShellPropSheetExt {")
cpp_quote("    CONST_VTBL struct IShellPropSheetExtVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IShellPropSheetExt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IShellPropSheetExt_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IShellPropSheetExt_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IShellPropSheetExt_AddPages(This,pfnAddPage,lParam) (This)->lpVtbl->AddPages(This,pfnAddPage,lParam)")
cpp_quote("#define IShellPropSheetExt_ReplacePage(This,uPageID,pfnReplaceWith,lParam) (This)->lpVtbl->ReplacePage(This,uPageID,pfnReplaceWith,lParam)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IShellPropSheetExt_AddPages_Proxy(IShellPropSheetExt *This,LPFNSVADDPROPSHEETPAGE pfnAddPage,LPARAM lParam);")
cpp_quote("  void __RPC_STUB IShellPropSheetExt_AddPages_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellPropSheetExt_ReplacePage_Proxy(IShellPropSheetExt *This,EXPPS uPageID,LPFNSVADDPROPSHEETPAGE pfnReplaceWith,LPARAM lParam);")
cpp_quote("  void __RPC_STUB IShellPropSheetExt_ReplacePage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0220_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0220_v0_0_s_ifspec;")
cpp_quote("#ifndef __IRemoteComputer_INTERFACE_DEFINED__")
cpp_quote("#define __IRemoteComputer_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IRemoteComputer;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IRemoteComputer : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Initialize(LPCWSTR pszMachine,WINBOOL bEnumerating) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IRemoteComputerVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IRemoteComputer *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IRemoteComputer *This);")
cpp_quote("      ULONG (WINAPI *Release)(IRemoteComputer *This);")
cpp_quote("      HRESULT (WINAPI *Initialize)(IRemoteComputer *This,LPCWSTR pszMachine,WINBOOL bEnumerating);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IRemoteComputerVtbl;")
cpp_quote("  struct IRemoteComputer {")
cpp_quote("    CONST_VTBL struct IRemoteComputerVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IRemoteComputer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IRemoteComputer_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IRemoteComputer_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IRemoteComputer_Initialize(This,pszMachine,bEnumerating) (This)->lpVtbl->Initialize(This,pszMachine,bEnumerating)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IRemoteComputer_Initialize_Proxy(IRemoteComputer *This,LPCWSTR pszMachine,WINBOOL bEnumerating);")
cpp_quote("  void __RPC_STUB IRemoteComputer_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IQueryContinue_INTERFACE_DEFINED__")
cpp_quote("#define __IQueryContinue_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IQueryContinue;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IQueryContinue : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI QueryContinue(void) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IQueryContinueVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IQueryContinue *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IQueryContinue *This);")
cpp_quote("      ULONG (WINAPI *Release)(IQueryContinue *This);")
cpp_quote("      HRESULT (WINAPI *QueryContinue)(IQueryContinue *This);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IQueryContinueVtbl;")
cpp_quote("  struct IQueryContinue {")
cpp_quote("    CONST_VTBL struct IQueryContinueVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IQueryContinue_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IQueryContinue_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IQueryContinue_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IQueryContinue_QueryContinue(This) (This)->lpVtbl->QueryContinue(This)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IQueryContinue_QueryContinue_Proxy(IQueryContinue *This);")
cpp_quote("  void __RPC_STUB IQueryContinue_QueryContinue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IUserNotification_INTERFACE_DEFINED__")
cpp_quote("#define __IUserNotification_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IUserNotification;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IUserNotification : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI SetBalloonInfo(LPCWSTR pszTitle,LPCWSTR pszText,DWORD dwInfoFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetBalloonRetry(DWORD dwShowTime,DWORD dwInterval,UINT cRetryCount) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetIconInfo(HICON hIcon,LPCWSTR pszToolTip) = 0;")
cpp_quote("    virtual HRESULT WINAPI Show(IQueryContinue *pqc,DWORD dwContinuePollInterval) = 0;")
cpp_quote("    virtual HRESULT WINAPI PlaySound(LPCWSTR pszSoundName) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IUserNotificationVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IUserNotification *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IUserNotification *This);")
cpp_quote("      ULONG (WINAPI *Release)(IUserNotification *This);")
cpp_quote("      HRESULT (WINAPI *SetBalloonInfo)(IUserNotification *This,LPCWSTR pszTitle,LPCWSTR pszText,DWORD dwInfoFlags);")
cpp_quote("      HRESULT (WINAPI *SetBalloonRetry)(IUserNotification *This,DWORD dwShowTime,DWORD dwInterval,UINT cRetryCount);")
cpp_quote("      HRESULT (WINAPI *SetIconInfo)(IUserNotification *This,HICON hIcon,LPCWSTR pszToolTip);")
cpp_quote("      HRESULT (WINAPI *Show)(IUserNotification *This,IQueryContinue *pqc,DWORD dwContinuePollInterval);")
cpp_quote("      HRESULT (WINAPI *PlaySound)(IUserNotification *This,LPCWSTR pszSoundName);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IUserNotificationVtbl;")
cpp_quote("  struct IUserNotification {")
cpp_quote("    CONST_VTBL struct IUserNotificationVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IUserNotification_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IUserNotification_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IUserNotification_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IUserNotification_SetBalloonInfo(This,pszTitle,pszText,dwInfoFlags) (This)->lpVtbl->SetBalloonInfo(This,pszTitle,pszText,dwInfoFlags)")
cpp_quote("#define IUserNotification_SetBalloonRetry(This,dwShowTime,dwInterval,cRetryCount) (This)->lpVtbl->SetBalloonRetry(This,dwShowTime,dwInterval,cRetryCount)")
cpp_quote("#define IUserNotification_SetIconInfo(This,hIcon,pszToolTip) (This)->lpVtbl->SetIconInfo(This,hIcon,pszToolTip)")
cpp_quote("#define IUserNotification_Show(This,pqc,dwContinuePollInterval) (This)->lpVtbl->Show(This,pqc,dwContinuePollInterval)")
cpp_quote("#define IUserNotification_PlaySound(This,pszSoundName) (This)->lpVtbl->PlaySound(This,pszSoundName)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IUserNotification_SetBalloonInfo_Proxy(IUserNotification *This,LPCWSTR pszTitle,LPCWSTR pszText,DWORD dwInfoFlags);")
cpp_quote("  void __RPC_STUB IUserNotification_SetBalloonInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IUserNotification_SetBalloonRetry_Proxy(IUserNotification *This,DWORD dwShowTime,DWORD dwInterval,UINT cRetryCount);")
cpp_quote("  void __RPC_STUB IUserNotification_SetBalloonRetry_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IUserNotification_SetIconInfo_Proxy(IUserNotification *This,HICON hIcon,LPCWSTR pszToolTip);")
cpp_quote("  void __RPC_STUB IUserNotification_SetIconInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IUserNotification_Show_Proxy(IUserNotification *This,IQueryContinue *pqc,DWORD dwContinuePollInterval);")
cpp_quote("  void __RPC_STUB IUserNotification_Show_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IUserNotification_PlaySound_Proxy(IUserNotification *This,LPCWSTR pszSoundName);")
cpp_quote("  void __RPC_STUB IUserNotification_PlaySound_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IItemNameLimits_INTERFACE_DEFINED__")
cpp_quote("#define __IItemNameLimits_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IItemNameLimits;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IItemNameLimits : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetValidCharacters(LPWSTR *ppwszValidChars,LPWSTR *ppwszInvalidChars) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetMaxLength(LPCWSTR pszName,int *piMaxNameLen) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IItemNameLimitsVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IItemNameLimits *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IItemNameLimits *This);")
cpp_quote("      ULONG (WINAPI *Release)(IItemNameLimits *This);")
cpp_quote("      HRESULT (WINAPI *GetValidCharacters)(IItemNameLimits *This,LPWSTR *ppwszValidChars,LPWSTR *ppwszInvalidChars);")
cpp_quote("      HRESULT (WINAPI *GetMaxLength)(IItemNameLimits *This,LPCWSTR pszName,int *piMaxNameLen);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IItemNameLimitsVtbl;")
cpp_quote("  struct IItemNameLimits {")
cpp_quote("    CONST_VTBL struct IItemNameLimitsVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IItemNameLimits_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IItemNameLimits_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IItemNameLimits_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IItemNameLimits_GetValidCharacters(This,ppwszValidChars,ppwszInvalidChars) (This)->lpVtbl->GetValidCharacters(This,ppwszValidChars,ppwszInvalidChars)")
cpp_quote("#define IItemNameLimits_GetMaxLength(This,pszName,piMaxNameLen) (This)->lpVtbl->GetMaxLength(This,pszName,piMaxNameLen)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IItemNameLimits_GetValidCharacters_Proxy(IItemNameLimits *This,LPWSTR *ppwszValidChars,LPWSTR *ppwszInvalidChars);")
cpp_quote("  void __RPC_STUB IItemNameLimits_GetValidCharacters_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IItemNameLimits_GetMaxLength_Proxy(IItemNameLimits *This,LPCWSTR pszName,int *piMaxNameLen);")
cpp_quote("  void __RPC_STUB IItemNameLimits_GetMaxLength_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define SNCF_REFRESHLIST 0x00000001")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0224_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0224_v0_0_s_ifspec;")
cpp_quote("#ifndef __INetCrawler_INTERFACE_DEFINED__")
cpp_quote("#define __INetCrawler_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_INetCrawler;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct INetCrawler : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Update(DWORD dwFlags) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct INetCrawlerVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(INetCrawler *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(INetCrawler *This);")
cpp_quote("      ULONG (WINAPI *Release)(INetCrawler *This);")
cpp_quote("      HRESULT (WINAPI *Update)(INetCrawler *This,DWORD dwFlags);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } INetCrawlerVtbl;")
cpp_quote("  struct INetCrawler {")
cpp_quote("    CONST_VTBL struct INetCrawlerVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define INetCrawler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define INetCrawler_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define INetCrawler_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define INetCrawler_Update(This,dwFlags) (This)->lpVtbl->Update(This,dwFlags)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI INetCrawler_Update_Proxy(INetCrawler *This,DWORD dwFlags);")
cpp_quote("  void __RPC_STUB INetCrawler_Update_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#if (0x501 >= 0x0400)")
cpp_quote("#define IEI_PRIORITY_MAX ITSAT_MAX_PRIORITY")
cpp_quote("#define IEI_PRIORITY_MIN ITSAT_MIN_PRIORITY")
cpp_quote("#define IEIT_PRIORITY_NORMAL ITSAT_DEFAULT_PRIORITY")
cpp_quote("#define IEIFLAG_ASYNC 0x0001")
cpp_quote("#define IEIFLAG_CACHE 0x0002")
cpp_quote("#define IEIFLAG_ASPECT 0x0004")
cpp_quote("#define IEIFLAG_OFFLINE 0x0008")
cpp_quote("#define IEIFLAG_GLEAM 0x0010")
cpp_quote("#define IEIFLAG_SCREEN 0x0020")
cpp_quote("#define IEIFLAG_ORIGSIZE 0x0040")
cpp_quote("#define IEIFLAG_NOSTAMP 0x0080")
cpp_quote("#define IEIFLAG_NOBORDER 0x0100")
cpp_quote("#define IEIFLAG_QUALITY 0x0200")
cpp_quote("#define IEIFLAG_REFRESH 0x0400")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0225_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0225_v0_0_s_ifspec;")
cpp_quote("#ifndef __IExtractImage_INTERFACE_DEFINED__")
cpp_quote("#define __IExtractImage_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IExtractImage;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IExtractImage : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetLocation(LPWSTR pszPathBuffer,DWORD cch,DWORD *pdwPriority,const SIZE *prgSize,DWORD dwRecClrDepth,DWORD *pdwFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI Extract(HBITMAP *phBmpThumbnail) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IExtractImageVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IExtractImage *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IExtractImage *This);")
cpp_quote("      ULONG (WINAPI *Release)(IExtractImage *This);")
cpp_quote("      HRESULT (WINAPI *GetLocation)(IExtractImage *This,LPWSTR pszPathBuffer,DWORD cch,DWORD *pdwPriority,const SIZE *prgSize,DWORD dwRecClrDepth,DWORD *pdwFlags);")
cpp_quote("      HRESULT (WINAPI *Extract)(IExtractImage *This,HBITMAP *phBmpThumbnail);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IExtractImageVtbl;")
cpp_quote("  struct IExtractImage {")
cpp_quote("    CONST_VTBL struct IExtractImageVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IExtractImage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IExtractImage_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IExtractImage_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IExtractImage_GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags) (This)->lpVtbl->GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags)")
cpp_quote("#define IExtractImage_Extract(This,phBmpThumbnail) (This)->lpVtbl->Extract(This,phBmpThumbnail)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IExtractImage_GetLocation_Proxy(IExtractImage *This,LPWSTR pszPathBuffer,DWORD cch,DWORD *pdwPriority,const SIZE *prgSize,DWORD dwRecClrDepth,DWORD *pdwFlags);")
cpp_quote("  void __RPC_STUB IExtractImage_GetLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IExtractImage_Extract_Proxy(IExtractImage *This,HBITMAP *phBmpThumbnail);")
cpp_quote("  void __RPC_STUB IExtractImage_Extract_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  typedef IExtractImage *LPEXTRACTIMAGE;")
cpp_quote("#endif")
cpp_quote("#if (0x501 >= 0x0500)")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0226_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0226_v0_0_s_ifspec;")
cpp_quote("#ifndef __IExtractImage2_INTERFACE_DEFINED__")
cpp_quote("#define __IExtractImage2_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IExtractImage2;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IExtractImage2 : public IExtractImage {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetDateStamp(FILETIME *pDateStamp) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IExtractImage2Vtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IExtractImage2 *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IExtractImage2 *This);")
cpp_quote("      ULONG (WINAPI *Release)(IExtractImage2 *This);")
cpp_quote("      HRESULT (WINAPI *GetLocation)(IExtractImage2 *This,LPWSTR pszPathBuffer,DWORD cch,DWORD *pdwPriority,const SIZE *prgSize,DWORD dwRecClrDepth,DWORD *pdwFlags);")
cpp_quote("      HRESULT (WINAPI *Extract)(IExtractImage2 *This,HBITMAP *phBmpThumbnail);")
cpp_quote("      HRESULT (WINAPI *GetDateStamp)(IExtractImage2 *This,FILETIME *pDateStamp);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IExtractImage2Vtbl;")
cpp_quote("  struct IExtractImage2 {")
cpp_quote("    CONST_VTBL struct IExtractImage2Vtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IExtractImage2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IExtractImage2_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IExtractImage2_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IExtractImage2_GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags) (This)->lpVtbl->GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags)")
cpp_quote("#define IExtractImage2_Extract(This,phBmpThumbnail) (This)->lpVtbl->Extract(This,phBmpThumbnail)")
cpp_quote("#define IExtractImage2_GetDateStamp(This,pDateStamp) (This)->lpVtbl->GetDateStamp(This,pDateStamp)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IExtractImage2_GetDateStamp_Proxy(IExtractImage2 *This,FILETIME *pDateStamp);")
cpp_quote("  void __RPC_STUB IExtractImage2_GetDateStamp_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  typedef IExtractImage2 *LPEXTRACTIMAGE2;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0227_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0227_v0_0_s_ifspec;")
cpp_quote("#ifndef __IUserEventTimerCallback_INTERFACE_DEFINED__")
cpp_quote("#define __IUserEventTimerCallback_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IUserEventTimerCallback;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IUserEventTimerCallback : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI UserEventTimerProc(ULONG uUserEventTimerID,UINT uTimerElapse) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IUserEventTimerCallbackVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IUserEventTimerCallback *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IUserEventTimerCallback *This);")
cpp_quote("      ULONG (WINAPI *Release)(IUserEventTimerCallback *This);")
cpp_quote("      HRESULT (WINAPI *UserEventTimerProc)(IUserEventTimerCallback *This,ULONG uUserEventTimerID,UINT uTimerElapse);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IUserEventTimerCallbackVtbl;")
cpp_quote("  struct IUserEventTimerCallback {")
cpp_quote("    CONST_VTBL struct IUserEventTimerCallbackVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IUserEventTimerCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IUserEventTimerCallback_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IUserEventTimerCallback_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IUserEventTimerCallback_UserEventTimerProc(This,uUserEventTimerID,uTimerElapse) (This)->lpVtbl->UserEventTimerProc(This,uUserEventTimerID,uTimerElapse)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IUserEventTimerCallback_UserEventTimerProc_Proxy(IUserEventTimerCallback *This,ULONG uUserEventTimerID,UINT uTimerElapse);")
cpp_quote("  void __RPC_STUB IUserEventTimerCallback_UserEventTimerProc_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0228_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0228_v0_0_s_ifspec;")
cpp_quote("#ifndef __IUserEventTimer_INTERFACE_DEFINED__")
cpp_quote("#define __IUserEventTimer_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IUserEventTimer;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IUserEventTimer : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI SetUserEventTimer(HWND hWnd,UINT uCallbackMessage,UINT uTimerElapse,IUserEventTimerCallback *pUserEventTimerCallback,ULONG *puUserEventTimerID) = 0;")
cpp_quote("    virtual HRESULT WINAPI KillUserEventTimer(HWND hWnd,ULONG uUserEventTimerID) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetUserEventTimerElapsed(HWND hWnd,ULONG uUserEventTimerID,UINT *puTimerElapsed) = 0;")
cpp_quote("    virtual HRESULT WINAPI InitTimerTickInterval(UINT uTimerTickIntervalMs) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IUserEventTimerVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IUserEventTimer *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IUserEventTimer *This);")
cpp_quote("      ULONG (WINAPI *Release)(IUserEventTimer *This);")
cpp_quote("      HRESULT (WINAPI *SetUserEventTimer)(IUserEventTimer *This,HWND hWnd,UINT uCallbackMessage,UINT uTimerElapse,IUserEventTimerCallback *pUserEventTimerCallback,ULONG *puUserEventTimerID);")
cpp_quote("      HRESULT (WINAPI *KillUserEventTimer)(IUserEventTimer *This,HWND hWnd,ULONG uUserEventTimerID);")
cpp_quote("      HRESULT (WINAPI *GetUserEventTimerElapsed)(IUserEventTimer *This,HWND hWnd,ULONG uUserEventTimerID,UINT *puTimerElapsed);")
cpp_quote("      HRESULT (WINAPI *InitTimerTickInterval)(IUserEventTimer *This,UINT uTimerTickIntervalMs);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IUserEventTimerVtbl;")
cpp_quote("  struct IUserEventTimer {")
cpp_quote("    CONST_VTBL struct IUserEventTimerVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IUserEventTimer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IUserEventTimer_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IUserEventTimer_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IUserEventTimer_SetUserEventTimer(This,hWnd,uCallbackMessage,uTimerElapse,pUserEventTimerCallback,puUserEventTimerID) (This)->lpVtbl->SetUserEventTimer(This,hWnd,uCallbackMessage,uTimerElapse,pUserEventTimerCallback,puUserEventTimerID)")
cpp_quote("#define IUserEventTimer_KillUserEventTimer(This,hWnd,uUserEventTimerID) (This)->lpVtbl->KillUserEventTimer(This,hWnd,uUserEventTimerID)")
cpp_quote("#define IUserEventTimer_GetUserEventTimerElapsed(This,hWnd,uUserEventTimerID,puTimerElapsed) (This)->lpVtbl->GetUserEventTimerElapsed(This,hWnd,uUserEventTimerID,puTimerElapsed)")
cpp_quote("#define IUserEventTimer_InitTimerTickInterval(This,uTimerTickIntervalMs) (This)->lpVtbl->InitTimerTickInterval(This,uTimerTickIntervalMs)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IUserEventTimer_SetUserEventTimer_Proxy(IUserEventTimer *This,HWND hWnd,UINT uCallbackMessage,UINT uTimerElapse,IUserEventTimerCallback *pUserEventTimerCallback,ULONG *puUserEventTimerID);")
cpp_quote("  void __RPC_STUB IUserEventTimer_SetUserEventTimer_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IUserEventTimer_KillUserEventTimer_Proxy(IUserEventTimer *This,HWND hWnd,ULONG uUserEventTimerID);")
cpp_quote("  void __RPC_STUB IUserEventTimer_KillUserEventTimer_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IUserEventTimer_GetUserEventTimerElapsed_Proxy(IUserEventTimer *This,HWND hWnd,ULONG uUserEventTimerID,UINT *puTimerElapsed);")
cpp_quote("  void __RPC_STUB IUserEventTimer_GetUserEventTimerElapsed_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IUserEventTimer_InitTimerTickInterval_Proxy(IUserEventTimer *This,UINT uTimerTickIntervalMs);")
cpp_quote("  void __RPC_STUB IUserEventTimer_InitTimerTickInterval_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IDockingWindow_INTERFACE_DEFINED__")
cpp_quote("#define __IDockingWindow_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IDockingWindow;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IDockingWindow : public IOleWindow {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI ShowDW(WINBOOL fShow) = 0;")
cpp_quote("    virtual HRESULT WINAPI CloseDW(DWORD dwReserved) = 0;")
cpp_quote("    virtual HRESULT WINAPI ResizeBorderDW(LPCRECT prcBorder,IUnknown *punkToolbarSite,WINBOOL fReserved) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IDockingWindowVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IDockingWindow *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IDockingWindow *This);")
cpp_quote("      ULONG (WINAPI *Release)(IDockingWindow *This);")
cpp_quote("      HRESULT (WINAPI *GetWindow)(IDockingWindow *This,HWND *phwnd);")
cpp_quote("      HRESULT (WINAPI *ContextSensitiveHelp)(IDockingWindow *This,WINBOOL fEnterMode);")
cpp_quote("      HRESULT (WINAPI *ShowDW)(IDockingWindow *This,WINBOOL fShow);")
cpp_quote("      HRESULT (WINAPI *CloseDW)(IDockingWindow *This,DWORD dwReserved);")
cpp_quote("      HRESULT (WINAPI *ResizeBorderDW)(IDockingWindow *This,LPCRECT prcBorder,IUnknown *punkToolbarSite,WINBOOL fReserved);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IDockingWindowVtbl;")
cpp_quote("  struct IDockingWindow {")
cpp_quote("    CONST_VTBL struct IDockingWindowVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IDockingWindow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IDockingWindow_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IDockingWindow_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IDockingWindow_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)")
cpp_quote("#define IDockingWindow_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)")
cpp_quote("#define IDockingWindow_ShowDW(This,fShow) (This)->lpVtbl->ShowDW(This,fShow)")
cpp_quote("#define IDockingWindow_CloseDW(This,dwReserved) (This)->lpVtbl->CloseDW(This,dwReserved)")
cpp_quote("#define IDockingWindow_ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved) (This)->lpVtbl->ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IDockingWindow_ShowDW_Proxy(IDockingWindow *This,WINBOOL fShow);")
cpp_quote("  void __RPC_STUB IDockingWindow_ShowDW_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IDockingWindow_CloseDW_Proxy(IDockingWindow *This,DWORD dwReserved);")
cpp_quote("  void __RPC_STUB IDockingWindow_CloseDW_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IDockingWindow_ResizeBorderDW_Proxy(IDockingWindow *This,LPCRECT prcBorder,IUnknown *punkToolbarSite,WINBOOL fReserved);")
cpp_quote("  void __RPC_STUB IDockingWindow_ResizeBorderDW_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define DBIM_MINSIZE 0x0001")
cpp_quote("#define DBIM_MAXSIZE 0x0002")
cpp_quote("#define DBIM_INTEGRAL 0x0004")
cpp_quote("#define DBIM_ACTUAL 0x0008")
cpp_quote("#define DBIM_TITLE 0x0010")
cpp_quote("#define DBIM_MODEFLAGS 0x0020")
cpp_quote("#define DBIM_BKCOLOR 0x0040")
cpp_quote("")
cpp_quote("#include <pshpack8.h>")
cpp_quote("")
cpp_quote("  typedef struct __MIDL___MIDL_itf_shobjidl_0230_0001 {")
cpp_quote("    DWORD dwMask;")
cpp_quote("    POINTL ptMinSize;")
cpp_quote("    POINTL ptMaxSize;")
cpp_quote("    POINTL ptIntegral;")
cpp_quote("    POINTL ptActual;")
cpp_quote("    WCHAR wszTitle[256];")
cpp_quote("    DWORD dwModeFlags;")
cpp_quote("    COLORREF crBkgnd;")
cpp_quote("  } DESKBANDINFO;")
cpp_quote("")
cpp_quote("#include <poppack.h>")
cpp_quote("#define DBIMF_NORMAL 0x0000")
cpp_quote("#define DBIMF_FIXED 0x0001")
cpp_quote("#define DBIMF_FIXEDBMP 0x0004")
cpp_quote("#define DBIMF_VARIABLEHEIGHT 0x0008")
cpp_quote("#define DBIMF_UNDELETEABLE 0x0010")
cpp_quote("#define DBIMF_DEBOSSED 0x0020")
cpp_quote("#define DBIMF_BKCOLOR 0x0040")
cpp_quote("#define DBIMF_USECHEVRON 0x0080")
cpp_quote("#define DBIMF_BREAK 0x0100")
cpp_quote("#define DBIMF_ADDTOFRONT 0x0200")
cpp_quote("#define DBIMF_TOPALIGN 0x0400")
cpp_quote("#define DBIF_VIEWMODE_NORMAL 0x0000")
cpp_quote("#define DBIF_VIEWMODE_VERTICAL 0x0001")
cpp_quote("#define DBIF_VIEWMODE_FLOATING 0x0002")
cpp_quote("#define DBIF_VIEWMODE_TRANSPARENT 0x0004")
cpp_quote("")
cpp_quote("  enum __MIDL___MIDL_itf_shobjidl_0230_0002 {")
cpp_quote("    DBID_BANDINFOCHANGED = 0,DBID_SHOWONLY = 1,DBID_MAXIMIZEBAND = 2,DBID_PUSHCHEVRON = 3,DBID_DELAYINIT = 4,DBID_FINISHINIT = 5,")
cpp_quote("    DBID_SETWINDOWTHEME = 6,DBID_PERMITAUTOHIDE = 7")
cpp_quote("  };")
cpp_quote("#define DBPC_SELECTFIRST (DWORD)-1")
cpp_quote("#define DBPC_SELECTLAST (DWORD)-2")
cpp_quote("#define CGID_DeskBand IID_IDeskBand")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0230_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0230_v0_0_s_ifspec;")
cpp_quote("#ifndef __IDeskBand_INTERFACE_DEFINED__")
cpp_quote("#define __IDeskBand_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IDeskBand;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IDeskBand : public IDockingWindow {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetBandInfo(DWORD dwBandID,DWORD dwViewMode,DESKBANDINFO *pdbi) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IDeskBandVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IDeskBand *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IDeskBand *This);")
cpp_quote("      ULONG (WINAPI *Release)(IDeskBand *This);")
cpp_quote("      HRESULT (WINAPI *GetWindow)(IDeskBand *This,HWND *phwnd);")
cpp_quote("      HRESULT (WINAPI *ContextSensitiveHelp)(IDeskBand *This,WINBOOL fEnterMode);")
cpp_quote("      HRESULT (WINAPI *ShowDW)(IDeskBand *This,WINBOOL fShow);")
cpp_quote("      HRESULT (WINAPI *CloseDW)(IDeskBand *This,DWORD dwReserved);")
cpp_quote("      HRESULT (WINAPI *ResizeBorderDW)(IDeskBand *This,LPCRECT prcBorder,IUnknown *punkToolbarSite,WINBOOL fReserved);")
cpp_quote("      HRESULT (WINAPI *GetBandInfo)(IDeskBand *This,DWORD dwBandID,DWORD dwViewMode,DESKBANDINFO *pdbi);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IDeskBandVtbl;")
cpp_quote("  struct IDeskBand {")
cpp_quote("    CONST_VTBL struct IDeskBandVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IDeskBand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IDeskBand_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IDeskBand_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IDeskBand_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)")
cpp_quote("#define IDeskBand_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)")
cpp_quote("#define IDeskBand_ShowDW(This,fShow) (This)->lpVtbl->ShowDW(This,fShow)")
cpp_quote("#define IDeskBand_CloseDW(This,dwReserved) (This)->lpVtbl->CloseDW(This,dwReserved)")
cpp_quote("#define IDeskBand_ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved) (This)->lpVtbl->ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved)")
cpp_quote("#define IDeskBand_GetBandInfo(This,dwBandID,dwViewMode,pdbi) (This)->lpVtbl->GetBandInfo(This,dwBandID,dwViewMode,pdbi)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IDeskBand_GetBandInfo_Proxy(IDeskBand *This,DWORD dwBandID,DWORD dwViewMode,DESKBANDINFO *pdbi);")
cpp_quote("  void __RPC_STUB IDeskBand_GetBandInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __ITaskbarList_INTERFACE_DEFINED__")
cpp_quote("#define __ITaskbarList_INTERFACE_DEFINED__")
cpp_quote("  DEFINE_GUID(IID_ITaskbarList,0x56FDF342L,0xFD6D,0x11D0,0x95,0x8A,0x00,0x60,0x97,0xC9,0xA0,0x90);")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct ITaskbarList : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI HrInit(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI AddTab(HWND hwnd) = 0;")
cpp_quote("    virtual HRESULT WINAPI DeleteTab(HWND hwnd) = 0;")
cpp_quote("    virtual HRESULT WINAPI ActivateTab(HWND hwnd) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetActiveAlt(HWND hwnd) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct ITaskbarListVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(ITaskbarList *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(ITaskbarList *This);")
cpp_quote("      ULONG (WINAPI *Release)(ITaskbarList *This);")
cpp_quote("      HRESULT (WINAPI *HrInit)(ITaskbarList *This);")
cpp_quote("      HRESULT (WINAPI *AddTab)(ITaskbarList *This,HWND hwnd);")
cpp_quote("      HRESULT (WINAPI *DeleteTab)(ITaskbarList *This,HWND hwnd);")
cpp_quote("      HRESULT (WINAPI *ActivateTab)(ITaskbarList *This,HWND hwnd);")
cpp_quote("      HRESULT (WINAPI *SetActiveAlt)(ITaskbarList *This,HWND hwnd);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } ITaskbarListVtbl;")
cpp_quote("  struct ITaskbarList {")
cpp_quote("    CONST_VTBL struct ITaskbarListVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define ITaskbarList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define ITaskbarList_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define ITaskbarList_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define ITaskbarList_HrInit(This) (This)->lpVtbl->HrInit(This)")
cpp_quote("#define ITaskbarList_AddTab(This,hwnd) (This)->lpVtbl->AddTab(This,hwnd)")
cpp_quote("#define ITaskbarList_DeleteTab(This,hwnd) (This)->lpVtbl->DeleteTab(This,hwnd)")
cpp_quote("#define ITaskbarList_ActivateTab(This,hwnd) (This)->lpVtbl->ActivateTab(This,hwnd)")
cpp_quote("#define ITaskbarList_SetActiveAlt(This,hwnd) (This)->lpVtbl->SetActiveAlt(This,hwnd)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI ITaskbarList_HrInit_Proxy(ITaskbarList *This);")
cpp_quote("  void __RPC_STUB ITaskbarList_HrInit_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ITaskbarList_AddTab_Proxy(ITaskbarList *This,HWND hwnd);")
cpp_quote("  void __RPC_STUB ITaskbarList_AddTab_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ITaskbarList_DeleteTab_Proxy(ITaskbarList *This,HWND hwnd);")
cpp_quote("  void __RPC_STUB ITaskbarList_DeleteTab_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ITaskbarList_ActivateTab_Proxy(ITaskbarList *This,HWND hwnd);")
cpp_quote("  void __RPC_STUB ITaskbarList_ActivateTab_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ITaskbarList_SetActiveAlt_Proxy(ITaskbarList *This,HWND hwnd);")
cpp_quote("  void __RPC_STUB ITaskbarList_SetActiveAlt_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __ITaskbarList2_INTERFACE_DEFINED__")
cpp_quote("#define __ITaskbarList2_INTERFACE_DEFINED__")
cpp_quote("  DEFINE_GUID(IID_ITaskbarList2,0x602D4995L,0xB13A,0x429b,0xA6,0x6E,0x19,0x35,0xE4,0x4F,0x43,0x17);")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct ITaskbarList2 : public ITaskbarList {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI MarkFullscreenWindow(HWND hwnd,WINBOOL fFullscreen) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct ITaskbarList2Vtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(ITaskbarList2 *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(ITaskbarList2 *This);")
cpp_quote("      ULONG (WINAPI *Release)(ITaskbarList2 *This);")
cpp_quote("      HRESULT (WINAPI *HrInit)(ITaskbarList2 *This);")
cpp_quote("      HRESULT (WINAPI *AddTab)(ITaskbarList2 *This,HWND hwnd);")
cpp_quote("      HRESULT (WINAPI *DeleteTab)(ITaskbarList2 *This,HWND hwnd);")
cpp_quote("      HRESULT (WINAPI *ActivateTab)(ITaskbarList2 *This,HWND hwnd);")
cpp_quote("      HRESULT (WINAPI *SetActiveAlt)(ITaskbarList2 *This,HWND hwnd);")
cpp_quote("      HRESULT (WINAPI *MarkFullscreenWindow)(ITaskbarList2 *This,HWND hwnd,WINBOOL fFullscreen);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } ITaskbarList2Vtbl;")
cpp_quote("  struct ITaskbarList2 {")
cpp_quote("    CONST_VTBL struct ITaskbarList2Vtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define ITaskbarList2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define ITaskbarList2_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define ITaskbarList2_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define ITaskbarList2_HrInit(This) (This)->lpVtbl->HrInit(This)")
cpp_quote("#define ITaskbarList2_AddTab(This,hwnd) (This)->lpVtbl->AddTab(This,hwnd)")
cpp_quote("#define ITaskbarList2_DeleteTab(This,hwnd) (This)->lpVtbl->DeleteTab(This,hwnd)")
cpp_quote("#define ITaskbarList2_ActivateTab(This,hwnd) (This)->lpVtbl->ActivateTab(This,hwnd)")
cpp_quote("#define ITaskbarList2_SetActiveAlt(This,hwnd) (This)->lpVtbl->SetActiveAlt(This,hwnd)")
cpp_quote("#define ITaskbarList2_MarkFullscreenWindow(This,hwnd,fFullscreen) (This)->lpVtbl->MarkFullscreenWindow(This,hwnd,fFullscreen)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI ITaskbarList2_MarkFullscreenWindow_Proxy(ITaskbarList2 *This,HWND hwnd,WINBOOL fFullscreen);")
cpp_quote("  void __RPC_STUB ITaskbarList2_MarkFullscreenWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifdef MIDL_PASS")
cpp_quote("typedef IUnknown *HIMAGELIST;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("typedef enum THUMBBUTTONFLAGS {")
cpp_quote("    THBF_ENABLED = 0x0,")
cpp_quote("    THBF_DISABLED = 0x1,")
cpp_quote("    THBF_DISMISSONCLICK = 0x2,")
cpp_quote("    THBF_NOBACKGROUND = 0x4,")
cpp_quote("    THBF_HIDDEN = 0x8,")
cpp_quote("    THBF_NONINTERACTIVE = 0x10")
cpp_quote("} THUMBBUTTONFLAGS;")
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONFLAGS)")
cpp_quote("")
cpp_quote("typedef enum THUMBBUTTONMASK {")
cpp_quote("    THB_BITMAP = 0x1,")
cpp_quote("    THB_ICON = 0x2,")
cpp_quote("    THB_TOOLTIP = 0x4,")
cpp_quote("    THB_FLAGS = 0x8")
cpp_quote("} THUMBBUTTONMASK;")
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONMASK)")
cpp_quote("")
cpp_quote("#include <pshpack8.h>")
cpp_quote("typedef struct THUMBBUTTON {")
cpp_quote("    THUMBBUTTONMASK dwMask;")
cpp_quote("    UINT iId;")
cpp_quote("    UINT iBitmap;")
cpp_quote("    HICON hIcon;")
cpp_quote("    WCHAR szTip[260];")
cpp_quote("    THUMBBUTTONFLAGS dwFlags;")
cpp_quote("} THUMBBUTTON;")
cpp_quote("typedef struct THUMBBUTTON *LPTHUMBBUTTON;")
cpp_quote("#include <poppack.h>")
cpp_quote("")
cpp_quote("#define THBN_CLICKED 0x1800")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * ITaskbarList3 interface")
cpp_quote(" */")
cpp_quote("#ifndef __ITaskbarList3_INTERFACE_DEFINED__")
cpp_quote("#define __ITaskbarList3_INTERFACE_DEFINED__")
cpp_quote("")
cpp_quote("typedef enum TBPFLAG {")
cpp_quote("    TBPF_NOPROGRESS = 0x0,")
cpp_quote("    TBPF_INDETERMINATE = 0x1,")
cpp_quote("    TBPF_NORMAL = 0x2,")
cpp_quote("    TBPF_ERROR = 0x4,")
cpp_quote("    TBPF_PAUSED = 0x8")
cpp_quote("} TBPFLAG;")
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(TBPFLAG)")
cpp_quote("")
cpp_quote("DEFINE_GUID(IID_ITaskbarList3, 0xea1afb91, 0x9e28, 0x4b86, 0x90,0xe9, 0x9e,0x9f,0x8a,0x5e,0xef,0xaf);")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("interface ITaskbarList3 : public ITaskbarList2")
cpp_quote("{")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetProgressValue(")
cpp_quote("        HWND hwnd,")
cpp_quote("        ULONGLONG ullCompleted,")
cpp_quote("        ULONGLONG ullTotal) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetProgressState(")
cpp_quote("        HWND hwnd,")
cpp_quote("        TBPFLAG tbpFlags) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE RegisterTab(")
cpp_quote("        HWND hwndTab,")
cpp_quote("        HWND hwndMDI) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE UnregisterTab(")
cpp_quote("        HWND hwndTab) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetTabOrder(")
cpp_quote("        HWND hwndTab,")
cpp_quote("        HWND hwndInsertBefore) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetTabActive(")
cpp_quote("        HWND hwndTab,")
cpp_quote("        HWND hwndMDI,")
cpp_quote("        DWORD dwReserved) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE ThumbBarAddButtons(")
cpp_quote("        HWND hwnd,")
cpp_quote("        UINT cButtons,")
cpp_quote("        LPTHUMBBUTTON pButton) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE ThumbBarUpdateButtons(")
cpp_quote("        HWND hwnd,")
cpp_quote("        UINT cButtons,")
cpp_quote("        LPTHUMBBUTTON pButton) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE ThumbBarSetImageList(")
cpp_quote("        HWND hwnd,")
cpp_quote("        HIMAGELIST himl) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetOverlayIcon(")
cpp_quote("        HWND hwnd,")
cpp_quote("        HICON hIcon,")
cpp_quote("        LPCWSTR pszDescription) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetThumbnailTooltip(")
cpp_quote("        HWND hwnd,")
cpp_quote("        LPCWSTR pszTip) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetThumbnailClip(")
cpp_quote("        HWND hwnd,")
cpp_quote("        RECT *prcClip) = 0;")
cpp_quote("")
cpp_quote("};")
cpp_quote("#else")
cpp_quote("typedef struct ITaskbarList3Vtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /*** IUnknown methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryInterface)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvObject);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *AddRef)(")
cpp_quote("        ITaskbarList3* This);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *Release)(")
cpp_quote("        ITaskbarList3* This);")
cpp_quote("")
cpp_quote("    /*** ITaskbarList methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *HrInit)(")
cpp_quote("        ITaskbarList3* This);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *AddTab)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwnd);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *DeleteTab)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwnd);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *ActivateTab)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwnd);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetActiveAlt)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwnd);")
cpp_quote("")
cpp_quote("    /*** ITaskbarList2 methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *MarkFullscreenWindow)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        BOOL fullscreen);")
cpp_quote("")
cpp_quote("    /*** ITaskbarList3 methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetProgressValue)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        ULONGLONG ullCompleted,")
cpp_quote("        ULONGLONG ullTotal);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetProgressState)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        TBPFLAG tbpFlags);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *RegisterTab)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwndTab,")
cpp_quote("        HWND hwndMDI);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *UnregisterTab)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwndTab);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetTabOrder)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwndTab,")
cpp_quote("        HWND hwndInsertBefore);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetTabActive)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwndTab,")
cpp_quote("        HWND hwndMDI,")
cpp_quote("        DWORD dwReserved);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *ThumbBarAddButtons)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        UINT cButtons,")
cpp_quote("        LPTHUMBBUTTON pButton);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *ThumbBarUpdateButtons)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        UINT cButtons,")
cpp_quote("        LPTHUMBBUTTON pButton);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *ThumbBarSetImageList)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        HIMAGELIST himl);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetOverlayIcon)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        HICON hIcon,")
cpp_quote("        LPCWSTR pszDescription);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetThumbnailTooltip)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        LPCWSTR pszTip);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetThumbnailClip)(")
cpp_quote("        ITaskbarList3* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        RECT *prcClip);")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("} ITaskbarList3Vtbl;")
cpp_quote("interface ITaskbarList3 {")
cpp_quote("    CONST_VTBL ITaskbarList3Vtbl* lpVtbl;")
cpp_quote("};")
cpp_quote("")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("/*** IUnknown methods ***/")
cpp_quote("#define ITaskbarList3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define ITaskbarList3_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define ITaskbarList3_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("/*** ITaskbarList methods ***/")
cpp_quote("#define ITaskbarList3_HrInit(This) (This)->lpVtbl->HrInit(This)")
cpp_quote("#define ITaskbarList3_AddTab(This,hwnd) (This)->lpVtbl->AddTab(This,hwnd)")
cpp_quote("#define ITaskbarList3_DeleteTab(This,hwnd) (This)->lpVtbl->DeleteTab(This,hwnd)")
cpp_quote("#define ITaskbarList3_ActivateTab(This,hwnd) (This)->lpVtbl->ActivateTab(This,hwnd)")
cpp_quote("#define ITaskbarList3_SetActiveAlt(This,hwnd) (This)->lpVtbl->SetActiveAlt(This,hwnd)")
cpp_quote("/*** ITaskbarList2 methods ***/")
cpp_quote("#define ITaskbarList3_MarkFullscreenWindow(This,hwnd,fullscreen) (This)->lpVtbl->MarkFullscreenWindow(This,hwnd,fullscreen)")
cpp_quote("/*** ITaskbarList3 methods ***/")
cpp_quote("#define ITaskbarList3_SetProgressValue(This,hwnd,ullCompleted,ullTotal) (This)->lpVtbl->SetProgressValue(This,hwnd,ullCompleted,ullTotal)")
cpp_quote("#define ITaskbarList3_SetProgressState(This,hwnd,tbpFlags) (This)->lpVtbl->SetProgressState(This,hwnd,tbpFlags)")
cpp_quote("#define ITaskbarList3_RegisterTab(This,hwndTab,hwndMDI) (This)->lpVtbl->RegisterTab(This,hwndTab,hwndMDI)")
cpp_quote("#define ITaskbarList3_UnregisterTab(This,hwndTab) (This)->lpVtbl->UnregisterTab(This,hwndTab)")
cpp_quote("#define ITaskbarList3_SetTabOrder(This,hwndTab,hwndInsertBefore) (This)->lpVtbl->SetTabOrder(This,hwndTab,hwndInsertBefore)")
cpp_quote("#define ITaskbarList3_SetTabActive(This,hwndTab,hwndMDI,dwReserved) (This)->lpVtbl->SetTabActive(This,hwndTab,hwndMDI,dwReserved)")
cpp_quote("#define ITaskbarList3_ThumbBarAddButtons(This,hwnd,cButtons,pButton) (This)->lpVtbl->ThumbBarAddButtons(This,hwnd,cButtons,pButton)")
cpp_quote("#define ITaskbarList3_ThumbBarUpdateButtons(This,hwnd,cButtons,pButton) (This)->lpVtbl->ThumbBarUpdateButtons(This,hwnd,cButtons,pButton)")
cpp_quote("#define ITaskbarList3_ThumbBarSetImageList(This,hwnd,himl) (This)->lpVtbl->ThumbBarSetImageList(This,hwnd,himl)")
cpp_quote("#define ITaskbarList3_SetOverlayIcon(This,hwnd,hIcon,pszDescription) (This)->lpVtbl->SetOverlayIcon(This,hwnd,hIcon,pszDescription)")
cpp_quote("#define ITaskbarList3_SetThumbnailTooltip(This,hwnd,pszTip) (This)->lpVtbl->SetThumbnailTooltip(This,hwnd,pszTip)")
cpp_quote("#define ITaskbarList3_SetThumbnailClip(This,hwnd,prcClip) (This)->lpVtbl->SetThumbnailClip(This,hwnd,prcClip)")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif")
cpp_quote("#endif  /* __ITaskbarList3_INTERFACE_DEFINED__ */")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * ITaskbarList4 interface")
cpp_quote(" */")
cpp_quote("#ifndef __ITaskbarList4_INTERFACE_DEFINED__")
cpp_quote("#define __ITaskbarList4_INTERFACE_DEFINED__")
cpp_quote("")
cpp_quote("typedef enum STPFLAG {")
cpp_quote("    STPF_NONE = 0x0,")
cpp_quote("    STPF_USEAPPTHUMBNAILALWAYS = 0x1,")
cpp_quote("    STPF_USEAPPTHUMBNAILWHENACTIVE = 0x2,")
cpp_quote("    STPF_USEAPPPEEKALWAYS = 0x4,")
cpp_quote("    STPF_USEAPPPEEKWHENACTIVE = 0x8")
cpp_quote("} STPFLAG;")
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(STPFLAG)")
cpp_quote("")
cpp_quote("DEFINE_GUID(IID_ITaskbarList4, 0xc43dc798, 0x95d1, 0x4bea, 0x90,0x30, 0xbb,0x99,0xe2,0x98,0x3a,0x1a);")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("interface ITaskbarList4 : public ITaskbarList3")
cpp_quote("{")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetTabProperties(")
cpp_quote("        HWND hwndTab,")
cpp_quote("        STPFLAG stpFlags) = 0;")
cpp_quote("")
cpp_quote("};")
cpp_quote("#else")
cpp_quote("typedef struct ITaskbarList4Vtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /*** IUnknown methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryInterface)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvObject);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *AddRef)(")
cpp_quote("        ITaskbarList4* This);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *Release)(")
cpp_quote("        ITaskbarList4* This);")
cpp_quote("")
cpp_quote("    /*** ITaskbarList methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *HrInit)(")
cpp_quote("        ITaskbarList4* This);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *AddTab)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwnd);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *DeleteTab)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwnd);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *ActivateTab)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwnd);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetActiveAlt)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwnd);")
cpp_quote("")
cpp_quote("    /*** ITaskbarList2 methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *MarkFullscreenWindow)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        BOOL fullscreen);")
cpp_quote("")
cpp_quote("    /*** ITaskbarList3 methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetProgressValue)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        ULONGLONG ullCompleted,")
cpp_quote("        ULONGLONG ullTotal);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetProgressState)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        TBPFLAG tbpFlags);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *RegisterTab)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwndTab,")
cpp_quote("        HWND hwndMDI);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *UnregisterTab)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwndTab);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetTabOrder)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwndTab,")
cpp_quote("        HWND hwndInsertBefore);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetTabActive)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwndTab,")
cpp_quote("        HWND hwndMDI,")
cpp_quote("        DWORD dwReserved);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *ThumbBarAddButtons)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        UINT cButtons,")
cpp_quote("        LPTHUMBBUTTON pButton);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *ThumbBarUpdateButtons)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        UINT cButtons,")
cpp_quote("        LPTHUMBBUTTON pButton);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *ThumbBarSetImageList)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        HIMAGELIST himl);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetOverlayIcon)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        HICON hIcon,")
cpp_quote("        LPCWSTR pszDescription);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetThumbnailTooltip)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        LPCWSTR pszTip);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetThumbnailClip)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwnd,")
cpp_quote("        RECT *prcClip);")
cpp_quote("")
cpp_quote("    /*** ITaskbarList4 methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetTabProperties)(")
cpp_quote("        ITaskbarList4* This,")
cpp_quote("        HWND hwndTab,")
cpp_quote("        STPFLAG stpFlags);")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("} ITaskbarList4Vtbl;")
cpp_quote("interface ITaskbarList4 {")
cpp_quote("    CONST_VTBL ITaskbarList4Vtbl* lpVtbl;")
cpp_quote("};")
cpp_quote("")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("/*** IUnknown methods ***/")
cpp_quote("#define ITaskbarList4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define ITaskbarList4_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define ITaskbarList4_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("/*** ITaskbarList methods ***/")
cpp_quote("#define ITaskbarList4_HrInit(This) (This)->lpVtbl->HrInit(This)")
cpp_quote("#define ITaskbarList4_AddTab(This,hwnd) (This)->lpVtbl->AddTab(This,hwnd)")
cpp_quote("#define ITaskbarList4_DeleteTab(This,hwnd) (This)->lpVtbl->DeleteTab(This,hwnd)")
cpp_quote("#define ITaskbarList4_ActivateTab(This,hwnd) (This)->lpVtbl->ActivateTab(This,hwnd)")
cpp_quote("#define ITaskbarList4_SetActiveAlt(This,hwnd) (This)->lpVtbl->SetActiveAlt(This,hwnd)")
cpp_quote("/*** ITaskbarList2 methods ***/")
cpp_quote("#define ITaskbarList4_MarkFullscreenWindow(This,hwnd,fullscreen) (This)->lpVtbl->MarkFullscreenWindow(This,hwnd,fullscreen)")
cpp_quote("/*** ITaskbarList3 methods ***/")
cpp_quote("#define ITaskbarList4_SetProgressValue(This,hwnd,ullCompleted,ullTotal) (This)->lpVtbl->SetProgressValue(This,hwnd,ullCompleted,ullTotal)")
cpp_quote("#define ITaskbarList4_SetProgressState(This,hwnd,tbpFlags) (This)->lpVtbl->SetProgressState(This,hwnd,tbpFlags)")
cpp_quote("#define ITaskbarList4_RegisterTab(This,hwndTab,hwndMDI) (This)->lpVtbl->RegisterTab(This,hwndTab,hwndMDI)")
cpp_quote("#define ITaskbarList4_UnregisterTab(This,hwndTab) (This)->lpVtbl->UnregisterTab(This,hwndTab)")
cpp_quote("#define ITaskbarList4_SetTabOrder(This,hwndTab,hwndInsertBefore) (This)->lpVtbl->SetTabOrder(This,hwndTab,hwndInsertBefore)")
cpp_quote("#define ITaskbarList4_SetTabActive(This,hwndTab,hwndMDI,dwReserved) (This)->lpVtbl->SetTabActive(This,hwndTab,hwndMDI,dwReserved)")
cpp_quote("#define ITaskbarList4_ThumbBarAddButtons(This,hwnd,cButtons,pButton) (This)->lpVtbl->ThumbBarAddButtons(This,hwnd,cButtons,pButton)")
cpp_quote("#define ITaskbarList4_ThumbBarUpdateButtons(This,hwnd,cButtons,pButton) (This)->lpVtbl->ThumbBarUpdateButtons(This,hwnd,cButtons,pButton)")
cpp_quote("#define ITaskbarList4_ThumbBarSetImageList(This,hwnd,himl) (This)->lpVtbl->ThumbBarSetImageList(This,hwnd,himl)")
cpp_quote("#define ITaskbarList4_SetOverlayIcon(This,hwnd,hIcon,pszDescription) (This)->lpVtbl->SetOverlayIcon(This,hwnd,hIcon,pszDescription)")
cpp_quote("#define ITaskbarList4_SetThumbnailTooltip(This,hwnd,pszTip) (This)->lpVtbl->SetThumbnailTooltip(This,hwnd,pszTip)")
cpp_quote("#define ITaskbarList4_SetThumbnailClip(This,hwnd,prcClip) (This)->lpVtbl->SetThumbnailClip(This,hwnd,prcClip)")
cpp_quote("/*** ITaskbarList4 methods ***/")
cpp_quote("#define ITaskbarList4_SetTabProperties(This,hwndTab,stpFlags) (This)->lpVtbl->SetTabProperties(This,hwndTab,stpFlags)")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif")
cpp_quote("#endif  /* __ITaskbarList4_INTERFACE_DEFINED__ */")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * IApplicationAssociationRegistrationUI interface")
cpp_quote(" */")
cpp_quote("#ifndef __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__")
cpp_quote("#define __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__")
cpp_quote("")
cpp_quote("DEFINE_GUID(IID_IApplicationAssociationRegistrationUI, 0x1f76a169, 0xf994, 0x40ac, 0x8f, 0xc8, 0x09, 0x59, 0xe8, 0x87, 0x47, 0x10);")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("interface IApplicationAssociationRegistrationUI : public IUnknown")
cpp_quote("{")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE LaunchAdvancedAssociationUI(")
cpp_quote("        LPCWSTR pszAppRegName) = 0;")
cpp_quote("")
cpp_quote("};")
cpp_quote("#else")
cpp_quote("typedef struct IApplicationAssociationRegistrationUIVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /*** IUnknown methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryInterface)(")
cpp_quote("        IApplicationAssociationRegistrationUI* This,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvObject);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *AddRef)(")
cpp_quote("        IApplicationAssociationRegistrationUI* This);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *Release)(")
cpp_quote("        IApplicationAssociationRegistrationUI* This);")
cpp_quote("")
cpp_quote("    /*** IApplicationAssociationRegistrationUI methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *LaunchAdvancedAssociationUI)(")
cpp_quote("        IApplicationAssociationRegistrationUI* This,")
cpp_quote("        LPCWSTR pszAppRegName);")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("} IApplicationAssociationRegistrationUIVtbl;")
cpp_quote("interface IApplicationAssociationRegistrationUI {")
cpp_quote("    CONST_VTBL IApplicationAssociationRegistrationUIVtbl* lpVtbl;")
cpp_quote("};")
cpp_quote("")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("/*** IUnknown methods ***/")
cpp_quote("#define IApplicationAssociationRegistrationUI_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IApplicationAssociationRegistrationUI_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IApplicationAssociationRegistrationUI_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("/*** IApplicationAssociationRegistrationUI methods ***/")
cpp_quote("#define IApplicationAssociationRegistrationUI_LaunchAdvancedAssociationUI(This) (This)->lpVtbl->LaunchAdvancedAssociationUI(This)")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif")
cpp_quote("#endif  /* __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__ */")
cpp_quote("")
cpp_quote("#ifndef __ICDBurn_INTERFACE_DEFINED__")
cpp_quote("#define __ICDBurn_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_ICDBurn;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct ICDBurn : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetRecorderDriveLetter(LPWSTR pszDrive,UINT cch) = 0;")
cpp_quote("    virtual HRESULT WINAPI Burn(HWND hwnd) = 0;")
cpp_quote("    virtual HRESULT WINAPI HasRecordableDrive(WINBOOL *pfHasRecorder) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct ICDBurnVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(ICDBurn *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(ICDBurn *This);")
cpp_quote("      ULONG (WINAPI *Release)(ICDBurn *This);")
cpp_quote("      HRESULT (WINAPI *GetRecorderDriveLetter)(ICDBurn *This,LPWSTR pszDrive,UINT cch);")
cpp_quote("      HRESULT (WINAPI *Burn)(ICDBurn *This,HWND hwnd);")
cpp_quote("      HRESULT (WINAPI *HasRecordableDrive)(ICDBurn *This,WINBOOL *pfHasRecorder);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } ICDBurnVtbl;")
cpp_quote("  struct ICDBurn {")
cpp_quote("    CONST_VTBL struct ICDBurnVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define ICDBurn_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define ICDBurn_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define ICDBurn_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define ICDBurn_GetRecorderDriveLetter(This,pszDrive,cch) (This)->lpVtbl->GetRecorderDriveLetter(This,pszDrive,cch)")
cpp_quote("#define ICDBurn_Burn(This,hwnd) (This)->lpVtbl->Burn(This,hwnd)")
cpp_quote("#define ICDBurn_HasRecordableDrive(This,pfHasRecorder) (This)->lpVtbl->HasRecordableDrive(This,pfHasRecorder)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI ICDBurn_GetRecorderDriveLetter_Proxy(ICDBurn *This,LPWSTR pszDrive,UINT cch);")
cpp_quote("  void __RPC_STUB ICDBurn_GetRecorderDriveLetter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ICDBurn_Burn_Proxy(ICDBurn *This,HWND hwnd);")
cpp_quote("  void __RPC_STUB ICDBurn_Burn_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI ICDBurn_HasRecordableDrive_Proxy(ICDBurn *This,WINBOOL *pfHasRecorder);")
cpp_quote("  void __RPC_STUB ICDBurn_HasRecordableDrive_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define IDD_WIZEXTN_FIRST 0x5000")
cpp_quote("#define IDD_WIZEXTN_LAST 0x5100")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0234_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0234_v0_0_s_ifspec;")
cpp_quote("#ifndef __IWizardSite_INTERFACE_DEFINED__")
cpp_quote("#define __IWizardSite_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IWizardSite;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IWizardSite : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetPreviousPage(HPROPSHEETPAGE *phpage) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetNextPage(HPROPSHEETPAGE *phpage) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetCancelledPage(HPROPSHEETPAGE *phpage) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IWizardSiteVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IWizardSite *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IWizardSite *This);")
cpp_quote("      ULONG (WINAPI *Release)(IWizardSite *This);")
cpp_quote("      HRESULT (WINAPI *GetPreviousPage)(IWizardSite *This,HPROPSHEETPAGE *phpage);")
cpp_quote("      HRESULT (WINAPI *GetNextPage)(IWizardSite *This,HPROPSHEETPAGE *phpage);")
cpp_quote("      HRESULT (WINAPI *GetCancelledPage)(IWizardSite *This,HPROPSHEETPAGE *phpage);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IWizardSiteVtbl;")
cpp_quote("  struct IWizardSite {")
cpp_quote("    CONST_VTBL struct IWizardSiteVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IWizardSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IWizardSite_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IWizardSite_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IWizardSite_GetPreviousPage(This,phpage) (This)->lpVtbl->GetPreviousPage(This,phpage)")
cpp_quote("#define IWizardSite_GetNextPage(This,phpage) (This)->lpVtbl->GetNextPage(This,phpage)")
cpp_quote("#define IWizardSite_GetCancelledPage(This,phpage) (This)->lpVtbl->GetCancelledPage(This,phpage)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IWizardSite_GetPreviousPage_Proxy(IWizardSite *This,HPROPSHEETPAGE *phpage);")
cpp_quote("  void __RPC_STUB IWizardSite_GetPreviousPage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IWizardSite_GetNextPage_Proxy(IWizardSite *This,HPROPSHEETPAGE *phpage);")
cpp_quote("  void __RPC_STUB IWizardSite_GetNextPage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IWizardSite_GetCancelledPage_Proxy(IWizardSite *This,HPROPSHEETPAGE *phpage);")
cpp_quote("  void __RPC_STUB IWizardSite_GetCancelledPage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IWizardExtension_INTERFACE_DEFINED__")
cpp_quote("#define __IWizardExtension_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IWizardExtension;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IWizardExtension : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI AddPages(HPROPSHEETPAGE *aPages,UINT cPages,UINT *pnPagesAdded) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetFirstPage(HPROPSHEETPAGE *phpage) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetLastPage(HPROPSHEETPAGE *phpage) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IWizardExtensionVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IWizardExtension *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IWizardExtension *This);")
cpp_quote("      ULONG (WINAPI *Release)(IWizardExtension *This);")
cpp_quote("      HRESULT (WINAPI *AddPages)(IWizardExtension *This,HPROPSHEETPAGE *aPages,UINT cPages,UINT *pnPagesAdded);")
cpp_quote("      HRESULT (WINAPI *GetFirstPage)(IWizardExtension *This,HPROPSHEETPAGE *phpage);")
cpp_quote("      HRESULT (WINAPI *GetLastPage)(IWizardExtension *This,HPROPSHEETPAGE *phpage);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IWizardExtensionVtbl;")
cpp_quote("  struct IWizardExtension {")
cpp_quote("    CONST_VTBL struct IWizardExtensionVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IWizardExtension_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IWizardExtension_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IWizardExtension_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IWizardExtension_AddPages(This,aPages,cPages,pnPagesAdded) (This)->lpVtbl->AddPages(This,aPages,cPages,pnPagesAdded)")
cpp_quote("#define IWizardExtension_GetFirstPage(This,phpage) (This)->lpVtbl->GetFirstPage(This,phpage)")
cpp_quote("#define IWizardExtension_GetLastPage(This,phpage) (This)->lpVtbl->GetLastPage(This,phpage)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IWizardExtension_AddPages_Proxy(IWizardExtension *This,HPROPSHEETPAGE *aPages,UINT cPages,UINT *pnPagesAdded);")
cpp_quote("  void __RPC_STUB IWizardExtension_AddPages_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IWizardExtension_GetFirstPage_Proxy(IWizardExtension *This,HPROPSHEETPAGE *phpage);")
cpp_quote("  void __RPC_STUB IWizardExtension_GetFirstPage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IWizardExtension_GetLastPage_Proxy(IWizardExtension *This,HPROPSHEETPAGE *phpage);")
cpp_quote("  void __RPC_STUB IWizardExtension_GetLastPage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IWebWizardExtension_INTERFACE_DEFINED__")
cpp_quote("#define __IWebWizardExtension_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IWebWizardExtension;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IWebWizardExtension : public IWizardExtension {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI SetInitialURL(LPCWSTR pszURL) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetErrorURL(LPCWSTR pszErrorURL) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IWebWizardExtensionVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IWebWizardExtension *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IWebWizardExtension *This);")
cpp_quote("      ULONG (WINAPI *Release)(IWebWizardExtension *This);")
cpp_quote("      HRESULT (WINAPI *AddPages)(IWebWizardExtension *This,HPROPSHEETPAGE *aPages,UINT cPages,UINT *pnPagesAdded);")
cpp_quote("      HRESULT (WINAPI *GetFirstPage)(IWebWizardExtension *This,HPROPSHEETPAGE *phpage);")
cpp_quote("      HRESULT (WINAPI *GetLastPage)(IWebWizardExtension *This,HPROPSHEETPAGE *phpage);")
cpp_quote("      HRESULT (WINAPI *SetInitialURL)(IWebWizardExtension *This,LPCWSTR pszURL);")
cpp_quote("      HRESULT (WINAPI *SetErrorURL)(IWebWizardExtension *This,LPCWSTR pszErrorURL);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IWebWizardExtensionVtbl;")
cpp_quote("  struct IWebWizardExtension {")
cpp_quote("    CONST_VTBL struct IWebWizardExtensionVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IWebWizardExtension_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IWebWizardExtension_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IWebWizardExtension_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IWebWizardExtension_AddPages(This,aPages,cPages,pnPagesAdded) (This)->lpVtbl->AddPages(This,aPages,cPages,pnPagesAdded)")
cpp_quote("#define IWebWizardExtension_GetFirstPage(This,phpage) (This)->lpVtbl->GetFirstPage(This,phpage)")
cpp_quote("#define IWebWizardExtension_GetLastPage(This,phpage) (This)->lpVtbl->GetLastPage(This,phpage)")
cpp_quote("#define IWebWizardExtension_SetInitialURL(This,pszURL) (This)->lpVtbl->SetInitialURL(This,pszURL)")
cpp_quote("#define IWebWizardExtension_SetErrorURL(This,pszErrorURL) (This)->lpVtbl->SetErrorURL(This,pszErrorURL)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IWebWizardExtension_SetInitialURL_Proxy(IWebWizardExtension *This,LPCWSTR pszURL);")
cpp_quote("  void __RPC_STUB IWebWizardExtension_SetInitialURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IWebWizardExtension_SetErrorURL_Proxy(IWebWizardExtension *This,LPCWSTR pszErrorURL);")
cpp_quote("  void __RPC_STUB IWebWizardExtension_SetErrorURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define SID_WebWizardHost IID_IWebWizardExtension")
cpp_quote("#define SHPWHF_NORECOMPRESS 0x00000001")
cpp_quote("#define SHPWHF_NONETPLACECREATE 0x00000002")
cpp_quote("#define SHPWHF_NOFILESELECTOR 0x00000004")
cpp_quote("#define SHPWHF_VALIDATEVIAWEBFOLDERS 0x00010000")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0237_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0237_v0_0_s_ifspec;")
cpp_quote("#ifndef __IPublishingWizard_INTERFACE_DEFINED__")
cpp_quote("#define __IPublishingWizard_INTERFACE_DEFINED__")
cpp_quote("")
cpp_quote("  EXTERN_C const IID IID_IPublishingWizard;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IPublishingWizard : public IWizardExtension {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Initialize(IDataObject *pdo,DWORD dwOptions,LPCWSTR pszServiceProvider) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetTransferManifest(HRESULT *phrFromTransfer,IXMLDOMDocument **pdocManifest) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IPublishingWizardVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IPublishingWizard *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IPublishingWizard *This);")
cpp_quote("      ULONG (WINAPI *Release)(IPublishingWizard *This);")
cpp_quote("      HRESULT (WINAPI *AddPages)(IPublishingWizard *This,HPROPSHEETPAGE *aPages,UINT cPages,UINT *pnPagesAdded);")
cpp_quote("      HRESULT (WINAPI *GetFirstPage)(IPublishingWizard *This,HPROPSHEETPAGE *phpage);")
cpp_quote("      HRESULT (WINAPI *GetLastPage)(IPublishingWizard *This,HPROPSHEETPAGE *phpage);")
cpp_quote("      HRESULT (WINAPI *Initialize)(IPublishingWizard *This,IDataObject *pdo,DWORD dwOptions,LPCWSTR pszServiceProvider);")
cpp_quote("      HRESULT (WINAPI *GetTransferManifest)(IPublishingWizard *This,HRESULT *phrFromTransfer,IXMLDOMDocument **pdocManifest);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IPublishingWizardVtbl;")
cpp_quote("  struct IPublishingWizard {")
cpp_quote("    CONST_VTBL struct IPublishingWizardVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IPublishingWizard_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IPublishingWizard_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IPublishingWizard_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IPublishingWizard_AddPages(This,aPages,cPages,pnPagesAdded) (This)->lpVtbl->AddPages(This,aPages,cPages,pnPagesAdded)")
cpp_quote("#define IPublishingWizard_GetFirstPage(This,phpage) (This)->lpVtbl->GetFirstPage(This,phpage)")
cpp_quote("#define IPublishingWizard_GetLastPage(This,phpage) (This)->lpVtbl->GetLastPage(This,phpage)")
cpp_quote("#define IPublishingWizard_Initialize(This,pdo,dwOptions,pszServiceProvider) (This)->lpVtbl->Initialize(This,pdo,dwOptions,pszServiceProvider)")
cpp_quote("#define IPublishingWizard_GetTransferManifest(This,phrFromTransfer,pdocManifest) (This)->lpVtbl->GetTransferManifest(This,phrFromTransfer,pdocManifest)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IPublishingWizard_Initialize_Proxy(IPublishingWizard *This,IDataObject *pdo,DWORD dwOptions,LPCWSTR pszServiceProvider);")
cpp_quote("  void __RPC_STUB IPublishingWizard_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IPublishingWizard_GetTransferManifest_Proxy(IPublishingWizard *This,HRESULT *phrFromTransfer,IXMLDOMDocument **pdocManifest);")
cpp_quote("  void __RPC_STUB IPublishingWizard_GetTransferManifest_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFolderViewHost_INTERFACE_DEFINED__")
cpp_quote("#define __IFolderViewHost_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IFolderViewHost;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IFolderViewHost : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Initialize(HWND hwndParent,IDataObject *pdo,RECT *prc) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IFolderViewHostVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IFolderViewHost *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IFolderViewHost *This);")
cpp_quote("      ULONG (WINAPI *Release)(IFolderViewHost *This);")
cpp_quote("      HRESULT (WINAPI *Initialize)(IFolderViewHost *This,HWND hwndParent,IDataObject *pdo,RECT *prc);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IFolderViewHostVtbl;")
cpp_quote("  struct IFolderViewHost {")
cpp_quote("    CONST_VTBL struct IFolderViewHostVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IFolderViewHost_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IFolderViewHost_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IFolderViewHost_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IFolderViewHost_Initialize(This,hwndParent,pdo,prc) (This)->lpVtbl->Initialize(This,hwndParent,pdo,prc)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IFolderViewHost_Initialize_Proxy(IFolderViewHost *This,HWND hwndParent,IDataObject *pdo,RECT *prc);")
cpp_quote("  void __RPC_STUB IFolderViewHost_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define ACDD_VISIBLE 0x0001")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0239_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0239_v0_0_s_ifspec;")
cpp_quote("#ifndef __IAutoCompleteDropDown_INTERFACE_DEFINED__")
cpp_quote("#define __IAutoCompleteDropDown_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IAutoCompleteDropDown;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IAutoCompleteDropDown : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetDropDownStatus(DWORD *pdwFlags,LPWSTR *ppwszString) = 0;")
cpp_quote("    virtual HRESULT WINAPI ResetEnumerator(void) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IAutoCompleteDropDownVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IAutoCompleteDropDown *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IAutoCompleteDropDown *This);")
cpp_quote("      ULONG (WINAPI *Release)(IAutoCompleteDropDown *This);")
cpp_quote("      HRESULT (WINAPI *GetDropDownStatus)(IAutoCompleteDropDown *This,DWORD *pdwFlags,LPWSTR *ppwszString);")
cpp_quote("      HRESULT (WINAPI *ResetEnumerator)(IAutoCompleteDropDown *This);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IAutoCompleteDropDownVtbl;")
cpp_quote("  struct IAutoCompleteDropDown {")
cpp_quote("    CONST_VTBL struct IAutoCompleteDropDownVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IAutoCompleteDropDown_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IAutoCompleteDropDown_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IAutoCompleteDropDown_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IAutoCompleteDropDown_GetDropDownStatus(This,pdwFlags,ppwszString) (This)->lpVtbl->GetDropDownStatus(This,pdwFlags,ppwszString)")
cpp_quote("#define IAutoCompleteDropDown_ResetEnumerator(This) (This)->lpVtbl->ResetEnumerator(This)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IAutoCompleteDropDown_GetDropDownStatus_Proxy(IAutoCompleteDropDown *This,DWORD *pdwFlags,LPWSTR *ppwszString);")
cpp_quote("  void __RPC_STUB IAutoCompleteDropDown_GetDropDownStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IAutoCompleteDropDown_ResetEnumerator_Proxy(IAutoCompleteDropDown *This);")
cpp_quote("  void __RPC_STUB IAutoCompleteDropDown_ResetEnumerator_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define PPW_LAUNCHEDBYUSER 0x00000001")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0240_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0240_v0_0_s_ifspec;")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * IShellItemArray interface")
cpp_quote(" */")
cpp_quote("#ifndef __IShellItemArray_INTERFACE_DEFINED__")
cpp_quote("#define __IShellItemArray_INTERFACE_DEFINED__")
cpp_quote("")
cpp_quote("typedef enum SIATTRIBFLAGS {")
cpp_quote("    SIATTRIBFLAGS_AND = 0x1,")
cpp_quote("    SIATTRIBFLAGS_OR = 0x2,")
cpp_quote("    SIATTRIBFLAGS_APPCOMPAT = 0x3,")
cpp_quote("    SIATTRIBFLAGS_MASK = 0x3,")
cpp_quote("    SIATTRIBFLAGS_ALLITEMS = 0x4000")
cpp_quote("} SIATTRIBFLAGS;")
cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(SIATTRIBFLAGS)")
cpp_quote("DEFINE_GUID(IID_IShellItemArray, 0xb63ea76d, 0x1f85, 0x456f, 0xa1,0x9c, 0x48,0x15,0x9e,0xfa,0x85,0x8b);")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("MIDL_INTERFACE(\"b63ea76d-1f85-456f-a19c-48159efa858b\")")
cpp_quote("IShellItemArray : public IUnknown")
cpp_quote("{")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE BindToHandler(")
cpp_quote("        IBindCtx *pbc,")
cpp_quote("        REFGUID bhid,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvOut) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetPropertyStore(")
cpp_quote("        GETPROPERTYSTOREFLAGS flags,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetPropertyDescriptionList(")
cpp_quote("        REFPROPERTYKEY keyType,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetAttributes(")
cpp_quote("        SIATTRIBFLAGS AttribFlags,")
cpp_quote("        SFGAOF sfgaoMask,")
cpp_quote("        SFGAOF *psfgaoAttribs) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetCount(")
cpp_quote("        DWORD *pdwNumItems) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetItemAt(")
cpp_quote("        DWORD dwIndex,")
cpp_quote("        IShellItem **ppsi) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE EnumItems(")
cpp_quote("        IEnumShellItems **ppenumShellItems) = 0;")
cpp_quote("")
cpp_quote("};")
cpp_quote("#ifdef __CRT_UUID_DECL")
cpp_quote("__CRT_UUID_DECL(IShellItemArray, 0xb63ea76d, 0x1f85, 0x456f, 0xa1,0x9c, 0x48,0x15,0x9e,0xfa,0x85,0x8b)")
cpp_quote("#endif")
cpp_quote("#else")
cpp_quote("typedef struct IShellItemArrayVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /*** IUnknown methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryInterface)(")
cpp_quote("        IShellItemArray* This,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvObject);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *AddRef)(")
cpp_quote("        IShellItemArray* This);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *Release)(")
cpp_quote("        IShellItemArray* This);")
cpp_quote("    /*** IShellItemArray methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *BindToHandler)(")
cpp_quote("        IShellItemArray* This,")
cpp_quote("        IBindCtx *pbc,")
cpp_quote("        REFGUID bhid,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvOut);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetPropertyStore)(")
cpp_quote("        IShellItemArray* This,")
cpp_quote("        GETPROPERTYSTOREFLAGS flags,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetPropertyDescriptionList)(")
cpp_quote("        IShellItemArray* This,")
cpp_quote("        REFPROPERTYKEY keyType,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetAttributes)(")
cpp_quote("        IShellItemArray* This,")
cpp_quote("        SIATTRIBFLAGS AttribFlags,")
cpp_quote("        SFGAOF sfgaoMask,")
cpp_quote("        SFGAOF *psfgaoAttribs);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetCount)(")
cpp_quote("        IShellItemArray* This,")
cpp_quote("        DWORD *pdwNumItems);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetItemAt)(")
cpp_quote("        IShellItemArray* This,")
cpp_quote("        DWORD dwIndex,")
cpp_quote("        IShellItem **ppsi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *EnumItems)(")
cpp_quote("        IShellItemArray* This,")
cpp_quote("        IEnumShellItems **ppenumShellItems);")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("} IShellItemArrayVtbl;")
cpp_quote("interface IShellItemArray {")
cpp_quote("    CONST_VTBL IShellItemArrayVtbl* lpVtbl;")
cpp_quote("};")
cpp_quote("")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("/*** IUnknown methods ***/")
cpp_quote("#define IShellItemArray_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IShellItemArray_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IShellItemArray_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("/*** IShellItemArray methods ***/")
cpp_quote("#define IShellItemArray_BindToHandler(This,pbc,bhid,riid,ppvOut) (This)->lpVtbl->BindToHandler(This,pbc,bhid,riid,ppvOut)")
cpp_quote("#define IShellItemArray_GetPropertyStore(This,flags,riid,ppv) (This)->lpVtbl->GetPropertyStore(This,flags,riid,ppv)")
cpp_quote("#define IShellItemArray_GetPropertyDescriptionList(This,keyType,riid,ppv) (This)->lpVtbl->GetPropertyDescriptionList(This,keyType,riid,ppv)")
cpp_quote("#define IShellItemArray_GetAttributes(This,AttribFlags,sfgaoMask,psfgaoAttribs) (This)->lpVtbl->GetAttributes(This,AttribFlags,sfgaoMask,psfgaoAttribs)")
cpp_quote("#define IShellItemArray_GetCount(This,pdwNumItems) (This)->lpVtbl->GetCount(This,pdwNumItems)")
cpp_quote("#define IShellItemArray_GetItemAt(This,dwIndex,ppsi) (This)->lpVtbl->GetItemAt(This,dwIndex,ppsi)")
cpp_quote("#define IShellItemArray_EnumItems(This,ppenumShellItems) (This)->lpVtbl->EnumItems(This,ppenumShellItems)")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif  /* __IShellItemArray_INTERFACE_DEFINED__ */")
cpp_quote("")
cpp_quote("#ifndef __IModalWindow_INTERFACE_DEFINED__")
cpp_quote("#define __IModalWindow_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IModalWindow;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IModalWindow : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Show(HWND hwndParent) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IModalWindowVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IModalWindow *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IModalWindow *This);")
cpp_quote("      ULONG (WINAPI *Release)(IModalWindow *This);")
cpp_quote("      HRESULT (WINAPI *Show)(IModalWindow *This,HWND hwndParent);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IModalWindowVtbl;")
cpp_quote("  struct IModalWindow {")
cpp_quote("    CONST_VTBL struct IModalWindowVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IModalWindow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IModalWindow_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IModalWindow_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IModalWindow_Show(This,hwndParent) (This)->lpVtbl->Show(This,hwndParent)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IModalWindow_Show_Proxy(IModalWindow *This,HWND hwndParent);")
cpp_quote("  void __RPC_STUB IModalWindow_Show_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("typedef enum FDAP {")
cpp_quote("    FDAP_BOTTOM = 0,")
cpp_quote("    FDAP_TOP = 1")
cpp_quote("} FDAP;")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * IFileDialog interface")
cpp_quote(" */")
cpp_quote("#ifndef __IFileDialog_INTERFACE_DEFINED__")
cpp_quote("#define __IFileDialog_INTERFACE_DEFINED__")
cpp_quote("")
cpp_quote("enum _FILEOPENDIALOGOPTIONS {")
cpp_quote("    FOS_OVERWRITEPROMPT = 0x2,")
cpp_quote("    FOS_STRICTFILETYPES = 0x4,")
cpp_quote("    FOS_NOCHANGEDIR = 0x8,")
cpp_quote("    FOS_PICKFOLDERS = 0x20,")
cpp_quote("    FOS_FORCEFILESYSTEM = 0x40,")
cpp_quote("    FOS_ALLNONSTORAGEITEMS = 0x80,")
cpp_quote("    FOS_NOVALIDATE = 0x100,")
cpp_quote("    FOS_ALLOWMULTISELECT = 0x200,")
cpp_quote("    FOS_PATHMUSTEXIST = 0x800,")
cpp_quote("    FOS_FILEMUSTEXIST = 0x1000,")
cpp_quote("    FOS_CREATEPROMPT = 0x2000,")
cpp_quote("    FOS_SHAREAWARE = 0x4000,")
cpp_quote("    FOS_NOREADONLYRETURN = 0x8000,")
cpp_quote("    FOS_NOTESTFILECREATE = 0x10000,")
cpp_quote("    FOS_HIDEMRUPLACES = 0x20000,")
cpp_quote("    FOS_HIDEPINNEDPLACES = 0x40000,")
cpp_quote("    FOS_NODEREFERENCELINKS = 0x100000,")
cpp_quote("    FOS_DONTADDTORECENT = 0x2000000,")
cpp_quote("    FOS_FORCESHOWHIDDEN = 0x10000000,")
cpp_quote("    FOS_DEFAULTNOMINIMODE = 0x20000000,")
cpp_quote("    FOS_FORCEPREVIEWPANEON = 0x40000000")
cpp_quote("};")
cpp_quote("")
cpp_quote("typedef DWORD FILEOPENDIALOGOPTIONS;")
cpp_quote("DEFINE_GUID(IID_IFileDialog, 0x42f85136, 0xdb7e, 0x439c, 0x85,0xf1, 0xe4,0x07,0x5d,0x13,0x5f,0xc8);")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("MIDL_INTERFACE(\"42f85136-db7e-439c-85f1-e4075d135fc8\")")
cpp_quote("IFileDialog : public IModalWindow")
cpp_quote("{")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetFileTypes(")
cpp_quote("        UINT cFileTypes,")
cpp_quote("        const COMDLG_FILTERSPEC *rgFilterSpec) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetFileTypeIndex(")
cpp_quote("        UINT iFileType) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetFileTypeIndex(")
cpp_quote("        UINT *piFileType) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE Advise(")
cpp_quote("        IFileDialogEvents *pfde,")
cpp_quote("        DWORD *pdwCookie) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE Unadvise(")
cpp_quote("        DWORD dwCookie) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetOptions(")
cpp_quote("        FILEOPENDIALOGOPTIONS fos) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetOptions(")
cpp_quote("        FILEOPENDIALOGOPTIONS *pfos) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetDefaultFolder(")
cpp_quote("        IShellItem *psi) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetFolder(")
cpp_quote("        IShellItem *psi) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetFolder(")
cpp_quote("        IShellItem **ppsi) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetCurrentSelection(")
cpp_quote("        IShellItem **ppsi) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetFileName(")
cpp_quote("        LPCWSTR pszName) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetFileName(")
cpp_quote("        LPWSTR *pszName) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetTitle(")
cpp_quote("        LPCWSTR pszTitle) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetOkButtonLabel(")
cpp_quote("        LPCWSTR pszText) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetFileNameLabel(")
cpp_quote("        LPCWSTR pszLabel) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetResult(")
cpp_quote("        IShellItem **ppsi) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE AddPlace(")
cpp_quote("        IShellItem *psi,")
cpp_quote("        FDAP fdap) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetDefaultExtension(")
cpp_quote("        LPCWSTR pszDefaultExtension) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE Close(")
cpp_quote("        HRESULT hr) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetClientGuid(")
cpp_quote("        REFGUID guid) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE ClearClientData(")
cpp_quote("        ) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetFilter(")
cpp_quote("        IShellItemFilter *pFilter) = 0;")
cpp_quote("")
cpp_quote("};")
cpp_quote("#ifdef __CRT_UUID_DECL")
cpp_quote("__CRT_UUID_DECL(IFileDialog, 0x42f85136, 0xdb7e, 0x439c, 0x85,0xf1, 0xe4,0x07,0x5d,0x13,0x5f,0xc8)")
cpp_quote("#endif")
cpp_quote("#else")
cpp_quote("typedef struct IFileDialogVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /*** IUnknown methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryInterface)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvObject);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *AddRef)(")
cpp_quote("        IFileDialog* This);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *Release)(")
cpp_quote("        IFileDialog* This);")
cpp_quote("")
cpp_quote("    /*** IModalWindow methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Show)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        HWND hwndOwner);")
cpp_quote("")
cpp_quote("    /*** IFileDialog methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFileTypes)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        UINT cFileTypes,")
cpp_quote("        const COMDLG_FILTERSPEC *rgFilterSpec);")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFileTypeIndex)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        UINT iFileType);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetFileTypeIndex)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        UINT *piFileType);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Advise)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        IFileDialogEvents *pfde,")
cpp_quote("        DWORD *pdwCookie);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Unadvise)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        DWORD dwCookie);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetOptions)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        FILEOPENDIALOGOPTIONS fos);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetOptions)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        FILEOPENDIALOGOPTIONS *pfos);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetDefaultFolder)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        IShellItem *psi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFolder)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        IShellItem *psi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetFolder)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        IShellItem **ppsi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetCurrentSelection)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        IShellItem **ppsi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFileName)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        LPCWSTR pszName);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetFileName)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        LPWSTR *pszName);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetTitle)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        LPCWSTR pszTitle);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetOkButtonLabel)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        LPCWSTR pszText);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFileNameLabel)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        LPCWSTR pszLabel);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetResult)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        IShellItem **ppsi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *AddPlace)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        IShellItem *psi,")
cpp_quote("        FDAP fdap);")
cpp_quote("   HRESULT (STDMETHODCALLTYPE *SetDefaultExtension)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        LPCWSTR pszDefaultExtension);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Close)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        HRESULT hr);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetClientGuid)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        REFGUID guid);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *ClearClientData)(")
cpp_quote("        IFileDialog* This);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFilter)(")
cpp_quote("        IFileDialog* This,")
cpp_quote("        IShellItemFilter *pFilter);")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("} IFileDialogVtbl;")
cpp_quote("interface IFileDialog {")
cpp_quote("    CONST_VTBL IFileDialogVtbl* lpVtbl;")
cpp_quote("};")
cpp_quote("")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("/*** IUnknown methods ***/")
cpp_quote("#define IFileDialog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IFileDialog_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IFileDialog_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("/*** IModalWindow methods ***/")
cpp_quote("#define IFileDialog_Show(This,hwndOwner) (This)->lpVtbl->Show(This,hwndOwner)")
cpp_quote("/*** IFileDialog methods ***/")
cpp_quote("#define IFileDialog_SetFileTypes(This,cFileTypes,rgFilterSpec) (This)->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec)")
cpp_quote("#define IFileDialog_SetFileTypeIndex(This,iFileType) (This)->lpVtbl->SetFileTypeIndex(This,iFileType)")
cpp_quote("#define IFileDialog_GetFileTypeIndex(This,piFileType) (This)->lpVtbl->GetFileTypeIndex(This,piFileType)")
cpp_quote("#define IFileDialog_Advise(This,pfde,pdwCookie) (This)->lpVtbl->Advise(This,pfde,pdwCookie)")
cpp_quote("#define IFileDialog_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)")
cpp_quote("#define IFileDialog_SetOptions(This,fos) (This)->lpVtbl->SetOptions(This,fos)")
cpp_quote("#define IFileDialog_GetOptions(This,pfos) (This)->lpVtbl->GetOptions(This,pfos)")
cpp_quote("#define IFileDialog_SetDefaultFolder(This,psi) (This)->lpVtbl->SetDefaultFolder(This,psi)")
cpp_quote("#define IFileDialog_SetFolder(This,psi) (This)->lpVtbl->SetFolder(This,psi)")
cpp_quote("#define IFileDialog_GetFolder(This,ppsi) (This)->lpVtbl->GetFolder(This,ppsi)")
cpp_quote("#define IFileDialog_GetCurrentSelection(This,ppsi) (This)->lpVtbl->GetCurrentSelection(This,ppsi)")
cpp_quote("#define IFileDialog_SetFileName(This,pszName) (This)->lpVtbl->SetFileName(This,pszName)")
cpp_quote("#define IFileDialog_GetFileName(This,pszName) (This)->lpVtbl->GetFileName(This,pszName)")
cpp_quote("#define IFileDialog_SetTitle(This,pszTitle) (This)->lpVtbl->SetTitle(This,pszTitle)")
cpp_quote("#define IFileDialog_SetOkButtonLabel(This,pszText) (This)->lpVtbl->SetOkButtonLabel(This,pszText)")
cpp_quote("#define IFileDialog_SetFileNameLabel(This,pszLabel) (This)->lpVtbl->SetFileNameLabel(This,pszLabel)")
cpp_quote("#define IFileDialog_GetResult(This,ppsi) (This)->lpVtbl->GetResult(This,ppsi)")
cpp_quote("#define IFileDialog_AddPlace(This,psi,fdap) (This)->lpVtbl->AddPlace(This,psi,fdap)")
cpp_quote("#define IFileDialog_SetDefaultExtension(This,pszDefaultExtension) (This)->lpVtbl->SetDefaultExtension(This,pszDefaultExtension)")
cpp_quote("#define IFileDialog_Close(This,hr) (This)->lpVtbl->Close(This,hr)")
cpp_quote("#define IFileDialog_SetClientGuid(This,guid) (This)->lpVtbl->SetClientGuid(This,guid)")
cpp_quote("#define IFileDialog_ClearClientData(This) (This)->lpVtbl->ClearClientData(This)")
cpp_quote("#define IFileDialog_SetFilter(This,pFilter) (This)->lpVtbl->SetFilter(This,pFilter)")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif  /* __IFileDialog_INTERFACE_DEFINED__ */")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * IFileSaveDialog interface")
cpp_quote(" */")
cpp_quote("#ifndef __IFileSaveDialog_INTERFACE_DEFINED__")
cpp_quote("#define __IFileSaveDialog_INTERFACE_DEFINED__")
cpp_quote("")
cpp_quote("DEFINE_GUID(IID_IFileSaveDialog, 0x84bccd23, 0x5fde, 0x4cdb, 0xae,0xa4, 0xaf,0x64,0xb8,0x3d,0x78,0xab);")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("MIDL_INTERFACE(\"84bccd23-5fde-4cdb-aea4-af64b83d78ab\")")
cpp_quote("IFileSaveDialog : public IFileDialog")
cpp_quote("{")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetSaveAsItem(")
cpp_quote("        IShellItem *psi) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetProperties(")
cpp_quote("        IPropertyStore *pStore) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetCollectedProperties(")
cpp_quote("        IPropertyDescriptionList *pList,")
cpp_quote("        BOOL fAppendDefault) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetProperties(")
cpp_quote("        IPropertyStore **ppStore) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE ApplyProperties(")
cpp_quote("        IShellItem *psi,")
cpp_quote("        IPropertyStore *pStore,")
cpp_quote("        HWND hwnd,")
cpp_quote("        IFileOperationProgressSink *pSink) = 0;")
cpp_quote("")
cpp_quote("};")
cpp_quote("#ifdef __CRT_UUID_DECL")
cpp_quote("__CRT_UUID_DECL(IFileSaveDialog, 0x84bccd23, 0x5fde, 0x4cdb, 0xae,0xa4, 0xaf,0x64,0xb8,0x3d,0x78,0xab)")
cpp_quote("#endif")
cpp_quote("#else")
cpp_quote("typedef struct IFileSaveDialogVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /*** IUnknown methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryInterface)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvObject);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *AddRef)(")
cpp_quote("        IFileSaveDialog* This);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *Release)(")
cpp_quote("        IFileSaveDialog* This);")
cpp_quote("")
cpp_quote("    /*** IModalWindow methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Show)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        HWND hwndOwner);")
cpp_quote("")
cpp_quote("    /*** IFileDialog methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFileTypes)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        UINT cFileTypes,")
cpp_quote("        const COMDLG_FILTERSPEC *rgFilterSpec);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFileTypeIndex)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        UINT iFileType);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetFileTypeIndex)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        UINT *piFileType);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Advise)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        IFileDialogEvents *pfde,")
cpp_quote("        DWORD *pdwCookie);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Unadvise)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        DWORD dwCookie);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetOptions)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        FILEOPENDIALOGOPTIONS fos);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetOptions)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        FILEOPENDIALOGOPTIONS *pfos);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetDefaultFolder)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        IShellItem *psi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFolder)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        IShellItem *psi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetFolder)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        IShellItem **ppsi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetCurrentSelection)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        IShellItem **ppsi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFileName)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        LPCWSTR pszName);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetFileName)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        LPWSTR *pszName);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetTitle)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        LPCWSTR pszTitle);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetOkButtonLabel)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        LPCWSTR pszText);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFileNameLabel)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        LPCWSTR pszLabel);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetResult)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        IShellItem **ppsi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *AddPlace)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        IShellItem *psi,")
cpp_quote("        FDAP fdap);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetDefaultExtension)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        LPCWSTR pszDefaultExtension);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Close)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        HRESULT hr);")
cpp_quote("")
cpp_quote("   HRESULT (STDMETHODCALLTYPE *SetClientGuid)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        REFGUID guid);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *ClearClientData)(")
cpp_quote("        IFileSaveDialog* This);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFilter)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        IShellItemFilter *pFilter);")
cpp_quote("")
cpp_quote("    /*** IFileSaveDialog methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetSaveAsItem)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        IShellItem *psi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetProperties)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        IPropertyStore *pStore);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetCollectedProperties)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        IPropertyDescriptionList *pList,")
cpp_quote("        BOOL fAppendDefault);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetProperties)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        IPropertyStore **ppStore);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *ApplyProperties)(")
cpp_quote("        IFileSaveDialog* This,")
cpp_quote("        IShellItem *psi,")
cpp_quote("        IPropertyStore *pStore,")
cpp_quote("        HWND hwnd,")
cpp_quote("        IFileOperationProgressSink *pSink);")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("} IFileSaveDialogVtbl;")
cpp_quote("interface IFileSaveDialog {")
cpp_quote("    CONST_VTBL IFileSaveDialogVtbl* lpVtbl;")
cpp_quote("};")
cpp_quote("")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("/*** IUnknown methods ***/")
cpp_quote("#define IFileSaveDialog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IFileSaveDialog_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IFileSaveDialog_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("/*** IModalWindow methods ***/")
cpp_quote("#define IFileSaveDialog_Show(This,hwndOwner) (This)->lpVtbl->Show(This,hwndOwner)")
cpp_quote("/*** IFileDialog methods ***/")
cpp_quote("#define IFileSaveDialog_SetFileTypes(This,cFileTypes,rgFilterSpec) (This)->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec)")
cpp_quote("#define IFileSaveDialog_SetFileTypeIndex(This,iFileType) (This)->lpVtbl->SetFileTypeIndex(This,iFileType)")
cpp_quote("#define IFileSaveDialog_GetFileTypeIndex(This,piFileType) (This)->lpVtbl->GetFileTypeIndex(This,piFileType)")
cpp_quote("#define IFileSaveDialog_Advise(This,pfde,pdwCookie) (This)->lpVtbl->Advise(This,pfde,pdwCookie)")
cpp_quote("#define IFileSaveDialog_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)")
cpp_quote("#define IFileSaveDialog_SetOptions(This,fos) (This)->lpVtbl->SetOptions(This,fos)")
cpp_quote("#define IFileSaveDialog_GetOptions(This,pfos) (This)->lpVtbl->GetOptions(This,pfos)")
cpp_quote("#define IFileSaveDialog_SetDefaultFolder(This,psi) (This)->lpVtbl->SetDefaultFolder(This,psi)")
cpp_quote("#define IFileSaveDialog_SetFolder(This,psi) (This)->lpVtbl->SetFolder(This,psi)")
cpp_quote("#define IFileSaveDialog_GetFolder(This,ppsi) (This)->lpVtbl->GetFolder(This,ppsi)")
cpp_quote("#define IFileSaveDialog_GetCurrentSelection(This,ppsi) (This)->lpVtbl->GetCurrentSelection(This,ppsi)")
cpp_quote("#define IFileSaveDialog_SetFileName(This,pszName) (This)->lpVtbl->SetFileName(This,pszName)")
cpp_quote("#define IFileSaveDialog_GetFileName(This,pszName) (This)->lpVtbl->GetFileName(This,pszName)")
cpp_quote("#define IFileSaveDialog_SetTitle(This,pszTitle) (This)->lpVtbl->SetTitle(This,pszTitle)")
cpp_quote("#define IFileSaveDialog_SetOkButtonLabel(This,pszText) (This)->lpVtbl->SetOkButtonLabel(This,pszText)")
cpp_quote("#define IFileSaveDialog_SetFileNameLabel(This,pszLabel) (This)->lpVtbl->SetFileNameLabel(This,pszLabel)")
cpp_quote("#define IFileSaveDialog_GetResult(This,ppsi) (This)->lpVtbl->GetResult(This,ppsi)")
cpp_quote("#define IFileSaveDialog_AddPlace(This,psi,fdap) (This)->lpVtbl->AddPlace(This,psi,fdap)")
cpp_quote("#define IFileSaveDialog_SetDefaultExtension(This,pszDefaultExtension) (This)->lpVtbl->SetDefaultExtension(This,pszDefaultExtension)")
cpp_quote("#define IFileSaveDialog_Close(This,hr) (This)->lpVtbl->Close(This,hr)")
cpp_quote("#define IFileSaveDialog_SetClientGuid(This,guid) (This)->lpVtbl->SetClientGuid(This,guid)")
cpp_quote("#define IFileSaveDialog_ClearClientData(This) (This)->lpVtbl->ClearClientData(This)")
cpp_quote("#define IFileSaveDialog_SetFilter(This,pFilter) (This)->lpVtbl->SetFilter(This,pFilter)")
cpp_quote("/*** IFileSaveDialog methods ***/")
cpp_quote("#define IFileSaveDialog_SetSaveAsItem(This,psi) (This)->lpVtbl->SetSaveAsItem(This,psi)")
cpp_quote("#define IFileSaveDialog_SetProperties(This,pStore) (This)->lpVtbl->SetProperties(This,pStore)")
cpp_quote("#define IFileSaveDialog_SetCollectedProperties(This,pList,fAppendDefault) (This)->lpVtbl->SetCollectedProperties(This,pList,fAppendDefault)")
cpp_quote("#define IFileSaveDialog_GetProperties(This,ppStore) (This)->lpVtbl->GetProperties(This,ppStore)")
cpp_quote("#define IFileSaveDialog_ApplyProperties(This,psi,pStore,hwnd,pSink) (This)->lpVtbl->ApplyProperties(This,psi,pStore,hwnd,pSink)")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif  /* __IFileSaveDialog_INTERFACE_DEFINED__ */")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * IFileOpenDialog interface")
cpp_quote(" */")
cpp_quote("#ifndef __IFileOpenDialog_INTERFACE_DEFINED__")
cpp_quote("#define __IFileOpenDialog_INTERFACE_DEFINED__")
cpp_quote("")
cpp_quote("DEFINE_GUID(IID_IFileOpenDialog, 0xd57c7288, 0xd4ad, 0x4768, 0xbe,0x02, 0x9d,0x96,0x95,0x32,0xd9,0x60);")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("MIDL_INTERFACE(\"d57c7288-d4ad-4768-be02-9d969532d960\")")
cpp_quote("IFileOpenDialog : public IFileDialog")
cpp_quote("{")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetResults(")
cpp_quote("        IShellItemArray **ppenum) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetSelectedItems(")
cpp_quote("        IShellItemArray **ppsai) = 0;")
cpp_quote("")
cpp_quote("};")
cpp_quote("#ifdef __CRT_UUID_DECL")
cpp_quote("__CRT_UUID_DECL(IFileOpenDialog, 0xd57c7288, 0xd4ad, 0x4768, 0xbe,0x02, 0x9d,0x96,0x95,0x32,0xd9,0x60)")
cpp_quote("#endif")
cpp_quote("#else")
cpp_quote("typedef struct IFileOpenDialogVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /*** IUnknown methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryInterface)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvObject);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *AddRef)(")
cpp_quote("        IFileOpenDialog* This);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *Release)(")
cpp_quote("        IFileOpenDialog* This);")
cpp_quote("")
cpp_quote("    /*** IModalWindow methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Show)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        HWND hwndOwner);")
cpp_quote("")
cpp_quote("    /*** IFileDialog methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFileTypes)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        UINT cFileTypes,")
cpp_quote("        const COMDLG_FILTERSPEC *rgFilterSpec);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFileTypeIndex)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        UINT iFileType);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetFileTypeIndex)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        UINT *piFileType);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Advise)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        IFileDialogEvents *pfde,")
cpp_quote("        DWORD *pdwCookie);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Unadvise)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        DWORD dwCookie);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetOptions)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        FILEOPENDIALOGOPTIONS fos);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetOptions)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        FILEOPENDIALOGOPTIONS *pfos);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetDefaultFolder)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        IShellItem *psi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFolder)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        IShellItem *psi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetFolder)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        IShellItem **ppsi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetCurrentSelection)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        IShellItem **ppsi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFileName)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        LPCWSTR pszName);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetFileName)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        LPWSTR *pszName);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetTitle)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        LPCWSTR pszTitle);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetOkButtonLabel)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        LPCWSTR pszText);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFileNameLabel)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        LPCWSTR pszLabel);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetResult)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        IShellItem **ppsi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *AddPlace)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        IShellItem *psi,")
cpp_quote("        FDAP fdap);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetDefaultExtension)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        LPCWSTR pszDefaultExtension);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Close)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        HRESULT hr);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetClientGuid)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        REFGUID guid);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *ClearClientData)(")
cpp_quote("        IFileOpenDialog* This);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetFilter)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        IShellItemFilter *pFilter);")
cpp_quote("")
cpp_quote("    /*** IFileOpenDialog methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetResults)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        IShellItemArray **ppenum);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetSelectedItems)(")
cpp_quote("        IFileOpenDialog* This,")
cpp_quote("        IShellItemArray **ppsai);")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("} IFileOpenDialogVtbl;")
cpp_quote("interface IFileOpenDialog {")
cpp_quote("    CONST_VTBL IFileOpenDialogVtbl* lpVtbl;")
cpp_quote("};")
cpp_quote("")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("/*** IUnknown methods ***/")
cpp_quote("#define IFileOpenDialog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IFileOpenDialog_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IFileOpenDialog_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("/*** IModalWindow methods ***/")
cpp_quote("#define IFileOpenDialog_Show(This,hwndOwner) (This)->lpVtbl->Show(This,hwndOwner)")
cpp_quote("/*** IFileDialog methods ***/")
cpp_quote("#define IFileOpenDialog_SetFileTypes(This,cFileTypes,rgFilterSpec) (This)->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec)")
cpp_quote("#define IFileOpenDialog_SetFileTypeIndex(This,iFileType) (This)->lpVtbl->SetFileTypeIndex(This,iFileType)")
cpp_quote("#define IFileOpenDialog_GetFileTypeIndex(This,piFileType) (This)->lpVtbl->GetFileTypeIndex(This,piFileType)")
cpp_quote("#define IFileOpenDialog_Advise(This,pfde,pdwCookie) (This)->lpVtbl->Advise(This,pfde,pdwCookie)")
cpp_quote("#define IFileOpenDialog_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)")
cpp_quote("#define IFileOpenDialog_SetOptions(This,fos) (This)->lpVtbl->SetOptions(This,fos)")
cpp_quote("#define IFileOpenDialog_GetOptions(This,pfos) (This)->lpVtbl->GetOptions(This,pfos)")
cpp_quote("#define IFileOpenDialog_SetDefaultFolder(This,psi) (This)->lpVtbl->SetDefaultFolder(This,psi)")
cpp_quote("#define IFileOpenDialog_SetFolder(This,psi) (This)->lpVtbl->SetFolder(This,psi)")
cpp_quote("#define IFileOpenDialog_GetFolder(This,ppsi) (This)->lpVtbl->GetFolder(This,ppsi)")
cpp_quote("#define IFileOpenDialog_GetCurrentSelection(This,ppsi) (This)->lpVtbl->GetCurrentSelection(This,ppsi)")
cpp_quote("#define IFileOpenDialog_SetFileName(This,pszName) (This)->lpVtbl->SetFileName(This,pszName)")
cpp_quote("#define IFileOpenDialog_GetFileName(This,pszName) (This)->lpVtbl->GetFileName(This,pszName)")
cpp_quote("#define IFileOpenDialog_SetTitle(This,pszTitle) (This)->lpVtbl->SetTitle(This,pszTitle)")
cpp_quote("#define IFileOpenDialog_SetOkButtonLabel(This,pszText) (This)->lpVtbl->SetOkButtonLabel(This,pszText)")
cpp_quote("#define IFileOpenDialog_SetFileNameLabel(This,pszLabel) (This)->lpVtbl->SetFileNameLabel(This,pszLabel)")
cpp_quote("#define IFileOpenDialog_GetResult(This,ppsi) (This)->lpVtbl->GetResult(This,ppsi)")
cpp_quote("#define IFileOpenDialog_AddPlace(This,psi,fdap) (This)->lpVtbl->AddPlace(This,psi,fdap)")
cpp_quote("#define IFileOpenDialog_SetDefaultExtension(This,pszDefaultExtension) (This)->lpVtbl->SetDefaultExtension(This,pszDefaultExtension)")
cpp_quote("#define IFileOpenDialog_Close(This,hr) (This)->lpVtbl->Close(This,hr)")
cpp_quote("#define IFileOpenDialog_SetClientGuid(This,guid) (This)->lpVtbl->SetClientGuid(This,guid)")
cpp_quote("#define IFileOpenDialog_ClearClientData(This) (This)->lpVtbl->ClearClientData(This)")
cpp_quote("#define IFileOpenDialog_SetFilter(This,pFilter) (This)->lpVtbl->SetFilter(This,pFilter)")
cpp_quote("/*** IFileOpenDialog methods ***/")
cpp_quote("#define IFileOpenDialog_GetResults(This,ppenum) (This)->lpVtbl->GetResults(This,ppenum)")
cpp_quote("#define IFileOpenDialog_GetSelectedItems(This,ppsai) (This)->lpVtbl->GetSelectedItems(This,ppsai)")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif  /* __IFileOpenDialog_INTERFACE_DEFINED__ */")
cpp_quote("")
cpp_quote("#ifndef __IPassportWizard_INTERFACE_DEFINED__")
cpp_quote("#define __IPassportWizard_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IPassportWizard;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IPassportWizard : public IModalWindow {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI SetOptions(DWORD dwOptions) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IPassportWizardVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IPassportWizard *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IPassportWizard *This);")
cpp_quote("      ULONG (WINAPI *Release)(IPassportWizard *This);")
cpp_quote("      HRESULT (WINAPI *Show)(IPassportWizard *This,HWND hwndParent);")
cpp_quote("      HRESULT (WINAPI *SetOptions)(IPassportWizard *This,DWORD dwOptions);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IPassportWizardVtbl;")
cpp_quote("  struct IPassportWizard {")
cpp_quote("    CONST_VTBL struct IPassportWizardVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IPassportWizard_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IPassportWizard_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IPassportWizard_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IPassportWizard_Show(This,hwndParent) (This)->lpVtbl->Show(This,hwndParent)")
cpp_quote("#define IPassportWizard_SetOptions(This,dwOptions) (This)->lpVtbl->SetOptions(This,dwOptions)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IPassportWizard_SetOptions_Proxy(IPassportWizard *This,DWORD dwOptions);")
cpp_quote("  void __RPC_STUB IPassportWizard_SetOptions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define PROPSTR_EXTENSIONCOMPLETIONSTATE L\"ExtensionCompletionState\"")
cpp_quote("")
cpp_quote("  enum __MIDL___MIDL_itf_shobjidl_0241_0001 {")
cpp_quote("    CDBE_RET_DEFAULT = 0,CDBE_RET_DONTRUNOTHEREXTS = 0x1,CDBE_RET_STOPWIZARD = 0x2")
cpp_quote("  };")
cpp_quote("#define SID_CDWizardHost IID_ICDBurnExt")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0241_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0241_v0_0_s_ifspec;")
cpp_quote("#ifndef __ICDBurnExt_INTERFACE_DEFINED__")
cpp_quote("#define __ICDBurnExt_INTERFACE_DEFINED__")
cpp_quote("  enum __MIDL_ICDBurnExt_0002 {")
cpp_quote("    CDBE_TYPE_MUSIC = 0x1,CDBE_TYPE_DATA = 0x2,CDBE_TYPE_ALL = 0xffffffff")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  EXTERN_C const IID IID_ICDBurnExt;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct ICDBurnExt : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetSupportedActionTypes(DWORD *pdwActions) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct ICDBurnExtVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(ICDBurnExt *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(ICDBurnExt *This);")
cpp_quote("      ULONG (WINAPI *Release)(ICDBurnExt *This);")
cpp_quote("      HRESULT (WINAPI *GetSupportedActionTypes)(ICDBurnExt *This,DWORD *pdwActions);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } ICDBurnExtVtbl;")
cpp_quote("  struct ICDBurnExt {")
cpp_quote("    CONST_VTBL struct ICDBurnExtVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define ICDBurnExt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define ICDBurnExt_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define ICDBurnExt_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define ICDBurnExt_GetSupportedActionTypes(This,pdwActions) (This)->lpVtbl->GetSupportedActionTypes(This,pdwActions)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI ICDBurnExt_GetSupportedActionTypes_Proxy(ICDBurnExt *This,DWORD *pdwActions);")
cpp_quote("  void __RPC_STUB ICDBurnExt_GetSupportedActionTypes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  typedef void (*PFDVENUMREADYBALLBACK)(LPVOID pvData);")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0242_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0242_v0_0_s_ifspec;")
cpp_quote("#ifndef __IDVGetEnum_INTERFACE_DEFINED__")
cpp_quote("#define __IDVGetEnum_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IDVGetEnum;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IDVGetEnum : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI SetEnumReadyCallback(PFDVENUMREADYBALLBACK pfn,LPVOID pvData) = 0;")
cpp_quote("    virtual HRESULT WINAPI CreateEnumIDListFromContents(LPCITEMIDLIST pidlFolder,DWORD dwEnumFlags,IEnumIDList **ppEnumIDList) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IDVGetEnumVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IDVGetEnum *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IDVGetEnum *This);")
cpp_quote("      ULONG (WINAPI *Release)(IDVGetEnum *This);")
cpp_quote("      HRESULT (WINAPI *SetEnumReadyCallback)(IDVGetEnum *This,PFDVENUMREADYBALLBACK pfn,LPVOID pvData);")
cpp_quote("      HRESULT (WINAPI *CreateEnumIDListFromContents)(IDVGetEnum *This,LPCITEMIDLIST pidlFolder,DWORD dwEnumFlags,IEnumIDList **ppEnumIDList);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IDVGetEnumVtbl;")
cpp_quote("  struct IDVGetEnum {")
cpp_quote("    CONST_VTBL struct IDVGetEnumVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IDVGetEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IDVGetEnum_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IDVGetEnum_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IDVGetEnum_SetEnumReadyCallback(This,pfn,pvData) (This)->lpVtbl->SetEnumReadyCallback(This,pfn,pvData)")
cpp_quote("#define IDVGetEnum_CreateEnumIDListFromContents(This,pidlFolder,dwEnumFlags,ppEnumIDList) (This)->lpVtbl->CreateEnumIDListFromContents(This,pidlFolder,dwEnumFlags,ppEnumIDList)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IDVGetEnum_SetEnumReadyCallback_Proxy(IDVGetEnum *This,PFDVENUMREADYBALLBACK pfn,LPVOID pvData);")
cpp_quote("  void __RPC_STUB IDVGetEnum_SetEnumReadyCallback_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IDVGetEnum_CreateEnumIDListFromContents_Proxy(IDVGetEnum *This,LPCITEMIDLIST pidlFolder,DWORD dwEnumFlags,IEnumIDList **ppEnumIDList);")
cpp_quote("  void __RPC_STUB IDVGetEnum_CreateEnumIDListFromContents_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IInsertItem_INTERFACE_DEFINED__")
cpp_quote("#define __IInsertItem_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IInsertItem;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IInsertItem : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI InsertItem(LPCITEMIDLIST pidl) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IInsertItemVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IInsertItem *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IInsertItem *This);")
cpp_quote("      ULONG (WINAPI *Release)(IInsertItem *This);")
cpp_quote("      HRESULT (WINAPI *InsertItem)(IInsertItem *This,LPCITEMIDLIST pidl);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IInsertItemVtbl;")
cpp_quote("  struct IInsertItem {")
cpp_quote("    CONST_VTBL struct IInsertItemVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IInsertItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IInsertItem_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IInsertItem_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IInsertItem_InsertItem(This,pidl) (This)->lpVtbl->InsertItem(This,pidl)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IInsertItem_InsertItem_Proxy(IInsertItem *This,LPCITEMIDLIST pidl);")
cpp_quote("  void __RPC_STUB IInsertItem_InsertItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IDeskBar_INTERFACE_DEFINED__")
cpp_quote("#define __IDeskBar_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IDeskBar;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IDeskBar : public IOleWindow {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI SetClient(IUnknown *punkClient) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetClient(IUnknown **ppunkClient) = 0;")
cpp_quote("    virtual HRESULT WINAPI OnPosRectChangeDB(LPRECT prc) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IDeskBarVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IDeskBar *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IDeskBar *This);")
cpp_quote("      ULONG (WINAPI *Release)(IDeskBar *This);")
cpp_quote("      HRESULT (WINAPI *GetWindow)(IDeskBar *This,HWND *phwnd);")
cpp_quote("      HRESULT (WINAPI *ContextSensitiveHelp)(IDeskBar *This,WINBOOL fEnterMode);")
cpp_quote("      HRESULT (WINAPI *SetClient)(IDeskBar *This,IUnknown *punkClient);")
cpp_quote("      HRESULT (WINAPI *GetClient)(IDeskBar *This,IUnknown **ppunkClient);")
cpp_quote("      HRESULT (WINAPI *OnPosRectChangeDB)(IDeskBar *This,LPRECT prc);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IDeskBarVtbl;")
cpp_quote("  struct IDeskBar {")
cpp_quote("    CONST_VTBL struct IDeskBarVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IDeskBar_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IDeskBar_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IDeskBar_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IDeskBar_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)")
cpp_quote("#define IDeskBar_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)")
cpp_quote("#define IDeskBar_SetClient(This,punkClient) (This)->lpVtbl->SetClient(This,punkClient)")
cpp_quote("#define IDeskBar_GetClient(This,ppunkClient) (This)->lpVtbl->GetClient(This,ppunkClient)")
cpp_quote("#define IDeskBar_OnPosRectChangeDB(This,prc) (This)->lpVtbl->OnPosRectChangeDB(This,prc)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IDeskBar_SetClient_Proxy(IDeskBar *This,IUnknown *punkClient);")
cpp_quote("  void __RPC_STUB IDeskBar_SetClient_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IDeskBar_GetClient_Proxy(IDeskBar *This,IUnknown **ppunkClient);")
cpp_quote("  void __RPC_STUB IDeskBar_GetClient_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IDeskBar_OnPosRectChangeDB_Proxy(IDeskBar *This,LPRECT prc);")
cpp_quote("  void __RPC_STUB IDeskBar_OnPosRectChangeDB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IMenuBand_INTERFACE_DEFINED__")
cpp_quote("#define __IMenuBand_INTERFACE_DEFINED__")
cpp_quote("  enum __MIDL_IMenuBand_0001 {")
cpp_quote("    MBHANDCID_PIDLSELECT = 0")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  EXTERN_C const IID IID_IMenuBand;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IMenuBand : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI IsMenuMessage(MSG *pmsg) = 0;")
cpp_quote("    virtual HRESULT WINAPI TranslateMenuMessage(MSG *pmsg,LRESULT *plRet) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IMenuBandVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IMenuBand *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IMenuBand *This);")
cpp_quote("      ULONG (WINAPI *Release)(IMenuBand *This);")
cpp_quote("      HRESULT (WINAPI *IsMenuMessage)(IMenuBand *This,MSG *pmsg);")
cpp_quote("      HRESULT (WINAPI *TranslateMenuMessage)(IMenuBand *This,MSG *pmsg,LRESULT *plRet);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IMenuBandVtbl;")
cpp_quote("  struct IMenuBand {")
cpp_quote("    CONST_VTBL struct IMenuBandVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IMenuBand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IMenuBand_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IMenuBand_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IMenuBand_IsMenuMessage(This,pmsg) (This)->lpVtbl->IsMenuMessage(This,pmsg)")
cpp_quote("#define IMenuBand_TranslateMenuMessage(This,pmsg,plRet) (This)->lpVtbl->TranslateMenuMessage(This,pmsg,plRet)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IMenuBand_IsMenuMessage_Proxy(IMenuBand *This,MSG *pmsg);")
cpp_quote("  void __RPC_STUB IMenuBand_IsMenuMessage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IMenuBand_TranslateMenuMessage_Proxy(IMenuBand *This,MSG *pmsg,LRESULT *plRet);")
cpp_quote("  void __RPC_STUB IMenuBand_TranslateMenuMessage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IFolderBandPriv_INTERFACE_DEFINED__")
cpp_quote("#define __IFolderBandPriv_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IFolderBandPriv;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IFolderBandPriv : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI SetCascade(WINBOOL f) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetAccelerators(WINBOOL f) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetNoIcons(WINBOOL f) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetNoText(WINBOOL f) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IFolderBandPrivVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IFolderBandPriv *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IFolderBandPriv *This);")
cpp_quote("      ULONG (WINAPI *Release)(IFolderBandPriv *This);")
cpp_quote("      HRESULT (WINAPI *SetCascade)(IFolderBandPriv *This,WINBOOL f);")
cpp_quote("      HRESULT (WINAPI *SetAccelerators)(IFolderBandPriv *This,WINBOOL f);")
cpp_quote("      HRESULT (WINAPI *SetNoIcons)(IFolderBandPriv *This,WINBOOL f);")
cpp_quote("      HRESULT (WINAPI *SetNoText)(IFolderBandPriv *This,WINBOOL f);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IFolderBandPrivVtbl;")
cpp_quote("  struct IFolderBandPriv {")
cpp_quote("    CONST_VTBL struct IFolderBandPrivVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IFolderBandPriv_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IFolderBandPriv_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IFolderBandPriv_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IFolderBandPriv_SetCascade(This,f) (This)->lpVtbl->SetCascade(This,f)")
cpp_quote("#define IFolderBandPriv_SetAccelerators(This,f) (This)->lpVtbl->SetAccelerators(This,f)")
cpp_quote("#define IFolderBandPriv_SetNoIcons(This,f) (This)->lpVtbl->SetNoIcons(This,f)")
cpp_quote("#define IFolderBandPriv_SetNoText(This,f) (This)->lpVtbl->SetNoText(This,f)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IFolderBandPriv_SetCascade_Proxy(IFolderBandPriv *This,WINBOOL f);")
cpp_quote("  void __RPC_STUB IFolderBandPriv_SetCascade_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderBandPriv_SetAccelerators_Proxy(IFolderBandPriv *This,WINBOOL f);")
cpp_quote("  void __RPC_STUB IFolderBandPriv_SetAccelerators_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderBandPriv_SetNoIcons_Proxy(IFolderBandPriv *This,WINBOOL f);")
cpp_quote("  void __RPC_STUB IFolderBandPriv_SetNoIcons_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IFolderBandPriv_SetNoText_Proxy(IFolderBandPriv *This,WINBOOL f);")
cpp_quote("  void __RPC_STUB IFolderBandPriv_SetNoText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#if 0x501 >= 0x0400")
cpp_quote("#include <pshpack8.h>")
cpp_quote("  typedef struct tagBANDSITEINFO {")
cpp_quote("    DWORD dwMask;")
cpp_quote("    DWORD dwState;")
cpp_quote("    DWORD dwStyle;")
cpp_quote("  } BANDSITEINFO;")
cpp_quote("")
cpp_quote("#include <poppack.h>")
cpp_quote("")
cpp_quote("  enum __MIDL___MIDL_itf_shobjidl_0247_0001 {")
cpp_quote("    BSID_BANDADDED = 0,BSID_BANDREMOVED = BSID_BANDADDED + 1")
cpp_quote("  };")
cpp_quote("#define BSIM_STATE 0x00000001")
cpp_quote("#define BSIM_STYLE 0x00000002")
cpp_quote("#define BSSF_VISIBLE 0x00000001")
cpp_quote("#define BSSF_NOTITLE 0x00000002")
cpp_quote("#define BSSF_UNDELETEABLE 0x00001000")
cpp_quote("#define BSIS_AUTOGRIPPER 0x00000000")
cpp_quote("#define BSIS_NOGRIPPER 0x00000001")
cpp_quote("#define BSIS_ALWAYSGRIPPER 0x00000002")
cpp_quote("#define BSIS_LEFTALIGN 0x00000004")
cpp_quote("#define BSIS_SINGLECLICK 0x00000008")
cpp_quote("#define BSIS_NOCONTEXTMENU 0x00000010")
cpp_quote("#define BSIS_NODROPTARGET 0x00000020")
cpp_quote("#define BSIS_NOCAPTION 0x00000040")
cpp_quote("#define BSIS_PREFERNOLINEBREAK 0x00000080")
cpp_quote("#define BSIS_LOCKED 0x00000100")
cpp_quote("#define SID_SBandSite IID_IBandSite")
cpp_quote("#define CGID_BandSite IID_IBandSite")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0247_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0247_v0_0_s_ifspec;")
cpp_quote("#ifndef __IBandSite_INTERFACE_DEFINED__")
cpp_quote("#define __IBandSite_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IBandSite;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IBandSite : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI AddBand(IUnknown *punk) = 0;")
cpp_quote("    virtual HRESULT WINAPI EnumBands(UINT uBand,DWORD *pdwBandID) = 0;")
cpp_quote("    virtual HRESULT WINAPI QueryBand(DWORD dwBandID,IDeskBand **ppstb,DWORD *pdwState,LPWSTR pszName,int cchName) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetBandState(DWORD dwBandID,DWORD dwMask,DWORD dwState) = 0;")
cpp_quote("    virtual HRESULT WINAPI RemoveBand(DWORD dwBandID) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetBandObject(DWORD dwBandID,REFIID riid,void **ppv) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetBandSiteInfo(const BANDSITEINFO *pbsinfo) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetBandSiteInfo(BANDSITEINFO *pbsinfo) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IBandSiteVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IBandSite *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IBandSite *This);")
cpp_quote("      ULONG (WINAPI *Release)(IBandSite *This);")
cpp_quote("      HRESULT (WINAPI *AddBand)(IBandSite *This,IUnknown *punk);")
cpp_quote("      HRESULT (WINAPI *EnumBands)(IBandSite *This,UINT uBand,DWORD *pdwBandID);")
cpp_quote("      HRESULT (WINAPI *QueryBand)(IBandSite *This,DWORD dwBandID,IDeskBand **ppstb,DWORD *pdwState,LPWSTR pszName,int cchName);")
cpp_quote("      HRESULT (WINAPI *SetBandState)(IBandSite *This,DWORD dwBandID,DWORD dwMask,DWORD dwState);")
cpp_quote("      HRESULT (WINAPI *RemoveBand)(IBandSite *This,DWORD dwBandID);")
cpp_quote("      HRESULT (WINAPI *GetBandObject)(IBandSite *This,DWORD dwBandID,REFIID riid,void **ppv);")
cpp_quote("      HRESULT (WINAPI *SetBandSiteInfo)(IBandSite *This,const BANDSITEINFO *pbsinfo);")
cpp_quote("      HRESULT (WINAPI *GetBandSiteInfo)(IBandSite *This,BANDSITEINFO *pbsinfo);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IBandSiteVtbl;")
cpp_quote("  struct IBandSite {")
cpp_quote("    CONST_VTBL struct IBandSiteVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IBandSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IBandSite_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IBandSite_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IBandSite_AddBand(This,punk) (This)->lpVtbl->AddBand(This,punk)")
cpp_quote("#define IBandSite_EnumBands(This,uBand,pdwBandID) (This)->lpVtbl->EnumBands(This,uBand,pdwBandID)")
cpp_quote("#define IBandSite_QueryBand(This,dwBandID,ppstb,pdwState,pszName,cchName) (This)->lpVtbl->QueryBand(This,dwBandID,ppstb,pdwState,pszName,cchName)")
cpp_quote("#define IBandSite_SetBandState(This,dwBandID,dwMask,dwState) (This)->lpVtbl->SetBandState(This,dwBandID,dwMask,dwState)")
cpp_quote("#define IBandSite_RemoveBand(This,dwBandID) (This)->lpVtbl->RemoveBand(This,dwBandID)")
cpp_quote("#define IBandSite_GetBandObject(This,dwBandID,riid,ppv) (This)->lpVtbl->GetBandObject(This,dwBandID,riid,ppv)")
cpp_quote("#define IBandSite_SetBandSiteInfo(This,pbsinfo) (This)->lpVtbl->SetBandSiteInfo(This,pbsinfo)")
cpp_quote("#define IBandSite_GetBandSiteInfo(This,pbsinfo) (This)->lpVtbl->GetBandSiteInfo(This,pbsinfo)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IBandSite_AddBand_Proxy(IBandSite *This,IUnknown *punk);")
cpp_quote("  void __RPC_STUB IBandSite_AddBand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IBandSite_EnumBands_Proxy(IBandSite *This,UINT uBand,DWORD *pdwBandID);")
cpp_quote("  void __RPC_STUB IBandSite_EnumBands_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IBandSite_QueryBand_Proxy(IBandSite *This,DWORD dwBandID,IDeskBand **ppstb,DWORD *pdwState,LPWSTR pszName,int cchName);")
cpp_quote("  void __RPC_STUB IBandSite_QueryBand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IBandSite_SetBandState_Proxy(IBandSite *This,DWORD dwBandID,DWORD dwMask,DWORD dwState);")
cpp_quote("  void __RPC_STUB IBandSite_SetBandState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IBandSite_RemoveBand_Proxy(IBandSite *This,DWORD dwBandID);")
cpp_quote("  void __RPC_STUB IBandSite_RemoveBand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IBandSite_GetBandObject_Proxy(IBandSite *This,DWORD dwBandID,REFIID riid,void **ppv);")
cpp_quote("  void __RPC_STUB IBandSite_GetBandObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IBandSite_SetBandSiteInfo_Proxy(IBandSite *This,const BANDSITEINFO *pbsinfo);")
cpp_quote("  void __RPC_STUB IBandSite_SetBandSiteInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IBandSite_GetBandSiteInfo_Proxy(IBandSite *This,BANDSITEINFO *pbsinfo);")
cpp_quote("  void __RPC_STUB IBandSite_GetBandSiteInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0248_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0248_v0_0_s_ifspec;")
cpp_quote("#ifndef __INamespaceWalkCB_INTERFACE_DEFINED__")
cpp_quote("#define __INamespaceWalkCB_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_INamespaceWalkCB;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct INamespaceWalkCB : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI FoundItem(IShellFolder *psf,LPCITEMIDLIST pidl) = 0;")
cpp_quote("    virtual HRESULT WINAPI EnterFolder(IShellFolder *psf,LPCITEMIDLIST pidl) = 0;")
cpp_quote("    virtual HRESULT WINAPI LeaveFolder(IShellFolder *psf,LPCITEMIDLIST pidl) = 0;")
cpp_quote("    virtual HRESULT WINAPI InitializeProgressDialog(LPWSTR *ppszTitle,LPWSTR *ppszCancel) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct INamespaceWalkCBVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(INamespaceWalkCB *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(INamespaceWalkCB *This);")
cpp_quote("      ULONG (WINAPI *Release)(INamespaceWalkCB *This);")
cpp_quote("      HRESULT (WINAPI *FoundItem)(INamespaceWalkCB *This,IShellFolder *psf,LPCITEMIDLIST pidl);")
cpp_quote("      HRESULT (WINAPI *EnterFolder)(INamespaceWalkCB *This,IShellFolder *psf,LPCITEMIDLIST pidl);")
cpp_quote("      HRESULT (WINAPI *LeaveFolder)(INamespaceWalkCB *This,IShellFolder *psf,LPCITEMIDLIST pidl);")
cpp_quote("      HRESULT (WINAPI *InitializeProgressDialog)(INamespaceWalkCB *This,LPWSTR *ppszTitle,LPWSTR *ppszCancel);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } INamespaceWalkCBVtbl;")
cpp_quote("  struct INamespaceWalkCB {")
cpp_quote("    CONST_VTBL struct INamespaceWalkCBVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define INamespaceWalkCB_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define INamespaceWalkCB_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define INamespaceWalkCB_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define INamespaceWalkCB_FoundItem(This,psf,pidl) (This)->lpVtbl->FoundItem(This,psf,pidl)")
cpp_quote("#define INamespaceWalkCB_EnterFolder(This,psf,pidl) (This)->lpVtbl->EnterFolder(This,psf,pidl)")
cpp_quote("#define INamespaceWalkCB_LeaveFolder(This,psf,pidl) (This)->lpVtbl->LeaveFolder(This,psf,pidl)")
cpp_quote("#define INamespaceWalkCB_InitializeProgressDialog(This,ppszTitle,ppszCancel) (This)->lpVtbl->InitializeProgressDialog(This,ppszTitle,ppszCancel)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI INamespaceWalkCB_FoundItem_Proxy(INamespaceWalkCB *This,IShellFolder *psf,LPCITEMIDLIST pidl);")
cpp_quote("  void __RPC_STUB INamespaceWalkCB_FoundItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI INamespaceWalkCB_EnterFolder_Proxy(INamespaceWalkCB *This,IShellFolder *psf,LPCITEMIDLIST pidl);")
cpp_quote("  void __RPC_STUB INamespaceWalkCB_EnterFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI INamespaceWalkCB_LeaveFolder_Proxy(INamespaceWalkCB *This,IShellFolder *psf,LPCITEMIDLIST pidl);")
cpp_quote("  void __RPC_STUB INamespaceWalkCB_LeaveFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI INamespaceWalkCB_InitializeProgressDialog_Proxy(INamespaceWalkCB *This,LPWSTR *ppszTitle,LPWSTR *ppszCancel);")
cpp_quote("  void __RPC_STUB INamespaceWalkCB_InitializeProgressDialog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __INamespaceWalk_INTERFACE_DEFINED__")
cpp_quote("#define __INamespaceWalk_INTERFACE_DEFINED__")
cpp_quote("  enum __MIDL_INamespaceWalk_0001 {")
cpp_quote("    NSWF_NONE_IMPLIES_ALL = 0x1,NSWF_ONE_IMPLIES_ALL = 0x2,NSWF_DONT_TRAVERSE_LINKS = 0x4,NSWF_DONT_ACCUMULATE_RESULT = 0x8,")
cpp_quote("    NSWF_TRAVERSE_STREAM_JUNCTIONS = 0x10,NSWF_FILESYSTEM_ONLY = 0x20,NSWF_SHOW_PROGRESS = 0x40,NSWF_FLAG_VIEWORDER = 0x80,")
cpp_quote("    NSWF_IGNORE_AUTOPLAY_HIDA = 0x100")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  EXTERN_C const IID IID_INamespaceWalk;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct INamespaceWalk : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Walk(IUnknown *punkToWalk,DWORD dwFlags,int cDepth,INamespaceWalkCB *pnswcb) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetIDArrayResult(UINT *pcItems,LPITEMIDLIST **pppidl) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct INamespaceWalkVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(INamespaceWalk *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(INamespaceWalk *This);")
cpp_quote("      ULONG (WINAPI *Release)(INamespaceWalk *This);")
cpp_quote("      HRESULT (WINAPI *Walk)(INamespaceWalk *This,IUnknown *punkToWalk,DWORD dwFlags,int cDepth,INamespaceWalkCB *pnswcb);")
cpp_quote("      HRESULT (WINAPI *GetIDArrayResult)(INamespaceWalk *This,UINT *pcItems,LPITEMIDLIST **pppidl);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } INamespaceWalkVtbl;")
cpp_quote("  struct INamespaceWalk {")
cpp_quote("    CONST_VTBL struct INamespaceWalkVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define INamespaceWalk_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define INamespaceWalk_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define INamespaceWalk_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define INamespaceWalk_Walk(This,punkToWalk,dwFlags,cDepth,pnswcb) (This)->lpVtbl->Walk(This,punkToWalk,dwFlags,cDepth,pnswcb)")
cpp_quote("#define INamespaceWalk_GetIDArrayResult(This,pcItems,pppidl) (This)->lpVtbl->GetIDArrayResult(This,pcItems,pppidl)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI INamespaceWalk_Walk_Proxy(INamespaceWalk *This,IUnknown *punkToWalk,DWORD dwFlags,int cDepth,INamespaceWalkCB *pnswcb);")
cpp_quote("  void __RPC_STUB INamespaceWalk_Walk_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI INamespaceWalk_GetIDArrayResult_Proxy(INamespaceWalk *This,UINT *pcItems,LPITEMIDLIST **pppidl);")
cpp_quote("  void __RPC_STUB INamespaceWalk_GetIDArrayResult_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IRegTreeItem_INTERFACE_DEFINED__")
cpp_quote("#define __IRegTreeItem_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IRegTreeItem;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IRegTreeItem : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetCheckState(WINBOOL *pbCheck) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetCheckState(WINBOOL bCheck) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IRegTreeItemVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IRegTreeItem *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IRegTreeItem *This);")
cpp_quote("      ULONG (WINAPI *Release)(IRegTreeItem *This);")
cpp_quote("      HRESULT (WINAPI *GetCheckState)(IRegTreeItem *This,WINBOOL *pbCheck);")
cpp_quote("      HRESULT (WINAPI *SetCheckState)(IRegTreeItem *This,WINBOOL bCheck);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IRegTreeItemVtbl;")
cpp_quote("  struct IRegTreeItem {")
cpp_quote("    CONST_VTBL struct IRegTreeItemVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IRegTreeItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IRegTreeItem_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IRegTreeItem_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IRegTreeItem_GetCheckState(This,pbCheck) (This)->lpVtbl->GetCheckState(This,pbCheck)")
cpp_quote("#define IRegTreeItem_SetCheckState(This,bCheck) (This)->lpVtbl->SetCheckState(This,bCheck)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IRegTreeItem_GetCheckState_Proxy(IRegTreeItem *This,WINBOOL *pbCheck);")
cpp_quote("  void __RPC_STUB IRegTreeItem_GetCheckState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IRegTreeItem_SetCheckState_Proxy(IRegTreeItem *This,WINBOOL bCheck);")
cpp_quote("  void __RPC_STUB IRegTreeItem_SetCheckState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  enum __MIDL___MIDL_itf_shobjidl_0251_0001 {")
cpp_quote("    MPOS_EXECUTE = 0,")
cpp_quote("    MPOS_FULLCANCEL,MPOS_CANCELLEVEL,MPOS_SELECTLEFT,MPOS_SELECTRIGHT,")
cpp_quote("    MPOS_CHILDTRACKING")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  enum __MIDL___MIDL_itf_shobjidl_0251_0002 {")
cpp_quote("    MPPF_SETFOCUS = 0x1,MPPF_INITIALSELECT = 0x2,MPPF_NOANIMATE = 0x4,")
cpp_quote("    MPPF_KEYBOARD = 0x10,MPPF_REPOSITION = 0x20,MPPF_FORCEZORDER = 0x40,MPPF_FINALSELECT = 0x80,")
cpp_quote("    MPPF_TOP = 0x20000000,MPPF_LEFT = 0x40000000,MPPF_RIGHT = 0x60000000,MPPF_BOTTOM = 0x80000000,MPPF_POS_MASK = 0xe0000000")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0251_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0251_v0_0_s_ifspec;")
cpp_quote("#ifndef __IMenuPopup_INTERFACE_DEFINED__")
cpp_quote("#define __IMenuPopup_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IMenuPopup;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IMenuPopup : public IDeskBar {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Popup(POINTL *ppt,RECTL *prcExclude,DWORD dwFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI OnSelect(DWORD dwSelectType) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetSubMenu(IMenuPopup *pmp,WINBOOL fSet) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IMenuPopupVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IMenuPopup *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IMenuPopup *This);")
cpp_quote("      ULONG (WINAPI *Release)(IMenuPopup *This);")
cpp_quote("      HRESULT (WINAPI *GetWindow)(IMenuPopup *This,HWND *phwnd);")
cpp_quote("      HRESULT (WINAPI *ContextSensitiveHelp)(IMenuPopup *This,WINBOOL fEnterMode);")
cpp_quote("      HRESULT (WINAPI *SetClient)(IMenuPopup *This,IUnknown *punkClient);")
cpp_quote("      HRESULT (WINAPI *GetClient)(IMenuPopup *This,IUnknown **ppunkClient);")
cpp_quote("      HRESULT (WINAPI *OnPosRectChangeDB)(IMenuPopup *This,LPRECT prc);")
cpp_quote("      HRESULT (WINAPI *Popup)(IMenuPopup *This,POINTL *ppt,RECTL *prcExclude,DWORD dwFlags);")
cpp_quote("      HRESULT (WINAPI *OnSelect)(IMenuPopup *This,DWORD dwSelectType);")
cpp_quote("      HRESULT (WINAPI *SetSubMenu)(IMenuPopup *This,IMenuPopup *pmp,WINBOOL fSet);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IMenuPopupVtbl;")
cpp_quote("  struct IMenuPopup {")
cpp_quote("    CONST_VTBL struct IMenuPopupVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IMenuPopup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IMenuPopup_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IMenuPopup_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IMenuPopup_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)")
cpp_quote("#define IMenuPopup_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)")
cpp_quote("#define IMenuPopup_SetClient(This,punkClient) (This)->lpVtbl->SetClient(This,punkClient)")
cpp_quote("#define IMenuPopup_GetClient(This,ppunkClient) (This)->lpVtbl->GetClient(This,ppunkClient)")
cpp_quote("#define IMenuPopup_OnPosRectChangeDB(This,prc) (This)->lpVtbl->OnPosRectChangeDB(This,prc)")
cpp_quote("#define IMenuPopup_Popup(This,ppt,prcExclude,dwFlags) (This)->lpVtbl->Popup(This,ppt,prcExclude,dwFlags)")
cpp_quote("#define IMenuPopup_OnSelect(This,dwSelectType) (This)->lpVtbl->OnSelect(This,dwSelectType)")
cpp_quote("#define IMenuPopup_SetSubMenu(This,pmp,fSet) (This)->lpVtbl->SetSubMenu(This,pmp,fSet)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IMenuPopup_Popup_Proxy(IMenuPopup *This,POINTL *ppt,RECTL *prcExclude,DWORD dwFlags);")
cpp_quote("  void __RPC_STUB IMenuPopup_Popup_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IMenuPopup_OnSelect_Proxy(IMenuPopup *This,DWORD dwSelectType);")
cpp_quote("  void __RPC_STUB IMenuPopup_OnSelect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IMenuPopup_SetSubMenu_Proxy(IMenuPopup *This,IMenuPopup *pmp,WINBOOL fSet);")
cpp_quote("  void __RPC_STUB IMenuPopup_SetSubMenu_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")

[
    uuid(43826d1e-e718-42ee-bc55-a1e261c37bfe),
    object,
    pointer_default(unique)
]
interface IShellItem : IUnknown
{
    typedef [v1_enum] enum _SIGDN {
        SIGDN_NORMALDISPLAY               = 0x00000000,
        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;

    [v1_enum] enum _SICHINTF {
        SICHINT_DISPLAY   = 0x00000000,
        SICHINT_ALLFIELDS = (int)0x80000000,
        SICHINT_CANONICAL = 0x10000000,
        SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000
    };

    typedef DWORD SICHINTF;

    HRESULT BindToHandler(
            [in, unique] IBindCtx *pbc,
            [in] REFGUID bhid,
            [in] REFIID riid,
            [out, iid_is(riid)] void **ppv);

    HRESULT GetParent([out] IShellItem **ppsi);

    HRESULT GetDisplayName(
            [in] SIGDN sigdnName,
            [out, string] LPWSTR *ppszName);

    HRESULT GetAttributes(
            [in] SFGAOF sfgaoMask,
            [out] SFGAOF *psfgaoAttribs);

    HRESULT Compare(
            [in] IShellItem *psi,
            [in] SICHINTF hint,
            [out] int *piOrder);
}

cpp_quote("/*****************************************************************************")
cpp_quote(" * IShellItem2 interface")
cpp_quote(" */")
cpp_quote("#ifndef __IShellItem2_INTERFACE_DEFINED__")
cpp_quote("#define __IShellItem2_INTERFACE_DEFINED__")
cpp_quote("")
cpp_quote("DEFINE_GUID(IID_IShellItem2, 0x7e9fb0d3, 0x919f, 0x4307, 0xab,0x2e, 0x9b,0x18,0x60,0x31,0x0c,0x93);")
cpp_quote("__CRT_UUID_DECL(IShellItem2, 0x7e9fb0d3, 0x919f, 0x4307, 0xab,0x2e, 0x9b,0x18,0x60,0x31,0x0c,0x93)")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("interface IShellItem2 : public IShellItem")
cpp_quote("{")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetPropertyStore(")
cpp_quote("        GETPROPERTYSTOREFLAGS flags,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetPropertyStoreWithCreateObject(")
cpp_quote("        GETPROPERTYSTOREFLAGS flags,")
cpp_quote("        IUnknown *punkCreateObject,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetPropertyStoreForKeys(")
cpp_quote("        const PROPERTYKEY *rgKeys,")
cpp_quote("        UINT cKeys,")
cpp_quote("        GETPROPERTYSTOREFLAGS flags,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetPropertyDescriptionList(")
cpp_quote("        REFPROPERTYKEY keyType,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE Update(")
cpp_quote("        IBindCtx *pbc) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetProperty(")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        PROPVARIANT *ppropvar) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetCLSID(")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        CLSID *pclsid) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetFileTime(")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        FILETIME *pft) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetInt32(")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        int *pi) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetString(")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        LPWSTR *ppsz) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetUInt32(")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        ULONG *pui) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetUInt64(")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        ULONGLONG *pull) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetBool(")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        BOOL *pf) = 0;")
cpp_quote("")
cpp_quote("};")
cpp_quote("#else")
cpp_quote("typedef struct IShellItem2Vtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /*** IUnknown methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryInterface)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvObject);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *AddRef)(")
cpp_quote("        IShellItem2* This);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *Release)(")
cpp_quote("        IShellItem2* This);")
cpp_quote("")
cpp_quote("    /*** IShellItem methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *BindToHandler)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        IBindCtx *pbc,")
cpp_quote("        REFGUID rbhid,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvOut);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetParent)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        IShellItem **ppsi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        SIGDN sigdnName,")
cpp_quote("        LPWSTR *ppszName);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetAttributes)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        SFGAOF sfgaoMask,")
cpp_quote("        SFGAOF *psfgaoAttribs);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Compare)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        IShellItem *psi,")
cpp_quote("        SICHINTF hint,")
cpp_quote("        int *piOrder);")
cpp_quote("")
cpp_quote("    /*** IShellItem2 methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetPropertyStore)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        GETPROPERTYSTOREFLAGS flags,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetPropertyStoreWithCreateObject)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        GETPROPERTYSTOREFLAGS flags,")
cpp_quote("        IUnknown *punkCreateObject,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetPropertyStoreForKeys)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        const PROPERTYKEY *rgKeys,")
cpp_quote("        UINT cKeys,")
cpp_quote("        GETPROPERTYSTOREFLAGS flags,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetPropertyDescriptionList)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        REFPROPERTYKEY keyType,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *Update)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        IBindCtx *pbc);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetProperty)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        PROPVARIANT *ppropvar);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetCLSID)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        CLSID *pclsid);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetFileTime)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        FILETIME *pft);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetInt32)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        int *pi);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetString)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        LPWSTR *ppsz);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetUInt32)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        ULONG *pui);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetUInt64)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        ULONGLONG *pull);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetBool)(")
cpp_quote("        IShellItem2* This,")
cpp_quote("        REFPROPERTYKEY key,")
cpp_quote("        BOOL *pf);")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("} IShellItem2Vtbl;")
cpp_quote("interface IShellItem2 {")
cpp_quote("    CONST_VTBL IShellItem2Vtbl* lpVtbl;")
cpp_quote("};")
cpp_quote("")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("/*** IUnknown methods ***/")
cpp_quote("#define IShellItem2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IShellItem2_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IShellItem2_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("/*** IShellItem methods ***/")
cpp_quote("#define IShellItem2_BindToHandler(This,pbc,rbhid,riid,ppvOut) (This)->lpVtbl->BindToHandler(This,pbc,rbhid,riid,ppvOut)")
cpp_quote("#define IShellItem2_GetParent(This,ppsi) (This)->lpVtbl->GetParent(This,ppsi)")
cpp_quote("#define IShellItem2_GetDisplayName(This,sigdnName,ppszName) (This)->lpVtbl->GetDisplayName(This,sigdnName,ppszName)")
cpp_quote("#define IShellItem2_GetAttributes(This,sfgaoMask,psfgaoAttribs) (This)->lpVtbl->GetAttributes(This,sfgaoMask,psfgaoAttribs)")
cpp_quote("#define IShellItem2_Compare(This,psi,hint,piOrder) (This)->lpVtbl->Compare(This,psi,hint,piOrder)")
cpp_quote("/*** IShellItem2 methods ***/")
cpp_quote("#define IShellItem2_GetPropertyStore(This,flags,riid,ppv) (This)->lpVtbl->GetPropertyStore(This,flags,riid,ppv)")
cpp_quote("#define IShellItem2_GetPropertyStoreWithCreateObject(This,flags,punkCreateObject,riid,ppv) (This)->lpVtbl->GetPropertyStoreWithCreateObject(This,flags,punkCreateObject,riid,ppv)")
cpp_quote("#define IShellItem2_GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv) (This)->lpVtbl->GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv)")
cpp_quote("#define IShellItem2_GetPropertyDescriptionList(This,keyType,riid,ppv) (This)->lpVtbl->GetPropertyDescriptionList(This,keyType,riid,ppv)")
cpp_quote("#define IShellItem2_Update(This,pbc) (This)->lpVtbl->Update(This,pbc)")
cpp_quote("#define IShellItem2_GetProperty(This,key,ppropvar) (This)->lpVtbl->GetProperty(This,key,ppropvar)")
cpp_quote("#define IShellItem2_GetCLSID(This,key,pclsid) (This)->lpVtbl->GetCLSID(This,key,pclsid)")
cpp_quote("#define IShellItem2_GetFileTime(This,key,pft) (This)->lpVtbl->GetFileTime(This,key,pft)")
cpp_quote("#define IShellItem2_GetInt32(This,key,pi) (This)->lpVtbl->GetInt32(This,key,pi)")
cpp_quote("#define IShellItem2_GetString(This,key,ppsz) (This)->lpVtbl->GetString(This,key,ppsz)")
cpp_quote("#define IShellItem2_GetUInt32(This,key,pui) (This)->lpVtbl->GetUInt32(This,key,pui)")
cpp_quote("#define IShellItem2_GetUInt64(This,key,pull) (This)->lpVtbl->GetUInt64(This,key,pull)")
cpp_quote("#define IShellItem2_GetBool(This,key,pf) (This)->lpVtbl->GetBool(This,key,pf)")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IImageRecompress_INTERFACE_DEFINED__")
cpp_quote("#define __IImageRecompress_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IImageRecompress;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IImageRecompress : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI RecompressImage(IShellItem *psi,int cx,int cy,int iQuality,IStorage *pstg,IStream **ppstrmOut) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IImageRecompressVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IImageRecompress *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IImageRecompress *This);")
cpp_quote("      ULONG (WINAPI *Release)(IImageRecompress *This);")
cpp_quote("      HRESULT (WINAPI *RecompressImage)(IImageRecompress *This,IShellItem *psi,int cx,int cy,int iQuality,IStorage *pstg,IStream **ppstrmOut);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IImageRecompressVtbl;")
cpp_quote("  struct IImageRecompress {")
cpp_quote("    CONST_VTBL struct IImageRecompressVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IImageRecompress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IImageRecompress_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IImageRecompress_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IImageRecompress_RecompressImage(This,psi,cx,cy,iQuality,pstg,ppstrmOut) (This)->lpVtbl->RecompressImage(This,psi,cx,cy,iQuality,pstg,ppstrmOut)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IImageRecompress_RecompressImage_Proxy(IImageRecompress *This,IShellItem *psi,int cx,int cy,int iQuality,IStorage *pstg,IStream **ppstrmOut);")
cpp_quote("  void __RPC_STUB IImageRecompress_RecompressImage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IDefViewSafety_INTERFACE_DEFINED__")
cpp_quote("#define __IDefViewSafety_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IDefViewSafety;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IDefViewSafety : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI IsSafePage(void) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IDefViewSafetyVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IDefViewSafety *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IDefViewSafety *This);")
cpp_quote("      ULONG (WINAPI *Release)(IDefViewSafety *This);")
cpp_quote("      HRESULT (WINAPI *IsSafePage)(IDefViewSafety *This);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IDefViewSafetyVtbl;")
cpp_quote("  struct IDefViewSafety {")
cpp_quote("    CONST_VTBL struct IDefViewSafetyVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IDefViewSafety_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IDefViewSafety_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IDefViewSafety_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IDefViewSafety_IsSafePage(This) (This)->lpVtbl->IsSafePage(This)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IDefViewSafety_IsSafePage_Proxy(IDefViewSafety *This);")
cpp_quote("  void __RPC_STUB IDefViewSafety_IsSafePage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IContextMenuSite_INTERFACE_DEFINED__")
cpp_quote("#define __IContextMenuSite_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IContextMenuSite;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IContextMenuSite : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI DoContextMenuPopup(IUnknown *punkContextMenu,UINT fFlags,POINT pt) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IContextMenuSiteVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IContextMenuSite *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IContextMenuSite *This);")
cpp_quote("      ULONG (WINAPI *Release)(IContextMenuSite *This);")
cpp_quote("      HRESULT (WINAPI *DoContextMenuPopup)(IContextMenuSite *This,IUnknown *punkContextMenu,UINT fFlags,POINT pt);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IContextMenuSiteVtbl;")
cpp_quote("  struct IContextMenuSite {")
cpp_quote("    CONST_VTBL struct IContextMenuSiteVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IContextMenuSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IContextMenuSite_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IContextMenuSite_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IContextMenuSite_DoContextMenuPopup(This,punkContextMenu,fFlags,pt) (This)->lpVtbl->DoContextMenuPopup(This,punkContextMenu,fFlags,pt)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IContextMenuSite_DoContextMenuPopup_Proxy(IContextMenuSite *This,IUnknown *punkContextMenu,UINT fFlags,POINT pt);")
cpp_quote("  void __RPC_STUB IContextMenuSite_DoContextMenuPopup_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#include <pshpack1.h>")
cpp_quote("  typedef struct tagDELEGATEITEMID {")
cpp_quote("    WORD cbSize;")
cpp_quote("    WORD wOuter;")
cpp_quote("    WORD cbInner;")
cpp_quote("    BYTE rgb[1];")
cpp_quote("  } DELEGATEITEMID;")
cpp_quote("#include <poppack.h>")
cpp_quote("")
cpp_quote("  typedef const UNALIGNED DELEGATEITEMID *PCDELEGATEITEMID;")
cpp_quote("  typedef UNALIGNED DELEGATEITEMID *PDELEGATEITEMID;")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0257_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0257_v0_0_s_ifspec;")
cpp_quote("#ifndef __IDelegateFolder_INTERFACE_DEFINED__")
cpp_quote("#define __IDelegateFolder_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IDelegateFolder;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IDelegateFolder : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI SetItemAlloc(IMalloc *pmalloc) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IDelegateFolderVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IDelegateFolder *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IDelegateFolder *This);")
cpp_quote("      ULONG (WINAPI *Release)(IDelegateFolder *This);")
cpp_quote("      HRESULT (WINAPI *SetItemAlloc)(IDelegateFolder *This,IMalloc *pmalloc);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IDelegateFolderVtbl;")
cpp_quote("  struct IDelegateFolder {")
cpp_quote("    CONST_VTBL struct IDelegateFolderVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IDelegateFolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IDelegateFolder_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IDelegateFolder_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IDelegateFolder_SetItemAlloc(This,pmalloc) (This)->lpVtbl->SetItemAlloc(This,pmalloc)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IDelegateFolder_SetItemAlloc_Proxy(IDelegateFolder *This,IMalloc *pmalloc);")
cpp_quote("  void __RPC_STUB IDelegateFolder_SetItemAlloc_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0258_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0258_v0_0_s_ifspec;")
cpp_quote("#ifndef __IBrowserFrameOptions_INTERFACE_DEFINED__")
cpp_quote("#define __IBrowserFrameOptions_INTERFACE_DEFINED__")
cpp_quote("  typedef IBrowserFrameOptions *LPBROWSERFRAMEOPTIONS;")
cpp_quote("")
cpp_quote("  enum __MIDL_IBrowserFrameOptions_0001 {")
cpp_quote("    BFO_NONE = 0,BFO_BROWSER_PERSIST_SETTINGS = 0x1,BFO_RENAME_FOLDER_OPTIONS_TOINTERNET = 0x2,BFO_BOTH_OPTIONS = 0x4,")
cpp_quote("    BIF_PREFER_INTERNET_SHORTCUT = 0x8,BFO_BROWSE_NO_IN_NEW_PROCESS = 0x10,BFO_ENABLE_HYPERLINK_TRACKING = 0x20,BFO_USE_IE_OFFLINE_SUPPORT = 0x40,")
cpp_quote("    BFO_SUBSTITUE_INTERNET_START_PAGE = 0x80,BFO_USE_IE_LOGOBANDING = 0x100,BFO_ADD_IE_TOCAPTIONBAR = 0x200,BFO_USE_DIALUP_REF = 0x400,")
cpp_quote("    BFO_USE_IE_TOOLBAR = 0x800,BFO_NO_PARENT_FOLDER_SUPPORT = 0x1000,BFO_NO_REOPEN_NEXT_RESTART = 0x2000,BFO_GO_HOME_PAGE = 0x4000,")
cpp_quote("    BFO_PREFER_IEPROCESS = 0x8000,BFO_SHOW_NAVIGATION_CANCELLED = 0x10000,BFO_USE_IE_STATUSBAR = 0x20000,BFO_QUERY_ALL = 0xffffffff")
cpp_quote("  };")
cpp_quote("  typedef DWORD BROWSERFRAMEOPTIONS;")
cpp_quote("")
cpp_quote("  EXTERN_C const IID IID_IBrowserFrameOptions;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IBrowserFrameOptions : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI GetFrameOptions(BROWSERFRAMEOPTIONS dwMask,BROWSERFRAMEOPTIONS *pdwOptions) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IBrowserFrameOptionsVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IBrowserFrameOptions *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IBrowserFrameOptions *This);")
cpp_quote("      ULONG (WINAPI *Release)(IBrowserFrameOptions *This);")
cpp_quote("      HRESULT (WINAPI *GetFrameOptions)(IBrowserFrameOptions *This,BROWSERFRAMEOPTIONS dwMask,BROWSERFRAMEOPTIONS *pdwOptions);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IBrowserFrameOptionsVtbl;")
cpp_quote("  struct IBrowserFrameOptions {")
cpp_quote("    CONST_VTBL struct IBrowserFrameOptionsVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IBrowserFrameOptions_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IBrowserFrameOptions_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IBrowserFrameOptions_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IBrowserFrameOptions_GetFrameOptions(This,dwMask,pdwOptions) (This)->lpVtbl->GetFrameOptions(This,dwMask,pdwOptions)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IBrowserFrameOptions_GetFrameOptions_Proxy(IBrowserFrameOptions *This,BROWSERFRAMEOPTIONS dwMask,BROWSERFRAMEOPTIONS *pdwOptions);")
cpp_quote("  void __RPC_STUB IBrowserFrameOptions_GetFrameOptions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("  typedef enum tagNWMF {")
cpp_quote("    NWMF_UNLOADING = 0x1,NWMF_USERINITED = 0x2,NWMF_FIRST = 0x4,NWMF_OVERRIDEKEY = 0x8,NWMF_SHOWHELP = 0x10,NWMF_HTMLDIALOG = 0x20,")
cpp_quote("    NWMF_FROMDIALOGCHILD = 0x40,NWMF_USERREQUESTED = 0x80,NWMF_USERALLOWED = 0x100")
cpp_quote("  } NWMF;")
cpp_quote("")
cpp_quote("#define SID_SNewWindowManager IID_INewWindowManager")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0259_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0259_v0_0_s_ifspec;")
cpp_quote("#ifndef __INewWindowManager_INTERFACE_DEFINED__")
cpp_quote("#define __INewWindowManager_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_INewWindowManager;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct INewWindowManager : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI EvaluateNewWindow(LPCWSTR pszUrl,LPCWSTR pszName,LPCWSTR pszUrlContext,LPCWSTR pszFeatures,WINBOOL fReplace,DWORD dwFlags,DWORD dwUserActionTime) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct INewWindowManagerVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(INewWindowManager *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(INewWindowManager *This);")
cpp_quote("      ULONG (WINAPI *Release)(INewWindowManager *This);")
cpp_quote("      HRESULT (WINAPI *EvaluateNewWindow)(INewWindowManager *This,LPCWSTR pszUrl,LPCWSTR pszName,LPCWSTR pszUrlContext,LPCWSTR pszFeatures,WINBOOL fReplace,DWORD dwFlags,DWORD dwUserActionTime);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } INewWindowManagerVtbl;")
cpp_quote("  struct INewWindowManager {")
cpp_quote("    CONST_VTBL struct INewWindowManagerVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define INewWindowManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define INewWindowManager_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define INewWindowManager_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define INewWindowManager_EvaluateNewWindow(This,pszUrl,pszName,pszUrlContext,pszFeatures,fReplace,dwFlags,dwUserActionTime) (This)->lpVtbl->EvaluateNewWindow(This,pszUrl,pszName,pszUrlContext,pszFeatures,fReplace,dwFlags,dwUserActionTime)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI INewWindowManager_EvaluateNewWindow_Proxy(INewWindowManager *This,LPCWSTR pszUrl,LPCWSTR pszName,LPCWSTR pszUrlContext,LPCWSTR pszFeatures,WINBOOL fReplace,DWORD dwFlags,DWORD dwUserActionTime);")
cpp_quote("  void __RPC_STUB INewWindowManager_EvaluateNewWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#include <pshpack8.h>")
cpp_quote("  typedef struct tagSMDATA {")
cpp_quote("    DWORD dwMask;")
cpp_quote("    DWORD dwFlags;")
cpp_quote("    HMENU hmenu;")
cpp_quote("    HWND hwnd;")
cpp_quote("    UINT uId;")
cpp_quote("    UINT uIdParent;")
cpp_quote("    UINT uIdAncestor;")
cpp_quote("    IUnknown *punk;")
cpp_quote("    LPITEMIDLIST pidlFolder;")
cpp_quote("    LPITEMIDLIST pidlItem;")
cpp_quote("    IShellFolder *psf;")
cpp_quote("    void *pvUserData;")
cpp_quote("  } SMDATA;")
cpp_quote("")
cpp_quote("  typedef struct tagSMDATA *LPSMDATA;")
cpp_quote("")
cpp_quote("#define SMDM_SHELLFOLDER 0x00000001")
cpp_quote("#define SMDM_HMENU 0x00000002")
cpp_quote("#define SMDM_TOOLBAR 0x00000004")
cpp_quote("")
cpp_quote("  typedef struct tagSMINFO {")
cpp_quote("    DWORD dwMask;")
cpp_quote("    DWORD dwType;")
cpp_quote("    DWORD dwFlags;")
cpp_quote("    int iIcon;")
cpp_quote("  } SMINFO;")
cpp_quote("")
cpp_quote("  typedef struct tagSMINFO *PSMINFO;")
cpp_quote("")
cpp_quote("  typedef struct tagSHCSCHANGENOTIFYSTRUCT {")
cpp_quote("    LONG lEvent;")
cpp_quote("    LPCITEMIDLIST pidl1;")
cpp_quote("    LPCITEMIDLIST pidl2;")
cpp_quote("  } SMCSHCHANGENOTIFYSTRUCT;")
cpp_quote("")
cpp_quote("  typedef struct tagSHCSCHANGENOTIFYSTRUCT *PSMCSHCHANGENOTIFYSTRUCT;")
cpp_quote("")
cpp_quote("#include <poppack.h>")
cpp_quote("")
cpp_quote("  enum __MIDL___MIDL_itf_shobjidl_0260_0001 {")
cpp_quote("    SMIM_TYPE = 0x1,SMIM_FLAGS = 0x2,SMIM_ICON = 0x4")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  enum __MIDL___MIDL_itf_shobjidl_0260_0002 {")
cpp_quote("    SMIT_SEPARATOR = 0x1,SMIT_STRING = 0x2")
cpp_quote("  };")
cpp_quote("")
cpp_quote("  enum __MIDL___MIDL_itf_shobjidl_0260_0003 {")
cpp_quote("    SMIF_ICON = 0x1,SMIF_ACCELERATOR = 0x2,SMIF_DROPTARGET = 0x4,SMIF_SUBMENU = 0x8,SMIF_CHECKED = 0x20,SMIF_DROPCASCADE = 0x40,SMIF_HIDDEN = 0x80,")
cpp_quote("    SMIF_DISABLED = 0x100,SMIF_TRACKPOPUP = 0x200,SMIF_DEMOTED = 0x400,SMIF_ALTSTATE = 0x800,SMIF_DRAGNDROP = 0x1000,SMIF_NEW = 0x2000")
cpp_quote("  };")
cpp_quote("#define SMC_INITMENU 0x00000001")
cpp_quote("#define SMC_CREATE 0x00000002")
cpp_quote("#define SMC_EXITMENU 0x00000003")
cpp_quote("#define SMC_GETINFO 0x00000005")
cpp_quote("#define SMC_GETSFINFO 0x00000006")
cpp_quote("#define SMC_GETOBJECT 0x00000007")
cpp_quote("#define SMC_GETSFOBJECT 0x00000008")
cpp_quote("#define SMC_SFEXEC 0x00000009")
cpp_quote("#define SMC_SFSELECTITEM 0x0000000A")
cpp_quote("#define SMC_REFRESH 0x00000010")
cpp_quote("#define SMC_DEMOTE 0x00000011")
cpp_quote("#define SMC_PROMOTE 0x00000012")
cpp_quote("#define SMC_DEFAULTICON 0x00000016")
cpp_quote("#define SMC_NEWITEM 0x00000017")
cpp_quote("#define SMC_CHEVRONEXPAND 0x00000019")
cpp_quote("#define SMC_DISPLAYCHEVRONTIP 0x0000002A")
cpp_quote("#define SMC_SETSFOBJECT 0x0000002D")
cpp_quote("#define SMC_SHCHANGENOTIFY 0x0000002E")
cpp_quote("#define SMC_CHEVRONGETTIP 0x0000002F")
cpp_quote("#define SMC_SFDDRESTRICTED 0x00000030")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0260_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0260_v0_0_s_ifspec;")
cpp_quote("")
cpp_quote("#ifndef __IShellMenuCallback_INTERFACE_DEFINED__")
cpp_quote("#define __IShellMenuCallback_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IShellMenuCallback;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IShellMenuCallback : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI CallbackSM(LPSMDATA psmd,UINT uMsg,WPARAM wParam,LPARAM lParam) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IShellMenuCallbackVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IShellMenuCallback *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IShellMenuCallback *This);")
cpp_quote("      ULONG (WINAPI *Release)(IShellMenuCallback *This);")
cpp_quote("      HRESULT (WINAPI *CallbackSM)(IShellMenuCallback *This,LPSMDATA psmd,UINT uMsg,WPARAM wParam,LPARAM lParam);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IShellMenuCallbackVtbl;")
cpp_quote("  struct IShellMenuCallback {")
cpp_quote("    CONST_VTBL struct IShellMenuCallbackVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IShellMenuCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IShellMenuCallback_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IShellMenuCallback_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IShellMenuCallback_CallbackSM(This,psmd,uMsg,wParam,lParam) (This)->lpVtbl->CallbackSM(This,psmd,uMsg,wParam,lParam)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IShellMenuCallback_CallbackSM_Proxy(IShellMenuCallback *This,LPSMDATA psmd,UINT uMsg,WPARAM wParam,LPARAM lParam);")
cpp_quote("  void __RPC_STUB IShellMenuCallback_CallbackSM_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#ifndef __IAttachmentExecute_INTERFACE_DEFINED__")
cpp_quote("#define __IAttachmentExecute_INTERFACE_DEFINED__")
cpp_quote("  typedef enum tagATTACHMENT_PROMPT {")
cpp_quote("    ATTACHMENT_PROMPT_NONE = 0,ATTACHMENT_PROMPT_SAVE = 0x1,ATTACHMENT_PROMPT_EXEC = 0x2,ATTACHMENT_PROMPT_EXEC_OR_SAVE = 0x3")
cpp_quote("  } ATTACHMENT_PROMPT;")
cpp_quote("")
cpp_quote("  typedef enum tagATTACHMENT_ACTION {")
cpp_quote("    ATTACHMENT_ACTION_CANCEL = 0,ATTACHMENT_ACTION_SAVE = 0x1,ATTACHMENT_ACTION_EXEC = 0x2")
cpp_quote("  } ATTACHMENT_ACTION;")
cpp_quote("")
cpp_quote("DEFINE_GUID(IID_IAttachmentExecute, 0x73db1241,0x1e85,0x4581,0x8e,0x4f,0xa8,0x1e,0x1d,0x0f,0x8c,0x57);")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IAttachmentExecute : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI SetClientTitle(LPCWSTR pszTitle) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetClientGuid(REFGUID guid) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetLocalPath(LPCWSTR pszLocalPath) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetFileName(LPCWSTR pszFileName) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetSource(LPCWSTR pszSource) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetReferrer(LPCWSTR pszReferrer) = 0;")
cpp_quote("    virtual HRESULT WINAPI CheckPolicy(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI Prompt(HWND hwnd,ATTACHMENT_PROMPT prompt,ATTACHMENT_ACTION *paction) = 0;")
cpp_quote("    virtual HRESULT WINAPI Save(void) = 0;")
cpp_quote("    virtual HRESULT WINAPI Execute(HWND hwnd,LPCWSTR pszVerb,HANDLE *phProcess) = 0;")
cpp_quote("    virtual HRESULT WINAPI SaveWithUI(HWND hwnd) = 0;")
cpp_quote("    virtual HRESULT WINAPI ClearClientState(void) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IAttachmentExecuteVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IAttachmentExecute *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IAttachmentExecute *This);")
cpp_quote("      ULONG (WINAPI *Release)(IAttachmentExecute *This);")
cpp_quote("      HRESULT (WINAPI *SetClientTitle)(IAttachmentExecute *This,LPCWSTR pszTitle);")
cpp_quote("      HRESULT (WINAPI *SetClientGuid)(IAttachmentExecute *This,REFGUID guid);")
cpp_quote("      HRESULT (WINAPI *SetLocalPath)(IAttachmentExecute *This,LPCWSTR pszLocalPath);")
cpp_quote("      HRESULT (WINAPI *SetFileName)(IAttachmentExecute *This,LPCWSTR pszFileName);")
cpp_quote("      HRESULT (WINAPI *SetSource)(IAttachmentExecute *This,LPCWSTR pszSource);")
cpp_quote("      HRESULT (WINAPI *SetReferrer)(IAttachmentExecute *This,LPCWSTR pszReferrer);")
cpp_quote("      HRESULT (WINAPI *CheckPolicy)(IAttachmentExecute *This);")
cpp_quote("      HRESULT (WINAPI *Prompt)(IAttachmentExecute *This,HWND hwnd,ATTACHMENT_PROMPT prompt,ATTACHMENT_ACTION *paction);")
cpp_quote("      HRESULT (WINAPI *Save)(IAttachmentExecute *This);")
cpp_quote("      HRESULT (WINAPI *Execute)(IAttachmentExecute *This,HWND hwnd,LPCWSTR pszVerb,HANDLE *phProcess);")
cpp_quote("      HRESULT (WINAPI *SaveWithUI)(IAttachmentExecute *This,HWND hwnd);")
cpp_quote("      HRESULT (WINAPI *ClearClientState)(IAttachmentExecute *This);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IAttachmentExecuteVtbl;")
cpp_quote("  struct IAttachmentExecute {")
cpp_quote("    CONST_VTBL struct IAttachmentExecuteVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IAttachmentExecute_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IAttachmentExecute_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IAttachmentExecute_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IAttachmentExecute_SetClientTitle(This,pszTitle) (This)->lpVtbl->SetClientTitle(This,pszTitle)")
cpp_quote("#define IAttachmentExecute_SetClientGuid(This,guid) (This)->lpVtbl->SetClientGuid(This,guid)")
cpp_quote("#define IAttachmentExecute_SetLocalPath(This,pszLocalPath) (This)->lpVtbl->SetLocalPath(This,pszLocalPath)")
cpp_quote("#define IAttachmentExecute_SetFileName(This,pszFileName) (This)->lpVtbl->SetFileName(This,pszFileName)")
cpp_quote("#define IAttachmentExecute_SetSource(This,pszSource) (This)->lpVtbl->SetSource(This,pszSource)")
cpp_quote("#define IAttachmentExecute_SetReferrer(This,pszReferrer) (This)->lpVtbl->SetReferrer(This,pszReferrer)")
cpp_quote("#define IAttachmentExecute_CheckPolicy(This) (This)->lpVtbl->CheckPolicy(This)")
cpp_quote("#define IAttachmentExecute_Prompt(This,hwnd,prompt,paction) (This)->lpVtbl->Prompt(This,hwnd,prompt,paction)")
cpp_quote("#define IAttachmentExecute_Save(This) (This)->lpVtbl->Save(This)")
cpp_quote("#define IAttachmentExecute_Execute(This,hwnd,pszVerb,phProcess) (This)->lpVtbl->Execute(This,hwnd,pszVerb,phProcess)")
cpp_quote("#define IAttachmentExecute_SaveWithUI(This,hwnd) (This)->lpVtbl->SaveWithUI(This,hwnd)")
cpp_quote("#define IAttachmentExecute_ClearClientState(This) (This)->lpVtbl->ClearClientState(This)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IAttachmentExecute_SetClientTitle_Proxy(IAttachmentExecute *This,LPCWSTR pszTitle);")
cpp_quote("  void __RPC_STUB IAttachmentExecute_SetClientTitle_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IAttachmentExecute_SetClientGuid_Proxy(IAttachmentExecute *This,REFGUID guid);")
cpp_quote("  void __RPC_STUB IAttachmentExecute_SetClientGuid_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IAttachmentExecute_SetLocalPath_Proxy(IAttachmentExecute *This,LPCWSTR pszLocalPath);")
cpp_quote("  void __RPC_STUB IAttachmentExecute_SetLocalPath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IAttachmentExecute_SetFileName_Proxy(IAttachmentExecute *This,LPCWSTR pszFileName);")
cpp_quote("  void __RPC_STUB IAttachmentExecute_SetFileName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IAttachmentExecute_SetSource_Proxy(IAttachmentExecute *This,LPCWSTR pszSource);")
cpp_quote("  void __RPC_STUB IAttachmentExecute_SetSource_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IAttachmentExecute_SetReferrer_Proxy(IAttachmentExecute *This,LPCWSTR pszReferrer);")
cpp_quote("  void __RPC_STUB IAttachmentExecute_SetReferrer_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IAttachmentExecute_CheckPolicy_Proxy(IAttachmentExecute *This);")
cpp_quote("  void __RPC_STUB IAttachmentExecute_CheckPolicy_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IAttachmentExecute_Prompt_Proxy(IAttachmentExecute *This,HWND hwnd,ATTACHMENT_PROMPT prompt,ATTACHMENT_ACTION *paction);")
cpp_quote("  void __RPC_STUB IAttachmentExecute_Prompt_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IAttachmentExecute_Save_Proxy(IAttachmentExecute *This);")
cpp_quote("  void __RPC_STUB IAttachmentExecute_Save_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IAttachmentExecute_Execute_Proxy(IAttachmentExecute *This,HWND hwnd,LPCWSTR pszVerb,HANDLE *phProcess);")
cpp_quote("  void __RPC_STUB IAttachmentExecute_Execute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IAttachmentExecute_SaveWithUI_Proxy(IAttachmentExecute *This,HWND hwnd);")
cpp_quote("  void __RPC_STUB IAttachmentExecute_SaveWithUI_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IAttachmentExecute_ClearClientState_Proxy(IAttachmentExecute *This);")
cpp_quote("  void __RPC_STUB IAttachmentExecute_ClearClientState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#define SMINIT_DEFAULT 0x00000000")
cpp_quote("#define SMINIT_RESTRICT_DRAGDROP 0x00000002")
cpp_quote("#define SMINIT_TOPLEVEL 0x00000004")
cpp_quote("#define SMINIT_CACHED 0x00000010")
cpp_quote("#define SMINIT_VERTICAL 0x10000000")
cpp_quote("#define SMINIT_HORIZONTAL 0x20000000")
cpp_quote("#define ANCESTORDEFAULT (UINT)-1")
cpp_quote("#define SMSET_TOP 0x10000000")
cpp_quote("#define SMSET_BOTTOM 0x20000000")
cpp_quote("#define SMSET_DONTOWN 0x00000001")
cpp_quote("#define SMINV_REFRESH 0x00000001")
cpp_quote("#define SMINV_ID 0x00000008")
cpp_quote("")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0262_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0262_v0_0_s_ifspec;")
cpp_quote("#ifndef __IShellMenu_INTERFACE_DEFINED__")
cpp_quote("#define __IShellMenu_INTERFACE_DEFINED__")
cpp_quote("  EXTERN_C const IID IID_IShellMenu;")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("  struct IShellMenu : public IUnknown {")
cpp_quote("  public:")
cpp_quote("    virtual HRESULT WINAPI Initialize(IShellMenuCallback *psmc,UINT uId,UINT uIdAncestor,DWORD dwFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetMenuInfo(IShellMenuCallback **ppsmc,UINT *puId,UINT *puIdAncestor,DWORD *pdwFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetShellFolder(IShellFolder *psf,LPCITEMIDLIST pidlFolder,HKEY hKey,DWORD dwFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetShellFolder(DWORD *pdwFlags,LPITEMIDLIST *ppidl,REFIID riid,void **ppv) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetMenu(HMENU hmenu,HWND hwnd,DWORD dwFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetMenu(HMENU *phmenu,HWND *phwnd,DWORD *pdwFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI InvalidateItem(LPSMDATA psmd,DWORD dwFlags) = 0;")
cpp_quote("    virtual HRESULT WINAPI GetState(LPSMDATA psmd) = 0;")
cpp_quote("    virtual HRESULT WINAPI SetMenuToolbar(IUnknown *punk,DWORD dwFlags) = 0;")
cpp_quote("  };")
cpp_quote("#else")
cpp_quote("  typedef struct IShellMenuVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("      HRESULT (WINAPI *QueryInterface)(IShellMenu *This,REFIID riid,void **ppvObject);")
cpp_quote("      ULONG (WINAPI *AddRef)(IShellMenu *This);")
cpp_quote("      ULONG (WINAPI *Release)(IShellMenu *This);")
cpp_quote("      HRESULT (WINAPI *Initialize)(IShellMenu *This,IShellMenuCallback *psmc,UINT uId,UINT uIdAncestor,DWORD dwFlags);")
cpp_quote("      HRESULT (WINAPI *GetMenuInfo)(IShellMenu *This,IShellMenuCallback **ppsmc,UINT *puId,UINT *puIdAncestor,DWORD *pdwFlags);")
cpp_quote("      HRESULT (WINAPI *SetShellFolder)(IShellMenu *This,IShellFolder *psf,LPCITEMIDLIST pidlFolder,HKEY hKey,DWORD dwFlags);")
cpp_quote("      HRESULT (WINAPI *GetShellFolder)(IShellMenu *This,DWORD *pdwFlags,LPITEMIDLIST *ppidl,REFIID riid,void **ppv);")
cpp_quote("      HRESULT (WINAPI *SetMenu)(IShellMenu *This,HMENU hmenu,HWND hwnd,DWORD dwFlags);")
cpp_quote("      HRESULT (WINAPI *GetMenu)(IShellMenu *This,HMENU *phmenu,HWND *phwnd,DWORD *pdwFlags);")
cpp_quote("      HRESULT (WINAPI *InvalidateItem)(IShellMenu *This,LPSMDATA psmd,DWORD dwFlags);")
cpp_quote("      HRESULT (WINAPI *GetState)(IShellMenu *This,LPSMDATA psmd);")
cpp_quote("      HRESULT (WINAPI *SetMenuToolbar)(IShellMenu *This,IUnknown *punk,DWORD dwFlags);")
cpp_quote("    END_INTERFACE")
cpp_quote("  } IShellMenuVtbl;")
cpp_quote("  struct IShellMenu {")
cpp_quote("    CONST_VTBL struct IShellMenuVtbl *lpVtbl;")
cpp_quote("  };")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("#define IShellMenu_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IShellMenu_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IShellMenu_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("#define IShellMenu_Initialize(This,psmc,uId,uIdAncestor,dwFlags) (This)->lpVtbl->Initialize(This,psmc,uId,uIdAncestor,dwFlags)")
cpp_quote("#define IShellMenu_GetMenuInfo(This,ppsmc,puId,puIdAncestor,pdwFlags) (This)->lpVtbl->GetMenuInfo(This,ppsmc,puId,puIdAncestor,pdwFlags)")
cpp_quote("#define IShellMenu_SetShellFolder(This,psf,pidlFolder,hKey,dwFlags) (This)->lpVtbl->SetShellFolder(This,psf,pidlFolder,hKey,dwFlags)")
cpp_quote("#define IShellMenu_GetShellFolder(This,pdwFlags,ppidl,riid,ppv) (This)->lpVtbl->GetShellFolder(This,pdwFlags,ppidl,riid,ppv)")
cpp_quote("#define IShellMenu_SetMenu(This,hmenu,hwnd,dwFlags) (This)->lpVtbl->SetMenu(This,hmenu,hwnd,dwFlags)")
cpp_quote("#define IShellMenu_GetMenu(This,phmenu,phwnd,pdwFlags) (This)->lpVtbl->GetMenu(This,phmenu,phwnd,pdwFlags)")
cpp_quote("#define IShellMenu_InvalidateItem(This,psmd,dwFlags) (This)->lpVtbl->InvalidateItem(This,psmd,dwFlags)")
cpp_quote("#define IShellMenu_GetState(This,psmd) (This)->lpVtbl->GetState(This,psmd)")
cpp_quote("#define IShellMenu_SetMenuToolbar(This,punk,dwFlags) (This)->lpVtbl->SetMenuToolbar(This,punk,dwFlags)")
cpp_quote("#endif")
cpp_quote("#endif")
cpp_quote("  HRESULT WINAPI IShellMenu_Initialize_Proxy(IShellMenu *This,IShellMenuCallback *psmc,UINT uId,UINT uIdAncestor,DWORD dwFlags);")
cpp_quote("  void __RPC_STUB IShellMenu_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellMenu_GetMenuInfo_Proxy(IShellMenu *This,IShellMenuCallback **ppsmc,UINT *puId,UINT *puIdAncestor,DWORD *pdwFlags);")
cpp_quote("  void __RPC_STUB IShellMenu_GetMenuInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellMenu_SetShellFolder_Proxy(IShellMenu *This,IShellFolder *psf,LPCITEMIDLIST pidlFolder,HKEY hKey,DWORD dwFlags);")
cpp_quote("  void __RPC_STUB IShellMenu_SetShellFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellMenu_GetShellFolder_Proxy(IShellMenu *This,DWORD *pdwFlags,LPITEMIDLIST *ppidl,REFIID riid,void **ppv);")
cpp_quote("  void __RPC_STUB IShellMenu_GetShellFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellMenu_SetMenu_Proxy(IShellMenu *This,HMENU hmenu,HWND hwnd,DWORD dwFlags);")
cpp_quote("  void __RPC_STUB IShellMenu_SetMenu_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellMenu_GetMenu_Proxy(IShellMenu *This,HMENU *phmenu,HWND *phwnd,DWORD *pdwFlags);")
cpp_quote("  void __RPC_STUB IShellMenu_GetMenu_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellMenu_InvalidateItem_Proxy(IShellMenu *This,LPSMDATA psmd,DWORD dwFlags);")
cpp_quote("  void __RPC_STUB IShellMenu_InvalidateItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellMenu_GetState_Proxy(IShellMenu *This,LPSMDATA psmd);")
cpp_quote("  void __RPC_STUB IShellMenu_GetState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("  HRESULT WINAPI IShellMenu_SetMenuToolbar_Proxy(IShellMenu *This,IUnknown *punk,DWORD dwFlags);")
cpp_quote("  void __RPC_STUB IShellMenu_SetMenuToolbar_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("typedef enum FDE_OVERWRITE_RESPONSE {")
cpp_quote("    FDEOR_DEFAULT = 0,")
cpp_quote("    FDEOR_ACCCEP = 1,")
cpp_quote("    FDEOR_REFUSE = 2")
cpp_quote("} FDE_OVERWRITE_RESPONSE;")
cpp_quote("typedef enum FDE_SHAREVIOLATION_RESPONSE {")
cpp_quote("    FDESVR_DEFAULT = 0,")
cpp_quote("    FDESVR_ACCEPT = 1,")
cpp_quote("    FDESVR_REFUSE = 2")
cpp_quote("} FDE_SHAREVIOLATION_RESPONSE;")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * IFileDialogEvents interface")
cpp_quote(" */")
cpp_quote("#ifndef __IFileDialogEvents_INTERFACE_DEFINED__")
cpp_quote("#define __IFileDialogEvents_INTERFACE_DEFINED__")
cpp_quote("")
cpp_quote("DEFINE_GUID(IID_IFileDialogEvents, 0x973510db, 0x7d7f, 0x452b, 0x89,0x75, 0x74,0xa8,0x58,0x28,0xd3,0x54);")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("MIDL_INTERFACE(\"973510db-7d7f-452b-8975-74a85828d354\")")
cpp_quote("IFileDialogEvents : public IUnknown")
cpp_quote("{")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE OnFileOk(")
cpp_quote("        IFileDialog *pfd) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE OnFolderChanging(")
cpp_quote("        IFileDialog *pfd,")
cpp_quote("        IShellItem *psiFolder) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE OnFolderChange(")
cpp_quote("        IFileDialog *pfd) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE OnSelectionChange(")
cpp_quote("        IFileDialog *pfd) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE OnShareViolation(")
cpp_quote("        IFileDialog *pfd,")
cpp_quote("        IShellItem *psi,")
cpp_quote("        FDE_SHAREVIOLATION_RESPONSE *pResponse) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE OnTypeChange(")
cpp_quote("        IFileDialog *pfd) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE OnOverwrite(")
cpp_quote("        IFileDialog *pfd,")
cpp_quote("        IShellItem *psi,")
cpp_quote("        FDE_OVERWRITE_RESPONSE *pResponse) = 0;")
cpp_quote("")
cpp_quote("};")
cpp_quote("#ifdef __CRT_UUID_DECL")
cpp_quote("__CRT_UUID_DECL(IFileDialogEvents, 0x973510db, 0x7d7f, 0x452b, 0x89,0x75, 0x74,0xa8,0x58,0x28,0xd3,0x54)")
cpp_quote("#endif")
cpp_quote("#else")
cpp_quote("typedef struct IFileDialogEventsVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /*** IUnknown methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryInterface)(")
cpp_quote("        IFileDialogEvents* This,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvObject);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *AddRef)(")
cpp_quote("        IFileDialogEvents* This);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *Release)(")
cpp_quote("        IFileDialogEvents* This);")
cpp_quote("")
cpp_quote("    /*** IFileDialogEvents methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *OnFileOk)(")
cpp_quote("        IFileDialogEvents* This,")
cpp_quote("        IFileDialog *pfd);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *OnFolderChanging)(")
cpp_quote("        IFileDialogEvents* This,")
cpp_quote("        IFileDialog *pfd,")
cpp_quote("        IShellItem *psiFolder);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *OnFolderChange)(")
cpp_quote("        IFileDialogEvents* This,")
cpp_quote("        IFileDialog *pfd);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *OnSelectionChange)(")
cpp_quote("        IFileDialogEvents* This,")
cpp_quote("        IFileDialog *pfd);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *OnShareViolation)(")
cpp_quote("        IFileDialogEvents* This,")
cpp_quote("        IFileDialog *pfd,")
cpp_quote("        IShellItem *psi,")
cpp_quote("        FDE_SHAREVIOLATION_RESPONSE *pResponse);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *OnTypeChange)(")
cpp_quote("        IFileDialogEvents* This,")
cpp_quote("        IFileDialog *pfd);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *OnOverwrite)(")
cpp_quote("        IFileDialogEvents* This,")
cpp_quote("        IFileDialog *pfd,")
cpp_quote("        IShellItem *psi,")
cpp_quote("        FDE_OVERWRITE_RESPONSE *pResponse);")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("} IFileDialogEventsVtbl;")
cpp_quote("interface IFileDialogEvents {")
cpp_quote("    CONST_VTBL IFileDialogEventsVtbl* lpVtbl;")
cpp_quote("};")
cpp_quote("")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("/*** IUnknown methods ***/")
cpp_quote("#define IFileDialogEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IFileDialogEvents_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IFileDialogEvents_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("/*** IFileDialogEvents methods ***/")
cpp_quote("#define IFileDialogEvents_OnFileOk(This,pfd) (This)->lpVtbl->OnFileOk(This,pfd)")
cpp_quote("#define IFileDialogEvents_OnFolderChanging(This,pfd,psiFolder) (This)->lpVtbl->OnFolderChanging(This,pfd,psiFolder)")
cpp_quote("#define IFileDialogEvents_OnFolderChange(This,pfd) (This)->lpVtbl->OnFolderChange(This,pfd)")
cpp_quote("#define IFileDialogEvents_OnSelectionChange(This,pfd) (This)->lpVtbl->OnSelectionChange(This,pfd)")
cpp_quote("#define IFileDialogEvents_OnShareViolation(This,pfd,psi,pResponse) (This)->lpVtbl->OnShareViolation(This,pfd,psi,pResponse)")
cpp_quote("#define IFileDialogEvents_OnTypeChange(This,pfd) (This)->lpVtbl->OnTypeChange(This,pfd)")
cpp_quote("#define IFileDialogEvents_OnOverwrite(This,pfd,psi,pResponse) (This)->lpVtbl->OnOverwrite(This,pfd,psi,pResponse)")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif  /* __IFileDialogEvents_INTERFACE_DEFINED__ */")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * IApplicationAssociationRegistration interface")
cpp_quote(" */")
cpp_quote("#ifndef __IApplicationAssociationRegistration_INTERFACE_DEFINED__")
cpp_quote("#define __IApplicationAssociationRegistration_INTERFACE_DEFINED__")
cpp_quote("")
cpp_quote("typedef enum ASSOCIATIONLEVEL {")
cpp_quote("    AL_MACHINE = 0,")
cpp_quote("    AL_EFFECTIVE = 1,")
cpp_quote("    AL_USER = 2")
cpp_quote("} ASSOCIATIONLEVEL;")
cpp_quote("")
cpp_quote("typedef enum ASSOCIATIONTYPE {")
cpp_quote("    AT_FILEEXTENSION = 0,")
cpp_quote("    AT_URLPROTOCOL = 1,")
cpp_quote("    AT_STARTMENUCLIENT = 2,")
cpp_quote("    AT_MIMETYPE = 3")
cpp_quote("} ASSOCIATIONTYPE;")
cpp_quote("")
cpp_quote("DEFINE_GUID(IID_IApplicationAssociationRegistration, 0x4e530b0a, 0xe611, 0x4c77, 0xa3,0xac, 0x90,0x31,0xd0,0x22,0x28,0x1b);")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("interface IApplicationAssociationRegistration : public IUnknown")
cpp_quote("{")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE QueryCurrentDefault(")
cpp_quote("        LPCWSTR pszQuery,")
cpp_quote("        ASSOCIATIONTYPE atQueryType,")
cpp_quote("        ASSOCIATIONLEVEL alQueryLevel,")
cpp_quote("        LPWSTR *ppszAssociation) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE QueryAppIsDefault(")
cpp_quote("        LPCWSTR pszQuery,")
cpp_quote("        ASSOCIATIONTYPE atQueryType,")
cpp_quote("        ASSOCIATIONLEVEL alQueryLevel,")
cpp_quote("        LPCWSTR pszAppRegistryName,")
cpp_quote("        BOOL *pfDefault) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE QueryAppIsDefaultAll(")
cpp_quote("        ASSOCIATIONLEVEL alQueryLevel,")
cpp_quote("        LPCWSTR pszAppRegistryName,")
cpp_quote("        BOOL *pfDefault) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetAppAsDefault(")
cpp_quote("        LPCWSTR pszAppRegistryName,")
cpp_quote("        LPCWSTR pszSet,")
cpp_quote("        ASSOCIATIONTYPE atSetType) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetAppAsDefaultAll(")
cpp_quote("        LPCWSTR pszAppRegistryName) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE ClearUserAssociations(")
cpp_quote("        ) = 0;")
cpp_quote("")
cpp_quote("};")
cpp_quote("#else")
cpp_quote("typedef struct IApplicationAssociationRegistrationVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /*** IUnknown methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryInterface)(")
cpp_quote("        IApplicationAssociationRegistration* This,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvObject);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *AddRef)(")
cpp_quote("        IApplicationAssociationRegistration* This);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *Release)(")
cpp_quote("        IApplicationAssociationRegistration* This);")
cpp_quote("")
cpp_quote("    /*** IApplicationAssociationRegistration methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryCurrentDefault)(")
cpp_quote("        IApplicationAssociationRegistration* This,")
cpp_quote("        LPCWSTR pszQuery,")
cpp_quote("        ASSOCIATIONTYPE atQueryType,")
cpp_quote("        ASSOCIATIONLEVEL alQueryLevel,")
cpp_quote("        LPWSTR *ppszAssociation);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryAppIsDefault)(")
cpp_quote("        IApplicationAssociationRegistration* This,")
cpp_quote("        LPCWSTR pszQuery,")
cpp_quote("        ASSOCIATIONTYPE atQueryType,")
cpp_quote("        ASSOCIATIONLEVEL alQueryLevel,")
cpp_quote("        LPCWSTR pszAppRegistryName,")
cpp_quote("        BOOL *pfDefault);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryAppIsDefaultAll)(")
cpp_quote("        IApplicationAssociationRegistration* This,")
cpp_quote("        ASSOCIATIONLEVEL alQueryLevel,")
cpp_quote("        LPCWSTR pszAppRegistryName,")
cpp_quote("        BOOL *pfDefault);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetAppAsDefault)(")
cpp_quote("        IApplicationAssociationRegistration* This,")
cpp_quote("        LPCWSTR pszAppRegistryName,")
cpp_quote("        LPCWSTR pszSet,")
cpp_quote("        ASSOCIATIONTYPE atSetType);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetAppAsDefaultAll)(")
cpp_quote("        IApplicationAssociationRegistration* This,")
cpp_quote("        LPCWSTR pszAppRegistryName);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *ClearUserAssociations)(")
cpp_quote("        IApplicationAssociationRegistration* This);")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("} IApplicationAssociationRegistrationVtbl;")
cpp_quote("interface IApplicationAssociationRegistration {")
cpp_quote("    CONST_VTBL IApplicationAssociationRegistrationVtbl* lpVtbl;")
cpp_quote("};")
cpp_quote("")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("/*** IUnknown methods ***/")
cpp_quote("#define IApplicationAssociationRegistration_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define IApplicationAssociationRegistration_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define IApplicationAssociationRegistration_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("/*** IApplicationAssociationRegistration methods ***/")
cpp_quote("#define IApplicationAssociationRegistration_QueryCurrentDefault(This,pszQuery,atQueryType,alQueryLevel,ppszAssociation) (This)->lpVtbl->QueryCurrentDefault(This,pszQuery,atQueryType,alQueryLevel,ppszAssociation)")
cpp_quote("#define IApplicationAssociationRegistration_QueryAppIsDefault(This,pszQuery,atQueryType,alQueryLevel,pszAppRegistryName,pfDefault) (This)->lpVtbl->QueryAppIsDefault(This,pszQuery,atQueryType,alQueryLevel,pszAppRegistryName,pfDefault)")
cpp_quote("#define IApplicationAssociationRegistration_QueryAppIsDefaultAll(This,alQueryLevel,pszAppRegistryName,pfDefault) (This)->lpVtbl->QueryAppIsDefaultAll(This,alQueryLevel,pszAppRegistryName,pfDefault)")
cpp_quote("#define IApplicationAssociationRegistration_SetAppAsDefault(This,pszAppRegistryName,pszSet,atSetType) (This)->lpVtbl->SetAppAsDefault(This,pszAppRegistryName,pszSet,atSetType)")
cpp_quote("#define IApplicationAssociationRegistration_SetAppAsDefaultAll(This,pszAppRegistryName) (This)->lpVtbl->SetAppAsDefaultAll(This,pszAppRegistryName)")
cpp_quote("#define IApplicationAssociationRegistration_ClearUserAssociations(This) (This)->lpVtbl->ClearUserAssociations(This)")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("HRESULT STDMETHODCALLTYPE IApplicationAssociationRegistration_QueryCurrentDefault_Proxy(")
cpp_quote("    IApplicationAssociationRegistration* This,")
cpp_quote("    LPCWSTR pszQuery,")
cpp_quote("    ASSOCIATIONTYPE atQueryType,")
cpp_quote("    ASSOCIATIONLEVEL alQueryLevel,")
cpp_quote("    LPWSTR *ppszAssociation);")
cpp_quote("void __RPC_STUB IApplicationAssociationRegistration_QueryCurrentDefault_Stub(")
cpp_quote("    IRpcStubBuffer* This,")
cpp_quote("    IRpcChannelBuffer* pRpcChannelBuffer,")
cpp_quote("    PRPC_MESSAGE pRpcMessage,")
cpp_quote("    DWORD* pdwStubPhase);")
cpp_quote("HRESULT STDMETHODCALLTYPE IApplicationAssociationRegistration_QueryAppIsDefault_Proxy(")
cpp_quote("    IApplicationAssociationRegistration* This,")
cpp_quote("    LPCWSTR pszQuery,")
cpp_quote("    ASSOCIATIONTYPE atQueryType,")
cpp_quote("    ASSOCIATIONLEVEL alQueryLevel,")
cpp_quote("    LPCWSTR pszAppRegistryName,")
cpp_quote("    BOOL *pfDefault);")
cpp_quote("void __RPC_STUB IApplicationAssociationRegistration_QueryAppIsDefault_Stub(")
cpp_quote("    IRpcStubBuffer* This,")
cpp_quote("    IRpcChannelBuffer* pRpcChannelBuffer,")
cpp_quote("    PRPC_MESSAGE pRpcMessage,")
cpp_quote("    DWORD* pdwStubPhase);")
cpp_quote("HRESULT STDMETHODCALLTYPE IApplicationAssociationRegistration_QueryAppIsDefaultAll_Proxy(")
cpp_quote("    IApplicationAssociationRegistration* This,")
cpp_quote("    ASSOCIATIONLEVEL alQueryLevel,")
cpp_quote("    LPCWSTR pszAppRegistryName,")
cpp_quote("    BOOL *pfDefault);")
cpp_quote("void __RPC_STUB IApplicationAssociationRegistration_QueryAppIsDefaultAll_Stub(")
cpp_quote("    IRpcStubBuffer* This,")
cpp_quote("    IRpcChannelBuffer* pRpcChannelBuffer,")
cpp_quote("    PRPC_MESSAGE pRpcMessage,")
cpp_quote("    DWORD* pdwStubPhase);")
cpp_quote("HRESULT STDMETHODCALLTYPE IApplicationAssociationRegistration_SetAppAsDefault_Proxy(")
cpp_quote("    IApplicationAssociationRegistration* This,")
cpp_quote("    LPCWSTR pszAppRegistryName,")
cpp_quote("    LPCWSTR pszSet,")
cpp_quote("    ASSOCIATIONTYPE atSetType);")
cpp_quote("void __RPC_STUB IApplicationAssociationRegistration_SetAppAsDefault_Stub(")
cpp_quote("    IRpcStubBuffer* This,")
cpp_quote("    IRpcChannelBuffer* pRpcChannelBuffer,")
cpp_quote("    PRPC_MESSAGE pRpcMessage,")
cpp_quote("    DWORD* pdwStubPhase);")
cpp_quote("HRESULT STDMETHODCALLTYPE IApplicationAssociationRegistration_SetAppAsDefaultAll_Proxy(")
cpp_quote("    IApplicationAssociationRegistration* This,")
cpp_quote("    LPCWSTR pszAppRegistryName);")
cpp_quote("void __RPC_STUB IApplicationAssociationRegistration_SetAppAsDefaultAll_Stub(")
cpp_quote("    IRpcStubBuffer* This,")
cpp_quote("    IRpcChannelBuffer* pRpcChannelBuffer,")
cpp_quote("    PRPC_MESSAGE pRpcMessage,")
cpp_quote("    DWORD* pdwStubPhase);")
cpp_quote("HRESULT STDMETHODCALLTYPE IApplicationAssociationRegistration_ClearUserAssociations_Proxy(")
cpp_quote("    IApplicationAssociationRegistration* This);")
cpp_quote("void __RPC_STUB IApplicationAssociationRegistration_ClearUserAssociations_Stub(")
cpp_quote("    IRpcStubBuffer* This,")
cpp_quote("    IRpcChannelBuffer* pRpcChannelBuffer,")
cpp_quote("    PRPC_MESSAGE pRpcMessage,")
cpp_quote("    DWORD* pdwStubPhase);")
cpp_quote("")
cpp_quote("#endif  /* __IApplicationAssociationRegistration_INTERFACE_DEFINED__ */")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * ICustomDestinationList interface")
cpp_quote(" */")
cpp_quote("#ifndef __ICustomDestinationList_INTERFACE_DEFINED__")
cpp_quote("#define __ICustomDestinationList_INTERFACE_DEFINED__")
cpp_quote("")
cpp_quote("typedef enum KNOWNDESTCATEGORY {")
cpp_quote("    KDC_FREQUENT = 1,")
cpp_quote("    KDC_RECENT = 2")
cpp_quote("} KNOWNDESTCATEGORY;")
cpp_quote("")
cpp_quote("DEFINE_GUID(IID_ICustomDestinationList, 0x6332debf, 0x87b5, 0x4670, 0x90,0xc0, 0x5e,0x57,0xb4,0x08,0xa4,0x9e);")
cpp_quote("#if defined(__cplusplus) && !defined(CINTERFACE)")
cpp_quote("interface ICustomDestinationList : public IUnknown")
cpp_quote("{")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE SetAppID(")
cpp_quote("        LPCWSTR pszAppID) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE BeginList(")
cpp_quote("        UINT *pcMinSlots,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE AppendCategory(")
cpp_quote("        LPCWSTR pszCategory,")
cpp_quote("        IObjectArray *poa) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE AppendKnownCategory(")
cpp_quote("        KNOWNDESTCATEGORY category) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE AddUserTasks(")
cpp_quote("        IObjectArray *poa) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE CommitList(")
cpp_quote("        ) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE GetRemovedDestinations(")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE DeleteList(")
cpp_quote("        LPCWSTR pszAppID) = 0;")
cpp_quote("")
cpp_quote("    virtual HRESULT STDMETHODCALLTYPE AbortList(")
cpp_quote("        ) = 0;")
cpp_quote("")
cpp_quote("};")
cpp_quote("#else")
cpp_quote("typedef struct ICustomDestinationListVtbl {")
cpp_quote("    BEGIN_INTERFACE")
cpp_quote("")
cpp_quote("    /*** IUnknown methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *QueryInterface)(")
cpp_quote("        ICustomDestinationList* This,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppvObject);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *AddRef)(")
cpp_quote("        ICustomDestinationList* This);")
cpp_quote("")
cpp_quote("    ULONG (STDMETHODCALLTYPE *Release)(")
cpp_quote("        ICustomDestinationList* This);")
cpp_quote("")
cpp_quote("    /*** ICustomDestinationList methods ***/")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *SetAppID)(")
cpp_quote("        ICustomDestinationList* This,")
cpp_quote("        LPCWSTR pszAppID);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *BeginList)(")
cpp_quote("        ICustomDestinationList* This,")
cpp_quote("        UINT *pcMinSlots,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *AppendCategory)(")
cpp_quote("        ICustomDestinationList* This,")
cpp_quote("        LPCWSTR pszCategory,")
cpp_quote("        IObjectArray *poa);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *AppendKnownCategory)(")
cpp_quote("        ICustomDestinationList* This,")
cpp_quote("        KNOWNDESTCATEGORY category);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *AddUserTasks)(")
cpp_quote("        ICustomDestinationList* This,")
cpp_quote("        IObjectArray *poa);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *CommitList)(")
cpp_quote("        ICustomDestinationList* This);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *GetRemovedDestinations)(")
cpp_quote("        ICustomDestinationList* This,")
cpp_quote("        REFIID riid,")
cpp_quote("        void **ppv);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *DeleteList)(")
cpp_quote("        ICustomDestinationList* This,")
cpp_quote("        LPCWSTR pszAppID);")
cpp_quote("")
cpp_quote("    HRESULT (STDMETHODCALLTYPE *AbortList)(")
cpp_quote("        ICustomDestinationList* This);")
cpp_quote("")
cpp_quote("    END_INTERFACE")
cpp_quote("} ICustomDestinationListVtbl;")
cpp_quote("interface ICustomDestinationList {")
cpp_quote("    CONST_VTBL ICustomDestinationListVtbl* lpVtbl;")
cpp_quote("};")
cpp_quote("")
cpp_quote("#ifdef COBJMACROS")
cpp_quote("/*** IUnknown methods ***/")
cpp_quote("#define ICustomDestinationList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)")
cpp_quote("#define ICustomDestinationList_AddRef(This) (This)->lpVtbl->AddRef(This)")
cpp_quote("#define ICustomDestinationList_Release(This) (This)->lpVtbl->Release(This)")
cpp_quote("/*** ICustomDestinationList methods ***/")
cpp_quote("#define ICustomDestinationList_SetAppID(This,pszAppID) (This)->lpVtbl->SetAppID(This,pszAppID)")
cpp_quote("#define ICustomDestinationList_BeginList(This,pcMinSlots,riid,ppv) (This)->lpVtbl->BeginList(This,pcMinSlots,riid,ppv)")
cpp_quote("#define ICustomDestinationList_AppendCategory(This,pszCategory,poa) (This)->lpVtbl->AppendCategory(This,pszCategory,poa)")
cpp_quote("#define ICustomDestinationList_AppendKnownCategory(This,category) (This)->lpVtbl->AppendKnownCategory(This,category)")
cpp_quote("#define ICustomDestinationList_AddUserTasks(This,poa) (This)->lpVtbl->AddUserTasks(This,poa)")
cpp_quote("#define ICustomDestinationList_CommitList(This) (This)->lpVtbl->CommitList(This)")
cpp_quote("#define ICustomDestinationList_GetRemovedDestinations(This,riid,ppv) (This)->lpVtbl->GetRemovedDestinations(This,riid,ppv)")
cpp_quote("#define ICustomDestinationList_DeleteList(This,pszAppID) (This)->lpVtbl->DeleteList(This,pszAppID)")
cpp_quote("#define ICustomDestinationList_AbortList(This) (This)->lpVtbl->AbortList(This)")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("#endif")
cpp_quote("#endif  /* __ICustomDestinationList_INTERFACE_DEFINED__ */")

[
    uuid(11a66efa-382e-451a-9234-1e0e12ef3085),
    object,
    pointer_default(unique)
]
interface IShellLibrary : IUnknown
{
    typedef [v1_enum] enum LIBRARYFOLDERFILTER {
        LFF_FORCEFILESYSTEM = 1,
        LFF_STORAGEITEMS    = 2,
        LFF_ALLITEMS        = 3
    } LIBRARYFOLDERFILTER;

    typedef [v1_enum] enum LIBRARYOPTIONFLAGS {
        LOF_DEFAULT         = 0x00000000,
        LOF_PINNEDTONAVPANE = 0x00000001,
        LOF_MASK_ALL        = 0x00000001
    } LIBRARYOPTIONFLAGS;
    cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(LIBRARYOPTIONFLAGS)")

    typedef [v1_enum] enum DEFAULTSAVEFOLDERTYPE {
        DSFT_DETECT = 1,
        DSFT_PRIVATE,
        DSFT_PUBLIC
    } DEFAULTSAVEFOLDERTYPE;

    typedef [v1_enum] enum LIBRARYSAVEFLAGS {
        LSF_FAILIFTHERE      = 0x0000,
        LSF_OVERRIDEEXISTING = 0x0001,
        LSF_MAKEUNIQUENAME   = 0x0002
    } LIBRARYSAVEFLAGS;
    cpp_quote("DEFINE_ENUM_FLAG_OPERATORS(LIBRARYSAVEFLAGS)")

    HRESULT LoadLibraryFromItem(
            [in] IShellItem *psiLibrary,
            [in] DWORD grfMode);

    HRESULT LoadLibraryFromKnownFolder(
            [in] REFKNOWNFOLDERID kfidLibrary,
            [in] DWORD grfMode);

    HRESULT AddFolder([in] IShellItem *psiLocation);
    HRESULT RemoveFolder([in] IShellItem *psiLocation);

    HRESULT GetFolders(
            [in] LIBRARYFOLDERFILTER lff,
            [in] REFIID riid,
            [out, iid_is(riid)] void **ppv);

    HRESULT ResolveFolder(
            [in] IShellItem *psiFolderToResolve,
            [in] DWORD dwTimeout,
            [in] REFIID riid,
            [out, iid_is(riid)] void **ppv);

    HRESULT GetDefaultSaveFolder(
            [in] DEFAULTSAVEFOLDERTYPE dsft,
            [in] REFIID riid,
            [out, iid_is(riid)] void **ppv);

    HRESULT SetDefaultSaveFolder(
            [in] DEFAULTSAVEFOLDERTYPE dsft,
            [in] IShellItem *psi);

    HRESULT GetOptions([out] LIBRARYOPTIONFLAGS *plofOptions);

    HRESULT SetOptions(
            [in] LIBRARYOPTIONFLAGS lofMask,
            [in] LIBRARYOPTIONFLAGS lofOptions);

    HRESULT GetFolderType([out] FOLDERTYPEID *pftid);
    HRESULT SetFolderType([in] REFFOLDERTYPEID ftid);
    HRESULT GetIcon([out, string] LPWSTR *ppszIcon);
    HRESULT SetIcon([in, string] LPCWSTR pszIcon);
    HRESULT Commit();

    HRESULT Save(
            [in] IShellItem *psiFolderToSaveIn,
            [in, string] LPCWSTR pszLibraryName,
            [in] LIBRARYSAVEFLAGS lsf,
            [out] IShellItem **ppsiSavedTo);

    HRESULT SaveInKnownFolder(
        [in] REFKNOWNFOLDERID kfidToSaveIn,
        [in, string] LPCWSTR pszLibraryName,
        [in] LIBRARYSAVEFLAGS lsf,
        [out] IShellItem **ppsiSavedTo);
}

[
    uuid(50a7e9b1-70ef-11d1-b75a-00a0c90564fe),
    lcid(0x0000),
    version(1.0)
]
library ShellObjects
{
    [
        uuid(d9b3211d-e57f-4426-aaef-30a806add397)
    ]
    coclass ShellLibrary { interface IShellLibrary; }

cpp_quote("#define SID_PublishingWizard CLSID_PublishingWizard")
cpp_quote("  EXTERN_C const CLSID CLSID_QueryCancelAutoPlay;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class QueryCancelAutoPlay;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_DriveSizeCategorizer;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class DriveSizeCategorizer;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_DriveTypeCategorizer;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class DriveTypeCategorizer;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_FreeSpaceCategorizer;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class FreeSpaceCategorizer;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_TimeCategorizer;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class TimeCategorizer;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_SizeCategorizer;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class SizeCategorizer;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_AlphabeticalCategorizer;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class AlphabeticalCategorizer;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_MergedCategorizer;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class MergedCategorizer;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_ImageProperties;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class ImageProperties;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_PropertiesUI;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class PropertiesUI;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_UserNotification;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class UserNotification;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_UserEventTimerCallback;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class UserEventTimerCallback;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_UserEventTimer;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class UserEventTimer;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_NetCrawler;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class NetCrawler;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_CDBurn;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class CDBurn;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_TaskbarList;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class TaskbarList;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_ApplicationAssociationRegistrationUI;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class ApplicationAssociationRegistrationUI;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_WebWizardHost;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class WebWizardHost;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_PublishDropTarget;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class PublishDropTarget;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_PublishingWizard;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class PublishingWizard;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_InternetPrintOrdering;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class InternetPrintOrdering;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_FolderViewHost;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class FolderViewHost;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_NamespaceWalker;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class NamespaceWalker;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_ImageRecompress;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class ImageRecompress;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_TrayBandSiteService;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class TrayBandSiteService;")
cpp_quote("#endif")
cpp_quote("  EXTERN_C const CLSID CLSID_PassportWizard;")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class PassportWizard;")
cpp_quote("#endif")
cpp_quote("DEFINE_GUID(CLSID_AttachmentServices, 0x4125dd96,0xe03a,0x4103,0x8f,0x70,0xe0,0x59,0x7d,0x80,0x3b,0x9c);")
cpp_quote("#ifdef __cplusplus")
cpp_quote("  class AttachmentServices;")
cpp_quote("#endif")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * ApplicationAssociationRegistration coclass")
cpp_quote(" */")
cpp_quote("")
cpp_quote("DEFINE_GUID(CLSID_ApplicationAssociationRegistration, 0x591209c7, 0x767b, 0x42b2, 0x9f,0xba, 0x44,0xee,0x46,0x15,0xf2,0xc7);")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * ShellLink coclass")
cpp_quote(" */")
cpp_quote("")
cpp_quote("DEFINE_GUID(CLSID_ShellLink, 0x00021401, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * TaskbarList coclass")
cpp_quote(" */")
cpp_quote("")
cpp_quote("DEFINE_GUID(CLSID_TaskbarList, 0x56fdf344, 0xfd6d, 0x11d0, 0x95,0x8a, 0x00,0x60,0x97,0xc9,0xa0,0x90);")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * ApplicationAssociationRegistrationUI coclass")
cpp_quote(" */")
cpp_quote("")
cpp_quote("DEFINE_GUID(CLSID_ApplicationAssociationRegistrationUI, 0x1968106d, 0xf3b5, 0x44cf, 0x89,0x0e, 0x11,0x6f,0xcb,0x9e,0xce,0xf1);")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * DestinationList coclass")
cpp_quote(" */")
cpp_quote("")
cpp_quote("DEFINE_GUID(CLSID_DestinationList, 0x77f10cf0, 0x3db5, 0x4966, 0xb5,0x20, 0xb7,0xc5,0x4f,0xd3,0x5e,0xd6);")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * EnumerableObjectCollection coclass")
cpp_quote(" */")
cpp_quote("")
cpp_quote("DEFINE_GUID(CLSID_EnumerableObjectCollection, 0x2d3468c1, 0x36a7, 0x43b6, 0xac,0x24, 0xd3,0xf0,0x2f,0xd9,0x60,0x7a);")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * FileOpenDialog coclass")
cpp_quote(" */")
cpp_quote("")
cpp_quote("DEFINE_GUID(CLSID_FileOpenDialog, 0xdc1c5a9c, 0xe88a, 0x4dde, 0xa5,0xa1, 0x60,0xf8,0x2a,0x20,0xae,0xf7);")
cpp_quote("")
cpp_quote("/*****************************************************************************")
cpp_quote(" * FileSaveDialog coclass")
cpp_quote(" */")
cpp_quote("")
cpp_quote("DEFINE_GUID(CLSID_FileSaveDialog, 0xc0b4e2f3, 0xba21, 0x4773, 0x8d,0xba, 0x33,0x5e,0xc9,0x46,0xeb,0x8b);")

}

cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0263_v0_0_c_ifspec;")
cpp_quote("  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0263_v0_0_s_ifspec;")
cpp_quote("")
cpp_quote("  unsigned long __RPC_API BSTR_UserSize(unsigned long *,unsigned long,BSTR *);")
cpp_quote("  unsigned char *__RPC_API BSTR_UserMarshal(unsigned long *,unsigned char *,BSTR *);")
cpp_quote("  unsigned char *__RPC_API BSTR_UserUnmarshal(unsigned long *,unsigned char *,BSTR *);")
cpp_quote("  void __RPC_API BSTR_UserFree(unsigned long *,BSTR *);")
cpp_quote("  unsigned long __RPC_API HBITMAP_UserSize(unsigned long *,unsigned long,HBITMAP *);")
cpp_quote("  unsigned char *__RPC_API HBITMAP_UserMarshal(unsigned long *,unsigned char *,HBITMAP *);")
cpp_quote("  unsigned char *__RPC_API HBITMAP_UserUnmarshal(unsigned long *,unsigned char *,HBITMAP *);")
cpp_quote("  void __RPC_API HBITMAP_UserFree(unsigned long *,HBITMAP *);")
cpp_quote("  unsigned long __RPC_API HGLOBAL_UserSize(unsigned long *,unsigned long,HGLOBAL *);")
cpp_quote("  unsigned char *__RPC_API HGLOBAL_UserMarshal(unsigned long *,unsigned char *,HGLOBAL *);")
cpp_quote("  unsigned char *__RPC_API HGLOBAL_UserUnmarshal(unsigned long *,unsigned char *,HGLOBAL *);")
cpp_quote("  void __RPC_API HGLOBAL_UserFree(unsigned long *,HGLOBAL *);")
cpp_quote("  unsigned long __RPC_API HICON_UserSize(unsigned long *,unsigned long,HICON *);")
cpp_quote("  unsigned char *__RPC_API HICON_UserMarshal(unsigned long *,unsigned char *,HICON *);")
cpp_quote("  unsigned char *__RPC_API HICON_UserUnmarshal(unsigned long *,unsigned char *,HICON *);")
cpp_quote("  void __RPC_API HICON_UserFree(unsigned long *,HICON *);")
cpp_quote("  unsigned long __RPC_API HMENU_UserSize(unsigned long *,unsigned long,HMENU *);")
cpp_quote("  unsigned char *__RPC_API HMENU_UserMarshal(unsigned long *,unsigned char *,HMENU *);")
cpp_quote("  unsigned char *__RPC_API HMENU_UserUnmarshal(unsigned long *,unsigned char *,HMENU *);")
cpp_quote("  void __RPC_API HMENU_UserFree(unsigned long *,HMENU *);")
cpp_quote("  unsigned long __RPC_API HWND_UserSize(unsigned long *,unsigned long,HWND *);")
cpp_quote("  unsigned char *__RPC_API HWND_UserMarshal(unsigned long *,unsigned char *,HWND *);")
cpp_quote("  unsigned char *__RPC_API HWND_UserUnmarshal(unsigned long *,unsigned char *,HWND *);")
cpp_quote("  void __RPC_API HWND_UserFree(unsigned long *,HWND *);")
cpp_quote("  unsigned long __RPC_API LPCITEMIDLIST_UserSize(unsigned long *,unsigned long,LPCITEMIDLIST *);")
cpp_quote("  unsigned char *__RPC_API LPCITEMIDLIST_UserMarshal(unsigned long *,unsigned char *,LPCITEMIDLIST *);")
cpp_quote("  unsigned char *__RPC_API LPCITEMIDLIST_UserUnmarshal(unsigned long *,unsigned char *,LPCITEMIDLIST *);")
cpp_quote("  void __RPC_API LPCITEMIDLIST_UserFree(unsigned long *,LPCITEMIDLIST *);")
cpp_quote("  unsigned long __RPC_API LPITEMIDLIST_UserSize(unsigned long *,unsigned long,LPITEMIDLIST *);")
cpp_quote("  unsigned char *__RPC_API LPITEMIDLIST_UserMarshal(unsigned long *,unsigned char *,LPITEMIDLIST *);")
cpp_quote("  unsigned char *__RPC_API LPITEMIDLIST_UserUnmarshal(unsigned long *,unsigned char *,LPITEMIDLIST *);")
cpp_quote("  void __RPC_API LPITEMIDLIST_UserFree(unsigned long *,LPITEMIDLIST *);")
cpp_quote("  unsigned long __RPC_API LPSAFEARRAY_UserSize(unsigned long *,unsigned long,LPSAFEARRAY *);")
cpp_quote("  unsigned char *__RPC_API LPSAFEARRAY_UserMarshal(unsigned long *,unsigned char *,LPSAFEARRAY *);")
cpp_quote("  unsigned char *__RPC_API LPSAFEARRAY_UserUnmarshal(unsigned long *,unsigned char *,LPSAFEARRAY *);")
cpp_quote("  void __RPC_API LPSAFEARRAY_UserFree(unsigned long *,LPSAFEARRAY *);")
cpp_quote("  unsigned long __RPC_API VARIANT_UserSize(unsigned long *,unsigned long,VARIANT *);")
cpp_quote("  unsigned char *__RPC_API VARIANT_UserMarshal(unsigned long *,unsigned char *,VARIANT *);")
cpp_quote("  unsigned char *__RPC_API VARIANT_UserUnmarshal(unsigned long *,unsigned char *,VARIANT *);")
cpp_quote("  void __RPC_API VARIANT_UserFree(unsigned long *,VARIANT *);")
