[SHELL32]
[reactos.git] / reactos / include / psdk / shobjidl.idl
index c1dc2a3..b8689c7 100644 (file)
@@ -215,7 +215,7 @@ interface IShellFolder : IUnknown
         [in] LPBC pbcReserved,
         [in, string] LPOLESTR lpszDisplayName,
         [out] ULONG *pchEaten,
-        [out] LPITEMIDLIST *ppidl,
+        [out] PIDLIST_RELATIVE *ppidl,
         [in, out, unique] ULONG *pdwAttributes);
 
     HRESULT EnumObjects(
@@ -224,21 +224,21 @@ interface IShellFolder : IUnknown
         [out] IEnumIDList **ppenumIDList);
 
     HRESULT BindToObject(
-        [in] LPCITEMIDLIST pidl,
+        [in] PCUIDLIST_RELATIVE pidl,
         [in] LPBC pbcReserved,
         [in] REFIID riid,
         [out, iid_is(riid)] void **ppvOut);
 
     HRESULT BindToStorage(
-        [in] LPCITEMIDLIST pidl,
+        [in] PCUIDLIST_RELATIVE pidl,
         [in] LPBC pbcReserved,
         [in] REFIID riid,
         [out, iid_is(riid)] void **ppvObj);
 
     HRESULT CompareIDs(
         [in] LPARAM lParam,
-        [in] LPCITEMIDLIST pidl1,
-        [in] LPCITEMIDLIST pidl2);
+        [in] PCUIDLIST_RELATIVE pidl1,
+        [in] PCUIDLIST_RELATIVE pidl2);
 
     HRESULT CreateViewObject(
         [in] HWND hwndOwner,
@@ -247,28 +247,28 @@ interface IShellFolder : IUnknown
 
     HRESULT GetAttributesOf(
         [in] UINT cidl,
-        [in, size_is(cidl)] LPCITEMIDLIST *apidl,
+        [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl,
         [in, out] SFGAOF *rgfInOut);
 
     HRESULT GetUIObjectOf(
         [in] HWND hwndOwner,
         [in] UINT cidl,
-        [in, size_is(cidl)] LPCITEMIDLIST *apidl,
+        [in, size_is(cidl)] PCUITEMID_CHILD_ARRAY apidl,
         [in] REFIID riid,
         [in, out, unique] UINT *prgfInOut,
         [out, iid_is(riid)] void **ppvOut);
 
     HRESULT GetDisplayNameOf(
-        [in] LPCITEMIDLIST pidl,
+        [in] PCUITEMID_CHILD pidl,
         [in] SHGDNF uFlags,
         [out] STRRET *lpName);
 
     HRESULT SetNameOf(
         [in] HWND hwnd,
-        [in] LPCITEMIDLIST pidl,
+        [in] PCUITEMID_CHILD pidl,
         [in, string] LPCOLESTR lpszName,
         [in] SHGDNF uFlags,
-        [out] LPITEMIDLIST *ppidlOut);
+        [out] PITEMID_CHILD *ppidlOut);
 }
 
 
@@ -332,8 +332,8 @@ interface IShellFolder2 : IShellFolder
     HRESULT EnumSearches( [out] IEnumExtraSearch **ppenum );
     HRESULT GetDefaultColumn( [in] DWORD dwReserved, [out] ULONG *pSort, [out] ULONG *pDisplay );
     HRESULT GetDefaultColumnState( [in] UINT iColumn, [out] SHCOLSTATEF *pcsFlags );
-    HRESULT GetDetailsEx( [in] LPCITEMIDLIST pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv);
-    HRESULT GetDetailsOf( [in] LPCITEMIDLIST pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd);
+    HRESULT GetDetailsEx( [in] PCUITEMID_CHILD pidl, [in] const SHCOLUMNID *pscid, [out] VARIANT *pv);
+    HRESULT GetDetailsOf( [in] PCUITEMID_CHILD pidl, [in] UINT iColumn, [out] SHELLDETAILS *psd);
     HRESULT MapColumnToSCID( [in] UINT iColumn, [in] SHCOLUMNID *pscid );
 }
 
@@ -1833,6 +1833,8 @@ interface IShellChangeNotify : IUnknown
                 [in] LPCITEMIDLIST pidl2);
 }
 
+cpp_quote("#define STR_FILE_SYS_BIND_DATA  L\"File System Bind Data\"")
+
 /*****************************************************************************
  * IFileSystemBindData interface
  */
@@ -2363,600 +2365,6 @@ interface IShellMenu : IUnknown
         [in] DWORD dwFlags);
 }
 
-
-/*****************************************************************************
- * ITravelEntry interface
- */
-[
-    uuid(F46EDB3B-BC2F-11d0-9412-00AA00A3EBD3),
-    object,
-    pointer_default(unique),
-    local
-]
-interface ITravelEntry : IUnknown
-{
-    HRESULT Invoke(
-               [in] IUnknown *punk);
-
-    HRESULT Update(
-               [in] IUnknown *punk,
-               BOOL fIsLocalAnchor);
-
-    HRESULT GetPidl(
-               [in] LPITEMIDLIST *ppidl);
-};
-
-
-/*****************************************************************************
- * ITravelLog interface
- */
-[
-    uuid(66A9CB08-4802-11d2-A561-00A0C92DBFE8),
-    object,
-    pointer_default(unique),
-    local
-]
-interface ITravelLog : IUnknown
-{
-    enum tagTLENUMF
-    {
-        TLEF_RELATIVE_INCLUDE_CURRENT   = 0x00000001,
-        TLEF_RELATIVE_BACK              = 0x00000010,
-        TLEF_RELATIVE_FORE              = 0x00000020,
-        TLEF_INCLUDE_UNINVOKEABLE       = 0x00000040,
-        TLEF_ABSOLUTE                   = 0x00000031,
-    };
-    typedef DWORD TLENUMF;
-
-       HRESULT AddEntry(
-               [in] IUnknown *punk,
-               BOOL fIsLocalAnchor);
-
-       HRESULT UpdateEntry(
-               [in] IUnknown *punk,
-               BOOL fIsLocalAnchor);
-
-       HRESULT UpdateExternal(
-               [in] IUnknown *punk,
-               [in] IUnknown *punkHLBrowseContext);
-
-       HRESULT Travel(
-               [in] IUnknown *punk,
-               int iOffset);
-
-       HRESULT GetTravelEntry(
-               [in] IUnknown *punk,
-               int iOffset,
-               [out] ITravelEntry **ppte);
-
-       HRESULT FindTravelEntry(
-               [in] IUnknown *punk,
-               [in] LPCITEMIDLIST pidl,
-               [out] ITravelEntry **ppte);
-
-       HRESULT GetToolTipText(
-               [in] IUnknown *punk,
-               int iOffset,
-               int idsTemplate,
-               [out] LPWSTR pwzText,
-               DWORD cchText);
-
-       HRESULT InsertMenuEntries(
-               [in] IUnknown *punk,
-               [in, out] HMENU hmenu,
-               int nPos,
-               int idFirst,
-               int idLast,
-               DWORD dwFlags);
-
-       HRESULT Clone(
-               [out] ITravelLog **pptl);
-
-       DWORD CountEntries(
-               [in] IUnknown *punk);
-
-       HRESULT Revert();
-};
-
-/*****************************************************************************
- * IShellService interface
- */
-[
-    object,
-    uuid(5836FB00-8187-11CF-A12B-00AA004AE837),
-    pointer_default(unique),
-    local
-]
-interface IShellService : IUnknown
-{
-       HRESULT SetOwner(
-               [in] IUnknown *owner);
-};
-
-/*****************************************************************************
- * IShellBrowser interface
- */
-[
-    object,
-    uuid(02BA3B52-0547-11D1-B833-00C04FC9B31F),
-    pointer_default(unique),
-    local
-]
-interface IBrowserService : IUnknown
-{
-    typedef enum tagBNSTATE
-    {
-               BNS_NORMAL      = 0,
-               BNS_BEGIN_NAVIGATE      = 1,
-               BNS_NAVIGATE    = 2
-    } BNSTATE;
-
-    cpp_quote("#include <pshpack8.h>")
-    typedef struct basebrowserdataxp
-    {
-               HWND                            _hwnd;
-               ITravelLog                      *_ptl;
-               IUnknown                        *_phlf;
-               IUnknown                        *_pautoWB2;
-               IUnknown                        *_pautoEDS;
-               IShellService           *_pautoSS;
-               int                                     _eSecureLockIcon;
-               DWORD                           _fCreatingViewWindow;
-               UINT                            _uActivateState;
-               LPITEMIDLIST            _pidlViewState;
-               IOleCommandTarget       *_pctView;
-               LPITEMIDLIST            _pidlCur;
-               IShellView                      *_psv;
-               IShellFolder            *_psf;
-               HWND                            _hwndView;
-               LPWSTR                          _pszTitleCur;
-               LPITEMIDLIST            _pidlPending;
-               IShellView                      *_psvPending;
-               IShellFolder            *_psfPending;
-               HWND                            _hwndViewPending;
-               LPWSTR                          _pszTitlePending;
-               BOOL                            _fIsViewMSHTML;
-               BOOL                            _fPrivacyImpacted;
-               CLSID                           _clsidView;
-               CLSID                           _clsidViewPending;
-               HWND                            _hwndFrame;
-    } BASEBROWSERDATAXP;
-       typedef struct basebrowserdataxp *LPBASEBROWSERDATAXP;
-
-       typedef struct basebrowserdatalh
-       {
-               HWND                            _hwnd;
-               ITravelLog                      *_ptl;
-               IUnknown                        *_phlf;
-               IUnknown                        *_pautoWB2;
-               IUnknown                        *_pautoEDS;
-               IShellService           *_pautoSS;
-               int                                     _eSecureLockIcon;
-               DWORD                           _fCreatingViewWindow;
-               UINT                            _uActivateState;
-               LPITEMIDLIST            _pidlViewState;
-               IOleCommandTarget       *_pctView;
-               LPITEMIDLIST            _pidlCur;
-               IShellView                      *_psv;
-               IShellFolder            *_psf;
-               HWND                            _hwndView;
-               LPWSTR                          _pszTitleCur;
-               LPITEMIDLIST            _pidlPending;
-               IShellView                      *_psvPending;
-               IShellFolder            *_psfPending;
-               HWND                            _hwndViewPending;
-               LPWSTR                          _pszTitlePending;
-               BOOL                            _fIsViewMSHTML;
-               BOOL                            _fPrivacyImpacted;
-               CLSID                           _clsidView;
-               CLSID                           _clsidViewPending;
-               HWND                            _hwndFrame;
-               LONG                            _lPhishingFilterStatus;
-       } BASEBROWSERDATALH;
-    cpp_quote("#include <poppack.h>")
-       typedef struct basebrowserdatalh *LPBASEBROWSERDATALH;
-
-       typedef BASEBROWSERDATAXP BASEBROWSERDATA;
-
-       typedef const BASEBROWSERDATA *LPCBASEBROWSERDATA;
-
-       typedef BASEBROWSERDATA *LPBASEBROWSERDATA;
-
-cpp_quote("#if 0")
-typedef HANDLE HMONITOR;
-cpp_quote("#endif /* 0 */")
-
-       typedef struct SToolbarItem
-       {
-               IDockingWindow          *ptbar;
-               BORDERWIDTHS            rcBorderTool;
-               LPWSTR                          pwszItem;
-               BOOL                            fShow;
-               HMONITOR                        hMon;
-       } TOOLBARITEM;
-
-       typedef struct SToolbarItem *LPTOOLBARITEM;
-
-       HRESULT GetParentSite(
-               [out] IOleInPlaceSite **ppipsite);
-
-       HRESULT SetTitle(
-               [in] IShellView *psv,
-               [in] LPCWSTR pszName);
-
-       HRESULT GetTitle(
-               [in] IShellView *psv,
-               [out] LPWSTR pszName,
-               DWORD cchName);
-
-       HRESULT GetOleObject(
-               [out] IOleObject **ppobjv);
-
-       HRESULT GetTravelLog(
-               [out] ITravelLog **pptl);
-
-       HRESULT ShowControlWindow(
-               UINT id,
-               BOOL fShow);
-
-       HRESULT IsControlWindowShown(
-               UINT id,
-               [out] BOOL *pfShown);
-
-       HRESULT IEGetDisplayName(
-               [in] LPCITEMIDLIST pidl,
-               [out] LPWSTR pwszName,
-               UINT uFlags);
-
-       HRESULT IEParseDisplayName(
-               UINT uiCP,
-               [in] LPCWSTR pwszPath,
-               [out] LPCITEMIDLIST *ppidlOut);
-
-       HRESULT DisplayParseError(
-               HRESULT hres,
-               [in] LPCWSTR pwszPath);
-
-       HRESULT NavigateToPidl(
-               [in] LPCITEMIDLIST pidl,
-               DWORD grfHLNF);
-
-       HRESULT SetNavigateState(
-               BNSTATE bnstate);
-
-       HRESULT GetNavigateState(
-               [out] BNSTATE *pbnstate);
-
-       HRESULT NotifyRedirect(
-               [in] IShellView *psv,
-               [in] LPCITEMIDLIST pidl,
-               [out] BOOL *pfDidBrowse);
-
-       HRESULT UpdateWindowList();
-
-       HRESULT UpdateBackForwardState();
-
-       HRESULT SetFlags(
-               DWORD dwFlags,
-               DWORD dwFlagMask);
-
-       HRESULT GetFlags(
-               [out] DWORD *pdwFlags);
-
-       HRESULT CanNavigateNow();
-
-       HRESULT GetPidl(
-               [out] LPCITEMIDLIST *ppidl);
-
-       HRESULT SetReferrer(
-               [in] LPCITEMIDLIST pidl);
-
-       DWORD GetBrowserIndex();
-
-       HRESULT GetBrowserByIndex(
-               DWORD dwID,
-               [out] IUnknown **ppunk);
-
-       HRESULT GetHistoryObject(
-               [out] IOleObject **ppole,
-               [out] IStream **pstm,
-               [out] IBindCtx **ppbc);
-
-       HRESULT SetHistoryObject(
-               [in] IOleObject *pole,
-               BOOL fIsLocalAnchor);
-
-       HRESULT CacheOLEServer(
-               [in] IOleObject *pole);
-
-       HRESULT GetSetCodePage(
-               [in] VARIANT *pvarIn,
-               [out] VARIANT *pvarOut);
-
-       HRESULT OnHttpEquiv(
-               [in] IShellView *psv,
-               BOOL fDone,
-               [in] VARIANT *pvarargIn,
-               [out] VARIANT *pvarargOut);
-
-       HRESULT GetPalette(
-               [out] HPALETTE *hpal);
-
-       HRESULT RegisterWindow(
-               BOOL fForceRegister,
-               int swc);
-}
-
-
-/*****************************************************************************
- * IShellBrowser2 interface
- */
-[
-    uuid(68BD21CC-438B-11D2-A560-00A0C92DBFE8),
-    object,
-    pointer_default(unique),
-    local
-]
-interface IBrowserService2 : IBrowserService
-{
-       typedef struct tagFolderSetData
-       {
-               FOLDERSETTINGS          _fs;
-               SHELLVIEWID                     _vidRestore;
-               DWORD                           _dwViewPriority;
-       } FOLDERSETDATA;
-
-       typedef struct tagFolderSetData *LPFOLDERSETDATA;
-
-       LRESULT WndProcBS(
-               [in] HWND hwnd,
-               UINT uMsg,
-               WPARAM wParam,
-               LPARAM lParam);
-
-       HRESULT SetAsDefFolderSettings();
-
-       HRESULT GetViewRect(
-               [out] RECT *prc);
-
-       HRESULT OnSize(
-               WPARAM wParam);
-
-       HRESULT OnCreate(
-               [in] struct tagCREATESTRUCTW *pcs);
-
-       LRESULT OnCommand(
-               WPARAM wParam,
-               LPARAM lParam);
-
-       HRESULT OnDestroy();
-
-       LRESULT OnNotify(
-               [in] struct tagNMHDR *pnm);
-
-       HRESULT OnSetFocus();
-
-       HRESULT OnFrameWindowActivateBS(
-               BOOL fActive);
-
-       HRESULT ReleaseShellView();
-
-       HRESULT ActivatePendingView();
-
-       HRESULT CreateViewWindow(
-               [in] IShellView *psvNew,
-               [in] IShellView *psvOld,
-               [in] LPRECT prcView,
-               [out] HWND *phwnd);
-
-       HRESULT CreateBrowserPropSheetExt(
-               [in] REFIID riid,
-               [out] void **ppv);
-
-       HRESULT GetViewWindow(
-               [out] HWND *phwndView);
-
-       HRESULT GetBaseBrowserData(
-               [out] LPCBASEBROWSERDATA *pbbd);
-
-       LPBASEBROWSERDATA PutBaseBrowserData();
-
-       HRESULT InitializeTravelLog(
-               [in] ITravelLog *ptl,
-               DWORD dw);
-
-       HRESULT SetTopBrowser();
-
-       HRESULT Offline(
-               int iCmd);
-
-       HRESULT AllowViewResize(
-               BOOL f);
-
-       HRESULT SetActivateState(
-               UINT u);
-
-       HRESULT UpdateSecureLockIcon(
-               int eSecureLock);
-
-       HRESULT InitializeDownloadManager();
-
-       HRESULT InitializeTransitionSite();
-
-       HRESULT _Initialize(
-               [in] HWND hwnd,
-               [in] IUnknown *pauto);
-
-       HRESULT _CancelPendingNavigationAsync();
-
-       HRESULT _CancelPendingView();
-
-       HRESULT _MaySaveChanges();
-
-       HRESULT _PauseOrResumeView(
-               BOOL fPaused);
-
-       HRESULT _DisableModeless();
-
-       HRESULT _NavigateToPidl(
-               [in] LPCITEMIDLIST pidl,
-               DWORD grfHLNF,
-               DWORD dwFlags);
-
-       HRESULT _TryShell2Rename(
-               [in] IShellView *psv,
-               [in] LPCITEMIDLIST pidlNew);
-
-       HRESULT _SwitchActivationNow();
-
-       HRESULT _ExecChildren(
-               [in] IUnknown *punkBar,
-               BOOL fBroadcast,
-               [in] const GUID *pguidCmdGroup,
-               DWORD nCmdID,
-               DWORD nCmdexecopt,
-               [in] VARIANTARG *pvarargIn,
-               [in, out] VARIANTARG *pvarargOut);
-
-       HRESULT _SendChildren(
-               [in] HWND hwndBar,
-               BOOL fBroadcast,
-               UINT uMsg,
-               WPARAM wParam,
-               LPARAM lParam);
-
-       HRESULT GetFolderSetData(
-               [out] struct tagFolderSetData *pfsd);
-
-       HRESULT _OnFocusChange(
-               UINT itb);
-
-       HRESULT v_ShowHideChildWindows(
-               BOOL fChildOnly);
-
-       UINT _get_itbLastFocus();
-
-       HRESULT _put_itbLastFocus(
-               UINT itbLastFocus);
-
-       HRESULT _UIActivateView(
-               UINT uState);
-
-       HRESULT _GetViewBorderRect(
-               [out] RECT *prc);
-
-       HRESULT _UpdateViewRectSize();
-
-       HRESULT _ResizeNextBorder(
-               UINT itb);
-
-       HRESULT _ResizeView();
-
-       HRESULT _GetEffectiveClientArea(
-               [out] LPRECT lprectBorder,
-               [in] HMONITOR hmon);
-
-       IStream *v_GetViewStream(
-               [in] LPCITEMIDLIST pidl,
-               DWORD grfMode,
-               [in] LPCWSTR pwszName);
-
-       LRESULT ForwardViewMsg(
-               UINT uMsg,
-               WPARAM wParam,
-               LPARAM lParam);
-
-       HRESULT SetAcceleratorMenu(
-               [in] HACCEL hacc);
-
-       int _GetToolbarCount();
-
-       LPTOOLBARITEM _GetToolbarItem(
-               int itb);
-
-       HRESULT _SaveToolbars(
-               [in] IStream *pstm);
-
-       HRESULT _LoadToolbars(
-               [in] IStream *pstm);
-
-       HRESULT _CloseAndReleaseToolbars(
-               BOOL fClose);
-
-       HRESULT v_MayGetNextToolbarFocus(
-               [in] LPMSG lpMsg,
-               UINT itbNext,
-               int citb,
-               [out] LPTOOLBARITEM *pptbi,
-               [out] HWND *phwnd);
-
-       HRESULT _ResizeNextBorderHelper(
-               UINT itb,
-               BOOL bUseHmonitor);
-
-       UINT _FindTBar(
-               [in] IUnknown *punkSrc);
-
-       HRESULT _SetFocus(
-               [in] LPTOOLBARITEM ptbi,
-               [in] HWND hwnd,
-               [in] LPMSG lpMsg);
-
-       HRESULT v_MayTranslateAccelerator(
-               [in] MSG *pmsg);
-
-       HRESULT _GetBorderDWHelper(
-               [in] IUnknown *punkSrc,
-               [out] LPRECT lprectBorder,
-               BOOL bUseHmonitor);
-
-       HRESULT v_CheckZoneCrossing(
-               [in] LPCITEMIDLIST pidl);
-}
-
-
-/*****************************************************************************
- * IShellBrowser3 interface
- */
-[
-    uuid(27D7CE21-762D-48F3-86F3-40E2FD3749C4),
-    object,
-    pointer_default(unique),
-    local
-]
-interface IBrowserService3 : IBrowserService2
-{
-       HRESULT _PositionViewWindow(
-               [in] HWND hwnd,
-               [in] LPRECT prc);
-
-       HRESULT IEParseDisplayNameEx(
-               UINT uiCP,
-               [in] LPCWSTR pwszPath,
-               DWORD dwFlags,
-               [out] LPITEMIDLIST *ppidlOut);
-}
-
-
-/*****************************************************************************
- * IShellBrowser4 interface
- */
-[
-    uuid(639f1bff-e135-4096-abd8-e0f504d649a4),
-    object,
-    pointer_default(unique),
-    local
-]
-interface IBrowserService4 : IBrowserService3
-{
-       HRESULT ActivateView(
-               BOOL fPendingView);
-
-       HRESULT SaveViewState();
-
-       HRESULT _ResizeAllBorders();
-}
-
 cpp_quote("#if (_WIN32_IE >= _WIN32_IE_IE60)")
 
 /*****************************************************************************
@@ -4405,6 +3813,137 @@ interface ICustomDestinationList : IUnknown
     HRESULT AbortList();
 }
 
+[
+    uuid(ddefe873-6997-4e68-be26-39b633adbe12),
+    object,
+    pointer_default(unique)
+]
+interface IQueryCancelAutoPlay : IUnknown
+{
+    HRESULT AllowAutoPlay([in, string] LPCWSTR path,
+                          [in] DWORD content_type,
+                          [in, string] LPCWSTR label,
+                          [in] DWORD serial_number);
+}
+
+[
+    uuid(d594d0d8-8da7-457b-b3b4-ce5dbaac0b88),
+    pointer_default(unique)
+]
+interface ITransferAdviseSink : IUnknown
+{
+    [v1_enum] enum _TRANSFER_ADVISE_STATE
+    {
+        TS_NONE          = 0,
+        TS_PERFORMING    = 1,
+        TS_PREPARING     = 2,
+        TS_INDETERMINATE = 4
+    };
+    typedef DWORD TRANSFER_ADVISE_STATE;
+
+    HRESULT UpdateProgress([in] ULONGLONG size_current,
+                           [in] ULONGLONG size_total,
+                           [in] INT files_current,
+                           [in] INT files_total,
+                           [in] INT folders_current,
+                           [in] INT folders_total);
+    HRESULT UpdateTransferState([in] TRANSFER_ADVISE_STATE state);
+    HRESULT ConfirmOverwrite([in] IShellItem *source,
+                             [in] IShellItem *dest_parent,
+                             [in, string] LPCWSTR name);
+    HRESULT ConfirmEncryptLoss([in] IShellItem *source);
+    HRESULT FileFailure([in] IShellItem *item,
+                        [in, unique, string] LPCWSTR itemname,
+                        [in] HRESULT hr,
+                        [out, unique, size_is(crename)] LPWSTR rename,
+                        [in] ULONG crename);
+    HRESULT SubStreamFailure([in] IShellItem *item,
+                             [in, string] LPCWSTR stream,
+                             [in] HRESULT hr);
+    HRESULT PropertyFailure([in] IShellItem *item,
+                            [in, unique] const PROPERTYKEY *key,
+                            [in] HRESULT hr);
+}
+
+[v1_enum] enum _TRANSFER_SOURCE_FLAGS
+{
+    TSF_NORMAL                     = 0,
+    TSF_FAIL_EXIST                 = 0,
+    TSF_RENAME_EXIST               = 0x1,
+    TSF_OVERWRITE_EXIST            = 0x2,
+    TSF_ALLOW_DECRYPTION           = 0x4,
+    TSF_NO_SECURITY                = 0x8,
+    TSF_COPY_CREATION_TIME         = 0x10,
+    TSF_COPY_WRITE_TIME            = 0x20,
+    TSF_USE_FULL_ACCESS            = 0x40,
+    TSF_DELETE_RECYCLE_IF_POSSIBLE = 0x80,
+    TSF_COPY_HARD_LINK             = 0x100,
+    TSF_COPY_LOCALIZED_NAME        = 0x200,
+    TSF_MOVE_AS_COPY_DELETE        = 0x400,
+    TSF_SUSPEND_SHELLEVENTS        = 0x800
+};
+typedef DWORD TRANSFER_SOURCE_FLAGS;
+
+[
+    uuid(00adb003-bde9-45c6-8e29-d09f9353e108),
+    object,
+    pointer_default(unique)
+]
+interface ITransferSource : IUnknown
+{
+    HRESULT Advise([in] ITransferAdviseSink *sink, [out] DWORD *cookie);
+    HRESULT Unadvise([in] DWORD cookie);
+    HRESULT SetProperties([in] IPropertyChangeArray *array);
+    HRESULT OpenItem([in] IShellItem *item,
+                     [in] TRANSFER_SOURCE_FLAGS flags,
+                     [in] REFIID riid,
+                     [out, iid_is(riid)] void **ppv);
+    HRESULT MoveItem([in] IShellItem *item,
+                     [in] IShellItem *parent_dest,
+                     [in, string] LPCWSTR name_dest,
+                     [in] TRANSFER_SOURCE_FLAGS flags,
+                     [out] IShellItem **newitem);
+    HRESULT RecycleItem([in] IShellItem *source,
+                        [in] IShellItem *parent_dest,
+                        [in] TRANSFER_SOURCE_FLAGS flags,
+                        [out] IShellItem **new_dest);
+    HRESULT RemoveItem([in] IShellItem *source, [in] TRANSFER_SOURCE_FLAGS flags);
+    HRESULT RenameItem([in] IShellItem *source,
+                       [in, string] LPCWSTR newname,
+                       [in] TRANSFER_SOURCE_FLAGS flags,
+                       [out] IShellItem **new_dest);
+    HRESULT LinkItem([in] IShellItem *source,
+                     [in] IShellItem *parent_dest,
+                     [in, unique, string] LPCWSTR new_name,
+                     [in] TRANSFER_SOURCE_FLAGS flags,
+                     [out] IShellItem **new_dest);
+    HRESULT ApplyPropertiesToItem([in] IShellItem *source, [out] IShellItem **newitem);
+    HRESULT GetDefaultDestinationName([in] IShellItem *source,
+                                      [in] IShellItem *parent_dest,
+                                      [out, string] LPWSTR *dest_name);
+    HRESULT EnterFolder([in] IShellItem *child_folder);
+    HRESULT LeaveFolder([in] IShellItem *child_folder);
+}
+
+[
+    uuid(48addd32-3ca5-4124-abe3-b5a72531b207),
+    object,
+    pointer_default(unique)
+]
+interface ITransferDestination : IUnknown
+{
+    HRESULT Advise([in] ITransferAdviseSink *sink, [out] DWORD *cookie);
+    HRESULT Unadvise([in] DWORD cookie);
+    HRESULT CreateItem([in, string] LPCWSTR name,
+                       [in] DWORD attr,
+                       [in] ULONGLONG size,
+                       [in] TRANSFER_SOURCE_FLAGS flags,
+                       [in] REFIID riid,
+                       [out, iid_is(riid)] void **ppv,
+                       [in] REFIID resources,
+                       [out, iid_is(riid)] void **presources);
+}
+
 /*****************************************************************************
  * ShellObjects typelibrary
  */
@@ -4486,6 +4025,14 @@ library ShellObjects
         interface ICustomDestinationList;
     }
 
+    [
+        uuid(331f1768-05a9-4ddd-b86e-dae34ddc998a)
+    ]
+    coclass QueryCancelAutoPlay
+    {
+        interface IQueryCancelAutoPlay;
+    }
+
     [
         uuid(9ac9fbe1-e0a2-4ad6-b4ee-e212013ea917)
     ]